diff options
Diffstat (limited to 'src/util.cpp')
-rw-r--r-- | src/util.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/util.cpp b/src/util.cpp index b70e3a5..70b8ebc 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1968,3 +1968,47 @@ int getPrefixIndex(const QCString &name) } return 0; } + +//---------------------------------------------------------------------------- + +static void initBaseClassHierarchy(BaseClassList *bcl) +{ + BaseClassListIterator bcli(*bcl); + for ( ; bcli.current(); ++bcli) + { + ClassDef *cd=bcli.current()->classDef; + if (cd->baseClasses()->count()==0) // no base classes => new root + { + initBaseClassHierarchy(cd->baseClasses()); + } + cd->visited=FALSE; + } +} + +//---------------------------------------------------------------------------- + +void initClassHierarchy(ClassList *cl) +{ + ClassListIterator cli(*cl); + ClassDef *cd; + for ( ; (cd=cli.current()); ++cli) + { + cd->visited=FALSE; + initBaseClassHierarchy(cd->baseClasses()); + } +} + +//---------------------------------------------------------------------------- + +bool hasVisibleRoot(BaseClassList *bcl) +{ + BaseClassListIterator bcli(*bcl); + for ( ; bcli.current(); ++bcli) + { + ClassDef *cd=bcli.current()->classDef; + if (cd->isVisibleInHierarchy()) return TRUE; + hasVisibleRoot(cd->baseClasses()); + } + return FALSE; +} + |