1 /******************************************************************************
3 * $Id: doxygen.h,v 1.39 2001/03/19 19:27:40 root Exp $
6 * Copyright (C) 1997-2012 by Dimitri van Heesch.
8 * Permission to use, copy, modify, and distribute this software and its
9 * documentation under the terms of the GNU General Public License is hereby
10 * granted. No representations are made about the suitability of this software
11 * for any purpose. It is provided "as is" without express or implied warranty.
12 * See the GNU General Public License for more details.
14 * Documents produced by Doxygen are derivative works derived from the
15 * input used in their production; they are not affected by this license.
23 #include <qdatetime.h>
25 #include "ftextstream.h"
29 #include "memberdef.h"
30 #include "classlist.h"
31 #include "membername.h"
33 #include "namespacedef.h"
36 #include "membergroup.h"
45 class SearchIndexIntf;
53 typedef QList<QCString> StringList;
54 typedef QDict<FileDef> FileDict;
55 typedef QDict<GroupDef> GroupDict;
57 class StringDict : public QDict<QCString>
60 StringDict(uint size=17) : QDict<QCString>(size) {}
61 virtual ~StringDict() {}
66 LookupInfo() : classDef(0), typeDef(0) {}
67 LookupInfo(ClassDef *cd,MemberDef *td,QCString ts,QCString rt)
68 : classDef(cd), typeDef(td), templSpec(ts),resolvedType(rt) {}
72 QCString resolvedType;
75 extern QCString g_spaces;
77 /*! \brief This class serves as a namespace for global variables used by doxygen.
79 * All fields in this class are public and static, so they can be used directly.
84 static ClassSDict *classSDict;
85 static ClassSDict *hiddenClasses;
86 static PageSDict *exampleSDict;
87 static PageSDict *pageSDict;
88 static PageDef *mainPage;
89 static bool insideMainPage;
90 static FileNameDict *includeNameDict;
91 static FileNameDict *exampleNameDict;
92 static FileNameDict *inputNameDict;
93 static FileNameList *inputNameList;
94 static FileNameDict *imageNameDict;
95 static FileNameDict *dotFileNameDict;
96 static FileNameDict *mscFileNameDict;
97 static QStrList tagfileList;
98 static MemberNameSDict *memberNameSDict;
99 static MemberNameSDict *functionNameSDict;
100 static FTextStream tagFile;
101 static SectionDict sectionDict;
102 static StringDict namespaceAliasDict;
103 static GroupSDict *groupSDict;
104 static NamespaceSDict *namespaceSDict;
105 static FormulaList formulaList;
106 static FormulaDict formulaDict;
107 static FormulaDict formulaNameDict;
108 static StringDict tagDestinationDict;
109 static StringDict aliasDict;
110 static QIntDict<MemberGroupInfo> memGrpInfoDict;
111 static QDict<void> expandAsDefinedDict;
112 static NamespaceDef *globalScope;
113 static QDict<RefList> *xrefLists; // array of xref lists: todo, test, bug, deprecated ...
114 static QCString htmlFileExtension;
115 static bool parseSourcesNeeded;
116 static QTime runningTime;
117 static SearchIndexIntf *searchIndex;
118 static QDict<DefinitionIntf> *symbolMap;
119 static bool outputToWizard;
120 static QDict<int> *htmlDirMap;
121 static QCache<LookupInfo> *lookupCache;
122 static DirSDict *directories;
123 static SDict<DirRelation> dirRelations;
124 static ParserManager *parserManager;
125 static bool suppressDocWarnings;
126 static ObjCache *symbolCache;
127 static Store *symbolStorage;
128 static QCString objDBFileName;
129 static QCString entryDBFileName;
130 static CiteDict *citeDict;
131 static bool gatherDefines;
132 static bool userComments;
133 static IndexList indexList;
134 static int subpageNestingLevel;
135 static QCString spaces;
136 static bool generatingXmlOutput;
137 static bool markdownSupport;
138 static GenericsSDict genericsDict;
142 void readConfiguration(int argc, char **argv);
143 void checkConfiguration();
144 void adjustConfiguration();
145 void searchInputFiles(StringList &inputFiles);
147 void generateOutput();
149 void readFormulaRepository();
150 int readFileOrDirectory(const char *s,
151 FileNameList *fnList,
152 FileNameDict *fnDict,
153 StringDict *exclDict,
155 QStrList *exclPatList,
156 StringList *resultList,
157 StringDict *resultDict,
159 bool errorIfNotExist=TRUE,
160 QDict<void> *killDict = 0
162 int readDir(QFileInfo *fi,
163 FileNameList *fnList,
164 FileNameDict *fnDict,
165 StringDict *exclDict,
167 QStrList *exclPatList,
168 StringList *resultList,
169 StringDict *resultDict,
170 bool errorIfNotExist,
172 QDict<void> *killDict
174 void copyAndFilterFile(const char *fileName,BufStr &dest);