diff options
author | Joe George <joe@zeroc.com> | 2016-07-07 14:21:50 -0400 |
---|---|---|
committer | Joe George <joe@zeroc.com> | 2016-07-08 09:36:51 -0400 |
commit | e5c2e3c8a6255fbb09b294e37b717dd3452e5ffb (patch) | |
tree | d6110ee21fbea6cc67334a5b49361d4501d614b6 /cpp/src/Slice/Parser.cpp | |
parent | Fixed JavaScript optionalBidir test failure (diff) | |
download | ice-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.cpp | 21 |
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) |