summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/Parser.cpp
diff options
context:
space:
mode:
authorJoe George <joe@zeroc.com>2016-07-07 14:21:50 -0400
committerJoe George <joe@zeroc.com>2016-07-08 09:36:51 -0400
commite5c2e3c8a6255fbb09b294e37b717dd3452e5ffb (patch)
treed6110ee21fbea6cc67334a5b49361d4501d614b6 /cpp/src/Slice/Parser.cpp
parentFixed JavaScript optionalBidir test failure (diff)
downloadice-e5c2e3c8a6255fbb09b294e37b717dd3452e5ffb.tar.bz2
ice-e5c2e3c8a6255fbb09b294e37b717dd3452e5ffb.tar.xz
ice-e5c2e3c8a6255fbb09b294e37b717dd3452e5ffb.zip
ICE-7172 - Replace generated comparsion operators
- Add ice_tuple function to structs and classes. Returns a tuple of data members - Replace generated comparsion for structs (and classes) with template comparsion operators which use ice_tuple
Diffstat (limited to 'cpp/src/Slice/Parser.cpp')
-rw-r--r--cpp/src/Slice/Parser.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp
index 502d20677be..1c3eb315032 100644
--- a/cpp/src/Slice/Parser.cpp
+++ b/cpp/src/Slice/Parser.cpp
@@ -1650,6 +1650,27 @@ Slice::Container::hasNonLocalExceptions() const
}
bool
+Slice::Container::hasStructs() const
+{
+ for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p)
+ {
+ StructPtr q = StructPtr::dynamicCast(*p);
+ if(q)
+ {
+ return true;
+ }
+
+ ContainerPtr container = ContainerPtr::dynamicCast(*p);
+ if(container && container->hasStructs())
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+bool
Slice::Container::hasExceptions() const
{
for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p)