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