diff options
Diffstat (limited to 'cpp/src/Slice/Parser.cpp')
-rw-r--r-- | cpp/src/Slice/Parser.cpp | 22 |
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; } |