summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/Parser.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2018-07-25 13:55:36 +0200
committerJose <jose@zeroc.com>2018-07-26 11:56:31 +0200
commite2a126d95892f5eb786160c90a16cd6797c846f8 (patch)
tree0f68ce067bb6bb880ba0cdde87ca2d3b08d3921a /cpp/src/Slice/Parser.cpp
parentRemove workaround for Travis CI build vanishing (diff)
downloadice-e2a126d95892f5eb786160c90a16cd6797c846f8.tar.bz2
ice-e2a126d95892f5eb786160c90a16cd6797c846f8.tar.xz
ice-e2a126d95892f5eb786160c90a16cd6797c846f8.zip
Do not sort generated functions alphabetical
Fixes #39
Diffstat (limited to 'cpp/src/Slice/Parser.cpp')
-rw-r--r--cpp/src/Slice/Parser.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp
index b3140e5a4ad..cdffbbea280 100644
--- a/cpp/src/Slice/Parser.cpp
+++ b/cpp/src/Slice/Parser.cpp
@@ -3989,14 +3989,26 @@ Slice::ClassDef::operations() const
OperationList
Slice::ClassDef::allOperations() const
{
- OperationList result = operations();
- result.sort();
- result.unique();
+ OperationList result;
for(ClassList::const_iterator p = _bases.begin(); p != _bases.end(); ++p)
{
OperationList li = (*p)->allOperations();
- result.merge(li);
- result.unique();
+ for(OperationList::const_iterator q = li.begin(); q != li.end(); ++q)
+ {
+ if(find(result.begin(), result.end(), *q) == result.end())
+ {
+ result.push_back(*q);
+ }
+ }
+ }
+
+ OperationList li = operations();
+ for(OperationList::const_iterator q = li.begin(); q != li.end(); ++q)
+ {
+ if(find(result.begin(), result.end(), *q) == result.end())
+ {
+ result.push_back(*q);
+ }
}
return result;
}