00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _Split_H
00023 #define _Split_H
00024
00025 #include <Sockets/Parse.h>
00026
00027
00028 class Split
00029 {
00030 public:
00031 Split(const std::string& name) {
00032 if (!name.empty() && name[0] == ':')
00033 {
00034 Type = name.substr(1);
00035 }
00036 else
00037 if (name.find(":") != std::string::npos)
00038 {
00039 Parse pa(name, ":");
00040
00041 NS = pa.getword();
00042 Type = pa.getword();
00043 }
00044 else
00045 {
00046 Type = name;
00047 }
00048 for (size_t i = 0; i < Type.size(); i++)
00049 switch (Type[i])
00050 {
00051 case 'å':
00052 CName += "aa";
00053 break;
00054 case 'ä':
00055 CName += "ae";
00056 break;
00057 case 'ö':
00058 CName += "oe";
00059 break;
00060 case 'Å':
00061 CName += "Aa";
00062 break;
00063 case 'Ä':
00064 CName += "Ae";
00065 break;
00066 case 'Ö':
00067 CName += "Oe";
00068 break;
00069 default:
00070 if (!isalnum(Type[i]))
00071 CName += "_";
00072 else
00073 CName += Type[i];
00074 }
00075 CName1up = CName;
00076 if (!CName1up.empty() && CName1up[0] >= 'a' && CName1up[0] <= 'z')
00077 CName1up[0] = (char)CName1up[0] - 32;
00078 }
00079
00080 std::string NS;
00081 std::string Type;
00082
00083 std::string CName;
00084 std::string CName1up;
00085
00086 protected:
00087 Split(const Split& ) {}
00088
00089 private:
00090 Split& operator=(const Split& ) { return *this; }
00091
00092 };
00093
00094
00095
00096
00097 #endif // _Split_H