summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2015-12-21 21:25:35 +0100
committerJose <jose@zeroc.com>2015-12-21 21:25:35 +0100
commite10648014880b39370c9abd9920ca8f61a93dfee (patch)
tree45fc795bce2470ec0131dbaad2660e8ccece80f7 /cpp
parentAdd async metadata note to CHANGELOG-3.7.md (diff)
downloadice-e10648014880b39370c9abd9920ca8f61a93dfee.tar.bz2
ice-e10648014880b39370c9abd9920ca8f61a93dfee.tar.xz
ice-e10648014880b39370c9abd9920ca8f61a93dfee.zip
C++11 cpp:comparable for local classes
Diffstat (limited to 'cpp')
-rw-r--r--cpp/include/Ice/VirtualShared.h3
-rw-r--r--cpp/src/Ice/EndpointI.h4
-rw-r--r--cpp/src/Ice/IPEndpointI.cpp4
-rw-r--r--cpp/src/Ice/IPEndpointI.h4
-rw-r--r--cpp/src/Ice/OpaqueEndpointI.cpp4
-rw-r--r--cpp/src/Ice/OpaqueEndpointI.h4
-rw-r--r--cpp/src/Ice/TcpEndpointI.cpp4
-rw-r--r--cpp/src/Ice/TcpEndpointI.h4
-rw-r--r--cpp/src/Ice/UdpEndpointI.cpp4
-rw-r--r--cpp/src/Ice/UdpEndpointI.h4
-rw-r--r--cpp/src/Ice/WSEndpoint.cpp4
-rw-r--r--cpp/src/Ice/WSEndpoint.h4
-rw-r--r--cpp/src/IceSSL/EndpointI.cpp4
-rw-r--r--cpp/src/IceSSL/EndpointI.h4
-rw-r--r--cpp/src/slice2cpp/Gen.cpp7
-rw-r--r--cpp/test/Ice/background/EndpointI.cpp4
-rw-r--r--cpp/test/Ice/background/EndpointI.h4
-rw-r--r--cpp/test/Ice/proxy/AllTests.cpp21
18 files changed, 43 insertions, 48 deletions
diff --git a/cpp/include/Ice/VirtualShared.h b/cpp/include/Ice/VirtualShared.h
index afa472a9b75..04016f718e6 100644
--- a/cpp/include/Ice/VirtualShared.h
+++ b/cpp/include/Ice/VirtualShared.h
@@ -30,7 +30,8 @@ public:
std::shared_ptr<T> shared_from_this() const
{
- return std::dynamic_pointer_cast<T>(VirtualEnableSharedFromThis::shared_from_this());
+ return std::dynamic_pointer_cast<T>(
+ std::const_pointer_cast<VirtualEnableSharedFromThisBase>(VirtualEnableSharedFromThisBase::shared_from_this()));
}
};
diff --git a/cpp/src/Ice/EndpointI.h b/cpp/src/Ice/EndpointI.h
index ced48f600e5..edd3784608b 100644
--- a/cpp/src/Ice/EndpointI.h
+++ b/cpp/src/Ice/EndpointI.h
@@ -134,8 +134,8 @@ public:
// Compare endpoints for sorting purposes.
//
#ifdef ICE_CPP11_MAPPING
- virtual bool operator==(const EndpointI&) const = 0;
- virtual bool operator<(const EndpointI&) const = 0;
+ virtual bool operator==(const Endpoint&) const = 0;
+ virtual bool operator<(const Endpoint&) const = 0;
#else
virtual bool operator==(const Ice::LocalObject&) const = 0;
virtual bool operator<(const Ice::LocalObject&) const = 0;
diff --git a/cpp/src/Ice/IPEndpointI.cpp b/cpp/src/Ice/IPEndpointI.cpp
index cfbcb3bb111..bb9bc8e170c 100644
--- a/cpp/src/Ice/IPEndpointI.cpp
+++ b/cpp/src/Ice/IPEndpointI.cpp
@@ -232,7 +232,7 @@ IceInternal::IPEndpointI::options() const
bool
#ifdef ICE_CPP11_MAPPING
-IceInternal::IPEndpointI::operator==(const EndpointI& r) const
+IceInternal::IPEndpointI::operator==(const Endpoint& r) const
#else
IceInternal::IPEndpointI::operator==(const LocalObject& r) const
#endif
@@ -272,7 +272,7 @@ IceInternal::IPEndpointI::operator==(const LocalObject& r) const
bool
#ifdef ICE_CPP11_MAPPING
-IceInternal::IPEndpointI::operator<(const EndpointI& r) const
+IceInternal::IPEndpointI::operator<(const Endpoint& r) const
#else
IceInternal::IPEndpointI::operator<(const LocalObject& r) const
#endif
diff --git a/cpp/src/Ice/IPEndpointI.h b/cpp/src/Ice/IPEndpointI.h
index 422fb9803e2..d2f79a78051 100644
--- a/cpp/src/Ice/IPEndpointI.h
+++ b/cpp/src/Ice/IPEndpointI.h
@@ -63,8 +63,8 @@ public:
virtual std::string options() const;
#ifdef ICE_CPP11_MAPPING
- virtual bool operator==(const EndpointI&) const;
- virtual bool operator<(const EndpointI&) const;
+ virtual bool operator==(const Ice::Endpoint&) const;
+ virtual bool operator<(const Ice::Endpoint&) const;
#else
virtual bool operator==(const Ice::LocalObject&) const;
virtual bool operator<(const Ice::LocalObject&) const;
diff --git a/cpp/src/Ice/OpaqueEndpointI.cpp b/cpp/src/Ice/OpaqueEndpointI.cpp
index 16296d0a093..baa0de85135 100644
--- a/cpp/src/Ice/OpaqueEndpointI.cpp
+++ b/cpp/src/Ice/OpaqueEndpointI.cpp
@@ -232,7 +232,7 @@ IceInternal::OpaqueEndpointI::options() const
bool
#ifdef ICE_CPP11_MAPPING
-IceInternal::OpaqueEndpointI::operator==(const EndpointI& r) const
+IceInternal::OpaqueEndpointI::operator==(const Endpoint& r) const
#else
IceInternal::OpaqueEndpointI::operator==(const LocalObject& r) const
#endif
@@ -268,7 +268,7 @@ IceInternal::OpaqueEndpointI::operator==(const LocalObject& r) const
bool
#ifdef ICE_CPP11_MAPPING
-IceInternal::OpaqueEndpointI::operator<(const EndpointI& r) const
+IceInternal::OpaqueEndpointI::operator<(const Endpoint& r) const
#else
IceInternal::OpaqueEndpointI::operator<(const LocalObject& r) const
#endif
diff --git a/cpp/src/Ice/OpaqueEndpointI.h b/cpp/src/Ice/OpaqueEndpointI.h
index 8ae35cf7ff7..516e4dcfcf3 100644
--- a/cpp/src/Ice/OpaqueEndpointI.h
+++ b/cpp/src/Ice/OpaqueEndpointI.h
@@ -46,8 +46,8 @@ public:
virtual std::string options() const;
#ifdef ICE_CPP11_MAPPING
- virtual bool operator==(const EndpointI&) const;
- virtual bool operator<(const EndpointI&) const;
+ virtual bool operator==(const Ice::Endpoint&) const;
+ virtual bool operator<(const Ice::Endpoint&) const;
#else
virtual bool operator==(const Ice::LocalObject&) const;
virtual bool operator<(const Ice::LocalObject&) const;
diff --git a/cpp/src/Ice/TcpEndpointI.cpp b/cpp/src/Ice/TcpEndpointI.cpp
index 601092a024f..b29f349d679 100644
--- a/cpp/src/Ice/TcpEndpointI.cpp
+++ b/cpp/src/Ice/TcpEndpointI.cpp
@@ -175,7 +175,7 @@ IceInternal::TcpEndpointI::options() const
bool
#ifdef ICE_CPP11_MAPPING
-IceInternal::TcpEndpointI::operator==(const EndpointI& r) const
+IceInternal::TcpEndpointI::operator==(const Endpoint& r) const
#else
IceInternal::TcpEndpointI::operator==(const LocalObject& r) const
#endif
@@ -210,7 +210,7 @@ IceInternal::TcpEndpointI::operator==(const LocalObject& r) const
bool
#ifdef ICE_CPP11_MAPPING
-IceInternal::TcpEndpointI::operator<(const EndpointI& r) const
+IceInternal::TcpEndpointI::operator<(const Endpoint& r) const
#else
IceInternal::TcpEndpointI::operator<(const LocalObject& r) const
#endif
diff --git a/cpp/src/Ice/TcpEndpointI.h b/cpp/src/Ice/TcpEndpointI.h
index 6c93a1491ec..911b22c62fa 100644
--- a/cpp/src/Ice/TcpEndpointI.h
+++ b/cpp/src/Ice/TcpEndpointI.h
@@ -42,8 +42,8 @@ public:
virtual std::string options() const;
#ifdef ICE_CPP11_MAPPING
- virtual bool operator==(const EndpointI&) const;
- virtual bool operator<(const EndpointI&) const;
+ virtual bool operator==(const Ice::Endpoint&) const;
+ virtual bool operator<(const Ice::Endpoint&) const;
#else
virtual bool operator==(const Ice::LocalObject&) const;
virtual bool operator<(const Ice::LocalObject&) const;
diff --git a/cpp/src/Ice/UdpEndpointI.cpp b/cpp/src/Ice/UdpEndpointI.cpp
index ef98a76deda..4cf6d750b1e 100644
--- a/cpp/src/Ice/UdpEndpointI.cpp
+++ b/cpp/src/Ice/UdpEndpointI.cpp
@@ -179,7 +179,7 @@ IceInternal::UdpEndpointI::options() const
bool
#ifdef ICE_CPP11_MAPPING
-IceInternal::UdpEndpointI::operator==(const EndpointI& r) const
+IceInternal::UdpEndpointI::operator==(const Endpoint& r) const
#else
IceInternal::UdpEndpointI::operator==(const LocalObject& r) const
#endif
@@ -225,7 +225,7 @@ IceInternal::UdpEndpointI::operator==(const LocalObject& r) const
bool
#ifdef ICE_CPP11_MAPPING
-IceInternal::UdpEndpointI::operator<(const EndpointI& r) const
+IceInternal::UdpEndpointI::operator<(const Endpoint& r) const
#else
IceInternal::UdpEndpointI::operator<(const LocalObject& r) const
#endif
diff --git a/cpp/src/Ice/UdpEndpointI.h b/cpp/src/Ice/UdpEndpointI.h
index 66913066c15..c29a9462b96 100644
--- a/cpp/src/Ice/UdpEndpointI.h
+++ b/cpp/src/Ice/UdpEndpointI.h
@@ -40,8 +40,8 @@ public:
virtual std::string options() const;
#ifdef ICE_CPP11_MAPPING
- virtual bool operator==(const EndpointI&) const;
- virtual bool operator<(const EndpointI&) const;
+ virtual bool operator==(const Ice::Endpoint&) const;
+ virtual bool operator<(const Ice::Endpoint&) const;
#else
virtual bool operator==(const Ice::LocalObject&) const;
virtual bool operator<(const Ice::LocalObject&) const;
diff --git a/cpp/src/Ice/WSEndpoint.cpp b/cpp/src/Ice/WSEndpoint.cpp
index 7c6bde550d8..7dcbe6e0a79 100644
--- a/cpp/src/Ice/WSEndpoint.cpp
+++ b/cpp/src/Ice/WSEndpoint.cpp
@@ -281,7 +281,7 @@ IceInternal::WSEndpoint::delegate() const
bool
#ifdef ICE_CPP11_MAPPING
-IceInternal::WSEndpoint::operator==(const EndpointI& r) const
+IceInternal::WSEndpoint::operator==(const Endpoint& r) const
#else
IceInternal::WSEndpoint::operator==(const Ice::LocalObject& r) const
#endif
@@ -312,7 +312,7 @@ IceInternal::WSEndpoint::operator==(const Ice::LocalObject& r) const
bool
#ifdef ICE_CPP11_MAPPING
-IceInternal::WSEndpoint::operator<(const EndpointI& r) const
+IceInternal::WSEndpoint::operator<(const Endpoint& r) const
#else
IceInternal::WSEndpoint::operator<(const Ice::LocalObject& r) const
#endif
diff --git a/cpp/src/Ice/WSEndpoint.h b/cpp/src/Ice/WSEndpoint.h
index 99d97a7a5b5..debb77644c7 100644
--- a/cpp/src/Ice/WSEndpoint.h
+++ b/cpp/src/Ice/WSEndpoint.h
@@ -66,8 +66,8 @@ public:
WSEndpointPtr endpoint(const EndpointIPtr&) const;
#ifdef ICE_CPP11_MAPPING
- virtual bool operator==(const EndpointI&) const;
- virtual bool operator<(const EndpointI&) const;
+ virtual bool operator==(const Ice::Endpoint&) const;
+ virtual bool operator<(const Ice::Endpoint&) const;
#else
virtual bool operator==(const Ice::LocalObject&) const;
virtual bool operator<(const Ice::LocalObject&) const;
diff --git a/cpp/src/IceSSL/EndpointI.cpp b/cpp/src/IceSSL/EndpointI.cpp
index 183dd1ec3b3..5cf6c05cd90 100644
--- a/cpp/src/IceSSL/EndpointI.cpp
+++ b/cpp/src/IceSSL/EndpointI.cpp
@@ -163,7 +163,7 @@ IceSSL::EndpointI::options() const
bool
#ifdef ICE_CPP11_MAPPING
-IceSSL::EndpointI::operator==(const IceInternal::EndpointI& r) const
+IceSSL::EndpointI::operator==(const Ice::Endpoint& r) const
#else
IceSSL::EndpointI::operator==(const Ice::LocalObject& r) const
#endif
@@ -199,7 +199,7 @@ IceSSL::EndpointI::operator==(const Ice::LocalObject& r) const
bool
#ifdef ICE_CPP11_MAPPING
-IceSSL::EndpointI::operator<(const IceInternal::EndpointI& r) const
+IceSSL::EndpointI::operator<(const Ice::Endpoint& r) const
#else
IceSSL::EndpointI::operator<(const Ice::LocalObject& r) const
#endif
diff --git a/cpp/src/IceSSL/EndpointI.h b/cpp/src/IceSSL/EndpointI.h
index 25a23766b0b..1bab9fac9e3 100644
--- a/cpp/src/IceSSL/EndpointI.h
+++ b/cpp/src/IceSSL/EndpointI.h
@@ -44,8 +44,8 @@ public:
virtual std::string options() const;
#ifdef ICE_CPP11_MAPPING
- virtual bool operator==(const IceInternal::EndpointI&) const;
- virtual bool operator<(const IceInternal::EndpointI&) const;
+ virtual bool operator==(const Ice::Endpoint&) const;
+ virtual bool operator<(const Ice::Endpoint&) const;
#else
virtual bool operator==(const Ice::LocalObject&) const;
virtual bool operator<(const Ice::LocalObject&) const;
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index 9b52d739bf2..ea4f44df909 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -7507,6 +7507,13 @@ Slice::Gen::Cpp11LocalObjectVisitor::visitClassDefStart(const ClassDefPtr& p)
emitOneShotConstructor(p);
H << sp;
}
+
+ if(p->hasMetaData("cpp:comparable"))
+ {
+ H << sp;
+ H << nl << "virtual bool operator==(const " << p->name() << "&) const = 0;";
+ H << nl << "virtual bool operator<(const " << p->name() << "&) const = 0;";
+ }
return true;
}
diff --git a/cpp/test/Ice/background/EndpointI.cpp b/cpp/test/Ice/background/EndpointI.cpp
index 00080e13fec..d8051177e1a 100644
--- a/cpp/test/Ice/background/EndpointI.cpp
+++ b/cpp/test/Ice/background/EndpointI.cpp
@@ -246,7 +246,7 @@ EndpointI::getInfo() const
bool
#ifdef ICE_CPP11_MAPPING
-EndpointI::operator==(const IceInternal::EndpointI& r) const
+EndpointI::operator==(const Ice::Endpoint& r) const
#else
EndpointI::operator==(const Ice::LocalObject& r) const
#endif
@@ -268,7 +268,7 @@ EndpointI::operator==(const Ice::LocalObject& r) const
bool
#ifdef ICE_CPP11_MAPPING
-EndpointI::operator<(const IceInternal::EndpointI& r) const
+EndpointI::operator<(const Ice::Endpoint& r) const
#else
EndpointI::operator<(const Ice::LocalObject& r) const
#endif
diff --git a/cpp/test/Ice/background/EndpointI.h b/cpp/test/Ice/background/EndpointI.h
index 2ca92934d85..2261cbb0205 100644
--- a/cpp/test/Ice/background/EndpointI.h
+++ b/cpp/test/Ice/background/EndpointI.h
@@ -50,8 +50,8 @@ public:
virtual bool secure() const;
#ifdef ICE_CPP11_MAPPING
- virtual bool operator==(const IceInternal::EndpointI&) const;
- virtual bool operator<(const IceInternal::EndpointI&) const;
+ virtual bool operator==(const Ice::Endpoint&) const;
+ virtual bool operator<(const Ice::Endpoint&) const;
#else
virtual bool operator==(const Ice::LocalObject&) const;
virtual bool operator<(const Ice::LocalObject&) const;
diff --git a/cpp/test/Ice/proxy/AllTests.cpp b/cpp/test/Ice/proxy/AllTests.cpp
index 405c53e4ab2..2222b8ce7e9 100644
--- a/cpp/test/Ice/proxy/AllTests.cpp
+++ b/cpp/test/Ice/proxy/AllTests.cpp
@@ -10,7 +10,6 @@
#include <Ice/Ice.h>
#include <Ice/Locator.h>
#include <Ice/Router.h>
-#include <Ice/EndpointI.h>
#include <TestCommon.h>
#include <Test.h>
@@ -680,24 +679,12 @@ allTests(const Ice::CommunicatorPtr& communicator)
Ice::EndpointSeq endpts1 = communicator->stringToProxy("foo:tcp -h 127.0.0.1 -p 10000")->ice_getEndpoints();
Ice::EndpointSeq endpts2 = communicator->stringToProxy("foo:tcp -h 127.0.0.1 -p 10001")->ice_getEndpoints();
- auto eq = [](const shared_ptr<Ice::Endpoint>& lhs, const shared_ptr<Ice::Endpoint>& rhs)
- {
- return Ice::targetEquals(dynamic_pointer_cast<IceInternal::EndpointI>(lhs),
- dynamic_pointer_cast<IceInternal::EndpointI>(rhs));
- };
-
- auto less = [](const shared_ptr<Ice::Endpoint>& lhs, const shared_ptr<Ice::Endpoint>& rhs)
- {
- return Ice::targetLess(dynamic_pointer_cast<IceInternal::EndpointI>(lhs),
- dynamic_pointer_cast<IceInternal::EndpointI>(rhs));
- };
-
- test(!equal(endpts1.begin(), endpts1.end(), endpts2.begin(), endpts2.end(), eq));
- test(lexicographical_compare(endpts1.begin(), endpts1.end(), endpts2.begin(), endpts2.end(), less));
- test(!lexicographical_compare(endpts2.begin(), endpts2.end(), endpts1.begin(), endpts1.end(), less));
+ test(!equal(endpts1.begin(), endpts1.end(), endpts2.begin(), endpts2.end(), Ice::TargetEquals<shared_ptr<Ice::Endpoint>>()));
+ test(lexicographical_compare(endpts1.begin(), endpts1.end(), endpts2.begin(), endpts2.end(), Ice::TargetLess<shared_ptr<Ice::Endpoint>>()));
+ test(!lexicographical_compare(endpts2.begin(), endpts2.end(), endpts1.begin(), endpts1.end(), Ice::TargetLess<shared_ptr<Ice::Endpoint>>()));
Ice::EndpointSeq endpts3 = communicator->stringToProxy("foo:tcp -h 127.0.0.1 -p 10000")->ice_getEndpoints();
- test(equal(endpts1.begin(), endpts1.end(), endpts3.begin(), endpts3.end(), eq));
+ test(equal(endpts1.begin(), endpts1.end(), endpts3.begin(), endpts3.end(), Ice::TargetEquals<shared_ptr<Ice::Endpoint>>()));
test(Ice::targetEquals(compObj1->ice_encodingVersion(Ice::Encoding_1_0), compObj1->ice_encodingVersion(Ice::Encoding_1_0)));
test(!Ice::targetEquals(compObj1->ice_encodingVersion(Ice::Encoding_1_0), compObj1->ice_encodingVersion(Ice::Encoding_1_1)));