diff --git a/etk/UString.cpp b/etk/UString.cpp index 9d20820..63baa36 100644 --- a/etk/UString.cpp +++ b/etk/UString.cpp @@ -46,6 +46,26 @@ etk::UString::UString(void) } +etk::UString::UString(const char* _data, unicode::charset_te _inputCharset) +{ + // TODO : Change this ... + etk::Vector transformData; + while (*_data != '\0') { + transformData.PushBack(*_data); + _data++; + } + m_data.Clear(); + if (unicode::EDN_CHARSET_UTF8==_inputCharset) { + unicode::convertUtf8ToUnicode(transformData, m_data); + } else { + unicode::convertIsoToUnicode(_inputCharset, transformData, m_data); + } + if( 0 == m_data.Size() + || m_data[m_data.Size()-1]!='\0') { + m_data.PushBack('\0'); + } +} + // single element adding etk::UString::UString(const bool _inputData, etk::UString::printMode_te _mode, bool _preset) @@ -587,6 +607,11 @@ void etk::UString::Add(int32_t _currentID, const uniChar_t _inputData) Add(_currentID, data); } +void etk::UString::Append(const etk::UniChar& _inputData) +{ + m_data.PushBack(_inputData); +} + void etk::UString::Remove(int32_t _currentID, int32_t _len) { diff --git a/etk/UString.h b/etk/UString.h index 5bac580..c560c88 100644 --- a/etk/UString.h +++ b/etk/UString.h @@ -13,6 +13,7 @@ #include #include #include +#include namespace etk { @@ -39,6 +40,7 @@ namespace etk // single element adding UString(const bool _inputData, printMode_te _mode=printModeString, bool _preset=false); UString(const uniChar_t _inputData); + UString(const char* _data, unicode::charset_te _inputCharset); UString(const float _inputData); UString(const double _inputData); UString(const int8_t& _inputData, printMode_te _mode=printModeDecimal, bool _preset=false) { Set((int64_t)_inputData, _mode, _preset); }; @@ -143,6 +145,7 @@ namespace etk void Add(int32_t _currentID, const uniChar_t _inputData); void Remove(int32_t _currentID, int32_t _len); void Clear(void); + void Append(const etk::UniChar& _inputData); etk::Vector GetVector(void); uniChar_t* pointer(void) { return &m_data[0]; }; diff --git a/etk/unicode.h b/etk/unicode.h index bb7dc61..593ee09 100644 --- a/etk/unicode.h +++ b/etk/unicode.h @@ -28,7 +28,7 @@ namespace unicode { EDN_CHARSET_ISO_8859_11, EDN_CHARSET_ISO_8859_13, EDN_CHARSET_ISO_8859_14, - EDN_CHARSET_ISO_8859_15, + EDN_CHARSET_ISO_8859_15 } charset_te; // transform ISO <==> Unicode