summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Initialize.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Initialize.cpp')
-rw-r--r--cpp/src/Ice/Initialize.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/cpp/src/Ice/Initialize.cpp b/cpp/src/Ice/Initialize.cpp
index e950b960bb1..da9027b5061 100644
--- a/cpp/src/Ice/Initialize.cpp
+++ b/cpp/src/Ice/Initialize.cpp
@@ -50,6 +50,35 @@ Ice::argsToStringSeq(int argc, char* argv[])
return result;
}
+#ifdef _WIN32
+
+StringSeq
+Ice::argsToStringSeq(int argc, wchar_t* argv[])
+{
+ return argsToStringSeq(argc, argv, 0);
+}
+
+StringSeq
+Ice::argsToStringSeq(int argc, wchar_t* argv[], const StringConverterPtr& converter)
+{
+ StringSeq args;
+ for(int i=0; argv[i] != 0; i++)
+ {
+ string value = IceUtil::wstringToString(argv[i]);
+ if(converter)
+ {
+ string tmp;
+ converter->fromUTF8(reinterpret_cast<const Byte*>(value.data()),
+ reinterpret_cast<const Byte*>(value.data() + value.size()), tmp);
+ value.swap(tmp);
+ }
+ args.push_back(value);
+ }
+ return args;
+}
+
+#endif
+
void
Ice::stringSeqToArgs(const StringSeq& args, int& argc, char* argv[])
{