Commit 3120c683 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release 1.1.2

parent e5d8b060
DOXYGEN Version 1.1.1-20000402 DOXYGEN Version 1.1.2
CONTENTS CONTENTS
-------- --------
...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX: ...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have: 1. Unpack the archive, unless you already have:
gunzip doxygen-1.1.1-20000402.src.tar.gz # uncompress the archive gunzip doxygen-1.1.2.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.1-20000402.src.tar # unpack it tar xf doxygen-1.1.2.src.tar # unpack it
2. Run the configure script: 2. Run the configure script:
...@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at ...@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (02 April 2000) Dimitri van Heesch (09 April 2000)
DOXYGEN Version 1.1.1-20000402 DOXYGEN Version 1.1.2
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at ...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (02 April 2000) Dimitri van Heesch (09 April 2000)
1.1.1-20000402 1.1.2
...@@ -343,7 +343,8 @@ TMAKE_CXXFLAGS = -DENGLISH_ONLY ...@@ -343,7 +343,8 @@ TMAKE_CXXFLAGS = -DENGLISH_ONLY
EOF EOF
fi 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 SRC=$i
DST=`echo $i|sed 's%\(.*\).in$%\1%'` DST=`echo $i|sed 's%\(.*\).in$%\1%'`
TIME=`date` TIME=`date`
...@@ -357,7 +358,8 @@ EOF ...@@ -357,7 +358,8 @@ EOF
echo " Created $DST from $SRC..." echo " Created $DST from $SRC..."
done 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 SRC=$i
DST=`echo $i|sed 's%\(.*\).in$%\1%'` DST=`echo $i|sed 's%\(.*\).in$%\1%'`
TIME=`date` TIME=`date`
......
Name: doxygen Name: doxygen
Version: 1.1.1-20000402 Version: 1.1.2
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 1 Release: 1
Source0: doxygen-%{version}.src.tar.gz Source0: doxygen-%{version}.src.tar.gz
......
...@@ -1649,19 +1649,19 @@ void ClassDef::determineImplUsageRelation() ...@@ -1649,19 +1649,19 @@ void ClassDef::determineImplUsageRelation()
#ifdef DUMP #ifdef DUMP
if (usesClassDict) 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); UsesClassDictIterator ucdi(*usesClassDict);
UsesClassDef *ucd; UsesClassDef *ucd;
for (;(ucd=ucdi.current());++ucdi) for (;(ucd=ucdi.current());++ucdi)
{ {
printf(" %s via ",ucd->classDef->name().data()); msg(" %s via ",ucd->classDef->name().data());
QDictIterator<void> dvi(*ucd->accessors); QDictIterator<void> dvi(*ucd->accessors);
const char *s; const char *s;
for (;(s=dvi.currentKey());++dvi) for (;(s=dvi.currentKey());++dvi)
{ {
printf("%s ",s); msg("%s ",s);
} }
printf("\n"); msg("\n");
} }
} }
#endif #endif
...@@ -1697,8 +1697,8 @@ void ClassDef::addUsedInterfaceClasses(MemberDef *md,const char *typeStr) ...@@ -1697,8 +1697,8 @@ void ClassDef::addUsedInterfaceClasses(MemberDef *md,const char *typeStr)
// name().data(),cd->name().data()); // name().data(),cd->name().data());
} }
ucd->addAccessor(md->name()); ucd->addAccessor(md->name());
printf("in class `%s' adding accessor `%s' to class `%s'\n", //printf("in class `%s' adding accessor `%s' to class `%s'\n",
name().data(),md->name().data(),ucd->classDef->name().data()); // name().data(),md->name().data(),ucd->classDef->name().data());
} }
p=i+l; p=i+l;
} }
......
...@@ -358,7 +358,12 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root) ...@@ -358,7 +358,12 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
iName=iName.mid(1,iName.length()-2); // strip quotes or brackets 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); cd->setIncludeFile(fd,iName,local);
fd->setGenerateSource(TRUE); fd->setGenerateSource(TRUE);
...@@ -858,7 +863,7 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd, ...@@ -858,7 +863,7 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd,
md->setFromAnnonymousMember(fromAnnMemb); md->setFromAnnonymousMember(fromAnnMemb);
md->setIndentDepth(indentDepth); md->setIndentDepth(indentDepth);
md->setBodySegment(root->bodyLine,root->endBodyLine); md->setBodySegment(root->bodyLine,root->endBodyLine);
md->setInitializer(root->initializer); md->setInitializer(root->initializer.simplifyWhiteSpace());
//if (root->mGrpId!=-1) //if (root->mGrpId!=-1)
//{ //{
// printf("memberdef %s in memberGroup %d\n",name.data(),root->mGrpId); // printf("memberdef %s in memberGroup %d\n",name.data(),root->mGrpId);
...@@ -917,7 +922,7 @@ static MemberDef *addVariableToFile(Entry *root,MemberDef::MemberType mtype, ...@@ -917,7 +922,7 @@ static MemberDef *addVariableToFile(Entry *root,MemberDef::MemberType mtype,
md->setFromAnnonymousMember(fromAnnMemb); md->setFromAnnonymousMember(fromAnnMemb);
md->setIndentDepth(indentDepth); md->setIndentDepth(indentDepth);
md->setBodySegment(root->bodyLine,root->endBodyLine); md->setBodySegment(root->bodyLine,root->endBodyLine);
md->setInitializer(root->initializer); md->setInitializer(root->initializer.simplifyWhiteSpace());
bool ambig; bool ambig;
FileDef *fd=findFileDef(&inputNameDict,root->fileName,ambig); FileDef *fd=findFileDef(&inputNameDict,root->fileName,ambig);
md->setBodyDef(fd); md->setBodyDef(fd);
...@@ -1380,9 +1385,12 @@ void buildMemberList(Entry *root) ...@@ -1380,9 +1385,12 @@ void buildMemberList(Entry *root)
MemberDef *md=mn->first(); MemberDef *md=mn->first();
while (md && !found) while (md && !found)
{ {
if (md->getFileDef() && NamespaceDef *nd = md->getNamespace();
md->getFileDef()->absFilePath()==root->fileName && FileDef *fd = md->getFileDef();
matchArguments(md->argumentList(),root->argList) 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 // function already found in the same file, one is probably
...@@ -2002,7 +2010,7 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl, ...@@ -2002,7 +2010,7 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
if (md->initializer().isEmpty() && !root->initializer.isEmpty()) 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 */ //if (md->bodyCode().isEmpty() && !root->body.isEmpty()) /* no body yet */
...@@ -4419,8 +4427,11 @@ void copyAndFilterFile(const char *fileName,BufStr &dest) ...@@ -4419,8 +4427,11 @@ void copyAndFilterFile(const char *fileName,BufStr &dest)
const int bufSize=1024; const int bufSize=1024;
char buf[bufSize]; char buf[bufSize];
int numRead; 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; dest.addArray(buf,numRead),size+=numRead;
}
pclose(f); pclose(f);
} }
// filter unwanted bytes from the resulting data // filter unwanted bytes from the resulting data
...@@ -4761,7 +4772,10 @@ const char *getArg(int argc,char **argv,int &optind) ...@@ -4761,7 +4772,10 @@ const char *getArg(int argc,char **argv,int &optind)
int main(int argc,char **argv) int main(int argc,char **argv)
{ {
#if QT_VERSION >= 200
setlocale(LC_ALL,"");
#endif
initPreprocessor(); initPreprocessor();
/************************************************************************** /**************************************************************************
......
...@@ -577,11 +577,6 @@ void HtmlGenerator::startMemberItem(int annoType) ...@@ -577,11 +577,6 @@ void HtmlGenerator::startMemberItem(int annoType)
if (Config::htmlAlignMemberFlag) if (Config::htmlAlignMemberFlag)
{ {
t << "<tr>"; 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) switch(annoType)
{ {
case 0: t << "<td nowrap align=right valign=top>"; break; case 0: t << "<td nowrap align=right valign=top>"; break;
...@@ -600,26 +595,30 @@ void HtmlGenerator::endMemberItem(bool) ...@@ -600,26 +595,30 @@ void HtmlGenerator::endMemberItem(bool)
//DBG_HTML(t << "<!-- endMemberItem(" << (int)inGroup << "," << fileName << "," << headerName << " -->" << endl) //DBG_HTML(t << "<!-- endMemberItem(" << (int)inGroup << "," << fileName << "," << headerName << " -->" << endl)
if (Config::htmlAlignMemberFlag) 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 << "</td></tr>";
} }
t << endl; 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() void HtmlGenerator::insertMemberAlign()
{ {
DBG_HTML(t << "<!-- insertMemberAlign -->" << endl) DBG_HTML(t << "<!-- insertMemberAlign -->" << endl)
...@@ -762,12 +761,24 @@ void HtmlGenerator::writeImage(const char *name,const char *,const char *) ...@@ -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 *) 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() 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() void HtmlGenerator::startCollaborationDiagram()
......
...@@ -224,6 +224,9 @@ class HtmlGenerator : public OutputGenerator ...@@ -224,6 +224,9 @@ class HtmlGenerator : public OutputGenerator
void endTextBlock() {} void endTextBlock() {}
void lastIndexPage() {} void lastIndexPage() {}
void startParameter(bool first);
void endParameter(bool last);
private: private:
QCString header; QCString header;
QCString footer; QCString footer;
......
...@@ -219,6 +219,8 @@ class LatexGenerator : public OutputGenerator ...@@ -219,6 +219,8 @@ class LatexGenerator : public OutputGenerator
void startTextBlock(bool) {} void startTextBlock(bool) {}
void endTextBlock() {} void endTextBlock() {}
void startParameter(bool) {}
void endParameter(bool) {}
private: private:
LatexGenerator(const LatexGenerator &); LatexGenerator(const LatexGenerator &);
......
...@@ -206,6 +206,8 @@ class ManGenerator : public OutputGenerator ...@@ -206,6 +206,8 @@ class ManGenerator : public OutputGenerator
void startTextBlock(bool) {} void startTextBlock(bool) {}
void endTextBlock() {} void endTextBlock() {}
void lastIndexPage() {} void lastIndexPage() {}
void startParameter(bool) {}
void endParameter(bool) {}
private: private:
bool firstCol; bool firstCol;
......
...@@ -101,22 +101,12 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -101,22 +101,12 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
} }
//printf("~~~ %s cName=%s\n",md->name().data(),cName.data()); //printf("~~~ %s cName=%s\n",md->name().data(),cName.data());
// You can set the next to TRUE to experiment with multiline parameter lists. bool first=TRUE;
// I'll add this in some form in a future release.
bool multiLineArgs = FALSE; /* argList->count()>2; */
while (a) while (a)
{ {
ol.startParameter(first); first=FALSE;
QRegExp re(")("); QRegExp re(")(");
int vp; 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 if (!a->attrib.isEmpty()) // argument has an IDL attribute
{ {
ol.docify(a->attrib+" "); ol.docify(a->attrib+" ");
...@@ -161,14 +151,11 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -161,14 +151,11 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
linkifyText(ol,scopeName,md->name(),n); linkifyText(ol,scopeName,md->name(),n);
} }
a=argList->next(); a=argList->next();
if (a) ol.docify(", "); // there are more arguments if (a)
} {
if (multiLineArgs) ol.docify(", "); // there are more arguments
{ ol.endParameter(FALSE);
ol.pushGeneratorState(); }
ol.disableAllBut(OutputGenerator::Html);
ol.lineBreak();
ol.popGeneratorState();
} }
ol.docify(")"); // end argument list ol.docify(")"); // end argument list
if (argList->constSpecifier) if (argList->constSpecifier)
...@@ -971,6 +958,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -971,6 +958,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol.docify("]"); ol.docify("]");
ol.endTypewriter(); ol.endTypewriter();
} }
ol.endParameter(TRUE);
ol.endMemberDoc(); ol.endMemberDoc();
ol.endDoxyAnchor(); ol.endDoxyAnchor();
ol.startIndent(); ol.startIndent();
......
...@@ -94,8 +94,8 @@ void MemberList::countDecMembers(bool inGroup) ...@@ -94,8 +94,8 @@ void MemberList::countDecMembers(bool inGroup)
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
printf("memberGroupList adding %d inGroup=%d\n", //printf("memberGroupList adding %d inGroup=%d\n",
mg->countDecMembers(),m_count); // mg->countDecMembers(),m_count);
m_count+=mg->countDecMembers(); m_count+=mg->countDecMembers();
} }
} }
...@@ -355,6 +355,13 @@ void MemberList::writePlainDeclarations(OutputList &ol, ...@@ -355,6 +355,13 @@ void MemberList::writePlainDeclarations(OutputList &ol,
MemberDef *fmd=fmdl->first(); MemberDef *fmd=fmdl->first();
while (fmd) 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 (fmd->hasDocumentation()) // enum value has docs
{ {
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
...@@ -379,6 +386,10 @@ void MemberList::writePlainDeclarations(OutputList &ol, ...@@ -379,6 +386,10 @@ void MemberList::writePlainDeclarations(OutputList &ol,
typeDecl.enable(OutputGenerator::Man); typeDecl.enable(OutputGenerator::Man);
} }
} }
typeDecl.pushGeneratorState();
typeDecl.disableAllBut(OutputGenerator::Html);
typeDecl.lineBreak();
typeDecl.popGeneratorState();
typeDecl.docify(" }"); typeDecl.docify(" }");
md->setEnumDecl(typeDecl); md->setEnumDecl(typeDecl);
int enumVars=0; int enumVars=0;
...@@ -571,7 +582,7 @@ void MemberList::writeDeclarations(OutputList &ol, ...@@ -571,7 +582,7 @@ void MemberList::writeDeclarations(OutputList &ol,
if (memberGroupList) if (memberGroupList)
{ {
printf("MemberList::writeDeclarations()\n"); //printf("MemberList::writeDeclarations()\n");
MemberGroupListIterator mgli(*memberGroupList); MemberGroupListIterator mgli(*memberGroupList);
MemberGroup *mg; MemberGroup *mg;
while ((mg=mgli.current())) while ((mg=mgli.current()))
...@@ -581,7 +592,7 @@ void MemberList::writeDeclarations(OutputList &ol, ...@@ -581,7 +592,7 @@ void MemberList::writeDeclarations(OutputList &ol,
ol.endMemberGroupHeader(); ol.endMemberGroupHeader();
if (!mg->documentation().isEmpty()) if (!mg->documentation().isEmpty())
{ {
printf("Member group has docs!\n"); //printf("Member group has docs!\n");
ol.startMemberGroupDocs(); ol.startMemberGroupDocs();
parseDoc(ol,0,0,mg->documentation()); parseDoc(ol,0,0,mg->documentation());
ol.endMemberGroupDocs(); ol.endMemberGroupDocs();
...@@ -608,7 +619,7 @@ void MemberList::writeDocumentation(OutputList &ol, ...@@ -608,7 +619,7 @@ void MemberList::writeDocumentation(OutputList &ol,
void MemberList::addMemberGroup(MemberGroup *mg) void MemberList::addMemberGroup(MemberGroup *mg)
{ {
printf("MemberList::addMemberGroup(%p)\n",mg); //printf("MemberList::addMemberGroup(%p)\n",mg);
if (memberGroupList==0) if (memberGroupList==0)
{ {
memberGroupList=new MemberGroupList; memberGroupList=new MemberGroupList;
......
...@@ -28,6 +28,9 @@ OutputGenerator::OutputGenerator() ...@@ -28,6 +28,9 @@ OutputGenerator::OutputGenerator()
b.setBuffer(a); b.setBuffer(a);
b.open( IO_WriteOnly ); b.open( IO_WriteOnly );
t.setDevice(&b); t.setDevice(&b);
#if QT_VERSION >= 200
t.setEncoding(QTextStream::Latin1);
#endif
active=TRUE; active=TRUE;
genStack = new QStack<bool>; genStack = new QStack<bool>;
genStack->setAutoDelete(TRUE); genStack->setAutoDelete(TRUE);
......
...@@ -210,6 +210,9 @@ class OutputGenerator ...@@ -210,6 +210,9 @@ class OutputGenerator
virtual void endTextBlock() = 0; virtual void endTextBlock() = 0;
virtual void lastIndexPage() = 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); void clear() { b.close(); a.resize(0); b.setBuffer(a);
b.open(IO_WriteOnly); t.setDevice(&b); } b.open(IO_WriteOnly); t.setDevice(&b); }
......
...@@ -312,8 +312,6 @@ class OutputList ...@@ -312,8 +312,6 @@ class OutputList
{ forall(&OutputGenerator::addToIndex,s1,s2); } { forall(&OutputGenerator::addToIndex,s1,s2); }
void writeSynopsis() void writeSynopsis()
{ forall(&OutputGenerator::writeSynopsis); } { forall(&OutputGenerator::writeSynopsis); }
//void generateExternalIndex()
//{ forall(&OutputGenerator::generateExternalIndex); }
void startClassDiagram() void startClassDiagram()
{ forall(&OutputGenerator::startClassDiagram); } { forall(&OutputGenerator::startClassDiagram); }
void endClassDiagram(ClassDiagram &d,const char *f,const char *n) void endClassDiagram(ClassDiagram &d,const char *f,const char *n)
...@@ -366,6 +364,11 @@ class OutputList ...@@ -366,6 +364,11 @@ class OutputList
void lastIndexPage() void lastIndexPage()
{ forall(&OutputGenerator::lastIndexPage); } { forall(&OutputGenerator::lastIndexPage); }
void startParameter(bool first)
{ forall(&OutputGenerator::startParameter,first); }
void endParameter(bool last)
{ forall(&OutputGenerator::endParameter,last); }
private: private:
void debug(); void debug();
void clear(); void clear();
......
...@@ -26,11 +26,13 @@ ...@@ -26,11 +26,13 @@
#if QT_VERSION >= 200 #if QT_VERSION >= 200
#include <locale.h>
#define GCI QCollection::Item #define GCI QCollection::Item
#include <qcstring.h> #include <qcstring.h>
#include <qstring.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 */ #else /* QT_VERSION < 200 */
......
...@@ -208,6 +208,9 @@ class RTFGenerator : public OutputGenerator ...@@ -208,6 +208,9 @@ class RTFGenerator : public OutputGenerator
void endTextBlock(); void endTextBlock();
void lastIndexPage(); void lastIndexPage();
void startParameter(bool) {}
void endParameter(bool) {}
static bool preProcessFileInplace(const char *path,const char *name); static bool preProcessFileInplace(const char *path,const char *name);
private: private:
......
...@@ -355,6 +355,16 @@ static void endTable() ...@@ -355,6 +355,16 @@ static void endTable()
curTable=tableStack.top(); 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() static void lineCount()
...@@ -4854,6 +4864,10 @@ void parseDocument(OutputList &ol,const QCString &docString) ...@@ -4854,6 +4864,10 @@ void parseDocument(OutputList &ol,const QCString &docString)
{ {
warn("Warning: Documentation block contains \\if without matching \\endif: %d\n",depthIf); warn("Warning: Documentation block contains \\if without matching \\endif: %d\n",depthIf);
} }
if (!tableStack.isEmpty())
{
forceEndTable();
}
ol+=*outDoc; ol+=*outDoc;
delete outDoc; outDoc=0; delete outDoc; outDoc=0;
return; return;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment