summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Reference.cpp
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2004-11-02 01:35:14 +0000
committerMark Spruiell <mes@zeroc.com>2004-11-02 01:35:14 +0000
commit43ea7316fd36a83be62d88a657bc70fff6b69652 (patch)
tree23b272bd3d99264cfb8c869ae71a12602694201f /cpp/src/Ice/Reference.cpp
parentreenabling IceStorm federation tests (diff)
downloadice-43ea7316fd36a83be62d88a657bc70fff6b69652.tar.bz2
ice-43ea7316fd36a83be62d88a657bc70fff6b69652.tar.xz
ice-43ea7316fd36a83be62d88a657bc70fff6b69652.zip
fixing comparison problems
Diffstat (limited to 'cpp/src/Ice/Reference.cpp')
-rw-r--r--cpp/src/Ice/Reference.cpp68
1 files changed, 52 insertions, 16 deletions
diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp
index 4705dfad427..b680cbac9c9 100644
--- a/cpp/src/Ice/Reference.cpp
+++ b/cpp/src/Ice/Reference.cpp
@@ -599,12 +599,19 @@ IceInternal::FixedReference::operator<(const Reference& r) const
{
return false;
}
- const FixedReference* rhs = dynamic_cast<const FixedReference*>(&r);
- if(!rhs || !Reference::operator<(r))
+ if(Reference::operator<(r))
{
- return false;
+ return true;
}
- return fixedConnections < rhs->fixedConnections;
+ if(Reference::operator==(r))
+ {
+ const FixedReference* rhs = dynamic_cast<const FixedReference*>(&r);
+ if(rhs)
+ {
+ return fixedConnections < rhs->fixedConnections;
+ }
+ }
+ return false;
}
ReferencePtr
@@ -700,12 +707,19 @@ IceInternal::RoutableReference::operator<(const Reference& r) const
{
return false;
}
- const RoutableReference* rhs = dynamic_cast<const RoutableReference*>(&r);
- if(!rhs || !Reference::operator<(r))
+ if(Reference::operator<(r))
{
- return false;
+ return true;
}
- return routerInfo < rhs->routerInfo;
+ if(Reference::operator==(r))
+ {
+ const RoutableReference* rhs = dynamic_cast<const RoutableReference*>(&r);
+ if(rhs)
+ {
+ return routerInfo < rhs->routerInfo;
+ }
+ }
+ return false;
}
IceInternal::RoutableReference::RoutableReference(const InstancePtr& inst, const Ice::Identity& ident,
@@ -873,12 +887,19 @@ IceInternal::DirectReference::operator<(const Reference& r) const
{
return false;
}
- const DirectReference* rhs = dynamic_cast<const DirectReference*>(&r);
- if(!rhs || !RoutableReference::operator<(r))
+ if(RoutableReference::operator<(r))
{
- return false;
+ return true;
}
- return endpoints < rhs->endpoints;
+ if(RoutableReference::operator==(r))
+ {
+ const DirectReference* rhs = dynamic_cast<const DirectReference*>(&r);
+ if(rhs)
+ {
+ return endpoints < rhs->endpoints;
+ }
+ }
+ return false;
}
ReferencePtr
@@ -1109,12 +1130,27 @@ IceInternal::IndirectReference::operator<(const Reference& r) const
{
return false;
}
- const IndirectReference* rhs = dynamic_cast<const IndirectReference*>(&r);
- if(!rhs || !RoutableReference::operator<(r))
+ if(RoutableReference::operator<(r))
{
- return false;
+ return true;
}
- return adapterId < rhs->adapterId && locatorInfo < rhs->locatorInfo;
+ if(RoutableReference::operator==(r))
+ {
+ const IndirectReference* rhs = dynamic_cast<const IndirectReference*>(&r);
+ if(rhs)
+ {
+ if(adapterId < rhs->adapterId)
+ {
+ return true;
+ }
+ else if(rhs->adapterId < adapterId)
+ {
+ return false;
+ }
+ return locatorInfo < rhs->locatorInfo;
+ }
+ }
+ return false;
}
ReferencePtr