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
|