Commit eb31c4be authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.1-20000917

parent b91275de
DOXYGEN Version 1.2.1-20000910
DOXYGEN Version 1.2.1-20000917
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (10 September 2000)
Dimitri van Heesch (17 September 2000)
DOXYGEN Version 1.2.1-20000910
DOXYGEN Version 1.2.1-20000917
Please read INSTALL for compilation instructions.
......@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (10 September 2000)
Dimitri van Heesch (17 September 2000)
1.2.1-20000910
1.2.1-20000917
......@@ -248,9 +248,9 @@ Here is a list of the languages and their current maintainers:
\hline
Russian & Nickolay Semyonov & {\tt snob@int.spb.ru} \\
\hline
Korean & Richard Kim & {\\tt ryk@dspwiz.com} \\
Korean & Richard Kim & {\tt ryk@dspwiz.com} \\
\hline
Hungarian & Fldvri Gyrgy & {\\tt foldvari@diatronltd.com} \\
Hungarian & Fldvri Gyrgy & {\tt foldvari@diatronltd.com} \\
\hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} \\
\hline
......
Name: doxygen
Version: 1.2.1-20000910
Version: 1.2.1-20000917
Summary: documentation system for C, C++ and IDL
Release: 1
Source0: doxygen-%{version}.src.tar.gz
......
......@@ -120,6 +120,8 @@ static bool g_searchingForBody;
static bool g_insideBody;
static int g_bodyCurlyCount;
static ClassDef * g_classVar;
static QCString g_saveName;
static QCString g_saveType;
/*! start a new line of code, inserting a line number if g_sourceFileDef
* is TRUE. If a definition starts at the current line, then the line
......@@ -574,18 +576,21 @@ static void generateMemberLink(OutputList &ol,const char *varName,
vn=vn.right(vn.length()-vi-2);
vmn=memberNameDict[vn];
//printf("Trying name `%s' scope=%s\n",vn.data(),scope.data());
MemberNameIterator vmni(*vmn);
MemberDef *vmd;
for (;(vmd=vmni.current());++vmni)
if (vmn)
{
if ((vmd->isVariable() || vmd->isFunction()) &&
vmd->getClassDef()==jcd)
MemberNameIterator vmni(*vmn);
MemberDef *vmd;
for (;(vmd=vmni.current());++vmni)
{
//printf("Found variable type=%s\n",vmd->typeString());
ClassDef *mcd=stripClassName(vmd->typeString());
if (mcd && mcd->isLinkable())
if ((vmd->isVariable() || vmd->isFunction()) &&
vmd->getClassDef()==jcd)
{
if (generateClassMemberLink(ol,mcd,memName)) return;
//printf("Found variable type=%s\n",vmd->typeString());
ClassDef *mcd=stripClassName(vmd->typeString());
if (mcd && mcd->isLinkable())
{
if (generateClassMemberLink(ol,mcd,memName)) return;
}
}
}
}
......@@ -626,7 +631,7 @@ static void generateFunctionLink(OutputList &ol,char *funcName)
if (i>0)
{
locScope=locFunc.left(i);
locFunc=locFunc.right(locFunc.length()-i-2);
locFunc=locFunc.right(locFunc.length()-i-2).stripWhiteSpace();
int ts=locScope.find('<'); // start of template
int te=locScope.findRev('>'); // end of template
//printf("ts=%d te=%d\n",ts,te);
......@@ -636,7 +641,7 @@ static void generateFunctionLink(OutputList &ol,char *funcName)
locScope=locScope.left(ts)+locScope.right(locScope.length()-te-1);
}
}
//printf("generateFunctionLink(%s) classScope=%s\n",locFunc.data(),locScope.data());
//printf("generateFunctionLink(%s) classScope=`%s'\n",locFunc.data(),locScope.data());
if (!locScope.isEmpty() && (ccd=g_codeClassDict[locScope]))
{
//printf("using classScope %s\n",g_classScope.data());
......@@ -1067,12 +1072,22 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
}
<Body>[,=;\[] {
g_code->codify(yytext);
g_saveName = g_name.copy();
g_saveType = g_name.copy();
if (!g_type.isEmpty())
{
addVariable();
g_name.resize(0);
g_name.resize(0);
}
if (*yytext!=',') g_type.resize(0);
g_args.resize(0);
}
<Body>"]" {
g_code->codify(yytext);
// TODO: nested arrays like: a[b[0]->func()]->func()
g_name = g_saveName.copy();
g_type = g_saveType.copy();
}
<Body>[0-9]+ {
g_code->codify(yytext);
}
......@@ -1121,7 +1136,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
<MemberCall2,FuncCall>")"[ \t\n]*[;:] {
codifyLines(yytext);
g_bracketCount=0;
g_searchingForBody=FALSE;
if (yytext[yyleng-1]==';') g_searchingForBody=FALSE;
if (!g_inClass && !g_type.isEmpty())
addVariable();
g_parmType.resize(0);g_parmName.resize(0);
......
......@@ -1432,8 +1432,11 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
if ((sec=sectionDict[secName]))
{
//printf("Title %s\n",sec->title.data());
outDoc->writeSection(sec->label,sec->title,
outDoc->startSection(sec->label,sec->title,
sec->type==SectionInfo::Subsection);
scanString(sec->title);
outDoc->endSection(sec->label,
sec->type==SectionInfo::Subsection);
}
}
<DocScan>{CMD}"anchor "{ID}"\n" {
......@@ -1510,7 +1513,6 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
text=sec->title;
if (sec->type==SectionInfo::Anchor)
{
//outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text);
outDoc->writeObjectLink(0,sec->fileName,sec->label,text);
writePageRef(*outDoc,sec->label,0);
}
......
......@@ -844,7 +844,11 @@ void DotClassGraph::buildGraph(ClassDef *cd,DotNode *n,int distance,bool base)
BaseClassDef *bcd;
for ( ; (bcd=bcli.current()) ; ++bcli )
{
addClass(bcd->classDef,n,bcd->prot,0,distance,bcd->templSpecifiers,base);
//printf("addClass: base=%s this=%s templ=%s\n",bcd->classDef->name().data(),
// cd->name().data(),bcd->templSpecifiers.data());
QCString templSpec;
if (base) templSpec = bcd->templSpecifiers;
addClass(bcd->classDef,n,bcd->prot,0,distance,templSpec,base);
}
if (m_graphType != Inheritance)
{
......
......@@ -4606,7 +4606,9 @@ static void generatePageDocs()
if (!pi->title.isEmpty() && !pi->name.isEmpty() &&
(si=sectionDict[pi->name])!=0)
{
outputList->writeSection(si->label,si->title,FALSE);
outputList->startSection(si->label,si->title,FALSE);
outputList->docify(si->title);
outputList->endSection(si->label,FALSE);
}
outputList->startTextBlock();
parseDoc(*outputList,pi->defFileName,pi->defLine,0,0,pi->doc);
......
......@@ -449,11 +449,14 @@ void HtmlGenerator::endGroupHeader()
t << "</h2>" << endl;
}
void HtmlGenerator::writeSection(const char *lab,const char *title,bool sub)
void HtmlGenerator::startSection(const char *lab,const char *,bool sub)
{
t << "<a name=\"" << lab << "\">";
if (sub) t << "<h3>"; else t << "<h2>";
docify(title);
}
void HtmlGenerator::endSection(const char *,bool sub)
{
if (sub) t << "</h3>"; else t << "</h2>";
t << "</a>" << endl;
}
......
......@@ -184,7 +184,8 @@ class HtmlGenerator : public OutputGenerator
void endDescTitle() {}
void writeDescItem() { t << "<dd>" << endl; }
void endDescList() { t << "</dl>"; }
void writeSection(const char *,const char *,bool);
void startSection(const char *,const char *,bool);
void endSection(const char *,bool);
void writeSectionRef(const char *,const char *,const char *);
void writeSectionRefItem(const char *,const char *,const char *);
void writeSectionRefAnchor(const char *,const char *,const char *);
......
......@@ -972,7 +972,9 @@ void writeMemberList(OutputList &ol,bool useSections)
lastChar=cs[0]=tolower(name.at(0));cs[1]='\0';
QCString anchor=(QCString)"index_"+cs;
QCString title=(QCString)"- "+cs+" -";
ol.writeSection(anchor,title,TRUE);
ol.startSection(anchor,title,TRUE);
ol.docify(title);
ol.endSection(anchor,TRUE);
ol.startItemList();
first=FALSE;
}
......@@ -1135,7 +1137,9 @@ void writeFileMemberList(OutputList &ol,bool useSections)
lastChar=cs[0]=tolower(name.at(0));cs[1]='\0';
QCString anchor=(QCString)"index_"+cs;
QCString title=(QCString)"- "+cs+" -";
ol.writeSection(anchor,title,TRUE);
ol.startSection(anchor,title,TRUE);
ol.docify(title);
ol.endSection(anchor,TRUE);
ol.startItemList();
first=FALSE;
}
......@@ -1212,7 +1216,9 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections)
lastChar=cs[0]=tolower(name.at(0));cs[1]='\0';
QCString anchor=(QCString)"index_"+cs;
QCString title=(QCString)"- "+cs+" -";
ol.writeSection(anchor,title,TRUE);
ol.startSection(anchor,title,TRUE);
ol.docify(title);
ol.endSection(anchor,TRUE);
ol.startItemList();
first=FALSE;
}
......@@ -1842,7 +1848,9 @@ void writeIndex(OutputList &ol)
if (!mainPage->title.isEmpty() && !mainPage->name.isEmpty() &&
(si=sectionDict[mainPage->name])!=0)
{
ol.writeSection(si->label,si->title,FALSE);
ol.startSection(si->label,si->title,FALSE);
ol.docify(si->title);
ol.endSection(si->label,FALSE);
}
ol.startTextBlock();
parseDoc(ol,defFileName,defLine,0,0,mainPage->doc);
......
......@@ -166,16 +166,27 @@ void LatexGenerator::init()
t << "\tpdflatex refman.tex" << endl << endl;
}
else // otherwise use ps2pdf: not as nice :(
// especially from the font point of view
{
#if defined(_MSC_VER)
// ps2pdf.bat does not work properly from a makefile using GNU make!
t << "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "
"-sOutputFile=refman.pdf -c save pop -f refman.ps" << endl << endl;
#else
t << "\tps2pdf refman.ps refman.pdf" << endl << endl;
#endif
}
t << "refman_2on1.ps: refman.ps" << endl
<< "\tpsnup -2 refman.ps >refman_2on1.ps" << endl
<< endl
<< "refman_2on1.pdf: refman_2on1.ps" << endl
#if defined(_MSC_VER)
// ps2pdf.bat does not work properly from a makefile using GNU make!
<< "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "
"-sOutputFile=refman_2on1.pdf -c save pop -f refman_2on1.ps" << endl
#else
<< "\tps2pdf refman_2on1.ps refman_2on1.pdf" << endl
#endif
<< endl
<< "refman.dvi: refman.tex doxygen.sty" << endl
<< "\techo \"Running latex...\"" << endl
......@@ -1069,7 +1080,7 @@ void LatexGenerator::addToIndex(const char *s1,const char *s2)
}
}
void LatexGenerator::writeSection(const char *lab,const char *title,bool sub)
void LatexGenerator::startSection(const char *lab,const char *,bool sub)
{
if (Config::pdfHyperFlag)
{
......@@ -1077,7 +1088,10 @@ void LatexGenerator::writeSection(const char *lab,const char *title,bool sub)
}
t << "\\";
if (sub) t << "subsection{"; else t << "section{";
docify(title);
}
void LatexGenerator::endSection(const char *lab,bool)
{
t << "}\\label{" << lab << "}" << endl;
}
......
......@@ -180,7 +180,8 @@ class LatexGenerator : public OutputGenerator
void endDescTitle() { t << "]"; }
void writeDescItem() { t << "\\par" << endl; }
void endDescList() { t << "\\end{Desc}" << endl; }
void writeSection(const char *,const char *,bool);
void startSection(const char *,const char *,bool);
void endSection(const char *,bool);
void writeSectionRef(const char *,const char *,const char *);
void writeSectionRefItem(const char *,const char *,const char *);
void writeSectionRefAnchor(const char *,const char *,const char *);
......
......@@ -170,7 +170,8 @@ class ManGenerator : public OutputGenerator
void endDescTitle();
void writeDescItem();
void endDescList() {}
void writeSection(const char *,const char *,bool) {}
void startSection(const char *,const char *,bool) {}
void endSection(const char *,bool) {}
void writeSectionRef(const char *,const char *,const char *) {}
void writeSectionRefItem(const char *,const char *,const char *) {}
void writeSectionRefAnchor(const char *,const char *,const char *) {}
......
......@@ -170,7 +170,8 @@ class OutputGenerator
virtual void endDescTitle() = 0;
virtual void writeDescItem() = 0;
virtual void endDescList() = 0;
virtual void writeSection(const char *,const char *,bool) = 0;
virtual void startSection(const char *,const char *,bool) = 0;
virtual void endSection(const char *,bool) = 0;
virtual void writeSectionRef(const char *,const char *,const char *) = 0;
virtual void writeSectionRefItem(const char *,const char *,const char *) = 0;
virtual void writeSectionRefAnchor(const char *,const char *,const char *) = 0;
......
......@@ -268,6 +268,7 @@ FORALL2(bool a1,bool a2,a1,a2)
FORALL2(int a1,bool a2,a1,a2)
FORALL1(IndexSections a1,a1)
FORALL2(const char *a1,const char *a2,a1,a2)
FORALL2(const char *a1,bool a2,a1,a2)
FORALL3(ClassDiagram &a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,bool a3,a1,a2,a3)
......
......@@ -303,8 +303,10 @@ class OutputList
{ forall(&OutputGenerator::startIndent); }
void endIndent()
{ forall(&OutputGenerator::endIndent); }
void writeSection(const char *lab,const char *title,bool sub)
{ forall(&OutputGenerator::writeSection,lab,title,sub); }
void startSection(const char *lab,const char *title,bool sub)
{ forall(&OutputGenerator::startSection,lab,title,sub); }
void endSection(const char *lab,bool sub)
{ forall(&OutputGenerator::endSection,lab,sub); }
void writeSectionRef(const char *page,const char *lab, const char *title)
{ forall(&OutputGenerator::writeSectionRef,page,lab,title); }
void writeSectionRefItem(const char *page,const char *lab, const char *title)
......@@ -406,6 +408,7 @@ class OutputList
#endif
FORALLPROTO2(int,bool);
FORALLPROTO2(const char *,const char *);
FORALLPROTO2(const char *,bool);
FORALLPROTO3(const char *,const char *,bool);
FORALLPROTO3(uchar,uchar,uchar);
FORALLPROTO3(const char *,const char *,const char *);
......
This diff is collapsed.
......@@ -166,7 +166,8 @@ class RTFGenerator : public OutputGenerator
void endDescTitle();
void writeDescItem();
void endDescList();
void writeSection(const char *,const char *,bool);
void startSection(const char *,const char *,bool);
void endSection(const char *,bool);
void writeSectionRef(const char *,const char *,const char *);
void writeSectionRefItem(const char *,const char *,const char *);
void writeSectionRefAnchor(const char *,const char *,const char *);
......
......@@ -309,7 +309,7 @@ static int yyread(char *buf,int max_size)
%}
CMD ("\\"|"@")
SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"ingroup")
SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"ingroup"|"latexonly"|"htmlonly")
BN [ \t\n\r]
BL [ \t\r]*"\n"
B [ \t]
......@@ -1901,7 +1901,10 @@ TITLE [tT][iI][tT][lL][eE]
<Function>"#" { lastCPPContext = YY_START;
BEGIN(SkipCPP);
}
<Function>[:;{] {
<Function>":" {
BEGIN(SkipInits);
}
<Function>[;{] {
current->name=current->name.simplifyWhiteSpace();
current->type=current->type.simplifyWhiteSpace();
current->args=current->args.simplifyWhiteSpace();
......@@ -1983,11 +1986,11 @@ TITLE [tT][iI][tT][lL][eE]
curlyCount=0;
BEGIN( SkipCurly ) ;
}
else if( *yytext == ':' )
{
//addToBody(yytext);
BEGIN( SkipInits ) ;
}
//else if( *yytext == ':' )
//{
// //addToBody(yytext);
// BEGIN( SkipInits ) ;
//}
else
{
if (previous->section!=Entry::VARIABLE_SEC)
......@@ -1998,9 +2001,11 @@ TITLE [tT][iI][tT][lL][eE]
<SkipInits>"{" {
//addToBody(yytext);
lastCurlyContext = FindMembers;
curlyCount=0;
BEGIN( SkipCurly ) ;
//lastCurlyContext = FindMembers;
//curlyCount=0;
//BEGIN( SkipCurly ) ;
unput('{');
BEGIN( Function );
}
<SkipCurly>"{" {
//addToBody(yytext);
......@@ -2186,7 +2191,7 @@ TITLE [tT][iI][tT][lL][eE]
}
<ClassVar>":" {
current->type.resize(0);
if (current->section == Entry::INTERFACE_SEC)
if (current->section == Entry::INTERFACE_SEC || current->section == Entry::STRUCT_SEC)
baseProt=Public;
else
baseProt=Private;
......@@ -2311,7 +2316,7 @@ TITLE [tT][iI][tT][lL][eE]
}
<Comment>. { current->program += *yytext ; }
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar>("//"{B}*)?"/*!" {
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits>("//"{B}*)?"/*!" {
//printf("Start doc block at %d\n",yyLineNr);
removeSlashes=(yytext[1]=='/');
tmpDocType=-1;
......@@ -2324,7 +2329,7 @@ TITLE [tT][iI][tT][lL][eE]
current->inside = current_root->name+"::";
BEGIN( Doc );
}
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar>("//"{B}*)?"/**"/[^/*] {
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits>("//"{B}*)?"/**"/[^/*] {
removeSlashes=(yytext[1]=='/');
lastDocContext = YY_START;
if (current_root->section & Entry::SCOPE_MASK)
......
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