summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Initialize.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2009-07-08 23:12:24 +0200
committerJose <jose@zeroc.com>2009-07-08 23:12:24 +0200
commitadc4906087225fbe685cdfc42b3e8e65eba853b3 (patch)
tree2c91dd087395d8d8c36ec9290df62aa5e91488bc /cpp/src/Ice/Initialize.cpp
parentBug 3632 - removed slice2docbook. (diff)
downloadice-adc4906087225fbe685cdfc42b3e8e65eba853b3.tar.bz2
ice-adc4906087225fbe685cdfc42b3e8e65eba853b3.tar.xz
ice-adc4906087225fbe685cdfc42b3e8e65eba853b3.zip
3965 - Add new version if Ice::initialize
Diffstat (limited to 'cpp/src/Ice/Initialize.cpp')
-rw-r--r--cpp/src/Ice/Initialize.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/cpp/src/Ice/Initialize.cpp b/cpp/src/Ice/Initialize.cpp
index 3c0520480e0..69444ff17cb 100644
--- a/cpp/src/Ice/Initialize.cpp
+++ b/cpp/src/Ice/Initialize.cpp
@@ -9,6 +9,7 @@
#include <IceUtil/DisableWarnings.h>
#include <IceUtil/ArgVector.h>
+#include <IceUtil/StringUtil.h>
#include <Ice/GC.h>
#include <Ice/CommunicatorI.h>
#include <Ice/PropertiesI.h>
@@ -149,18 +150,32 @@ inline void checkIceVersion(Int version)
#endif
}
+CommunicatorPtr
+Ice::initialize(int& argc, char**& argv, const InitializationData& initializationData, Int version)
+{
+ int argcCopy = argc;
+ CommunicatorPtr result = initialize(argcCopy, const_cast<const char**>(argv), argc, argv, initializationData, version);
+ return result;
+}
CommunicatorPtr
-Ice::initialize(int& argc, char* argv[], const InitializationData& initializationData, Int version)
+Ice::initialize(int argc, const char* argv[], int& newArgc, char**& newArgv, const InitializationData& initializationData, Int version)
{
+
checkIceVersion(version);
InitializationData initData = initializationData;
- initData.properties = createProperties(argc, argv, initData.properties, initData.stringConverter);
+ int argcCopy = argc;
+ char** argvCopy = IceUtilInternal::dupArgv(argv);
+ initData.properties = createProperties(argcCopy, argvCopy, initData.properties, initData.stringConverter);
CommunicatorI* communicatorI = new CommunicatorI(initData);
CommunicatorPtr result = communicatorI; // For exception safety.
- communicatorI->finishSetup(argc, argv);
+ communicatorI->finishSetup(argcCopy, argvCopy);
+
+ newArgc = argcCopy;
+ newArgv = argvCopy;
+
return result;
}