From: Christian P. <cp...@us...> - 2005-07-01 13:55:26
|
Update of /cvsroot/pclasses/pclasses2/src/Unicode In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18224/src/Unicode Modified Files: String.cpp Log Message: - Added Traits::LexT<StringList<std::string> >, Traits::LexT<StringList<Unicode::String> >, Traits::LexT<Unicode::String> Index: String.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/Unicode/String.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- String.cpp 29 Jun 2005 00:07:44 -0000 1.12 +++ String.cpp 1 Jul 2005 13:55:10 -0000 1.13 @@ -169,6 +169,12 @@ return 0; } +void String::reserve(size_t sz) +{ + if(capacity() < sz) + resize(sz); +} + void String::resize(size_t sz) { if(!sz) @@ -848,6 +854,12 @@ return ret; } +String String::fromUtf8(const std::string& str) + throw(OutOfMemory, UnicodeError) +{ + return fromUtf8(str.c_str(), str.size()); +} + std::string String::toCodepage(const char* codepage) const throw(OutOfMemory, UnicodeError) { @@ -865,6 +877,12 @@ return cvt->toUnicode(str, count); } +String String::fromCodepage(const std::string& str, const char* codepage) + throw(OutOfMemory, UnicodeError) +{ + return fromCodepage(str.c_str(), str.size(), codepage); +} + const uchar16_t* String::data() const throw() { if(!_data.null()) @@ -889,8 +907,47 @@ return os; } +} // !namespace Unicode +namespace Traits { + +std::string LexT<Unicode::String>::toString(const Unicode::String& val) +{ + return val.utf8(); +} + +Unicode::String LexT<Unicode::String>::fromString(const std::string& str) + throw(ConversionError) +{ + Unicode::String ret; + try + { + ret = Unicode::String::fromUtf8(str); + } + catch(...) + { + throw ConversionError("Could not convert to Unicode string", P_SOURCEINFO); + } + + return ret; +} + + +std::string LexT<StringList<Unicode::String> >::toString( + const StringList<Unicode::String>& val) +{ + return val.join(",").utf8(); +} + +StringList<Unicode::String> + LexT<StringList<Unicode::String> >::fromString(const std::string& str) + throw(ConversionError) +{ + return StringList<Unicode::String>(Unicode::String::fromUtf8(str), ","); +} + + +} // !namespace Traits -} // !namespace Unicode } // !namespace P |