summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/classdef.h2
-rw-r--r--src/code.l3
-rw-r--r--src/config.l16
-rw-r--r--src/defargs.l2
-rw-r--r--src/definition.h2
-rw-r--r--src/doc.l2
-rw-r--r--src/dot.cpp2
-rw-r--r--src/doxygen.cpp64
-rw-r--r--src/htmlhelp.cpp8
-rw-r--r--src/index.cpp6
-rw-r--r--src/reflist.h15
-rw-r--r--src/rtfgen.cpp57
-rw-r--r--src/scanner.l6
-rw-r--r--src/translator.h6
-rw-r--r--src/translator_adapter.h12
-rw-r--r--src/translator_br.h2
-rw-r--r--src/translator_cz.h2
-rw-r--r--src/translator_de.h2
-rw-r--r--src/translator_en.h14
-rw-r--r--src/translator_fr.h2
-rw-r--r--src/translator_hr.h2
-rw-r--r--src/translator_it.h8
-rw-r--r--src/translator_jp.h2
-rw-r--r--src/translator_nl.h14
-rw-r--r--src/translator_pl.h2
-rw-r--r--src/translator_pt.h2
-rw-r--r--src/translator_ro.h2
-rw-r--r--src/translator_ru.h2
-rw-r--r--src/translator_si.h2
-rw-r--r--src/translator_sr.h2
-rw-r--r--src/translator_tw.h2
-rw-r--r--src/util.h2
-rw-r--r--src/xmlgen.cpp19
33 files changed, 224 insertions, 62 deletions
diff --git a/src/classdef.h b/src/classdef.h
index 67c620f..fd7c1b4 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -163,6 +163,8 @@ class ClassDef : public Definition
*/
ClassDef *templateMaster() const { return m_templateMaster; }
+ IncludeInfo *includeInfo() const { return m_incInfo; }
+
UsesClassDict *usedImplementationClasses() const
{
return m_usesImplClassDict;
diff --git a/src/code.l b/src/code.l
index 63acbf9..59b0f16 100644
--- a/src/code.l
+++ b/src/code.l
@@ -662,6 +662,7 @@ static void generateClassOrGlobalLink(OutputDocInterface &ol,char *clName,int *c
{
Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope();
+ if (md->getGroupDef()) d = md->getGroupDef();
if (d && d->isLinkable() && md->isLinkable())
{
writeMultiLineCodeLink(ol,d->getReference(),d->getOutputFileBase(),md->getBodyAnchor(),clName);
@@ -718,6 +719,7 @@ static bool getLink(const char *className,
Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope();
+ if (md->getGroupDef()) d = md->getGroupDef();
if (d && d->isLinkable())
{
g_theCallContext.setClass(stripClassName(md->typeString()));
@@ -774,6 +776,7 @@ static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const c
Definition *xd = xmd->getOuterScope()==Doxygen::globalScope ?
xmd->getBodyDef() : xmd->getOuterScope();
+ if (xmd->getGroupDef()) xd = xmd->getGroupDef();
if (xd)
{
diff --git a/src/config.l b/src/config.l
index 3c647cc..8c3c50b 100644
--- a/src/config.l
+++ b/src/config.l
@@ -1857,6 +1857,22 @@ void Config::create()
FALSE
);
cb->addDependency("GENERATE_HTML");
+ cs = addString(
+ "CHM_FILE",
+ "If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can \n"
+ "be used to specify the file name of the resulting .chm file. You \n"
+ "can add a path in front of the file if the result should not be \n"
+ "written to the html output dir. \n"
+ );
+ cs->addDependency("GENERATE_HTML");
+ cs = addString(
+ "HHC_LOCATION",
+ "If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can \n"
+ "be used to specify the location (absolute path including file name) of \n"
+ "the HTML help compiler (hhc.exe). If non empty doxygen will try to run \n"
+ "the html help compiler on the generated index.hhp.\n"
+ );
+ cs->addDependency("GENERATE_HTML");
cb = addBool(
"GENERATE_CHI",
"If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag \n"
diff --git a/src/defargs.l b/src/defargs.l
index b88ef13..5a0feaf 100644
--- a/src/defargs.l
+++ b/src/defargs.l
@@ -256,7 +256,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
if (l>0)
{
int i=l-1;
- while (i>=0 && isspace(g_curArgTypeName.at(i))) i--;
+ while (i>=0 && (isspace(g_curArgTypeName.at(i)) || g_curArgTypeName.at(i)=='.')) i--;
while (i>=0 && isId(g_curArgTypeName.at(i))) i--;
//printf("g_curArgTypeName=`%s' i=%d\n",g_curArgTypeName.data(),i);
Argument *a = new Argument;
diff --git a/src/definition.h b/src/definition.h
index 91ebfd7..ad3da97 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -30,7 +30,7 @@ class MemberSDict;
class MemberDef;
class GroupDef;
class GroupList;
-class ListItemInfo;
+struct ListItemInfo;
/*! The common base class of all entity definitions found in the sources. */
class Definition
diff --git a/src/doc.l b/src/doc.l
index d8b00e2..ca6648c 100644
--- a/src/doc.l
+++ b/src/doc.l
@@ -940,6 +940,7 @@ static void checkArgName(const QCString &name,bool isParam)
for (ali.toFirst();(a=ali.current());++ali)
{
QCString argName = memberDef->isDefine() ? a->type : a->name;
+ if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
if (aName==argName)
{
//printf("adding `%s'\n",aName.data());
@@ -2938,6 +2939,7 @@ void parseDoc(OutputDocInterface &od,const char *fileName,int startLine,
for (ali.toFirst();(a=ali.current());++ali)
{
QCString argName = memberDef->isDefine() ? a->type : a->name;
+ if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
if (!argName.isEmpty() && paramsFound.find(argName)==0)
{
found = TRUE;
diff --git a/src/dot.cpp b/src/dot.cpp
index ef0e053..f3533b5 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -1613,7 +1613,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
convertMapFile(tmpout,baseName+".map");
if (!tmpstr.isEmpty())
{
- out << "<map name=\"" << mapName << "\">" << endl;
+ out << "<map name=\"" << mapName << "_map\">" << endl;
out << tmpstr;
out << "</map>" << endl;
}
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index e6951fe..90b1ab2 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -1441,6 +1441,56 @@ static int findFunctionPtr(const QCString &type,int *pLength=0)
}
}
+
+/*! Returns TRUE iff \a type is a class within scope \a context.
+ * Used to detect variable declarations that look like function prototypes.
+ */
+static bool isVarWithConstructor(Entry *root)
+{
+ static QRegExp initChars("[0-9\"'&*!^]+");
+ static QRegExp idChars("[a-z_A-Z][a-z_A-Z0-9]*");
+ if (root->type.isEmpty()) return FALSE;
+ Definition *ctx = 0;
+ //printf("isVarWithConstructor(%s,%s)\n",root->parent->name.data(),
+ // root->type.data());
+ if (root->parent->name) ctx=Doxygen::namespaceSDict.find(root->parent->name);
+ bool typeIsClass=getResolvedClass(ctx,root->type)!=0;
+ if (typeIsClass) // now we still have to check if the arguments are
+ // types or values. Since we do not have complete type info
+ // we need to rely on heuristics :-(
+ {
+ //printf("typeIsClass\n");
+ ArgumentList *al = root->argList;
+ if (al==0) return FALSE; // empty arg list -> function prototype.
+ ArgumentListIterator ali(*al);
+ Argument *a;
+ for (ali.toFirst();(a=ali.current());++ali)
+ {
+ //printf("a->name=%s a->type=%s\n",a->name.data(),a->type.data());
+ if (!a->name.isEmpty() || !a->defval.isEmpty()) return FALSE; // arg has (type,name) pair -> function prototype
+ if (a->type.isEmpty() || getResolvedClass(ctx,a->type)!=0) return FALSE; // arg type is a known type
+ if (a->type.find(initChars)==0) return TRUE; // argument type starts with typical initializer char
+ QCString resType=resolveTypeDef(ctx,a->type);
+ if (resType.isEmpty()) resType=a->type;
+ int len;
+ if (idChars.match(resType,0,&len)==0) // resType starts with identifier
+ {
+ resType=resType.left(len);
+ //printf("resType=%s\n",resType.data());
+ if (resType=="int" || resType=="long" || resType=="float" ||
+ resType=="double" || resType=="char" || resType=="signed" ||
+ resType=="const" || resType=="unsigned")
+ {
+ return FALSE; // type keyword -> function prototype
+ }
+ }
+ }
+ return TRUE;
+ }
+ // return type not a class -> function prototype
+ return FALSE;
+}
+
//----------------------------------------------------------------------
// Searches the Entry tree for Variable documentation sections.
// If found they are stored in their class or in the global list.
@@ -1454,6 +1504,9 @@ void buildVarList(Entry *root)
) ||
(root->section==Entry::FUNCTION_SEC && // or maybe a function pointer variable
findFunctionPtr(root->type)!=-1
+ ) ||
+ (root->section==Entry::FUNCTION_SEC && // class variable initialized by constructor
+ isVarWithConstructor(root)
)
)
) // documented variable
@@ -7662,5 +7715,16 @@ void generateOutput()
msg("Generating AutoGen DEF output...\n");
generateDEF();
}
+ if (Config_getBool("GENERATE_HTMLHELP") && !Config_getString("HHC_LOCATION").isEmpty())
+ {
+ msg("Running html help compiler...\n");
+ QString oldDir = QDir::currentDirPath();
+ QDir::setCurrent(Config_getString("HTML_OUTPUT"));
+ if (iSystem(Config_getString("HHC_LOCATION"), "index.hhp", FALSE))
+ {
+ err("Error: failed to run html help compiler on index.hhp");
+ }
+ QDir::setCurrent(oldDir);
+ }
}
diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp
index 6bdded6..4ca6188 100644
--- a/src/htmlhelp.cpp
+++ b/src/htmlhelp.cpp
@@ -387,8 +387,12 @@ void HtmlHelp::createProjectFile()
QCString indexName="index"+htmlFileExtension;
if (Config_getBool("GENERATE_TREEVIEW")) indexName="main"+htmlFileExtension;
- t << "[OPTIONS]\n"
- "Compatibility=1.1\n"
+ t << "[OPTIONS]\n";
+ if (!Config_getString("CHM_FILE").isEmpty())
+ {
+ t << "Compiled file=" << Config_getString("CHM_FILE") << "\n";
+ }
+ t << "Compatibility=1.1\n"
"Full-text search=Yes\n"
"Contents file=index.hhc\n"
"Default Window=main\n"
diff --git a/src/index.cpp b/src/index.cpp
index a9c52de..cd93267 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -930,7 +930,11 @@ void writeFileIndex(OutputList &ol)
path=stripFromPath(fd->getPath().copy());
}
QCString fullName=fd->name();
- if (!path.isEmpty()) fullName.prepend(path+"/");
+ if (!path.isEmpty())
+ {
+ if (path.at(path.length()-1)!='/') fullName.prepend("/");
+ fullName.prepend(path);
+ }
// --------------- LaTeX/RTF only -------------------------
#if 0
diff --git a/src/reflist.h b/src/reflist.h
index cb60dc2..d282c13 100644
--- a/src/reflist.h
+++ b/src/reflist.h
@@ -32,7 +32,16 @@ struct RefItem
bool written;
};
-/*! Singleton for the one and only RefList */
+/*! @brief List of cross-referenced items
+ *
+ * This class represents a list of items that are put
+ * at a certain point in the documentation by some special command
+ * and are collected in a list. The items cross-reference the
+ * documentation and the list.
+ *
+ * Examples are the todo list, the test list and the bug list,
+ * introduced by the \\todo, \\test, and \\bug commands respectively.
+ */
class RefList
{
public:
@@ -63,8 +72,4 @@ class RefList
BaseOutputDocInterface::SectionTypes m_type;
};
-//extern RefList todoList;
-//extern RefList testList;
-//extern RefList bugList;
-
#endif
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index 0b11da5..04ce7f4 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -839,7 +839,7 @@ void RTFGenerator::beginRTFDocument()
void RTFGenerator::beginRTFChapter()
{
t <<"\n";
- DBG_RTF(t << "{\\comment Begin Chapter}\n")
+ DBG_RTF(t << "{\\comment BeginRTFChapter}\n")
t << Rtf_Style_Reset;
// if we are compact, no extra page breaks...
@@ -859,7 +859,7 @@ void RTFGenerator::beginRTFChapter()
void RTFGenerator::beginRTFSection()
{
t <<"\n";
- DBG_RTF(t << "{\\comment Begin Section}\n")
+ DBG_RTF(t << "{\\comment BeginRTFSection}\n")
t << Rtf_Style_Reset;
// if we are compact, no extra page breaks...
@@ -896,11 +896,13 @@ void RTFGenerator::endFile()
void RTFGenerator::startProjectNumber()
{
+ DBG_RTF(t <<"{\\comment startProjectNumber }" << endl)
t << " ";
}
void RTFGenerator::endProjectNumber()
{
+ DBG_RTF(t <<"{\\comment endProjectNumber }" << endl)
}
void RTFGenerator::startIndexSection(IndexSections is)
@@ -1093,7 +1095,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << Rtf_Style_Reset << Rtf_Style["SubTitle"]->reference << endl; // set to title style
- t << "\\vertalc\\qc\\par\\par\\par\\par\\par\\par\\par";
+ t << "\\vertalc\\qc\\par\\par\\par\\par\\par\\par\\par\n";
if (logoFilename)
{
t << "{\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE " << logoFilename;
@@ -1131,14 +1133,23 @@ void RTFGenerator::endIndexSection(IndexSections is)
DBG_RTF(t << "{\\comment Table of contents}\n")
t << "\\vertalt\n";
t << Rtf_Style_Reset << endl;
+ t << Rtf_Style["Heading1"]->reference;
+ t << theTranslator->trRTFTableOfContents() << "\\par"<< endl;
+ t << Rtf_Style_Reset << "\\par" << endl;
t << "{\\field\\fldedit {\\*\\fldinst TOC \\\\f \\\\*MERGEFORMAT}{\\fldrslt Table of contents}}\\par\n";
t << Rtf_Style_Reset << endl;
-
}
break;
case isMainPage:
t << "\\par " << Rtf_Style_Reset << endl;
- t << "{\\tc \\v " << theTranslator->trMainPage() << "}"<< endl;
+ if (!Doxygen::mainPage || Doxygen::mainPage->title.isEmpty())
+ {
+ t << "{\\tc \\v " << theTranslator->trMainPage() << "}"<< endl;
+ }
+ else
+ {
+ t << "{\\tc \\v " << substitute(Doxygen::mainPage->title,"%","") << "}"<< endl;
+ }
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
if (Config_getBool("GENERATE_TREEVIEW")) t << "main"; else t << "index";
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
@@ -1369,10 +1380,10 @@ void RTFGenerator::endIndexSection(IndexSections is)
void RTFGenerator::lastIndexPage()
{
- DBG_RTF(t <<"{\\comment Begining Body of RTF Document}\n")
+ DBG_RTF(t <<"{\\comment Beginning Body of RTF Document}\n")
// end page and setup for rest of document
- t <<"\\sect \\sbkpage \\pgnrestart\n";
- t <<"\\sect \\sectd \\sbknone \\pgndec\n";
+ t <<"\\sect \\sbkpage \\pgndec \\pgnrestart\n";
+ t <<"\\sect \\sectd \\sbknone\n";
// set footer
t <<"{\\footer "<< Rtf_Style["Footer"]->reference << "{\\chpgn}}\n";
@@ -1386,9 +1397,8 @@ void RTFGenerator::writeStyleInfo(int)
void RTFGenerator::lineBreak()
{
+ DBG_RTF(t << "{\\comment (lineBreak)}" << endl)
t << "\\par" << endl;
- //newParagraph();
- //t << "\\line" << endl;
}
void RTFGenerator::writeString(const char *text)
@@ -1403,7 +1413,6 @@ void RTFGenerator::startIndexList()
incrementIndentLevel();
t << Rtf_Style_Reset << Rtf_LCList_DepthStyle() << endl;
newParagraph();
- m_omitParagraph=TRUE;
}
void RTFGenerator::endIndexList()
@@ -1412,7 +1421,6 @@ void RTFGenerator::endIndexList()
newParagraph();
t << "}";
decrementIndentLevel();
- m_omitParagraph=TRUE;
}
/*! start bullet list */
@@ -1431,7 +1439,6 @@ void RTFGenerator::endItemList()
DBG_RTF(t << "{\\comment (endItemList level=" << m_listLevel << ")}" << endl)
t << "}";
decrementIndentLevel();
- m_omitParagraph=TRUE;
}
/*! start enumeration list */
@@ -1442,10 +1449,6 @@ void RTFGenerator::startEnumList() // starts an enumeration list
incrementIndentLevel();
listItemInfo[m_listLevel].isEnum = TRUE;
listItemInfo[m_listLevel].number = 1;
- //t << Rtf_Style_Reset << Rtf_EList_DepthStyle() << endl;
- //newParagraph();
- //m_omitParagraph=TRUE;
-
}
/*! end enumeration list */
@@ -1455,7 +1458,6 @@ void RTFGenerator::endEnumList()
DBG_RTF(t << "{\\comment (endEnumList)}" << endl)
t << "}";
decrementIndentLevel();
- m_omitParagraph=TRUE;
}
/*! write bullet or enum item */
@@ -1474,7 +1476,6 @@ void RTFGenerator::writeListItem()
{
t << Rtf_BList_DepthStyle() << endl;
}
- m_omitParagraph=TRUE;
}
void RTFGenerator::writeIndexItem(const char *ref,const char *fn,
@@ -1494,7 +1495,6 @@ void RTFGenerator::writeIndexItem(const char *ref,const char *fn,
t << endl;
}
newParagraph();
- m_omitParagraph=TRUE;
}
//void RTFGenerator::writeIndexFileItem(const char *,const char *text)
@@ -1914,6 +1914,7 @@ void RTFGenerator::endMemberDoc()
void RTFGenerator::startDoxyAnchor(const char *,const char *,
const char *,const char *)
{
+ DBG_RTF(t << "{\\comment startDoxyAnchor}" << endl)
}
void RTFGenerator::endDoxyAnchor(const char *fName,const char *anchor)
@@ -1929,6 +1930,7 @@ void RTFGenerator::endDoxyAnchor(const char *fName,const char *anchor)
ref+=anchor;
}
+ DBG_RTF(t << "{\\comment endDoxyAnchor}" << endl)
t << "{\\bkmkstart ";
t << formatBmkStr(ref);
t << "}" << endl;
@@ -2050,7 +2052,6 @@ void RTFGenerator::endDescList()
DBG_RTF(t << "{\\comment (endDescList)}" << endl)
newParagraph();
decrementIndentLevel();
- m_omitParagraph = TRUE;
t << "}";
}
@@ -2082,6 +2083,7 @@ void RTFGenerator::startSection(const char *,const char *title,bool sub)
void RTFGenerator::endSection(const char *lab,bool)
{
+ DBG_RTF(t << "{\\comment (endSection)}" << endl)
newParagraph();
// make bookmark
writeAnchor(0,lab);
@@ -2269,6 +2271,7 @@ 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 << "_";
@@ -2300,7 +2303,6 @@ 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)
@@ -2418,7 +2420,6 @@ void RTFGenerator::endDescTableData()
{
DBG_RTF(t << "{\\comment (endDescTableData) }" << endl)
newParagraph();
- m_omitParagraph=TRUE;
}
// a style for list formatted as a "bulleted list"
@@ -2485,7 +2486,7 @@ const char * RTFGenerator::Rtf_Code_DepthStyle()
void RTFGenerator::startTextBlock(bool dense)
{
- DBG_RTF(t << "{\\comment Start TextBlock}" << endl)
+ DBG_RTF(t << "{\\comment startTextBlock}" << endl)
t << "{" << endl;
t << Rtf_Style_Reset;
if (dense) // no spacing between "paragraphs"
@@ -2501,15 +2502,16 @@ void RTFGenerator::startTextBlock(bool dense)
void RTFGenerator::endTextBlock()
{
newParagraph();
- DBG_RTF(t << "{\\comment End TextBlock}" << endl)
+ 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;
- m_omitParagraph = FALSE;
+ // Suppress multiple paragraphs in a row
+ m_omitParagraph = TRUE;
}
void RTFGenerator::startMemberSubtitle()
@@ -2936,7 +2938,6 @@ void RTFGenerator::endParamList()
DBG_RTF(t << "{\\comment (endParamList)}" << endl)
newParagraph();
decrementIndentLevel();
- m_omitParagraph = TRUE;
t << "}";
}
diff --git a/src/scanner.l b/src/scanner.l
index 9a76eab..095c1cd 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -2148,7 +2148,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
/*- Function argument reading rules ---------------------------------------*/
-<ReadFuncArgType>[^ \/\r\t\n\)\(\"\']+ { *copyArgString+=yytext;
+<ReadFuncArgType>[^ \/\r\t\n\)\(\"\']+ { *copyArgString+=yytext;
fullArgString+=yytext;
}
<CopyArgString>[^\n\\\"\']+ { *copyArgString+=yytext;
@@ -2183,7 +2183,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN( currentArgumentContext );
}
/* a special comment */
-<ReadFuncArgType>("/*"[*!]|"//"[/!])("<"?) {
+<ReadFuncArgType,ReadTempArgs>("/*"[*!]|"//"[/!])("<"?) {
if (currentArgumentContext==DefineEnd)
{
// for defines we interpret a comment
@@ -3934,7 +3934,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN( lastBriefContext );
}
<ClassDocBrief>{BS}{CMD}("brief"|"short"){BN}+ {
- lastBriefContext=YY_START;
+ //lastBriefContext=YY_START;
}
<ClassDocBrief>. { current->brief += *yytext; }
<ClassDocDefine>{ID}/"(" {
diff --git a/src/translator.h b/src/translator.h
index 6398ca4..093f4ad 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -371,6 +371,12 @@ class Translator
virtual QCString trImplementedFromList(int numEntries) = 0;
virtual QCString trImplementedInList(int numEntries) = 0;
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.16
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trRTFTableOfContents() = 0;
+
};
#endif
diff --git a/src/translator_adapter.h b/src/translator_adapter.h
index 932cfe3..5ef3094 100644
--- a/src/translator_adapter.h
+++ b/src/translator_adapter.h
@@ -40,7 +40,17 @@ class TranslatorAdapterBase : public Translator
};
-class TranslatorAdapter_1_2_13 : public TranslatorAdapterBase
+class TranslatorAdapter_1_2_16 : public TranslatorAdapterBase
+{
+ public:
+ virtual QCString updateNeededMessage()
+ { return createUpdateNeededMessage(idLanguage(),"release 1.2.16"); }
+
+ virtual QCString trRTFTableOfContents()
+ { return english.trRTFTableOfContents(); }
+};
+
+class TranslatorAdapter_1_2_13 : public TranslatorAdapter_1_2_16
{
public:
virtual QCString updateNeededMessage()
diff --git a/src/translator_br.h b/src/translator_br.h
index 74e1dea..eaf4cb2 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -23,7 +23,7 @@
#ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H
-class TranslatorBrazilian: public Translator
+class TranslatorBrazilian: public TranslatorAdapter_1_2_16
{
public:
diff --git a/src/translator_cz.h b/src/translator_cz.h
index a0001ca..74e2ac2 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -157,7 +157,7 @@
// probably slightly faster.
-class TranslatorCzech : public Translator
+class TranslatorCzech : public TranslatorAdapter_1_2_16
{
private:
/*! The decode() inline assumes the source written in the
diff --git a/src/translator_de.h b/src/translator_de.h
index db3427e..11fb085 100644
--- a/src/translator_de.h
+++ b/src/translator_de.h
@@ -68,7 +68,7 @@
#ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H
-class TranslatorGerman : public Translator
+class TranslatorGerman : public TranslatorAdapter_1_2_16
{
public:
diff --git a/src/translator_en.h b/src/translator_en.h
index c7ab6c7..fe88737 100644
--- a/src/translator_en.h
+++ b/src/translator_en.h
@@ -638,7 +638,7 @@ class TranslatorEnglish : public Translator
ClassDef::CompoundType compType,
bool isTemplate)
{
- QCString result=(QCString)clName+" ";
+ QCString result=(QCString)clName;
switch(compType)
{
case ClassDef::Class: result+=" Class"; break;
@@ -1392,6 +1392,18 @@ class TranslatorEnglish : public Translator
return "Implemented in "+trWriteList(numEntries)+".";
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.16
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used in RTF documentation as a heading for the Table
+ * of Contents.
+ */
+ virtual QCString trRTFTableOfContents()
+ {
+ return "Table of Contents";
+ }
+
};
#endif
diff --git a/src/translator_fr.h b/src/translator_fr.h
index 4611501..59119d4 100644
--- a/src/translator_fr.h
+++ b/src/translator_fr.h
@@ -39,7 +39,7 @@
#ifndef TRANSLATOR_FR_H
#define TRANSLATOR_FR_H
-class TranslatorFrench : public Translator
+class TranslatorFrench : public TranslatorAdapter_1_2_16
{
public:
QCString idLanguage()
diff --git a/src/translator_hr.h b/src/translator_hr.h
index 100d53c..baff5d5 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 Translator
+class TranslatorCroatian : public TranslatorAdapter_1_2_16
{
private:
/*! to avoid macro redefinition from translator_cz.h */
diff --git a/src/translator_it.h b/src/translator_it.h
index 3d49e6a..35f96d8 100644
--- a/src/translator_it.h
+++ b/src/translator_it.h
@@ -19,6 +19,8 @@
*
* Revision history
*
+ * 2002/07: modified trRelatedPagesDescription() method
+ * correct typo in trInclByDepGraph() method
* 2002/01: translated new items used since version 1.2.13
* updated e-mail address
* 2001/11: corrected the translation fixing the issues reported by the translator.pl script
@@ -62,7 +64,7 @@
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
-class TranslatorItalian : public Translator
+class TranslatorItalian : public TranslatorAdapter_1_2_16
{
public:
@@ -333,7 +335,7 @@ class TranslatorItalian : public Translator
/*! This is an introduction to the page with the list of related pages */
QCString trRelatedPagesDescription()
- { return "Questa è la lista di tutte le pagine di documentazione collegate fra loro:"; }
+ { return "Questa è la lista di tutte le pagine di documentazione generale:"; }
/*! This is an introduction to the page with the list of class/file groups */
QCString trModulesDescription()
@@ -1011,7 +1013,7 @@ class TranslatorItalian : public Translator
}
virtual QCString trInclByDepGraph()
{
- return "Queato grafo mostra quali file includono direttamente o indirettamente questo file:";
+ return "Questo grafo mostra quali altri file includono direttamente o indirettamente questo file:";
}
virtual QCString trSince()
{
diff --git a/src/translator_jp.h b/src/translator_jp.h
index 30ac856..2275ea8 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.h
@@ -61,7 +61,7 @@ class TranslatorJapaneseEn : public TranslatorEnglish
}
};
-class TranslatorJapanese : public Translator
+class TranslatorJapanese : public TranslatorAdapter_1_2_16
{
private:
/*! The decode() can change euc into sjis */
diff --git a/src/translator_nl.h b/src/translator_nl.h
index 631ed08..bc4eaca 100644
--- a/src/translator_nl.h
+++ b/src/translator_nl.h
@@ -272,7 +272,7 @@ class TranslatorDutch : public Translator
bool isTemplate)
// used as the title of the HTML page of a class/struct/union
{
- QCString result=(QCString)clName+" ";
+ QCString result=(QCString)clName;
if (isTemplate) result+=" Template";
switch(compType)
{
@@ -975,6 +975,10 @@ class TranslatorDutch : public Translator
return "Gebruikt";
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.13
+//////////////////////////////////////////////////////////////////////////
+
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
@@ -990,6 +994,14 @@ class TranslatorDutch : public Translator
{
return "Wordt ge&iuml;mplementeerd door "+trWriteList(numEntries)+".";
}
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.16
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trRTFTableOfContents()
+ { return "Inhoudsopgave"; }
+
};
#endif
diff --git a/src/translator_pl.h b/src/translator_pl.h
index 0e3ce6b..4951a6f 100644
--- a/src/translator_pl.h
+++ b/src/translator_pl.h
@@ -22,7 +22,7 @@
#include "translator_adapter.h"
-class TranslatorPolish : public Translator
+class TranslatorPolish : public TranslatorAdapter_1_2_16
{
public:
diff --git a/src/translator_pt.h b/src/translator_pt.h
index bc32c8a..3754517 100644
--- a/src/translator_pt.h
+++ b/src/translator_pt.h
@@ -34,7 +34,7 @@
#ifndef TRANSLATOR_PT_H
#define TRANSLATOR_PT_H
-class TranslatorPortuguese : public Translator
+class TranslatorPortuguese : public TranslatorAdapter_1_2_16
{
public:
diff --git a/src/translator_ro.h b/src/translator_ro.h
index 3383e0d..cc7183c 100644
--- a/src/translator_ro.h
+++ b/src/translator_ro.h
@@ -42,7 +42,7 @@
#define TRANSLATOR_RO_H
-class TranslatorRomanian: public Translator
+class TranslatorRomanian: public TranslatorAdapter_1_2_16
{
public:
diff --git a/src/translator_ru.h b/src/translator_ru.h
index e9f330a..d40f064 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 Translator
+class TranslatorRussian : public TranslatorAdapter_1_2_16
{
private:
/*! The Decode() inline assumes the source written in the
diff --git a/src/translator_si.h b/src/translator_si.h
index cef09f6..cef1f33 100644
--- a/src/translator_si.h
+++ b/src/translator_si.h
@@ -21,7 +21,7 @@
#define TRANSLATOR_SI_H
-class TranslatorSlovene : public Translator
+class TranslatorSlovene : public TranslatorAdapter_1_2_16
{
public:
QCString idLanguage()
diff --git a/src/translator_sr.h b/src/translator_sr.h
index aa5502b..71d66d5 100644
--- a/src/translator_sr.h
+++ b/src/translator_sr.h
@@ -20,7 +20,7 @@
// translation by Dejan D. M. Milosavljevic <dmilos@email.com>;<dmilosx@ptt.yu>
-class TranslatorSerbian : public Translator
+class TranslatorSerbian : public TranslatorAdapter_1_2_16
{
QCString decode(const QCString& sInput)
{
diff --git a/src/translator_tw.h b/src/translator_tw.h
index 6cef372..f8b218f 100644
--- a/src/translator_tw.h
+++ b/src/translator_tw.h
@@ -39,7 +39,7 @@
// Translator class (by the local maintainer) when the localized
// translator is made up-to-date again.
-class TranslatorChinesetraditional : public Translator
+class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
{
public:
diff --git a/src/util.h b/src/util.h
index a92f77c..61d9ff3 100644
--- a/src/util.h
+++ b/src/util.h
@@ -43,7 +43,7 @@ class MemberGroupSDict;
class Definition;
struct TagInfo;
class MemberNameInfoSDict;
-class ListItemInfo;
+struct ListItemInfo;
//--------------------------------------------------------------------
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index 9c694a8..567cf02 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -1508,6 +1508,25 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
+
+ IncludeInfo *ii=cd->includeInfo();
+ if (ii)
+ {
+ QCString nm = ii->includeName;
+ if (nm.isEmpty() && ii->fileDef) nm = ii->fileDef->docName();
+ if (!nm.isEmpty())
+ {
+ t << " <includes";
+ if (ii->fileDef && !ii->fileDef->isReference()) // TODO: support external references
+ {
+ t << " id=\"" << ii->fileDef->getOutputFileBase() << "\"";
+ }
+ t << " local=\"" << (ii->local ? "yes" : "no") << "\"";
+ t << nm;
+ t << "</includes>" << endl;
+ }
+ }
+
writeTemplateList(cd,t);
writeListOfAllMembers(cd,t);
MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict);