summaryrefslogtreecommitdiffstats
path: root/src/doxygen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/doxygen.cpp')
-rw-r--r--src/doxygen.cpp108
1 files changed, 88 insertions, 20 deletions
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 8a12922..1b31b6f 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2000 by Dimitri van Heesch.
+ * Copyright (C) 1997-2001 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -57,6 +57,8 @@
#include "xml.h"
#include "reflist.h"
#include "page.h"
+#include "packagedef.h"
+#include "bufstr.h"
#if defined(_MSC_VER) || defined(__BORLANDC__)
#define popen _popen
@@ -102,6 +104,8 @@ OutputList *outputList = 0; // list of output generating objects
PageInfo *mainPage = 0;
QIntDict<QCString> memberHeaderDict(1009); // dictionary of the member groups heading
QIntDict<QCString> memberDocDict(1009); // dictionary of the member groups heading
+
+PackageSDict packageDict(257); // java packages
void clearAll()
@@ -192,6 +196,7 @@ int documentedNamespaces;
int documentedNamespaceMembers;
int documentedIncludeFiles;
int documentedPages;
+int documentedPackages;
QTextStream tagFile;
@@ -2101,7 +2106,8 @@ static void transferFunctionDocumentation()
// check if not in different but documented files
if (Config::extractAllFlag ||
fdef==fdec ||
- !fdef->hasDocumentation() || !mdec->hasDocumentation())
+ (fdef!=0 && (!fdef->hasDocumentation() || !mdec->hasDocumentation()))
+ )
{
//printf("Found member %s: def in %s and dec in %s\n",
// mn->memberName(),mdef->getFileDef()->name().data(),
@@ -3021,10 +3027,11 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
{
Debug::print(Debug::FindMembers,0,
"findMember(root=%p,funcDecl=`%s',related=`%s',overload=%d,"
- "isFunc=%d mGrpId=%d tArgList=%p=\"%s\" scopeSpec=%s "
- "memberSpec=%s memSpec=%d\n",
+ "isFunc=%d mGrpId=%d tArgList=%p=\"%s\" mtArgList=%p=\"%s\" "
+ "scopeSpec=%s memberSpec=%s memSpec=%d\n",
root,funcDecl.data(),related.data(),overloaded,isFunc,root->mGrpId,
root->tArgList,tempArgListToString(root->tArgList).data(),
+ root->mtArgList,tempArgListToString(root->mtArgList).data(),
root->scopeSpec.data(),root->memberSpec.data(),root->memSpec
);
//if (Config::includeSourceFlag && !root->body.isEmpty())
@@ -3248,7 +3255,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
// no template specifiers found during parsing (because \fn was used),
// but there are template names in the scope, so we build the template
// specifiers from that.
- printf("Building template list from `%s'\n",classTempList.data());
+ //printf("Building template list from `%s'\n",classTempList.data());
root->tArgList = new ArgumentList;
QRegExp re(idMask);
int i,p=0,l;
@@ -3619,6 +3626,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
if (!newMember && rmd) // member already exists as rmd -> add docs
{
//printf("addMemberDocs for related member %s\n",root->name.data());
+ rmd->setMemberDefTemplateArguments(root->mtArgList);
addMemberDocs(root,rmd,funcDecl,0,overloaded);
}
}
@@ -3694,13 +3702,12 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
md->setMemberClass(cd);
md->setMemberSpecifiers(root->memSpec);
md->setDefinition(funcDecl);
- //md->setDefFile(root->fileName);
- //md->setDefLine(root->startLine);
md->setPrototype(root->proto);
md->setDocumentation(root->doc);
md->setBriefDescription(root->brief);
md->addSectionsToDefinition(root->anchors);
md->setMemberGroupId(root->mGrpId);
+ md->setMemberDefTemplateArguments(root->mtArgList);
mn->append(md);
cd->insertMember(md);
cd->insertUsedFile(root->fileName);
@@ -4764,6 +4771,52 @@ static void findMainPage(Entry *root)
//----------------------------------------------------------------------------
+/*! Search for all Java package statements
+ */
+static void buildPackageList(Entry *root)
+{
+ if (root->section == Entry::PACKAGE_SEC)
+ {
+ PackageDef *pd=0;
+ if (!root->name.isEmpty() && (pd=packageDict.find(root->name))==0)
+ {
+ pd = new PackageDef(root->fileName,root->startLine,root->name);
+ packageDict.inSort(root->name,pd);
+ }
+ if (pd)
+ {
+ bool ambig;
+ FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
+ if (fd)
+ {
+ fd->setPackageDef(pd);
+ }
+ }
+ }
+ EntryListIterator eli(*root->sublist);
+ Entry *e;
+ for (;(e=eli.current());++eli)
+ {
+ buildPackageList(e);
+ }
+}
+
+//----------------------------------------------------------------------------
+
+/*! Add Java classes to their respective packages */
+static void addClassesToPackages()
+{
+ ClassDef *cd;
+ ClassListIterator cli(classList);
+ for (;(cd=cli.current());++cli)
+ {
+ PackageDef *pd = cd->packageDef();
+ if (pd) pd->addClass(cd);
+ }
+}
+
+//----------------------------------------------------------------------------
+
static void resolveUserReferences()
{
QDictIterator<SectionInfo> sdi(sectionDict);
@@ -4931,17 +4984,6 @@ static void generateGroupDocs()
GroupDef *gd;
for (;(gd=gli.current());++gli)
{
- //printf("group %s #members=%d\n",gd->name().data(),gd->countMembers());
- //if (gd->countMembers()>0)
- //{
- // gd->writeDocumentation(*outputList);
- //}
- //else
- //{
- // warn(gd->getDefFileName(),gd->getDefLine(),
- // "Warning: group %s does not have any (documented) members.",
- // gd->name().data());
- //}
if (!gd->isReference())
{
gd->writeDocumentation(*outputList);
@@ -4950,6 +4992,23 @@ static void generateGroupDocs()
}
//----------------------------------------------------------------------------
+
+static void generatePackageDocs()
+{
+ writePackageIndex(*outputList);
+
+ if (packageDict.count()>0)
+ {
+ PackageSDict::Iterator pdi(packageDict);
+ PackageDef *pd;
+ for (pdi.toFirst();(pd=pdi.current());++pdi)
+ {
+ pd->writeDocumentation(*outputList);
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
// generate module pages
static void generateNamespaceDocs()
@@ -5581,7 +5640,7 @@ static void readFormulaRepository()
static void usage(const char *name)
{
- msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2000\n\n",versionString);
+ msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2001\n\n",versionString);
msg("You can use doxygen in four ways:\n\n");
msg("1) Use doxygen to generate a template configuration file:\n");
msg(" %s [-s] -g [configName]\n\n",name);
@@ -6126,6 +6185,9 @@ int main(int argc,char **argv)
msg("Building page list...\n");
buildPageList(root);
+ msg("Buidling package list...\n");
+ buildPackageList(root);
+
msg("Search for main page...\n");
findMainPage(root);
@@ -6145,6 +6207,9 @@ int main(int argc,char **argv)
msg("Computing member relations...\n");
computeMemberRelations();
+ msg("Adding classes to their packages...\n");
+ addClassesToPackages();
+
if (Config::haveDotFlag && Config::collGraphFlag)
{
msg("Computing class implementation usage relations...\n");
@@ -6208,7 +6273,7 @@ int main(int argc,char **argv)
documentedNamespaces = countNamespaces();
documentedNamespaceMembers = countNamespaceMembers();
documentedPages = countRelatedPages();
- //documentedIncludeFiles = countIncludeFiles();
+ documentedPackages = countPackages();
// compute the shortest possible names of all files
// without loosing the uniqueness of the file names.
@@ -6248,6 +6313,9 @@ int main(int argc,char **argv)
msg("Generating group index...\n");
writeGroupIndex(*outputList);
+ msg("Generating package index...\n");
+ generatePackageDocs();
+
msg("Generating example index...\n");
writeExampleIndex(*outputList);