diff options
author | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2002-07-15 20:10:02 (GMT) |
---|---|---|
committer | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2002-07-15 20:10:02 (GMT) |
commit | b860a5cc743f3297002876b58d4db5e504f4294d (patch) | |
tree | b9a5247ad8e1b7ecda53346aa9e29e3e10167e5b | |
parent | bcbf69496a8e7e703ecf4fb6e5de264f86ebea84 (diff) | |
download | Doxygen-b860a5cc743f3297002876b58d4db5e504f4294d.zip Doxygen-b860a5cc743f3297002876b58d4db5e504f4294d.tar.gz Doxygen-b860a5cc743f3297002876b58d4db5e504f4294d.tar.bz2 |
Release-1.2.17
-rw-r--r-- | INSTALL | 4 | ||||
-rw-r--r-- | README | 4 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | doc/Makefile.in | 2 | ||||
-rw-r--r-- | doc/Makefile.win_make.in | 2 | ||||
-rw-r--r-- | doc/Makefile.win_nmake.in | 2 | ||||
-rw-r--r-- | doc/commands.doc | 4 | ||||
-rw-r--r-- | doc/index.doc | 4 | ||||
-rw-r--r-- | doc/language.doc | 34 | ||||
-rw-r--r-- | packages/rpm/doxygen.spec | 2 | ||||
-rw-r--r-- | src/classdef.cpp | 6 | ||||
-rw-r--r-- | src/classdef.h | 2 | ||||
-rw-r--r-- | src/doc.l | 22 | ||||
-rw-r--r-- | src/dot.cpp | 29 | ||||
-rw-r--r-- | src/dot.h | 4 | ||||
-rw-r--r-- | src/doxygen.cpp | 8 | ||||
-rw-r--r-- | src/htmlgen.cpp | 10 | ||||
-rw-r--r-- | src/latexgen.cpp | 10 | ||||
-rw-r--r-- | src/mangen.cpp | 1 | ||||
-rw-r--r-- | src/rtfgen.cpp | 117 | ||||
-rw-r--r-- | src/translator_br.h | 18 | ||||
-rw-r--r-- | src/translator_cz.h | 19 | ||||
-rw-r--r-- | src/translator_de.h | 16 | ||||
-rw-r--r-- | src/translator_fr.h | 18 | ||||
-rw-r--r-- | src/translator_hr.h | 14 | ||||
-rw-r--r-- | src/translator_it.h | 18 | ||||
-rw-r--r-- | src/translator_jp.h | 12 | ||||
-rw-r--r-- | src/translator_pt.h | 16 | ||||
-rw-r--r-- | src/translator_ru.h | 14 | ||||
-rw-r--r-- | src/util.cpp | 27 | ||||
-rwxr-xr-x | tmake/lib/hpux-acc/tmake.conf | 6 | ||||
-rwxr-xr-x | tmake/lib/irix-n32/tmake.conf | 2 | ||||
-rwxr-xr-x | tmake/lib/solaris-cc/tmake.conf | 4 |
33 files changed, 314 insertions, 139 deletions
@@ -1,6 +1,6 @@ -DOXYGEN Version 1.2.16-20020707 +DOXYGEN Version 1.2.17 Please read the installation section of the manual for instructions. -------- -Dimitri van Heesch (07 July 2002) +Dimitri van Heesch (15 July 2002) @@ -1,4 +1,4 @@ -DOXYGEN Version 1.2.16_20020707 +DOXYGEN Version 1.2.17 Please read INSTALL for compilation instructions. @@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (07 July 2002) +Dimitri van Heesch (dimitri@stack.nl) (15 July 2002) @@ -1 +1 @@ -1.2.16-20020707 +1.2.17 diff --git a/doc/Makefile.in b/doc/Makefile.in index 0c8711b..ae932f7 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -23,7 +23,7 @@ all: language FORCE @cp Makefile.latex ../latex/Makefile @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >../latex/doxygen_manual.tex @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >../latex/doxygen.sty - @epstopdf doxygen_logo.eps -o=../latex/doxygen_logo.pdf + @epstopdf doxygen_logo.eps --outfile=../latex/doxygen_logo.pdf clean: rm -rf ../html ../latex *.bak translator_report.txt diff --git a/doc/Makefile.win_make.in b/doc/Makefile.win_make.in index bcf28e4..bc1b772 100644 --- a/doc/Makefile.win_make.in +++ b/doc/Makefile.win_make.in @@ -22,7 +22,7 @@ all: language FORCE @copy Makefile.latex ..\latex\Makefile @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >..\latex\doxygen_manual.tex @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >..\latex\doxygen.sty - @epstopdf doxygen_logo.eps -o=..\latex\doxygen_logo.pdf + @epstopdf doxygen_logo.eps --outfile=..\latex\doxygen_logo.pdf clean: del /s /q ..\html ..\latex diff --git a/doc/Makefile.win_nmake.in b/doc/Makefile.win_nmake.in index d38116a..9775095 100644 --- a/doc/Makefile.win_nmake.in +++ b/doc/Makefile.win_nmake.in @@ -22,7 +22,7 @@ all: language FORCE @copy Makefile.latex ..\latex\Makefile @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >..\latex\doxygen_manual.tex @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >..\latex\doxygen.sty - @epstopdf doxygen_logo.eps -o=..\latex\doxygen_logo.pdf + @epstopdf doxygen_logo.eps --outfile=..\latex\doxygen_logo.pdf clean: del /s /q ..\html ..\latex diff --git a/doc/commands.doc b/doc/commands.doc index ee52cbe..5ceb1df 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -1106,10 +1106,6 @@ ALIASES = "english=\if english" \ \warning This command only works inside related page documentation and \e not in other documentation blocks! - \sa - Section \ref cmdpage "\\page" for an example of the - \ref cmdsection "\\section" command. - <hr> \subsection cmdsubsection \subsection <subsection-name> (subsection title) diff --git a/doc/index.doc b/doc/index.doc index 83c3613..d4b492a 100644 --- a/doc/index.doc +++ b/doc/index.doc @@ -26,8 +26,8 @@ Version: $(VERSION) \endif <h2>Introduction</h2> -Doxygen is a documentation system for C++, Java, IDL -(Corba, Microsoft and KDE-DCOP flavors) and C. +Doxygen is a documentation system for C++, C, Java, IDL +(Corba, Microsoft, and KDE-DCOP flavors) and to some extend PHP. It can help you in three ways: <ol> diff --git a/doc/language.doc b/doc/language.doc index 2c15c0f..5433748 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means that the text fragments that doxygen generates can be produced in languages other than English (the default) at configuration time. -Currently (version 1.2.14-20020317), 27 languages +Currently (version 1.2.16-20020707), 27 languages are supported (sorted alphabetically): Brazilian Portuguese, Chinese, Chinese Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French, @@ -55,7 +55,7 @@ when the translator was updated. <TD>Brazilian Portuguese</TD> <TD>Fabio "FJTC" Jun Takada Chino</TD> <TD>chino@NOSPAM.icmc.sc.usp.br</TD> - <TD>1.2.16</TD> + <TD>up-to-date</TD> </TR> <TR BGCOLOR="#ffffff"> <TD>Chinese</TD> @@ -73,13 +73,13 @@ when the translator was updated. <TD>Croatian</TD> <TD>Boris Bralo</TD> <TD>boris.bralo@NOSPAM.zg.tel.hr</TD> - <TD>1.2.16</TD> + <TD>up-to-date</TD> </TR> <TR BGCOLOR="#ffffff"> <TD>Czech</TD> <TD>Petr Přikryl</TD> <TD>prikrylp@NOSPAM.skil.cz</TD> - <TD>1.2.16</TD> + <TD>up-to-date</TD> </TR> <TR BGCOLOR="#ffffff"> <TD>Danish</TD> @@ -109,7 +109,7 @@ when the translator was updated. <TD>French</TD> <TD>Xavier Outhier</TD> <TD>xouthier@NOSPAM.yahoo.fr</TD> - <TD>1.2.16</TD> + <TD>up-to-date</TD> </TR> <TR BGCOLOR="#ffffff"> <TD>German</TD> @@ -133,13 +133,13 @@ when the translator was updated. <TD>Italian</TD> <TD>Alessandro Falappa<br>Ahmed Aldo Faisal</TD> <TD>alessandro@NOSPAM.falappa.net<br>aaf23@NOSPAM.cam.ac.uk</TD> - <TD>1.2.16</TD> + <TD>up-to-date</TD> </TR> <TR BGCOLOR="#ffffff"> <TD>Japanese</TD> <TD>Ryunosuke Sato<br>Kenji Nagamatsu</TD> <TD>puyo@NOSPAM.mint.freemail.ne.jp<br>naga@NOSPAM.joyful.club.ne.jp</TD> - <TD>1.2.16</TD> + <TD>up-to-date</TD> </TR> <TR BGCOLOR="#ffffff"> <TD>Korean</TD> @@ -163,7 +163,7 @@ when the translator was updated. <TD>Portuguese</TD> <TD>Rui Godinho Lopes</TD> <TD>ruiglopes@NOSPAM.yahoo.com</TD> - <TD>1.2.16</TD> + <TD>up-to-date</TD> </TR> <TR BGCOLOR="#ffffff"> <TD>Romanian</TD> @@ -175,7 +175,7 @@ when the translator was updated. <TD>Russian</TD> <TD>Alexandr Chelpanov</TD> <TD>cav@NOSPAM.cryptopro.ru</TD> - <TD>1.2.16</TD> + <TD>up-to-date</TD> </TR> <TR BGCOLOR="#ffffff"> <TD>Serbian</TD> @@ -224,16 +224,16 @@ when the translator was updated. {\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\ \hline \hline - Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt chino@icmc.sc.usp.br} & 1.2.16 \\ + Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt chino@icmc.sc.usp.br} & up-to-date \\ \hline Chinese & Wei Liu & {\tt liuwei@asiainfo.com} & 1.2.13 \\ & Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\ \hline Chinese Traditional & Gary Lee & {\tt garylee@ecosine.com.tw} & 1.2.16 \\ \hline - Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & 1.2.16 \\ + Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\ \hline - Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & 1.2.16 \\ + Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\ \hline Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & 1.2.7 \\ \hline @@ -243,7 +243,7 @@ when the translator was updated. \hline Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} & obsolete \\ \hline - French & Xavier Outhier & {\tt xouthier@yahoo.fr} & 1.2.16 \\ + French & Xavier Outhier & {\tt xouthier@yahoo.fr} & up-to-date \\ \hline German & Jens Seidel & {\tt jensseidel@users.sf.net} & 1.2.16 \\ & Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} & \\ @@ -252,10 +252,10 @@ when the translator was updated. \hline Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt foldvari@diatronltd.com} & 1.2.1 \\ \hline - Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & 1.2.16 \\ + Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & up-to-date \\ & Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & \\ \hline - Japanese & Ryunosuke Sato & {\tt puyo@mint.freemail.ne.jp} & 1.2.16 \\ + Japanese & Ryunosuke Sato & {\tt puyo@mint.freemail.ne.jp} & up-to-date \\ & Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & \\ \hline Korean & Richard Kim & {\tt ryk@dspwiz.com} & 1.2.13 \\ @@ -265,11 +265,11 @@ when the translator was updated. Polish & Piotr Kaminski & {\tt Piotr.Kaminski@ctm.gdynia.pl} & 1.2.16 \\ & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & \\ \hline - Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & 1.2.16 \\ + Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & up-to-date \\ \hline Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.16 \\ \hline - Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & 1.2.16 \\ + Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\ \hline Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.2.16 \\ \hline diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index fca793c..b23e6d8 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,6 +1,6 @@ Summary: A documentation system for C/C++. Name: doxygen -Version: 1.2.16_20020707 +Version: 1.2.17 Release: 1 Epoch: 1 Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz diff --git a/src/classdef.cpp b/src/classdef.cpp index 0f7672b..0185d47 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -580,9 +580,10 @@ static void writeInheritanceSpecifier(OutputList &ol,BaseClassDef *bcd) } } -void ClassDef::setIncludeFile(FileDef *fd,const char *includeName,bool local) +void ClassDef::setIncludeFile(FileDef *fd, + const char *includeName,bool local, bool force) { - //printf("ClassDef::setInclude(%p,%s,%d)\n",fd,includeName,local); + //printf("ClassDef::setIncludeFile(%p,%s,%d,%d)\n",fd,includeName,local,force); if (!m_incInfo) m_incInfo=new IncludeInfo; if ((includeName && m_incInfo->includeName.isEmpty()) || (fd!=0 && m_incInfo->fileDef==0) @@ -593,6 +594,7 @@ void ClassDef::setIncludeFile(FileDef *fd,const char *includeName,bool local) m_incInfo->includeName = includeName; m_incInfo->local = local; } + if (force && includeName) m_incInfo->includeName = includeName; } // TODO: fix this: a nested template class can have multiple outer templates diff --git a/src/classdef.h b/src/classdef.h index fd7c1b4..1c5ce25 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -247,7 +247,7 @@ class ClassDef : public Definition */ void insertBaseClass(ClassDef *,const char *name,Protection p,Specifier s,const char *t=0); void insertSubClass(ClassDef *,Protection p,Specifier s,const char *t=0); - void setIncludeFile(FileDef *fd,const char *incName,bool local); + void setIncludeFile(FileDef *fd,const char *incName,bool local,bool force); void insertMember(MemberDef *); void insertUsedFile(const char *); void computeAnchors(); @@ -2254,17 +2254,21 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? <DocScan>{CMD}"skipline"{BN}+ { BEGIN( DocSkiplineKey ); firstLine=TRUE; } <DocScan>{CMD}"line"{BN}+ { BEGIN( DocLineKey ); firstLine=TRUE; } <DocScan>{CMD}"until"{BN}+ { BEGIN( DocUntilKey ); firstLine=TRUE; } -<DocSkipKey>[^ \t\r\n]+ { +<DocSkipKey>[^\r\n]+ { if (includeFileLength>0) - skipUntil(yytext); + { + QCString pattern=yytext; + skipUntil(pattern.stripWhiteSpace()); + } BEGIN( DocScan ); } -<DocLineKey>[^ \t\r\n]+ { +<DocLineKey>[^\r\n]+ { if (includeFileLength>0) { + QCString pattern=yytext; if (firstLine) outDoc->startCodeFragment(); firstLine=FALSE; - showLine(*outDoc,yytext); + showLine(*outDoc,pattern.stripWhiteSpace()); BEGIN( DocKeyEnd ); } else @@ -2272,12 +2276,13 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? BEGIN( DocScan ); } } -<DocSkiplineKey>[^ \t\r\n]+ { +<DocSkiplineKey>[^\r\n]+ { if (includeFileLength>0) { + QCString pattern=yytext; if (firstLine) outDoc->startCodeFragment(); firstLine=FALSE; - skipLine(*outDoc,yytext); + skipLine(*outDoc,pattern.stripWhiteSpace()); BEGIN( DocKeyEnd ); } else @@ -2285,12 +2290,13 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? BEGIN( DocScan ); } } -<DocUntilKey>[^ \t\r\n]+ { +<DocUntilKey>[^\r\n]+ { if (includeFileLength>0) { + QCString pattern=yytext; if (firstLine) outDoc->startCodeFragment(); firstLine=FALSE; - showUntil(*outDoc,yytext); + showUntil(*outDoc,pattern.stripWhiteSpace()); BEGIN( DocKeyEnd ); } else diff --git a/src/dot.cpp b/src/dot.cpp index f3533b5..a5ad72b 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -1745,9 +1745,32 @@ void generateGraphLegend(const char *path) } -void writeDotGraphFromFile(const char *inFile,const char *outFile, - GraphOutputFormat format) +void writeDotGraphFromFile(const char *inFile,const char *outDir, + const char *outFile,GraphOutputFormat format) { + QCString absOutFile = outDir; +#ifdef _WIN32 + absOutFile+='\\'; +#else + absOutFile+='/'; +#endif + absOutFile+=outFile; + + // chdir to the output dir, so dot can find the font file. + QCString oldDir = convertToQCString(QDir::currentDirPath()); + // go to the html output directory (i.e. path) + QDir::setCurrent(outDir); + + //{ // copy input file to output dir. + // QFile inf(inFile,IO_ReadOnly); + // QFileInfo infinfo(inf); + // uint s = infinfo.size(); + // QByteArray a(s); + // inf.readBlock(a.data(),s); + // QFile outf(outDir,IO_WriteOnly); + // outf.writeBlock(a.data(),s); + //} + QCString dotArgs(4096); QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); QCString imgName = (QCString)outFile+"."+imgExt; @@ -1779,5 +1802,7 @@ void writeDotGraphFromFile(const char *inFile,const char *outFile, } if (format==BITMAP) checkDotResult(imgName); + + QDir::setCurrent(oldDir); } @@ -168,6 +168,6 @@ class DotInclDepGraph }; void generateGraphLegend(const char *path); -void writeDotGraphFromFile(const char *inFile,const char *outFile, - GraphOutputFormat format); +void writeDotGraphFromFile(const char *inFile,const char *outDir, + const char *outFile,GraphOutputFormat format); diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 90b1ab2..36c86c3 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -424,11 +424,11 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root) } if (fd->generateSourceFile()) // generate code for header { - cd->setIncludeFile(fd,iName,local); + cd->setIncludeFile(fd,iName,local,!root->includeName.isEmpty()); } else // put #include in the class documentation without link { - cd->setIncludeFile(0,iName,local); + cd->setIncludeFile(0,iName,local,FALSE); } } } @@ -6408,7 +6408,7 @@ static void readFiles(BufStr &output) bool multiLineIsBrief = Config_getBool("MULTILINE_CPP_IS_BRIEF"); BufStr tempBuf(10000); - BufStr *bufPtr = multiLineIsBrief ? &tempBuf : &output; + BufStr *bufPtr = multiLineIsBrief ? &output : &tempBuf; // add begin filename marker bufPtr->addChar(0x06); @@ -6431,7 +6431,7 @@ static void readFiles(BufStr &output) bufPtr->addChar('\n'); /* to prevent problems under Windows ? */ - if (multiLineIsBrief) + if (!multiLineIsBrief) { convertCppComments(&tempBuf,&output); } diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index b165408..cdacaaa 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -919,14 +919,8 @@ void HtmlGenerator::startDotFile(const char *name,bool hasCaption) { baseName=baseName.right(baseName.length()-i-1); } - QCString outName = Config_getString("HTML_OUTPUT")+ -#ifdef _WIN32 - "\\" -#else - "/" -#endif - +baseName; - writeDotGraphFromFile(name,outName,BITMAP); + QCString outDir = Config_getString("HTML_OUTPUT"); + writeDotGraphFromFile(name,outDir,baseName,BITMAP); t << "<div align=\"center\">" << endl; t << "<img src=\"" << baseName << "." << Config_getEnum("DOT_IMAGE_FORMAT") << "\" alt=\"" diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 90b8bc4..fa6a104 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -1795,14 +1795,8 @@ void LatexGenerator::startDotFile(const char *name,bool hasCaption) { baseName=baseName.right(baseName.length()-i-1); } - QCString outName = Config_getString("LATEX_OUTPUT")+ -#ifdef _WIN32 - "\\" -#else - "/" -#endif - +baseName; - writeDotGraphFromFile(name,outName,EPS); + QCString outDir = Config_getString("LATEX_OUTPUT"); + writeDotGraphFromFile(name,outDir,baseName,EPS); if (hasCaption) { t << "\\begin{figure}[H]" << endl; diff --git a/src/mangen.cpp b/src/mangen.cpp index 8812387..ec3eff1 100644 --- a/src/mangen.cpp +++ b/src/mangen.cpp @@ -118,6 +118,7 @@ static QCString buildFileName(const char *name) case '~': case '%': case '+': + case '/': fileName+="_"; break; default: diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index 04ce7f4..7e813f9 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -60,37 +60,42 @@ static QCString documentType; static QCString documentId; static QCString keywords; -// it is undocumented as far as I know, but -// "."'s in a bookmarkname are converted to "_"'s -// when an RTF file is read in... +static QCString g_nextTag( "AAAAAAAAAA" ); +static QDict<QCString> g_tagDict( 5003 ); + static QCString formatBmkStr(const char *name) { - QCString result=name; - if (!result.isEmpty()) - { - char c; - char *p=result.data(); - while ((c=*p)) - { - switch(c) - { - case '.': - // fall through - case ':': - *p='_'; - break; - default: - break; - } - p++; - } - // Word doesn't like bookmarks that do not start with a alphabetical char - if (!isalpha(result.at(0))) - { - result.prepend("BM"); - } - } - return result; + // To overcome the 40-character tag limitation, we + // substitute a short arbitrary string for the name + // supplied, and keep track of the correspondence + // between names and strings. + QCString key( name ); + QCString* tag = g_tagDict.find( key ); + if ( !tag ) + { + // This particular name has not yet been added + // to the list. Add it, associating it with the + // next tag value, and increment the next tag. + tag = new QCString( g_nextTag.copy() ); // Make sure to use a deep copy! + g_tagDict.insert( key, tag ); + + // This is the increment part + char* nxtTag = g_nextTag.data() + g_nextTag.length() - 1; + for ( unsigned int i = 0; i < g_nextTag.length(); ++i, --nxtTag ) + { + if ( ( ++(*nxtTag) ) > 'Z' ) + { + (*nxtTag) = 'A'; + } + else + { + // Since there was no carry, we can stop now + break; + } + } + } + + return *tag; } static QCString dateToRTFDateString() @@ -723,6 +728,8 @@ void RTFGenerator::init() } Rtf_Style.setAutoDelete(TRUE); + g_tagDict.setAutoDelete(TRUE); + // first duplicate strings of Rtf_Style_Default const struct Rtf_Style_Default* def = Rtf_Style_Default; while(def->reference != 0) @@ -1413,6 +1420,7 @@ void RTFGenerator::startIndexList() incrementIndentLevel(); t << Rtf_Style_Reset << Rtf_LCList_DepthStyle() << endl; newParagraph(); + m_omitParagraph = TRUE; } void RTFGenerator::endIndexList() @@ -1421,6 +1429,7 @@ void RTFGenerator::endIndexList() newParagraph(); t << "}"; decrementIndentLevel(); + m_omitParagraph = TRUE; } /*! start bullet list */ @@ -1439,6 +1448,7 @@ void RTFGenerator::endItemList() DBG_RTF(t << "{\\comment (endItemList level=" << m_listLevel << ")}" << endl) t << "}"; decrementIndentLevel(); + m_omitParagraph = TRUE; } /*! start enumeration list */ @@ -1458,6 +1468,7 @@ void RTFGenerator::endEnumList() DBG_RTF(t << "{\\comment (endEnumList)}" << endl) t << "}"; decrementIndentLevel(); + m_omitParagraph = TRUE; } /*! write bullet or enum item */ @@ -1476,6 +1487,7 @@ void RTFGenerator::writeListItem() { t << Rtf_BList_DepthStyle() << endl; } + m_omitParagraph = TRUE; } void RTFGenerator::writeIndexItem(const char *ref,const char *fn, @@ -1495,6 +1507,7 @@ void RTFGenerator::writeIndexItem(const char *ref,const char *fn, t << endl; } newParagraph(); + m_omitParagraph = TRUE; } //void RTFGenerator::writeIndexFileItem(const char *,const char *text) @@ -2052,6 +2065,7 @@ void RTFGenerator::endDescList() DBG_RTF(t << "{\\comment (endDescList)}" << endl) newParagraph(); decrementIndentLevel(); + m_omitParagraph = TRUE; t << "}"; } @@ -2271,13 +2285,23 @@ void RTFGenerator::endMemberItem(bool) void RTFGenerator::writeAnchor(const char *fileName,const char *name) { - DBG_RTF(t <<"{\\comment writeAncheor }" << endl) - t << "{\\bkmkstart "; - if (fileName) t << formatBmkStr(fileName); - if (fileName && name) t << "_"; - if (name) t << formatBmkStr(name); - t << "}" << endl; - t << "{\\bkmkend " << formatBmkStr(name) << "}" << endl; + QCString anchor; + if (fileName) + { + anchor+=fileName; + } + if (fileName && name) + { + anchor+='_'; + } + if (name) + { + anchor+=name; + } + + DBG_RTF(t <<"{\\comment writeAncheor (" << anchor << ")}" << endl) + t << "{\\bkmkstart " << formatBmkStr(anchor) << "}" << endl; + t << "{\\bkmkend " << formatBmkStr(anchor) << "}" << endl; } void RTFGenerator::WriteRTFReference(const char *label) @@ -2303,6 +2327,7 @@ void RTFGenerator::endCodeFragment() //t << Rtf_Style_Reset << styleStack.top() << endl; DBG_RTF(t << "{\\comment (endCodeFragment) }" << endl) t << "}" << endl; + m_omitParagraph = TRUE; } void RTFGenerator::writeNonBreakableSpace(int) @@ -2356,19 +2381,13 @@ void RTFGenerator::startDotFile(const char *name,bool) { baseName=baseName.right(baseName.length()-i-1); } - QCString outName = Config_getString("RTF_OUTPUT")+ -#ifdef _WIN32 - "\\" -#else - "/" -#endif - +baseName; - writeDotGraphFromFile(name,outName,BITMAP); + QCString outDir = Config_getString("RTF_OUTPUT"); + writeDotGraphFromFile(name,outDir,baseName,BITMAP); newParagraph(); t << "{" << endl; t << Rtf_Style_Reset << endl; t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; - t << outName; + t << outDir << "\\" << baseName; t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << "}" << endl; } @@ -2413,13 +2432,14 @@ void RTFGenerator::endDescTableTitle() void RTFGenerator::startDescTableData() { DBG_RTF(t << "{\\comment (startDescTableData) }" << endl) - m_omitParagraph=FALSE; + m_omitParagraph = FALSE; } void RTFGenerator::endDescTableData() { DBG_RTF(t << "{\\comment (endDescTableData) }" << endl) newParagraph(); + m_omitParagraph = TRUE; } // a style for list formatted as a "bulleted list" @@ -2504,14 +2524,14 @@ void RTFGenerator::endTextBlock() newParagraph(); DBG_RTF(t << "{\\comment endTextBlock}" << endl) t << "}" << endl; + m_omitParagraph = TRUE; } void RTFGenerator::newParagraph() { DBG_RTF(t << "{\\comment (newParagraph)}" << endl) if (!m_omitParagraph) t << "\\par" << endl; - // Suppress multiple paragraphs in a row - m_omitParagraph = TRUE; + m_omitParagraph = FALSE; } void RTFGenerator::startMemberSubtitle() @@ -2938,6 +2958,7 @@ void RTFGenerator::endParamList() DBG_RTF(t << "{\\comment (endParamList)}" << endl) newParagraph(); decrementIndentLevel(); + m_omitParagraph = TRUE; t << "}"; } diff --git a/src/translator_br.h b/src/translator_br.h index eaf4cb2..ad51e49 100644 --- a/src/translator_br.h +++ b/src/translator_br.h @@ -13,9 +13,11 @@ * Brazilian Portuguese version by * Fabio "FJTC" Jun Takada Chino <chino@icmc.sc.usp.br> * http://www.icmc.sc.usp.br/~chino - * Version: 1.2.13.2 (2002/05/10) + * Version: 1.2.17 (2002/07/10) * * History: + * 1.2.17 (2002/07/10): + * - Updated to Doxygen 1.2.17. * 1.2.13.2 (2002/05/10): * - Latex Babel package language name fixed. * - "Estrura" bug identified and fixed (Thanks to Jorge Ramos). @@ -23,7 +25,7 @@ #ifndef TRANSLATOR_BR_H #define TRANSLATOR_BR_H -class TranslatorBrazilian: public TranslatorAdapter_1_2_16 +class TranslatorBrazilian: public Translator { public: @@ -1334,5 +1336,17 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_16 return "Implementado em "+trWriteList(numEntries)+"."; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return "Conteúdo"; + } + }; #endif diff --git a/src/translator_cz.h b/src/translator_cz.h index 74e2ac2..d5b5f27 100644 --- a/src/translator_cz.h +++ b/src/translator_cz.h @@ -138,6 +138,9 @@ // 2002/03/05 // - ... forgot to replace TranslatorAdapter... base class by Translator. // +// 2002/07/08 (my birthday! ;) +// - The new trRTFTableOfContents() implemented. +// // Todo // ---- // - The trReimplementedFromList() should pass the kind of the @@ -157,7 +160,7 @@ // probably slightly faster. -class TranslatorCzech : public TranslatorAdapter_1_2_16 +class TranslatorCzech : public Translator { private: /*! The decode() inline assumes the source written in the @@ -1502,7 +1505,19 @@ class TranslatorCzech : public TranslatorAdapter_1_2_16 */ virtual QCString trImplementedInList(int numEntries) { - return "Implementováno v "+trWriteList(numEntries)+"."; + return decode("Implementováno v "+trWriteList(numEntries)+"."); + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return "Obsah"; } }; diff --git a/src/translator_de.h b/src/translator_de.h index 11fb085..c818fdd 100644 --- a/src/translator_de.h +++ b/src/translator_de.h @@ -58,10 +58,13 @@ // - trCompoundReference(), trLegendDocs() updated // - Removed some TODO's // -// 2002/02/13 Oliver Brandt (o.brandt@tu-bs.de) +// 2001/02/13 Oliver Brandt (o.brandt@tu-bs.de) // - Updated for "new since 1.2.13" version // - Removed some TODO's // +// 2002-07-08 Oliver Brandt (o.brandt@tu-bs.de) +// - Updated for "new since 1.2.16" version +// // Todo: // - see FIXME @@ -1392,6 +1395,17 @@ class TranslatorGerman : public TranslatorAdapter_1_2_16 return "Implementiert in " + trWriteList(numEntries) + "."; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + + /* used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return "Inhaltsverzeichnis"; + } }; #endif diff --git a/src/translator_fr.h b/src/translator_fr.h index 59119d4..f8ffa45 100644 --- a/src/translator_fr.h +++ b/src/translator_fr.h @@ -35,11 +35,13 @@ * -------------+------------------------------------------------------------ * 2002-01-23 | Update for new since 1.2.13 * -------------+------------------------------------------------------------ + * 2002-07-11 | Update for new since 1.2.16 + * -------------+------------------------------------------------------------ */ #ifndef TRANSLATOR_FR_H #define TRANSLATOR_FR_H -class TranslatorFrench : public TranslatorAdapter_1_2_16 +class TranslatorFrench : public Translator { public: QCString idLanguage() @@ -1254,5 +1256,19 @@ class TranslatorFrench : public TranslatorAdapter_1_2_16 return "Implémenté dans "+trWriteList(numEntries)+"."; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return "Table des matières"; + } + + + }; #endif diff --git a/src/translator_hr.h b/src/translator_hr.h index baff5d5..f6081db 100644 --- a/src/translator_hr.h +++ b/src/translator_hr.h @@ -50,7 +50,7 @@ #ifndef TRANSLATOR_HR_H #define TRANSLATOR_HR_H -class TranslatorCroatian : public TranslatorAdapter_1_2_16 +class TranslatorCroatian : public Translator { private: /*! to avoid macro redefinition from translator_cz.h */ @@ -1040,6 +1040,18 @@ class TranslatorCroatian : public TranslatorAdapter_1_2_16 { return "Implementirano u "+trWriteList(numEntries)+"."; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return decode("Sadr¾aj"); + } + }; #endif diff --git a/src/translator_it.h b/src/translator_it.h index 35f96d8..a24f381 100644 --- a/src/translator_it.h +++ b/src/translator_it.h @@ -19,7 +19,8 @@ * * Revision history * - * 2002/07: modified trRelatedPagesDescription() method + * 2002/07: translated new items used since version 1.2.16 + * 2002/06: modified trRelatedPagesDescription() method * correct typo in trInclByDepGraph() method * 2002/01: translated new items used since version 1.2.13 * updated e-mail address @@ -64,7 +65,7 @@ #ifndef TRANSLATOR_IT_H #define TRANSLATOR_IT_H -class TranslatorItalian : public TranslatorAdapter_1_2_16 +class TranslatorItalian : public Translator { public: @@ -1344,6 +1345,19 @@ class TranslatorItalian : public TranslatorAdapter_1_2_16 { return "Implementato in "+trWriteList(numEntries)+"."; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return "Sommario"; + } + }; #endif diff --git a/src/translator_jp.h b/src/translator_jp.h index 2275ea8..0f81f01 100644 --- a/src/translator_jp.h +++ b/src/translator_jp.h @@ -61,7 +61,7 @@ class TranslatorJapaneseEn : public TranslatorEnglish } }; -class TranslatorJapanese : public TranslatorAdapter_1_2_16 +class TranslatorJapanese : public Translator { private: /*! The decode() can change euc into sjis */ @@ -1364,7 +1364,17 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_16 { return trWriteList(numEntries)+decode("¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹")+"."; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return decode("Ìܼ¡"); + } }; #endif diff --git a/src/translator_pt.h b/src/translator_pt.h index 3754517..7ebc4fa 100644 --- a/src/translator_pt.h +++ b/src/translator_pt.h @@ -19,6 +19,8 @@ * * VERSION HISTORY * --------------- + * 005 10 july 2002 + * ! Updated for doxygen v1.2.16 * 004 03 march 2002 * ! Updated for doxygen v1.2.14 * 003 23 november 2001 @@ -34,7 +36,7 @@ #ifndef TRANSLATOR_PT_H #define TRANSLATOR_PT_H -class TranslatorPortuguese : public TranslatorAdapter_1_2_16 +class TranslatorPortuguese : public Translator { public: @@ -1368,6 +1370,18 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_16 return "Implementado em "+trWriteList(numEntries)+"."; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return "Índice"; + } + }; #endif diff --git a/src/translator_ru.h b/src/translator_ru.h index d40f064..dafc470 100644 --- a/src/translator_ru.h +++ b/src/translator_ru.h @@ -50,7 +50,7 @@ #ifndef TRANSLATOR_RU_H #define TRANSLATOR_RU_H -class TranslatorRussian : public TranslatorAdapter_1_2_16 +class TranslatorRussian : public Translator { private: /*! The Decode() inline assumes the source written in the @@ -1394,6 +1394,18 @@ class TranslatorRussian : public TranslatorAdapter_1_2_16 return decode("úÁÍÅÝÁÅÔÓÑ × ")+trWriteList(numEntries)+"."; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return decode("ïÇÌÁ×ÌÅÎÉÅ"); + } + }; #endif diff --git a/src/util.cpp b/src/util.cpp index 8af87d8..4ca7d8e 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -363,7 +363,7 @@ int guessSection(const char *name) QCString resolveTypeDef(Definition *context,const QCString &qualifiedName, Definition **typedefContext) { - //printf("resolveTypeDef(%s,%s)\n", + //printf("<<resolveTypeDef(%s,%s)\n", // context ? context->name().data() : "<none>",qualifiedName.data()); QCString result; if (qualifiedName.isEmpty()) return result; @@ -399,7 +399,7 @@ QCString resolveTypeDef(Definition *context,const QCString &qualifiedName, while ((is=getScopeFragment(resScopeName,ps,&l))!=-1) { QCString qualScopePart = resScopeName.mid(is,l); - QCString tmp = resolveTypeDef(context,qualScopePart); + QCString tmp = resolveTypeDef(mContext,qualScopePart); if (!tmp.isEmpty()) qualScopePart=tmp; resScope = resScope->findInnerCompound(qualScopePart); //printf("qualScopePart=`%s' resScope=%p\n",qualScopePart.data(),resScope); @@ -444,7 +444,7 @@ QCString resolveTypeDef(Definition *context,const QCString &qualifiedName, // step 3: get the member's type if (md) { - //printf("Found typedef name `%s' in scope `%s' value=`%s'\n", + //printf(">>resolveTypeDef: Found typedef name `%s' in scope `%s' value=`%s'\n", // qualifiedName.data(),context->name().data(),md->typeString() // ); result=md->typeString(); @@ -452,13 +452,14 @@ QCString resolveTypeDef(Definition *context,const QCString &qualifiedName, } else { - //printf("Typedef `%s' not found in scope `%s'!\n", + //printf(">>resolveTypeDef: Typedef `%s' not found in scope `%s'!\n", // qualifiedName.data(),context ? context->name().data() : "<global>"); } return result; } + /*! Get a class definition given its name. * Returns 0 if the class is not found. */ @@ -517,6 +518,7 @@ ClassDef *getResolvedClass( { //printf(" typedef value=%s typedefScope=%s\n",subst.data(), // typedefScope?typedefScope->qualifiedName().data():0); + // strip * and & from n int ip=subst.length()-1; while (ip>=0 && (subst.at(ip)=='*' || subst.at(ip)=='&' || subst.at(ip)==' ')) ip--; @@ -533,11 +535,12 @@ ClassDef *getResolvedClass( int count=0; // recursion detection guard QCString newSubst; QCString typeName = subst; + //printf( "---> subst=%s\n",subst.data()); - //if (index!=-1) typeName.prepend(name.left(index)+"::"); while (!(newSubst=resolveTypeDef(typedefScope,typeName)).isEmpty() && count<10) { + //printf( "---> newSubst=%s\n",newSubst.data()); if (typeName==newSubst) { cd = Doxygen::classSDict.find(subst); // for breaking typedef struct A A; @@ -649,7 +652,10 @@ QCString removeRedundantWhiteSpace(const QCString &s) { result+=", "; } - else if (i>0 && isId(s.at(i)) && s.at(i-1)==')') + else if (i>0 && + (isId(s.at(i)) && s.at(i-1)==')') || + (s.at(i)=='\'' && s.at(i-1)==' ') + ) { result+=' '; result+=s.at(i); @@ -1105,6 +1111,14 @@ QCString dateToString(bool includeTime) //return dtString; } +QCString yearToString() +{ + const QDate &d=QDate::currentDate(); + QCString result; + result.sprintf("%d", d.year()); + return result; +} + //---------------------------------------------------------------------- // recursive function that returns the number of branches in the @@ -2719,6 +2733,7 @@ QCString substituteKeywords(const QCString &s,const char *title) if (title) result = substitute(result,"$title",title); result = substitute(result,"$datetime",dateToString(TRUE)); result = substitute(result,"$date",dateToString(FALSE)); + result = substitute(result,"$year",yearToString()); result = substitute(result,"$doxygenversion",versionString); result = substitute(result,"$projectname",Config_getString("PROJECT_NAME")); result = substitute(result,"$projectnumber",Config_getString("PROJECT_NUMBER")); diff --git a/tmake/lib/hpux-acc/tmake.conf b/tmake/lib/hpux-acc/tmake.conf index 1cd3940..2c49784 100755 --- a/tmake/lib/hpux-acc/tmake.conf +++ b/tmake/lib/hpux-acc/tmake.conf @@ -32,7 +32,7 @@ TMAKE_LIBDIR_X11 = /usr/lib/X11R6 TMAKE_INCDIR_QT = $(QTDIR)/include TMAKE_LIBDIR_QT = $(QTDIR)/lib TMAKE_INCDIR_OPENGL = -TMAKE_LIBDIR_OPENGL = +TMAKE_LIBDIR_OPENGL = /opt/graphics/OpenGL/lib TMAKE_LINK = aCC TMAKE_LINK_SHLIB = aCC @@ -44,9 +44,9 @@ TMAKE_LFLAGS_SONAME = TMAKE_HPUX_SHLIB = 1 TMAKE_LIBS = -TMAKE_LIBS_X11 = -lXext -lX11 -lm +TMAKE_LIBS_X11 = -lXext -lX11 -lm -lICE -lSM TMAKE_LIBS_QT = -lqt -TMAKE_LIBS_QT_OPENGL = -lqgl +TMAKE_LIBS_QT_OPENGL = -lqgl -lGL TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu TMAKE_LIBS_YACC = -ly diff --git a/tmake/lib/irix-n32/tmake.conf b/tmake/lib/irix-n32/tmake.conf index cc5e4f4..bc05cd2 100755 --- a/tmake/lib/irix-n32/tmake.conf +++ b/tmake/lib/irix-n32/tmake.conf @@ -45,7 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname, TMAKE_LIBS = TMAKE_LIBS_X11 = -lXext -lX11 -lm TMAKE_LIBS_QT = -lqt -TMAKE_LIBS_QT_OPENGL = -lqgl +TMAKE_LIBS_QT_OPENGL = -lqgl -lGL TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu TMAKE_MOC = moc diff --git a/tmake/lib/solaris-cc/tmake.conf b/tmake/lib/solaris-cc/tmake.conf index 6e857c9..a9054d0 100755 --- a/tmake/lib/solaris-cc/tmake.conf +++ b/tmake/lib/solaris-cc/tmake.conf @@ -44,9 +44,9 @@ TMAKE_LFLAGS_SHLIB = -G -h $(TARGET1) TMAKE_LFLAGS_SONAME = TMAKE_LIBS = -TMAKE_LIBS_X11 = -lXext -lX11 -lm +TMAKE_LIBS_X11 = -lXext -lX11 -lm -lICE -lSM TMAKE_LIBS_QT = -lqt -TMAKE_LIBS_QT_OPENGL = -lqgl +TMAKE_LIBS_QT_OPENGL = -lqgl -lGL TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu TMAKE_MOC = moc |