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/CPlusPlusUtil.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/CPlusPlusUtil.cpp')
-rw-r--r-- | cpp/src/Slice/CPlusPlusUtil.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/Slice/CPlusPlusUtil.cpp index 88e0f96da8e..1e3134c718a 100644 --- a/cpp/src/Slice/CPlusPlusUtil.cpp +++ b/cpp/src/Slice/CPlusPlusUtil.cpp @@ -1453,6 +1453,32 @@ Slice::writeStreamHelpers(Output& out, bool checkClassMetaData, const ContainedP out << eb << ";" << nl; } } +void +Slice::writeIceTuple(::IceUtilInternal::Output& out, DataMemberList dataMembers, int useWstring) +{ + out << sp << nl << "std::tuple<"; + for(DataMemberList::const_iterator q = dataMembers.begin(); q != dataMembers.end(); ++q) + { + if(q != dataMembers.begin()) + { + out << ", "; + } + out << "const "; + out << typeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), useWstring | TypeContextCpp11) << "&"; + } + out << "> ice_tuple() const"; + out << sb; + out << nl << "return std::tie("; + for(DataMemberList::const_iterator pi = dataMembers.begin(); pi != dataMembers.end(); ++pi) + { + if(pi != dataMembers.begin()) + { + out << ", "; + } + out << fixKwd((*pi)->name()); + } + out << ");" << eb; +} bool Slice::findMetaData(const string& prefix, const ClassDeclPtr& cl, string& value) |