summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2017-04-02 21:35:46 -0400
committerBernard Normier <bernard@zeroc.com>2017-04-02 21:35:46 -0400
commit7edb88a3ca51ead85a8d26b86c9bfd111a88e36b (patch)
tree11407a5b2de33133e346075d7d441598ca95673b /cpp
parentVC90 build failure IceProxy::Ice::noExplicitContext unresolved symbol (diff)
downloadice-7edb88a3ca51ead85a8d26b86c9bfd111a88e36b.tar.bz2
ice-7edb88a3ca51ead85a8d26b86c9bfd111a88e36b.tar.xz
ice-7edb88a3ca51ead85a8d26b86c9bfd111a88e36b.zip
Small fixes to synchronize with the Ice manual
Diffstat (limited to 'cpp')
-rw-r--r--cpp/include/Ice/Application.h21
-rw-r--r--cpp/include/Ice/Initialize.h20
-rw-r--r--cpp/src/Ice/Initialize.cpp23
-rw-r--r--cpp/test/Ice/admin/AllTests.cpp14
4 files changed, 56 insertions, 22 deletions
diff --git a/cpp/include/Ice/Application.h b/cpp/include/Ice/Application.h
index 0df20b71a25..57aeea57821 100644
--- a/cpp/include/Ice/Application.h
+++ b/cpp/include/Ice/Application.h
@@ -24,11 +24,17 @@ enum SignalPolicy
#endif
{ HandleSignals, NoSignalHandling };
-class ICE_API Application : private IceUtil::noncopyable
+class ICE_API Application
{
public:
Application(SignalPolicy = ICE_ENUM(SignalPolicy, HandleSignals));
+
+#ifdef ICE_CPP11_MAPPING
+ Application(const Application&) = delete;
+ Application& operator=(const Application&) = delete;
+#endif
+
virtual ~Application();
// This main() must be called by the global main(). main()
@@ -41,10 +47,10 @@ public:
int main(int, const char* const[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
int main(int, const char* const[], ICE_CONFIG_FILE_STRING, int = ICE_INT_VERSION);
-# ifdef _WIN32
+#ifdef _WIN32
int main(int, const wchar_t* const[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
int main(int, const wchar_t* const[], ICE_CONFIG_FILE_STRING, int = ICE_INT_VERSION);
-# endif
+#endif
int main(const StringSeq&, const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
int main(const StringSeq&, ICE_CONFIG_FILE_STRING, int = ICE_INT_VERSION);
@@ -147,6 +153,15 @@ private:
static void destroyOnInterruptCallback(int);
static void shutdownOnInterruptCallback(int);
static void callbackOnInterruptCallback(int);
+
+#ifndef ICE_CPP11_MAPPING
+ //
+ // Not defined, make Application non-copyable
+ //
+ Application(const Application&);
+ Application& operator=(const Application&);
+#endif
+
};
}
diff --git a/cpp/include/Ice/Initialize.h b/cpp/include/Ice/Initialize.h
index 6d1ff3b7bed..a56beb04e7b 100644
--- a/cpp/include/Ice/Initialize.h
+++ b/cpp/include/Ice/Initialize.h
@@ -205,30 +205,30 @@ public:
CommunicatorHolder(const CommunicatorHolder&) = delete;
CommunicatorHolder(CommunicatorHolder&&) = default;
- CommunicatorHolder& operator=(CommunicatorHolder&&) = default;
+ CommunicatorHolder& operator=(CommunicatorHolder&&);
#else // C++98 mapping
//
// Call initialize to create communicator with the provided args
//
- CommunicatorHolder(int&, const char*[], const InitializationData&, int);
+ CommunicatorHolder(int&, const char*[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
CommunicatorHolder(int&, char*[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
- CommunicatorHolder(int&, const char*[], const char* configFile, int = ICE_INT_VERSION);
- CommunicatorHolder(int&, char*[], const char* configFile, int = ICE_INT_VERSION);
+ CommunicatorHolder(int&, const char*[], const char*, int = ICE_INT_VERSION);
+ CommunicatorHolder(int&, char*[], const char*, int = ICE_INT_VERSION);
#ifdef _WIN32
CommunicatorHolder(int&, const wchar_t*[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
CommunicatorHolder(int&, wchar_t*[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
- CommunicatorHolder(int&, const wchar_t*[], const char* configFile, int = ICE_INT_VERSION);
- CommunicatorHolder(int&, wchar_t*[], const char* configFile, int = ICE_INT_VERSION);
+ CommunicatorHolder(int&, const wchar_t*[], const char*, int = ICE_INT_VERSION);
+ CommunicatorHolder(int&, wchar_t*[], const char*, int = ICE_INT_VERSION);
#endif
- CommunicatorHolder(StringSeq& args, const InitializationData& = InitializationData(),int = ICE_INT_VERSION);
- CommunicatorHolder(StringSeq& args, const char* configFile, int = ICE_INT_VERSION);
+ CommunicatorHolder(StringSeq&, const InitializationData& = InitializationData(),int = ICE_INT_VERSION);
+ CommunicatorHolder(StringSeq&, const char*, int = ICE_INT_VERSION);
CommunicatorHolder(const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
- CommunicatorHolder(const char* configFile, int = ICE_INT_VERSION);
+ CommunicatorHolder(const char*, int = ICE_INT_VERSION);
//
// Adopt communicator
@@ -245,8 +245,8 @@ public:
~CommunicatorHolder();
const CommunicatorPtr& communicator() const;
- CommunicatorPtr release();
const CommunicatorPtr& operator->() const;
+ CommunicatorPtr release();
private:
diff --git a/cpp/src/Ice/Initialize.cpp b/cpp/src/Ice/Initialize.cpp
index 87b1926f5f5..e2a334037c0 100644
--- a/cpp/src/Ice/Initialize.cpp
+++ b/cpp/src/Ice/Initialize.cpp
@@ -404,6 +404,17 @@ Ice::CommunicatorHolder::CommunicatorHolder(shared_ptr<Communicator> communicato
{
}
+Ice::CommunicatorHolder&
+Ice::CommunicatorHolder::operator=(CommunicatorHolder&& other)
+{
+ if(_communicator)
+ {
+ _communicator->destroy();
+ }
+ _communicator = std::move(other._communicator);
+ return *this;
+}
+
#else // C++98 mapping
Ice::CommunicatorHolder::CommunicatorHolder(int& argc, const char* argv[], const InitializationData& initData,
@@ -491,6 +502,12 @@ Ice::CommunicatorHolder::communicator() const
return _communicator;
}
+const Ice::CommunicatorPtr&
+Ice::CommunicatorHolder::operator->() const
+{
+ return _communicator;
+}
+
Ice::CommunicatorPtr
Ice::CommunicatorHolder::release()
{
@@ -503,12 +520,6 @@ Ice::CommunicatorHolder::release()
#endif
}
-const Ice::CommunicatorPtr&
-Ice::CommunicatorHolder::operator->() const
-{
- return _communicator;
-}
-
InstancePtr
IceInternal::getInstance(const CommunicatorPtr& communicator)
{
diff --git a/cpp/test/Ice/admin/AllTests.cpp b/cpp/test/Ice/admin/AllTests.cpp
index 97a6c110045..274edaacaf0 100644
--- a/cpp/test/Ice/admin/AllTests.cpp
+++ b/cpp/test/Ice/admin/AllTests.cpp
@@ -190,9 +190,17 @@ allTests(const Ice::CommunicatorPtr& communicator)
init.properties = Ice::createProperties();
init.properties->setProperty("Ice.Admin.Endpoints", "tcp -h 127.0.0.1");
init.properties->setProperty("Ice.Admin.InstanceName", "Test");
- Ice::CommunicatorPtr com = Ice::initialize(init);
- testFacets(com);
- com->destroy();
+ Ice::CommunicatorHolder ich(init);
+ testFacets(ich.communicator());
+
+#ifdef ICE_CPP11_MAPPING
+ // Test move assignment on CommunicatorHolder
+ std::shared_ptr<Ice::Communicator> nullCommunicator;
+ Ice::CommunicatorHolder ich2(nullCommunicator);
+ ich2 = std::move(ich);
+ test(ich2.communicator());
+ test(!ich.communicator());
+#endif
}
{
//