From d8df1157c9dc0b3ce6d0fe31c06ff0b112b5886d Mon Sep 17 00:00:00 2001 From: Bernard Normier Date: Thu, 18 Oct 2018 14:26:42 -0400 Subject: slice2cs no longer generates empty namespaces Fixes #246 --- cpp/src/Slice/Parser.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'cpp/src/Slice/Parser.cpp') diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp index ada7e2070f1..21faf648c1e 100644 --- a/cpp/src/Slice/Parser.cpp +++ b/cpp/src/Slice/Parser.cpp @@ -2443,18 +2443,39 @@ Slice::Container::hasOnlyClassDecls() const } bool -Slice::Container::hasAbstractClassDefs() const +Slice::Container::hasOperations() const { for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) { ClassDefPtr cl = ClassDefPtr::dynamicCast(*p); - if(cl && cl->isAbstract()) + if(cl && cl->hasOperations()) { return true; } ContainerPtr container = ContainerPtr::dynamicCast(*p); - if(container && container->hasAbstractClassDefs()) + if(container && container->hasOperations()) + { + return true; + } + } + + return false; +} + +bool +Slice::Container::hasNonLocalAbstractClassDefs() const +{ + for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + { + ClassDefPtr cl = ClassDefPtr::dynamicCast(*p); + if(cl && cl->isAbstract() && !cl->isLocal()) + { + return true; + } + + ContainerPtr container = ContainerPtr::dynamicCast(*p); + if(container && container->hasNonLocalAbstractClassDefs()) { return true; } -- cgit v1.2.3