14 const static std::string BAD_NAME =
"?";
18 qualifiedName(BAD_NAME),
19 namespaceStr(BAD_NAME),
22 nsSepIndex(
std::string::npos),
23 versionSepIndex(
std::string::npos),
27 majorVersionStr(BAD_NAME),
28 majorVersionParsed(
false),
33 minorVersionStr(BAD_NAME),
34 minorVersionParsed(
false),
38 nsSepIndex =
id.find(
'/');
39 nsQualified = nsSepIndex != std::string::npos;
40 size_t startIndex = nsQualified ? nsSepIndex+1 : 0;
41 versionSepIndex =
id.find(
':', startIndex);
42 hasVersion = versionSepIndex != std::string::npos;
49 if (qualifiedName == BAD_NAME)
51 qualifiedName = hasVersion ?
52 fullName.substr(0, versionSepIndex) : fullName;
60 if (namespaceStr == BAD_NAME)
62 namespaceStr = nsQualified ?
63 fullName.substr(0, nsSepIndex) :
"";
74 size_t startIndex = nsQualified ? nsSepIndex+1 : 0;
75 name = fullName.substr(startIndex, versionSepIndex);
79 name = fullName.substr(nsSepIndex+1);
92 if (version == BAD_NAME)
94 version = (hasVersion) ? fullName.substr(versionSepIndex+1) :
"";
102 if (majorVersionStr == BAD_NAME)
106 endMajorIndex = fullName.find(
'.', versionSepIndex+1);
107 majorVersionStr = (endMajorIndex != std::string::npos)
108 ? fullName.substr(versionSepIndex+1, endMajorIndex-(versionSepIndex+1)) :
109 fullName.substr(versionSepIndex+1);
112 majorVersionStr =
"";
114 return majorVersionStr;
120 if (hasVersion && !majorVersionParsed)
126 majorVersion =
static_cast<int>(mv);
129 majorVersionParsed =
true;
147 if (minorVersionStr == BAD_NAME)
149 if (hasVersion && endMajorIndex != std::string::npos)
151 endMinorIndex = fullName.find(
'.', endMajorIndex+1);
152 minorVersionStr = (endMinorIndex != std::string::npos)
153 ? fullName.substr(endMajorIndex+1, endMinorIndex-(endMajorIndex+1)) :
154 fullName.substr(endMajorIndex+1);
157 minorVersionStr =
"";
159 return minorVersionStr;
165 if (hasVersion && !minorVersionParsed)
171 minorVersion =
static_cast<int>(mv);
174 minorVersionParsed =
true;
std::string getMinorVersionString()
TODO only here because of the Lockable.
void parseToPOD(const char *in, boolean *out)
std::string getMajorVersionString()
NTID(const std::string &id)
std::string getFullName()
std::string getQualifiedName()
std::string getNamespace()