summaryrefslogtreecommitdiffstats
path: root/src/doxygen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/doxygen.cpp')
-rw-r--r--src/doxygen.cpp185
1 files changed, 105 insertions, 80 deletions
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 6f9ba95..cebde46 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -72,13 +72,15 @@ ClassSDict Doxygen::hiddenClasses(257);
//NamespaceList Doxygen::namespaceList; // all namespaces
//NamespaceDict Doxygen::namespaceDict(257);
-NamespaceSDict Doxygen::namespaceSDict(17);
+NamespaceSDict Doxygen::namespaceSDict(20);
-MemberNameList Doxygen::memberNameList; // class member + related functions
-MemberNameDict Doxygen::memberNameDict(10007);
+//MemberNameList Doxygen::memberNameList; // class member + related functions
+//MemberNameDict Doxygen::memberNameDict(10007);
+MemberNameSDict Doxygen::memberNameSDict(10000);
-MemberNameList Doxygen::functionNameList; // all global function/namespace members
-MemberNameDict Doxygen::functionNameDict(10007);
+//MemberNameList Doxygen::functionNameList; // all global function/namespace members
+//MemberNameDict Doxygen::functionNameDict(10007);
+MemberNameSDict Doxygen::functionNameSDict(10000);
FileNameList Doxygen::inputNameList; // all input files
FileNameDict *Doxygen::inputNameDict;
@@ -127,14 +129,14 @@ void clearAll()
Doxygen::namespaceSDict.clear();
Doxygen::pageSDict->clear();
Doxygen::exampleSDict->clear();
- Doxygen::memberNameList.clear();
- Doxygen::functionNameList.clear();
+ //Doxygen::memberNameList.clear();
+ //Doxygen::functionNameList.clear();
Doxygen::inputNameList.clear();
Doxygen::groupList.clear();
Doxygen::formulaList.clear();
Doxygen::classSDict.clear();
- Doxygen::memberNameDict.clear();
- Doxygen::functionNameDict.clear();
+ //Doxygen::memberNameDict.clear();
+ //Doxygen::functionNameDict.clear();
Doxygen::sectionDict.clear();
Doxygen::inputNameDict->clear();
Doxygen::includeNameDict->clear();
@@ -161,10 +163,10 @@ void statistics()
Doxygen::imageNameDict->statistics();
fprintf(stderr,"--- dotFileNameDict stats ----\n");
Doxygen::dotFileNameDict->statistics();
- fprintf(stderr,"--- memberNameDict stats ----\n");
- Doxygen::memberNameDict.statistics();
- fprintf(stderr,"--- functionNameDict stats ----\n");
- Doxygen::functionNameDict.statistics();
+ //fprintf(stderr,"--- memberNameDict stats ----\n");
+ //Doxygen::memberNameDict.statistics();
+ //fprintf(stderr,"--- functionNameDict stats ----\n");
+ //Doxygen::functionNameDict.statistics();
fprintf(stderr,"--- excludeNameDict stats ----\n");
excludeNameDict.statistics();
fprintf(stderr,"--- aliasDict stats ----\n");
@@ -1329,7 +1331,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=Doxygen::memberNameDict[name];
+ MemberName *mn=Doxygen::memberNameSDict[name];
if (mn)
{
MemberNameIterator mni(*mn);
@@ -1390,8 +1392,9 @@ static MemberDef *addVariableToClass(
mn = new MemberName(name);
mn->append(md);
//printf("Adding memberName=%s\n",mn->memberName());
- Doxygen::memberNameDict.insert(name,mn);
- Doxygen::memberNameList.append(mn);
+ //Doxygen::memberNameDict.insert(name,mn);
+ //Doxygen::memberNameList.append(mn);
+ Doxygen::memberNameSDict.append(name,mn);
// add the member to the class
}
cd->insertMember(md);
@@ -1469,7 +1472,7 @@ static MemberDef *addVariableToFile(
}
if (def.left(7)=="static ") def=def.right(def.length()-7);
- MemberName *mn=Doxygen::functionNameDict[name];
+ MemberName *mn=Doxygen::functionNameSDict[name];
if (mn)
{
QCString nscope=removeAnonymousScopes(scope);
@@ -1565,8 +1568,9 @@ static MemberDef *addVariableToFile(
{
mn = new MemberName(name);
mn->append(md);
- Doxygen::functionNameDict.insert(name,mn);
- Doxygen::functionNameList.append(mn);
+ //Doxygen::functionNameDict.insert(name,mn);
+ //Doxygen::functionNameList.append(mn);
+ Doxygen::functionNameSDict.append(name,mn);
}
root->section = Entry::EMPTY_SEC;
return md;
@@ -1979,7 +1983,7 @@ static void buildFunctionList(Entry *root)
// add member to the global list of all members
//printf("Adding member=%s class=%s\n",md->name().data(),cd->name().data());
MemberName *mn;
- if ((mn=Doxygen::memberNameDict[name]))
+ if ((mn=Doxygen::memberNameSDict[name]))
{
mn->append(md);
}
@@ -1987,8 +1991,9 @@ static void buildFunctionList(Entry *root)
{
mn = new MemberName(name);
mn->append(md);
- Doxygen::memberNameDict.insert(name,mn);
- Doxygen::memberNameList.append(mn);
+ //Doxygen::memberNameDict.insert(name,mn);
+ //Doxygen::memberNameList.append(mn);
+ Doxygen::memberNameSDict.append(name,mn);
}
// add member to the class cd
@@ -2016,7 +2021,7 @@ static void buildFunctionList(Entry *root)
bool found=FALSE;
MemberName *mn;
//MemberDef *fmd;
- if ((mn=Doxygen::functionNameDict[rname]))
+ if ((mn=Doxygen::functionNameSDict[rname]))
{
//printf("--> function %s already found!\n",rname.data());
MemberNameIterator mni(*mn);
@@ -2182,7 +2187,7 @@ static void buildFunctionList(Entry *root)
// add member to the list of file members
//printf("Adding member=%s\n",md->name().data());
MemberName *mn;
- if ((mn=Doxygen::functionNameDict[name]))
+ if ((mn=Doxygen::functionNameSDict[name]))
{
mn->append(md);
}
@@ -2190,8 +2195,9 @@ static void buildFunctionList(Entry *root)
{
mn = new MemberName(name);
mn->append(md);
- Doxygen::functionNameDict.insert(name,mn);
- Doxygen::functionNameList.append(mn);
+ //Doxygen::functionNameDict.insert(name,mn);
+ //Doxygen::functionNameList.append(mn);
+ Doxygen::functionNameSDict.append(name,mn);
}
addMemberToGroups(root,md);
root->section = Entry::EMPTY_SEC;
@@ -2225,13 +2231,13 @@ static void buildFunctionList(Entry *root)
static void findFriends()
{
//printf("findFriends()\n");
- MemberNameListIterator fnli(Doxygen::functionNameList);
+ MemberNameSDict::Iterator fnli(Doxygen::functionNameSDict);
MemberName *fn;
for (;(fn=fnli.current());++fnli) // for each global function name
{
//printf("Function name=`%s'\n",fn->memberName());
MemberName *mn;
- if ((mn=Doxygen::memberNameDict[fn->memberName()]))
+ if ((mn=Doxygen::memberNameSDict[fn->memberName()]))
{ // there are members with the same name
//printf("Function name is also a member name\n");
MemberNameIterator fni(*fn);
@@ -2288,7 +2294,7 @@ static void transferFunctionDocumentation()
//printf("transferFunctionDocumentation()\n");
// find matching function declaration and definitions.
- MemberNameListIterator mnli(Doxygen::functionNameList);
+ MemberNameSDict::Iterator mnli(Doxygen::functionNameSDict);
MemberName *mn;
for (;(mn=mnli.current());++mnli)
{
@@ -2367,7 +2373,7 @@ static void transferRelatedFunctionDocumentation()
{
// find match between function declaration and definition for
// related functions
- MemberNameListIterator mnli(Doxygen::functionNameList);
+ MemberNameSDict::Iterator mnli(Doxygen::functionNameSDict);
MemberName *mn;
for (mnli.toFirst();(mn=mnli.current());++mnli)
{
@@ -2378,7 +2384,7 @@ static void transferRelatedFunctionDocumentation()
{
//printf(" Function `%s'\n",md->name().data());
MemberName *rmn;
- if ((rmn=Doxygen::memberNameDict[md->name()])) // check if there is a member with the same name
+ if ((rmn=Doxygen::memberNameSDict[md->name()])) // check if there is a member with the same name
{
//printf(" Member name found\n");
MemberDef *rmd;
@@ -3239,7 +3245,7 @@ static void computeMemberReferences()
static void addClassMemberTodoTestBugReferences(Definition *compound)
{
- MemberNameListIterator mnli(Doxygen::memberNameList);
+ MemberNameSDict::Iterator mnli(Doxygen::memberNameSDict);
MemberName *mn=0;
for (mnli.toFirst();(mn=mnli.current());++mnli)
{
@@ -3272,7 +3278,7 @@ static void addClassMemberTodoTestBugReferences(Definition *compound)
static void addFileMemberTodoTestBugReferences(Definition *compound)
{
- MemberNameListIterator fnli(Doxygen::functionNameList);
+ MemberNameSDict::Iterator fnli(Doxygen::functionNameSDict);
MemberName *mn=0;
for (fnli.toFirst();(mn=fnli.current());++fnli)
{
@@ -3305,7 +3311,7 @@ static void addFileMemberTodoTestBugReferences(Definition *compound)
static void addTodoTestBugReferences()
{
- MemberNameListIterator mnli(Doxygen::memberNameList);
+ MemberNameSDict::Iterator mnli(Doxygen::memberNameSDict);
MemberName *mn=0;
for (mnli.toFirst();(mn=mnli.current());++mnli)
{
@@ -3316,7 +3322,7 @@ static void addTodoTestBugReferences()
md->visited=FALSE;
}
}
- MemberNameListIterator fnli(Doxygen::functionNameList);
+ MemberNameSDict::Iterator fnli(Doxygen::functionNameSDict);
for (fnli.toFirst();(mn=fnli.current());++fnli)
{
MemberNameIterator mni(*mn);
@@ -3606,10 +3612,10 @@ static bool findGlobalMember(Entry *root,
Debug::print(Debug::FindMembers,0,
"2. findGlobalMember(namespace=%s,name=%s,tempArg=%s,decl=%s)\n",
namespaceName.data(),name,tempArg,decl);
- MemberName *mn=Doxygen::functionNameDict[n+tempArg]; // look in function dictionary
+ MemberName *mn=Doxygen::functionNameSDict[n+tempArg]; // look in function dictionary
if (mn==0)
{
- mn=Doxygen::functionNameDict[n]; // try without template arguments
+ mn=Doxygen::functionNameSDict[n]; // try without template arguments
}
if (mn) // function name defined
{
@@ -3897,7 +3903,16 @@ static void findMember(Entry *root,
(root->parent->section&Entry::SCOPE_MASK) &&
!root->parent->name.isEmpty())
{
- scopeName = mergeScopes(root->parent->name,scopeName);
+ QCString joinedName = root->parent->name+"::"+scopeName;
+ if (!scopeName.isEmpty() &&
+ (getClass(joinedName) || Doxygen::namespaceSDict[joinedName]))
+ {
+ scopeName = joinedName;
+ }
+ else
+ {
+ scopeName = mergeScopes(root->parent->name,scopeName);
+ }
}
scopeName=stripTemplateSpecifiersFromScope(
removeRedundantWhiteSpace(scopeName),FALSE);
@@ -4024,11 +4039,11 @@ static void findMember(Entry *root,
"1. funcName=`%s'\n",funcName.data());
if (!funcTempList.isEmpty()) // try with member specialization
{
- mn=Doxygen::memberNameDict[funcName+funcTempList];
+ mn=Doxygen::memberNameSDict[funcName+funcTempList];
}
if (mn==0) // try without specialization
{
- mn=Doxygen::memberNameDict[funcName];
+ mn=Doxygen::memberNameSDict[funcName];
}
if (!isRelated && mn) // function name already found
{
@@ -4275,12 +4290,12 @@ static void findMember(Entry *root,
{
if (className.isEmpty()) className=related.copy();
ClassDef *cd;
- //printf("scopeName=`%s'\n",scopeName.data());
+ //printf("scopeName=`%s' className=`%s'\n",scopeName.data(),className.data());
if ((cd=getClass(scopeName)))
{
bool newMember=TRUE; // assume we have a new member
bool newMemberName=FALSE;
- if ((mn=Doxygen::memberNameDict[funcName])==0)
+ if ((mn=Doxygen::memberNameSDict[funcName])==0)
{
mn=new MemberName(funcName);
newMemberName=TRUE; // we create a new member name
@@ -4335,7 +4350,7 @@ static void findMember(Entry *root,
bool found=FALSE;
if (root->bodyLine==-1)
{
- MemberName *rmn=Doxygen::functionNameDict[funcName];
+ MemberName *rmn=Doxygen::functionNameSDict[funcName];
if (rmn)
{
MemberDef *rmd=rmn->first();
@@ -4389,8 +4404,9 @@ static void findMember(Entry *root,
//printf("Adding member=%s\n",md->name().data());
if (newMemberName)
{
- Doxygen::memberNameList.append(mn);
- Doxygen::memberNameDict.insert(funcName,mn);
+ //Doxygen::memberNameList.append(mn);
+ //Doxygen::memberNameDict.insert(funcName,mn);
+ Doxygen::memberNameSDict.append(funcName,mn);
}
}
}
@@ -4547,8 +4563,9 @@ static void findEnums(Entry *root)
ClassDef *cd=0;
FileDef *fd=0;
NamespaceDef *nd=0;
- MemberNameDict *mnd=0;
- MemberNameList *mnl=0;
+ //MemberNameDict *mnd=0;
+ //MemberNameList *mnl=0;
+ MemberNameSDict *mnsd=0;
bool isGlobal;
//printf("Found enum with name `%s'\n",root->name.data());
int i;
@@ -4575,22 +4592,25 @@ static void findEnums(Entry *root)
{
//printf("Enum `%s'::`%s'\n",cd->name(),name.data());
fd=0;
- mnd=&Doxygen::memberNameDict;
- mnl=&Doxygen::memberNameList;
+ //mnd=&Doxygen::memberNameDict;
+ //mnl=&Doxygen::memberNameList;
+ mnsd=&Doxygen::memberNameSDict;
isGlobal=FALSE;
}
else if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@') // found enum inside namespace
{
- mnd=&Doxygen::functionNameDict;
- mnl=&Doxygen::functionNameList;
+ //mnd=&Doxygen::functionNameDict;
+ //mnl=&Doxygen::functionNameList;
+ mnsd=&Doxygen::functionNameSDict;
isGlobal=TRUE;
}
else // found a global enum
{
bool ambig;
fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
- mnd=&Doxygen::functionNameDict;
- mnl=&Doxygen::functionNameList;
+ //mnd=&Doxygen::functionNameDict;
+ //mnl=&Doxygen::functionNameList;
+ mnsd=&Doxygen::functionNameSDict;
isGlobal=TRUE;
}
if (!name.isEmpty())
@@ -4666,7 +4686,7 @@ static void findEnums(Entry *root)
//printf("Adding member=%s\n",md->name().data());
MemberName *mn;
- if ((mn=(*mnd)[name]))
+ if ((mn=(*mnsd)[name]))
{
// this is used if the same enum is in multiple namespaces/classes
mn->append(md);
@@ -4675,8 +4695,9 @@ static void findEnums(Entry *root)
{
mn = new MemberName(name);
mn->append(md);
- mnd->insert(name,mn);
- mnl->append(mn);
+ //mnd->insert(name,mn);
+ //mnl->append(mn);
+ mnsd->append(name,mn);
//printf("add %s to new memberName. Now %d members\n",
// name.data(),mn->count());
}
@@ -4687,7 +4708,7 @@ static void findEnums(Entry *root)
for (;(e=eli.current());++eli)
{
MemberName *fmn=0;
- if (!e->name.isEmpty() && (fmn=(*mnd)[e->name]))
+ if (!e->name.isEmpty() && (fmn=(*mnsd)[e->name]))
// get list of members with the same name as the field
{
MemberNameIterator fmni(*fmn);
@@ -4780,7 +4801,7 @@ static void findEnumDocumentation(Entry *root)
{
//printf("Enum: scope=`%s' name=`%s'\n",cd->name(),name.data());
QCString className=cd->name().copy();
- MemberName *mn=Doxygen::memberNameDict[name];
+ MemberName *mn=Doxygen::memberNameSDict[name];
if (mn)
{
MemberNameIterator mni(*mn);
@@ -4821,7 +4842,7 @@ static void findEnumDocumentation(Entry *root)
else // enum outside class
{
MemberDef *md;
- MemberName *mn=Doxygen::functionNameDict[name];
+ MemberName *mn=Doxygen::functionNameSDict[name];
if (mn && (md=mn->getFirst()))
{
md->setDocumentation(root->doc);
@@ -4850,10 +4871,10 @@ static void findEnumDocumentation(Entry *root)
// seach for each enum (member or function) in mnl if it has documented
// enum values.
-static void findDEV(const MemberNameList &mnl)
+static void findDEV(const MemberNameSDict &mnsd)
{
MemberName *mn;
- MemberNameListIterator mnli(mnl);
+ MemberNameSDict::Iterator mnli(mnsd);
// for each member name
for (mnli.toFirst();(mn=mnli.current());++mnli)
{
@@ -4887,8 +4908,8 @@ static void findDEV(const MemberNameList &mnl)
// values.
static void findDocumentedEnumValues()
{
- findDEV(Doxygen::memberNameList);
- findDEV(Doxygen::functionNameList);
+ findDEV(Doxygen::memberNameSDict);
+ findDEV(Doxygen::functionNameSDict);
}
@@ -4899,7 +4920,7 @@ static void findDocumentedEnumValues()
static void computeMemberRelations()
{
- MemberNameListIterator mnli(Doxygen::memberNameList);
+ MemberNameSDict::Iterator mnli(Doxygen::memberNameSDict);
MemberName *mn;
for ( ; (mn=mnli.current()) ; ++mnli ) // for each member name
{
@@ -5089,7 +5110,7 @@ static void addSourceReferences()
}
// add source references for member names
- MemberNameListIterator mnli(Doxygen::memberNameList);
+ MemberNameSDict::Iterator mnli(Doxygen::memberNameSDict);
MemberName *mn=0;
for (mnli.toFirst();(mn=mnli.current());++mnli)
{
@@ -5109,7 +5130,7 @@ static void addSourceReferences()
}
}
}
- MemberNameListIterator fnli(Doxygen::functionNameList);
+ MemberNameSDict::Iterator fnli(Doxygen::functionNameSDict);
for (fnli.toFirst();(mn=fnli.current());++fnli)
{
MemberNameIterator mni(*mn);
@@ -5187,6 +5208,7 @@ static void generateClassDocs()
cd->writeDocumentation(*outputList);
cd->writeMemberList(*outputList);
}
+ cd->writeDocumentationForInnerClasses(*outputList);
}
}
@@ -5194,7 +5216,7 @@ static void generateClassDocs()
static void inheritDocumentation()
{
- MemberNameListIterator mnli(Doxygen::memberNameList);
+ MemberNameSDict::Iterator mnli(Doxygen::memberNameSDict);
MemberName *mn;
//int count=0;
for (;(mn=mnli.current());++mnli)
@@ -5326,7 +5348,7 @@ static void findDefineDocumentation(Entry *root)
md->setFileDef(fd);
//printf("Adding member=%s\n",md->name().data());
MemberName *mn;
- if ((mn=Doxygen::functionNameDict[root->name]))
+ if ((mn=Doxygen::functionNameSDict[root->name]))
{
mn->append(md);
}
@@ -5334,11 +5356,12 @@ static void findDefineDocumentation(Entry *root)
{
mn = new MemberName(root->name);
mn->append(md);
- Doxygen::functionNameDict.insert(root->name,mn);
- Doxygen::functionNameList.append(mn);
+ //Doxygen::functionNameDict.insert(root->name,mn);
+ //Doxygen::functionNameList.append(mn);
+ Doxygen::functionNameSDict.append(root->name,mn);
}
}
- MemberName *mn=Doxygen::functionNameDict[root->name];
+ MemberName *mn=Doxygen::functionNameSDict[root->name];
if (mn)
{
int count=0;
@@ -5790,6 +5813,7 @@ static void generateNamespaceDocs()
cd->writeDocumentation(*outputList);
cd->writeMemberList(*outputList);
}
+ cd->writeDocumentationForInnerClasses(*outputList);
}
}
}
@@ -7129,8 +7153,8 @@ void parseInput()
findMainPage(root);
msg("Sorting lists...\n");
- Doxygen::memberNameList.sort();
- Doxygen::functionNameList.sort();
+ Doxygen::memberNameSDict.sort();
+ Doxygen::functionNameSDict.sort();
Doxygen::hiddenClasses.sort();
Doxygen::classSDict.sort();
@@ -7337,13 +7361,14 @@ void generateOutput()
Doxygen::formulaList.generateBitmaps(Config_getString("HTML_OUTPUT"));
}
- if (Config_getBool("SEARCHENGINE") || Config_getList("TAGFILES").count()>0)
- {
- msg("\nNow copy the file\n\n %s\n\nto the directory where the CGI binaries are "
- "located and don't forget to run\n\n",(Config_getString("HTML_OUTPUT")+"/"+Config_getString("CGI_NAME")).data());
- msg(" %s/installdox\n\nto replace any dummy links.\n\n",
- Config_getString("HTML_OUTPUT").data());
- }
+ // This is confusing people, so I removed it
+ //if (Config_getBool("SEARCHENGINE") || Config_getList("TAGFILES").count()>0)
+ //{
+ // msg("\nNow copy the file\n\n %s\n\nto the directory where the CGI binaries are "
+ // "located and don't forget to run\n\n",(Config_getString("HTML_OUTPUT")+"/"+Config_getString("CGI_NAME")).data());
+ // msg(" %s/installdox\n\nto replace any dummy links.\n\n",
+ // Config_getString("HTML_OUTPUT").data());
+ //}
if (Config_getBool("GENERATE_HTML") && Config_getBool("GENERATE_HTMLHELP"))
{