| 
					
				 | 
			
			
				@@ -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 { 
			 |