1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
#include "stdafx.h"
#include "CppName.h"
CppName::CppName() {}
CppName::CppName(const String &name) : String(name) {}
CppName CppName::operator +(const String &part) const {
if (empty())
return CppName(part);
else
return CppName(String::operator +(L"::" + part));
}
static size_t lastDots(const String &str) {
size_t z = str.rfind(':');
if (z == 0 || z == String::npos)
return String::npos;
if (str[z-1] == ':')
return z-1;
return String::npos;
}
String CppName::last() const {
size_t z = lastDots(*this);
if (z == String::npos)
return *this;
return substr(z + 2);
}
CppName CppName::parent() const {
size_t z = lastDots(*this);
if (z == String::npos)
return CppName(L"");
else
return CppName(substr(0, z));
}
|