summaryrefslogtreecommitdiffstats
path: root/src/doxygen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/doxygen.cpp')
-rw-r--r--src/doxygen.cpp883
1 files changed, 453 insertions, 430 deletions
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 1b31b6f..bac4406 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -54,7 +54,7 @@
#include "ftvhelp.h"
#include "defargs.h"
#include "rtfgen.h"
-#include "xml.h"
+//#include "xml.h"
#include "reflist.h"
#include "page.h"
#include "packagedef.h"
@@ -65,140 +65,131 @@
#define pclose _pclose
#endif
-// lists
-ClassList classList; // all documented classes
-NamespaceList namespaceList; // all namespaces
-MemberNameList memberNameList; // class member + related functions
-MemberNameList functionNameList; // all unrelated functions
-FileNameList inputNameList; // all input files
-StringList inputFiles;
-GroupList groupList; // all groups
-FormulaList formulaList; // all formulas
-
-// dictionaries
-PageSDict *pageSDict = new PageSDict(1009); // all doc pages
-PageSDict *exampleSDict = new PageSDict(1009); // all examples
-ClassDict classDict(1009); // all documented classes
-NamespaceDict namespaceDict(257); // all documented namespaces
-MemberNameDict memberNameDict(10007); // all class member names
-MemberNameDict functionNameDict(10007); // all functions
-//StringDict substituteDict(1009); // class name substitutes
-SectionDict sectionDict(257); // all page sections
-StringDict excludeNameDict(1009); // sections
-StringDict aliasDict(257); // aliases
-FileNameDict *inputNameDict; // sections
-FileNameDict *includeNameDict; // include names
-FileNameDict *exampleNameDict; // examples
-FileNameDict *imageNameDict; // images
-StringDict typedefDict(1009); // all typedefs
-StringDict namespaceAliasDict(257); // all namespace aliases
-GroupDict groupDict(257); // all groups
-FormulaDict formulaDict(1009); // all formulas
-FormulaDict formulaNameDict(1009); // the label name of all formulas
-StringDict tagDestinationDict(257); // all tag locations
+ClassList Doxygen::classList; // all documented classes
+ClassDict Doxygen::classDict(1009);
+
+NamespaceList Doxygen::namespaceList; // all namespaces
+NamespaceDict Doxygen::namespaceDict(257);
+
+MemberNameList Doxygen::memberNameList; // class member + related functions
+MemberNameDict Doxygen::memberNameDict(10007);
+
+MemberNameList Doxygen::functionNameList; // all global function/namespace members
+MemberNameDict Doxygen::functionNameDict(10007);
+
+FileNameList Doxygen::inputNameList; // all input files
+FileNameDict *Doxygen::inputNameDict;
+
+GroupList Doxygen::groupList; // all groups
+GroupDict Doxygen::groupDict(257);
+
+FormulaList Doxygen::formulaList; // all formulas
+FormulaDict Doxygen::formulaDict(1009); // all formulas
+FormulaDict Doxygen::formulaNameDict(1009); // the label name of all formulas
+
+PackageSDict Doxygen::packageDict(257); // java packages
+
+PageSDict *Doxygen::pageSDict = new PageSDict(1009); // all doc pages
+PageSDict *Doxygen::exampleSDict = new PageSDict(1009); // all examples
+SectionDict Doxygen::sectionDict(257); // all page sections
+StringDict Doxygen::aliasDict(257); // aliases
+FileNameDict *Doxygen::includeNameDict; // include names
+FileNameDict *Doxygen::exampleNameDict; // examples
+FileNameDict *Doxygen::imageNameDict; // images
+StringDict Doxygen::typedefDict(1009); // all typedefs
+StringDict Doxygen::namespaceAliasDict(257); // all namespace aliases
+StringDict Doxygen::tagDestinationDict(257); // all tag locations
// a member group
-QDict<void> compoundKeywordDict(7); // keywords recognised as compounds
-QDict<void> expandAsDefinedDict(257); // all macros that should be expanded
-OutputList *outputList = 0; // list of output generating objects
+QDict<void> Doxygen::expandAsDefinedDict(257); // all macros that should be expanded
-PageInfo *mainPage = 0;
-QIntDict<QCString> memberHeaderDict(1009); // dictionary of the member groups heading
-QIntDict<QCString> memberDocDict(1009); // dictionary of the member groups heading
+QIntDict<QCString> Doxygen::memberHeaderDict(1009); // dictionary of the member groups heading
+QIntDict<QCString> Doxygen::memberDocDict(1009); // dictionary of the member groups heading
-PackageSDict packageDict(257); // java packages
+PageInfo *Doxygen::mainPage = 0;
+QTextStream Doxygen::tagFile;
+static StringList inputFiles;
+static StringDict excludeNameDict(1009); // sections
+static QDict<void> compoundKeywordDict(7); // keywords recognised as compounds
+static OutputList *outputList = 0; // list of output generating objects
void clearAll()
{
- classList.clear();
- namespaceList.clear();
- pageSDict->clear();
- exampleSDict->clear();
- memberNameList.clear();
- functionNameList.clear();
- inputNameList.clear();
inputFiles.clear();
- groupList.clear();
- formulaList.clear();
- classDict.clear();
- namespaceDict.clear();
- memberNameDict.clear();
- functionNameDict.clear();
- sectionDict.clear();
- inputNameDict->clear();
excludeNameDict.clear();
- includeNameDict->clear();
- exampleNameDict->clear();
- imageNameDict->clear();
- typedefDict.clear();
- groupDict.clear();
- formulaDict.clear();
- formulaNameDict.clear();
- tagDestinationDict.clear();
delete outputList; outputList=0;
- delete mainPage; mainPage=0;
+
+ Doxygen::classList.clear();
+ Doxygen::namespaceList.clear();
+ Doxygen::pageSDict->clear();
+ Doxygen::exampleSDict->clear();
+ Doxygen::memberNameList.clear();
+ Doxygen::functionNameList.clear();
+ Doxygen::inputNameList.clear();
+ Doxygen::groupList.clear();
+ Doxygen::formulaList.clear();
+ Doxygen::classDict.clear();
+ Doxygen::namespaceDict.clear();
+ Doxygen::memberNameDict.clear();
+ Doxygen::functionNameDict.clear();
+ Doxygen::sectionDict.clear();
+ Doxygen::inputNameDict->clear();
+ Doxygen::includeNameDict->clear();
+ Doxygen::exampleNameDict->clear();
+ Doxygen::imageNameDict->clear();
+ Doxygen::typedefDict.clear();
+ Doxygen::groupDict.clear();
+ Doxygen::formulaDict.clear();
+ Doxygen::formulaNameDict.clear();
+ Doxygen::tagDestinationDict.clear();
+ delete Doxygen::mainPage; Doxygen::mainPage=0;
}
void statistics()
{
fprintf(stderr,"--- inputNameDict stats ----\n");
- inputNameDict->statistics();
+ Doxygen::inputNameDict->statistics();
fprintf(stderr,"--- includeNameDict stats ----\n");
- includeNameDict->statistics();
+ Doxygen::includeNameDict->statistics();
fprintf(stderr,"--- exampleNameDict stats ----\n");
- exampleNameDict->statistics();
+ Doxygen::exampleNameDict->statistics();
fprintf(stderr,"--- imageNameDict stats ----\n");
- imageNameDict->statistics();
+ Doxygen::imageNameDict->statistics();
fprintf(stderr,"--- classDict stats ----\n");
- classDict.statistics();
+ Doxygen::classDict.statistics();
fprintf(stderr,"--- namespaceDict stats ----\n");
- namespaceDict.statistics();
+ Doxygen::namespaceDict.statistics();
fprintf(stderr,"--- memberNameDict stats ----\n");
- memberNameDict.statistics();
+ Doxygen::memberNameDict.statistics();
fprintf(stderr,"--- functionNameDict stats ----\n");
- functionNameDict.statistics();
- fprintf(stderr,"--- sectionDict stats ----\n");
- sectionDict.statistics();
+ Doxygen::functionNameDict.statistics();
fprintf(stderr,"--- excludeNameDict stats ----\n");
excludeNameDict.statistics();
fprintf(stderr,"--- aliasDict stats ----\n");
- aliasDict.statistics();
+ Doxygen::aliasDict.statistics();
fprintf(stderr,"--- typedefDict stats ----\n");
- typedefDict.statistics();
+ Doxygen::typedefDict.statistics();
fprintf(stderr,"--- namespaceAliasDict stats ----\n");
- namespaceAliasDict.statistics();
+ Doxygen::namespaceAliasDict.statistics();
fprintf(stderr,"--- groupDict stats ----\n");
- groupDict.statistics();
+ Doxygen::groupDict.statistics();
fprintf(stderr,"--- formulaDict stats ----\n");
- formulaDict.statistics();
+ Doxygen::formulaDict.statistics();
fprintf(stderr,"--- formulaNameDict stats ----\n");
- formulaNameDict.statistics();
+ Doxygen::formulaNameDict.statistics();
fprintf(stderr,"--- tagDestinationDict stats ----\n");
- tagDestinationDict.statistics();
+ Doxygen::tagDestinationDict.statistics();
fprintf(stderr,"--- compoundKeywordDict stats ----\n");
compoundKeywordDict.statistics();
fprintf(stderr,"--- expandAsDefinedDict stats ----\n");
- expandAsDefinedDict.statistics();
+ Doxygen::expandAsDefinedDict.statistics();
fprintf(stderr,"--- memberHeaderDict stats ----\n");
- memberHeaderDict.statistics();
+ Doxygen::memberHeaderDict.statistics();
fprintf(stderr,"--- memberDocDict stats ----\n");
- memberDocDict.statistics();
+ Doxygen::memberDocDict.statistics();
}
-int annotatedClasses;
-int hierarchyClasses;
-int documentedFunctions;
-int documentedMembers;
-int documentedHtmlFiles;
-int documentedFiles;
-int documentedGroups;
-int documentedNamespaces;
-int documentedNamespaceMembers;
-int documentedIncludeFiles;
-int documentedPages;
-int documentedPackages;
-
-QTextStream tagFile;
+
static void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
ArgumentList *al,bool over_load,NamespaceList *nl=0);
@@ -206,27 +197,17 @@ static void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
const char idMask[] = "[A-Za-z_][A-Za-z_0-9]*";
QCString spaces;
-//----------------------------------------------------------------------
-// Returns the standard string that is generated when the \overload
-// command is used.
-
-const char *getOverloadDocs()
-{
- return "This is an overloaded member function, "
- "provided for convenience. It differs from the above "
- "function only in what argument(s) it accepts.";
-}
-
//----------------------------------------------------------------------------
static void addRelatedPage(const char *name,const QCString &ptitle,
const QCString &doc,QList<QCString> *anchors,
const char *fileName,int startLine,
- int todoId,int testId,GroupDef *gd=0
+ int todoId,int testId,GroupDef *gd=0,
+ TagInfo *tagInfo=0
)
{
PageInfo *pi=0;
- if ((pi=pageSDict->find(name)))
+ if ((pi=Doxygen::pageSDict->find(name)))
{
// append documentation block to the page.
pi->doc+="\n\n"+doc;
@@ -238,19 +219,26 @@ static void addRelatedPage(const char *name,const QCString &ptitle,
baseName=baseName.left(baseName.length()-4);
else if (baseName.right(5)==".html")
baseName=baseName.left(baseName.length()-5);
-
+
QCString title=ptitle.stripWhiteSpace();
pi=new PageInfo(fileName,startLine,baseName,doc,title);
pi->todoId=todoId;
pi->testId=testId;
+ if (tagInfo)
+ {
+ pi->reference = tagInfo->tagName;
+ }
+
QCString pageName;
if (Config::caseSensitiveNames)
pageName=pi->name.copy();
else
pageName=pi->name.lower();
- setFileNameForSections(anchors,pageName);
+ //setFileNameForSections(anchors,pageName,pi);
+ pi->fileName = pageName;
+ pi->addSections(anchors);
- pageSDict->append(baseName,pi);
+ Doxygen::pageSDict->append(baseName,pi);
if (gd) gd->addPage(pi);
@@ -260,7 +248,7 @@ static void addRelatedPage(const char *name,const QCString &ptitle,
// a page name is a label as well!
SectionInfo *si=new SectionInfo(
- pi->name,pi->title,SectionInfo::Section);
+ pi->name,pi->title,SectionInfo::Section,pi->reference);
if (gd)
{
si->fileName=gd->getOutputFileBase();
@@ -271,7 +259,7 @@ static void addRelatedPage(const char *name,const QCString &ptitle,
}
//printf(" SectionInfo: sec=%p sec->fileName=%s\n",si,si->fileName.data());
//printf("Adding section info %s\n",pi->name.data());
- sectionDict.insert(pageName,si);
+ Doxygen::sectionDict.insert(pageName,si);
}
}
}
@@ -283,10 +271,10 @@ static void addRelatedPage(Entry *root)
QCString *s;
for (;(s=sli.current());++sli)
{
- if (!s->isEmpty() && (gd=groupDict[*s])) break;
+ if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) break;
}
addRelatedPage(root->name,root->args,root->doc,root->anchors,
- root->fileName,root->startLine,root->todoId,root->testId,gd
+ root->fileName,root->startLine,root->todoId,root->testId,gd,root->tagInfo
);
}
@@ -322,6 +310,7 @@ static void addRefItem(int todoId,int testId,const char *prefix,
doc += "</dt>\n<dd>";
doc += item->text;
doc += "</dd></dl>\n";
+ //printf("Todo page: %s\n",doc.data());
addRelatedPage("todo",theTranslator->trTodoList(),doc,0,"generated",1,0,0);
item->written=TRUE;
@@ -368,7 +357,7 @@ static void buildGroupList(Entry *root)
GroupDef *gd;
- if ((gd=groupDict[root->name]))
+ if ((gd=Doxygen::groupDict[root->name]))
{
warn(root->fileName,root->startLine,
"Warning: group %s already documented. "
@@ -385,8 +374,8 @@ static void buildGroupList(Entry *root)
gd->setBriefDescription(root->brief);
gd->setDocumentation(root->doc);
gd->addSectionsToDefinition(root->anchors);
- groupList.append(gd);
- groupDict.insert(root->name,gd);
+ Doxygen::groupList.append(gd);
+ Doxygen::groupDict.insert(root->name,gd);
addGroupToGroups(root,gd);
gd->setRefItems(root->todoId,root->testId);
}
@@ -401,37 +390,6 @@ static void buildGroupList(Entry *root)
//----------------------------------------------------------------------
-//void computeGroupRelations(Entry *root)
-//{
-// if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty())
-// {
-// GroupDef *gd;
-//
-// if ((gd=groupDict[root->name]))
-// {
-// QListIterator<QCString> sli(*root->groups);
-// QCString *s;
-// for (;(s=sli.current());++sli)
-// {
-// GroupDef *pgd;
-// if (!s->isEmpty() && (pgd=groupDict[*s]))
-// {
-// pgd->addGroup(gd);
-// printf("Group %s: in group %s\n",gd->groupName(),s->data());
-// }
-// }
-// }
-// }
-// EntryListIterator eli(*root->sublist);
-// Entry *e;
-// for (;(e=eli.current());++eli)
-// {
-// computeGroupRelations(e);
-// }
-//}
-
-//----------------------------------------------------------------------
-
static void buildFileList(Entry *root)
{
if (((root->section==Entry::FILEDOC_SEC) ||
@@ -440,7 +398,7 @@ static void buildFileList(Entry *root)
)
{
bool ambig;
- FileDef *fd=findFileDef(inputNameDict,root->name,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->name,ambig);
if (fd && !ambig)
{
if ((!root->doc.isEmpty() && !fd->documentation().isEmpty()) ||
@@ -467,7 +425,7 @@ static void buildFileList(Entry *root)
for (;(s=sli.current());++sli)
{
GroupDef *gd=0;
- if (!s->isEmpty() && (gd=groupDict[*s]))
+ if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
{
gd->addFile(fd);
//printf("File %s: in group %s\n",fd->name().data(),s->data());
@@ -486,7 +444,7 @@ static void buildFileList(Entry *root)
if (ambig) // name is ambigious
{
text+="matches the following input files:\n";
- text+=showFileDefMatches(inputNameDict,root->name);
+ text+=showFileDefMatches(Doxygen::inputNameDict,root->name);
text+="Please use a more specific name by "
"including a (larger) part of the path!";
}
@@ -521,7 +479,7 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
// see if we need to include a verbatim copy of the header file
//printf("root->includeFile=%s\n",root->includeFile.data());
if (!root->includeFile.isEmpty() &&
- (fd=findFileDef(inputNameDict,root->includeFile,ambig))==0
+ (fd=findFileDef(Doxygen::inputNameDict,root->includeFile,ambig))==0
)
{ // explicit request
QCString text;
@@ -532,7 +490,7 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
if (ambig) // name is ambigious
{
text+="matches the following input files:\n";
- text+=showFileDefMatches(inputNameDict,root->includeFile);
+ text+=showFileDefMatches(Doxygen::inputNameDict,root->includeFile);
text+="Please use a more specific name by "
"including a (larger) part of the path!";
}
@@ -635,7 +593,7 @@ static void buildClassList(Entry *root)
bool ambig;
ClassDef *cd;
//printf("findFileDef(%s)\n",root->fileName.data());
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
if ((cd=getClass(fullName)))
{
@@ -679,7 +637,7 @@ static void buildClassList(Entry *root)
if (root->bodyLine!=-1 && cd->getStartBodyLine()==-1)
{
cd->setBodySegment(root->bodyLine,root->endBodyLine);
- cd->setBodyDef(findFileDef(inputNameDict,root->fileName,ambig));
+ cd->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig));
}
cd->addSectionsToDefinition(root->anchors);
cd->setName(fullName); // change name to match docs
@@ -790,10 +748,10 @@ static void buildClassList(Entry *root)
// add class to the list
- classList.inSort(cd);
+ Doxygen::classList.inSort(cd);
//printf("ClassDict.insert(%s)\n",resolveDefines(fullName).data());
//classDict.insert(resolveDefines(fullName),cd);
- classDict.insert(fullName,cd);
+ Doxygen::classDict.insert(fullName,cd);
}
}
}
@@ -822,7 +780,7 @@ static void buildNamespaceList(Entry *root)
//printf("Found namespace %s in %s at line %d\n",root->name.data(),
// root->fileName.data(), root->startLine);
NamespaceDef *nd;
- if ((nd=namespaceDict[fullName]))
+ if ((nd=Doxygen::namespaceDict[fullName]))
{
if (!root->doc.isEmpty() || !root->brief.isEmpty()) // block contains docs
{
@@ -857,7 +815,7 @@ static void buildNamespaceList(Entry *root)
bool ambig;
// file definition containing the namespace nd
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
// insert the namespace in the file definition
if (fd) fd->insertNamespace(nd);
addNamespaceToGroups(root,nd);
@@ -885,7 +843,7 @@ static void buildNamespaceList(Entry *root)
bool ambig;
// file definition containing the namespace nd
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
// insert the namespace in the file definition
if (fd) fd->insertNamespace(nd);
@@ -895,8 +853,8 @@ static void buildNamespaceList(Entry *root)
nd->setBodySegment(root->bodyLine,root->endBodyLine);
nd->setBodyDef(fd);
// add class to the list
- namespaceList.inSort(nd);
- namespaceDict.insert(fullName,nd);
+ Doxygen::namespaceList.inSort(nd);
+ Doxygen::namespaceDict.insert(fullName,nd);
}
}
@@ -922,7 +880,7 @@ static void findUsingDirectives(Entry *root)
{
NamespaceDef *usingNd = 0;
NamespaceDef *nd = 0;
- FileDef *fd = findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd = findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
QCString nsName;
// see if the using statement was found inside a namespace or inside
@@ -986,13 +944,13 @@ static void findUsingDirectives(Entry *root)
for (;(s=sli.current());++sli)
{
GroupDef *gd=0;
- if (!s->isEmpty() && (gd=groupDict[*s]))
+ if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
gd->addNamespace(nd);
}
bool ambig;
// file definition containing the namespace nd
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
// insert the namespace in the file definition
if (fd)
{
@@ -1004,8 +962,8 @@ static void findUsingDirectives(Entry *root)
nd->setBriefDescription(root->brief);
nd->insertUsedFile(root->fileName);
// add class to the list
- namespaceList.inSort(nd);
- namespaceDict.insert(root->name,nd);
+ Doxygen::namespaceList.inSort(nd);
+ Doxygen::namespaceDict.insert(root->name,nd);
nd->setRefItems(root->todoId,root->testId);
}
}
@@ -1031,7 +989,7 @@ static void findUsingDeclarations(Entry *root)
{
ClassDef *usingCd = 0;
NamespaceDef *nd = 0;
- FileDef *fd = findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd = findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
QCString scName;
// see if the using statement was found inside a namespace or inside
@@ -1160,7 +1118,7 @@ static MemberDef *addVariableToClass(
// see if the member is already found in the same scope
// (this may be the case for a static member that is initialized
// outside the class)
- MemberName *mn=memberNameDict[name];
+ MemberName *mn=Doxygen::memberNameDict[name];
if (mn)
{
MemberNameIterator mni(*mn);
@@ -1207,7 +1165,7 @@ static MemberDef *addVariableToClass(
// md->setMemberGroup(memberGroupDict[root->mGrpId]);
//
bool ambig;
- md->setBodyDef(findFileDef(inputNameDict,root->fileName,ambig));
+ md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig));
// add the member to the global list
if (mn)
@@ -1219,8 +1177,8 @@ static MemberDef *addVariableToClass(
mn = new MemberName(name);
mn->append(md);
//printf("Adding memberName=%s\n",mn->memberName());
- memberNameDict.insert(name,mn);
- memberNameList.append(mn);
+ Doxygen::memberNameDict.insert(name,mn);
+ Doxygen::memberNameList.append(mn);
// add the member to the class
}
cd->insertMember(md);
@@ -1253,7 +1211,7 @@ static MemberDef *addVariableToFile(
);
bool ambig;
- FileDef *fd = findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd = findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
// see if the function is inside a namespace
NamespaceDef *nd = 0;
@@ -1297,7 +1255,7 @@ static MemberDef *addVariableToFile(
}
if (def.left(7)=="static ") def=def.right(def.length()-7);
- MemberName *mn=functionNameDict[name];
+ MemberName *mn=Doxygen::functionNameDict[name];
if (mn)
{
QCString nscope=removeAnonymousScopes(scope);
@@ -1325,7 +1283,7 @@ static MemberDef *addVariableToFile(
// merge ingroup specifiers
if (md->getGroupDef()==0 && root->groups->first())
{
- GroupDef *gd=groupDict[root->groups->first()->data()];
+ GroupDef *gd=Doxygen::groupDict[root->groups->first()->data()];
md->setGroupDef(gd);
}
else if (md->getGroupDef()!=0 && root->groups->count()==0)
@@ -1391,8 +1349,8 @@ static MemberDef *addVariableToFile(
{
mn = new MemberName(name);
mn->append(md);
- functionNameDict.insert(name,mn);
- functionNameList.append(mn);
+ Doxygen::functionNameDict.insert(name,mn);
+ Doxygen::functionNameList.append(mn);
}
return md;
}
@@ -1699,7 +1657,7 @@ static void buildMemberList(Entry *root)
md->setMemberSpecifiers(root->memSpec);
md->setMemberGroupId(root->mGrpId);
bool ambig;
- md->setBodyDef(findFileDef(inputNameDict,root->fileName,ambig));
+ md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig));
//md->setScopeTemplateArguments(root->tArgList);
md->addSectionsToDefinition(root->anchors);
QCString def;
@@ -1770,7 +1728,7 @@ static void buildMemberList(Entry *root)
// add member to the global list of all members
MemberName *mn;
- if ((mn=memberNameDict[name]))
+ if ((mn=Doxygen::memberNameDict[name]))
{
mn->append(md);
}
@@ -1779,8 +1737,8 @@ static void buildMemberList(Entry *root)
mn = new MemberName(name);
mn->append(md);
//printf("Adding memberName=%s\n",mn->memberName());
- memberNameDict.insert(name,mn);
- memberNameList.append(mn);
+ Doxygen::memberNameDict.insert(name,mn);
+ Doxygen::memberNameList.append(mn);
}
// add member to the class cd
@@ -1806,7 +1764,7 @@ static void buildMemberList(Entry *root)
bool found=FALSE;
MemberName *mn;
//MemberDef *fmd;
- if ((mn=functionNameDict[rname]))
+ if ((mn=Doxygen::functionNameDict[rname]))
{
//printf("--> function %s already found!\n",rname.data());
MemberNameIterator mni(*mn);
@@ -1854,14 +1812,14 @@ static void buildMemberList(Entry *root)
{
md->setBodySegment(root->bodyLine,root->endBodyLine);
bool ambig;
- md->setBodyDef(findFileDef(inputNameDict,root->fileName,ambig));
+ md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig));
}
md->addSectionsToDefinition(root->anchors);
// merge ingroup specifiers
if (md->getGroupDef()==0 && root->groups->first())
{
- GroupDef *gd=groupDict[root->groups->first()->data()];
+ GroupDef *gd=Doxygen::groupDict[root->groups->first()->data()];
md->setGroupDef(gd);
}
else if (md->getGroupDef()!=0 && root->groups->count()==0)
@@ -1896,7 +1854,7 @@ static void buildMemberList(Entry *root)
//md->setBody(root->body);
md->setBodySegment(root->bodyLine,root->endBodyLine);
bool ambig;
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
md->setBodyDef(fd);
md->addSectionsToDefinition(root->anchors);
md->setMemberSpecifiers(root->memSpec);
@@ -1969,7 +1927,7 @@ static void buildMemberList(Entry *root)
// add member to the list of file members
MemberName *mn;
- if ((mn=functionNameDict[name]))
+ if ((mn=Doxygen::functionNameDict[name]))
{
mn->append(md);
}
@@ -1977,8 +1935,8 @@ static void buildMemberList(Entry *root)
{
mn = new MemberName(name);
mn->append(md);
- functionNameDict.insert(name,mn);
- functionNameList.append(mn);
+ Doxygen::functionNameDict.insert(name,mn);
+ Doxygen::functionNameList.append(mn);
}
addMemberToGroups(root,md);
}
@@ -2011,13 +1969,13 @@ static void buildMemberList(Entry *root)
static void findFriends()
{
//printf("findFriends()\n");
- MemberNameListIterator fnli(functionNameList);
+ MemberNameListIterator fnli(Doxygen::functionNameList);
MemberName *fn;
for (;(fn=fnli.current());++fnli) // for each global function name
{
//printf("Function name=`%s'\n",fn->memberName());
MemberName *mn;
- if ((mn=memberNameDict[fn->memberName()]))
+ if ((mn=Doxygen::memberNameDict[fn->memberName()]))
{ // there are members with the same name
//printf("Function name is also a member name\n");
MemberNameIterator fni(*fn);
@@ -2074,7 +2032,7 @@ static void transferFunctionDocumentation()
//printf("transferFunctionDocumentation()\n");
// find matching function declaration and definitions.
- MemberNameListIterator mnli(functionNameList);
+ MemberNameListIterator mnli(Doxygen::functionNameList);
MemberName *mn;
for (;(mn=mnli.current());++mnli)
{
@@ -2153,7 +2111,7 @@ static void transferRelatedFunctionDocumentation()
{
// find match between function declaration and definition for
// related functions
- MemberNameListIterator mnli(functionNameList);
+ MemberNameListIterator mnli(Doxygen::functionNameList);
MemberName *mn;
for (mnli.toFirst();(mn=mnli.current());++mnli)
{
@@ -2164,7 +2122,7 @@ static void transferRelatedFunctionDocumentation()
{
//printf(" Function `%s'\n",md->name().data());
MemberName *rmn;
- if ((rmn=memberNameDict[md->name()])) // check if there is a member with the same name
+ if ((rmn=Doxygen::memberNameDict[md->name()])) // check if there is a member with the same name
{
//printf(" Member name found\n");
MemberDef *rmd;
@@ -2191,7 +2149,7 @@ static void replaceNamespaceAliases(QCString &scope,int i)
//printf("replaceNamespaceAliases(%s,%d)\n",scope.data(),i);
while (i>0)
{
- QCString *s = namespaceAliasDict[scope.left(i)];
+ QCString *s = Doxygen::namespaceAliasDict[scope.left(i)];
if (s)
{
scope=*s+scope.right(scope.length()-i);
@@ -2396,10 +2354,10 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
baseClass->insertUsedFile(root->fileName);
// add class to the list
//classList.inSort(baseClass);
- classList.inSort(baseClass);
+ Doxygen::classList.inSort(baseClass);
//printf("ClassDict.insert(%s)\n",resolveDefines(fullName).data());
//classDict.insert(resolveDefines(bi->name),baseClass);
- classDict.insert(baseClassName,baseClass);
+ Doxygen::classDict.insert(baseClassName,baseClass);
return TRUE;
}
else
@@ -2503,13 +2461,13 @@ static void computeClassRelations(Entry *root)
static void computeMemberReferences()
{
- ClassDef *cd=classList.first();
+ ClassDef *cd=Doxygen::classList.first();
while (cd)
{
cd->computeAnchors();
- cd=classList.next();
+ cd=Doxygen::classList.next();
}
- FileName *fn=inputNameList.first();
+ FileName *fn=Doxygen::inputNameList.first();
while (fn)
{
FileDef *fd=fn->first();
@@ -2518,19 +2476,19 @@ static void computeMemberReferences()
fd->computeAnchors();
fd=fn->next();
}
- fn=inputNameList.next();
+ fn=Doxygen::inputNameList.next();
}
- NamespaceDef *nd=namespaceList.first();
+ NamespaceDef *nd=Doxygen::namespaceList.first();
while (nd)
{
nd->computeAnchors();
- nd=namespaceList.next();
+ nd=Doxygen::namespaceList.next();
}
- GroupDef *gd=groupList.first();
+ GroupDef *gd=Doxygen::groupList.first();
while (gd)
{
gd->computeAnchors();
- gd=groupList.next();
+ gd=Doxygen::groupList.next();
}
}
@@ -2538,13 +2496,13 @@ static void computeMemberReferences()
static void addTodoTestReferences()
{
- ClassDef *cd=classList.first();
+ ClassDef *cd=Doxygen::classList.first();
while (cd)
{
addRefItem(cd->todoId(),cd->testId(),"class",cd->getOutputFileBase(),cd->name());
- cd=classList.next();
+ cd=Doxygen::classList.next();
}
- FileName *fn=inputNameList.first();
+ FileName *fn=Doxygen::inputNameList.first();
while (fn)
{
FileDef *fd=fn->first();
@@ -2553,27 +2511,27 @@ static void addTodoTestReferences()
addRefItem(fd->todoId(),fd->testId(),"file",fd->getOutputFileBase(),fd->name());
fd=fn->next();
}
- fn=inputNameList.next();
+ fn=Doxygen::inputNameList.next();
}
- NamespaceDef *nd=namespaceList.first();
+ NamespaceDef *nd=Doxygen::namespaceList.first();
while (nd)
{
addRefItem(nd->todoId(),nd->testId(),"namespace",nd->getOutputFileBase(),nd->name());
- nd=namespaceList.next();
+ nd=Doxygen::namespaceList.next();
}
- GroupDef *gd=groupList.first();
+ GroupDef *gd=Doxygen::groupList.first();
while (gd)
{
addRefItem(gd->todoId(),gd->testId(),"group",gd->getOutputFileBase(),gd->name());
- gd=groupList.next();
+ gd=Doxygen::groupList.next();
}
- PageSDictIterator pdi(*pageSDict);
+ PageSDictIterator pdi(*Doxygen::pageSDict);
PageInfo *pi=0;
for (pdi.toFirst();(pi=pdi.current());++pdi)
{
addRefItem(pi->todoId,pi->testId,"page",pi->name,pi->title);
}
- MemberNameListIterator mnli(memberNameList);
+ MemberNameListIterator mnli(Doxygen::memberNameList);
MemberName *mn=0;
for (mnli.toFirst();(mn=mnli.current());++mnli)
{
@@ -2592,7 +2550,7 @@ static void addTodoTestReferences()
}
}
}
- MemberNameListIterator fnli(functionNameList);
+ MemberNameListIterator fnli(Doxygen::functionNameList);
for (fnli.toFirst();(mn=fnli.current());++fnli)
{
MemberNameIterator mni(*mn);
@@ -2706,7 +2664,7 @@ static void addMemberDocs(Entry *root,
// md->setBody(root->body);
//}
bool ambig;
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
if (fd)
{
@@ -2854,10 +2812,10 @@ static bool findUnrelatedFunction(Entry *root,
Debug::print(Debug::FindMembers,0,
"2. findUnrelatedFunction(namespace=%s,name=%s,tempArg=%s,decl=%s)\n",
namespaceName.data(),name,tempArg,decl);
- MemberName *mn=functionNameDict[n+tempArg]; // look in function dictionary
+ MemberName *mn=Doxygen::functionNameDict[n+tempArg]; // look in function dictionary
if (mn==0)
{
- mn=functionNameDict[n]; // try without template arguments
+ mn=Doxygen::functionNameDict[n]; // try without template arguments
}
if (mn) // function name defined
{
@@ -2872,7 +2830,7 @@ static bool findUnrelatedFunction(Entry *root,
NamespaceDef *nd=md->getNamespaceDef();
//printf("Namespace namespaceName=%s nd=%s\n",
// namespaceName.data(),nd ? nd->name().data() : "<none>");
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
//printf("File %s\n",fd ? fd->name().data() : "<none>");
NamespaceList *nl = fd ? fd->getUsedNamespaces() : 0;
//printf("NamespaceList %p\n",nl);
@@ -3355,11 +3313,11 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
"1. funcName=`%s'\n",funcName.data());
if (!funcTempList.isEmpty()) // try with member specialization
{
- mn=memberNameDict[funcName+funcTempList];
+ mn=Doxygen::memberNameDict[funcName+funcTempList];
}
if (mn==0) // try without specialization
{
- mn=memberNameDict[funcName];
+ mn=Doxygen::memberNameDict[funcName];
}
if (!isRelated && mn) // function name already found
{
@@ -3379,7 +3337,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
ClassDef *tcd=0;
bool ambig;
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
NamespaceDef *nd=0;
if (!namespaceName.isEmpty()) nd=getResolvedNamespace(namespaceName);
tcd = findClassDefinition(fd,nd,scopeName,classTempList);
@@ -3463,7 +3421,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
// TODO: match loop for all possible scopes
bool ambig;
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
// list of namespaces using in the file that this member definition is part of
NamespaceList *nl = fd ? fd->getUsedNamespaces() : 0;
@@ -3580,7 +3538,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
md->addSectionsToDefinition(root->anchors);
md->setBodySegment(root->bodyLine,root->endBodyLine);
bool ambig;
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
md->setBodyDef(fd);
md->setMemberSpecifiers(root->memSpec);
md->setMemberGroupId(root->mGrpId);
@@ -3609,7 +3567,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
{
bool newMember=TRUE; // assume we have a new member
bool newMemberName=FALSE;
- if ((mn=memberNameDict[funcName])==0)
+ if ((mn=Doxygen::memberNameDict[funcName])==0)
{
mn=new MemberName(funcName);
newMemberName=TRUE; // we create a new member name
@@ -3662,7 +3620,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
bool found=FALSE;
if (root->bodyLine==-1)
{
- MemberName *rmn=functionNameDict[funcName];
+ MemberName *rmn=Doxygen::functionNameDict[funcName];
if (rmn)
{
MemberDef *rmd=rmn->first();
@@ -3691,7 +3649,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
{
md->setBodySegment(root->bodyLine,root->endBodyLine);
bool ambig;
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
md->setBodyDef(fd);
}
@@ -3715,8 +3673,8 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
if (newMemberName)
{
//printf("Adding memberName=%s\n",mn->memberName());
- memberNameList.append(mn);
- memberNameDict.insert(funcName,mn);
+ Doxygen::memberNameList.append(mn);
+ Doxygen::memberNameDict.insert(funcName,mn);
}
}
}
@@ -3896,22 +3854,22 @@ static void findEnums(Entry *root)
{
//printf("Enum `%s'::`%s'\n",cd->name(),name.data());
fd=0;
- mnd=&memberNameDict;
- mnl=&memberNameList;
+ mnd=&Doxygen::memberNameDict;
+ mnl=&Doxygen::memberNameList;
isGlobal=FALSE;
}
else if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@') // found enum inside namespace
{
- mnd=&functionNameDict;
- mnl=&functionNameList;
+ mnd=&Doxygen::functionNameDict;
+ mnl=&Doxygen::functionNameList;
isGlobal=TRUE;
}
else // found a global enum
{
bool ambig;
- fd=findFileDef(inputNameDict,root->fileName,ambig);
- mnd=&functionNameDict;
- mnl=&functionNameList;
+ fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
+ mnd=&Doxygen::functionNameDict;
+ mnl=&Doxygen::functionNameList;
isGlobal=TRUE;
}
if (!name.isEmpty())
@@ -3931,7 +3889,7 @@ static void findEnums(Entry *root)
//md->setDefLine(root->startLine);
md->setBodySegment(root->bodyLine,root->endBodyLine);
bool ambig;
- md->setBodyDef(findFileDef(inputNameDict,root->fileName,ambig));
+ md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig));
//printf("Enum %s definition at line %d of %s: protection=%d\n",
// root->name.data(),root->bodyLine,root->fileName.data(),root->protection);
md->addSectionsToDefinition(root->anchors);
@@ -3961,7 +3919,7 @@ static void findEnums(Entry *root)
{
bool ambig;
QCString filePathName = root->parent->fileName;
- fd=findFileDef(inputNameDict,filePathName,ambig);
+ fd=findFileDef(Doxygen::inputNameDict,filePathName,ambig);
}
if (fd)
{
@@ -4098,7 +4056,7 @@ static void findEnumDocumentation(Entry *root)
{
//printf("Enum: scope=`%s' name=`%s'\n",cd->name(),name.data());
QCString className=cd->name().copy();
- MemberName *mn=memberNameDict[name];
+ MemberName *mn=Doxygen::memberNameDict[name];
if (mn)
{
MemberNameIterator mni(*mn);
@@ -4139,7 +4097,7 @@ static void findEnumDocumentation(Entry *root)
else // enum outside class
{
MemberDef *md;
- MemberName *mn=functionNameDict[name];
+ MemberName *mn=Doxygen::functionNameDict[name];
if (mn && (md=mn->getFirst()))
{
md->setDocumentation(root->doc);
@@ -4205,8 +4163,8 @@ static void findDEV(const MemberNameList &mnl)
// values.
static void findDocumentedEnumValues()
{
- findDEV(memberNameList);
- findDEV(functionNameList);
+ findDEV(Doxygen::memberNameList);
+ findDEV(Doxygen::functionNameList);
}
@@ -4217,7 +4175,7 @@ static void findDocumentedEnumValues()
static void computeMemberRelations()
{
- MemberNameListIterator mnli(memberNameList);
+ MemberNameListIterator mnli(Doxygen::memberNameList);
MemberName *mn;
for ( ; (mn=mnli.current()) ; ++mnli ) // for each member name
{
@@ -4270,7 +4228,7 @@ static void computeMemberRelations()
static void computeClassImplUsageRelations()
{
ClassDef *cd;
- ClassListIterator cli(classList);
+ ClassListIterator cli(Doxygen::classList);
for (;(cd=cli.current());++cli)
{
cd->determineImplUsageRelation();
@@ -4285,7 +4243,7 @@ static void buildCompleteMemberLists()
{
ClassDef *cd;
// merge the member list of base classes into the inherited classes.
- ClassListIterator cli(classList);
+ ClassListIterator cli(Doxygen::classList);
for (cli.toFirst();(cd=cli.current());++cli)
{
if (!cd->isReference() && // not an external class
@@ -4308,9 +4266,9 @@ static void generateFileSources()
{
if (documentedHtmlFiles==0) return;
- if (inputNameList.count()>0)
+ if (Doxygen::inputNameList.count()>0)
{
- FileNameListIterator fnli(inputNameList);
+ FileNameListIterator fnli(Doxygen::inputNameList);
FileName *fn;
for (;(fn=fnli.current());++fnli)
{
@@ -4334,9 +4292,9 @@ static void generateFileDocs()
{
if (documentedHtmlFiles==0) return;
- if (inputNameList.count()>0)
+ if (Doxygen::inputNameList.count()>0)
{
- FileNameListIterator fnli(inputNameList);
+ FileNameListIterator fnli(Doxygen::inputNameList);
FileName *fn;
for (fnli.toFirst();(fn=fnli.current());++fnli)
{
@@ -4361,7 +4319,7 @@ static void generateFileDocs()
static void addSourceReferences()
{
// add source references for class definitions
- ClassListIterator cli(classList);
+ ClassListIterator cli(Doxygen::classList);
ClassDef *cd=0;
for (cli.toFirst();(cd=cli.current());++cli)
{
@@ -4372,7 +4330,7 @@ static void addSourceReferences()
}
}
// add source references for namespace definitions
- NamespaceListIterator nli(namespaceList);
+ NamespaceListIterator nli(Doxygen::namespaceList);
NamespaceDef *nd=0;
for (nli.toFirst();(nd=nli.current());++nli)
{
@@ -4384,7 +4342,7 @@ static void addSourceReferences()
}
// add source references for member names
- MemberNameListIterator mnli(memberNameList);
+ MemberNameListIterator mnli(Doxygen::memberNameList);
MemberName *mn=0;
for (mnli.toFirst();(mn=mnli.current());++mnli)
{
@@ -4404,7 +4362,7 @@ static void addSourceReferences()
}
}
}
- MemberNameListIterator fnli(functionNameList);
+ MemberNameListIterator fnli(Doxygen::functionNameList);
for (fnli.toFirst();(mn=fnli.current());++fnli)
{
MemberNameIterator mni(*mn);
@@ -4456,12 +4414,12 @@ static void generateClassDocs()
msg("Generating member index...\n");
writeMemberIndex(*outputList);
- if (exampleSDict->count()>0)
+ if (Doxygen::exampleSDict->count()>0)
{
msg("Generating example index...\n");
}
- ClassListIterator cli(classList);
+ ClassListIterator cli(Doxygen::classList);
for ( ; cli.current() ; ++cli )
{
ClassDef *cd=cli.current();
@@ -4480,7 +4438,7 @@ static void generateClassDocs()
static void inheritDocumentation()
{
- MemberNameListIterator mnli(memberNameList);
+ MemberNameListIterator mnli(Doxygen::memberNameList);
MemberName *mn;
//int count=0;
for (;(mn=mnli.current());++mnli)
@@ -4514,14 +4472,14 @@ static void inheritDocumentation()
static void addMembersToMemberGroup()
{
// for each class
- ClassListIterator cli(classList);
+ ClassListIterator cli(Doxygen::classList);
ClassDef *cd;
for ( ; (cd=cli.current()) ; ++cli )
{
cd->addMembersToMemberGroup();
}
// for each file
- FileName *fn=inputNameList.first();
+ FileName *fn=Doxygen::inputNameList.first();
while (fn)
{
FileDef *fd=fn->first();
@@ -4530,21 +4488,21 @@ static void addMembersToMemberGroup()
fd->addMembersToMemberGroup();
fd=fn->next();
}
- fn=inputNameList.next();
+ fn=Doxygen::inputNameList.next();
}
// for each namespace
- NamespaceDef *nd=namespaceList.first();
+ NamespaceDef *nd=Doxygen::namespaceList.first();
while (nd)
{
nd->addMembersToMemberGroup();
- nd=namespaceList.next();
+ nd=Doxygen::namespaceList.next();
}
// for each group
- GroupDef *gd=groupList.first();
+ GroupDef *gd=Doxygen::groupList.first();
while (gd)
{
gd->addMembersToMemberGroup();
- gd=groupList.next();
+ gd=Doxygen::groupList.next();
}
}
@@ -4553,14 +4511,14 @@ static void addMembersToMemberGroup()
static void distributeMemberGroupDocumentation()
{
// for each class
- ClassListIterator cli(classList);
+ ClassListIterator cli(Doxygen::classList);
ClassDef *cd;
for ( ; (cd=cli.current()) ; ++cli )
{
cd->distributeMemberGroupDocumentation();
}
// for each file
- FileName *fn=inputNameList.first();
+ FileName *fn=Doxygen::inputNameList.first();
while (fn)
{
FileDef *fd=fn->first();
@@ -4569,21 +4527,21 @@ static void distributeMemberGroupDocumentation()
fd->distributeMemberGroupDocumentation();
fd=fn->next();
}
- fn=inputNameList.next();
+ fn=Doxygen::inputNameList.next();
}
// for each namespace
- NamespaceDef *nd=namespaceList.first();
+ NamespaceDef *nd=Doxygen::namespaceList.first();
while (nd)
{
nd->distributeMemberGroupDocumentation();
- nd=namespaceList.next();
+ nd=Doxygen::namespaceList.next();
}
// for each group
- GroupDef *gd=groupList.first();
+ GroupDef *gd=Doxygen::groupList.first();
while (gd)
{
gd->distributeMemberGroupDocumentation();
- gd=groupList.next();
+ gd=Doxygen::groupList.next();
}
}
@@ -4607,11 +4565,11 @@ static void findDefineDocumentation(Entry *root)
md->setReference(root->tagInfo->tagName);
bool ambig;
QCString filePathName = root->parent->fileName;
- FileDef *fd=findFileDef(inputNameDict,filePathName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,filePathName,ambig);
//printf("Searching for `%s' fd=%p\n",filePathName.data(),fd);
md->setFileDef(fd);
MemberName *mn;
- if ((mn=functionNameDict[root->name]))
+ if ((mn=Doxygen::functionNameDict[root->name]))
{
mn->append(md);
}
@@ -4619,11 +4577,11 @@ static void findDefineDocumentation(Entry *root)
{
mn = new MemberName(root->name);
mn->append(md);
- functionNameDict.insert(root->name,mn);
- functionNameList.append(mn);
+ Doxygen::functionNameDict.insert(root->name,mn);
+ Doxygen::functionNameList.append(mn);
}
}
- MemberName *mn=functionNameDict[root->name];
+ MemberName *mn=Doxygen::functionNameDict[root->name];
if (mn)
{
int count=0;
@@ -4646,7 +4604,7 @@ static void findDefineDocumentation(Entry *root)
md->setBriefDescription(root->brief);
md->setBodySegment(root->bodyLine,root->endBodyLine);
bool ambig;
- md->setBodyDef(findFileDef(inputNameDict,root->fileName,ambig));
+ md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig));
md->addSectionsToDefinition(root->anchors);
md->setMaxInitLines(root->initLines);
if (root->mGrpId!=-1) md->setMemberGroupId(root->mGrpId);
@@ -4679,7 +4637,7 @@ static void findDefineDocumentation(Entry *root)
md->setBriefDescription(root->brief);
md->setBodySegment(root->bodyLine,root->endBodyLine);
bool ambig;
- md->setBodyDef(findFileDef(inputNameDict,root->fileName,ambig));
+ md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig));
md->addSectionsToDefinition(root->anchors);
if (root->mGrpId!=-1) md->setMemberGroupId(root->mGrpId);
addMemberToGroups(root,md);
@@ -4739,19 +4697,21 @@ static void findMainPage(Entry *root)
{
if (root->section == Entry::MAINPAGEDOC_SEC)
{
- if (mainPage==0)
+ if (Doxygen::mainPage==0)
{
//printf("Found main page! \n======\n%s\n=======\n",root->doc.data());
QCString title=root->args.stripWhiteSpace();
- mainPage = new PageInfo(root->fileName,root->startLine,
+ Doxygen::mainPage = new PageInfo(root->fileName,root->startLine,
"index", root->doc,title);
- setFileNameForSections(root->anchors,"index");
+ //setFileNameForSections(root->anchors,"index",Doxygen::mainPage);
+ Doxygen::mainPage->fileName = "index";
+ Doxygen::mainPage->addSections(root->anchors);
// a page name is a label as well!
SectionInfo *si=new SectionInfo(
- mainPage->name,mainPage->title,SectionInfo::Section);
+ Doxygen::mainPage->name,Doxygen::mainPage->title,SectionInfo::Section);
si->fileName="index";
- sectionDict.insert("index",si);
+ Doxygen::sectionDict.insert("index",si);
}
else
{
@@ -4778,15 +4738,15 @@ static void buildPackageList(Entry *root)
if (root->section == Entry::PACKAGE_SEC)
{
PackageDef *pd=0;
- if (!root->name.isEmpty() && (pd=packageDict.find(root->name))==0)
+ if (!root->name.isEmpty() && (pd=Doxygen::packageDict.find(root->name))==0)
{
pd = new PackageDef(root->fileName,root->startLine,root->name);
- packageDict.inSort(root->name,pd);
+ Doxygen::packageDict.inSort(root->name,pd);
}
if (pd)
{
bool ambig;
- FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
if (fd)
{
fd->setPackageDef(pd);
@@ -4807,7 +4767,7 @@ static void buildPackageList(Entry *root)
static void addClassesToPackages()
{
ClassDef *cd;
- ClassListIterator cli(classList);
+ ClassListIterator cli(Doxygen::classList);
for (;(cd=cli.current());++cli)
{
PackageDef *pd = cd->packageDef();
@@ -4819,7 +4779,7 @@ static void addClassesToPackages()
static void resolveUserReferences()
{
- QDictIterator<SectionInfo> sdi(sectionDict);
+ QDictIterator<SectionInfo> sdi(Doxygen::sectionDict);
SectionInfo *si;
for (;(si=sdi.current());++sdi)
{
@@ -4846,29 +4806,11 @@ static void resolveUserReferences()
//----------------------------------------------------------------------------
// generate all separate documentation pages
-//void generateMainPageDocs()
-//{
-// if (mainPage)
-// {
-// msg("Generating docs for the main page\n",mainPage->name.data());
-// outputList->disable(OutputGenerator::Man);
-// startFile(*outputList,mainPage->name,mainPage->title);
-// SectionInfo *si=0;
-// if (!mainPage->title.isEmpty() && !mainPage->name.isEmpty() &&
-// (si=sectionDict[mainPage->name])!=0)
-// {
-// outputList->writeSection(si->label,si->title,FALSE);
-// }
-// parseDoc(*outputList,0,0,mainPage->doc);
-// endFile(*outputList);
-// outputList->enable(OutputGenerator::Man);
-// }
-//}
static void generatePageDocs()
{
if (documentedPages==0) return;
- PageSDictIterator pdi(*pageSDict);
+ PageSDictIterator pdi(*Doxygen::pageSDict);
PageInfo *pi=0;
for (pdi.toFirst();(pi=pdi.current());++pdi)
{
@@ -4885,7 +4827,7 @@ static void generatePageDocs()
startFile(*outputList,pageName,pi->title);
SectionInfo *si=0;
if (!pi->title.isEmpty() && !pi->name.isEmpty() &&
- (si=sectionDict[pi->name])!=0)
+ (si=Doxygen::sectionDict.find(pi->name))!=0)
{
outputList->startSection(si->label,si->title,FALSE);
outputList->docify(si->title);
@@ -4899,11 +4841,12 @@ static void generatePageDocs()
if (!Config::genTagFile.isEmpty())
{
- tagFile << " <compound kind=\"page\">" << endl;
- tagFile << " <name>" << pi->name << "</name>" << endl;
- tagFile << " <title>" << pi->title << "</title>" << endl;
- tagFile << " <filename>" << pi->name << "</filename>" << endl;
- tagFile << " </compound>" << endl;
+ Doxygen::tagFile << " <compound kind=\"page\">" << endl;
+ Doxygen::tagFile << " <name>" << pi->name << "</name>" << endl;
+ Doxygen::tagFile << " <title>" << pi->title << "</title>" << endl;
+ Doxygen::tagFile << " <filename>" << pi->name << "</filename>" << endl;
+ pi->writeDocAnchorsToTagFile();
+ Doxygen::tagFile << " </compound>" << endl;
}
}
}
@@ -4918,7 +4861,7 @@ static void buildExampleList(Entry *root)
{
if (!root->name.isEmpty())
{
- if (exampleSDict->find(root->name))
+ if (Doxygen::exampleSDict->find(root->name))
{
warn(root->fileName,root->startLine,
"Warning: Example %s was already documented. Ignoring "
@@ -4930,10 +4873,14 @@ static void buildExampleList(Entry *root)
{
PageInfo *pi=new PageInfo(root->fileName,root->startLine,
root->name,root->doc,root->args);
- setFileNameForSections(root->anchors,
- convertFileName(pi->name)+"-example"
- );
- exampleSDict->inSort(root->name,pi);
+ //setFileNameForSections(root->anchors,
+ // convertFileName(pi->name)+"-example",
+ // pi
+ // );
+ pi->fileName = convertFileName(pi->name)+"-example";
+ pi->addSections(root->anchors);
+
+ Doxygen::exampleSDict->inSort(root->name,pi);
addExampleToGroups(root,pi);
}
}
@@ -4959,7 +4906,7 @@ static void buildExampleList(Entry *root)
static void generateExampleDocs()
{
outputList->disable(OutputGenerator::Man);
- PageSDictIterator pdi(*exampleSDict);
+ PageSDictIterator pdi(*Doxygen::exampleSDict);
PageInfo *pi=0;
for (pdi.toFirst();(pi=pdi.current());++pdi)
{
@@ -4980,7 +4927,7 @@ static void generateExampleDocs()
static void generateGroupDocs()
{
- GroupListIterator gli(groupList);
+ GroupListIterator gli(Doxygen::groupList);
GroupDef *gd;
for (;(gd=gli.current());++gli)
{
@@ -4997,9 +4944,9 @@ static void generatePackageDocs()
{
writePackageIndex(*outputList);
- if (packageDict.count()>0)
+ if (Doxygen::packageDict.count()>0)
{
- PackageSDict::Iterator pdi(packageDict);
+ PackageSDict::Iterator pdi(Doxygen::packageDict);
PackageDef *pd;
for (pdi.toFirst();(pd=pdi.current());++pdi)
{
@@ -5015,7 +4962,7 @@ static void generateNamespaceDocs()
{
writeNamespaceIndex(*outputList);
- NamespaceListIterator nli(namespaceList);
+ NamespaceListIterator nli(Doxygen::namespaceList);
NamespaceDef *nd;
for (;(nd=nli.current());++nli)
{
@@ -5243,7 +5190,7 @@ static void readTagFile(Entry *root,const char *tl)
fileName = tagLine.left(eqPos).stripWhiteSpace();
destName = tagLine.right(tagLine.length()-eqPos-1).stripWhiteSpace();
QFileInfo fi(fileName);
- tagDestinationDict.insert(fi.fileName(),new QCString(destName));
+ Doxygen::tagDestinationDict.insert(fi.fileName(),new QCString(destName));
//printf("insert tagDestination %s->%s\n",fi.fileName().data(),destName.data());
}
else
@@ -5627,9 +5574,9 @@ static void readFormulaRepository()
QCString formName = line.left(se);
QCString formText = line.right(line.length()-se-1);
Formula *f=new Formula(formText);
- formulaList.append(f);
- formulaDict.insert(formText,f);
- formulaNameDict.insert(formName,f);
+ Doxygen::formulaList.append(f);
+ Doxygen::formulaDict.insert(formText,f);
+ Doxygen::formulaNameDict.insert(formName,f);
}
}
}
@@ -5676,19 +5623,21 @@ static const char *getArg(int argc,char **argv,int &optind)
//----------------------------------------------------------------------------
-int main(int argc,char **argv)
+void initDoxygen()
{
#if QT_VERSION >= 200
setlocale(LC_ALL,"");
#endif
initPreprocessor();
+}
+void readConfiguration(int argc, char **argv)
+{
/**************************************************************************
* Handle arguments *
**************************************************************************/
- char *s;
int optind=1;
const char *configName=0;
const char *debugLabel;
@@ -5894,19 +5843,22 @@ int main(int argc,char **argv)
substituteEnvironmentVars();
checkConfig();
+}
- inputNameDict = new FileNameDict(1009);
- includeNameDict = new FileNameDict(1009);
- exampleNameDict = new FileNameDict(1009);
- imageNameDict = new FileNameDict(257);
+void parseInput()
+{
+ Doxygen::inputNameDict = new FileNameDict(1009);
+ Doxygen::includeNameDict = new FileNameDict(1009);
+ Doxygen::exampleNameDict = new FileNameDict(1009);
+ Doxygen::imageNameDict = new FileNameDict(257);
if (!Config::docURL.isEmpty())
{
- tagDestinationDict.insert("_doc",new QCString(Config::docURL));
+ Doxygen::tagDestinationDict.insert("_doc",new QCString(Config::docURL));
}
if (!Config::cgiURL.isEmpty())
{
- tagDestinationDict.insert("_cgi",new QCString(Config::cgiURL+"/"+Config::cgiName));
+ Doxygen::tagDestinationDict.insert("_cgi",new QCString(Config::cgiURL+"/"+Config::cgiName));
}
/**************************************************************************
@@ -5924,46 +5876,17 @@ int main(int argc,char **argv)
compoundKeywordDict.insert("exception",(void *)8);
/**************************************************************************
- * Initialize output generators *
- **************************************************************************/
-
- outputList = new OutputList(TRUE);
- if (Config::generateHtml)
- {
- outputList->add(new HtmlGenerator);
- HtmlGenerator::init();
- if (Config::htmlHelpFlag) HtmlHelp::getInstance()->initialize();
- if (Config::ftvHelpFlag) FTVHelp::getInstance()->initialize();
- copyStyleSheet();
- }
- if (Config::generateLatex)
- {
- outputList->add(new LatexGenerator);
- LatexGenerator::init();
- }
- if (Config::generateMan)
- {
- outputList->add(new ManGenerator);
- ManGenerator::init();
- }
- if (Config::generateRTF)
- {
- outputList->add(new RTFGenerator);
- RTFGenerator::init();
- }
-
- /**************************************************************************
* Read and preprocess input *
**************************************************************************/
// gather names of all files in the include path
msg("Searching for include files...\n");
- s=Config::includePath.first();
+ char *s=Config::includePath.first();
while (s)
{
QStrList *pl = &Config::includeFilePatternList;
if (pl->count()==0) pl = &Config::filePatternList;
- readFileOrDirectory(s,0,includeNameDict,0,pl,
+ readFileOrDirectory(s,0,Doxygen::includeNameDict,0,pl,
&Config::excludePatternList,0,0);
s=Config::includePath.next();
}
@@ -5972,7 +5895,7 @@ int main(int argc,char **argv)
s=Config::examplePath.first();
while (s)
{
- readFileOrDirectory(s,0,exampleNameDict,0,&Config::examplePatternList,
+ readFileOrDirectory(s,0,Doxygen::exampleNameDict,0,&Config::examplePatternList,
0,0,0);
s=Config::examplePath.next();
}
@@ -5981,7 +5904,7 @@ int main(int argc,char **argv)
s=Config::imagePath.first();
while (s)
{
- readFileOrDirectory(s,0,imageNameDict,0,0,
+ readFileOrDirectory(s,0,Doxygen::imageNameDict,0,0,
0,0,0);
s=Config::imagePath.next();
}
@@ -6000,8 +5923,8 @@ int main(int argc,char **argv)
s=Config::inputSources.first();
while (s)
{
- inputSize+=readFileOrDirectory(s,&inputNameList,
- inputNameDict,&excludeNameDict,
+ inputSize+=readFileOrDirectory(s,&Doxygen::inputNameList,
+ Doxygen::inputNameDict,&excludeNameDict,
&Config::filePatternList,
&Config::excludePatternList,
&inputFiles,0);
@@ -6012,19 +5935,19 @@ int main(int argc,char **argv)
s=Config::expandAsDefinedList.first();
while (s)
{
- if (expandAsDefinedDict[s]==0)
+ if (Doxygen::expandAsDefinedDict[s]==0)
{
- expandAsDefinedDict.insert(s,(void *)666);
+ Doxygen::expandAsDefinedDict.insert(s,(void *)666);
}
s=Config::expandAsDefinedList.next();
}
// add aliases to a dictionary
- aliasDict.setAutoDelete(TRUE);
+ Doxygen::aliasDict.setAutoDelete(TRUE);
s=Config::aliasList.first();
while (s)
{
- if (aliasDict[s]==0)
+ if (Doxygen::aliasDict[s]==0)
{
QCString alias=s;
int i=alias.find('=');
@@ -6058,10 +5981,10 @@ int main(int argc,char **argv)
//printf("Alias: found name=`%s' value=`%s'\n",name.data(),value.data());
if (!name.isEmpty())
{
- QCString *dn=aliasDict[name];
+ QCString *dn=Doxygen::aliasDict[name];
if (dn==0) // insert new alias
{
- aliasDict.insert(name,new QCString(value));
+ Doxygen::aliasDict.insert(name,new QCString(value));
}
else // overwrite previous alias
{
@@ -6113,20 +6036,6 @@ int main(int argc,char **argv)
s=Config::tagFileList.next();
}
- QFile *tag=0;
- if (!Config::genTagFile.isEmpty())
- {
- tag=new QFile(Config::genTagFile);
- if (!tag->open(IO_WriteOnly))
- {
- err("Error: cannot open tag file %s for writing\n",
- Config::genTagFile.data()
- );
- exit(1);
- }
- tagFile.setDevice(tag);
- tagFile << "<tagfile>" << endl;
- }
/**************************************************************************
* Gather information *
@@ -6145,9 +6054,6 @@ int main(int argc,char **argv)
buildNamespaceList(root);
findUsingDirectives(root);
- //msg("Computing group relations...\n");
- //computeGroupRelations(root);
-
msg("Building file list...\n");
buildFileList(root);
@@ -6192,8 +6098,8 @@ int main(int argc,char **argv)
findMainPage(root);
msg("Sorting member lists...\n");
- memberNameList.sort();
- functionNameList.sort();
+ Doxygen::memberNameList.sort();
+ Doxygen::functionNameList.sort();
msg("Freeing entry tree\n");
delete root;
@@ -6228,33 +6134,161 @@ int main(int argc,char **argv)
msg("Building full member lists recursively...\n");
buildCompleteMemberLists();
- //msg("Computing class interface usage relations...\n");
- //computeClassIntfUsageRelations();
-
- //msg("Determining member group documentation...\n");
- //computeMemberGroupDocumentation();
-
- //unrelatedFunctionsUsed=hasUnrelatedFunctions();
-
if (Config::inheritDocsFlag)
{
msg("Inheriting documentation...\n");
inheritDocumentation();
}
- //msg("Computing member groups...\n");
- //computeMemberGroups();
-
msg("Adding source references...\n");
addSourceReferences();
msg("Adding todo/test references...\n");
addTodoTestReferences();
+}
+
+void generateOutput()
+{
+ /**************************************************************************
+ * Check/create output directorties *
+ **************************************************************************/
+ if (Config::outputDir.isEmpty())
+ Config::outputDir=QDir::currentDirPath();
+ else
+ {
+ QDir dir(Config::outputDir);
+ if (!dir.exists())
+ {
+ dir.setPath(QDir::currentDirPath());
+ if (!dir.mkdir(Config::outputDir))
+ {
+ err("Error: tag OUTPUT_DIRECTORY: Output directory `%s' does not "
+ "exist and cannot be created\n",Config::outputDir.data());
+ exit(1);
+ }
+ else if (!Config::quietFlag)
+ {
+ err("Notice: Output directory `%s' does not exist. "
+ "I have created it for you.\n", Config::outputDir.data());
+ }
+ dir.cd(Config::outputDir);
+ }
+ Config::outputDir=dir.absPath();
+ }
+
+ if (Config::htmlOutputDir.isEmpty() && Config::generateHtml)
+ {
+ Config::htmlOutputDir=Config::outputDir+"/html";
+ }
+ else if (Config::htmlOutputDir && Config::htmlOutputDir[0]!='/')
+ {
+ Config::htmlOutputDir.prepend(Config::outputDir+'/');
+ }
+ QDir htmlDir(Config::htmlOutputDir);
+ if (Config::generateHtml && !htmlDir.exists() &&
+ !htmlDir.mkdir(Config::htmlOutputDir))
+ {
+ err("Could not create output directory %s\n",Config::htmlOutputDir.data());
+ exit(1);
+ }
+
+ if (Config::latexOutputDir.isEmpty() && Config::generateLatex)
+ {
+ Config::latexOutputDir=Config::outputDir+"/latex";
+ }
+ else if (Config::latexOutputDir && Config::latexOutputDir[0]!='/')
+ {
+ Config::latexOutputDir.prepend(Config::outputDir+'/');
+ }
+ QDir latexDir(Config::latexOutputDir);
+ if (Config::generateLatex && !latexDir.exists() &&
+ !latexDir.mkdir(Config::latexOutputDir))
+ {
+ err("Could not create output directory %s\n",Config::latexOutputDir.data());
+ exit(1);
+ }
+
+ if (Config::rtfOutputDir.isEmpty() && Config::generateRTF)
+ {
+ Config::rtfOutputDir=Config::outputDir+"/rtf";
+ }
+ else if (Config::rtfOutputDir && Config::rtfOutputDir[0]!='/')
+ {
+ Config::rtfOutputDir.prepend(Config::outputDir+'/');
+ }
+ QDir rtfDir(Config::rtfOutputDir);
+ if (Config::generateRTF && !rtfDir.exists() &&
+ !rtfDir.mkdir(Config::rtfOutputDir))
+ {
+ err("Could not create output directory %s\n",Config::rtfOutputDir.data());
+ exit(1);
+ }
+
+ if (Config::manOutputDir.isEmpty() && Config::generateMan)
+ {
+ Config::manOutputDir=Config::outputDir+"/man";
+ }
+ else if (Config::manOutputDir && Config::manOutputDir[0]!='/')
+ {
+ Config::manOutputDir.prepend(Config::outputDir+'/');
+ }
+ QDir manDir(Config::manOutputDir);
+ if (Config::generateMan && !manDir.exists() &&
+ !manDir.mkdir(Config::manOutputDir))
+ {
+ err("Could not create output directory %s\n",Config::manOutputDir.data());
+ exit(1);
+ }
+
+ /**************************************************************************
+ * Initialize output generators *
+ **************************************************************************/
+
+ outputList = new OutputList(TRUE);
+ if (Config::generateHtml)
+ {
+ outputList->add(new HtmlGenerator);
+ HtmlGenerator::init();
+ if (Config::htmlHelpFlag) HtmlHelp::getInstance()->initialize();
+ if (Config::ftvHelpFlag) FTVHelp::getInstance()->initialize();
+ copyStyleSheet();
+ }
+ if (Config::generateLatex)
+ {
+ outputList->add(new LatexGenerator);
+ LatexGenerator::init();
+ }
+ if (Config::generateMan)
+ {
+ outputList->add(new ManGenerator);
+ ManGenerator::init();
+ }
+ if (Config::generateRTF)
+ {
+ outputList->add(new RTFGenerator);
+ RTFGenerator::init();
+ }
+
/**************************************************************************
* Generate documentation *
**************************************************************************/
+ QFile *tag=0;
+ if (!Config::genTagFile.isEmpty())
+ {
+ tag=new QFile(Config::genTagFile);
+ if (!tag->open(IO_WriteOnly))
+ {
+ err("Error: cannot open tag file %s for writing\n",
+ Config::genTagFile.data()
+ );
+ exit(1);
+ }
+ Doxygen::tagFile.setDevice(tag);
+ Doxygen::tagFile << "<tagfile>" << endl;
+ }
+
if (Config::generateHtml) writeDoxFont(Config::htmlOutputDir);
if (Config::generateRTF) writeDoxFont(Config::rtfOutputDir);
@@ -6264,21 +6298,12 @@ int main(int argc,char **argv)
// If the result is 0 we do not generate the lists and omit the
// corresponding links in the index.
msg("Counting data structures...\n");
- annotatedClasses = countAnnotatedClasses();
- hierarchyClasses = countClassHierarchy();
- documentedMembers = countClassMembers();
- documentedFunctions = countFileMembers();
- countFiles(documentedHtmlFiles,documentedFiles);
- documentedGroups = countGroups();
- documentedNamespaces = countNamespaces();
- documentedNamespaceMembers = countNamespaceMembers();
- documentedPages = countRelatedPages();
- documentedPackages = countPackages();
+ countDataStructures();
// compute the shortest possible names of all files
// without loosing the uniqueness of the file names.
msg("Generating disk names...\n");
- inputNameList.generateDiskNames();
+ Doxygen::inputNameList.generateDiskNames();
msg("Resolving user defined references...\n");
resolveUserReferences();
@@ -6369,16 +6394,16 @@ int main(int argc,char **argv)
writeGraphicalClassHierarchy(*outputList);
}
- if (Config::generateXML)
- {
- msg("Generating XML output\n");
- generateXML();
- }
+ //if (Config::generateXML)
+ //{
+ // msg("Generating XML output\n");
+ // generateXML();
+ //}
- if (formulaList.count()>0 && Config::generateHtml)
+ if (Doxygen::formulaList.count()>0 && Config::generateHtml)
{
msg("Generating bitmaps for formulas in HTML...\n");
- formulaList.generateBitmaps(Config::htmlOutputDir);
+ Doxygen::formulaList.generateBitmaps(Config::htmlOutputDir);
}
if (Config::searchEngineFlag || Config::tagFileList.count()>0)
@@ -6399,14 +6424,12 @@ int main(int argc,char **argv)
}
if (!Config::genTagFile.isEmpty())
{
- tagFile << "</tagfile>" << endl;
+ Doxygen::tagFile << "</tagfile>" << endl;
delete tag;
}
if (Config::generateHtml) removeDoxFont(Config::htmlOutputDir);
if (Config::generateRTF) removeDoxFont(Config::rtfOutputDir);
-
-
- return 0;
}
+