1 /******************************************************************************
3 * Copyright (C) 1997-2015 by Dimitri van Heesch.
5 * Permission to use, copy, modify, and distribute this software and its
6 * documentation under the terms of the GNU General Public License is hereby
7 * granted. No representations are made about the suitability of this software
8 * for any purpose. It is provided "as is" without express or implied warranty.
9 * See the GNU General Public License for more details.
11 * Documents produced by Doxygen are derivative works derived from the
12 * input used in their production; they are not affected by this license.
19 #include <qdatetime.h>
25 #include "ftextstream.h"
27 #include "membergroup.h"
29 #include "memberlist.h"
35 class SearchIndexIntf;
49 class MemberNameSDict;
60 class FormulaNameDict;
62 struct MemberGroupInfo;
64 typedef QList<QCString> StringList;
65 typedef QListIterator<QCString> StringListIterator;
66 //typedef QDict<FileDef> FileDict;
67 //typedef QDict<GroupDef> GroupDict;
69 class StringDict : public QDict<QCString>
72 StringDict(uint size=17) : QDict<QCString>(size) {}
73 virtual ~StringDict() {}
78 LookupInfo() : classDef(0), typeDef(0) {}
79 LookupInfo(ClassDef *cd,MemberDef *td,QCString ts,QCString rt)
80 : classDef(cd), typeDef(td), templSpec(ts),resolvedType(rt) {}
84 QCString resolvedType;
87 extern QCString g_spaces;
89 /*! \brief This class serves as a namespace for global variables used by doxygen.
91 * All fields in this class are public and static, so they can be used directly.
96 static ClassSDict *classSDict;
97 static ClassSDict *hiddenClasses;
98 static PageSDict *exampleSDict;
99 static PageSDict *pageSDict;
100 static PageDef *mainPage;
101 static bool insideMainPage;
102 static FileNameDict *includeNameDict;
103 static FileNameDict *exampleNameDict;
104 static QDict<void> inputPaths;
105 static FileNameDict *inputNameDict;
106 static FileNameList *inputNameList;
107 static FileNameDict *imageNameDict;
108 static FileNameDict *dotFileNameDict;
109 static FileNameDict *mscFileNameDict;
110 static FileNameDict *diaFileNameDict;
111 static QStrList tagfileList;
112 static MemberNameSDict *memberNameSDict;
113 static MemberNameSDict *functionNameSDict;
114 static SectionDict *sectionDict;
115 static StringDict namespaceAliasDict;
116 static GroupSDict *groupSDict;
117 static NamespaceSDict *namespaceSDict;
118 static FormulaList *formulaList;
119 static FormulaDict *formulaDict;
120 static FormulaDict *formulaNameDict;
121 static StringDict tagDestinationDict;
122 static StringDict aliasDict;
123 static QIntDict<MemberGroupInfo> memGrpInfoDict;
124 static QDict<void> expandAsDefinedDict;
125 static NamespaceDef *globalScope;
126 static QDict<RefList> *xrefLists; // array of xref lists: todo, test, bug, deprecated ...
127 static QCString htmlFileExtension;
128 static bool parseSourcesNeeded;
129 static QTime runningTime;
130 static SearchIndexIntf *searchIndex;
131 static QDict<DefinitionIntf> *symbolMap;
132 static QDict<Definition> *clangUsrMap;
133 static bool outputToWizard;
134 static QDict<int> *htmlDirMap;
135 static QCache<LookupInfo> *lookupCache;
136 static DirSDict *directories;
137 static SDict<DirRelation> dirRelations;
138 static ParserManager *parserManager;
139 static bool suppressDocWarnings;
140 static Store *symbolStorage;
141 static QCString objDBFileName;
142 static QCString entryDBFileName;
143 static QCString filterDBFileName;
144 static CiteDict *citeDict;
145 static bool gatherDefines;
146 static bool userComments;
147 static IndexList *indexList;
148 static int subpageNestingLevel;
149 static QCString spaces;
150 static bool generatingXmlOutput;
151 static bool markdownSupport;
152 static GenericsSDict *genericsDict;
156 void readConfiguration(int argc, char **argv);
157 void checkConfiguration();
158 void adjustConfiguration();
159 void searchInputFiles(StringList &inputFiles);
161 void generateOutput();
163 void readFormulaRepository(QCString dir, bool cmp = FALSE);
164 void cleanUpDoxygen();
165 int readFileOrDirectory(const char *s,
166 FileNameList *fnList,
167 FileNameDict *fnDict,
168 StringDict *exclDict,
170 QStrList *exclPatList,
171 StringList *resultList,
172 StringDict *resultDict,
174 bool errorIfNotExist=TRUE,
175 QDict<void> *killDict = 0,
176 QDict<void> *paths = 0
178 int readDir(QFileInfo *fi,
179 FileNameList *fnList,
180 FileNameDict *fnDict,
181 StringDict *exclDict,
183 QStrList *exclPatList,
184 StringList *resultList,
185 StringDict *resultDict,
186 bool errorIfNotExist,
188 QDict<void> *killDict
190 void copyAndFilterFile(const char *fileName,BufStr &dest);