summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/classdef.cpp6
-rw-r--r--src/classdef.h2
-rw-r--r--src/doc.l22
-rw-r--r--src/dot.cpp29
-rw-r--r--src/dot.h4
-rw-r--r--src/doxygen.cpp8
-rw-r--r--src/htmlgen.cpp10
-rw-r--r--src/latexgen.cpp10
-rw-r--r--src/mangen.cpp1
-rw-r--r--src/rtfgen.cpp117
-rw-r--r--src/translator_br.h18
-rw-r--r--src/translator_cz.h19
-rw-r--r--src/translator_de.h16
-rw-r--r--src/translator_fr.h18
-rw-r--r--src/translator_hr.h14
-rw-r--r--src/translator_it.h18
-rw-r--r--src/translator_jp.h12
-rw-r--r--src/translator_pt.h16
-rw-r--r--src/translator_ru.h14
-rw-r--r--src/util.cpp27
20 files changed, 280 insertions, 101 deletions
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();
diff --git a/src/doc.l b/src/doc.l
index ca6648c..6104962 100644
--- a/src/doc.l
+++ b/src/doc.l
@@ -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);
}
diff --git a/src/dot.h b/src/dot.h
index 220b8e9..78c7e7d 100644
--- a/src/dot.h
+++ b/src/dot.h
@@ -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"));