summaryrefslogtreecommitdiffstats
path: root/src/util.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2013-08-26 08:18:59 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2013-10-21 18:21:33 (GMT)
commit784a67d23ff81275c95af4199179da094953be2e (patch)
tree90a165d2f3327f3ad94775f616c3440d37813702 /src/util.cpp
parent74815268dd88f2cfb4473462cef3c33eebd5516a (diff)
downloadDoxygen-784a67d23ff81275c95af4199179da094953be2e.zip
Doxygen-784a67d23ff81275c95af4199179da094953be2e.tar.gz
Doxygen-784a67d23ff81275c95af4199179da094953be2e.tar.bz2
Added rudimentary support for django like template system for output creation.
Diffstat (limited to 'src/util.cpp')
-rw-r--r--src/util.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/util.cpp b/src/util.cpp
index 380ae94..c127362 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -5076,6 +5076,34 @@ static void initBaseClassHierarchy(BaseClassList *bcl)
cd->visited=FALSE;
}
}
+//----------------------------------------------------------------------------
+
+bool classHasVisibleChildren(ClassDef *cd)
+{
+ BaseClassList *bcl;
+
+ if (cd->getLanguage()==SrcLangExt_VHDL) // reverse baseClass/subClass relation
+ {
+ if (cd->baseClasses()==0) return FALSE;
+ bcl=cd->baseClasses();
+ }
+ else
+ {
+ if (cd->subClasses()==0) return FALSE;
+ bcl=cd->subClasses();
+ }
+
+ BaseClassListIterator bcli(*bcl);
+ for ( ; bcli.current() ; ++bcli)
+ {
+ if (bcli.current()->classDef->isVisibleInHierarchy())
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
//----------------------------------------------------------------------------
@@ -7988,3 +8016,44 @@ uint getUtf8CodeToUpper( const QCString& s, int idx )
//--------------------------------------------------------------------------------------
+bool namespaceHasVisibleChild(NamespaceDef *nd,bool includeClasses)
+{
+ if (nd->getNamespaceSDict())
+ {
+ NamespaceSDict::Iterator cnli(*nd->getNamespaceSDict());
+ NamespaceDef *cnd;
+ for (cnli.toFirst();(cnd=cnli.current());++cnli)
+ {
+ if (cnd->isLinkable() && cnd->localName().find('@')==-1)
+ {
+ return TRUE;
+ }
+ else if (namespaceHasVisibleChild(cnd,includeClasses))
+ {
+ return TRUE;
+ }
+ }
+ }
+ if (includeClasses && nd->getClassSDict())
+ {
+ ClassSDict::Iterator cli(*nd->getClassSDict());
+ ClassDef *cd;
+ for (;(cd=cli.current());++cli)
+ {
+ if (cd->isLinkableInProject() && cd->templateMaster()==0)
+ {
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+//----------------------------------------------------------------------------
+
+bool classVisibleInIndex(ClassDef *cd)
+{
+ static bool allExternals = Config_getBool("ALLEXTERNALS");
+ return (allExternals && cd->isLinkable()) || cd->isLinkableInProject();
+}
+