ISLEman
doxygen.h
1 /******************************************************************************
2  *
3  * Copyright (C) 1997-2015 by Dimitri van Heesch.
4  *
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.
10  *
11  * Documents produced by Doxygen are derivative works derived from the
12  * input used in their production; they are not affected by this license.
13  *
14  */
15 
16 #ifndef DOXYGEN_H
17 #define DOXYGEN_H
18 
19 #include <qdatetime.h>
20 #include <qcache.h>
21 #include <qstrlist.h>
22 #include <qdict.h>
23 #include <qintdict.h>
24 
25 #include "ftextstream.h"
26 #include "sortdict.h"
27 #include "membergroup.h"
28 #include "dirdef.h"
29 #include "memberlist.h"
30 
31 class RefList;
32 class PageSList;
33 class PageSDict;
34 class PageDef;
35 class SearchIndexIntf;
36 class ParserManager;
37 class ObjCache;
38 class Store;
39 class QFileInfo;
40 class BufStr;
41 class CiteDict;
42 class MemberDef;
43 class GroupDef;
44 class GroupSDict;
45 class FileDef;
46 class ClassDef;
47 class ClassSDict;
48 class GenericsSDict;
49 class MemberNameSDict;
50 class FileNameDict;
51 class FileNameList;
52 class NamespaceSDict;
53 class NamespaceDef;
54 class DefinitionIntf;
55 class DirSDict;
56 class DirRelation;
57 class IndexList;
58 class FormulaList;
59 class FormulaDict;
60 class FormulaNameDict;
61 class SectionDict;
62 struct MemberGroupInfo;
63 
66 //typedef QDict<FileDef> FileDict;
67 //typedef QDict<GroupDef> GroupDict;
68 
69 class StringDict : public QDict<QCString>
70 {
71  public:
72  StringDict(uint size=17) : QDict<QCString>(size) {}
73  virtual ~StringDict() {}
74 };
75 
76 struct LookupInfo
77 {
78  LookupInfo() : classDef(0), typeDef(0) {}
80  : classDef(cd), typeDef(td), templSpec(ts),resolvedType(rt) {}
81  ClassDef *classDef;
82  MemberDef *typeDef;
83  QCString templSpec;
84  QCString resolvedType;
85 };
86 
87 extern QCString g_spaces;
88 
93 class Doxygen
94 {
95  public:
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 CiteDict *citeDict;
144  static bool gatherDefines;
145  static bool userComments;
146  static IndexList *indexList;
147  static int subpageNestingLevel;
148  static QCString spaces;
149  static bool generatingXmlOutput;
150  static bool markdownSupport;
151  static GenericsSDict *genericsDict;
152 };
153 
154 void initDoxygen();
155 void readConfiguration(int argc, char **argv);
156 void checkConfiguration();
157 void adjustConfiguration();
158 void searchInputFiles(StringList &inputFiles);
159 void parseInput();
160 void generateOutput();
161 void readAliases();
162 void readFormulaRepository();
163 void cleanUpDoxygen();
164 int readFileOrDirectory(const char *s,
165  FileNameList *fnList,
166  FileNameDict *fnDict,
167  StringDict *exclDict,
168  QStrList *patList,
169  QStrList *exclPatList,
170  StringList *resultList,
171  StringDict *resultDict,
172  bool recursive,
173  bool errorIfNotExist=TRUE,
174  QDict<void> *killDict = 0,
175  QDict<void> *paths = 0
176  );
177 int readDir(QFileInfo *fi,
178  FileNameList *fnList,
179  FileNameDict *fnDict,
180  StringDict *exclDict,
181  QStrList *patList,
182  QStrList *exclPatList,
183  StringList *resultList,
184  StringDict *resultDict,
185  bool errorIfNotExist,
186  bool recursive,
187  QDict<void> *killDict
188  );
189 void copyAndFilterFile(const char *fileName,BufStr &dest);
190 
191 #endif
This class serves as a namespace for global variables used by doxygen.
Definition: doxygen.h:93
Definition: qstrlist.h:57
Definition: doxygen.h:76
Cache for objects.
Definition: objcache.h:33
List of cross-referenced items.
Definition: reflist.h:67
A model of a namespace symbol.
Definition: namespacedef.h:39
A model of a class/file/namespace member symbol.
Definition: memberdef.h:43
Definition: pagedef.h:81
A model of a file symbol.
Definition: filedef.h:64
A usage relation between two directories.
Definition: dirdef.h:151
Definition: classlist.h:76
A sorted dictionary of DirDef objects.
Definition: dirdef.h:173
A sorted dictionary of ClassDef objects.
Definition: classlist.h:56
Data collected for a member group.
Definition: membergroup.h:142
Sorted dictionary of MemberName objects.
Definition: membername.h:46
The QTime class provides clock time functions.
Definition: qdatetime.h:108
Unsorted dictionary of Formula objects.
Definition: formula.h:54
The Store is a file based memory manager.
Definition: store.h:52
A sorted dictionary of GroupDef objects.
Definition: groupdef.h:162
Manages programming language parsers.
Definition: parserintf.h:143
Definition: qlist.h:126
A sorted dictionary of NamespaceDef objects.
Definition: namespacedef.h:173
Buffer used to store strings.
Definition: bufstr.h:30
A model of a page symbol.
Definition: pagedef.h:29
Definition: searchindex.h:69
Cite database access class.
Definition: cite.h:56
Abstract interface for a Definition or DefinitionList.
Definition: definition.h:65
Unsorted dictionary of SectionInfo objects.
Definition: section.h:68
A list of Formula objects.
Definition: formula.h:39
Definition: doxygen.h:69
Class representing a list of FileName objects.
Definition: filename.h:49
The QFileInfo class provides system-independent file information.
Definition: qfileinfo.h:51
Unsorted dictionary of FileName objects.
Definition: filename.h:67
This is an alternative implementation of QCString.
Definition: qcstring.h:131
A model of a group of symbols.
Definition: groupdef.h:45
A class representing of a compound symbol.
Definition: classdef.h:59
A list of index interfaces.
Definition: index.h:53