summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2000-04-09 18:46:16 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2000-04-09 18:46:16 (GMT)
commit3120c6832bd3b2df0ecac2ccb08ddcdacd5575ed (patch)
treefd63e43b2dca7528a3a4ac6ae45bf46fb3fc0ea3
parente5d8b060f74171bb27a1783d313429b0198ef42b (diff)
downloadDoxygen-3120c6832bd3b2df0ecac2ccb08ddcdacd5575ed.zip
Doxygen-3120c6832bd3b2df0ecac2ccb08ddcdacd5575ed.tar.gz
Doxygen-3120c6832bd3b2df0ecac2ccb08ddcdacd5575ed.tar.bz2
Release 1.1.2
-rw-r--r--INSTALL8
-rw-r--r--README4
-rw-r--r--VERSION2
-rwxr-xr-xconfigure6
-rw-r--r--packages/rpm/doxygen.spec2
-rw-r--r--src/classdef.cpp12
-rw-r--r--src/doxygen.cpp32
-rw-r--r--src/htmlgen.cpp55
-rw-r--r--src/htmlgen.h3
-rw-r--r--src/latexgen.h2
-rw-r--r--src/mangen.h2
-rw-r--r--src/memberdef.cpp28
-rw-r--r--src/memberlist.cpp21
-rw-r--r--src/outputgen.cpp3
-rw-r--r--src/outputgen.h3
-rw-r--r--src/outputlist.h7
-rw-r--r--src/qtbc.h4
-rw-r--r--src/rtfgen.h3
-rw-r--r--src/scanner.l14
19 files changed, 136 insertions, 75 deletions
diff --git a/INSTALL b/INSTALL
index acda0e1..552a022 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,4 +1,4 @@
-DOXYGEN Version 1.1.1-20000402
+DOXYGEN Version 1.1.2
CONTENTS
--------
@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
- gunzip doxygen-1.1.1-20000402.src.tar.gz # uncompress the archive
- tar xf doxygen-1.1.1-20000402.src.tar # unpack it
+ gunzip doxygen-1.1.2.src.tar.gz # uncompress the archive
+ tar xf doxygen-1.1.2.src.tar # unpack it
2. Run the configure script:
@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at
Enjoy,
-Dimitri van Heesch (02 April 2000)
+Dimitri van Heesch (09 April 2000)
diff --git a/README b/README
index a561013..b7b5c61 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-DOXYGEN Version 1.1.1-20000402
+DOXYGEN Version 1.1.2
Please read INSTALL for compilation instructions.
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
-Dimitri van Heesch (02 April 2000)
+Dimitri van Heesch (09 April 2000)
diff --git a/VERSION b/VERSION
index 9d6b723..45a1b3f 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.1.1-20000402
+1.1.2
diff --git a/configure b/configure
index 88e6631..e8ca4e1 100755
--- a/configure
+++ b/configure
@@ -343,7 +343,8 @@ TMAKE_CXXFLAGS = -DENGLISH_ONLY
EOF
fi
-for i in Makefile.in src/Makefile.in examples/Makefile.in doc/Makefile.in ; do
+for i in Makefile.in src/Makefile.in examples/Makefile.in \
+ doc/Makefile.in ; do
SRC=$i
DST=`echo $i|sed 's%\(.*\).in$%\1%'`
TIME=`date`
@@ -357,7 +358,8 @@ EOF
echo " Created $DST from $SRC..."
done
-for i in src/doxygen.pro.in src/doxytag.pro.in src/doxysearch.pro.in ; do
+for i in src/doxygen.pro.in src/doxytag.pro.in \
+ src/doxysearch.pro.in ; do
SRC=$i
DST=`echo $i|sed 's%\(.*\).in$%\1%'`
TIME=`date`
diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec
index 327d6e4..a017865 100644
--- a/packages/rpm/doxygen.spec
+++ b/packages/rpm/doxygen.spec
@@ -1,5 +1,5 @@
Name: doxygen
-Version: 1.1.1-20000402
+Version: 1.1.2
Summary: documentation system for C, C++ and IDL
Release: 1
Source0: doxygen-%{version}.src.tar.gz
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 3b73672..8055a76 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -1649,19 +1649,19 @@ void ClassDef::determineImplUsageRelation()
#ifdef DUMP
if (usesClassDict)
{
- printf("Class %s uses the following classes:\n",name().data());
+ msg("Class %s uses the following classes:\n",name().data());
UsesClassDictIterator ucdi(*usesClassDict);
UsesClassDef *ucd;
for (;(ucd=ucdi.current());++ucdi)
{
- printf(" %s via ",ucd->classDef->name().data());
+ msg(" %s via ",ucd->classDef->name().data());
QDictIterator<void> dvi(*ucd->accessors);
const char *s;
for (;(s=dvi.currentKey());++dvi)
{
- printf("%s ",s);
+ msg("%s ",s);
}
- printf("\n");
+ msg("\n");
}
}
#endif
@@ -1697,8 +1697,8 @@ void ClassDef::addUsedInterfaceClasses(MemberDef *md,const char *typeStr)
// name().data(),cd->name().data());
}
ucd->addAccessor(md->name());
- printf("in class `%s' adding accessor `%s' to class `%s'\n",
- name().data(),md->name().data(),ucd->classDef->name().data());
+ //printf("in class `%s' adding accessor `%s' to class `%s'\n",
+ // name().data(),md->name().data(),ucd->classDef->name().data());
}
p=i+l;
}
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index d53f327..98cccb4 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -358,7 +358,12 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
iName=iName.mid(1,iName.length()-2); // strip quotes or brackets
}
}
- if (Config::verbatimHeaderFlag) // generate code for header
+ else // use name of the file containing the class definition
+ {
+ iName=fd->name();
+ }
+ if (Config::verbatimHeaderFlag || Config::sourceBrowseFlag)
+ // generate code for header
{
cd->setIncludeFile(fd,iName,local);
fd->setGenerateSource(TRUE);
@@ -858,7 +863,7 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd,
md->setFromAnnonymousMember(fromAnnMemb);
md->setIndentDepth(indentDepth);
md->setBodySegment(root->bodyLine,root->endBodyLine);
- md->setInitializer(root->initializer);
+ md->setInitializer(root->initializer.simplifyWhiteSpace());
//if (root->mGrpId!=-1)
//{
// printf("memberdef %s in memberGroup %d\n",name.data(),root->mGrpId);
@@ -917,7 +922,7 @@ static MemberDef *addVariableToFile(Entry *root,MemberDef::MemberType mtype,
md->setFromAnnonymousMember(fromAnnMemb);
md->setIndentDepth(indentDepth);
md->setBodySegment(root->bodyLine,root->endBodyLine);
- md->setInitializer(root->initializer);
+ md->setInitializer(root->initializer.simplifyWhiteSpace());
bool ambig;
FileDef *fd=findFileDef(&inputNameDict,root->fileName,ambig);
md->setBodyDef(fd);
@@ -1380,9 +1385,12 @@ void buildMemberList(Entry *root)
MemberDef *md=mn->first();
while (md && !found)
{
- if (md->getFileDef() &&
- md->getFileDef()->absFilePath()==root->fileName &&
- matchArguments(md->argumentList(),root->argList)
+ NamespaceDef *nd = md->getNamespace();
+ FileDef *fd = md->getFileDef();
+ QCString nsName = nd ? nd->name().data() : "";
+ //printf("namespace `%s'\n",nsName.data());
+ if ((nd || (fd && fd->absFilePath()==root->fileName)) &&
+ matchArguments(md->argumentList(),root->argList,0,nsName)
)
{
// function already found in the same file, one is probably
@@ -2002,7 +2010,7 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
if (md->initializer().isEmpty() && !root->initializer.isEmpty())
{
- md->setInitializer(root->initializer);
+ md->setInitializer(root->initializer.simplifyWhiteSpace());
}
//if (md->bodyCode().isEmpty() && !root->body.isEmpty()) /* no body yet */
@@ -4419,8 +4427,11 @@ void copyAndFilterFile(const char *fileName,BufStr &dest)
const int bufSize=1024;
char buf[bufSize];
int numRead;
- while ((numRead=fread(buf,1,bufSize,f))!=bufSize)
+ while ((numRead=fread(buf,1,bufSize,f))>0)
+ {
+ //printf(">>>>>>>>Reading %d bytes\n",numRead);
dest.addArray(buf,numRead),size+=numRead;
+ }
pclose(f);
}
// filter unwanted bytes from the resulting data
@@ -4761,7 +4772,10 @@ const char *getArg(int argc,char **argv,int &optind)
int main(int argc,char **argv)
{
-
+#if QT_VERSION >= 200
+ setlocale(LC_ALL,"");
+#endif
+
initPreprocessor();
/**************************************************************************
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 408c1d7..af3ecce 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -577,11 +577,6 @@ void HtmlGenerator::startMemberItem(int annoType)
if (Config::htmlAlignMemberFlag)
{
t << "<tr>";
- //if (inGroup)
- // t << "<td bgcolor=\"" << GROUP_COLOR << "\">";
- //else
- //t << "<td>";
- //t << "<img src=\"null.gif\"></td><td><img src=\"null.gif\"></td>";
switch(annoType)
{
case 0: t << "<td nowrap align=right valign=top>"; break;
@@ -600,26 +595,30 @@ void HtmlGenerator::endMemberItem(bool)
//DBG_HTML(t << "<!-- endMemberItem(" << (int)inGroup << "," << fileName << "," << headerName << " -->" << endl)
if (Config::htmlAlignMemberFlag)
{
- //if (inGroup)
- //{
- // t << "&nbsp;</td><td";
- // if (headerName)
- // {
- // t << " align=right valign=top><a class=\"gl\" href=\""
- // << fileName << ".html\">&nbsp;" << headerName << "&nbsp;</a>";
- // }
- // else
- // {
- // t << ">";
- // }
- // t << "</td><td bgcolor=\"" << GROUP_COLOR
- // << "\"><img src=\"null.gif\">";
- //}
t << "</td></tr>";
}
t << endl;
}
+void HtmlGenerator::startParameter(bool first)
+{
+ if (first)
+ {
+ t << endl << "</b></td>" << endl;
+ t << "<td><b>" << endl;
+ }
+ else
+ {
+ t << "<tr><td></td><td><b>" << endl;
+ }
+}
+
+void HtmlGenerator::endParameter(bool)
+{
+ t << "</b></td></tr>" << endl;
+}
+
+
void HtmlGenerator::insertMemberAlign()
{
DBG_HTML(t << "<!-- insertMemberAlign -->" << endl)
@@ -762,12 +761,24 @@ void HtmlGenerator::writeImage(const char *name,const char *,const char *)
void HtmlGenerator::startMemberDoc(const char *,const char *,const char *,const char *)
{
- t << endl << "<p><table width=100% cellpadding=2 cellspacing=0 border=0><tr><td class=\"md\"><b>" << endl;
+ t << "<p>" << endl;
+ t << "<table width=100% cellpadding=2 cellspacing=0 border=0>" << endl;
+ t << " <tr>" << endl;
+ t << " <td class=\"md\"><b>" << endl;
+ t << " <table cellspadding=0 cellspacing=0 border=0>" << endl;
+ t << " <tr>" << endl;
+ t << " <td><b>" << endl;
}
void HtmlGenerator::endMemberDoc()
{
- t << endl << "</b></td></tr></table>" << endl;
+ t << endl;
+ t << " </b></td>" << endl;
+ t << " </tr>" << endl;
+ t << " </table>" << endl;
+ t << " </td>" << endl;
+ t << " </tr>" << endl;
+ t << "</table>" << endl;
}
void HtmlGenerator::startCollaborationDiagram()
diff --git a/src/htmlgen.h b/src/htmlgen.h
index 75f5ce7..149e6dd 100644
--- a/src/htmlgen.h
+++ b/src/htmlgen.h
@@ -224,6 +224,9 @@ class HtmlGenerator : public OutputGenerator
void endTextBlock() {}
void lastIndexPage() {}
+ void startParameter(bool first);
+ void endParameter(bool last);
+
private:
QCString header;
QCString footer;
diff --git a/src/latexgen.h b/src/latexgen.h
index 1012dea..5fd278b 100644
--- a/src/latexgen.h
+++ b/src/latexgen.h
@@ -219,6 +219,8 @@ class LatexGenerator : public OutputGenerator
void startTextBlock(bool) {}
void endTextBlock() {}
+ void startParameter(bool) {}
+ void endParameter(bool) {}
private:
LatexGenerator(const LatexGenerator &);
diff --git a/src/mangen.h b/src/mangen.h
index f34caed..1f4ebec 100644
--- a/src/mangen.h
+++ b/src/mangen.h
@@ -206,6 +206,8 @@ class ManGenerator : public OutputGenerator
void startTextBlock(bool) {}
void endTextBlock() {}
void lastIndexPage() {}
+ void startParameter(bool) {}
+ void endParameter(bool) {}
private:
bool firstCol;
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 2c1fd32..86b91bf 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -101,22 +101,12 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
}
//printf("~~~ %s cName=%s\n",md->name().data(),cName.data());
- // You can set the next to TRUE to experiment with multiline parameter lists.
- // I'll add this in some form in a future release.
- bool multiLineArgs = FALSE; /* argList->count()>2; */
+ bool first=TRUE;
while (a)
{
+ ol.startParameter(first); first=FALSE;
QRegExp re(")(");
int vp;
- if (multiLineArgs)
- {
- ol.pushGeneratorState();
- ol.disableAllBut(OutputGenerator::Html);
- ol.lineBreak();
- ol.writeNonBreakableSpace();
- ol.writeNonBreakableSpace();
- ol.popGeneratorState();
- }
if (!a->attrib.isEmpty()) // argument has an IDL attribute
{
ol.docify(a->attrib+" ");
@@ -161,14 +151,11 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
linkifyText(ol,scopeName,md->name(),n);
}
a=argList->next();
- if (a) ol.docify(", "); // there are more arguments
- }
- if (multiLineArgs)
- {
- ol.pushGeneratorState();
- ol.disableAllBut(OutputGenerator::Html);
- ol.lineBreak();
- ol.popGeneratorState();
+ if (a)
+ {
+ ol.docify(", "); // there are more arguments
+ ol.endParameter(FALSE);
+ }
}
ol.docify(")"); // end argument list
if (argList->constSpecifier)
@@ -971,6 +958,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol.docify("]");
ol.endTypewriter();
}
+ ol.endParameter(TRUE);
ol.endMemberDoc();
ol.endDoxyAnchor();
ol.startIndent();
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index f997529..ec884b8 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -94,8 +94,8 @@ void MemberList::countDecMembers(bool inGroup)
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)
{
- printf("memberGroupList adding %d inGroup=%d\n",
- mg->countDecMembers(),m_count);
+ //printf("memberGroupList adding %d inGroup=%d\n",
+ // mg->countDecMembers(),m_count);
m_count+=mg->countDecMembers();
}
}
@@ -355,6 +355,13 @@ void MemberList::writePlainDeclarations(OutputList &ol,
MemberDef *fmd=fmdl->first();
while (fmd)
{
+ /* in html we start each enum item on a new line */
+ typeDecl.pushGeneratorState();
+ typeDecl.disableAllBut(OutputGenerator::Html);
+ typeDecl.lineBreak();
+ typeDecl.writeString("&nbsp;&nbsp;");
+ typeDecl.popGeneratorState();
+
if (fmd->hasDocumentation()) // enum value has docs
{
if (!Config::genTagFile.isEmpty())
@@ -379,6 +386,10 @@ void MemberList::writePlainDeclarations(OutputList &ol,
typeDecl.enable(OutputGenerator::Man);
}
}
+ typeDecl.pushGeneratorState();
+ typeDecl.disableAllBut(OutputGenerator::Html);
+ typeDecl.lineBreak();
+ typeDecl.popGeneratorState();
typeDecl.docify(" }");
md->setEnumDecl(typeDecl);
int enumVars=0;
@@ -571,7 +582,7 @@ void MemberList::writeDeclarations(OutputList &ol,
if (memberGroupList)
{
- printf("MemberList::writeDeclarations()\n");
+ //printf("MemberList::writeDeclarations()\n");
MemberGroupListIterator mgli(*memberGroupList);
MemberGroup *mg;
while ((mg=mgli.current()))
@@ -581,7 +592,7 @@ void MemberList::writeDeclarations(OutputList &ol,
ol.endMemberGroupHeader();
if (!mg->documentation().isEmpty())
{
- printf("Member group has docs!\n");
+ //printf("Member group has docs!\n");
ol.startMemberGroupDocs();
parseDoc(ol,0,0,mg->documentation());
ol.endMemberGroupDocs();
@@ -608,7 +619,7 @@ void MemberList::writeDocumentation(OutputList &ol,
void MemberList::addMemberGroup(MemberGroup *mg)
{
- printf("MemberList::addMemberGroup(%p)\n",mg);
+ //printf("MemberList::addMemberGroup(%p)\n",mg);
if (memberGroupList==0)
{
memberGroupList=new MemberGroupList;
diff --git a/src/outputgen.cpp b/src/outputgen.cpp
index b765eec..722558d 100644
--- a/src/outputgen.cpp
+++ b/src/outputgen.cpp
@@ -28,6 +28,9 @@ OutputGenerator::OutputGenerator()
b.setBuffer(a);
b.open( IO_WriteOnly );
t.setDevice(&b);
+#if QT_VERSION >= 200
+ t.setEncoding(QTextStream::Latin1);
+#endif
active=TRUE;
genStack = new QStack<bool>;
genStack->setAutoDelete(TRUE);
diff --git a/src/outputgen.h b/src/outputgen.h
index a422338..d3696cf 100644
--- a/src/outputgen.h
+++ b/src/outputgen.h
@@ -210,6 +210,9 @@ class OutputGenerator
virtual void endTextBlock() = 0;
virtual void lastIndexPage() = 0;
+ virtual void startParameter(bool) = 0;
+ virtual void endParameter(bool) = 0;
+
void clear() { b.close(); a.resize(0); b.setBuffer(a);
b.open(IO_WriteOnly); t.setDevice(&b); }
diff --git a/src/outputlist.h b/src/outputlist.h
index 1dd11b2..191d82b 100644
--- a/src/outputlist.h
+++ b/src/outputlist.h
@@ -312,8 +312,6 @@ class OutputList
{ forall(&OutputGenerator::addToIndex,s1,s2); }
void writeSynopsis()
{ forall(&OutputGenerator::writeSynopsis); }
- //void generateExternalIndex()
- //{ forall(&OutputGenerator::generateExternalIndex); }
void startClassDiagram()
{ forall(&OutputGenerator::startClassDiagram); }
void endClassDiagram(ClassDiagram &d,const char *f,const char *n)
@@ -366,6 +364,11 @@ class OutputList
void lastIndexPage()
{ forall(&OutputGenerator::lastIndexPage); }
+ void startParameter(bool first)
+ { forall(&OutputGenerator::startParameter,first); }
+ void endParameter(bool last)
+ { forall(&OutputGenerator::endParameter,last); }
+
private:
void debug();
void clear();
diff --git a/src/qtbc.h b/src/qtbc.h
index 570bf93..0091717 100644
--- a/src/qtbc.h
+++ b/src/qtbc.h
@@ -26,11 +26,13 @@
#if QT_VERSION >= 200
+#include <locale.h>
+
#define GCI QCollection::Item
#include <qcstring.h>
#include <qstring.h>
-inline QCString convertToQCString(const QString &s) { return s.local8Bit(); }
+inline QCString convertToQCString(const QString &s) { return s.latin1(); }
#else /* QT_VERSION < 200 */
diff --git a/src/rtfgen.h b/src/rtfgen.h
index f47da9b..d8bec55 100644
--- a/src/rtfgen.h
+++ b/src/rtfgen.h
@@ -208,6 +208,9 @@ class RTFGenerator : public OutputGenerator
void endTextBlock();
void lastIndexPage();
+ void startParameter(bool) {}
+ void endParameter(bool) {}
+
static bool preProcessFileInplace(const char *path,const char *name);
private:
diff --git a/src/scanner.l b/src/scanner.l
index ff2e61a..589bbff 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -355,6 +355,16 @@ static void endTable()
curTable=tableStack.top();
}
+static void forceEndTable()
+{
+ err("Error: More <table> tags found than </table> "
+ "tags in documentation block in file %s!\n",yyFileName);
+ while (!tableStack.isEmpty())
+ {
+ endTable();
+ }
+}
+
//-----------------------------------------------------------------------------
static void lineCount()
@@ -4854,6 +4864,10 @@ void parseDocument(OutputList &ol,const QCString &docString)
{
warn("Warning: Documentation block contains \\if without matching \\endif: %d\n",depthIf);
}
+ if (!tableStack.isEmpty())
+ {
+ forceEndTable();
+ }
ol+=*outDoc;
delete outDoc; outDoc=0;
return;