diff options
Diffstat (limited to 'cpp/src/Ice/StringConverter.cpp')
-rw-r--r-- | cpp/src/Ice/StringConverter.cpp | 46 |
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); +} |