Commit 95fd5f1c authored by dimitri's avatar dimitri

Release-1.5.5

parent 38c6a14b
DOXYGEN Version 1.5.4-20080123 DOXYGEN Version 1.5.5
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (23 January 2008) Dimitri van Heesch (10 February 2008)
DOXYGEN Version 1.5.4_20080123 DOXYGEN Version 1.5.5
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (23 January 2008) Dimitri van Heesch (dimitri@stack.nl) (10 February 2008)
...@@ -221,9 +221,6 @@ Step2::Step2(QWidget *parent) : QWidget(parent,"Step2") ...@@ -221,9 +221,6 @@ Step2::Step2(QWidget *parent) : QWidget(parent,"Step2")
layout->addWidget(m_optimizeLang); layout->addWidget(m_optimizeLang);
layout->addStretch(1); layout->addStretch(1);
connect(m_crossRef,SIGNAL(stateChanged(int)),
parent,SLOT(changeCrossRefState(int)));
} }
bool Step2::crossReferencingEnabled() const bool Step2::crossReferencingEnabled() const
...@@ -621,44 +618,6 @@ Wizard::Wizard(QWidget *parent=0) : QTabDialog(parent) ...@@ -621,44 +618,6 @@ Wizard::Wizard(QWidget *parent=0) : QTabDialog(parent)
setCancelButton(); setCancelButton();
} }
void Wizard::changeCallGraphState(int state)
{
if (state==QButton::On && !m_step2->crossReferencingEnabled())
{
if (QMessageBox::question(this,"This option depends on another option",
"The call graph option requires that cross-referencing "
"of source code is enabled.\nDo you want to enable this "
"option?",QMessageBox::Yes,QMessageBox::No)==QMessageBox::Yes)
{
m_step2->enableCrossReferencing();
}
else
{
m_step4->disableCallGraphs();
}
}
}
void Wizard::changeCrossRefState(int state)
{
if (state==QButton::Off && m_step4->callGraphEnabled())
{
if (QMessageBox::question(this,"Another option depends on this one",
"The call graph option requires that cross-referencing "
"of source code is enabled.\nDo you want to disable the call "
"graph option?",QMessageBox::Yes,QMessageBox::No
)==QMessageBox::Yes
)
{
m_step4->disableCallGraphs();
}
else
{
m_step2->enableCrossReferencing();
}
}
}
//========================================================================== //==========================================================================
MainWidget::MainWidget(QWidget *parent) MainWidget::MainWidget(QWidget *parent)
...@@ -1339,7 +1298,7 @@ void MainWidget::about() ...@@ -1339,7 +1298,7 @@ void MainWidget::about()
QTextStream t(&msg,IO_WriteOnly); QTextStream t(&msg,IO_WriteOnly);
t << QString("<qt><center>A tool to configure and run doxygen version ")+versionString+ t << QString("<qt><center>A tool to configure and run doxygen version ")+versionString+
" on your source files.</center><p><br>" " on your source files.</center><p><br>"
"<center>Written by<br> Dimitri van Heesch<br>&copy; 2000-2006</center><p>" "<center>Written by<br> Dimitri van Heesch<br>&copy; 2000-2008</center><p>"
"</qt>"; "</qt>";
QMessageBox::about(this,"Doxygen GUI",msg); QMessageBox::about(this,"Doxygen GUI",msg);
} }
......
...@@ -225,10 +225,6 @@ class Wizard : public QTabDialog ...@@ -225,10 +225,6 @@ class Wizard : public QTabDialog
void setInheritanceGraph(bool enable) { m_step4->setInheritanceGraph(enable); } void setInheritanceGraph(bool enable) { m_step4->setInheritanceGraph(enable); }
void setCallGraph(bool enable) { m_step4->setCallGraph(enable); } void setCallGraph(bool enable) { m_step4->setCallGraph(enable); }
public slots:
void changeCallGraphState(int state);
void changeCrossRefState(int state);
private: private:
Step1 *m_step1; Step1 *m_step1;
Step2 *m_step2; Step2 *m_step2;
......
...@@ -17,10 +17,10 @@ ...@@ -17,10 +17,10 @@
doxygen_version_major=1 doxygen_version_major=1
doxygen_version_minor=5 doxygen_version_minor=5
doxygen_version_revision=4 doxygen_version_revision=5
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package. #NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20080123 doxygen_version_mmn=NO
bin_dirs=`echo $PATH | sed -e "s/:/ /g"` bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......
...@@ -208,6 +208,8 @@ followed by the descriptions of the tags grouped by category. ...@@ -208,6 +208,8 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_sip_support SIP_SUPPORT \refitem cfg_sip_support SIP_SUPPORT
\refitem cfg_skip_function_macros SKIP_FUNCTION_MACROS \refitem cfg_skip_function_macros SKIP_FUNCTION_MACROS
\refitem cfg_sort_brief_docs SORT_BRIEF_DOCS \refitem cfg_sort_brief_docs SORT_BRIEF_DOCS
\refitem cfg_sort_by_scope_name SORT_BY_SCOPE_NAME
\refitem cfg_sort_group_names SORT_GROUP_NAMES
\refitem cfg_sort_member_docs SORT_MEMBER_DOCS \refitem cfg_sort_member_docs SORT_MEMBER_DOCS
\refitem cfg_source_browser SOURCE_BROWSER \refitem cfg_source_browser SOURCE_BROWSER
\refitem cfg_strip_code_comments STRIP_CODE_COMMENTS \refitem cfg_strip_code_comments STRIP_CODE_COMMENTS
...@@ -682,6 +684,26 @@ function's detailed documentation block. ...@@ -682,6 +684,26 @@ function's detailed documentation block.
by member name. If set to \c NO (the default) the members will appear in by member name. If set to \c NO (the default) the members will appear in
declaration order. declaration order.
\anchor cfg_sort_group_names
<dt>\c SORT_GROUP_NAMES <dd>
\addindex SORT_GROUP_NAMES
If the \c SORT_GROUP_NAMES tag is set to \c YES then doxygen will sort the
hierarchy of group names into alphabetical order. If set to \c NO (the default)
the group names will appear in their defined order.
\anchor cfg_sort_by_scope_name
<dt>\c SORT_BY_SCOPE_NAME <dd>
\addindex SORT_BY_SCOPE_NAME
If the \c SORT_BY_SCOPE_NAME tag is set to \c YES, the class list will be
sorted by fully-qualified names, including namespaces. If set to
NO (the default), the class list will be sorted only by class name,
not including the namespace part.
@note This option is not very useful if \c HIDE_SCOPE_NAMES is set to \c YES.
@note This option applies only to the class list, not to the
alphabetical list.
\anchor cfg_generate_deprecatedlist \anchor cfg_generate_deprecatedlist
<dt>\c GENERATE_DEPRECATEDLIST <dd> <dt>\c GENERATE_DEPRECATEDLIST <dd>
\addindex GENERATE_DEPRECATEDLIST \addindex GENERATE_DEPRECATEDLIST
...@@ -977,8 +999,10 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn" ...@@ -977,8 +999,10 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
<dt>\c SOURCE_BROWSER <dd> <dt>\c SOURCE_BROWSER <dd>
\addindex SOURCE_BROWSER \addindex SOURCE_BROWSER
If the \c SOURCE_BROWSER tag is set to \c YES then a list of source files will If the \c SOURCE_BROWSER tag is set to \c YES then a list of source files will \n"
be generated. Documented entities will be cross-referenced with these sources. be generated. Documented entities will be cross-referenced with these sources. \n"
Note: To get rid of all source code in the generated output, make sure also \n"
\c VERBATIM_HEADERS is set to NO. \n"
\anchor cfg_inline_sources \anchor cfg_inline_sources
<dt>\c INLINE_SOURCES <dd> <dt>\c INLINE_SOURCES <dd>
......
...@@ -27,7 +27,7 @@ Li Daobing: lidaobing@gmail.com ...@@ -27,7 +27,7 @@ Li Daobing: lidaobing@gmail.com
Wei Liu: liuwei@asiainfo.com Wei Liu: liuwei@asiainfo.com
TranslatorChinesetraditional TranslatorChinesetraditional
Daniel YC Lin: dlin@taifex.com.tw Daniel YC Lin: dlin.tw@gmail.com
Gary Lee: garywlee@gmail.com Gary Lee: garywlee@gmail.com
TranslatorCroatian TranslatorCroatian
...@@ -90,7 +90,7 @@ TranslatorMacedonian ...@@ -90,7 +90,7 @@ TranslatorMacedonian
Slave Jovanovski: slavejovanovski@yahoo.com Slave Jovanovski: slavejovanovski@yahoo.com
TranslatorPersian TranslatorPersian
Ali Nadalizadeh: nadalisoft@yahoo.com Ali Nadalizadeh: nadalizadeh@gmail.com
TranslatorPolish TranslatorPolish
Piotr Kaminski: Piotr.Kaminski@ctm.gdynia.pl Piotr Kaminski: Piotr.Kaminski@ctm.gdynia.pl
......
...@@ -61,6 +61,11 @@ Here is the list of tags supported by doxygen: ...@@ -61,6 +61,11 @@ Here is the list of tags supported by doxygen:
<li><tt>\<summary\></tt> Identifies the brief description. <li><tt>\<summary\></tt> Identifies the brief description.
Similar to using \ref cmdbrief "\\brief". Similar to using \ref cmdbrief "\\brief".
<li><tt>\<term\></tt> Part of a <tt>\<list\></tt> command. <li><tt>\<term\></tt> Part of a <tt>\<list\></tt> command.
<li><tt>\<typeparam name="paramName"\></tt> Marks a piece of text as the documentation
for type parameter "paramName". Similar to
using \ref cmdparam "\\param".
<li><tt>\<typeparamref name="paramName"\></tt> Refers to a parameter with name
"paramName". Similar to using \ref cmda "\\a".
<li><tt>\<value\></tt> Identifies a property. Ignored by doxygen. <li><tt>\<value\></tt> Identifies a property. Ignored by doxygen.
</ul> </ul>
......
...@@ -3058,6 +3058,11 @@ QCString ClassDef::className() const ...@@ -3058,6 +3058,11 @@ QCString ClassDef::className() const
return m_impl->className; return m_impl->className;
}; };
void ClassDef::setClassName(const char *name)
{
m_impl->className = name;
}
void ClassDef::addListReferences() void ClassDef::addListReferences()
{ {
bool fortranOpt=Config_getBool("OPTIMIZE_FOR_FORTRAN"); bool fortranOpt=Config_getBool("OPTIMIZE_FOR_FORTRAN");
......
...@@ -284,6 +284,7 @@ class ClassDef : public Definition ...@@ -284,6 +284,7 @@ class ClassDef : public Definition
void setIsStatic(bool b); void setIsStatic(bool b);
void setIsObjectiveC(bool b); void setIsObjectiveC(bool b);
void setCompoundType(CompoundType t); void setCompoundType(CompoundType t);
void setClassName(const char *name);
void setTemplateArguments(ArgumentList *al); void setTemplateArguments(ArgumentList *al);
void setTemplateBaseClassNames(QDict<int> *templateNames); void setTemplateBaseClassNames(QDict<int> *templateNames);
......
...@@ -91,6 +91,7 @@ CommandMap cmdMap[] = ...@@ -91,6 +91,7 @@ CommandMap cmdMap[] =
{ "version", CMD_VERSION }, { "version", CMD_VERSION },
{ "warning", CMD_WARNING }, { "warning", CMD_WARNING },
{ "throws", CMD_EXCEPTION }, { "throws", CMD_EXCEPTION },
{ "tparam", CMD_TPARAM },
{ "\\", CMD_BSLASH }, { "\\", CMD_BSLASH },
{ "@", CMD_AT }, { "@", CMD_AT },
{ "<", CMD_LESS }, { "<", CMD_LESS },
...@@ -156,7 +157,7 @@ CommandMap htmlTagMap[] = ...@@ -156,7 +157,7 @@ CommandMap htmlTagMap[] =
{ "c", XML_C }, { "c", XML_C },
// { "code", XML_CODE }, <= ambigious <code> is also a HTML tag // { "code", XML_CODE }, <= ambigious <code> is also a HTML tag
{ "description",XML_DESCRIPTION }, { "description", XML_DESCRIPTION },
{ "example", XML_EXAMPLE }, { "example", XML_EXAMPLE },
{ "exception", XML_EXCEPTION }, { "exception", XML_EXCEPTION },
{ "include", XML_INCLUDE }, { "include", XML_INCLUDE },
...@@ -166,6 +167,8 @@ CommandMap htmlTagMap[] = ...@@ -166,6 +167,8 @@ CommandMap htmlTagMap[] =
{ "para", XML_PARA }, { "para", XML_PARA },
{ "param", XML_PARAM }, { "param", XML_PARAM },
{ "paramref", XML_PARAMREF }, { "paramref", XML_PARAMREF },
{ "typeparam", XML_TYPEPARAM },
{ "typeparamref", XML_TYPEPARAMREF },
{ "permission", XML_PERMISSION }, { "permission", XML_PERMISSION },
{ "remarks", XML_REMARKS }, { "remarks", XML_REMARKS },
{ "returns", XML_RETURNS }, { "returns", XML_RETURNS },
......
...@@ -109,7 +109,8 @@ enum CommandType ...@@ -109,7 +109,8 @@ enum CommandType
CMD_MANONLY = 75, CMD_MANONLY = 75,
CMD_ENDMANONLY = 76, CMD_ENDMANONLY = 76,
CMD_INCWITHLINES = 77, CMD_INCWITHLINES = 77,
CMD_INHERITDOC = 78 CMD_INHERITDOC = 78,
CMD_TPARAM = 79 | SIMPLESECT_BIT
}; };
enum HtmlTagType enum HtmlTagType
...@@ -152,7 +153,7 @@ enum HtmlTagType ...@@ -152,7 +153,7 @@ enum HtmlTagType
XML_C = XML_CmdMask + 0, XML_C = XML_CmdMask + 0,
XML_CODE = XML_CmdMask + 1, XML_CODE = XML_CmdMask + 1,
XML_DESCRIPTION= XML_CmdMask + 2, XML_DESCRIPTION = XML_CmdMask + 2,
XML_EXAMPLE = XML_CmdMask + 3, XML_EXAMPLE = XML_CmdMask + 3,
XML_EXCEPTION = XML_CmdMask + 4, XML_EXCEPTION = XML_CmdMask + 4,
XML_INCLUDE = XML_CmdMask + 5, XML_INCLUDE = XML_CmdMask + 5,
...@@ -169,8 +170,9 @@ enum HtmlTagType ...@@ -169,8 +170,9 @@ enum HtmlTagType
XML_SEEALSO = XML_CmdMask + 16, XML_SEEALSO = XML_CmdMask + 16,
XML_SUMMARY = XML_CmdMask + 17, XML_SUMMARY = XML_CmdMask + 17,
XML_TERM = XML_CmdMask + 18, XML_TERM = XML_CmdMask + 18,
XML_VALUE = XML_CmdMask + 19 XML_TYPEPARAM = XML_CmdMask + 19,
XML_TYPEPARAMREF = XML_CmdMask + 20,
XML_VALUE = XML_CmdMask + 21
}; };
class Mapper class Mapper
......
...@@ -766,9 +766,9 @@ static void addDocCrossReference(MemberDef *src,MemberDef *dst) ...@@ -766,9 +766,9 @@ static void addDocCrossReference(MemberDef *src,MemberDef *dst)
static bool callerGraph = Config_getBool("CALLER_GRAPH"); static bool callerGraph = Config_getBool("CALLER_GRAPH");
static bool callGraph = Config_getBool("CALL_GRAPH"); static bool callGraph = Config_getBool("CALL_GRAPH");
//printf("--> addDocCrossReference src=%s,dst=%s\n",src->name().data(),dst->name().data());
if (dst->isTypedef() || dst->isEnumerate()) return; // don't add types if (dst->isTypedef() || dst->isEnumerate()) return; // don't add types
//printf("addDocCrossReference src=%s,dst=%s\n",src->name().data(),dst->name().data()); if ((referencedByRelation || callerGraph || dst->hasCallerGraph()) &&
if ((referencedByRelation || callerGraph) &&
(src->isFunction() || src->isSlot()) (src->isFunction() || src->isSlot())
) )
{ {
...@@ -784,7 +784,7 @@ static void addDocCrossReference(MemberDef *src,MemberDef *dst) ...@@ -784,7 +784,7 @@ static void addDocCrossReference(MemberDef *src,MemberDef *dst)
mdDecl->addSourceReferencedBy(src); mdDecl->addSourceReferencedBy(src);
} }
} }
if ((referencesRelation || callGraph) && if ((referencesRelation || callGraph || src->hasCallGraph()) &&
(src->isFunction() || src->isSlot()) (src->isFunction() || src->isSlot())
) )
{ {
...@@ -2407,7 +2407,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP} ...@@ -2407,7 +2407,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
g_code->codify(yytext); g_code->codify(yytext);
endFontClass(); endFontClass();
} }
<Body>"$"?"this->" { g_code->codify(yytext); } <Body,FuncCall>"$"?"this->" { g_code->codify(yytext); }
<Body>"."|"->" { <Body>"."|"->" {
g_code->codify(yytext); g_code->codify(yytext);
g_memCallContext = YY_START; g_memCallContext = YY_START;
......
...@@ -122,33 +122,33 @@ static DocCmdMap docCmdMap[] = ...@@ -122,33 +122,33 @@ static DocCmdMap docCmdMap[] =
// command name handler function ends brief description // command name handler function ends brief description
{ "brief", &handleBrief, FALSE }, { "brief", &handleBrief, FALSE },
{ "short", &handleBrief, FALSE }, { "short", &handleBrief, FALSE },
{ "fn", &handleFn, TRUE }, { "fn", &handleFn, FALSE },
{ "var", &handleFn, TRUE }, { "var", &handleFn, FALSE },
{ "typedef", &handleFn, TRUE }, { "typedef", &handleFn, FALSE },
{ "property", &handleFn, TRUE }, { "property", &handleFn, FALSE },
{ "def", &handleDef, TRUE }, { "def", &handleDef, FALSE },
{ "overload", &handleOverload, TRUE }, { "overload", &handleOverload, FALSE },
{ "enum", &handleEnum, TRUE }, { "enum", &handleEnum, FALSE },
{ "defgroup", &handleDefGroup, TRUE }, { "defgroup", &handleDefGroup, FALSE },
{ "addtogroup", &handleAddToGroup, TRUE }, { "addtogroup", &handleAddToGroup, FALSE },
{ "weakgroup", &handleWeakGroup, TRUE }, { "weakgroup", &handleWeakGroup, FALSE },
{ "namespace", &handleNamespace, TRUE }, { "namespace", &handleNamespace, FALSE },
{ "package", &handlePackage, TRUE }, { "package", &handlePackage, FALSE },
{ "class", &handleClass, TRUE }, { "class", &handleClass, FALSE },
{ "headerfile", &handleHeaderFile, TRUE }, { "headerfile", &handleHeaderFile, FALSE },
{ "protocol", &handleProtocol, TRUE }, { "protocol", &handleProtocol, FALSE },
{ "category", &handleCategory, TRUE }, { "category", &handleCategory, FALSE },
{ "union", &handleUnion, TRUE }, { "union", &handleUnion, FALSE },
{ "struct", &handleStruct, TRUE }, { "struct", &handleStruct, FALSE },
{ "interface", &handleInterface, TRUE }, { "interface", &handleInterface, FALSE },
{ "idlexcept", &handleIdlException, TRUE }, { "idlexcept", &handleIdlException, FALSE },
{ "page", &handlePage, TRUE }, { "page", &handlePage, FALSE },
{ "mainpage", &handleMainpage, TRUE }, { "mainpage", &handleMainpage, FALSE },
{ "file", &handleFile, TRUE }, { "file", &handleFile, FALSE },
{ "dir", &handleDir, TRUE }, { "dir", &handleDir, FALSE },
{ "example", &handleExample, TRUE }, { "example", &handleExample, FALSE },
{ "details", &handleDetails, TRUE }, { "details", &handleDetails, TRUE },
{ "name", &handleName, TRUE }, { "name", &handleName, FALSE },
{ "todo", &handleTodo, TRUE }, { "todo", &handleTodo, TRUE },
{ "test", &handleTest, TRUE }, { "test", &handleTest, TRUE },
{ "bug", &handleBug, TRUE }, { "bug", &handleBug, TRUE },
...@@ -174,28 +174,28 @@ static DocCmdMap docCmdMap[] = ...@@ -174,28 +174,28 @@ static DocCmdMap docCmdMap[] =
{ "dot", &handleFormatBlock, TRUE }, { "dot", &handleFormatBlock, TRUE },
{ "msc", &handleFormatBlock, TRUE }, { "msc", &handleFormatBlock, TRUE },
{ "code", &handleFormatBlock, TRUE }, { "code", &handleFormatBlock, TRUE },
{ "addindex", &handleAddIndex, TRUE }, { "addindex", &handleAddIndex, FALSE },
{ "if", &handleIf, FALSE }, { "if", &handleIf, FALSE },
{ "ifnot", &handleIfNot, FALSE }, { "ifnot", &handleIfNot, FALSE },
{ "elseif", &handleElseIf, FALSE }, { "elseif", &handleElseIf, FALSE },
{ "else", &handleElse, FALSE }, { "else", &handleElse, FALSE },
{ "endif", &handleEndIf, FALSE }, { "endif", &handleEndIf, FALSE },
{ "ingroup", &handleIngroup, TRUE }, { "ingroup", &handleIngroup, FALSE },
{ "nosubgrouping", &handleNoSubGrouping, TRUE }, { "nosubgrouping", &handleNoSubGrouping, FALSE },
{ "showinitializer", &handleShowInitializer, TRUE }, { "showinitializer", &handleShowInitializer, FALSE },
{ "hideinitializer", &handleHideInitializer, TRUE }, { "hideinitializer", &handleHideInitializer, FALSE },
{ "callgraph", &handleCallgraph, TRUE }, { "callgraph", &handleCallgraph, FALSE },
{ "callergraph", &handleCallergraph, TRUE }, { "callergraph", &handleCallergraph, FALSE },
{ "internal", &handleInternal, TRUE }, { "internal", &handleInternal, TRUE },
{ "_linebr", &handleLineBr, FALSE }, { "_linebr", &handleLineBr, FALSE },
{ "static", &handleStatic, TRUE }, { "static", &handleStatic, FALSE },
{ "pure", &handlePure, TRUE }, { "pure", &handlePure, FALSE },
{ "private", &handlePrivate, TRUE }, { "private", &handlePrivate, FALSE },
{ "privatesection", &handlePrivateSection, TRUE }, { "privatesection", &handlePrivateSection, FALSE },
{ "protected", &handleProtected, TRUE }, { "protected", &handleProtected, FALSE },
{ "protectedsection",&handleProtectedSection, TRUE }, { "protectedsection",&handleProtectedSection, FALSE },
{ "public", &handlePublic, TRUE }, { "public", &handlePublic, FALSE },
{ "publicsection", &handlePublicSection, TRUE }, { "publicsection", &handlePublicSection, FALSE },
{ "inherit", &handleInherit, TRUE }, { "inherit", &handleInherit, TRUE },
{ "arg", 0, TRUE }, { "arg", 0, TRUE },
{ "attention", 0, TRUE }, { "attention", 0, TRUE },
...@@ -213,6 +213,7 @@ static DocCmdMap docCmdMap[] = ...@@ -213,6 +213,7 @@ static DocCmdMap docCmdMap[] =
{ "note", 0, TRUE }, { "note", 0, TRUE },
{ "par", 0, TRUE }, { "par", 0, TRUE },
{ "param", 0, TRUE }, { "param", 0, TRUE },
{ "tparam", 0, TRUE },
{ "post", 0, TRUE }, { "post", 0, TRUE },
{ "pre", 0, TRUE }, { "pre", 0, TRUE },
{ "remark", 0, TRUE }, { "remark", 0, TRUE },
...@@ -728,14 +729,14 @@ static inline void addOutput(char c) ...@@ -728,14 +729,14 @@ static inline void addOutput(char c)
*pOutputString+=c; *pOutputString+=c;
} }
static void endBrief() static void endBrief(bool addToOutput=TRUE)
{ {
if (!current->brief.stripWhiteSpace().isEmpty()) if (!current->brief.stripWhiteSpace().isEmpty())
{ // only go to the detailed description if we have { // only go to the detailed description if we have
// found some brief description and not just whitespace // found some brief description and not just whitespace
briefEndsAtDot=FALSE; briefEndsAtDot=FALSE;
setOutput(OutputDoc); setOutput(OutputDoc);
addOutput(yytext); if (addToOutput) addOutput(yytext);
} }
} }
...@@ -1009,13 +1010,13 @@ RCSTAG "$"{ID}":"[^\n$]+"$" ...@@ -1009,13 +1010,13 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
<Comment>(\n|\\_linebr)({B}*(\n|\\_linebr))+ { // at least one blank line (or blank line command) <Comment>(\n|\\_linebr)({B}*(\n|\\_linebr))+ { // at least one blank line (or blank line command)
if (inContext!=OutputBrief) if (inContext!=OutputBrief)
{ {
addOutput(yytext); addOutput("\n\n");
setOutput(OutputDoc); setOutput(OutputDoc);
} }
else else
{ // only go to the detailed description if we have { // only go to the detailed description if we have
// found some brief description and not just whitespace // found some brief description and not just whitespace
endBrief(); endBrief(FALSE);
} }
lineCount(); lineCount();
} }
...@@ -2216,6 +2217,12 @@ static bool handleInternal(const QCString &) ...@@ -2216,6 +2217,12 @@ static bool handleInternal(const QCString &)
{ {
if (!Config_getBool("INTERNAL_DOCS")) if (!Config_getBool("INTERNAL_DOCS"))
{ {
// make sure some whitespace before a \internal command
// is not treated as "documentation"
if (current->doc.stripWhiteSpace().isEmpty())
{
current->doc.resize(0);
}
BEGIN( SkipInternal ); BEGIN( SkipInternal );
} }
else else
......
...@@ -775,6 +775,7 @@ ...@@ -775,6 +775,7 @@
<xsd:enumeration value="param" /> <xsd:enumeration value="param" />
<xsd:enumeration value="retval" /> <xsd:enumeration value="retval" />
<xsd:enumeration value="exception" /> <xsd:enumeration value="exception" />
<xsd:enumeration value="templateparam" />
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
......
...@@ -775,6 +775,7 @@ ...@@ -775,6 +775,7 @@
" <xsd:enumeration value=\"param\" />\n" " <xsd:enumeration value=\"param\" />\n"
" <xsd:enumeration value=\"retval\" />\n" " <xsd:enumeration value=\"retval\" />\n"
" <xsd:enumeration value=\"exception\" />\n" " <xsd:enumeration value=\"exception\" />\n"
" <xsd:enumeration value=\"templateparam\" />\n"
" </xsd:restriction>\n" " </xsd:restriction>\n"
" </xsd:simpleType>\n" " </xsd:simpleType>\n"
"\n" "\n"
......
...@@ -1291,6 +1291,7 @@ void Config::check() ...@@ -1291,6 +1291,7 @@ void Config::check()
annotationFromBrief.append("the"); annotationFromBrief.append("the");
} }
#if 0
if (Config_getBool("CALL_GRAPH") && if (Config_getBool("CALL_GRAPH") &&
(!Config_getBool("SOURCE_BROWSER") || !Config_getBool("REFERENCES_RELATION")) (!Config_getBool("SOURCE_BROWSER") || !Config_getBool("REFERENCES_RELATION"))
) )
...@@ -1311,6 +1312,7 @@ void Config::check() ...@@ -1311,6 +1312,7 @@ void Config::check()
Config_getBool("SOURCE_BROWSER")=TRUE; Config_getBool("SOURCE_BROWSER")=TRUE;
Config_getBool("REFERENCED_BY_RELATION")=TRUE; Config_getBool("REFERENCED_BY_RELATION")=TRUE;
} }
#endif
// some default settings for vhdl // some default settings for vhdl
if (Config_getBool("OPTIMIZE_OUTPUT_VHDL") && if (Config_getBool("OPTIMIZE_OUTPUT_VHDL") &&
(Config_getBool("INLINE_INHERITED_MEMB") || (Config_getBool("INLINE_INHERITED_MEMB") ||
...@@ -1413,10 +1415,11 @@ void Config::create() ...@@ -1413,10 +1415,11 @@ void Config::create()
"information to generate all constant output in the proper language. \n" "information to generate all constant output in the proper language. \n"
"The default language is English, other supported languages are: \n" "The default language is English, other supported languages are: \n"
"Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, \n" "Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, \n"
"Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, \n" "Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, \n"
"Italian, Japanese, Japanese-en (Japanese with English messages), Korean, \n" "Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), \n"
"Korean-en, Lithuanian, Norwegian, Macedonian, Polish, Portuguese, Romanian, \n" "Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, \n"
"Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.\n", "Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, \n"
"and Ukrainian.\n",
"English" "English"
); );
#ifdef LANG_ZA #ifdef LANG_ZA
...@@ -1486,6 +1489,7 @@ void Config::create() ...@@ -1486,6 +1489,7 @@ void Config::create()
ce->addValue("Macedonian"); ce->addValue("Macedonian");
#endif #endif
#ifdef LANG_FA #ifdef LANG_FA
ce->addValue("Farsi");
ce->addValue("Persian"); ce->addValue("Persian");
#endif #endif
#ifdef LANG_PL #ifdef LANG_PL
...@@ -1891,6 +1895,13 @@ void Config::create() ...@@ -1891,6 +1895,13 @@ void Config::create()
"declaration order. \n", "declaration order. \n",
FALSE FALSE
); );
cb = addBool(
"SORT_GROUP_NAMES",
"If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the \n"
"hierarchy of group names into alphabetical order. If set to NO (the default) \n"
"the group names will appear in their defined order. \n",
FALSE
);
cb = addBool( cb = addBool(
"SORT_BY_SCOPE_NAME", "SORT_BY_SCOPE_NAME",
"If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be \n" "If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be \n"
...@@ -2159,9 +2170,7 @@ void Config::create() ...@@ -2159,9 +2170,7 @@ void Config::create()
"If the SOURCE_BROWSER tag is set to YES then a list of source files will \n" "If the SOURCE_BROWSER tag is set to YES then a list of source files will \n"
"be generated. Documented entities will be cross-referenced with these sources. \n" "be generated. Documented entities will be cross-referenced with these sources. \n"
"Note: To get rid of all source code in the generated output, make sure also \n" "Note: To get rid of all source code in the generated output, make sure also \n"
"VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH \n" "VERBATIM_HEADERS is set to NO. \n",
"then you must also enable this option. If you don't then doxygen will produce \n"
"a warning and turn it on anyway \n",
FALSE FALSE
); );
cb = addBool( cb = addBool(
...@@ -2181,16 +2190,14 @@ void Config::create() ...@@ -2181,16 +2190,14 @@ void Config::create()
"If the REFERENCED_BY_RELATION tag is set to YES (the default) \n" "If the REFERENCED_BY_RELATION tag is set to YES (the default) \n"
"then for each documented function all documented \n" "then for each documented function all documented \n"
"functions referencing it will be listed. \n", "functions referencing it will be listed. \n",
TRUE FALSE
); );
cb->addDependency("SOURCE_BROWSER");
cb = addBool( "REFERENCES_RELATION", cb = addBool( "REFERENCES_RELATION",
"If the REFERENCES_RELATION tag is set to YES (the default) \n" "If the REFERENCES_RELATION tag is set to YES (the default) \n"
"then for each documented function all documented entities \n" "then for each documented function all documented entities \n"
"called/used by that function will be listed. \n", "called/used by that function will be listed. \n",
TRUE FALSE
); );
cb->addDependency("SOURCE_BROWSER");
cb = addBool( "REFERENCES_LINK_SOURCE", cb = addBool( "REFERENCES_LINK_SOURCE",
"If the REFERENCES_LINK_SOURCE tag is set to YES (the default)\n" "If the REFERENCES_LINK_SOURCE tag is set to YES (the default)\n"
"and SOURCE_BROWSER tag is set to YES, then the hyperlinks from\n" "and SOURCE_BROWSER tag is set to YES, then the hyperlinks from\n"
...@@ -2198,7 +2205,6 @@ void Config::create() ...@@ -2198,7 +2205,6 @@ void Config::create()
"link to the source code. Otherwise they will link to the documentstion.\n", "link to the source code. Otherwise they will link to the documentstion.\n",
TRUE TRUE
); );
cb->addDependency("SOURCE_BROWSER");
cb = addBool( cb = addBool(
"USE_HTAGS", "USE_HTAGS",
"If the USE_HTAGS tag is set to YES then the references to source code \n" "If the USE_HTAGS tag is set to YES then the references to source code \n"
...@@ -2961,7 +2967,7 @@ void Config::create() ...@@ -2961,7 +2967,7 @@ void Config::create()
cb->addDependency("HAVE_DOT"); cb->addDependency("HAVE_DOT");
cb = addBool( cb = addBool(
"CALL_GRAPH", "CALL_GRAPH",
"If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then \n" "If the CALL_GRAPH and HAVE_DOT options are set to YES then \n"
"doxygen will generate a call dependency graph for every global function \n" "doxygen will generate a call dependency graph for every global function \n"
"or class method. Note that enabling this option will significantly increase \n" "or class method. Note that enabling this option will significantly increase \n"
"the time of a run. So in most cases it will be better to enable call graphs \n" "the time of a run. So in most cases it will be better to enable call graphs \n"
...@@ -2971,7 +2977,7 @@ void Config::create() ...@@ -2971,7 +2977,7 @@ void Config::create()
cb->addDependency("HAVE_DOT"); cb->addDependency("HAVE_DOT");
cb = addBool( cb = addBool(
"CALLER_GRAPH", "CALLER_GRAPH",
"If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then \n" "If the CALLER_GRAPH and HAVE_DOT tags are set to YES then \n"
"doxygen will generate a caller dependency graph for every global function \n" "doxygen will generate a caller dependency graph for every global function \n"
"or class method. Note that enabling this option will significantly increase \n" "or class method. Note that enabling this option will significantly increase \n"
"the time of a run. So in most cases it will be better to enable caller \n" "the time of a run. So in most cases it will be better to enable caller \n"
......
...@@ -159,6 +159,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]* ...@@ -159,6 +159,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
} }
<ReadFuncArgPtr>")"/{B}*"[" { // pointer to fixed size array <ReadFuncArgPtr>")"/{B}*"[" { // pointer to fixed size array
g_curArgTypeName+=yytext; g_curArgTypeName+=yytext;
g_curArgTypeName+=g_curArgName;
//g_curArgTypeName=g_curArgTypeName.simplifyWhiteSpace(); //g_curArgTypeName=g_curArgTypeName.simplifyWhiteSpace();
BEGIN( ReadFuncArgType ); BEGIN( ReadFuncArgType );
} }
...@@ -307,6 +308,19 @@ ID [a-z_A-Z][a-z_A-Z0-9]* ...@@ -307,6 +308,19 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
a->type = removeRedundantWhiteSpace(g_curArgTypeName); a->type = removeRedundantWhiteSpace(g_curArgTypeName);
} }
a->array += removeRedundantWhiteSpace(g_curArgArray); a->array += removeRedundantWhiteSpace(g_curArgArray);
//printf("array=%s\n",a->array.data());
int alen = a->array.length();
if (alen>2 && a->array.at(0)=='(' &&
a->array.at(alen-1)==')') // fix-up for int *(a[10])
{
int i=a->array.find('[')-1;
a->array = a->array.mid(1,alen-2);
if (i>0 && a->name.isEmpty())
{
a->name = a->array.left(i);
a->array = a->array.mid(i);
}
}
a->defval = g_curArgDefValue.copy(); a->defval = g_curArgDefValue.copy();
//printf("a->type=%s a->name=%s a->defval=\"%s\"\n",a->type.data(),a->name.data(),a->defval.data()); //printf("a->type=%s a->name=%s a->defval=\"%s\"\n",a->type.data(),a->name.data(),a->defval.data());
a->docs = g_curArgDocs.stripWhiteSpace(); a->docs = g_curArgDocs.stripWhiteSpace();
......
...@@ -301,6 +301,32 @@ Definition::~Definition() ...@@ -301,6 +301,32 @@ Definition::~Definition()
} }
} }
void Definition::setName(const char *name)
{
if (name==0) return;
m_name = name;
#if 0
makeResident();
if (m_isSymbol)
{
removeFromMap(this);
}
if (m_name!="<globalScope>")
{
//extractNamespaceName(m_name,m_localName,ns);
m_impl->localName=stripScope(m_name);
}
else
{
m_impl->localName=m_name;
}
if (m_isSymbol)
{
addToMap(m_name,this);
}
#endif
}
void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList) void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList)
{ {
if (!anchorList) return; if (!anchorList) return;
...@@ -765,7 +791,7 @@ void Definition::_writeSourceRefList(OutputList &ol,const char *scopeName, ...@@ -765,7 +791,7 @@ void Definition::_writeSourceRefList(OutputList &ol,const char *scopeName,
const QCString &text,MemberSDict *members,bool /*funcOnly*/) const QCString &text,MemberSDict *members,bool /*funcOnly*/)
{ {
ol.pushGeneratorState(); ol.pushGeneratorState();
if (Config_getBool("SOURCE_BROWSER") && members) if (/*Config_getBool("SOURCE_BROWSER") &&*/ members)
{ {
ol.startParagraph(); ol.startParagraph();
ol.parseText(text); ol.parseText(text);
...@@ -938,7 +964,6 @@ void Definition::addSourceReferences(MemberDef *md) ...@@ -938,7 +964,6 @@ void Definition::addSourceReferences(MemberDef *md)
} }
if (m_impl->sourceRefsDict->find(name)==0) if (m_impl->sourceRefsDict->find(name)==0)
{ {
//printf("Adding reference %s->%s\n",md->name().data(),name.data());
m_impl->sourceRefsDict->inSort(name,md); m_impl->sourceRefsDict->inSort(name,md);
} }
} }
......
...@@ -245,7 +245,7 @@ class Definition : public DefinitionIntf, public LockableObj ...@@ -245,7 +245,7 @@ class Definition : public DefinitionIntf, public LockableObj
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
/*! Sets a new \a name for the definition */ /*! Sets a new \a name for the definition */
void setName(const char *name) { m_name = name; } void setName(const char *name);
/*! Sets the documentation of this definition to \a d. */ /*! Sets the documentation of this definition to \a d. */
void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE); void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE);
......
...@@ -558,145 +558,7 @@ DirDef *DirDef::mergeDirectoryInTree(const QCString &path) ...@@ -558,145 +558,7 @@ DirDef *DirDef::mergeDirectoryInTree(const QCString &path)
void DirDef::writeDepGraph(QTextStream &t) void DirDef::writeDepGraph(QTextStream &t)
{ {
t << "digraph G {\n"; writeDotDirDepGraph(t,this);
if (Config_getBool("DOT_TRANSPARENT"))
{
t << " bgcolor=transparent;\n";
}
t << " compound=true\n";
t << " node [ fontsize=10, fontname=\"FreeSans.ttf\"];\n";
t << " edge [ labelfontsize=9, labelfontname=\"FreeSans.ttf\"];\n";
QDict<DirDef> dirsInGraph(257);
dirsInGraph.insert(getOutputFileBase(),this);
if (parent())
{
t << " subgraph cluster" << parent()->getOutputFileBase() << " {\n";
t << " graph [ bgcolor=\"#ddddee\", pencolor=\"black\", label=\""
<< parent()->shortName()
<< "\" fontname=\"FreeSans.ttf\", fontsize=10, URL=\"";
t << parent()->getOutputFileBase() << Doxygen::htmlFileExtension;
t << "\"]\n";
}
if (isCluster())
{
t << " subgraph cluster" << getOutputFileBase() << " {\n";
t << " graph [ bgcolor=\"#eeeeff\", pencolor=\"black\", label=\"\""
<< " URL=\"" << getOutputFileBase() << Doxygen::htmlFileExtension
<< "\"];\n";
t << " " << getOutputFileBase() << " [shape=plaintext label=\""
<< shortName() << "\"];\n";
// add nodes for sub directories
QListIterator<DirDef> sdi(m_subdirs);
DirDef *sdir;
for (sdi.toFirst();(sdir=sdi.current());++sdi)
{
t << " " << sdir->getOutputFileBase() << " [shape=box label=\""
<< sdir->shortName() << "\"";
if (sdir->isCluster())
{
t << " color=\"red\"";
}
else
{
t << " color=\"black\"";
}
t << " fillcolor=\"white\" style=\"filled\"";
t << " URL=\"" << sdir->getOutputFileBase()
<< Doxygen::htmlFileExtension << "\"";
t << "];\n";
dirsInGraph.insert(sdir->getOutputFileBase(),sdir);
}
t << " }\n";
}
else
{
t << " " << getOutputFileBase() << " [shape=box, label=\""
<< shortName() << "\", style=\"filled\", fillcolor=\"#eeeeff\","
<< " pencolor=\"black\", URL=\"" << getOutputFileBase()
<< Doxygen::htmlFileExtension << "\"];\n";
}
if (parent())
{
t << " }\n";
}
// add nodes for other used directories
QDictIterator<UsedDir> udi(*m_usedDirs);
UsedDir *udir;
//printf("*** For dir %s\n",shortName().data());
for (udi.toFirst();(udir=udi.current());++udi)
// for each used dir (=directly used or a parent of a directly used dir)
{
const DirDef *usedDir=udir->dir();
DirDef *dir=this;
while (dir)
{
//printf("*** check relation %s->%s same_parent=%d !%s->isParentOf(%s)=%d\n",
// dir->shortName().data(),usedDir->shortName().data(),
// dir->parent()==usedDir->parent(),
// usedDir->shortName().data(),
// shortName().data(),
// !usedDir->isParentOf(this)
// );
if (dir!=usedDir && dir->parent()==usedDir->parent() && !usedDir->isParentOf(this))
// include if both have the same parent (or no parent)
{
t << " " << usedDir->getOutputFileBase() << " [shape=box label=\""
<< usedDir->shortName() << "\"";
if (usedDir->isCluster())
{
if (!Config_getBool("DOT_TRANSPARENT"))
{
t << " fillcolor=\"white\" style=\"filled\"";
}
t << " color=\"red\"";
}
t << " URL=\"" << usedDir->getOutputFileBase()
<< Doxygen::htmlFileExtension << "\"];\n";
dirsInGraph.insert(usedDir->getOutputFileBase(),usedDir);
break;
}
dir=dir->parent();
}
}
// add relations between all selected directories
DirDef *dir;
QDictIterator<DirDef> di(dirsInGraph);
for (di.toFirst();(dir=di.current());++di) // foreach dir in the graph
{
QDictIterator<UsedDir> udi(*dir->usedDirs());
UsedDir *udir;
for (udi.toFirst();(udir=udi.current());++udi) // foreach used dir
{
const DirDef *usedDir=udir->dir();
if ((dir!=this || !udir->inherited()) && // only show direct dependendies for this dir
(usedDir!=this || !udir->inherited()) && // only show direct dependendies for this dir
!usedDir->isParentOf(dir) && // don't point to own parent
dirsInGraph.find(usedDir->getOutputFileBase())) // only point to nodes that are in the graph
{
QCString relationName;
relationName.sprintf("dir_%06d_%06d",dir->m_dirCount,usedDir->m_dirCount);
if (Doxygen::dirRelations.find(relationName)==0)
{
// new relation
Doxygen::dirRelations.append(relationName,
new DirRelation(relationName,dir,udir));
}
int nrefs = udir->filePairs().count();
t << " " << dir->getOutputFileBase() << "->"
<< usedDir->getOutputFileBase();
t << " [headlabel=\"" << nrefs << "\", labeldistance=1.5";
t << " headhref=\"" << relationName << Doxygen::htmlFileExtension
<< "\"];\n";
}
}
}
t << "}\n";
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
......
...@@ -62,6 +62,7 @@ class DirDef : public Definition ...@@ -62,6 +62,7 @@ class DirDef : public Definition
bool isCluster() const { return m_subdirs.count()>0; } bool isCluster() const { return m_subdirs.count()>0; }
int level() const { return m_level; } int level() const { return m_level; }
DirDef *parent() const { return m_parent; } DirDef *parent() const { return m_parent; }
int dirCount() const { return m_dirCount; }
const QDict<UsedDir> *usedDirs() const { return m_usedDirs; } const QDict<UsedDir> *usedDirs() const { return m_usedDirs; }
bool isParentOf(DirDef *dir) const; bool isParentOf(DirDef *dir) const;
bool depGraphIsTrivial() const; bool depGraphIsTrivial() const;
......
...@@ -162,7 +162,7 @@ static void docParserPushContext() ...@@ -162,7 +162,7 @@ static void docParserPushContext()
g_parserStack.push(ctx); g_parserStack.push(ctx);
} }
static void docParserPopContext() static void docParserPopContext(bool keepParamInfo=FALSE)
{ {
DocParserContext *ctx = g_parserStack.pop(); DocParserContext *ctx = g_parserStack.pop();
g_context = ctx->context; g_context = ctx->context;
...@@ -175,10 +175,13 @@ static void docParserPopContext() ...@@ -175,10 +175,13 @@ static void docParserPopContext()
g_fileName = ctx->fileName; g_fileName = ctx->fileName;
g_relPath = ctx->relPath; g_relPath = ctx->relPath;
if (!keepParamInfo)
{
g_hasParamCommand = ctx->hasParamCommand; g_hasParamCommand = ctx->hasParamCommand;
g_hasReturnCommand = ctx->hasReturnCommand; g_hasReturnCommand = ctx->hasReturnCommand;
g_memberDef = ctx->memberDef;
g_paramsFound = ctx->paramsFound; g_paramsFound = ctx->paramsFound;
}
g_memberDef = ctx->memberDef;
g_isExample = ctx->isExample; g_isExample = ctx->isExample;
g_exampleName = ctx->exampleName; g_exampleName = ctx->exampleName;
g_sectionDict = ctx->sectionDict; g_sectionDict = ctx->sectionDict;
...@@ -1754,6 +1757,8 @@ void DocCopy::parse() ...@@ -1754,6 +1757,8 @@ void DocCopy::parse()
g_copyStack.append(def); g_copyStack.append(def);
// make sure the descriptions end with a newline, so the parser will correctly // make sure the descriptions end with a newline, so the parser will correctly
// handle them in all cases. // handle them in all cases.
//printf("doc='%s'\n",doc.data());
//printf("brief='%s'\n",brief.data());
brief+='\n'; brief+='\n';
doc+='\n'; doc+='\n';
internalValidatingParseDoc(this,m_children,brief); internalValidatingParseDoc(this,m_children,brief);
...@@ -1761,7 +1766,7 @@ void DocCopy::parse() ...@@ -1761,7 +1766,7 @@ void DocCopy::parse()
g_copyStack.remove(def); g_copyStack.remove(def);
ASSERT(g_styleStack.isEmpty()); ASSERT(g_styleStack.isEmpty());
ASSERT(g_nodeStack.isEmpty()); ASSERT(g_nodeStack.isEmpty());
docParserPopContext(); docParserPopContext(TRUE);
} }
else // oops, recursion else // oops, recursion
{ {
...@@ -4001,6 +4006,7 @@ int DocParamList::parseXml(const QString &paramName) ...@@ -4001,6 +4006,7 @@ int DocParamList::parseXml(const QString &paramName)
} while (retval==RetVal_CloseXml && } while (retval==RetVal_CloseXml &&
Mappers::htmlTagMapper->map(g_token->name)!=XML_PARAM && Mappers::htmlTagMapper->map(g_token->name)!=XML_PARAM &&
Mappers::htmlTagMapper->map(g_token->name)!=XML_TYPEPARAM &&
Mappers::htmlTagMapper->map(g_token->name)!=XML_EXCEPTION); Mappers::htmlTagMapper->map(g_token->name)!=XML_EXCEPTION);
...@@ -4419,7 +4425,7 @@ void DocPara::handleInheritDoc() ...@@ -4419,7 +4425,7 @@ void DocPara::handleInheritDoc()
internalValidatingParseDoc(this,m_children,reMd->briefDescription()); internalValidatingParseDoc(this,m_children,reMd->briefDescription());
internalValidatingParseDoc(this,m_children,reMd->documentation()); internalValidatingParseDoc(this,m_children,reMd->documentation());
g_copyStack.remove(reMd); g_copyStack.remove(reMd);
docParserPopContext(); docParserPopContext(TRUE);
g_memberDef = thisMd; g_memberDef = thisMd;
} }
} }
...@@ -4641,6 +4647,9 @@ int DocPara::handleCommand(const QString &cmdName) ...@@ -4641,6 +4647,9 @@ int DocPara::handleCommand(const QString &cmdName)
case CMD_PARAM: case CMD_PARAM:
retval = handleParamSection(cmdName,DocParamSect::Param,FALSE,g_token->paramDir); retval = handleParamSection(cmdName,DocParamSect::Param,FALSE,g_token->paramDir);
break; break;
case CMD_TPARAM:
retval = handleParamSection(cmdName,DocParamSect::TemplateParam,FALSE,g_token->paramDir);
break;
case CMD_RETVAL: case CMD_RETVAL:
retval = handleParamSection(cmdName,DocParamSect::RetVal); retval = handleParamSection(cmdName,DocParamSect::RetVal);
break; break;
...@@ -5012,11 +5021,14 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag ...@@ -5012,11 +5021,14 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
handleStyleEnter(this,m_children,DocStyleChange::Code,&g_token->attribs); handleStyleEnter(this,m_children,DocStyleChange::Code,&g_token->attribs);
break; break;
case XML_PARAM: case XML_PARAM:
case XML_TYPEPARAM:
{ {
QString paramName; QString paramName;
if (findAttribute(tagHtmlAttribs,"name",&paramName)) if (findAttribute(tagHtmlAttribs,"name",&paramName))
{ {
retval = handleParamSection(paramName,DocParamSect::Param,TRUE); retval = handleParamSection(paramName,
tagId==XML_PARAM ? DocParamSect::Param : DocParamSect::TemplateParam,
TRUE);
} }
else else
{ {
...@@ -5025,6 +5037,7 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag ...@@ -5025,6 +5037,7 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
} }
break; break;
case XML_PARAMREF: case XML_PARAMREF:
case XML_TYPEPARAMREF:
{ {
QString paramName; QString paramName;
if (findAttribute(tagHtmlAttribs,"name",&paramName)) if (findAttribute(tagHtmlAttribs,"name",&paramName))
...@@ -5037,7 +5050,7 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag ...@@ -5037,7 +5050,7 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
} }
else else
{ {
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Missing 'name' attribute from <paramref> tag."); warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Missing 'name' attribute from <param%sref> tag.",tagId==XML_PARAMREF?"":"type");
} }
} }
break; break;
...@@ -5330,6 +5343,7 @@ int DocPara::handleHtmlEndTag(const QString &tagName) ...@@ -5330,6 +5343,7 @@ int DocPara::handleHtmlEndTag(const QString &tagName)
case XML_LIST: case XML_LIST:
case XML_EXAMPLE: case XML_EXAMPLE:
case XML_PARAM: case XML_PARAM:
case XML_TYPEPARAM:
case XML_RETURNS: case XML_RETURNS:
case XML_SEEALSO: case XML_SEEALSO:
case XML_EXCEPTION: case XML_EXCEPTION:
...@@ -5344,6 +5358,7 @@ int DocPara::handleHtmlEndTag(const QString &tagName) ...@@ -5344,6 +5358,7 @@ int DocPara::handleHtmlEndTag(const QString &tagName)
case XML_PERMISSION: case XML_PERMISSION:
case XML_DESCRIPTION: case XML_DESCRIPTION:
case XML_PARAMREF: case XML_PARAMREF:
case XML_TYPEPARAMREF:
// These tags are defined in .Net but are currently unsupported // These tags are defined in .Net but are currently unsupported
break; break;
case HTML_UNKNOWN: case HTML_UNKNOWN:
......
...@@ -939,7 +939,7 @@ class DocParamSect : public CompAccept<DocParamSect>, public DocNode ...@@ -939,7 +939,7 @@ class DocParamSect : public CompAccept<DocParamSect>, public DocNode
public: public:
enum Type enum Type
{ {
Unknown, Param, RetVal, Exception Unknown, Param, RetVal, Exception, TemplateParam
}; };
enum Direction enum Direction
{ {
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include "debug.h" #include "debug.h"
#include "pagedef.h" #include "pagedef.h"
#include "portable.h" #include "portable.h"
#include "dirdef.h"
#include <qdir.h> #include <qdir.h>
#include <qfile.h> #include <qfile.h>
...@@ -42,6 +43,8 @@ ...@@ -42,6 +43,8 @@
#define MAP_CMD "cmap" #define MAP_CMD "cmap"
#define FONTNAME "FreeSans"
//-------------------------------------------------------------------- //--------------------------------------------------------------------
static const int maxCmdLine = 40960; static const int maxCmdLine = 40960;
...@@ -81,9 +84,9 @@ static void writeGraphHeader(QTextStream &t) ...@@ -81,9 +84,9 @@ static void writeGraphHeader(QTextStream &t)
{ {
t << " bgcolor=\"transparent\";" << endl; t << " bgcolor=\"transparent\";" << endl;
} }
t << " edge [fontname=\"FreeSans.ttf\",fontsize=10," t << " edge [fontname=\"" << FONTNAME << "\",fontsize=10,"
"labelfontname=\"FreeSans.ttf\",labelfontsize=10];\n"; "labelfontname=\"" << FONTNAME << "\",labelfontsize=10];\n";
t << " node [fontname=\"FreeSans.ttf\",fontsize=10,shape=record];\n"; t << " node [fontname=\"" << FONTNAME << "\",fontsize=10,shape=record];\n";
} }
static void writeGraphFooter(QTextStream &t) static void writeGraphFooter(QTextStream &t)
...@@ -528,6 +531,8 @@ static QCString convertLabel(const QCString &l) ...@@ -528,6 +531,8 @@ static QCString convertLabel(const QCString &l)
case '<': result+="\\<"; break; case '<': result+="\\<"; break;
case '>': result+="\\>"; break; case '>': result+="\\>"; break;
case '|': result+="\\|"; break; case '|': result+="\\|"; break;
case '{': result+="\\{"; break;
case '}': result+="\\}"; break;
case '"': result+="\\\""; break; case '"': result+="\\\""; break;
default: result+=c; break; default: result+=c; break;
} }
...@@ -715,7 +720,7 @@ void DotNode::writeArrow(QTextStream &t, ...@@ -715,7 +720,7 @@ void DotNode::writeArrow(QTextStream &t,
t << ",arrowhead=\"" << arrowStyle[ei->m_color] << "\""; t << ",arrowhead=\"" << arrowStyle[ei->m_color] << "\"";
} }
if (format==BITMAP) t << ",fontname=\"FreeSans.ttf\""; if (format==BITMAP) t << ",fontname=\"" << FONTNAME << "\"";
t << "];" << endl; t << "];" << endl;
} }
...@@ -2717,23 +2722,23 @@ void generateGraphLegend(const char *path) ...@@ -2717,23 +2722,23 @@ void generateGraphLegend(const char *path)
} }
QTextStream dotText(&dotFile); QTextStream dotText(&dotFile);
writeGraphHeader(dotText); writeGraphHeader(dotText);
dotText << " Node9 [shape=\"box\",label=\"Inherited\",fontsize=10,height=0.2,width=0.4,fontname=\"FreeSans.ttf\",fillcolor=\"grey75\",style=\"filled\" fontcolor=\"black\"];\n"; dotText << " Node9 [shape=\"box\",label=\"Inherited\",fontsize=10,height=0.2,width=0.4,fontname=\"" << FONTNAME << "\",fillcolor=\"grey75\",style=\"filled\" fontcolor=\"black\"];\n";
dotText << " Node10 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"FreeSans.ttf\"];\n"; dotText << " Node10 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"" << FONTNAME << "\"];\n";
dotText << " Node10 [shape=\"box\",label=\"PublicBase\",fontsize=10,height=0.2,width=0.4,fontname=\"FreeSans.ttf\",color=\"black\",URL=\"$classPublicBase" << Doxygen::htmlFileExtension << "\"];\n"; dotText << " Node10 [shape=\"box\",label=\"PublicBase\",fontsize=10,height=0.2,width=0.4,fontname=\"" << FONTNAME << "\",color=\"black\",URL=\"$classPublicBase" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node11 -> Node10 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"FreeSans.ttf\"];\n"; dotText << " Node11 -> Node10 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"" << FONTNAME << "\"];\n";
dotText << " Node11 [shape=\"box\",label=\"Truncated\",fontsize=10,height=0.2,width=0.4,fontname=\"FreeSans.ttf\",color=\"red\",URL=\"$classTruncated" << Doxygen::htmlFileExtension << "\"];\n"; dotText << " Node11 [shape=\"box\",label=\"Truncated\",fontsize=10,height=0.2,width=0.4,fontname=\"" << FONTNAME << "\",color=\"red\",URL=\"$classTruncated" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node13 -> Node9 [dir=back,color=\"darkgreen\",fontsize=10,style=\"solid\",fontname=\"FreeSans.ttf\"];\n"; dotText << " Node13 -> Node9 [dir=back,color=\"darkgreen\",fontsize=10,style=\"solid\",fontname=\"" << FONTNAME << "\"];\n";
dotText << " Node13 [shape=\"box\",label=\"ProtectedBase\",fontsize=10,height=0.2,width=0.4,fontname=\"FreeSans.ttf\",color=\"black\",URL=\"$classProtectedBase" << Doxygen::htmlFileExtension << "\"];\n"; dotText << " Node13 [shape=\"box\",label=\"ProtectedBase\",fontsize=10,height=0.2,width=0.4,fontname=\"" << FONTNAME << "\",color=\"black\",URL=\"$classProtectedBase" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node14 -> Node9 [dir=back,color=\"firebrick4\",fontsize=10,style=\"solid\",fontname=\"FreeSans.ttf\"];\n"; dotText << " Node14 -> Node9 [dir=back,color=\"firebrick4\",fontsize=10,style=\"solid\",fontname=\"" << FONTNAME << "\"];\n";
dotText << " Node14 [shape=\"box\",label=\"PrivateBase\",fontsize=10,height=0.2,width=0.4,fontname=\"FreeSans.ttf\",color=\"black\",URL=\"$classPrivateBase" << Doxygen::htmlFileExtension << "\"];\n"; dotText << " Node14 [shape=\"box\",label=\"PrivateBase\",fontsize=10,height=0.2,width=0.4,fontname=\"" << FONTNAME << "\",color=\"black\",URL=\"$classPrivateBase" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node15 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"FreeSans.ttf\"];\n"; dotText << " Node15 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"" << FONTNAME << "\"];\n";
dotText << " Node15 [shape=\"box\",label=\"Undocumented\",fontsize=10,height=0.2,width=0.4,fontname=\"FreeSans.ttf\",color=\"grey75\"];\n"; dotText << " Node15 [shape=\"box\",label=\"Undocumented\",fontsize=10,height=0.2,width=0.4,fontname=\"" << FONTNAME << "\",color=\"grey75\"];\n";
dotText << " Node16 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"FreeSans.ttf\"];\n"; dotText << " Node16 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"" << FONTNAME << "\"];\n";
dotText << " Node16 [shape=\"box\",label=\"Templ< int >\",fontsize=10,height=0.2,width=0.4,fontname=\"FreeSans.ttf\",color=\"black\",URL=\"$classTempl" << Doxygen::htmlFileExtension << "\"];\n"; dotText << " Node16 [shape=\"box\",label=\"Templ< int >\",fontsize=10,height=0.2,width=0.4,fontname=\"" << FONTNAME << "\",color=\"black\",URL=\"$classTempl" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node17 -> Node16 [dir=back,color=\"orange\",fontsize=10,style=\"dashed\",label=\"< int >\",fontname=\"FreeSans.ttf\"];\n"; dotText << " Node17 -> Node16 [dir=back,color=\"orange\",fontsize=10,style=\"dashed\",label=\"< int >\",fontname=\"" << FONTNAME << "\"];\n";
dotText << " Node17 [shape=\"box\",label=\"Templ< T >\",fontsize=10,height=0.2,width=0.4,fontname=\"FreeSans.ttf\",color=\"black\",URL=\"$classTempl" << Doxygen::htmlFileExtension << "\"];\n"; dotText << " Node17 [shape=\"box\",label=\"Templ< T >\",fontsize=10,height=0.2,width=0.4,fontname=\"" << FONTNAME << "\",color=\"black\",URL=\"$classTempl" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node18 -> Node9 [dir=back,color=\"darkorchid3\",fontsize=10,style=\"dashed\",label=\"m_usedClass\",fontname=\"FreeSans.ttf\"];\n"; dotText << " Node18 -> Node9 [dir=back,color=\"darkorchid3\",fontsize=10,style=\"dashed\",label=\"m_usedClass\",fontname=\"" << FONTNAME << "\"];\n";
dotText << " Node18 [shape=\"box\",label=\"Used\",fontsize=10,height=0.2,width=0.4,fontname=\"FreeSans.ttf\",color=\"black\",URL=\"$classUsed" << Doxygen::htmlFileExtension << "\"];\n"; dotText << " Node18 [shape=\"box\",label=\"Used\",fontsize=10,height=0.2,width=0.4,fontname=\"" << FONTNAME << "\",color=\"black\",URL=\"$classUsed" << Doxygen::htmlFileExtension << "\"];\n";
writeGraphFooter(dotText); writeGraphFooter(dotText);
dotFile.close(); dotFile.close();
...@@ -3273,8 +3278,152 @@ void DotGroupCollaboration::writeGraphHeader(QTextStream &t) const ...@@ -3273,8 +3278,152 @@ void DotGroupCollaboration::writeGraphHeader(QTextStream &t) const
{ {
t << " bgcolor=\"transparent\";" << endl; t << " bgcolor=\"transparent\";" << endl;
} }
t << " edge [fontname=\"FreeSans.ttf\",fontsize=8," t << " edge [fontname=\"" << FONTNAME << "\",fontsize=8,"
"labelfontname=\"FreeSans.ttf\",labelfontsize=8];\n"; "labelfontname=\"" << FONTNAME << "\",labelfontsize=8];\n";
t << " node [fontname=\"FreeSans.ttf\",fontsize=10,shape=record];\n"; t << " node [fontname=\"" << FONTNAME << "\",fontsize=10,shape=record];\n";
t << " rankdir=LR;\n"; t << " rankdir=LR;\n";
} }
void writeDotDirDepGraph(QTextStream &t,DirDef *dd)
{
t << "digraph G {\n";
if (Config_getBool("DOT_TRANSPARENT"))
{
t << " bgcolor=transparent;\n";
}
t << " compound=true\n";
t << " node [ fontsize=10, fontname=\"" << FONTNAME << "\"];\n";
t << " edge [ labelfontsize=9, labelfontname=\"" << FONTNAME << "\"];\n";
QDict<DirDef> dirsInGraph(257);
dirsInGraph.insert(dd->getOutputFileBase(),dd);
if (dd->parent())
{
t << " subgraph cluster" << dd->parent()->getOutputFileBase() << " {\n";
t << " graph [ bgcolor=\"#ddddee\", pencolor=\"black\", label=\""
<< dd->parent()->shortName()
<< "\" fontname=\"" << FONTNAME << "\", fontsize=10, URL=\"";
t << dd->parent()->getOutputFileBase() << Doxygen::htmlFileExtension;
t << "\"]\n";
}
if (dd->isCluster())
{
t << " subgraph cluster" << dd->getOutputFileBase() << " {\n";
t << " graph [ bgcolor=\"#eeeeff\", pencolor=\"black\", label=\"\""
<< " URL=\"" << dd->getOutputFileBase() << Doxygen::htmlFileExtension
<< "\"];\n";
t << " " << dd->getOutputFileBase() << " [shape=plaintext label=\""
<< dd->shortName() << "\"];\n";
// add nodes for sub directories
QListIterator<DirDef> sdi(dd->subDirs());
DirDef *sdir;
for (sdi.toFirst();(sdir=sdi.current());++sdi)
{
t << " " << sdir->getOutputFileBase() << " [shape=box label=\""
<< sdir->shortName() << "\"";
if (sdir->isCluster())
{
t << " color=\"red\"";
}
else
{
t << " color=\"black\"";
}
t << " fillcolor=\"white\" style=\"filled\"";
t << " URL=\"" << sdir->getOutputFileBase()
<< Doxygen::htmlFileExtension << "\"";
t << "];\n";
dirsInGraph.insert(sdir->getOutputFileBase(),sdir);
}
t << " }\n";
}
else
{
t << " " << dd->getOutputFileBase() << " [shape=box, label=\""
<< dd->shortName() << "\", style=\"filled\", fillcolor=\"#eeeeff\","
<< " pencolor=\"black\", URL=\"" << dd->getOutputFileBase()
<< Doxygen::htmlFileExtension << "\"];\n";
}
if (dd->parent())
{
t << " }\n";
}
// add nodes for other used directories
QDictIterator<UsedDir> udi(*dd->usedDirs());
UsedDir *udir;
//printf("*** For dir %s\n",shortName().data());
for (udi.toFirst();(udir=udi.current());++udi)
// for each used dir (=directly used or a parent of a directly used dir)
{
const DirDef *usedDir=udir->dir();
DirDef *dir=dd;
while (dir)
{
//printf("*** check relation %s->%s same_parent=%d !%s->isParentOf(%s)=%d\n",
// dir->shortName().data(),usedDir->shortName().data(),
// dir->parent()==usedDir->parent(),
// usedDir->shortName().data(),
// shortName().data(),
// !usedDir->isParentOf(this)
// );
if (dir!=usedDir && dir->parent()==usedDir->parent() &&
!usedDir->isParentOf(dd))
// include if both have the same parent (or no parent)
{
t << " " << usedDir->getOutputFileBase() << " [shape=box label=\""
<< usedDir->shortName() << "\"";
if (usedDir->isCluster())
{
if (!Config_getBool("DOT_TRANSPARENT"))
{
t << " fillcolor=\"white\" style=\"filled\"";
}
t << " color=\"red\"";
}
t << " URL=\"" << usedDir->getOutputFileBase()
<< Doxygen::htmlFileExtension << "\"];\n";
dirsInGraph.insert(usedDir->getOutputFileBase(),usedDir);
break;
}
dir=dir->parent();
}
}
// add relations between all selected directories
DirDef *dir;
QDictIterator<DirDef> di(dirsInGraph);
for (di.toFirst();(dir=di.current());++di) // foreach dir in the graph
{
QDictIterator<UsedDir> udi(*dir->usedDirs());
UsedDir *udir;
for (udi.toFirst();(udir=udi.current());++udi) // foreach used dir
{
const DirDef *usedDir=udir->dir();
if ((dir!=dd || !udir->inherited()) && // only show direct dependendies for this dir
(usedDir!=dd || !udir->inherited()) && // only show direct dependendies for this dir
!usedDir->isParentOf(dir) && // don't point to own parent
dirsInGraph.find(usedDir->getOutputFileBase())) // only point to nodes that are in the graph
{
QCString relationName;
relationName.sprintf("dir_%06d_%06d",dir->dirCount(),usedDir->dirCount());
if (Doxygen::dirRelations.find(relationName)==0)
{
// new relation
Doxygen::dirRelations.append(relationName,
new DirRelation(relationName,dir,udir));
}
int nrefs = udir->filePairs().count();
t << " " << dir->getOutputFileBase() << "->"
<< usedDir->getOutputFileBase();
t << " [headlabel=\"" << nrefs << "\", labeldistance=1.5";
t << " headhref=\"" << relationName << Doxygen::htmlFileExtension
<< "\"];\n";
}
}
}
t << "}\n";
}
...@@ -337,5 +337,6 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir, ...@@ -337,5 +337,6 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir,
QString getDotImageMapFromFile(const QString& inFile, const QString& outDir, QString getDotImageMapFromFile(const QString& inFile, const QString& outDir,
const QCString& relPath,const QString &context); const QCString& relPath,const QString &context);
void writeDotDirDepGraph(QTextStream &t,DirDef *dd);
#endif #endif
...@@ -2482,6 +2482,44 @@ static void buildVarList(EntryNav *rootNav) ...@@ -2482,6 +2482,44 @@ static void buildVarList(EntryNav *rootNav)
else else
mtype=MemberDef::Variable; mtype=MemberDef::Variable;
#if 0 // does not work correctly
//static bool typedefHidesStruct = Config_getBool("TYPEDEF_HIDES_STRUCT");
if (typedefHidesStruct) // substitute names with typedef'ed names
{
QCString baseType = type;
baseType.stripPrefix("typedef ");
if (baseType.stripPrefix("enum "))
{
MemberName *mn=Doxygen::functionNameSDict->find(baseType.stripWhiteSpace());
MemberNameIterator mni(*mn);
MemberDef *md;
for (mni.toFirst();(md=mni.current());++mni)
{
if (md->isEnumerate())
{
md->setName(name);
md->setDefinition(name);
goto nextMember;
}
}
}
else
{
baseType.stripPrefix("struct ");
baseType.stripPrefix("union ");
{
ClassDef *typedefClass = Doxygen::classSDict->find(baseType);
if (typedefClass)
{
typedefClass->setName(name);
typedefClass->setClassName(name);
goto nextMember;
}
}
}
}
#endif
if (!root->relates.isEmpty()) // related variable if (!root->relates.isEmpty()) // related variable
{ {
isRelated=TRUE; isRelated=TRUE;
...@@ -7019,7 +7057,8 @@ static void addSourceReferences() ...@@ -7019,7 +7057,8 @@ static void addSourceReferences()
if (fd && if (fd &&
md->getStartBodyLine()!=-1 && md->getStartBodyLine()!=-1 &&
md->isLinkableInProject() && md->isLinkableInProject() &&
fd->generateSourceFile()) (fd->generateSourceFile() || Doxygen::parseSourcesNeeded)
)
{ {
//printf("Found member `%s' in file `%s' at line `%d' def=%s\n", //printf("Found member `%s' in file `%s' at line `%d' def=%s\n",
// md->name().data(),fd->name().data(),md->getStartBodyLine(),md->getOuterScope()->name().data()); // md->name().data(),fd->name().data(),md->getStartBodyLine(),md->getOuterScope()->name().data());
...@@ -7035,12 +7074,15 @@ static void addSourceReferences() ...@@ -7035,12 +7074,15 @@ static void addSourceReferences()
for (mni.toFirst();(md=mni.current());++mni) for (mni.toFirst();(md=mni.current());++mni)
{ {
FileDef *fd=md->getBodyDef(); FileDef *fd=md->getBodyDef();
//printf("member %s body=[%d,%d] fd=%p\n",md->name().data(), //printf("member %s body=[%d,%d] fd=%p link=%d parseSources=%d\n",
// md->getStartBodyLine(),md->getEndBodyLine(),fd); // md->name().data(),
// md->getStartBodyLine(),md->getEndBodyLine(),fd,
// md->isLinkableInProject(),
// Doxygen::parseSourcesNeeded);
if (fd && if (fd &&
md->getStartBodyLine()!=-1 && md->getStartBodyLine()!=-1 &&
md->isLinkableInProject() && md->isLinkableInProject() &&
fd->generateSourceFile() (fd->generateSourceFile() || Doxygen::parseSourcesNeeded)
) )
{ {
//printf("Found member `%s' in file `%s' at line `%d' def=%s\n", //printf("Found member `%s' in file `%s' at line `%d' def=%s\n",
...@@ -9267,7 +9309,9 @@ void checkConfiguration() ...@@ -9267,7 +9309,9 @@ void checkConfiguration()
Doxygen::xrefLists->setAutoDelete(TRUE); Doxygen::xrefLists->setAutoDelete(TRUE);
Doxygen::parseSourcesNeeded = Config_getBool("CALL_GRAPH") || Doxygen::parseSourcesNeeded = Config_getBool("CALL_GRAPH") ||
Config_getBool("CALLER_GRAPH"); Config_getBool("CALLER_GRAPH") ||
Config_getBool("REFERENCES_RELATION") ||
Config_getBool("REFERENCED_BY_RELATION");
} }
......
...@@ -266,7 +266,7 @@ class Entry ...@@ -266,7 +266,7 @@ class Entry
NonAtomic = 0x040000, NonAtomic = 0x040000,
Copy = 0x080000, Copy = 0x080000,
Retain = 0x100000, Retain = 0x100000,
Assign = 0x200000, Assign = 0x200000
}; };
enum ClassSpecifier enum ClassSpecifier
{ {
......
...@@ -835,7 +835,7 @@ void FileDef::addSourceRef(int line,Definition *d,MemberDef *md) ...@@ -835,7 +835,7 @@ void FileDef::addSourceRef(int line,Definition *d,MemberDef *md)
srcDefDict->insert(line,d); srcDefDict->insert(line,d);
if (md) srcMemberDict->insert(line,md); if (md) srcMemberDict->insert(line,md);
//printf("Adding member %s with anchor %s at line %d to file %s\n", //printf("Adding member %s with anchor %s at line %d to file %s\n",
// d->name().data(),anchor,line,name().data()); // md->name().data(),md->anchor().data(),line,name().data());
} }
} }
......
...@@ -630,7 +630,7 @@ IGNORE (IMPLICIT{BS}NONE|CONTAINS|WRITE|READ|ALLOCATE|DEALLOCATE|SIZE) ...@@ -630,7 +630,7 @@ IGNORE (IMPLICIT{BS}NONE|CONTAINS|WRITE|READ|ALLOCATE|DEALLOCATE|SIZE)
codifyLines(yytext); codifyLines(yytext);
endFontClass(); endFontClass();
} }
<Start>"end"({BS_}{COMMANDS})?/[ \t\n].* { <Start>"end"({BS_}{COMMANDS})?/[ \t\n] {
startFontClass("keyword"); startFontClass("keyword");
codifyLines(yytext); codifyLines(yytext);
endFontClass(); endFontClass();
......
...@@ -142,10 +142,19 @@ class GroupSDict : public SDict<GroupDef> ...@@ -142,10 +142,19 @@ class GroupSDict : public SDict<GroupDef>
public: public:
GroupSDict(uint size) : SDict<GroupDef>(size) {} GroupSDict(uint size) : SDict<GroupDef>(size) {}
virtual ~GroupSDict() {} virtual ~GroupSDict() {}
int compareItems(GCI item1,GCI item2)
{
return strcmp(((GroupDef*)item1)->groupTitle(),((GroupDef*)item2)->groupTitle());
}
}; };
class GroupList : public QList<GroupDef> class GroupList : public QList<GroupDef>
{ {
public:
int compareItems(GCI item1,GCI item2)
{
return strcmp(((GroupDef*)item1)->groupTitle(),((GroupDef*)item2)->groupTitle());
}
}; };
class GroupListIterator : public QListIterator<GroupDef> class GroupListIterator : public QListIterator<GroupDef>
......
...@@ -935,6 +935,11 @@ void HtmlDocVisitor::visitPre(DocParamSect *s) ...@@ -935,6 +935,11 @@ void HtmlDocVisitor::visitPre(DocParamSect *s)
m_t << theTranslator->trReturnValues(); break; m_t << theTranslator->trReturnValues(); break;
case DocParamSect::Exception: case DocParamSect::Exception:
m_t << theTranslator->trExceptions(); break; m_t << theTranslator->trExceptions(); break;
case DocParamSect::TemplateParam:
/* TODO: add this
m_t << theTranslator->trTemplateParam(); break;
*/
m_t << "Template Parameters"; break;
default: default:
ASSERT(0); ASSERT(0);
} }
......
...@@ -152,7 +152,7 @@ QCString abbreviate(const char *s,const char *name) ...@@ -152,7 +152,7 @@ QCString abbreviate(const char *s,const char *name)
{ {
QCString scopelessName=name; QCString scopelessName=name;
int i=scopelessName.findRev("::"); int i=scopelessName.findRev("::");
if (i!=-1) scopelessName=scopelessName.mid(i); if (i!=-1) scopelessName=scopelessName.mid(i+2);
QCString result=s; QCString result=s;
result=result.stripWhiteSpace(); result=result.stripWhiteSpace();
// strip trailing . // strip trailing .
...@@ -2433,6 +2433,8 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level) ...@@ -2433,6 +2433,8 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
if (hasSubGroups) if (hasSubGroups)
{ {
startIndexHierarchy(ol,level+1); startIndexHierarchy(ol,level+1);
if (Config_getBool("SORT_GROUP_NAMES"))
gd->groupList->sort();
QListIterator<GroupDef> gli(*gd->groupList); QListIterator<GroupDef> gli(*gd->groupList);
GroupDef *subgd = 0; GroupDef *subgd = 0;
for (gli.toFirst();(subgd=gli.current());++gli) for (gli.toFirst();(subgd=gli.current());++gli)
...@@ -2544,6 +2546,8 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level) ...@@ -2544,6 +2546,8 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
void writeGroupHierarchy(OutputList &ol) void writeGroupHierarchy(OutputList &ol)
{ {
startIndexHierarchy(ol,0); startIndexHierarchy(ol,0);
if (Config_getBool("SORT_GROUP_NAMES"))
Doxygen::groupSDict->sort();
GroupSDict::Iterator gli(*Doxygen::groupSDict); GroupSDict::Iterator gli(*Doxygen::groupSDict);
GroupDef *gd; GroupDef *gd;
for (gli.toFirst();(gd=gli.current());++gli) for (gli.toFirst();(gd=gli.current());++gli)
......
...@@ -355,7 +355,7 @@ bool setTranslator(const char *langName) ...@@ -355,7 +355,7 @@ bool setTranslator(const char *langName)
} }
#endif #endif
#ifdef LANG_FA #ifdef LANG_FA
else if (L_EQUAL("persian")) else if (L_EQUAL("persian") || L_EQUAL("farsi"))
{ {
theTranslator=new TranslatorDecoder(new TranslatorPersian); theTranslator=new TranslatorDecoder(new TranslatorPersian);
} }
......
...@@ -927,6 +927,11 @@ void LatexDocVisitor::visitPre(DocParamSect *s) ...@@ -927,6 +927,11 @@ void LatexDocVisitor::visitPre(DocParamSect *s)
filter(theTranslator->trReturnValues()); break; filter(theTranslator->trReturnValues()); break;
case DocParamSect::Exception: case DocParamSect::Exception:
filter(theTranslator->trExceptions()); break; filter(theTranslator->trExceptions()); break;
case DocParamSect::TemplateParam:
/* TODO: add this
filter(theTranslator->trTemplateParam()); break;
*/
filter("Template Parameters"); break;
default: default:
ASSERT(0); ASSERT(0);
} }
......
...@@ -807,6 +807,11 @@ void ManDocVisitor::visitPre(DocParamSect *s) ...@@ -807,6 +807,11 @@ void ManDocVisitor::visitPre(DocParamSect *s)
m_t << theTranslator->trReturnValues(); break; m_t << theTranslator->trReturnValues(); break;
case DocParamSect::Exception: case DocParamSect::Exception:
m_t << theTranslator->trExceptions(); break; m_t << theTranslator->trExceptions(); break;
case DocParamSect::TemplateParam:
/* TODO: add this
m_t << theTranslator->trTemplateParam(); break;
*/
m_t << "Template Parameters"; break;
default: default:
ASSERT(0); ASSERT(0);
} }
......
...@@ -1161,6 +1161,7 @@ void PerlModDocVisitor::visitPre(DocParamSect *s) ...@@ -1161,6 +1161,7 @@ void PerlModDocVisitor::visitPre(DocParamSect *s)
case DocParamSect::Param: type = "params"; break; case DocParamSect::Param: type = "params"; break;
case DocParamSect::RetVal: type = "retvals"; break; case DocParamSect::RetVal: type = "retvals"; break;
case DocParamSect::Exception: type = "exceptions"; break; case DocParamSect::Exception: type = "exceptions"; break;
case DocParamSect::TemplateParam: type = "templateparam"; break;
case DocParamSect::Unknown: case DocParamSect::Unknown:
err("Error: unknown parameter section found\n"); err("Error: unknown parameter section found\n");
break; break;
......
...@@ -589,6 +589,7 @@ class PrintDocVisitor : public DocVisitor ...@@ -589,6 +589,7 @@ class PrintDocVisitor : public DocVisitor
case DocParamSect::Param: printf("param"); break; case DocParamSect::Param: printf("param"); break;
case DocParamSect::RetVal: printf("retval"); break; case DocParamSect::RetVal: printf("retval"); break;
case DocParamSect::Exception: printf("exception"); break; case DocParamSect::Exception: printf("exception"); break;
case DocParamSect::TemplateParam: printf("templateparam"); break;
case DocParamSect::Unknown: printf("unknown"); break; case DocParamSect::Unknown: printf("unknown"); break;
} }
printf(">\n"); printf(">\n");
......
...@@ -1174,6 +1174,11 @@ void RTFDocVisitor::visitPre(DocParamSect *s) ...@@ -1174,6 +1174,11 @@ void RTFDocVisitor::visitPre(DocParamSect *s)
m_t << theTranslator->trReturnValues(); break; m_t << theTranslator->trReturnValues(); break;
case DocParamSect::Exception: case DocParamSect::Exception:
m_t << theTranslator->trExceptions(); break; m_t << theTranslator->trExceptions(); break;
case DocParamSect::TemplateParam:
/* TODO: add this
m_t << theTranslator->trTemplateParam(); break;
*/
m_t << "Template Parameters"; break;
default: default:
ASSERT(0); ASSERT(0);
} }
......
...@@ -2773,7 +2773,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) ...@@ -2773,7 +2773,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
initEntry(); initEntry();
BEGIN( FindMembers ); BEGIN( FindMembers );
} }
<IDLProp>. { <IDLProp>. { // spaces, *, or other stuff
idlProp+=yytext;
} }
<Array>"]" { current->args += *yytext ; <Array>"]" { current->args += *yytext ;
if (--squareCount<=0) if (--squareCount<=0)
......
...@@ -288,7 +288,7 @@ function main() ...@@ -288,7 +288,7 @@ function main()
{ {
$query=$_GET["query"]; $query=$_GET["query"];
} }
end_form($query); end_form(ereg_replace("[^[:alnum:]:\\.\\t ]", " ", $query ));
echo "&nbsp;\n<div class=\"searchresults\">\n"; echo "&nbsp;\n<div class=\"searchresults\">\n";
$results = array(); $results = array();
$requiredWords = array(); $requiredWords = array();
......
...@@ -288,7 +288,7 @@ ...@@ -288,7 +288,7 @@
" {\n" " {\n"
" $query=$_GET[\"query\"];\n" " $query=$_GET[\"query\"];\n"
" }\n" " }\n"
" end_form($query);\n" " end_form(ereg_replace(\"[^[:alnum:]:\\\\.\\\\t ]\", \" \", $query ));\n"
" echo \"&nbsp;\\n<div class=\\\"searchresults\\\">\\n\";\n" " echo \"&nbsp;\\n<div class=\\\"searchresults\\\">\\n\";\n"
" $results = array();\n" " $results = array();\n"
" $requiredWords = array();\n" " $requiredWords = array();\n"
......
...@@ -168,6 +168,18 @@ class SDict ...@@ -168,6 +168,18 @@ class SDict
return item ? m_list->remove(item) : FALSE; return item ? m_list->remove(item) : FALSE;
} }
/*! Take an item out of the dictionary without deleting it */
T *take(const char *key)
{
T *item = m_dict->take(key);
if (item)
{
int i = m_list->find(item);
m_list->take(i);
}
return item;
}
/*! Sorts the members of the dictionary. First appending a number /*! Sorts the members of the dictionary. First appending a number
* of members and then sorting them is faster (O(NlogN) than using * of members and then sorting them is faster (O(NlogN) than using
* inSort() for each member (O(N^2)). * inSort() for each member (O(N^2)).
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
* Thanks to Jorge Ramos and others for their contributions. * Thanks to Jorge Ramos and others for their contributions.
* *
* History: * History:
* 20080206:
* - Method trTypeContraints() renamed to trTypeConstraints().
* 20071216: * 20071216:
* - New methods since 1.5.4 updated. * - New methods since 1.5.4 updated.
* 20070914 * 20070914
...@@ -30,7 +32,7 @@ ...@@ -30,7 +32,7 @@
#ifndef TRANSLATOR_BR_H #ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H #define TRANSLATOR_BR_H
class TranslatorBrazilian : public TranslatorAdapter_1_5_4 class TranslatorBrazilian : public Translator
{ {
public: public:
...@@ -1768,7 +1770,7 @@ class TranslatorBrazilian : public TranslatorAdapter_1_5_4 ...@@ -1768,7 +1770,7 @@ class TranslatorBrazilian : public TranslatorAdapter_1_5_4
} }
/*! C# Type Contraint list */ /*! C# Type Contraint list */
virtual QCString trTypeContraints() virtual QCString trTypeConstraints()
{ {
return "Restrições do Tipo"; return "Restrições do Tipo";
} }
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
*/ */
#define CN_SPC #define CN_SPC
class TranslatorChinese : public TranslatorAdapter_1_5_4 class TranslatorChinese : public Translator
{ {
public: public:
/*! Used for identification of the language. The identification /*! Used for identification of the language. The identification
...@@ -1535,7 +1535,258 @@ class TranslatorChinese : public TranslatorAdapter_1_5_4 ...@@ -1535,7 +1535,258 @@ class TranslatorChinese : public TranslatorAdapter_1_5_4
return "枚举变量文档"; return "枚举变量文档";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.5.4 (mainly for Fortran)
//////////////////////////////////////////////////////////////////////////
/*! header that is put before the list of member subprograms (Fortran). */
virtual QCString trMemberFunctionDocumentationFortran()
// { return "Member Function/Subroutine Documentation"; }
{ return "成员函数及过程文档"; }
/*! This is put above each page as a link to the list of annotated data types (Fortran). */
virtual QCString trCompoundListFortran()
// { return "Data Types List"; }
{ return "数据类型列表"; }
/*! This is put above each page as a link to all members of compounds (Fortran). */
virtual QCString trCompoundMembersFortran()
// { return "Data Fields"; }
{ return "数据项"; }
/*! This is an introduction to the annotated compound list (Fortran). */
virtual QCString trCompoundListDescriptionFortran()
// { return "Here are the data types with brief descriptions:"; }
{ return "带简要描述的数据类型列表:"; }
/*! This is an introduction to the page with all data types (Fortran). */
virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
{
// QCString result="Here is a list of all ";
// if (!extractAll)
// {
// result+="documented ";
// }
// result+="data types members";
// result+=" with links to ";
// if (!extractAll)
// {
// result+="the data structure documentation for each member";
// }
// else
// {
// result+="the data types they belong to:";
// }
// return result;
if(!extractAll) {
return "这里是有文档的数据类型成员列表,含有到每个成员的数据结构文档的链接";
} else {
return "这里是数据类型成员列表,含有到成员所属的数据类型的链接:";
}
}
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index (Fortran).
*/
virtual QCString trCompoundIndexFortran()
// { return "Data Type Index"; }
{ return "数据类型索引"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all data types (Fortran).
*/
virtual QCString trTypeDocumentation()
// { return "Data Type Documentation"; }
{ return "数据类型文档"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) subprograms (Fortran).
*/
virtual QCString trSubprograms()
//{ return "Functions/Subroutines"; }
{ return "函数/过程"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for subprograms (Fortran)
*/
virtual QCString trSubprogramDocumentation()
//{ return "Function/Subroutine Documentation"; }
{ return "函数/过程文档"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds (Fortran)
*/
virtual QCString trDataTypes()
// { return "Data Types"; }
{ return "数据类型"; }
/*! used as the title of page containing all the index of all modules (Fortran). */
virtual QCString trModulesList()
// { return "Modules List"; }
{ return "模块列表"; }
/*! used as an introduction to the modules list (Fortran) */
virtual QCString trModulesListDescription(bool extractAll)
{
// QCString result="Here is a list of all ";
// if (!extractAll) result+="documented ";
// result+="modules with brief descriptions:";
// return result;
if(!extractAll) {
return "带简要描述的有文档的模块列表:";
} else {
return "带简要描述的模块列表:";
}
}
/*! used as the title of the HTML page of a module/type (Fortran) */
virtual QCString trCompoundReferenceFortran(const char *clName,
ClassDef::CompoundType compType,
bool isTemplate)
{
// QCString result=(QCString)clName;
// switch(compType)
// {
// case ClassDef::Class: result+=" Module"; break;
// case ClassDef::Struct: result+=" Type"; break;
// case ClassDef::Union: result+=" Union"; break;
// case ClassDef::Interface: result+=" Interface"; break;
// case ClassDef::Protocol: result+=" Protocol"; break;
// case ClassDef::Category: result+=" Category"; break;
// case ClassDef::Exception: result+=" Exception"; break;
// }
// if (isTemplate) result+=" Template";
// result+=" Reference";
// return result;
QCString result=(QCString)clName;
switch(compType)
{
case ClassDef::Class: result+=CN_SPC"模块"; break;
case ClassDef::Struct: result+=CN_SPC"类型"; break;
case ClassDef::Union: result+=CN_SPC"联合"; break;
case ClassDef::Interface: result+=CN_SPC"界面"; break;
case ClassDef::Protocol: result+=CN_SPC"接口"; break;
case ClassDef::Category: result+=CN_SPC"目录"; break;
case ClassDef::Exception: result+=CN_SPC"异常"; break;
}
if (isTemplate) result+="模板";
result+="参考手册";
return result;
}
/*! used as the title of the HTML page of a module (Fortran) */
virtual QCString trModuleReference(const char *namespaceName)
{
QCString result=namespaceName;
// result+=" Module Reference";
result += CN_SPC"模块参考手册";
return result;
}
/*! This is put above each page as a link to all members of modules. (Fortran) */
virtual QCString trModulesMembers()
// { return "Module Members"; }
{ return "模块成员"; }
/*! This is an introduction to the page with all modules members (Fortran) */
virtual QCString trModulesMemberDescription(bool extractAll)
{
// QCString result="Here is a list of all ";
// if (!extractAll) result+="documented ";
// result+="module members with links to ";
// if (extractAll)
// {
// result+="the module documentation for each member:";
// }
// else
// {
// result+="the modules they belong to:";
// }
// return result;
if(!extractAll) {
return "这里是有文档的模块成员列表,含有到每个成员所在模块的文档的链接";
} else {
return "这里是模块成员列表,含有到成员所属的模块的链接:";
}
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all modules (Fortran).
*/
virtual QCString trModulesIndex()
// { return "Modules Index"; }
{ return "模块索引"; }
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trModule(bool, bool)
{
// QCString result((first_capital ? "Module" : "module"));
// if (!singular) result+="s";
// return result;
return "模块";
}
/*! This is put at the bottom of a module documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
bool)
{ // here s is one of " Module", " Struct" or " Union"
// single is true implies a single file
// QCString result=(QCString)"The documentation for this ";
// switch(compType)
// {
// case ClassDef::Class: result+="module"; break;
// case ClassDef::Struct: result+="type"; break;
// case ClassDef::Union: result+="union"; break;
// case ClassDef::Interface: result+="interface"; break;
// case ClassDef::Protocol: result+="protocol"; break;
// case ClassDef::Category: result+="category"; break;
// case ClassDef::Exception: result+="exception"; break;
// }
// result+=" was generated from the following file";
// if (single) result+=":"; else result+="s:";
// return result;
QCString result="该";
switch(compType)
{
case ClassDef::Class: result+=CN_SPC"模块"; break;
case ClassDef::Struct: result+=CN_SPC"类型"; break;
case ClassDef::Union: result+=CN_SPC"联合"; break;
case ClassDef::Interface: result+=CN_SPC"界面"; break;
case ClassDef::Protocol: result+=CN_SPC"接口"; break;
case ClassDef::Category: result+=CN_SPC"目录"; break;
case ClassDef::Exception: result+=CN_SPC"异常"; break;
}
result+="的文档由以下文件生成:";
return result;
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trType(bool, bool)
{
return "类型";
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trSubprogram(bool, bool)
{
return "子程序";
}
/*! C# Type Constraint list */
virtual QCString trTypeConstraints()
{
return "类型限制";
}
}; };
#endif #endif
......
...@@ -111,13 +111,16 @@ ...@@ -111,13 +111,16 @@
// 2006/06/12 Jens Seidel (jensseidel@users.sourceforge.net) // 2006/06/12 Jens Seidel (jensseidel@users.sourceforge.net)
// - Updated for "new since 1.4.6" version // - Updated for "new since 1.4.6" version
// //
// 2008/02/04 Jens Seidel (jensseidel@users.sourceforge.net)
// - Updated for "new since 1.5.4" version
//
// Todo: // Todo:
// - see FIXME // - see FIXME
#ifndef TRANSLATOR_DE_H #ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H #define TRANSLATOR_DE_H
class TranslatorGerman : public TranslatorAdapter_1_5_4 class TranslatorGerman : public Translator
{ {
public: public:
...@@ -1663,6 +1666,206 @@ class TranslatorGerman : public TranslatorAdapter_1_5_4 ...@@ -1663,6 +1666,206 @@ class TranslatorGerman : public TranslatorAdapter_1_5_4
virtual QCString trEnumerationValueDocumentation() virtual QCString trEnumerationValueDocumentation()
{ return "Enumerator-Dokumentation"; } { return "Enumerator-Dokumentation"; }
//////////////////////////////////////////////////////////////////////////
// new since 1.5.4 (mainly for Fortran)
//////////////////////////////////////////////////////////////////////////
/*! header that is put before the list of member subprograms (Fortran). */
virtual QCString trMemberFunctionDocumentationFortran()
{ return "Elementfunktionen/Unterroutinen-Dokumentation"; }
/*! This is put above each page as a link to the list of annotated data types (Fortran). */
virtual QCString trCompoundListFortran()
{ return "Datentyp-Liste"; }
/*! This is put above each page as a link to all members of compounds (Fortran). */
virtual QCString trCompoundMembersFortran()
{ return "Datenfelder"; }
/*! This is an introduction to the annotated compound list (Fortran). */
virtual QCString trCompoundListDescriptionFortran()
{ return "Hier folgen die Datentypen mit Kurzbeschreibungen:"; }
/*! This is an introduction to the page with all data types (Fortran). */
virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
{
QCString result="Hier folgt eine Liste aller ";
if (!extractAll)
{
result+="dokumentierten ";
}
result+="Datentypelemente";
result+=" mit Links ";
if (!extractAll)
{
result+="zur Datenstruktur-Dokumentation für jedes Element";
}
else
{
result+="zu den Datentypen, zu denen sie gehören:";
}
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index (Fortran).
*/
virtual QCString trCompoundIndexFortran()
{ return "Datentyp-Index"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all data types (Fortran).
*/
virtual QCString trTypeDocumentation()
{ return "Datentyp-Dokumentation"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) subprograms (Fortran).
*/
virtual QCString trSubprograms()
{ return "Funktionen/Unterroutinen"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for subprograms (Fortran)
*/
virtual QCString trSubprogramDocumentation()
{ return "Funktionen/Unterroutinen-Dokumentation"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds (Fortran)
*/
virtual QCString trDataTypes()
{ return "Datentypen"; }
/*! used as the title of page containing all the index of all modules (Fortran). */
virtual QCString trModulesList()
{ return "Modulliste"; }
/*! used as an introduction to the modules list (Fortran) */
virtual QCString trModulesListDescription(bool extractAll)
{
QCString result="Hier folgt eine Liste aller ";
if (!extractAll) result+="dokumentierten ";
result+="Module mit ihren Kurzbeschreibungen:";
return result;
}
/*! used as the title of the HTML page of a module/type (Fortran) */
virtual QCString trCompoundReferenceFortran(const char *clName,
ClassDef::CompoundType compType,
bool isTemplate)
{
QCString result=(QCString)clName;
result += "-";
switch(compType)
{
case ClassDef::Class: result+="Modul"; break;
case ClassDef::Struct: result+="Typ"; break;
case ClassDef::Union: result+="Union"; break;
case ClassDef::Interface: result+="Interface"; break;
case ClassDef::Protocol: result+="Protokoll"; break;
case ClassDef::Category: result+="Kategorie"; break;
case ClassDef::Exception: result+="Ausnahmen"; break;
}
if (isTemplate) result+="-Template";
result+="-Referenz";
return result;
}
/*! used as the title of the HTML page of a module (Fortran) */
virtual QCString trModuleReference(const char *namespaceName)
{
QCString result=namespaceName;
result+="-Modul-Referenz";
return result;
}
/*! This is put above each page as a link to all members of modules. (Fortran) */
virtual QCString trModulesMembers()
{ return "Modul-Elemente"; }
/*! This is an introduction to the page with all modules members (Fortran) */
virtual QCString trModulesMemberDescription(bool extractAll)
{
QCString result="Hier folgt eine Liste aller ";
if (!extractAll) result+="dokumentierten ";
result+="Modulelemente mit Links ";
if (extractAll)
{
result+="zur Moduldokumentation für jedes Element:";
}
else
{
result+="zu den Modulen, zu denen sie gehören:";
}
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all modules (Fortran).
*/
virtual QCString trModulesIndex()
{ return "Modul-Index"; }
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trModule(bool /*first_capital*/, bool singular)
{
QCString result("Modul");
if (!singular) result+="e";
return result;
}
/*! This is put at the bottom of a module documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
bool single)
{
// single is true implies a single file
QCString result=(QCString)"Die Dokumentation für ";
switch(compType)
{
case ClassDef::Class: result+="dieses Modul"; break;
case ClassDef::Struct: result+="diesen Typ"; break;
case ClassDef::Union: result+="diese Union"; break;
case ClassDef::Interface: result+="dieses Interface"; break;
case ClassDef::Protocol: result+="dieses Protokoll"; break;
case ClassDef::Category: result+="diese Kategorie"; break;
case ClassDef::Exception: result+="diese Ausnahme"; break;
}
if (single)
result+=" wurde aus der folgenden Datei erzeugt:";
else
result+=" wurde aus den folgenden Dateien erzeugt:";
return result;
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trType(bool /*first_capital*/, bool singular)
{
QCString result("Typ");
if (!singular) result+="en";
return result;
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trSubprogram(bool /*first_capital*/, bool singular)
{
QCString result("Unterprogramm");
if (!singular) result+="e";
return result;
}
/*! C# Type Constraint list */
virtual QCString trTypeConstraints()
{
return "Type Constraints";
}
}; };
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
* some words haven't got translate in spanish. * some words haven't got translate in spanish.
* Updated from 1.3.8 to 1.4.6 by Guillermo Ballester Valor (May-05-2006) * Updated from 1.3.8 to 1.4.6 by Guillermo Ballester Valor (May-05-2006)
* Updated fron 1.4.6 to 1.5.1 by Bartomeu Creus Navarro (22-enero-2007) * Updated fron 1.4.6 to 1.5.1 by Bartomeu Creus Navarro (22-enero-2007)
* Updated fron 1.5.1 to 1.5.5 by Bartomeu Creus Navarro (5-febrero-2008)
*/ */
#ifndef TRANSLATOR_ES_H #ifndef TRANSLATOR_ES_H
...@@ -234,7 +235,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -234,7 +235,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
/*! This is an introduction to the annotated compound list. */ /*! This is an introduction to the annotated compound list. */
virtual QCString trCompoundListDescription() virtual QCString trCompoundListDescription()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "Lista de estructuras con una breve descripción:"; return "Lista de estructuras con una breve descripción:";
...@@ -506,6 +506,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -506,6 +506,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
result+=(QCString)" por"; result+=(QCString)" por";
return result; return result;
} }
/*! This is part of the sentence used in the standard footer of each page. /*! This is part of the sentence used in the standard footer of each page.
*/ */
virtual QCString trWrittenBy() virtual QCString trWrittenBy()
...@@ -597,18 +598,18 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -597,18 +598,18 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
ClassDef::CompoundType compType, ClassDef::CompoundType compType,
bool isTemplate) bool isTemplate)
{ {
QCString result="Referencia de "; QCString result="Referencia de";
if (isTemplate) result+=" la plantilla de";
switch(compType) switch(compType)
{ {
case ClassDef::Class: result+="la Clase "; break; case ClassDef::Class: result+=" la Clase "; break;
case ClassDef::Struct: result+="la Estructura "; break; case ClassDef::Struct: result+=" la Estructura "; break;
case ClassDef::Union: result+="la Unión "; break; case ClassDef::Union: result+=" la Unión "; break;
case ClassDef::Interface: result+="la Interfaz "; break; case ClassDef::Interface: result+=" la Interfaz "; break;
case ClassDef::Protocol: result+="el Protocolo "; break; case ClassDef::Protocol: result+="l Protocolo "; break;
case ClassDef::Category: result+="la Categoria "; break; case ClassDef::Category: result+=" la Categoria "; break;
case ClassDef::Exception: result+="la Excepción "; break; case ClassDef::Exception: result+=" la Excepción "; break;
} }
if (isTemplate) result+=" <template>";
result+=(QCString)clName; result+=(QCString)clName;
return result; return result;
} }
...@@ -631,22 +632,31 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -631,22 +632,31 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
virtual QCString trPublicMembers() virtual QCString trPublicMembers()
{ return "Métodos públicos"; } { return "Métodos públicos"; }
virtual QCString trPublicSlots() virtual QCString trPublicSlots()
{ return "Slots públicos"; } { return "Slots públicos"; }
virtual QCString trSignals() virtual QCString trSignals()
{ return "Señales"; } { return "Señales"; }
virtual QCString trStaticPublicMembers() virtual QCString trStaticPublicMembers()
{ return "Métodos públicos estáticos"; } { return "Métodos públicos estáticos"; }
virtual QCString trProtectedMembers() virtual QCString trProtectedMembers()
{ return "Métodos protegidos"; } { return "Métodos protegidos"; }
virtual QCString trProtectedSlots() virtual QCString trProtectedSlots()
{ return "Slots protegidos"; } { return "Slots protegidos"; }
virtual QCString trStaticProtectedMembers() virtual QCString trStaticProtectedMembers()
{ return "Métodos protegidos estáticos"; } { return "Métodos protegidos estáticos"; }
virtual QCString trPrivateMembers() virtual QCString trPrivateMembers()
{ return "Métodos privados"; } { return "Métodos privados"; }
virtual QCString trPrivateSlots() virtual QCString trPrivateSlots()
{ return "Slots privados"; } { return "Slots privados"; }
virtual QCString trStaticPrivateMembers() virtual QCString trStaticPrivateMembers()
{ return "Métodos privados estáticos"; } { return "Métodos privados estáticos"; }
...@@ -727,13 +737,13 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -727,13 +737,13 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
* index of all namespaces. * index of all namespaces.
*/ */
virtual QCString trNamespaceIndex() virtual QCString trNamespaceIndex()
{ return "Indice de namespace"; } { return "Indice de namespaces"; }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces. * the documentation of all namespaces.
*/ */
virtual QCString trNamespaceDocumentation() virtual QCString trNamespaceDocumentation()
{ return "Documentación de namespace"; } { return "Documentación de namespaces"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990522 // new since 0.49-990522
...@@ -767,7 +777,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -767,7 +777,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
case ClassDef::Category: result+="a categoría"; break; case ClassDef::Category: result+="a categoría"; break;
case ClassDef::Exception: result+="a excepción"; break; case ClassDef::Exception: result+="a excepción"; break;
} }
result+=" fué generada a partir de"; result+=" fue generada a partir de";
if (single) result+="l siguiente fichero:"; if (single) result+="l siguiente fichero:";
else result+=" los siguientes ficheros:"; else result+=" los siguientes ficheros:";
return result; return result;
...@@ -829,63 +839,76 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -829,63 +839,76 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return (QCString)"Diagrama de colaboración para "+clName+":"; return (QCString)"Diagrama de colaboración para "+clName+":";
} }
/*! this text is put before an include dependency graph */ /*! this text is put before an include dependency graph */
virtual QCString trInclDepGraph(const char *fName) virtual QCString trInclDepGraph(const char *fName)
{ {
return (QCString)"Dependencia gráfica adjunta para "+fName+":"; return (QCString)"Dependencia gráfica adjunta para "+fName+":";
} }
/*! header that is put before the list of constructor/destructors. */ /*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation() virtual QCString trConstructorDocumentation()
{ {
return "Documentación del constructor y destructor"; return "Documentación del constructor y destructor";
} }
/*! Used in the file documentation to point to the corresponding sources. */ /*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode() virtual QCString trGotoSourceCode()
{ {
return "Ir al código fuente de este archivo."; return "Ir al código fuente de este archivo.";
} }
/*! Used in the file sources to point to the corresponding documentation. */ /*! Used in the file sources to point to the corresponding documentation. */
virtual QCString trGotoDocumentation() virtual QCString trGotoDocumentation()
{ {
return "Ir a la documentación de este archivo."; return "Ir a la documentación de este archivo.";
} }
/*! Text for the \\pre command */ /*! Text for the \\pre command */
virtual QCString trPrecondition() virtual QCString trPrecondition()
{ {
return "Precondición"; return "Precondición";
} }
/*! Text for the \\post command */ /*! Text for the \\post command */
virtual QCString trPostcondition() virtual QCString trPostcondition()
{ {
return "Postcondición"; return "Postcondición";
} }
/*! Text for the \\invariant command */ /*! Text for the \\invariant command */
virtual QCString trInvariant() virtual QCString trInvariant()
{ {
return "Invariante"; return "Invariante";
} }
/*! Text shown before a multi-line variable/enum initialization */ /*! Text shown before a multi-line variable/enum initialization */
virtual QCString trInitialValue() virtual QCString trInitialValue()
{ {
return "Valor inicial:"; return "Valor inicial:";
} }
/*! Text used the source code in the file index */ /*! Text used the source code in the file index */
virtual QCString trCode() virtual QCString trCode()
{ {
return "código"; return "código";
} }
virtual QCString trGraphicalHierarchy() virtual QCString trGraphicalHierarchy()
{ {
return "Representación gráfica de la clase"; return "Representación gráfica de la clase";
} }
virtual QCString trGotoGraphicalHierarchy() virtual QCString trGotoGraphicalHierarchy()
{ {
return "Ir a la representación gráfica de la jerarquía de la clase"; return "Ir a la representación gráfica de la jerarquía de la clase";
} }
virtual QCString trGotoTextualHierarchy() virtual QCString trGotoTextualHierarchy()
{ {
return "Ir a la jerarquía textual de la clase"; return "Ir a la jerarquía textual de la clase";
} }
virtual QCString trPageIndex() virtual QCString trPageIndex()
{ {
return "Página indice"; return "Página indice";
...@@ -899,10 +922,12 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -899,10 +922,12 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Nota"; return "Nota";
} }
virtual QCString trPublicTypes() virtual QCString trPublicTypes()
{ {
return "Tipos públicos"; return "Tipos públicos";
} }
virtual QCString trPublicAttribs() virtual QCString trPublicAttribs()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
...@@ -914,30 +939,37 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -914,30 +939,37 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
return "Atributos públicos"; return "Atributos públicos";
} }
} }
virtual QCString trStaticPublicAttribs() virtual QCString trStaticPublicAttribs()
{ {
return "Atributos públicos estáticos"; return "Atributos públicos estáticos";
} }
virtual QCString trProtectedTypes() virtual QCString trProtectedTypes()
{ {
return "Tipos protegidos"; return "Tipos protegidos";
} }
virtual QCString trProtectedAttribs() virtual QCString trProtectedAttribs()
{ {
return "Atributos protegidos"; return "Atributos protegidos";
} }
virtual QCString trStaticProtectedAttribs() virtual QCString trStaticProtectedAttribs()
{ {
return "Atributos protegidos estáticos"; return "Atributos protegidos estáticos";
} }
virtual QCString trPrivateTypes() virtual QCString trPrivateTypes()
{ {
return "Tipos privados"; return "Tipos privados";
} }
virtual QCString trPrivateAttribs() virtual QCString trPrivateAttribs()
{ {
return "Atributos privados"; return "Atributos privados";
} }
virtual QCString trStaticPrivateAttribs() virtual QCString trStaticPrivateAttribs()
{ {
return "Atributos privados estáticos"; return "Atributos privados estáticos";
...@@ -952,6 +984,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -952,6 +984,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Tareas Pendientes"; return "Tareas Pendientes";
} }
/*! Used as the header of the todo list */ /*! Used as the header of the todo list */
virtual QCString trTodoList() virtual QCString trTodoList()
{ {
...@@ -966,19 +999,23 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -966,19 +999,23 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Referenciado por"; return "Referenciado por";
} }
virtual QCString trRemarks() virtual QCString trRemarks()
{ {
return "Comentarios"; return "Comentarios";
} }
virtual QCString trAttention() virtual QCString trAttention()
{ {
return "Atención"; return "Atención";
} }
virtual QCString trInclByDepGraph() virtual QCString trInclByDepGraph()
{ {
return "Este gráfico muestra que archivos directa o " return "Gráfico de los archivos que directa o "
"indirectamente incluyen a este archivo:"; "indirectamente incluyen a este archivo:";
} }
virtual QCString trSince() virtual QCString trSince()
{ {
return "Desde"; return "Desde";
...@@ -993,6 +1030,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -993,6 +1030,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Leyenda del Gráfico"; return "Leyenda del Gráfico";
} }
/*! page explaining how the dot graph's should be interpreted /*! page explaining how the dot graph's should be interpreted
* The %A in the text below are to prevent link to classes called "A". * The %A in the text below are to prevent link to classes called "A".
*/ */
...@@ -1057,6 +1095,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1057,6 +1095,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
" La flecha se etiqueta con los parámetros con que se llama al template.\n" " La flecha se etiqueta con los parámetros con que se llama al template.\n"
"</ul>\n"; "</ul>\n";
} }
/*! text for the link to the legend page */ /*! text for the link to the legend page */
virtual QCString trLegend() virtual QCString trLegend()
{ {
...@@ -1072,6 +1111,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1072,6 +1111,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Prueba"; return "Prueba";
} }
/*! Used as the header of the test list */ /*! Used as the header of the test list */
virtual QCString trTestList() virtual QCString trTestList()
{ {
...@@ -1097,6 +1137,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1097,6 +1137,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Propiedades"; return "Propiedades";
} }
/*! Used as a section header for IDL property documentation */ /*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation() virtual QCString trPropertyDocumentation()
{ {
...@@ -1119,26 +1160,31 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1119,26 +1160,31 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
return "Clases"; return "Clases";
} }
} }
/*! Used as the title of a Java package */ /*! Used as the title of a Java package */
virtual QCString trPackage(const char *name) virtual QCString trPackage(const char *name)
{ {
return (QCString)"Paquetes "+name; return (QCString)"Paquetes "+name;
} }
/*! Title of the package index page */ /*! Title of the package index page */
virtual QCString trPackageList() virtual QCString trPackageList()
{ {
return "Lista de Paquetes "; return "Lista de Paquetes ";
} }
/*! The description of the package index page */ /*! The description of the package index page */
virtual QCString trPackageListDescription() virtual QCString trPackageListDescription()
{ {
return "Aquí van los paquetes con una breve descripción (si etá disponible):"; return "Aquí van los paquetes con una breve descripción (si etá disponible):";
} }
/*! The link name in the Quick links header for each page */ /*! The link name in the Quick links header for each page */
virtual QCString trPackages() virtual QCString trPackages()
{ {
return "Paquetes"; return "Paquetes";
} }
/*! Text shown before a multi-line define */ /*! Text shown before a multi-line define */
virtual QCString trDefineValue() virtual QCString trDefineValue()
{ {
...@@ -1154,6 +1200,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1154,6 +1200,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Bug"; return "Bug";
} }
/*! Used as the header of the bug list */ /*! Used as the header of the bug list */
virtual QCString trBugList() virtual QCString trBugList()
{ {
...@@ -1365,6 +1412,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1365,6 +1412,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Eventos"; return "Eventos";
} }
/*! Header used for the documentation section of a class' events. */ /*! Header used for the documentation section of a class' events. */
virtual QCString trEventDocumentation() virtual QCString trEventDocumentation()
{ {
...@@ -1381,6 +1429,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1381,6 +1429,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Tipos del Paquete"; return "Tipos del Paquete";
} }
/*! Used as a heading for a list of Java class functions with package /*! Used as a heading for a list of Java class functions with package
* scope. * scope.
*/ */
...@@ -1388,6 +1437,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1388,6 +1437,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Funciones del Paquete"; return "Funciones del Paquete";
} }
/*! Used as a heading for a list of static Java class functions with /*! Used as a heading for a list of static Java class functions with
* package scope. * package scope.
*/ */
...@@ -1395,6 +1445,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1395,6 +1445,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Funciones Estáticas del Paquete"; return "Funciones Estáticas del Paquete";
} }
/*! Used as a heading for a list of Java class variables with package /*! Used as a heading for a list of Java class variables with package
* scope. * scope.
*/ */
...@@ -1402,6 +1453,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1402,6 +1453,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Atributos del Paquete"; return "Atributos del Paquete";
} }
/*! Used as a heading for a list of static Java class variables with /*! Used as a heading for a list of static Java class variables with
* package scope. * package scope.
*/ */
...@@ -1421,6 +1473,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1421,6 +1473,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Todo"; return "Todo";
} }
/*! Put in front of the call graph for a function. */ /*! Put in front of the call graph for a function. */
virtual QCString trCallGraph() virtual QCString trCallGraph()
{ {
...@@ -1439,6 +1492,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1439,6 +1492,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Buscar"; return "Buscar";
} }
/*! This string is used as the title for the page listing the search /*! This string is used as the title for the page listing the search
* results. * results.
*/ */
...@@ -1446,6 +1500,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1446,6 +1500,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
{ {
return "Resultados de la Búsqueda"; return "Resultados de la Búsqueda";
} }
/*! This string is put just before listing the search results. The /*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found. * text can be different depending on the number of documents found.
* Inside the text you can put the special marker $num to insert * Inside the text you can put the special marker $num to insert
...@@ -1470,6 +1525,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1470,6 +1525,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
"Se muestran los mejores resultados primero."; "Se muestran los mejores resultados primero.";
} }
} }
/*! This string is put before the list of matched words, for each search /*! This string is put before the list of matched words, for each search
* result. What follows is the list of words that matched the query. * result. What follows is the list of words that matched the query.
*/ */
...@@ -1523,15 +1579,19 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1523,15 +1579,19 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
* directory is passed via \a dirName. * directory is passed via \a dirName.
*/ */
virtual QCString trDirReference(const char *dirName) virtual QCString trDirReference(const char *dirName)
{ QCString result="Referencia del Directorio "; result+=dirName; return result; } {
QCString result="Referencia del Directorio ";
result+=dirName;
return result;
}
/*! This returns the word directory with or without starting capital /*! This returns the word directory with or without starting capital
* (\a first_capital) and in sigular or plural form (\a singular). * (\a first_capital) and in sigular or plural form (\a singular).
*/ */
virtual QCString trDir(bool first_capital, bool singular) virtual QCString trDir(bool first_capital, bool singular)
{ {
QCString result((first_capital ? "Directori" : "directori")); QCString result((first_capital ? "Directorio" : "directorio"));
if (singular) result+="o"; else result+="os"; if (!singular) result+="s";
return result; return result;
} }
...@@ -1565,6 +1625,214 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4 ...@@ -1565,6 +1625,214 @@ class TranslatorSpanish : public TranslatorAdapter_1_5_4
virtual QCString trEnumerationValueDocumentation() virtual QCString trEnumerationValueDocumentation()
{ return "Documentación de los valores de la enumeración"; } { return "Documentación de los valores de la enumeración"; }
//////////////////////////////////////////////////////////////////////////
// new since 1.5.4 (mainly for Fortran)
//////////////////////////////////////////////////////////////////////////
// De parte de Bartomeu:
// No conozco el Fortran, salvo un par de ejercicios en la universidad
// hace muchos años. Por lo tanto, las traducciones son del inglés
// al español, no de un usuario de Fortran que puede que haya cosas que no
// traduzca o traduzca de otra forma. Que los usuarios de Fortran disculpen
// y espero se animen a mejorar mi traducción.
/*! header that is put before the list of member subprograms (Fortran). */
virtual QCString trMemberFunctionDocumentationFortran()
{ return "Documetación de miembros Function/Subroutine"; }
/*! This is put above each page as a link to the list of annotated data types (Fortran). */
virtual QCString trCompoundListFortran()
{ return "Lista de tipos de datos"; }
/*! This is put above each page as a link to all members of compounds (Fortran). */
virtual QCString trCompoundMembersFortran()
{ return "Etiquetas de datos"; }
/*! This is an introduction to the annotated compound list (Fortran). */
virtual QCString trCompoundListDescriptionFortran()
{ return "Aquí están los tipos de datos con una breve descripción:"; }
/*! This is an introduction to the page with all data types (Fortran). */
virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
{
QCString result="Aquí está una lista de todos ";
result+="los miembros de los tipos de datos ";
if (!extractAll)
{
result+="documentados ";
}
result+="con enlaces a ";
if (!extractAll)
{
result+="la documentación de la estructura de datos para cada miembro";
}
else
{
result+="los tipos de dato a que pertenece:";
}
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index (Fortran).
*/
virtual QCString trCompoundIndexFortran()
{ return "Índice de tipos de datos"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all data types (Fortran).
*/
virtual QCString trTypeDocumentation()
{ return "Documentación de tipos de datos"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) subprograms (Fortran).
*/
virtual QCString trSubprograms()
{ return "Funciones/Subprogramas"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for subprograms (Fortran)
*/
virtual QCString trSubprogramDocumentation()
{ return "Documentación de Funciones/Subprogramas"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds (Fortran)
*/
virtual QCString trDataTypes()
{ return "Tipos de datos"; }
/*! used as the title of page containing all the index of all modules (Fortran). */
virtual QCString trModulesList()
{ return "Lista de módulos"; }
/*! used as an introduction to the modules list (Fortran) */
virtual QCString trModulesListDescription(bool extractAll)
{
QCString result="Lista de todos los módulos ";
if (!extractAll) result+="documentados ";
result+="con una breve descripción:";
return result;
}
/*! used as the title of the HTML page of a module/type (Fortran) */
virtual QCString trCompoundReferenceFortran(const char *clName,
ClassDef::CompoundType compType,
bool isTemplate)
{
QCString result="Referencia de";
if (isTemplate) result+=" la plantilla de";
switch(compType)
{
case ClassDef::Class: result+="l módulo"; break;
case ClassDef::Struct: result+="l tipo"; break;
case ClassDef::Union: result+=" la unión"; break;
case ClassDef::Interface: result+=" la interfaz"; break;
case ClassDef::Protocol: result+="l protocolo"; break;
case ClassDef::Category: result+=" la categoría"; break;
case ClassDef::Exception: result+=" la excepción"; break;
}
result+=(QCString)clName;
return result;
}
/*! used as the title of the HTML page of a module (Fortran) */
virtual QCString trModuleReference(const char *namespaceName)
{
QCString result="Referencia módulo ";
result+=namespaceName;
return result;
}
/*! This is put above each page as a link to all members of modules. (Fortran) */
virtual QCString trModulesMembers()
{ return "Miembros módulo"; }
/*! This is an introduction to the page with all modules members (Fortran) */
virtual QCString trModulesMemberDescription(bool extractAll)
{
QCString result="Lista de todos los miembros del módulo ";
if (!extractAll) result+="documentados ";
result+="con enlaces ";
if (extractAll)
{
result+="a la documentación del módulo para cada uno:";
}
else
{
result+="al módulo al que pertenecen:";
}
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all modules (Fortran).
*/
virtual QCString trModulesIndex()
{ return "Índice de módulos"; }
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trModule(bool first_capital, bool singular)
{
QCString result((first_capital ? "Módulo" : "módulo"));
if (!singular) result+="s";
return result;
}
/*! This is put at the bottom of a module documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
bool single)
{ // here s is one of " Module", " Struct" or " Union"
// single is true implies a single file
QCString result=(QCString)"La documentación para est";
switch(compType)
{
case ClassDef::Class: result+="e módulo"; break;
case ClassDef::Struct: result+="e tipo"; break;
case ClassDef::Union: result+="a unión"; break;
case ClassDef::Interface: result+="e interfaz"; break;
case ClassDef::Protocol: result+="e protocolo"; break;
case ClassDef::Category: result+="a categoría"; break;
case ClassDef::Exception: result+="a excepción"; break;
}
result+=" fue generada de";
if (single) result+="l siguiente fichero:";
else result+=" los siguientes ficheros:";
return result;
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trType(bool first_capital, bool singular)
{
QCString result((first_capital ? "Tipo" : "tipo"));
if (!singular) result+="s";
return result;
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trSubprogram(bool first_capital, bool singular)
{
QCString result((first_capital ? "Subprograma" : "subprograma"));
if (!singular) result+="s";
return result;
}
/*! C# Type Constraint list */
virtual QCString trTypeConstraints()
{
return "Restriciones de tipo";
}
}; };
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2008 by Dimitri van Heesch. * Copyright (C) 1997-2007 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
...@@ -15,10 +15,12 @@ ...@@ -15,10 +15,12 @@
* *
* *
* Description : Doxygen Persian Translator * Description : Doxygen Persian Translator
* Author : Ali Nadalizadeh < nadalisoft @ yahoo . com > * Author : Ali Nadalizadeh < nadalizadeh @ gmail dot com >
* ChangeLog : * ChangeLog :
* Thu 06 Jul 2006 11:54:09 PM IRDT <nadalisoft@yahoo.com> * Thu 06 Jul 2006 11:54:09 PM IRDT <nadalizadeh at gmail dot com>
* >> First version of persian language support has been completed. * >> First version of persian language support has been completed.
* Mon Feb 4 11:52:09 IRST 2008 <nadalizadeh at gmail dot com>
* >> Obsolete methods removed. Translated more string(s) to persian. Upgraded to 1_5_4 adapter.
* *
*/ */
...@@ -30,7 +32,7 @@ ...@@ -30,7 +32,7 @@
#define HtmlDivEnd QCString("</div>") #define HtmlDivEnd QCString("</div>")
class TranslatorPersian : public TranslatorAdapter_1_4_6 class TranslatorPersian : public Translator
{ {
public: public:
...@@ -133,23 +135,23 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -133,23 +135,23 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
* parameter s is name of the project name. * parameter s is name of the project name.
*/ */
virtual QCString trGeneratedAutomatically(const char *s) virtual QCString trGeneratedAutomatically(const char *s)
{ QCString result="Generated automatically by Doxygen"; { QCString result="تولید شده توسط نرم افزار دی اکسیژن ";
if (s) result+=(QCString)" for "+s; if (s) result+=(QCString)" برای "+s;
result+=" from the source code."; result+=" از کد برنامه ";
return result; return result;
} }
/*! put after an enum name in the list of all members */ /*! put after an enum name in the list of all members */
virtual QCString trEnumName() virtual QCString trEnumName()
{ return "enum name"; } { return "enum نام"; }
/*! put after an enum value in the list of all members */ /*! put after an enum value in the list of all members */
virtual QCString trEnumValue() virtual QCString trEnumValue()
{ return "enum value"; } { return "enum مقدار"; }
/*! put after an undocumented member in the list of all members */ /*! put after an undocumented member in the list of all members */
virtual QCString trDefinedIn() virtual QCString trDefinedIn()
{ return "defined in"; } { return "تعریف شده در"; }
// quick reference sections // quick reference sections
...@@ -180,16 +182,12 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -180,16 +182,12 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
virtual QCString trFileList() virtual QCString trFileList()
{ return "ليست فايل ها"; } { return "ليست فايل ها"; }
/*! This is put above each page as a link to the list of all verbatim headers */
virtual QCString trHeaderFiles()
{ return "Header Files"; }
/*! This is put above each page as a link to all members of compounds. */ /*! This is put above each page as a link to all members of compounds. */
virtual QCString trCompoundMembers() virtual QCString trCompoundMembers()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "Data Fields"; return "فضاهای داده ها";
} }
else else
{ {
...@@ -230,9 +228,9 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -230,9 +228,9 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
/*! This is an introduction to the list with all files. */ /*! This is an introduction to the list with all files. */
virtual QCString trFileListDescription(bool extractAll) virtual QCString trFileListDescription(bool extractAll)
{ {
QCString result="هم اکنون ليست همه ي پرونده ها "; QCString result="ليست همه ي پرونده های ";
if (!extractAll) result+="(مستند شده) "; if (!extractAll) result+="(مستند شده) ";
result+="را مشاهده می کنيد :"; result+=" :";
return result; return result;
} }
...@@ -260,8 +258,9 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -260,8 +258,9 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
} }
else else
{ {
result+="همه ی اعضاء ٫"; result+="همه ی اعضاء ";
} }
result+=" به همراه ارتباطشان با ";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
result+="ساختارهای داده "; result+="ساختارهای داده ";
...@@ -270,29 +269,14 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -270,29 +269,14 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
{ {
result+="كلاس ها "; result+="كلاس ها ";
} }
result+=" با ارتباطشان با ";
if (!extractAll)
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
result+="the struct/union documentation for each field:"; result+="و مستندات ساختار داده برای هر عضو ";
} }
else else
{ {
result+="the class documentation for each member:"; result+="و مستندات کلاس برای هر عضو ";
}
}
else
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+="ساختارهای داده ای که به آنها مربوط هستند";
}
else
{
result+="کلاس هايي که به آنها مربوط هستند";
}
} }
result+="را مشاهده ميکنيد :"; result+="را مشاهده ميکنيد :";
return result; return result;
...@@ -301,38 +285,25 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -301,38 +285,25 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
/*! This is an introduction to the page with all file members. */ /*! This is an introduction to the page with all file members. */
virtual QCString trFileMembersDescription(bool extractAll) virtual QCString trFileMembersDescription(bool extractAll)
{ {
QCString result="هم اکنون ليست همه ی توابع ٫ متغيير ها ٫ تعاريف و ... "; QCString result="ليست همه ی توابع ، متغيير ها، تعاريف و ... ";
if (!extractAll) result+="(مستند شده) "; if (!extractAll) result+="(مستند شده) ";
result+=" با ارتباط های آنها "; result+=" به همراه ارتباط آنها ";
if (extractAll) result+="با پرونده هايی که به آن مربوط اند :";
result+="به پرونده هايی که به آن مربوط اند را مشاهده می کنيد :";
else
result+="به مستنداتشان را می بينيد :";
return result; return result;
} }
/*! This is an introduction to the page with the list of all header files. */
virtual QCString trHeaderFilesDescription()
{ return "Here are the header files that make up the API:"; }
/*! This is an introduction to the page with the list of all examples */ /*! This is an introduction to the page with the list of all examples */
virtual QCString trExamplesDescription() virtual QCString trExamplesDescription()
{ return "ليست همه ی مثال ها :"; } { return "ليست همه ی مثال ها :"; }
/*! This is an introduction to the page with the list of related pages */ /*! This is an introduction to the page with the list of related pages */
virtual QCString trRelatedPagesDescription() virtual QCString trRelatedPagesDescription()
{ return "Here is a list of all related documentation pages:"; } { return "لیست تمام صفحات و مستندات مربوطه :"; }
/*! This is an introduction to the page with the list of class/file groups */ /*! This is an introduction to the page with the list of class/file groups */
virtual QCString trModulesDescription() virtual QCString trModulesDescription()
{ return "Here is a list of all modules:"; } { return "لیست تمام ماژول ها:"; }
/*! This sentences is used in the annotated class/file lists if no brief
* description is given.
*/
virtual QCString trNoDescriptionAvailable()
{ return "هيچ توضيحی موجود نمي باشد"; }
// index titles (the project name is prepended for these) // index titles (the project name is prepended for these)
...@@ -345,13 +316,13 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -345,13 +316,13 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
* index of all groups. * index of all groups.
*/ */
virtual QCString trModuleIndex() virtual QCString trModuleIndex()
{ return "Module Index"; } { return "فهرست ماژول ها"; }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* class hierarchy. * class hierarchy.
*/ */
virtual QCString trHierarchicalIndex() virtual QCString trHierarchicalIndex()
{ return "Hierarchical Index"; } { return "فهرست سلسله مراتب"; }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* annotated compound index. * annotated compound index.
...@@ -360,7 +331,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -360,7 +331,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "Data Structure Index"; return "فهرست ساختار داده ها";
} }
else else
{ {
...@@ -378,7 +349,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -378,7 +349,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
* the documentation of all groups. * the documentation of all groups.
*/ */
virtual QCString trModuleDocumentation() virtual QCString trModuleDocumentation()
{ return "Module Documentation"; } { return "مستندات ماژول"; }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions. * the documentation of all classes, structs and unions.
...@@ -387,11 +358,11 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -387,11 +358,11 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "Data Structure Documentation"; return "مستندات ساختار داده ها";
} }
else else
{ {
return "Class Documentation"; return "مستندات کلاس ها";
} }
} }
...@@ -399,23 +370,23 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -399,23 +370,23 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
* the documentation of all files. * the documentation of all files.
*/ */
virtual QCString trFileDocumentation() virtual QCString trFileDocumentation()
{ return "File Documentation"; } { return "مستندات فایل"; }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples. * the documentation of all examples.
*/ */
virtual QCString trExampleDocumentation() virtual QCString trExampleDocumentation()
{ return "Example Documentation"; } { return "مستندات مثال"; }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages. * the documentation of all related pages.
*/ */
virtual QCString trPageDocumentation() virtual QCString trPageDocumentation()
{ return "Page Documentation"; } { return "مستندات صفحه"; }
/*! This is used in LaTeX as the title of the document */ /*! This is used in LaTeX as the title of the document */
virtual QCString trReferenceManual() virtual QCString trReferenceManual()
{ return "Reference Manual"; } { return "راهنمای مرجع"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of defines * list of defines
...@@ -427,7 +398,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -427,7 +398,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
* list of function prototypes * list of function prototypes
*/ */
virtual QCString trFuncProtos() virtual QCString trFuncProtos()
{ return "Function Prototypes"; } { return "پیش تعریف های توابع"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of typedefs * list of typedefs
...@@ -469,7 +440,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -469,7 +440,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
* of documentation blocks for function prototypes * of documentation blocks for function prototypes
*/ */
virtual QCString trFunctionPrototypeDocumentation() virtual QCString trFunctionPrototypeDocumentation()
{ return "Function Prototype Documentation"; } { return "مستندات تعاریف اولیه توابع"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs * of documentation blocks for typedefs
...@@ -543,18 +514,10 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -543,18 +514,10 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
virtual QCString trForInternalUseOnly() virtual QCString trForInternalUseOnly()
{ return ".فقط برای استعمال داخلی"; } { return ".فقط برای استعمال داخلی"; }
/*! this text is generated when the \\reimp command is used. */
virtual QCString trReimplementedForInternalReasons()
{ return "Reimplemented for internal reasons; the API is not affected."; }
/*! this text is generated when the \\warning command is used. */ /*! this text is generated when the \\warning command is used. */
virtual QCString trWarning() virtual QCString trWarning()
{ return "اخطار"; } { return "اخطار"; }
/*! this text is generated when the \\bug command is used. */
virtual QCString trBugsAndLimitations()
{ return "Bugs and limitations"; }
/*! this text is generated when the \\version command is used. */ /*! this text is generated when the \\version command is used. */
virtual QCString trVersion() virtual QCString trVersion()
{ return "نسخه"; } { return "نسخه"; }
...@@ -565,7 +528,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -565,7 +528,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
/*! this text is generated when the \\return command is used. */ /*! this text is generated when the \\return command is used. */
virtual QCString trReturns() virtual QCString trReturns()
{ return "Returns"; } { return "خروجی"; }
/*! this text is generated when the \\sa command is used. */ /*! this text is generated when the \\sa command is used. */
virtual QCString trSeeAlso() virtual QCString trSeeAlso()
...@@ -614,7 +577,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -614,7 +577,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
* related classes * related classes
*/ */
virtual QCString trRelatedFunctionDocumentation() virtual QCString trRelatedFunctionDocumentation()
{ return "Friends And Related Function Documentation"; } { return "مستندات توابع مربوط و دوست"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990425 // new since 0.49-990425
...@@ -634,7 +597,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -634,7 +597,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
case ClassDef::Interface: result=" Interface"; break; case ClassDef::Interface: result=" Interface"; break;
case ClassDef::Protocol: result=" Protocol"; break; case ClassDef::Protocol: result=" Protocol"; break;
case ClassDef::Category: result=" Category"; break; case ClassDef::Category: result=" Category"; break;
case ClassDef::Exception: result=" Exception"; break; case ClassDef::Exception: result=" استثناء"; break;
} }
if (isTemplate) result+=" قالب"; if (isTemplate) result+=" قالب";
result=QCString(clName) + " مرجع" +result ; result=QCString(clName) + " مرجع" +result ;
...@@ -732,7 +695,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -732,7 +695,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
*/ */
virtual QCString trReimplementedInList(int numEntries) virtual QCString trReimplementedInList(int numEntries)
{ {
return "Reimplemented in "+trWriteList(numEntries)+"."; return "تعریف شده است "+trWriteList(numEntries)+"دوباره در ";
} }
/*! This is put above each page as a link to all members of namespaces. */ /*! This is put above each page as a link to all members of namespaces. */
...@@ -826,11 +789,6 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -826,11 +789,6 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-991003 // new since 0.49-991003
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
virtual QCString trSources()
{
return "Sources";
}
virtual QCString trDefinedAtLineInSourceFile() virtual QCString trDefinedAtLineInSourceFile()
{ {
return ".در خط @0 از پرونده @1 تعريف شده است"; return ".در خط @0 از پرونده @1 تعريف شده است";
...@@ -881,12 +839,12 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -881,12 +839,12 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
/*! Text for the \\pre command */ /*! Text for the \\pre command */
virtual QCString trPrecondition() virtual QCString trPrecondition()
{ {
return "Precondition"; return "پیش شرط";
} }
/*! Text for the \\post command */ /*! Text for the \\post command */
virtual QCString trPostcondition() virtual QCString trPostcondition()
{ {
return "Postcondition"; return "پس شرط";
} }
/*! Text for the \\invariant command */ /*! Text for the \\invariant command */
virtual QCString trInvariant() virtual QCString trInvariant()
...@@ -936,7 +894,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -936,7 +894,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "Data Fields"; return "فضاهای داده ها";
} }
else else
{ {
...@@ -1005,8 +963,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1005,8 +963,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
} }
virtual QCString trInclByDepGraph() virtual QCString trInclByDepGraph()
{ {
return "This graph shows which files directly or " return "این نمودار فایل هایی را که این فایل را به طور مستقیم یا غیر مستقیم استفاده کرده اند نشان می دهد";
"indirectly include this file:";
} }
virtual QCString trSince() virtual QCString trSince()
{ {
...@@ -1125,23 +1082,18 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1125,23 +1082,18 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
/*! Used as a section header for IDL properties */ /*! Used as a section header for IDL properties */
virtual QCString trProperties() virtual QCString trProperties()
{ {
return "Properties"; return "خاصیت ها";
} }
/*! Used as a section header for IDL property documentation */ /*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation() virtual QCString trPropertyDocumentation()
{ {
return "Property Documentation"; return "مستندات خاصیت";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.2.4 // new since 1.2.4
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
return "Interfaces";
}
/*! Used for Java classes in the summary section of Java packages */ /*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses() virtual QCString trClasses()
{ {
...@@ -1162,7 +1114,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1162,7 +1114,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
/*! Title of the package index page */ /*! Title of the package index page */
virtual QCString trPackageList() virtual QCString trPackageList()
{ {
return "Package List"; return "لیست بسته ها";
} }
/*! The description of the package index page */ /*! The description of the package index page */
virtual QCString trPackageListDescription() virtual QCString trPackageListDescription()
...@@ -1172,12 +1124,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1172,12 +1124,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
/*! The link name in the Quick links header for each page */ /*! The link name in the Quick links header for each page */
virtual QCString trPackages() virtual QCString trPackages()
{ {
return "Packages"; return "بسته ها";
}
/*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
return "Package Documentation";
} }
/*! Text shown before a multi-line define */ /*! Text shown before a multi-line define */
virtual QCString trDefineValue() virtual QCString trDefineValue()
...@@ -1315,17 +1262,6 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1315,17 +1262,6 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
return result; return result;
} }
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trField(bool first_capital, bool singular)
{
QCString result((first_capital ? "Field" : "field"));
if (!singular) result+="s";
return result;
}
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
...@@ -1390,7 +1326,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1390,7 +1326,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
*/ */
virtual QCString trRTFTableOfContents() virtual QCString trRTFTableOfContents()
{ {
return "Table of Contents"; return "فهرست";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -1402,7 +1338,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1402,7 +1338,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
*/ */
virtual QCString trDeprecatedList() virtual QCString trDeprecatedList()
{ {
return "Deprecated List"; return "لیست آیتم های از رده خارج";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -1430,14 +1366,14 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1430,14 +1366,14 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
*/ */
virtual QCString trPackageTypes() virtual QCString trPackageTypes()
{ {
return "Package Types"; return "انواع بسته ها";
} }
/*! Used as a heading for a list of Java class functions with package /*! Used as a heading for a list of Java class functions with package
* scope. * scope.
*/ */
virtual QCString trPackageMembers() virtual QCString trPackageMembers()
{ {
return "Package Functions"; return "توابع بسته ها";
} }
/*! Used as a heading for a list of static Java class functions with /*! Used as a heading for a list of static Java class functions with
* package scope. * package scope.
...@@ -1451,7 +1387,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1451,7 +1387,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
*/ */
virtual QCString trPackageAttribs() virtual QCString trPackageAttribs()
{ {
return "Package Attributes"; return "خواص بسته ها";
} }
/*! Used as a heading for a list of static Java class variables with /*! Used as a heading for a list of static Java class variables with
* package scope. * package scope.
...@@ -1475,7 +1411,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1475,7 +1411,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
/*! Put in front of the call graph for a function. */ /*! Put in front of the call graph for a function. */
virtual QCString trCallGraph() virtual QCString trCallGraph()
{ {
return "Here is the call graph for this function:"; return "نمودار صدا زدن برای این تابع :";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -1509,7 +1445,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1509,7 +1445,7 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
{ {
if (numDocuments==0) if (numDocuments==0)
{ {
return "Sorry, no documents matching your query."; return "متاسفانه هیچ صفحه ای برای جستجو ی شما یافت نشد.";
} }
else if (numDocuments==1) else if (numDocuments==1)
{ {
...@@ -1598,6 +1534,186 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6 ...@@ -1598,6 +1534,186 @@ class TranslatorPersian : public TranslatorAdapter_1_4_6
"provided for convenience. It differs from the above " "provided for convenience. It differs from the above "
"function only in what argument(s) it accepts."; "function only in what argument(s) it accepts.";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.4.6
//////////////////////////////////////////////////////////////////////////
/*! This is used to introduce a caller (or called-by) graph */
virtual QCString trCallerGraph()
{
return "نمودار صدا زننده های این تابع:";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.5.4 (mainly for Fortran)
//////////////////////////////////////////////////////////////////////////
/*! header that is put before the list of member subprograms (Fortran). */
virtual QCString trMemberFunctionDocumentationFortran()
{ return "مستندات توابع عضو"; }
/*! This is put above each page as a link to the list of annotated data types (Fortran). */
virtual QCString trCompoundListFortran()
{ return "لیست ساختار های داده"; }
/*! This is put above each page as a link to all members of compounds (Fortran). */
virtual QCString trCompoundMembersFortran()
{ return "فیلدهای اطلاعات"; }
/*! This is an introduction to the annotated compound list (Fortran). */
virtual QCString trCompoundListDescriptionFortran()
{ return "ساختارهای داده به همراه توضیح کوتاه :"; }
/*! This is an introduction to the page with all data types (Fortran). */
virtual QCString trCompoundMembersDescriptionFortran(bool)
{
return "توضیحات اعضا ساختارها به همراه مستندات ساختار داده ی مربوطه";
}
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index (Fortran).
*/
virtual QCString trCompoundIndexFortran()
{ return "Data Type Index"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all data types (Fortran).
*/
virtual QCString trTypeDocumentation()
{ return "Data Type Documentation"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) subprograms (Fortran).
*/
virtual QCString trSubprograms()
{ return "توابع و زیربرنامه ها"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for subprograms (Fortran)
*/
virtual QCString trSubprogramDocumentation()
{ return "مستندات توابع و زیربرنامه ها"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds (Fortran)
*/
virtual QCString trDataTypes()
{ return "ساختار های داده"; }
/*! used as the title of page containing all the index of all modules (Fortran). */
virtual QCString trModulesList()
{ return "لیست ماژول ها"; }
/*! used as an introduction to the modules list (Fortran) */
virtual QCString trModulesListDescription(bool)
{
QCString result="لیست ماژول ها به همراه توضیحات کوتاه";
return result;
}
/*! used as the title of the HTML page of a module/type (Fortran) */
virtual QCString trCompoundReferenceFortran(const char *clName,
ClassDef::CompoundType compType,
bool isTemplate)
{
QCString result=(QCString)clName;
switch(compType)
{
case ClassDef::Class: result+=" Module"; break;
case ClassDef::Struct: result+=" Type"; break;
case ClassDef::Union: result+=" Union"; break;
case ClassDef::Interface: result+=" Interface"; break;
case ClassDef::Protocol: result+=" Protocol"; break;
case ClassDef::Category: result+=" Category"; break;
case ClassDef::Exception: result+=" Exception"; break;
}
if (isTemplate) result+=" Template";
result+=" Reference";
return result;
}
/*! used as the title of the HTML page of a module (Fortran) */
virtual QCString trModuleReference(const char *namespaceName)
{
QCString result=namespaceName;
result+=" Module Reference";
return result;
}
/*! This is put above each page as a link to all members of modules. (Fortran) */
virtual QCString trModulesMembers()
{ return "اعضاء ماژول"; }
/*! This is an introduction to the page with all modules members (Fortran) */
virtual QCString trModulesMemberDescription(bool)
{
QCString result="لیست اعضاء ماژول ها به همراه مستندات ماژول مربوطه";
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all modules (Fortran).
*/
virtual QCString trModulesIndex()
{ return "Modules Index"; }
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trModule(bool, bool singular)
{
QCString result("ماژول");
if (!singular) result+=" ها";
return result;
}
/*! This is put at the bottom of a module documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
bool single)
{ // here s is one of " Module", " Struct" or " Union"
// single is true implies a single file
QCString result=(QCString)"The documentation for this ";
switch(compType)
{
case ClassDef::Class: result+="module"; break;
case ClassDef::Struct: result+="type"; break;
case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="interface"; break;
case ClassDef::Protocol: result+="protocol"; break;
case ClassDef::Category: result+="category"; break;
case ClassDef::Exception: result+="exception"; break;
}
result+=" was generated from the following file";
if (single) result+=":"; else result+="s:";
return result;
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trType(bool first_capital, bool singular)
{
QCString result((first_capital ? "Type" : "type"));
if (!singular) result+="s";
return result;
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trSubprogram(bool, bool singular)
{
QCString result("زیربرنامه");
if (!singular) result+=" ها ";
return result;
}
/*! C# Type Constraint list */
virtual QCString trTypeConstraints()
{
return "Type Constraints";
}
}; };
#endif #endif
...@@ -998,7 +998,7 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4 ...@@ -998,7 +998,7 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4
/*! header that is put before the list of constructor/destructors. */ /*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation() virtual QCString trConstructorDocumentation()
{ {
return "Documentation des contructeurs et destructeur"; return "Documentation des constructeurs et destructeur";
} }
/*! Used in the file documentation to point to the corresponding sources. */ /*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode() virtual QCString trGotoSourceCode()
......
...@@ -1617,20 +1617,21 @@ class TranslatorKorean : public Translator ...@@ -1617,20 +1617,21 @@ class TranslatorKorean : public Translator
/*! This is an introduction to the page with all data types (Fortran). */ /*! This is an introduction to the page with all data types (Fortran). */
virtual QCString trCompoundMembersDescriptionFortran(bool extractAll) virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
{ {
QCString result="Here is a list of all "; QCString result="다음은 ";
if (!extractAll) if (!extractAll)
{ {
result+="documented "; result+="문서화된 ";
} }
result+="data types members"; result+="모든 데이타 타입 멤버들의 목록입니다. ";
result+=" with links to ";
result+="각 항목은 ";
if (!extractAll) if (!extractAll)
{ {
result+="the data structure documentation for each member"; result+="각 멤버에 대한 데이타 구조 문서화 페이지의 링크를 가지고 있습니다.";
} }
else else
{ {
result+="the data types they belong to:"; result+="그들이 속한 데이타 타입의 링크를 가지고 있습니다. :";
} }
return result; return result;
} }
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* input used in their production; they are not affected by this license. * input used in their production; they are not affected by this license.
* *
* The translation into Chinesetraditional was provided by * The translation into Chinesetraditional was provided by
* Daniel YC Lin (daniel@twpda.com) since v1.2.16 * Daniel YC Lin (dlin.tw <at> gmail.com) since v1.2.16-v1.5.5
*/ */
#ifndef TRANSLATOR_TW_H #ifndef TRANSLATOR_TW_H
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
// Translator class (by the local maintainer) when the localized // Translator class (by the local maintainer) when the localized
// translator is made up-to-date again. // translator is made up-to-date again.
class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 class TranslatorChinesetraditional : public Translator
{ {
public: public:
...@@ -191,10 +191,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 ...@@ -191,10 +191,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6
virtual QCString trFileList() virtual QCString trFileList()
{ return "檔案列表"; } { return "檔案列表"; }
/*! This is put above each page as a link to the list of all verbatim headers */
virtual QCString trHeaderFiles()
{ return "標頭檔案"; }
/*! This is put above each page as a link to all members of compounds. */ /*! This is put above each page as a link to all members of compounds. */
virtual QCString trCompoundMembers() virtual QCString trCompoundMembers()
{ {
...@@ -326,10 +322,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 ...@@ -326,10 +322,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6
return result; return result;
} }
/*! This is an introduction to the page with the list of all header files. */
virtual QCString trHeaderFilesDescription()
{ return "組成API的標頭檔:"; }
/*! This is an introduction to the page with the list of all examples */ /*! This is an introduction to the page with the list of all examples */
virtual QCString trExamplesDescription() virtual QCString trExamplesDescription()
{ return "所有範例列表:"; } { return "所有範例列表:"; }
...@@ -342,12 +334,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 ...@@ -342,12 +334,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6
virtual QCString trModulesDescription() virtual QCString trModulesDescription()
{ return "所有模組列表:"; } { return "所有模組列表:"; }
/*! This sentences is used in the annotated class/file lists if no brief
* description is given.
*/
virtual QCString trNoDescriptionAvailable()
{ return "沒有可用的說明描述"; }
// index titles (the project name is prepended for these) // index titles (the project name is prepended for these)
...@@ -557,18 +543,10 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 ...@@ -557,18 +543,10 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6
virtual QCString trForInternalUseOnly() virtual QCString trForInternalUseOnly()
{ return "僅供內部使用."; } { return "僅供內部使用."; }
/*! this text is generated when the \\reimp command is used. */
virtual QCString trReimplementedForInternalReasons()
{ return "因內部原因重新實作; 不影響API."; }
/*! this text is generated when the \\warning command is used. */ /*! this text is generated when the \\warning command is used. */
virtual QCString trWarning() virtual QCString trWarning()
{ return "警告"; } { return "警告"; }
/*! this text is generated when the \\bug command is used. */
virtual QCString trBugsAndLimitations()
{ return "臭蟲及限制"; }
/*! this text is generated when the \\version command is used. */ /*! this text is generated when the \\version command is used. */
virtual QCString trVersion() virtual QCString trVersion()
{ return "版本"; } { return "版本"; }
...@@ -646,8 +624,8 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 ...@@ -646,8 +624,8 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6
case ClassDef::Struct: result+=" 結構"; break; case ClassDef::Struct: result+=" 結構"; break;
case ClassDef::Union: result+=" 聯合"; break; case ClassDef::Union: result+=" 聯合"; break;
case ClassDef::Interface: result+=" 介面"; break; case ClassDef::Interface: result+=" 介面"; break;
case ClassDef::Protocol: result+=" protocol"; break; // translate me! case ClassDef::Protocol: result+=" 協定"; break;
case ClassDef::Category: result+=" category"; break; // translate me! case ClassDef::Category: result+=" 分類"; break;
case ClassDef::Exception: result+=" 例外"; break; case ClassDef::Exception: result+=" 例外"; break;
} }
if (isTemplate) result+=" 樣版"; if (isTemplate) result+=" 樣版";
...@@ -805,8 +783,8 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 ...@@ -805,8 +783,8 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6
case ClassDef::Struct: result+="結構(structure)"; break; case ClassDef::Struct: result+="結構(structure)"; break;
case ClassDef::Union: result+="聯合(union)"; break; case ClassDef::Union: result+="聯合(union)"; break;
case ClassDef::Interface: result+="介面(interface)"; break; case ClassDef::Interface: result+="介面(interface)"; break;
case ClassDef::Protocol: result+="protocol"; break; // translate me! case ClassDef::Protocol: result+="協定(protocol)"; break;
case ClassDef::Category: result+="category"; break; // translate me! case ClassDef::Category: result+="分類(category)"; break;
case ClassDef::Exception: result+="例外(exception)"; break; case ClassDef::Exception: result+="例外(exception)"; break;
} }
result+=" 文件是由下列檔案中產生"; result+=" 文件是由下列檔案中產生";
...@@ -843,10 +821,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 ...@@ -843,10 +821,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6
// new since 0.49-991003 // new since 0.49-991003
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
virtual QCString trSources()
{
return "原始碼";
}
virtual QCString trDefinedAtLineInSourceFile() virtual QCString trDefinedAtLineInSourceFile()
{ {
return "定義在 @1 檔案之第 @0 ."; return "定義在 @1 檔案之第 @0 .";
...@@ -1153,11 +1127,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 ...@@ -1153,11 +1127,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6
// new since 1.2.4 // new since 1.2.4
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
return "介面";
}
/*! Used for Java classes in the summary section of Java packages */ /*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses() virtual QCString trClasses()
{ {
...@@ -1190,11 +1159,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 ...@@ -1190,11 +1159,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6
{ {
return "Packages"; return "Packages";
} }
/*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
return "Package說明文件";
}
/*! Text shown before a multi-line define */ /*! Text shown before a multi-line define */
virtual QCString trDefineValue() virtual QCString trDefineValue()
{ {
...@@ -1319,15 +1284,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 ...@@ -1319,15 +1284,6 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6
return QCString("成員"); return QCString("成員");
} }
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trField(bool /*first_capital*/, bool /*singular*/)
{
return QCString("欄位");
}
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
...@@ -1593,6 +1549,211 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6 ...@@ -1593,6 +1549,211 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_4_6
return "這是一個為了便利性所提供 overload 成員函數," return "這是一個為了便利性所提供 overload 成員函數,"
"只有在接受的參數上,與前一個函數不同."; "只有在接受的參數上,與前一個函數不同.";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.4.6
//////////////////////////////////////////////////////////////////////////
/*! This is used to introduce a caller (or called-by) graph */
virtual QCString trCallerGraph()
{
return "呼叫此函數的函數列表:";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.5.4 (mainly for Fortran)
//////////////////////////////////////////////////////////////////////////
/*! header that is put before the list of member subprograms (Fortran). */
virtual QCString trMemberFunctionDocumentationFortran()
{ return "成員函數/子程序 文件"; }
/*! This is put above each page as a link to the list of annotated data types (Fortran). */
virtual QCString trCompoundListFortran()
{ return "資料型態列表"; }
/*! This is put above each page as a link to all members of compounds (Fortran). */
virtual QCString trCompoundMembersFortran()
{ return "資料欄位"; }
/*! This is an introduction to the annotated compound list (Fortran). */
virtual QCString trCompoundListDescriptionFortran()
{ return "資料型態簡短說明列表:"; }
/*! This is an introduction to the page with all data types (Fortran). */
virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
{
QCString result="此處列出所有";
if (!extractAll)
{
result+="有文件的";
}
result+="資料型別成員函數";
result+=" 附帶連結到 ";
if (!extractAll)
{
result+="每個成員函數的資料結構文件";
}
else
{
result+="他們屬於的資料型別";
}
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index (Fortran).
*/
virtual QCString trCompoundIndexFortran()
{ return "資料型別索引"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all data types (Fortran).
*/
virtual QCString trTypeDocumentation()
{ return "資料型別文件"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) subprograms (Fortran).
*/
virtual QCString trSubprograms()
{ return "函數/子程序"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for subprograms (Fortran)
*/
virtual QCString trSubprogramDocumentation()
{ return "函數/子程序 文件"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds (Fortran)
*/
virtual QCString trDataTypes()
{ return "資料型別"; }
/*! used as the title of page containing all the index of all modules (Fortran). */
virtual QCString trModulesList()
{ return "模組列表"; }
/*! used as an introduction to the modules list (Fortran) */
virtual QCString trModulesListDescription(bool extractAll)
{
QCString result="此處列出所有";
if (!extractAll) result+="有文件的";
result+="模組附帶簡短說明:";
return result;
}
/*! used as the title of the HTML page of a module/type (Fortran) */
virtual QCString trCompoundReferenceFortran(const char *clName,
ClassDef::CompoundType compType,
bool isTemplate)
{
QCString result=(QCString)clName;
switch(compType)
{
case ClassDef::Class: result+="模組"; break;
case ClassDef::Struct: result+="型態"; break;
case ClassDef::Union: result+="聯合"; break;
case ClassDef::Interface: result+="介面"; break;
case ClassDef::Protocol: result+="協議"; break;
case ClassDef::Category: result+="分類"; break;
case ClassDef::Exception: result+="例外"; break;
}
if (isTemplate) result+=" Template";
result+="參考文件";
return result;
}
/*! used as the title of the HTML page of a module (Fortran) */
virtual QCString trModuleReference(const char *namespaceName)
{
QCString result=namespaceName;
result+="模組參考文件";
return result;
}
/*! This is put above each page as a link to all members of modules. (Fortran) */
virtual QCString trModulesMembers()
{ return "模組成員"; }
/*! This is an introduction to the page with all modules members (Fortran) */
virtual QCString trModulesMemberDescription(bool extractAll)
{
QCString result="此處列出所有";
if (!extractAll) result+="有文件的";
result+="模組成員附帶連結到";
if (extractAll)
{
result+="每個函數的模組文件:";
}
else
{
result+="他們所屬的模組:";
}
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all modules (Fortran).
*/
virtual QCString trModulesIndex()
{ return "模組索引"; }
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trModule(bool /* first_capital */, bool /* singular */)
{
QCString result("模組");
return result;
}
/*! This is put at the bottom of a module documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
bool /* single */)
{ // here s is one of " Module", " Struct" or " Union"
// single is true implies a single file
QCString result=(QCString)"這個";
switch(compType)
{
case ClassDef::Class: result+="模組"; break;
case ClassDef::Struct: result+="型態"; break;
case ClassDef::Union: result+="聯合"; break;
case ClassDef::Interface: result+="介面"; break;
case ClassDef::Protocol: result+="協議"; break;
case ClassDef::Category: result+="分類"; break;
case ClassDef::Exception: result+="例外"; break;
}
result+="文件由下列檔案產生";
return result;
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trType(bool /* first_capital */, bool /* singular */)
{
QCString result("型別");
return result;
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trSubprogram(bool /* first_capital */, bool /* singular */)
{
QCString result("子程式");
return result;
}
/*! C# Type Constraint list */
virtual QCString trTypeConstraints()
{
return "型別限制條件";
}
}; };
#endif #endif
...@@ -215,11 +215,11 @@ class TranslatorDecoder : public Translator ...@@ -215,11 +215,11 @@ class TranslatorDecoder : public Translator
QCString trCompounds() QCString trCompounds()
{ return toUtf8(m_translator->trCompounds()); } { return toUtf8(m_translator->trCompounds()); }
QCString trGeneratedAt(const char *date,const char *projName) QCString trGeneratedAt(const char *date,const char *projName)
{ return toUtf8(m_translator->trGeneratedAt(date,fromUtf8(projName))); } { return toUtf8(m_translator->trGeneratedAt(fromUtf8(date),fromUtf8(projName))); }
QCString trWrittenBy() QCString trWrittenBy()
{ return toUtf8(m_translator->trWrittenBy()); } { return toUtf8(m_translator->trWrittenBy()); }
QCString trClassDiagram(const char *clName) QCString trClassDiagram(const char *clName)
{ return toUtf8(m_translator->trClassDiagram(clName)); } { return toUtf8(m_translator->trClassDiagram(fromUtf8(clName))); }
QCString trForInternalUseOnly() QCString trForInternalUseOnly()
{ return toUtf8(m_translator->trForInternalUseOnly()); } { return toUtf8(m_translator->trForInternalUseOnly()); }
QCString trWarning() QCString trWarning()
...@@ -264,13 +264,13 @@ class TranslatorDecoder : public Translator ...@@ -264,13 +264,13 @@ class TranslatorDecoder : public Translator
QCString trCompoundReference(const char *clName, QCString trCompoundReference(const char *clName,
ClassDef::CompoundType compType, ClassDef::CompoundType compType,
bool isTemplate) bool isTemplate)
{ return toUtf8(m_translator->trCompoundReference(clName,compType,isTemplate)); } { return toUtf8(m_translator->trCompoundReference(fromUtf8(clName),compType,isTemplate)); }
QCString trFileReference(const char *fileName) QCString trFileReference(const char *fileName)
{ return toUtf8(m_translator->trFileReference(fromUtf8(fileName))); } { return toUtf8(m_translator->trFileReference(fromUtf8(fileName))); }
QCString trNamespaceReference(const char *namespaceName) QCString trNamespaceReference(const char *namespaceName)
{ return toUtf8(m_translator->trNamespaceReference(namespaceName)); } { return toUtf8(m_translator->trNamespaceReference(fromUtf8(namespaceName))); }
QCString trPublicMembers() QCString trPublicMembers()
{ return toUtf8(m_translator->trPublicMembers()); } { return toUtf8(m_translator->trPublicMembers()); }
...@@ -363,7 +363,7 @@ class TranslatorDecoder : public Translator ...@@ -363,7 +363,7 @@ class TranslatorDecoder : public Translator
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
QCString trCollaborationDiagram(const char *clName) QCString trCollaborationDiagram(const char *clName)
{ return toUtf8(m_translator->trCollaborationDiagram(clName)); } { return toUtf8(m_translator->trCollaborationDiagram(fromUtf8(clName))); }
QCString trInclDepGraph(const char *fName) QCString trInclDepGraph(const char *fName)
{ return toUtf8(m_translator->trInclDepGraph(fromUtf8(fName))); } { return toUtf8(m_translator->trInclDepGraph(fromUtf8(fName))); }
QCString trConstructorDocumentation() QCString trConstructorDocumentation()
...@@ -484,7 +484,7 @@ class TranslatorDecoder : public Translator ...@@ -484,7 +484,7 @@ class TranslatorDecoder : public Translator
QCString trClasses() QCString trClasses()
{ return toUtf8(m_translator->trClasses()); } { return toUtf8(m_translator->trClasses()); }
QCString trPackage(const char *name) QCString trPackage(const char *name)
{ return toUtf8(m_translator->trPackage(name)); } { return toUtf8(m_translator->trPackage(fromUtf8(name))); }
QCString trPackageList() QCString trPackageList()
{ return toUtf8(m_translator->trPackageList()); } { return toUtf8(m_translator->trPackageList()); }
QCString trPackageListDescription() QCString trPackageListDescription()
...@@ -686,9 +686,9 @@ class TranslatorDecoder : public Translator ...@@ -686,9 +686,9 @@ class TranslatorDecoder : public Translator
QCString trCompoundReferenceFortran(const char *clName, QCString trCompoundReferenceFortran(const char *clName,
ClassDef::CompoundType compType, ClassDef::CompoundType compType,
bool isTemplate) bool isTemplate)
{ return toUtf8(m_translator->trCompoundReferenceFortran(clName,compType,isTemplate)); } { return toUtf8(m_translator->trCompoundReferenceFortran(fromUtf8(clName),compType,isTemplate)); }
QCString trModuleReference(const char *namespaceName) QCString trModuleReference(const char *namespaceName)
{ return toUtf8(m_translator->trModuleReference(namespaceName)); } { return toUtf8(m_translator->trModuleReference(fromUtf8(namespaceName))); }
QCString trModulesMembers() QCString trModulesMembers()
{ return toUtf8(m_translator->trModulesMembers()); } { return toUtf8(m_translator->trModulesMembers()); }
QCString trModulesMemberDescription(bool extractAll) QCString trModulesMemberDescription(bool extractAll)
......
...@@ -247,7 +247,7 @@ void addSignals(const char* str,int line, Entry *e,const char *comment=0) ...@@ -247,7 +247,7 @@ void addSignals(const char* str,int line, Entry *e,const char *comment=0)
for (int k=1;k<count;k++) for (int k=1;k<count;k++)
{ {
printf("adding '%s' '%s'\n",ql.at(0)->data(),ql.at(k)->data()); //printf("adding '%s' '%s'\n",ql.at(0)->data(),ql.at(k)->data());
Entry *pTemp=new Entry; Entry *pTemp=new Entry;
initEntry(pTemp); initEntry(pTemp);
pTemp->startLine = line; pTemp->startLine = line;
......
...@@ -778,6 +778,8 @@ void XmlDocVisitor::visitPre(DocParamSect *s) ...@@ -778,6 +778,8 @@ void XmlDocVisitor::visitPre(DocParamSect *s)
m_t << "retval"; break; m_t << "retval"; break;
case DocParamSect::Exception: case DocParamSect::Exception:
m_t << "exception"; break; m_t << "exception"; break;
case DocParamSect::TemplateParam:
m_t << "templateparam"; break;
default: default:
ASSERT(0); ASSERT(0);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment