DBG: updated UString class (removed some usless stuff)
This commit is contained in:
		
							parent
							
								
									c79bc82292
								
							
						
					
					
						commit
						003150a4e5
					
				|  | @ -22,83 +22,6 @@ | |||
| #include <errno.h> | ||||
| #include "Exception.h" | ||||
| 
 | ||||
| void UTF8::String::ConvertFromDouble(const long double d, const UTF8::String & ThousandSeparator, const UTF8::String & FractionSeparator, const int IntegerPartLength, const int FractionPartLength) | ||||
| { | ||||
|     std::ostringstream os; | ||||
|     os.precision(15); | ||||
|     os << d; | ||||
| 
 | ||||
|     UTF8::String Number(os.str()); | ||||
|     UTF8::String Integer, Fraction; | ||||
| 
 | ||||
|     // Extracting integer and fraction
 | ||||
|     std::vector <UTF8::String> Extracted = Number.Explode("."); | ||||
| 
 | ||||
|     unsigned int IntegerLength; | ||||
|     if(IntegerPartLength) | ||||
|     { | ||||
|         IntegerLength = IntegerPartLength; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         IntegerLength = Extracted[0].Length(); | ||||
|     } | ||||
| 
 | ||||
|     unsigned int FractionLength; | ||||
|     if(FractionPartLength) | ||||
|     { | ||||
|         FractionLength = FractionPartLength; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         if(Extracted.size() > 1) | ||||
|         { | ||||
|             FractionLength = Extracted[1].Length(); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             FractionLength = 0; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     // Parsing integer
 | ||||
|     for(unsigned int i = 0; i < IntegerLength; i++) | ||||
|     { | ||||
|         if((i > 0) && (i % 3 == 0)) | ||||
|         { | ||||
|             Integer = ThousandSeparator + Integer; | ||||
|         } | ||||
| 
 | ||||
|         if(Extracted[0].Length() < i + 1) | ||||
|         { | ||||
|             Integer = "0" + Integer; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             Integer = Extracted[0][Extracted[0].Length() - 1 - i] + Integer; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     // Parsing fraction
 | ||||
|     if(FractionLength) | ||||
|     { | ||||
|         Fraction = FractionSeparator; | ||||
|         for(unsigned int i = 0; i < FractionLength; i++) | ||||
|         { | ||||
|             if((Extracted.size() > 1) && (Extracted[1].Length() > i)) | ||||
|             { | ||||
|                 Fraction += Extracted[1][i]; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 Fraction += "0"; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     * this = Integer + Fraction; | ||||
| } | ||||
| 
 | ||||
| bool UTF8::String::HasThisString(const UTF8::String & Str) const | ||||
| { | ||||
|     return GetSubstringPosition(Str) != -1; | ||||
|  | @ -227,7 +150,7 @@ bool operator!=(const std::string & str, const UTF8::String & StringObj) | |||
| 
 | ||||
| UTF8::String UTF8::String::Quote() const | ||||
| { | ||||
|     return "«" + (*this) + "»"; | ||||
|     return "\"" + (*this) + "\""; | ||||
| } | ||||
| 
 | ||||
| UTF8::String UTF8::String::Trim() const | ||||
|  | @ -357,14 +280,6 @@ UTF8::String operator+(const std::string & str, const UTF8::String & StringObj) | |||
|     return s; | ||||
| } | ||||
| 
 | ||||
| UTF8::String operator+(const long l, const UTF8::String & StringObj) | ||||
| { | ||||
|     UTF8::String s(l); | ||||
|     s += StringObj; | ||||
| 
 | ||||
|     return s; | ||||
| } | ||||
| 
 | ||||
| UTF8::String UTF8::String::operator+(const UTF8::String & s) const | ||||
| { | ||||
|     UTF8::String res(*this); | ||||
|  | @ -497,12 +412,6 @@ void UTF8::String::ConvertFromInt64(int64_t n) | |||
|     CalculateStringLength(); | ||||
| } | ||||
| 
 | ||||
| UTF8::String::String(const long double d, const UTF8::String & ThousandSeparator, const UTF8::String & DecimalSeparator, const int IntegerPartCount, const int FractionPartCount) | ||||
| { | ||||
|     InitString(); | ||||
|     ConvertFromDouble(d, ThousandSeparator, DecimalSeparator, IntegerPartCount, FractionPartCount); | ||||
| } | ||||
| 
 | ||||
| void UTF8::String::InitString() | ||||
| { | ||||
|     Data = NULL; | ||||
|  | @ -527,7 +436,7 @@ int UTF8::String::GetSymbolIndexInDataArray(unsigned int Position) const | |||
| { | ||||
|     if(Position >= StringLength) | ||||
|     { | ||||
|         throw Exception((UTF8::String("[GetSymbolIndexInDataArray] trying to get position beyond the end of string. StringLength: ") + StringLength + " Position: " + Position + " String: [" + Data + "]").ToString()); | ||||
|         throw Exception(UTF8::String("[GetSymbolIndexInDataArray] trying to get position beyond the end of string.")); | ||||
|     } | ||||
| 
 | ||||
|     unsigned int n = 0; | ||||
|  | @ -851,14 +760,6 @@ UTF8::String & UTF8::String::operator=(const uint32_t* str) | |||
|     return *this; | ||||
| } | ||||
| 
 | ||||
| UTF8::String & UTF8::String::operator=(long double d) | ||||
| { | ||||
|     Empty(); | ||||
|     ConvertFromDouble(d); | ||||
| 
 | ||||
|     return *this; | ||||
| } | ||||
| 
 | ||||
| UTF8::String::operator std::string() const | ||||
| { | ||||
|     return this->ToString(); | ||||
|  | @ -885,86 +786,6 @@ std::string UTF8::String::ToString() const | |||
|     } | ||||
| } | ||||
| 
 | ||||
| double UTF8::String::ToDouble() const | ||||
| { | ||||
|     int64_t mul = 1; | ||||
|     char c; | ||||
|     int int_part = 0; | ||||
|     double prec_part = 0; | ||||
| 
 | ||||
|     for(int i = DataArrayLength - 1; i >= 0; i--) | ||||
|     { | ||||
|         c = Data[i]; | ||||
|         if((c >= '0') && (c <= '9')) | ||||
|         { | ||||
|             int_part += (c - '0') * (int)mul; | ||||
|             mul *= 10; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             if(c == '.') | ||||
|             { | ||||
|                 prec_part = (double) int_part / (double) mul; | ||||
|                 int_part = 0; | ||||
|                 mul = 1; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 if((c == '-') && (i == 0)) | ||||
|                 { | ||||
|                     int_part = -int_part; | ||||
|                     prec_part = -prec_part; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     UTF8::String err = "Cannot convert \"" + * this + "\" to double."; | ||||
|                     throw UTF8::Exception(err.ToConstCharPtr(), UTF8::Exception::StringToDoubleConversionError); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     return int_part + prec_part; | ||||
| } | ||||
| 
 | ||||
| int64_t UTF8::String::ToLong() const | ||||
| { | ||||
|     int64_t mul = 1; | ||||
|     char c; | ||||
|     int64_t number = 0; | ||||
| 
 | ||||
|     for(int i = DataArrayLength - 1; i >= 0; i--) | ||||
|     { | ||||
|         c = Data[i]; | ||||
|         if((c >= '0') && (c <= '9')) | ||||
|         { | ||||
|             number += (c - '0') * mul; | ||||
|             mul *= 10; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             if(c == '.') | ||||
|             { | ||||
|                 number = 0; | ||||
|                 mul = 1; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 if((c == '-') && (i == 0)) | ||||
|                 { | ||||
|                     number = -number; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     UTF8::String err = "Cannot convert \"" + * this + "\" to number."; | ||||
|                     throw UTF8::Exception(err.ToConstCharPtr(), UTF8::Exception::StringToIntConversionError); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     return number; | ||||
| } | ||||
| 
 | ||||
| UTF8::String UTF8::String::operator+(const char* s) const | ||||
| { | ||||
|     UTF8::String res(*this); | ||||
|  |  | |||
|  | @ -64,10 +64,8 @@ public: | |||
|     String(const String & orig); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Converting from long constructor. Automatically generates string from number. | ||||
|      * Deconstructor. | ||||
|      */ | ||||
|     String(const long double d, const UTF8::String & ThousandSeparator = "", const UTF8::String & FractionSeparator = ".", const int IntegerPartLength = 0, const int FractionPartLength = 0); | ||||
| 
 | ||||
|     ~String(); | ||||
| 
 | ||||
|     /**
 | ||||
|  | @ -80,16 +78,6 @@ public: | |||
|      */ | ||||
|     static String FromFile(const UTF8::String & Path); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Converts UTF8::String to long | ||||
|      */ | ||||
|     int64_t ToLong() const; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Converts UTF8::String to double | ||||
|      */ | ||||
|     double ToDouble() const; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Converts UTF8::String to const char * | ||||
|      */ | ||||
|  | @ -141,11 +129,6 @@ public: | |||
|      */ | ||||
|     String & operator=(const uint32_t*); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Assign operator. Provides String1=(long double) expression. | ||||
|      */ | ||||
|     String & operator=(long double); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Provides std::string test=String expression. | ||||
|      */ | ||||
|  | @ -282,7 +265,6 @@ private: | |||
|     int GetSymbolIndexInDataArray(unsigned int Position) const; | ||||
| 
 | ||||
|     void ConvertFromUTF32(const uint32_t*); | ||||
|     void ConvertFromDouble(const long double d, const UTF8::String & ThousandSeparator = "", const UTF8::String & DecimalSeparator = ".", const int IntegerPartCount = 0, const int FractionPartCount = 0); | ||||
| 
 | ||||
| }; | ||||
| } | ||||
|  | @ -297,11 +279,6 @@ UTF8::String operator+(const char*, const UTF8::String &); | |||
|  */ | ||||
| UTF8::String operator+(const std::string &, const UTF8::String &); | ||||
| 
 | ||||
| /**
 | ||||
|  * Not in class overloaded operator +. Provides 123+String1 expression. | ||||
|  */ | ||||
| UTF8::String operator+(long, const UTF8::String &); | ||||
| 
 | ||||
| /**
 | ||||
|  * Not in class overloaded operator ==. Provides "Test"==String1 expression. | ||||
|  */ | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| #include <windows.h> | ||||
| 
 | ||||
| //Functions taken from: http://www.nubaria.com/en/blog/?p=289
 | ||||
| std::string ConvertUtf16ToUtf8(const std::wstring & wstr) | ||||
| UString ConvertUtf16ToUtf8(const std::wstring & wstr) | ||||
| { | ||||
|     std::string convertedString; | ||||
|     int requiredSize = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, 0, 0, 0, 0); | ||||
|  | @ -15,7 +15,7 @@ std::string ConvertUtf16ToUtf8(const std::wstring & wstr) | |||
|     return convertedString; | ||||
| } | ||||
| 
 | ||||
| std::wstring ConvertUtf8ToUtf16(const std::string & str) | ||||
| std::wstring ConvertUtf8ToUtf16(const UString & str) | ||||
| { | ||||
|     std::wstring convertedString; | ||||
|     int requiredSize = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, 0, 0); | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| 
 | ||||
| typedef UTF8::String UString; | ||||
| 
 | ||||
| std::string ConvertUtf16ToUtf8(const std::wstring & wstr); | ||||
| std::wstring ConvertUtf8ToUtf16(const std::string & str); | ||||
| UString ConvertUtf16ToUtf8(const std::wstring & wstr); | ||||
| std::wstring ConvertUtf8ToUtf16(const UString & str); | ||||
| 
 | ||||
| #endif // _USTRING_H
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue