summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/StringConverter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/StringConverter.cpp')
-rw-r--r--cpp/src/Ice/StringConverter.cpp46
1 files changed, 45 insertions, 1 deletions
diff --git a/cpp/src/Ice/StringConverter.cpp b/cpp/src/Ice/StringConverter.cpp
index 3485a19c7e3..cf30a6ff9ce 100644
--- a/cpp/src/Ice/StringConverter.cpp
+++ b/cpp/src/Ice/StringConverter.cpp
@@ -252,7 +252,7 @@ createIceStringConverter(const CommunicatorPtr& communicator, const string& name
{
if(args[i].find("windows=") == 0)
{
- cp = atoi(args[i].substr(strlen("windows=")).c_str());
+ cp = atoi(args[i].substr(strlen("windows=")).c_str());
}
else if(args[i].find("iconv=") != 0)
{
@@ -342,3 +342,47 @@ createIceStringConverter(const CommunicatorPtr& communicator, const string& name
}
}
+string
+Ice::nativeToUTF8(const Ice::StringConverterPtr& converter, const string& str)
+{
+ if(!converter)
+ {
+ return str;
+ }
+ if(str.empty())
+ {
+ return str;
+ }
+ IceInternal::UTF8BufferI buffer;
+ Ice::Byte* last = converter->toUTF8(str.data(), str.data() + str.size(), buffer);
+ return string(reinterpret_cast<const char*>(buffer.getBuffer()), last - buffer.getBuffer());
+}
+
+string
+Ice::nativeToUTF8(const Ice::CommunicatorPtr& ic, const string& str)
+{
+ return nativeToUTF8(IceInternal::getInstance(ic)->initializationData().stringConverter, str);
+}
+
+string
+Ice::UTF8ToNative(const Ice::StringConverterPtr& converter, const string& str)
+{
+ if(!converter)
+ {
+ return str;
+ }
+ if(str.empty())
+ {
+ return str;
+ }
+ string tmp;
+ converter->fromUTF8(reinterpret_cast<const Ice::Byte*>(str.data()),
+ reinterpret_cast<const Ice::Byte*>(str.data() + str.size()), tmp);
+ return tmp;
+}
+
+string
+Ice::UTF8ToNative(const Ice::CommunicatorPtr& ic, const std::string& str)
+{
+ return UTF8ToNative(IceInternal::getInstance(ic)->initializationData().stringConverter, str);
+}