|
@@ -5,6 +5,7 @@
|
|
|
using CharString = Core::CharString;
|
|
|
using Char32String = Core::Char32String;
|
|
|
using Error = Core::Error;
|
|
|
+namespace ErrorCode = Core::ErrorCode;
|
|
|
|
|
|
template<typename T>
|
|
|
constexpr int stringLength(const T* c) {
|
|
@@ -23,35 +24,35 @@ static c32 read(const char*& s) {
|
|
|
static Error readUnicode(c32& u, const char*& s) {
|
|
|
u = read(s);
|
|
|
if((u & 0x80) == 0) {
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
if((u & 0xE0) == 0xC0) {
|
|
|
c32 u2 = read(s);
|
|
|
if(u2 == 0) {
|
|
|
- return Error::INVALID_CHAR;
|
|
|
+ return ErrorCode::INVALID_CHAR;
|
|
|
}
|
|
|
u = ((u & 0x1F) << 6) | (u2 & 0x3F);
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
} else if((u & 0xF0) == 0xE0) {
|
|
|
c32 u2 = read(s);
|
|
|
c32 u3 = read(s);
|
|
|
if(u2 == 0 || u3 == 0) {
|
|
|
- return Error::INVALID_CHAR;
|
|
|
+ return ErrorCode::INVALID_CHAR;
|
|
|
}
|
|
|
u = ((u & 0xF) << 12) | ((u2 & 0x3F) << 6) | (u3 & 0x3F);
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
} else if((u & 0xF8) == 0xF0) {
|
|
|
c32 u2 = read(s);
|
|
|
c32 u3 = read(s);
|
|
|
c32 u4 = read(s);
|
|
|
if(u2 == 0 || u3 == 0 || u4 == 0) {
|
|
|
- return Error::INVALID_CHAR;
|
|
|
+ return ErrorCode::INVALID_CHAR;
|
|
|
}
|
|
|
u = ((u & 0x07) << 18) | ((u2 & 0x3F) << 12) | ((u3 & 0x3F) << 6) |
|
|
|
(u4 & 0x3F);
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
- return Error::INVALID_CHAR;
|
|
|
+ return ErrorCode::INVALID_CHAR;
|
|
|
}
|
|
|
|
|
|
template<unsigned int L>
|
|
@@ -136,12 +137,12 @@ int CharString::getCapacity() const {
|
|
|
|
|
|
Error CharString::append(char c) {
|
|
|
if(length >= capacity - 1) {
|
|
|
- return Error::CAPACITY_REACHED;
|
|
|
+ return ErrorCode::CAPACITY_REACHED;
|
|
|
}
|
|
|
data[length++] = c;
|
|
|
data[length] = '\0';
|
|
|
addToHash(static_cast<c32>(c));
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
Error CharString::append(signed char c) {
|
|
@@ -167,7 +168,7 @@ Error CharString::append(const char* s) {
|
|
|
for(int i = stringLength(s); i > 0; i--) {
|
|
|
CORE_RETURN_ERROR(append(*(s++)));
|
|
|
}
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
Error CharString::append(const c32* s) {
|
|
@@ -175,7 +176,7 @@ Error CharString::append(const c32* s) {
|
|
|
for(int i = stringLength(s); i > 0; i--) {
|
|
|
CORE_RETURN_ERROR(append(*(s++)));
|
|
|
}
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
Error CharString::append(const signed char* s) {
|
|
@@ -190,16 +191,12 @@ Error CharString::append(bool b) {
|
|
|
return b ? append("true") : append("false");
|
|
|
}
|
|
|
|
|
|
-Error CharString::append(Error e) {
|
|
|
- return append(getErrorName(e));
|
|
|
-}
|
|
|
-
|
|
|
Error CharString::toString(CharString& s) const {
|
|
|
int l = length; // length changes if &s == this
|
|
|
for(int i = 0; i < l; i++) {
|
|
|
CORE_RETURN_ERROR(s.append(data[i]));
|
|
|
}
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
Error CharString::toString(Char32String& s) const {
|
|
@@ -220,13 +217,13 @@ Error CharString::print() const {
|
|
|
for(int i = 0; i < length; i++) {
|
|
|
CORE_RETURN_ERROR(Core::putChar(data[i]));
|
|
|
}
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
Error CharString::printLine() const {
|
|
|
CORE_RETURN_ERROR(print());
|
|
|
CORE_RETURN_ERROR(Core::putChar('\n'));
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
bool CharString::startsWidth(const CharString& other, int from) const {
|
|
@@ -274,7 +271,7 @@ Error CharString::substring(CharString& s, int from, int to) const {
|
|
|
for(int i = from; i <= to; i++) {
|
|
|
CORE_RETURN_ERROR(s.append(data[i]));
|
|
|
}
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
Error CharString::substring(CharString& s, int from) const {
|
|
@@ -383,12 +380,12 @@ Error Char32String::append(wchar_t c) {
|
|
|
|
|
|
Error Char32String::append(c32 c) {
|
|
|
if(length >= capacity - 1) {
|
|
|
- return Error::CAPACITY_REACHED;
|
|
|
+ return ErrorCode::CAPACITY_REACHED;
|
|
|
}
|
|
|
data[length++] = c;
|
|
|
data[length] = '\0';
|
|
|
addToHash(static_cast<c32>(c));
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
Error Char32String::append(const char* s) {
|
|
@@ -396,7 +393,7 @@ Error Char32String::append(const char* s) {
|
|
|
c32 u = 0;
|
|
|
CORE_RETURN_ERROR(readUnicode(u, s));
|
|
|
if(u == 0) {
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
CORE_RETURN_ERROR(append(u));
|
|
|
}
|
|
@@ -407,7 +404,7 @@ Error Char32String::append(const c32* s) {
|
|
|
for(int i = stringLength(s); i > 0; i--) {
|
|
|
CORE_RETURN_ERROR(append(*(s++)));
|
|
|
}
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
Error Char32String::append(const signed char* s) {
|
|
@@ -422,16 +419,12 @@ Error Char32String::append(bool b) {
|
|
|
return b ? append("true") : append("false");
|
|
|
}
|
|
|
|
|
|
-Error Char32String::append(Error e) {
|
|
|
- return append(getErrorName(e));
|
|
|
-}
|
|
|
-
|
|
|
Error Char32String::toString(CharString& s) const {
|
|
|
int l = length; // length changes if &s == this
|
|
|
for(int i = 0; i < l; i++) {
|
|
|
CORE_RETURN_ERROR(s.append(data[i]));
|
|
|
}
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
Error Char32String::toString(Char32String& s) const {
|
|
@@ -439,7 +432,7 @@ Error Char32String::toString(Char32String& s) const {
|
|
|
for(int i = 0; i < l; i++) {
|
|
|
CORE_RETURN_ERROR(s.append(data[i]));
|
|
|
}
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
void Char32String::clear() {
|
|
@@ -471,13 +464,13 @@ Error Char32String::print() const {
|
|
|
CORE_RETURN_ERROR(printChar(c, 0, 0x3F, 0x80));
|
|
|
}
|
|
|
}
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
Error Char32String::printLine() const {
|
|
|
CORE_RETURN_ERROR(print());
|
|
|
CORE_RETURN_ERROR(Core::putChar('\n'));
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
bool Char32String::startsWidth(const Char32String& other, int from) const {
|
|
@@ -525,7 +518,7 @@ Error Char32String::substring(Char32String& s, int from, int to) const {
|
|
|
for(int i = from; i <= to; i++) {
|
|
|
CORE_RETURN_ERROR(s.append(data[i]));
|
|
|
}
|
|
|
- return Error::NONE;
|
|
|
+ return ErrorCode::NONE;
|
|
|
}
|
|
|
|
|
|
Error Char32String::substring(Char32String& s, int from) const {
|