/****************************************************************************** * * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * * Documents produced by Doxygen are derivative works derived from the * input used in their production; they are not affected by this license. * */ #ifndef DOXYGEN_H #define DOXYGEN_H #include #include #include #include #include #include "ftextstream.h" #include "sortdict.h" #include "membergroup.h" #include "dirdef.h" #include "memberlist.h" class RefList; class PageSList; class PageSDict; class PageDef; class SearchIndexIntf; class ParserManager; class ObjCache; class Store; class QFileInfo; class BufStr; class CiteDict; class MemberDef; class GroupDef; class GroupSDict; class FileDef; class ClassDef; class ClassSDict; class GenericsSDict; class MemberNameSDict; class FileNameDict; class FileNameList; class NamespaceSDict; class NamespaceDef; class DefinitionIntf; class DirSDict; class DirRelation; class IndexList; class FormulaList; class FormulaDict; class FormulaNameDict; class SectionDict; struct MemberGroupInfo; typedef QList StringList; typedef QListIterator StringListIterator; //typedef QDict FileDict; //typedef QDict GroupDict; class StringDict : public QDict { public: StringDict(uint size=17) : QDict(size) {} virtual ~StringDict() {} }; struct LookupInfo { LookupInfo() : classDef(0), typeDef(0) {} LookupInfo(ClassDef *cd,MemberDef *td,QCString ts,QCString rt) : classDef(cd), typeDef(td), templSpec(ts),resolvedType(rt) {} ClassDef *classDef; MemberDef *typeDef; QCString templSpec; QCString resolvedType; }; extern QCString g_spaces; /*! \brief This class serves as a namespace for global variables used by doxygen. * * All fields in this class are public and static, so they can be used directly. */ class Doxygen { public: static ClassSDict *classSDict; static ClassSDict *hiddenClasses; static PageSDict *exampleSDict; static PageSDict *pageSDict; static PageDef *mainPage; static bool insideMainPage; static FileNameDict *includeNameDict; static FileNameDict *exampleNameDict; static QDict inputPaths; static FileNameDict *inputNameDict; static FileNameList *inputNameList; static FileNameDict *imageNameDict; static FileNameDict *dotFileNameDict; static FileNameDict *mscFileNameDict; static FileNameDict *diaFileNameDict; static QStrList tagfileList; static MemberNameSDict *memberNameSDict; static MemberNameSDict *functionNameSDict; static SectionDict *sectionDict; static StringDict namespaceAliasDict; static GroupSDict *groupSDict; static NamespaceSDict *namespaceSDict; static FormulaList *formulaList; static FormulaDict *formulaDict; static FormulaDict *formulaNameDict; static StringDict tagDestinationDict; static StringDict aliasDict; static QIntDict memGrpInfoDict; static QDict expandAsDefinedDict; static NamespaceDef *globalScope; static QDict *xrefLists; // array of xref lists: todo, test, bug, deprecated ... static QCString htmlFileExtension; static bool parseSourcesNeeded; static QTime runningTime; static SearchIndexIntf *searchIndex; static QDict *symbolMap; static QDict *clangUsrMap; static bool outputToWizard; static QDict *htmlDirMap; static QCache *lookupCache; static DirSDict *directories; static SDict dirRelations; static ParserManager *parserManager; static bool suppressDocWarnings; static Store *symbolStorage; static QCString objDBFileName; static QCString entryDBFileName; static CiteDict *citeDict; static bool gatherDefines; static bool userComments; static IndexList *indexList; static int subpageNestingLevel; static QCString spaces; static bool generatingXmlOutput; static bool markdownSupport; static GenericsSDict *genericsDict; }; void initDoxygen(); void readConfiguration(int argc, char **argv); void checkConfiguration(); void adjustConfiguration(); void searchInputFiles(StringList &inputFiles); void parseInput(); void generateOutput(); void readAliases(); void readFormulaRepository(); void cleanUpDoxygen(); int readFileOrDirectory(const char *s, FileNameList *fnList, FileNameDict *fnDict, StringDict *exclDict, QStrList *patList, QStrList *exclPatList, StringList *resultList, StringDict *resultDict, bool recursive, bool errorIfNotExist=TRUE, QDict *killDict = 0, QDict *paths = 0 ); int readDir(QFileInfo *fi, FileNameList *fnList, FileNameDict *fnDict, StringDict *exclDict, QStrList *patList, QStrList *exclPatList, StringList *resultList, StringDict *resultDict, bool errorIfNotExist, bool recursive, QDict *killDict ); void copyAndFilterFile(const char *fileName,BufStr &dest); #endif