diff options
58 files changed, 657 insertions, 423 deletions
@@ -42,7 +42,7 @@ SYMBOL_CACHE_SIZE = 0 # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO +EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO @@ -115,7 +115,12 @@ EXCLUDE = src/code.cpp \ src/fortranscanner.cpp \ src/fortrancode.cpp \ src/vhdlscanner.cpp \ - src/vhdlcode.cpp + src/vhdlcode.cpp \ + src/doxygen_css.h \ + src/doxygen_js.h \ + src/doxygen_php.h \ + src/compound_xsd.h \ + src/layout_default.h \ EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXCLUDE_SYMBOLS = @@ -1,7 +1,7 @@ -DOXYGEN Version 1.7.1 +DOXYGEN Version 1.7.1-20100728 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (25 June 2010) +Dimitri van Heesch (28 July 2010) @@ -1,4 +1,4 @@ -DOXYGEN Version 1.7.1 +DOXYGEN Version 1.7.1_20100728 Please read INSTALL for compilation instructions. @@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (25 June 2010) +Dimitri van Heesch (dimitri@stack.nl) (28 July 2010) @@ -20,7 +20,7 @@ doxygen_version_minor=7 doxygen_version_revision=1 #NOTE: Setting version_mmn to "NO" will omit mmn info from the package. -doxygen_version_mmn=NO +doxygen_version_mmn=20100728 bin_dirs=`echo $PATH | sed -e "s/:/ /g"` @@ -38,7 +38,7 @@ f_app=NO f_thread=NO f_flex=NO f_bison=NO -f_langs=nl,sv,cz,fr,id,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ke,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca,lt,za,ar,fa,vi,tr,eo +f_langs=nl,sv,cz,fr,id,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ke,ro,si,cn,no,mk,br,dk,sk,ua,gr,tw,sr,ca,lt,za,ar,fa,sc,vi,tr,eo while test -n "$1"; do case $1 in diff --git a/doc/commands.doc b/doc/commands.doc index e8cf0a6..ed6f475 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -74,6 +74,7 @@ documentation: \refitem cmdenddot \\enddot \refitem cmdendhtmlonly \\endhtmlonly \refitem cmdendif \\endif +\refitem cmdendinternal \\endinternal \refitem cmdendlatexonly \\endlatexonly \refitem cmdendlink \\endlink \refitem cmdendmanonly \\endmanonly @@ -381,6 +382,15 @@ Structural indicators \sa section \ref cmdinclude "\\include". <hr> +\section cmdendinternal \\endinternal + + \addindex \\endinternal + This command ends a documentation fragment that was started with a + \ref cmdinternal "\\internal" command. The text between \c \\internal and + \c \\endinternal will only be visible + if \ref cfg_internal_docs "INTERNAL_DOCS" is set to YES. + +<hr> \section cmdextends \\extends <name> \addindex \\extends @@ -549,18 +559,18 @@ Structural indicators \section cmdinternal \\internal \addindex \\internal - This command writes the message `For internal use only' to the output and - all text \e after an \c \\internal command until the end of the - comment block or the end of the section (whichever comes first) is - marked as "internal". + This command starts a documentation fragment that is meant for internal + use only. The fragment naturally ends at the end of the comment block. + You can also force the internal section to end earlier using the + \ref cmdendinternal "\\endinternal" command. If the \\internal command is put inside a section - (see for example \ref cmdsection "\\section") all subsection after the + (see for example \ref cmdsection "\\section") all subsections after the command are considered to be internal as well. Only a new section at the - same level will be visible again. + same level will end the fragment that is considered internal. You can use \ref cfg_internal_docs "INTERNAL_DOCS" in the config file - to show or hide the internal documentation. + to show (\c YES) or hide (\c NO) the internal documentation. <hr> \section cmdmainpage \\mainpage [(title)] diff --git a/doc/config.doc b/doc/config.doc index a4402d1..c2f988e 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -572,7 +572,7 @@ followed by the descriptions of the tags grouped by category. Doxygen has a built-in mapping, but you can override or extend it using this tag. The format is ext=language, where ext is a file extension, and language is one of the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, - Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat + Objective-C, Python, Fortran, VHDL. For instance to make doxygen treat .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex index a10cddd..bc79264 100644 --- a/doc/doxygen_manual.tex +++ b/doc/doxygen_manual.tex @@ -36,13 +36,14 @@ \renewcommand{\cftsecindent}{0 em} \renewcommand{\cftsecnumwidth}{3.2 em} \renewcommand{\cftsubsecindent}{3.2 em} +\newcommand{\thisyear}{\the\year} \begin{document} \begin{titlepage} \includegraphics[width=\textwidth]{doxygen_logo} \begin{center} Manual for version $VERSION\\[2ex] Written by Dimitri van Heesch\\[2ex] -\copyright 1997-2007 +\copyright 1997-\thisyear \end{center} \end{titlepage} \clearemptydoublepage diff --git a/doc/install.doc b/doc/install.doc index b668dde..b8b8154 100644 --- a/doc/install.doc +++ b/doc/install.doc @@ -209,6 +209,7 @@ The solution: go to the root of the doxygen distribution and do: cd qt ln -s your-qt-include-dir-here include ln -s your-qt-lib-dir-here lib + ln -s your-qt-bin-dir-here bin export QTDIR=$PWD \endverbatim diff --git a/doc/language.doc b/doc/language.doc index c4c1e10..ec2fc27 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other than English (the default). The output language is chosen through the configuration file (with default name and known as Doxyfile). -Currently (version 1.6.3), 38 languages +Currently (version 1.7.1), 38 languages are supported (sorted alphabetically): Afrikaans, Arabic, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto, @@ -278,7 +278,7 @@ when the translator was updated. <td>Turkish</td> <td>Emin Ilker Cetinbas</td> <td>niw3 at yahoo dot com</td> - <td>1.6.0</td> + <td>up-to-date</td> </tr> <tr bgcolor="#ffffff"> <td>Ukrainian</td> @@ -400,7 +400,7 @@ when the translator was updated. \hline Swedish & Mikael Hallin & {\tt\tiny mikaelhallin at yahoo dot se} & 1.6.0 \\ \hline - Turkish & Emin Ilker Cetinbas & {\tt\tiny niw3 at yahoo dot com} & 1.6.0 \\ + Turkish & Emin Ilker Cetinbas & {\tt\tiny niw3 at yahoo dot com} & up-to-date \\ \hline Ukrainian & -- searching for the maintainer -- & {\tt\tiny } & 1.4.1 \\ \hline diff --git a/doc/starting.doc b/doc/starting.doc index 8e3e0d2..d90d136 100644 --- a/doc/starting.doc +++ b/doc/starting.doc @@ -38,6 +38,17 @@ tries to be complete): \image html infoflow.gif "Doxygen information flow" \image latex infoflow.eps "Doxygen information flow" width=14cm +\section step0 Step 0: Check if doxygen supports your programming language + +First, assure that your programming language has a reasonable chance of being +recognized by Doxygen. These languages are supported by default: C, C++, C#, +Objective-C, IDL, Java, VHDL, PHP, Python, Fortran, and D. It +is possible to configure certain filetype extensions to use certain parsers: +see the \ref cfg_extension_mapping "Configuration/ExtensionMappings" for details. +Also, completely different languages can be supported by using preprocessor +programs: see the <a href="http://www.doxygen.org/helpers.html">Helpers page</a> +for details. + \section step1 Step 1: Creating a configuration file Doxygen uses a configuration file to determine all of its settings. @@ -163,7 +174,8 @@ require a browser that supports DHTML and Javascript. \subsection latex_out LaTeX output \addindex LaTeX The generated \f$\mbox{\LaTeX}\f$ documentation must first be compiled by -a \f$\mbox{\LaTeX}\f$ compiler (I use a recent teTeX distribution). +a \f$\mbox{\LaTeX}\f$ compiler (I use a recent teTeX distribution for Linux +and MacOSX and MikTex for Windows). To simplify the process of compiling the generated documentation, \c doxygen writes a \c Makefile into the \c latex directory. @@ -250,7 +262,7 @@ basically two options: </ol> Files can only be documented using the second option, since there is no way to put a documentation block before a file. Of course, file members -(functions, variable, typedefs, defines) do not need an explicit +(functions, variables, typedefs, defines) do not need an explicit structural command; just putting a special documentation block in front or behind them will do. diff --git a/doc/translator_report.txt b/doc/translator_report.txt index 6d1c243..a79f1da 100644 --- a/doc/translator_report.txt +++ b/doc/translator_report.txt @@ -1,4 +1,4 @@ -(1.6.3) +(1.7.1) Doxygen supports the following 38 languages (sorted alphabetically): @@ -10,7 +10,7 @@ Persian, Polish, Portuguese, Romanian, Russian, Serbian, SerbianCyrilic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese. -Of them, 9 translators are up-to-date, 29 translators are based on +Of them, 10 translators are up-to-date, 28 translators are based on some adapter class, and 2 are English based. ---------------------------------------------------------------------- @@ -28,6 +28,7 @@ still may be some details listed even for them: TranslatorPersian -- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs() TranslatorSlovak TranslatorSpanish -- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs() + TranslatorTurkish ---------------------------------------------------------------------- The following translator classes need some maintenance (the most @@ -46,7 +47,6 @@ must be implemented to become up-to-date: TranslatorEsperanto 1.6.3 4 methods to implement (1 %) TranslatorCatalan 1.6.3 4 methods to implement (1 %) TranslatorVietnamese 1.6.0 9 methods to implement (4 %) - TranslatorTurkish 1.6.0 9 methods to implement (4 %) TranslatorSwedish 1.6.0 9 methods to implement (4 %) Note: Reimplementation using UTF-8 suggested. @@ -878,24 +878,6 @@ TranslatorSwedish (TranslatorAdapter_1_6_0) 9 methods to implement (4 %) virtual QCString trIncludesFileIn(const char * name) -TranslatorTurkish (TranslatorAdapter_1_6_0) 9 methods to implement (4 %) ------------------ - - Implements 216 of the required methods (96 %). - - Missing methods (should be implemented): - - virtual QCString trSearching() - virtual QCString trNoMatches() - virtual QCString trLoading() - virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) - virtual QCString trFileIn(const char * name) - virtual QCString trGlobalNamespace() - virtual QCString trDirRelation(const char * name) - virtual QCString trDirDependency(const char * name) - virtual QCString trIncludesFileIn(const char * name) - - TranslatorUkrainian (TranslatorAdapter_1_4_1) 33 methods to implement (14 %) ------------------- diff --git a/qtools/qstring.cpp b/qtools/qstring.cpp index 5d50060..bc3dfc7 100644 --- a/qtools/qstring.cpp +++ b/qtools/qstring.cpp @@ -12170,13 +12170,20 @@ QString QString::fromUcs2( const unsigned short *str ) */ Q_EXPORT QStringData *QString::shared_null = 0; -QT_STATIC_CONST_IMPL QString QString::null; +//QT_STATIC_CONST_IMPL QString QString::null; QT_STATIC_CONST_IMPL QChar QChar::null; QT_STATIC_CONST_IMPL QChar QChar::replacement((ushort)0xfffd); QT_STATIC_CONST_IMPL QChar QChar::byteOrderMark((ushort)0xfeff); QT_STATIC_CONST_IMPL QChar QChar::byteOrderSwapped((ushort)0xfffe); QT_STATIC_CONST_IMPL QChar QChar::nbsp((ushort)0x00a0); +#if defined(_CC_MSVC_) && _MSC_VER <= 1300 +const QString::Null QString::null; +#else +const QString::Null QString::null = { }; +#endif + + QStringData* QString::makeSharedNull() { return shared_null=new QStringData; diff --git a/qtools/qstring.h b/qtools/qstring.h index 4357809..0dd6352 100644 --- a/qtools/qstring.h +++ b/qtools/qstring.h @@ -368,9 +368,15 @@ public: QString &operator=( QChar c ); QString &operator=( char c ); - QT_STATIC_CONST QString null; - - bool isNull() const; + //QT_STATIC_CONST QString null; + //bool isNull() const; + + struct Null { }; + static const Null null; + inline QString(const Null &): d(shared_null) { d->ref(); } + inline QString &operator=(const Null &) { *this = QString(); return *this; } + inline bool isNull() const { return d == shared_null; } + bool isEmpty() const; uint length() const; void truncate( uint pos ); @@ -662,8 +668,8 @@ inline QString &QString::operator=( QChar c ) inline QString &QString::operator=( char c ) { return *this = QString(QChar(c)); } -inline bool QString::isNull() const -{ return unicode() == 0; } +//inline bool QString::isNull() const +//{ return unicode() == 0; } inline bool QString::operator!() const { return isNull(); } diff --git a/src/classdef.cpp b/src/classdef.cpp index 9662cef..5911b35 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -296,6 +296,7 @@ QCString ClassDef::displayName() const { n="<"+n.left(n.length()-2)+">"; } + //printf("ClassDef::displayName()=%s\n",n.data()); return n; } @@ -780,7 +781,12 @@ static void searchTemplateSpecs(/*in*/ Definition *d, } ClassDef *cd=(ClassDef *)d; if (!name.isEmpty()) name+="::"; - name+=d->localName(); + QCString clName = d->localName(); + if (clName.right(2)=="-g" || clName.right(2)=="-p") + { + clName = clName.left(clName.length()-2); + } + name+=clName; bool isSpecialization = d->localName().find('<')!=-1; if (cd->templateArguments()) { @@ -1744,9 +1750,9 @@ void ClassDef::writeMemberList(OutputList &ol) if (md->isObjCMethod()) { if (md->isStatic()) - ol.writeString("+ </td><td>"); + ol.writeString("+ </td><td>"); else - ol.writeString("- </td><td>"); + ol.writeString("- </td><td>"); } else ol.writeString("</td><td>"); @@ -1793,9 +1799,9 @@ void ClassDef::writeMemberList(OutputList &ol) if (md->isObjCMethod()) { if (md->isStatic()) - ol.writeString("+ </td><td>"); + ol.writeString("+ </td><td>"); else - ol.writeString("- </td><td>"); + ol.writeString("- </td><td>"); } else ol.writeString("</td><td>"); @@ -2016,6 +2022,10 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup) QCString cn=name().right(name().length()-ri-2); if (!cn.isEmpty() && cn.at(0)!='@' && md) { + if (cn.right(2)=="-p" || cn.right(2)=="-g") + { + cn = cn.left(cn.length()-2); + } ol.docify(" "); if (isLinkable()) { @@ -3088,6 +3098,7 @@ QCString ClassDef::qualifiedNameWithTemplateParameters( { clName = clName.left(clName.length()-2); } + //printf("m_impl->lang=%d clName=%s\n",m_impl->lang,clName.data()); scName+=clName; ArgumentList *al=0; if (templateArguments()) @@ -3240,15 +3251,6 @@ void ClassDef::addMemberToList(MemberList::ListType lt,MemberDef *md,bool isBrie ml->setNeedsSorting((isBrief && sortBriefDocs) || (!isBrief && sortMemberDocs)); ml->append(md); -#if 0 - if (( isBrief && sortBriefDocs ) || - (!isBrief && sortMemberDocs) - ) - ml->inSort(md); - else - ml->append(md); -#endif - // for members in the declaration lists we set the section, needed for member grouping if ((ml->listType()&MemberList::detailedLists)==0) md->setSectionList(this,ml); } diff --git a/src/classlist.cpp b/src/classlist.cpp index 196f8c2..81f96b2 100644 --- a/src/classlist.cpp +++ b/src/classlist.cpp @@ -150,6 +150,10 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f if (localNames) { cname = cd->localName(); + if (cname.right(2)=="-p" || cname.right(2)=="-g") + { + cname = cname.left(cname.length()-2); + } } else { @@ -1002,6 +1002,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,clName,cd->briefDescriptionAsTooltip()); addToSearchIndex(className); + g_theCallContext.setClass(cd); if (md) { Definition *d = md->getOuterScope()==Doxygen::globalScope ? @@ -2380,7 +2381,9 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP} } <Body>{SCOPENAME}/{BN}*[;,)\]] { // "int var;" or "var, var2" or "debug(f) macro" addType(); - generateClassOrGlobalLink(*g_code,yytext,FALSE,TRUE); + // changed this to generateFunctionLink, see bug 624514 + //generateClassOrGlobalLink(*g_code,yytext,FALSE,TRUE); + generateFunctionLink(*g_code,yytext); g_name+=yytext; } <Body>{SCOPENAME}/{B}* { // p->func() diff --git a/src/commentscan.l b/src/commentscan.l index bd92350..4ad0590 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -932,6 +932,11 @@ RCSTAG "$"{ID}":"[^\n$]+"$" <Comment>"<!--" { BEGIN(HtmlComment); } +<Comment>{B}*{CMD}"endinternal"{B}* { + warn(yyFileName,yyLineNr, + "warning: found \\endinternal without matching \\internal" + ); + } <Comment>{B}*{CMD}[a-z_A-Z]+{B}* { // potentially interesting command // the {B}* in the front was added for bug620924 QCString cmdName = QCString(yytext).stripWhiteSpace().data()+1; @@ -1770,6 +1775,9 @@ RCSTAG "$"{ID}":"[^\n$]+"$" BEGIN(Comment); } } +<SkipInternal>[@\\]"endinternal"[ \t]* { + BEGIN(Comment); + } <SkipInternal>[^ \\@\n]+ { // skip non-special characters } <SkipInternal>. { // any other character @@ -2372,7 +2380,7 @@ static bool handleInternal(const QCString &) } else { - addOutput("\\internal "); + //addOutput("\\internal "); } return FALSE; } diff --git a/src/config.l b/src/config.l index 97571c8..b45097c 100644 --- a/src/config.l +++ b/src/config.l @@ -813,14 +813,14 @@ void Config::writeTemplate(FTextStream &t,bool sl,bool upd) if (!sl) { t << "# This file describes the settings to be used by the documentation system\n"; - t << "# doxygen (www.doxygen.org) for a project\n"; + t << "# doxygen (www.doxygen.org) for a project.\n"; t << "#\n"; - t << "# All text after a hash (#) is considered a comment and will be ignored\n"; + t << "# All text after a hash (#) is considered a comment and will be ignored.\n"; t << "# The format is:\n"; t << "# TAG = value [value, ...]\n"; t << "# For lists items can also be appended using:\n"; t << "# TAG += value [value, ...]\n"; - t << "# Values that contain spaces should be placed between quotes (\" \")\n"; + t << "# Values that contain spaces should be placed between quotes (\" \").\n"; } ConfigOption *option = m_options->first(); while (option) diff --git a/src/config.xml b/src/config.xml index c3693ee..47c9148 100644 --- a/src/config.xml +++ b/src/config.xml @@ -152,7 +152,7 @@ are normally passed to the compiler using the -I flag. </option> <option type='bool' id='SHORT_NAMES' docs=' If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -(but less readable) file names. This can be useful is your file systems +(but less readable) file names. This can be useful if your file system doesn't support long names like on DOS, Mac, or CD-ROM. ' defval='0'/> <option type='bool' id='JAVADOC_AUTOBRIEF' docs=' @@ -238,7 +238,7 @@ If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to include (a tag file for) the STL sources as input, then you should set this tag to YES in order to let doxygen match functions declarations and definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -func(std::string) {}). This also make the inheritance and collaboration +func(std::string) {}). This also makes the inheritance and collaboration diagrams that involve STL classes more complete and accurate. ' defval='0'/> <option type='bool' id='CPP_CLI_SUPPORT' docs=' @@ -253,7 +253,7 @@ instead of private inheritance when no explicit protection keyword is present. <option type='bool' id='IDL_PROPERTY_SUPPORT' docs=' For Microsoft's IDL there are propget and propput attributes to indicate getter and setter methods for a property. Setting this option to YES (the default) -will make doxygen to replace the get and set methods by a property in the +will make doxygen replace the get and set methods by a property in the documentation. This will only work if the methods are indeed getting or setting a simple type. If this is not the case, or you want to show the methods anyway, you should set this option to NO. @@ -327,7 +327,7 @@ If this flag is set to YES, the members of anonymous namespaces will be extracted and appear in the documentation as a namespace called 'anonymous_namespace{file}', where file will be replaced with the base name of the file that contains the anonymous namespace. By default -anonymous namespace are hidden. +anonymous namespaces are hidden. ' defval='0'/> <option type='bool' id='HIDE_UNDOC_MEMBERS' docs=' If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all @@ -447,10 +447,10 @@ documentation sections, marked by \if sectionname ... \endif. </option> <option type='int' id='MAX_INITIALIZER_LINES' docs=' The MAX_INITIALIZER_LINES tag determines the maximum number of lines -the initial value of a variable or define consists of for it to appear in +the initial value of a variable or macro consists of for it to appear in the documentation. If the initializer consists of more lines than specified here it will be hidden. Use a value of 0 to hide initializers completely. -The appearance of the initializer of individual variables and defines in the +The appearance of the initializer of individual variables and macros in the documentation can be controlled using \showinitializer or \hideinitializer command in the documentation regardless of this setting. ' minval='0' maxval='10000' defval='30'/> @@ -514,7 +514,7 @@ parameters in a documented function, or documenting parameters that don't exist or using markup commands wrongly. ' defval='1'/> <option type='bool' id='WARN_NO_PARAMDOC' docs=' -This WARN_NO_PARAMDOC option can be abled to get warnings for +The WARN_NO_PARAMDOC option can be abled to get warnings for functions that are documented, but have no documentation for their parameters or return value. If set to NO (the default) doxygen will only warn about wrong or incomplete parameter documentation, but not about the absence of @@ -1402,7 +1402,7 @@ graphs for selected functions only using the \callergraph command. ' defval='0' depends='HAVE_DOT'/> <option type='bool' id='GRAPHICAL_HIERARCHY' docs=' If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -will graphical hierarchy of all classes instead of a textual one. +will generate a graphical hierarchy of all classes instead of a textual one. ' defval='1' depends='HAVE_DOT'/> <option type='bool' id='DIRECTORY_GRAPH' docs=' If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES @@ -1412,7 +1412,7 @@ relations between the files in the directories. ' defval='1' depends='HAVE_DOT'/> <option type='enum' id='DOT_IMAGE_FORMAT' defval='png' docs=' The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -generated by dot. Possible values are png, jpg, or gif +generated by dot. Possible values are png, jpg, or gif. If left blank png will be used. ' depends='HAVE_DOT'> <value name='png'/> diff --git a/src/configoptions.cpp b/src/configoptions.cpp index 5f7f281..9d4f75f 100644 --- a/src/configoptions.cpp +++ b/src/configoptions.cpp @@ -208,7 +208,7 @@ void addConfigOptions(Config *cfg) cb = cfg->addBool( "SHORT_NAMES", "If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter\n" - "(but less readable) file names. This can be useful is your file systems\n" + "(but less readable) file names. This can be useful if your file system\n" "doesn't support long names like on DOS, Mac, or CD-ROM.", FALSE ); @@ -329,7 +329,7 @@ void addConfigOptions(Config *cfg) "to include (a tag file for) the STL sources as input, then you should\n" "set this tag to YES in order to let doxygen match functions declarations and\n" "definitions whose arguments contain STL classes (e.g. func(std::string); v.s.\n" - "func(std::string) {}). This also make the inheritance and collaboration\n" + "func(std::string) {}). This also makes the inheritance and collaboration\n" "diagrams that involve STL classes more complete and accurate.", FALSE ); @@ -353,7 +353,7 @@ void addConfigOptions(Config *cfg) "IDL_PROPERTY_SUPPORT", "For Microsoft's IDL there are propget and propput attributes to indicate getter\n" "and setter methods for a property. Setting this option to YES (the default)\n" - "will make doxygen to replace the get and set methods by a property in the\n" + "will make doxygen replace the get and set methods by a property in the\n" "documentation. This will only work if the methods are indeed getting or\n" "setting a simple type. If this is not the case, or you want to show the\n" "methods anyway, you should set this option to NO.", @@ -459,7 +459,7 @@ void addConfigOptions(Config *cfg) "extracted and appear in the documentation as a namespace called\n" "'anonymous_namespace{file}', where file will be replaced with the base\n" "name of the file that contains the anonymous namespace. By default\n" - "anonymous namespace are hidden.", + "anonymous namespaces are hidden.", FALSE ); //---- @@ -641,10 +641,10 @@ void addConfigOptions(Config *cfg) ci = cfg->addInt( "MAX_INITIALIZER_LINES", "The MAX_INITIALIZER_LINES tag determines the maximum number of lines\n" - "the initial value of a variable or define consists of for it to appear in\n" + "the initial value of a variable or macro consists of for it to appear in\n" "the documentation. If the initializer consists of more lines than specified\n" "here it will be hidden. Use a value of 0 to hide initializers completely.\n" - "The appearance of the initializer of individual variables and defines in the\n" + "The appearance of the initializer of individual variables and macros in the\n" "documentation can be controlled using \\showinitializer or \\hideinitializer\n" "command in the documentation regardless of this setting.", 0,10000,30 @@ -744,7 +744,7 @@ void addConfigOptions(Config *cfg) //---- cb = cfg->addBool( "WARN_NO_PARAMDOC", - "This WARN_NO_PARAMDOC option can be abled to get warnings for\n" + "The WARN_NO_PARAMDOC option can be abled to get warnings for\n" "functions that are documented, but have no documentation for their parameters\n" "or return value. If set to NO (the default) doxygen will only warn about\n" "wrong or incomplete parameter documentation, but not about the absence of\n" @@ -2141,7 +2141,7 @@ void addConfigOptions(Config *cfg) cb = cfg->addBool( "GRAPHICAL_HIERARCHY", "If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen\n" - "will graphical hierarchy of all classes instead of a textual one.", + "will generate a graphical hierarchy of all classes instead of a textual one.", TRUE ); cb->addDependency("HAVE_DOT"); @@ -2159,7 +2159,7 @@ void addConfigOptions(Config *cfg) ce = cfg->addEnum( "DOT_IMAGE_FORMAT", "The DOT_IMAGE_FORMAT tag can be used to set the image format of the images\n" - "generated by dot. Possible values are png, jpg, or gif\n" + "generated by dot. Possible values are png, jpg, or gif.\n" "If left blank png will be used.", "png" ); diff --git a/src/defargs.l b/src/defargs.l index f52d31f..048fafd 100644 --- a/src/defargs.l +++ b/src/defargs.l @@ -140,7 +140,7 @@ ID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]* g_curArgDefValue+=*yytext; BEGIN( CopyArgString ); } -<ReadFuncArgType>"("([^:)]+{B}*"::")*{B}*[&*]+{B}*/{ID} { +<ReadFuncArgType>"("([^:)]+{B}*"::")*{B}*[&*\^]+{B}*/{ID} { // function pointer as argument g_curArgTypeName+=yytext; //g_curArgTypeName=g_curArgTypeName.simplifyWhiteSpace(); diff --git a/src/definition.cpp b/src/definition.cpp index fb31731..59906d5 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -474,6 +474,11 @@ void Definition::_setBriefDescription(const char *b,const char *briefFile,int br m_impl->brief->file = briefFile; m_impl->brief->line = briefLine; } + else + { + m_impl->brief->file = briefFile; + m_impl->brief->line = 1; + } } } @@ -790,8 +795,8 @@ void Definition::writeSourceDef(OutputList &ol,const char *) void Definition::setBodySegment(int bls,int ble) { - makeResident(); //printf("setBodySegment(%d,%d) for %s\n",bls,ble,name().data()); + makeResident(); if (m_impl->body==0) m_impl->body = new BodyInfo; m_impl->body->startLine=bls; m_impl->body->endLine=ble; @@ -1289,7 +1294,12 @@ void Definition::writePathFragment(OutputList &ol) const } else if (definitionType()==Definition::TypeClass) { - ol.writeObjectLink(getReference(),getOutputFileBase(),0,((const ClassDef*)this)->displayName()); + QCString name = m_impl->localName; + if (name.right(2)=="-p" || name.right(2)=="-g") + { + name = name.left(name.length()-2); + } + ol.writeObjectLink(getReference(),getOutputFileBase(),0,name); } else { diff --git a/src/dirdef.cpp b/src/dirdef.cpp index 84fa3ab..333513b 100644 --- a/src/dirdef.cpp +++ b/src/dirdef.cpp @@ -434,7 +434,7 @@ void DirDef::writePathFragment(OutputList &ol) const if (m_parent) { m_parent->writePathFragment(ol); - ol.writeString(" / "); + ol.writeString(" / "); } ol.writeObjectLink(getReference(),getOutputFileBase(),0,shortName()); } @@ -675,7 +675,7 @@ static void writePartialDirPath(OutputList &ol,const DirDef *root,const DirDef * if (target->parent()!=root) { writePartialDirPath(ol,root,target->parent()); - ol.writeString(" / "); + ol.writeString(" / "); } ol.writeObjectLink(target->getReference(),target->getOutputFileBase(),0,target->shortName()); } @@ -685,7 +685,7 @@ static void writePartialFilePath(OutputList &ol,const DirDef *root,const FileDef if (fd->getDirDef() && fd->getDirDef()!=root) { writePartialDirPath(ol,root,fd->getDirDef()); - ol.writeString(" / "); + ol.writeString(" / "); } if (fd->isLinkable()) { diff --git a/src/docsets.cpp b/src/docsets.cpp index b69f91d..5138057 100644 --- a/src/docsets.cpp +++ b/src/docsets.cpp @@ -230,11 +230,8 @@ void DocSets::addContentsItem(bool isDir, } } -void DocSets::addIndexItem(Definition *context,MemberDef *md, - const char *anchor,const char *word) +void DocSets::addIndexItem(Definition *context,MemberDef *md,const char *) { - (void)anchor; - (void)word; if (md==0 || context==0) return; // TODO: also index non members... FileDef *fd = 0; diff --git a/src/docsets.h b/src/docsets.h index 31b5263..5244eb9 100644 --- a/src/docsets.h +++ b/src/docsets.h @@ -45,11 +45,7 @@ class DocSets : public IndexIntf const char *file = 0, const char *anchor = 0 ); - //void addIndexItem(const char *level1, const char *level2, - // const char *contRef, const char *memRef, - // const char *anchor,const MemberDef *md); - void addIndexItem(Definition *context,MemberDef *md, - const char *anchor,const char *word); + void addIndexItem(Definition *context,MemberDef *md,const char *title); void addIndexFile(const char *name); void addImageFile(const char *) {} void addStyleSheetFile(const char *) {} diff --git a/src/doctokenizer.l b/src/doctokenizer.l index 4285b6c..f1b50af 100644 --- a/src/doctokenizer.l +++ b/src/doctokenizer.l @@ -305,7 +305,7 @@ HFILEMASK ("."{FILESCHAR}*{FILEECHAR}+)* FILEMASK ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|{HFILEMASK} LINKMASK [^ \t\n\r\\@<&${}]+("("[^\n)]*")")?({BLANK}*("const"|"volatile"){BLANK}+)? VERBATIM "verbatim"{BLANK}* -SPCMD1 {CMD}([a-z_A-Z0-9]+|{VERBATIM}) +SPCMD1 {CMD}([a-z_A-Z][a-z_A-Z0-9]*|{VERBATIM}) SPCMD2 {CMD}[\\@<>&$#%~"] SPCMD3 {CMD}form#[0-9]+ INOUT "in"|"out"|("in"{BLANK}*","{BLANK}*"out")|("out"{BLANK}*","{BLANK}*"in") diff --git a/src/dot.cpp b/src/dot.cpp index 58a8a84..3edbf18 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -535,9 +535,16 @@ bool DotRunner::run() QCString dotArgs; QListIterator<QCString> li(m_jobs); QCString *s; + QCString file = m_file; + QCString path = m_path; + QCString imageName = m_imageName; + QCString postCmd = m_postCmd; + QCString postArgs = m_postArgs; + bool checkResult = m_checkResult; + bool cleanUp = m_cleanUp; if (multiTargets) { - dotArgs="\""+m_file+"\""; + dotArgs="\""+file+"\""; for (li.toFirst();(s=li.current());++li) { dotArgs+=' '; @@ -552,23 +559,25 @@ bool DotRunner::run() { for (li.toFirst();(s=li.current());++li) { - dotArgs="\""+m_file+"\" "+*s; + dotArgs="\""+file+"\" "+*s; if ((exitCode=portable_system(dotExe,dotArgs,FALSE))!=0) { goto error; } } } - if (!m_postCmd.isEmpty() && portable_system(m_postCmd,m_postArgs)!=0) + if (!postCmd.isEmpty() && portable_system(postCmd,postArgs)!=0) { err("error: Problems running '%s' as a post-processing step for dot output\n",m_postCmd.data()); return FALSE; } - if (m_checkResult) checkDotResult(m_imageName); - if (m_cleanUp) + if (checkResult) checkDotResult(imageName); + if (cleanUp) { //printf("removing dot file %s\n",m_file.data()); - QDir(m_path).remove(m_file); + //QDir(path).remove(file); + m_cleanupItem.file = file; + m_cleanupItem.path = path; } return TRUE; error: @@ -721,6 +730,7 @@ uint DotRunnerQueue::count() const DotWorkerThread::DotWorkerThread(int id,DotRunnerQueue *queue) : m_id(id), m_queue(queue) { + m_cleanupItems.setAutoDelete(TRUE); } void DotWorkerThread::run() @@ -729,6 +739,21 @@ void DotWorkerThread::run() while ((runner=m_queue->dequeue())) { runner->run(); + DotRunner::CleanupItem cleanup = runner->cleanup(); + if (!cleanup.file.isEmpty()) + { + m_cleanupItems.append(new DotRunner::CleanupItem(cleanup)); + } + } +} + +void DotWorkerThread::cleanup() +{ + QListIterator<DotRunner::CleanupItem> it(m_cleanupItems); + DotRunner::CleanupItem *ci; + for (;(ci=it.current());++it) + { + QDir(ci->path).remove(ci->file); } } @@ -865,6 +890,11 @@ bool DotManager::run() { m_workers.at(i)->wait(); } + // clean up dot files from main thread + for (i=0;i<(int)m_workers.count();i++) + { + m_workers.at(i)->cleanup(); + } portable_sysTimerStop(); if (setPath) { @@ -3182,6 +3212,7 @@ void generateGraphLegend(const char *path) { removeDotGraph(absDotName); } + Doxygen::indexList.addImageFile(imgName); } @@ -321,6 +321,12 @@ class DotGroupCollaboration class DotRunner { public: + struct CleanupItem + { + QCString path; + QCString file; + }; + /** Creates a runner for a dot \a file. */ DotRunner(const QCString &file,const QCString &fontPath,bool checkResult, const QCString &imageName = QCString()); @@ -336,6 +342,8 @@ class DotRunner /** Runs dot for all jobs added. */ bool run(); + CleanupItem cleanup() const { return m_cleanupItem; } + private: QList<QCString> m_jobs; QCString m_postArgs; @@ -345,6 +353,7 @@ class DotRunner bool m_checkResult; QCString m_imageName; bool m_cleanUp; + CleanupItem m_cleanupItem; }; /** @brief Helper class to insert a set of map file into an output file */ @@ -388,9 +397,11 @@ class DotWorkerThread : public QThread public: DotWorkerThread(int id,DotRunnerQueue *queue); void run(); + void cleanup(); private: int m_id; DotRunnerQueue *m_queue; + QList<DotRunner::CleanupItem> m_cleanupItems; }; /** @brief singleton that manages dot relation actions */ diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 1818621..0c3638d 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -1384,7 +1384,7 @@ static void buildNamespaceList(EntryNav *rootNav) tagName=rootNav->tagInfo()->tagName; tagFileName=rootNav->tagInfo()->fileName; } - //printf("++ new namespace %d\n",fullName.data()); + //printf("++ new namespace %s\n",fullName.data()); NamespaceDef *nd=new NamespaceDef(root->fileName,root->startLine,fullName,tagName,tagFileName); nd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition nd->setBriefDescription(root->brief,root->briefFile,root->briefLine); @@ -1552,7 +1552,7 @@ static void findUsingDirectives(EntryNav *rootNav) } else // unknown namespace, but add it anyway. { - //printf("++ new unknown namespace %s\n",name.data()); + printf("++ new unknown namespace %s\n",name.data()); NamespaceDef *nd=new NamespaceDef(root->fileName,root->startLine,name); nd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition nd->setBriefDescription(root->brief,root->briefFile,root->briefLine); @@ -2194,7 +2194,7 @@ static MemberDef *addVariableToFile( */ static int findFunctionPtr(const QCString &type,int *pLength=0) { - static const QRegExp re("([^)]*\\*[^)]*)"); + static const QRegExp re("([^)]*[\\*\\^][^)]*)"); int i=-1,l; if (!type.isEmpty() && // return type is non-empty (i=re.match(type,0,&l))!=-1 && // contains (...*...) @@ -2204,10 +2204,12 @@ static int findFunctionPtr(const QCString &type,int *pLength=0) ) { if (pLength) *pLength=l; + //printf("findFunctionPtr=%d\n",i); return i; } else { + //printf("findFunctionPtr=%d\n",-1); return -1; } } @@ -2969,8 +2971,11 @@ static void buildFunctionList(EntryNav *rootNav) md->setDocumentation(root->doc,root->docFile,root->docLine); md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine); md->setDocsForDefinition(!root->proto); - md->setBodySegment(root->bodyLine,root->endBodyLine); - md->setBodyDef(rfd); + if (md->getStartBodyLine()!=-1 && md->getStartBodyLine()==-1) + { + md->setBodySegment(root->bodyLine,root->endBodyLine); + md->setBodyDef(rfd); + } if (md->briefDescription().isEmpty() && !root->brief.isEmpty()) { @@ -3633,6 +3638,10 @@ static ClassDef *findClassWithinClassContext(Definition *context,ClassDef *cd,co { result = getResolvedClass(cd,fd,name,0,0,TRUE,TRUE); } + if (result==0) // try direct class, needed for namespaced classes imported via tag files (see bug624095) + { + result = getClass(name); + } //printf("** Trying to find %s within context %s class %s result=%s lookup=%p\n", // name.data(), // context ? context->name().data() : "<none>", @@ -3800,7 +3809,7 @@ static void findUsedClassesForClass(EntryNav *rootNav, ClassDef *usedCd = Doxygen::hiddenClasses->find(type); if (usedCd==0 && !Config_getBool("HIDE_UNDOC_RELATIONS")) { - if (type.right(2)=="(*") // type is a function pointer + if (type.right(2)=="(*" || type.right(2)=="(^") // type is a function pointer { type+=md->argsString(); } diff --git a/src/doxygen.css b/src/doxygen.css index 4b20a23..46216c2 100644 --- a/src/doxygen.css +++ b/src/doxygen.css @@ -158,6 +158,7 @@ div.ah { border-radius: 0.5em; -webkit-border-radius: .5em; -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; -webkit-box-shadow: 2px 2px 3px #999; -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); @@ -167,7 +168,6 @@ div.ah { div.groupHeader { margin-left: 16px; margin-top: 12px; - margin-bottom: 6px; font-weight: bold; } @@ -376,7 +376,7 @@ table.memberdecls { font-size: 80%; color: ##60; font-weight: normal; - margin-left: 3px; + margin-left: 9px; } .memnav { @@ -407,6 +407,10 @@ table.memberdecls { color: ##2b; font-weight: bold; text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; /* firefox specific markup */ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; -moz-border-radius-topright: 8px; @@ -428,6 +432,10 @@ table.memberdecls { padding: 2px 5px; background-color: ##FC; border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); /* firefox specific markup */ -moz-border-radius-bottomleft: 8px; -moz-border-radius-bottomright: 8px; diff --git a/src/doxygen_css.h b/src/doxygen_css.h index fd64f79..42878a6 100644 --- a/src/doxygen_css.h +++ b/src/doxygen_css.h @@ -158,6 +158,7 @@ " border-radius: 0.5em;\n" " -webkit-border-radius: .5em;\n" " -moz-border-radius: .5em;\n" +" box-shadow: 2px 2px 3px #999;\n" " -webkit-box-shadow: 2px 2px 3px #999;\n" " -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n" " background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));\n" @@ -167,7 +168,6 @@ "div.groupHeader {\n" " margin-left: 16px;\n" " margin-top: 12px;\n" -" margin-bottom: 6px;\n" " font-weight: bold;\n" "}\n" "\n" @@ -376,7 +376,7 @@ " font-size: 80%;\n" " color: ##60;\n" " font-weight: normal;\n" -" margin-left: 3px;\n" +" margin-left: 9px;\n" "}\n" "\n" ".memnav {\n" @@ -407,6 +407,10 @@ " color: ##2b;\n" " font-weight: bold;\n" " text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n" +" /* opera specific markup */\n" +" box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n" +" border-top-right-radius: 8px;\n" +" border-top-left-radius: 8px;\n" " /* firefox specific markup */\n" " -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n" " -moz-border-radius-topright: 8px;\n" @@ -428,6 +432,10 @@ " padding: 2px 5px;\n" " background-color: ##FC;\n" " border-top-width: 0;\n" +" /* opera specific markup */\n" +" border-bottom-left-radius: 8px;\n" +" border-bottom-right-radius: 8px;\n" +" box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n" " /* firefox specific markup */\n" " -moz-border-radius-bottomleft: 8px;\n" " -moz-border-radius-bottomright: 8px;\n" diff --git a/src/eclipsehelp.cpp b/src/eclipsehelp.cpp index 8abca03..8669530 100644 --- a/src/eclipsehelp.cpp +++ b/src/eclipsehelp.cpp @@ -181,8 +181,7 @@ void EclipseHelp::addContentsItem( void EclipseHelp::addIndexItem( Definition * /* context */, MemberDef * /* md */, - const char * /* anchor */, - const char * /* word */) + const char * /* title */) { } diff --git a/src/eclipsehelp.h b/src/eclipsehelp.h index 645292f..2df764f 100644 --- a/src/eclipsehelp.h +++ b/src/eclipsehelp.h @@ -51,8 +51,7 @@ class EclipseHelp : public IndexIntf virtual void decContentsDepth(); virtual void addContentsItem(bool isDir, const char *name, const char *ref = 0, const char *file = 0, const char *anchor = 0); - virtual void addIndexItem(Definition *context,MemberDef *md, - const char *anchor,const char *word); + virtual void addIndexItem(Definition *context,MemberDef *md,const char *title); virtual void addIndexFile(const char *name); virtual void addImageFile(const char *name); virtual void addStyleSheetFile(const char *name); diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp index c391a34..95ff514 100644 --- a/src/ftvhelp.cpp +++ b/src/ftvhelp.cpp @@ -509,7 +509,7 @@ void FTVHelp::generateLink(FTextStream &t,FTVNode *n) t << "</a>"; if (!n->ref.isEmpty()) { - t << " [external]"; + t << " [external]"; } } } diff --git a/src/ftvhelp.h b/src/ftvhelp.h index 5cbd073..a857f16 100644 --- a/src/ftvhelp.h +++ b/src/ftvhelp.h @@ -86,7 +86,7 @@ class FTVHelp : public IndexIntf //void addIndexItem(const char *, const char *, // const char *, const char *, // const char *, const MemberDef *) {} - void addIndexItem(Definition *,MemberDef *,const char *,const char *) {} + void addIndexItem(Definition *,MemberDef *,const char *) {} void addIndexFile(const char *) {} void addImageFile(const char *) {} void addStyleSheetFile(const char *) {} diff --git a/src/groupdef.cpp b/src/groupdef.cpp index 4ddcb58..aaf4d1b 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -867,7 +867,7 @@ void GroupDef::writeDocumentation(OutputList &ol) } } - Doxygen::indexList.addIndexItem(this,0,0,title); + Doxygen::indexList.addIndexItem(this,0,title); if (!Config_getString("GENERATE_TAGFILE").isEmpty()) { diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp index c5c2b67..8cebd4c 100644 --- a/src/htmldocvisitor.cpp +++ b/src/htmldocvisitor.cpp @@ -200,7 +200,7 @@ void HtmlDocVisitor::visit(DocSymbol *s) case DocSymbol::Szlig: m_t << "ß"; break; case DocSymbol::Cedil: m_t << "&" << s->letter() << "cedil;"; break; case DocSymbol::Ring: m_t << "&" << s->letter() << "ring;"; break; - case DocSymbol::Nbsp: m_t << " "; break; + case DocSymbol::Nbsp: m_t << " "; break; case DocSymbol::AElig: m_t << "Æ"; break; case DocSymbol::Aelig: m_t << "æ"; break; default: @@ -518,7 +518,7 @@ void HtmlDocVisitor::visit(DocIndexEntry *e) // e->scope() ? e->scope()->name().data() : "<null>", // e->member() ? e->member()->name().data() : "<null>" // ); - Doxygen::indexList.addIndexItem(e->scope(),e->member(),anchor,e->entry()); + Doxygen::indexList.addIndexItem(e->scope(),e->member(),e->entry()); } void HtmlDocVisitor::visit(DocSimpleSectSep *) @@ -1361,7 +1361,7 @@ void HtmlDocVisitor::visitPre(DocParamList *pl) { m_t << "in,out"; } - m_t << "]</tt> "; + m_t << "]</tt> "; } m_t << "</td><td valign=\"top\"><em>"; //QStrListIterator li(pl->parameters()); @@ -1381,7 +1381,7 @@ void HtmlDocVisitor::visitPre(DocParamList *pl) visit((DocLinkedWord*)param); } } - m_t << "</em> </td><td>"; + m_t << "</em> </td><td>"; } void HtmlDocVisitor::visitPost(DocParamList *) diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 9be1600..708cab0 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -952,7 +952,7 @@ void HtmlGenerator::writeFooterFile(QFile &file) FTextStream t(&file); t << "<hr class=\"footer\"/><address class=\"footer\"><small>\n"; t << theTranslator->trGeneratedAt( "$datetime", "$projectname" ); - t << " <a href=\"http://www.doxygen.org/index.html\">" + t << " <a href=\"http://www.doxygen.org/index.html\">" << "<img class=\"footer\" src=\"$relpath$doxygen.png\" alt=\"doxygen\"/>" << "</a> $doxygenversion"; t << "</small></address>\n" @@ -1144,7 +1144,7 @@ static void writePageFooter(FTextStream &t,const QCString &lastTitle, { t << theTranslator->trGeneratedBy(); } - t << " " << endl << "<a href=\"http://www.doxygen.org/index.html\">"; + t << " " << endl << "<a href=\"http://www.doxygen.org/index.html\">"; t << endl << "<img class=\"footer\" src=\"" << relPath << "doxygen.png\" alt=\"doxygen\"/>" << "</a> " << versionString << " "; t << "</small></address>"; @@ -1502,7 +1502,7 @@ void HtmlGenerator::codify(const char *str) break; case '"': t << """; col++; break; - //case ' ': t << " "; col++; + //case ' ': t << " "; col++; // break; case '\\': if (*p=='<') @@ -1531,7 +1531,8 @@ void HtmlGenerator::writeChar(char c) //--- helper function for dynamic sections ------------------------- -static void startSectionHeader(FTextStream &t,int sectionCount) +static void startSectionHeader(FTextStream &t, + const QCString &relPath,int sectionCount) { static bool dynamicSections = Config_getBool("HTML_DYNAMIC_SECTIONS"); if (dynamicSections) @@ -1540,7 +1541,8 @@ static void startSectionHeader(FTextStream &t,int sectionCount) "onclick=\"return toggleVisibility(this)\" " "class=\"dynheader closed\" " "style=\"cursor:pointer;\">" << endl; - t << " <img id=\"dynsection-" << sectionCount << "-trigger\" src=\"closed.png\"/> "; + t << " <img id=\"dynsection-" << sectionCount << "-trigger\" src=\"" + << relPath << "closed.png\"/> "; } else { @@ -1597,7 +1599,7 @@ static void endSectionContent(FTextStream &t) void HtmlGenerator::startClassDiagram() { - startSectionHeader(t,m_sectionCount); + startSectionHeader(t,relPath,m_sectionCount); } void HtmlGenerator::endClassDiagram(const ClassDiagram &d, @@ -1702,7 +1704,7 @@ void HtmlGenerator::insertMemberAlign(bool templ) if (Config_getBool("HTML_ALIGN_MEMBERS")) { QCString className = templ ? "memTemplItemRight" : "memItemRight"; - t << " </td><td class=\"" << className << "\" valign=\"bottom\">"; + t << " </td><td class=\"" << className << "\" valign=\"bottom\">"; } } @@ -1711,7 +1713,7 @@ void HtmlGenerator::startMemberDescription() DBG_HTML(t << "<!-- startMemberDescription -->" << endl) if (Config_getBool("HTML_ALIGN_MEMBERS")) { - t << "<tr><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">"; + t << "<tr><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">"; } else { @@ -1791,7 +1793,7 @@ void HtmlGenerator::startMemberSubtitle() void HtmlGenerator::endMemberSubtitle() { DBG_HTML(t << "<!-- endMemberSubtitle -->" << endl) - if (Config_getBool("HTML_ALIGN_MEMBERS")) t << "<br/><br/></td></tr>" << endl; + if (Config_getBool("HTML_ALIGN_MEMBERS")) t << "<br/></td></tr>" << endl; } void HtmlGenerator::startIndexList() @@ -1918,7 +1920,7 @@ void HtmlGenerator::startParameterType(bool first,const char *key) void HtmlGenerator::endParameterType() { DBG_HTML(t << "<!-- endParameterType -->" << endl;) - t << " </td>" << endl; + t << " </td>" << endl; } void HtmlGenerator::startParameterName(bool /*oneArgOnly*/) @@ -1936,13 +1938,13 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket) { t << "</td>" << endl; t << " <td>"; - if (closeBracket) t << " )"; - t << " </td>" << endl; + if (closeBracket) t << " )"; + t << " </td>" << endl; t << " <td>"; } else { - t << "</td><td> </td>" << endl; + t << "</td><td> </td>" << endl; t << " </tr>" << endl; t << " <tr>" << endl; t << " <td></td>" << endl; @@ -1982,7 +1984,7 @@ void HtmlGenerator::endMemberDoc(bool hasArgs) void HtmlGenerator::startDotGraph() { - startSectionHeader(t,m_sectionCount); + startSectionHeader(t,relPath,m_sectionCount); } void HtmlGenerator::endDotGraph(const DotClassGraph &g) @@ -2008,7 +2010,7 @@ void HtmlGenerator::endDotGraph(const DotClassGraph &g) void HtmlGenerator::startInclDepGraph() { - startSectionHeader(t,m_sectionCount); + startSectionHeader(t,relPath,m_sectionCount); } void HtmlGenerator::endInclDepGraph(const DotInclDepGraph &g) @@ -2026,7 +2028,7 @@ void HtmlGenerator::endInclDepGraph(const DotInclDepGraph &g) void HtmlGenerator::startGroupCollaboration() { - startSectionHeader(t,m_sectionCount); + startSectionHeader(t,relPath,m_sectionCount); } void HtmlGenerator::endGroupCollaboration(const DotGroupCollaboration &g) @@ -2044,7 +2046,7 @@ void HtmlGenerator::endGroupCollaboration(const DotGroupCollaboration &g) void HtmlGenerator::startCallGraph() { - startSectionHeader(t,m_sectionCount); + startSectionHeader(t,relPath,m_sectionCount); } void HtmlGenerator::endCallGraph(const DotCallGraph &g) @@ -2062,7 +2064,7 @@ void HtmlGenerator::endCallGraph(const DotCallGraph &g) void HtmlGenerator::startDirDepGraph() { - startSectionHeader(t,m_sectionCount); + startSectionHeader(t,relPath,m_sectionCount); } void HtmlGenerator::endDirDepGraph(const DotDirDeps &g) @@ -2133,7 +2135,7 @@ void HtmlGenerator::writeNonBreakableSpace(int n) int i; for (i=0;i<n;i++) { - t << " "; + t << " "; } } @@ -2254,7 +2256,7 @@ static void endQuickIndexItem(FTextStream &t) static QCString fixSpaces(const QCString &s) { - return substitute(s," "," "); + return substitute(s," "," "); } static bool quickLinkVisible(LayoutNavEntry::Kind kind) @@ -2353,7 +2355,7 @@ static void renderQuickLinksAsTabs(FTextStream &t,const QCString &relPath, t << " <form action=\"" << relPath << "search.php\" method=\"get\">\n"; t << " <table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n"; t << " <tr>\n"; - t << " <td><label> " << searchFor << " </label></td>\n"; + t << " <td><label> " << searchFor << " </label></td>\n"; if (!highlightSearch) { t << " <td><input type=\"text\" name=\"query\" value=\"\" size=\"20\" accesskey=\"s\"/></td>\n"; @@ -2543,7 +2545,7 @@ void HtmlGenerator::writeSearchPage() } else { - t << " \n<div class=\"qindex\">\n"; + t << " \n<div class=\"qindex\">\n"; t << " <form class=\"search\" action=\"search.php\" " << "method=\"get\">\n"; } @@ -2684,7 +2686,7 @@ void HtmlGenerator::endConstraintParam() void HtmlGenerator::startConstraintType() { - t << "<td> :</td><td valign=\"top\"><em>"; + t << "<td> :</td><td valign=\"top\"><em>"; } void HtmlGenerator::endConstraintType() @@ -2694,7 +2696,7 @@ void HtmlGenerator::endConstraintType() void HtmlGenerator::startConstraintDocs() { - t << "<td> "; + t << "<td> "; } void HtmlGenerator::endConstraintDocs() diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp index 037dd72..32077e7 100644 --- a/src/htmlhelp.cpp +++ b/src/htmlhelp.cpp @@ -627,7 +627,7 @@ void HtmlHelp::addContentsItem(bool isDir, void HtmlHelp::addIndexItem(Definition *context,MemberDef *md, - const char *anc,const char *word) + const char *word) { if (md) { @@ -647,14 +647,14 @@ void HtmlHelp::addIndexItem(Definition *context,MemberDef *md, QCString level2 = md->name(); QCString contRef = separateMemberPages ? cfname : cfiname; QCString memRef = cfname; - QCString anchor = anc; + QCString anchor = md->anchor(); index->addItem(level1,level2,contRef,anchor,TRUE,FALSE); index->addItem(level2,level1,memRef,anchor,TRUE,TRUE); } else if (context) { QCString level1 = word ? QCString(word) : context->name(); - index->addItem(level1,0,context->getOutputFileBase(),anc,TRUE,FALSE); + index->addItem(level1,0,context->getOutputFileBase(),0,TRUE,FALSE); } } diff --git a/src/htmlhelp.h b/src/htmlhelp.h index bee84dd..0849007 100644 --- a/src/htmlhelp.h +++ b/src/htmlhelp.h @@ -77,8 +77,7 @@ class HtmlHelp : public IndexIntf //void addIndexItem(const char *level1, const char *level2, // const char *contRef, const char *memRef, // const char *anchor,const MemberDef *md); - void addIndexItem(Definition *context,MemberDef *md, - const char *anchor,const char *word); + void addIndexItem(Definition *context,MemberDef *md,const char *title); void addIndexFile(const char *name); void addImageFile(const char *) {} void addStyleSheetFile(const char *) {} diff --git a/src/index.cpp b/src/index.cpp index eab4f4e..306f831 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -266,7 +266,7 @@ static void endQuickIndexItem(OutputList &ol) static QCString fixSpaces(const QCString &s) { - return substitute(s," "," "); + return substitute(s," "," "); } @@ -1248,7 +1248,7 @@ void writeAlphabeticalClassList(OutputList &ol) { if (indexLetterUsed[l]) { - if (headerItems) alphaLinks += " | "; + if (headerItems) alphaLinks += " | "; headerItems++; alphaLinks += (QCString)"<a class=\"qindex\" href=\"#letter_" + (char)l + "\">" + @@ -1362,9 +1362,9 @@ void writeAlphabeticalClassList(OutputList &ol) ol.writeString("\"></a>"); ol.writeString("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" "<tr>" - "<td><div class=\"ah\"> "); + "<td><div class=\"ah\">  "); ol.writeString(s); - ol.writeString( " </div>" + ol.writeString( "  </div>" "</td>" "</tr>" "</table>\n"); @@ -1386,6 +1386,10 @@ void writeAlphabeticalClassList(OutputList &ol) { nsDispName=namesp.copy(); } + if (cname.right(2)=="-g" || cname.right(2)=="-p") + { + cname = cname.left(cname.length()-2); + } ol.writeObjectLink(cd->getReference(), cd->getOutputFileBase(),0,cname); @@ -1853,6 +1857,7 @@ void writeQuickMemberIndex(OutputList &ol, for (i=33;i<127;i++) { char is[2];is[0]=(char)i;is[1]='\0'; + QCString ci = letterToLabel((char)i); if (charUsed[i].count()>0) { QCString anchor; @@ -1863,7 +1868,7 @@ void writeQuickMemberIndex(OutputList &ol, anchor=fullName+extension+"#index_"; else anchor=fullName+QCString().sprintf("_0x%02x",i)+extension+"#index_"; - startQuickIndexItem(ol,anchor+is,i==page,TRUE,first); + startQuickIndexItem(ol,anchor+ci,i==page,TRUE,first); ol.writeString(is); endQuickIndexItem(ol); first=FALSE; @@ -1978,7 +1983,7 @@ static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight h { // hack to work around a mozilla bug, which refuses to switch to // normal lists otherwise - ol.writeString(" "); + ol.writeString(" "); } //ol.newParagraph(); // FIXME:PARA writeMemberList(ol,quickIndex, @@ -2109,7 +2114,7 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl) { // hack to work around a mozilla bug, which refuses to switch to // normal lists otherwise - ol.writeString(" "); + ol.writeString(" "); } //ol.newParagraph(); // FIXME:PARA //writeFileMemberList(ol,quickIndex,hl,page); @@ -2237,7 +2242,7 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol, { // hack to work around a mozilla bug, which refuses to switch to // normal lists otherwise - ol.writeString(" "); + ol.writeString(" "); } //ol.newParagraph(); // FIXME:PARA @@ -2772,7 +2777,7 @@ void writeJavascriptSearchIndex() if (fd==0) fd = md->getFileDef(); if (fd) { - if (!prefix.isEmpty()) prefix+=": "; + if (!prefix.isEmpty()) prefix+=": "; t << prefix << convertToXML(fd->localName()); found = TRUE; } @@ -2916,7 +2921,7 @@ void writeSearchCategories(FTextStream &t) { t << "<a class=\"SelectItem\" href=\"javascript:void(0)\" " << "onclick=\"searchBox.OnSelectItem(" << j << ")\">" - << "<span class=\"SelectionMark\"> </span>" + << "<span class=\"SelectionMark\"> </span>" << convertToXML(map.categoryLabel[i]) << "</a>"; j++; diff --git a/src/index.h b/src/index.h index c5d1bb3..93bfee4 100644 --- a/src/index.h +++ b/src/index.h @@ -38,8 +38,7 @@ class IndexIntf virtual void decContentsDepth() = 0; virtual void addContentsItem(bool isDir, const char *name, const char *ref = 0, const char *file = 0, const char *anchor = 0) = 0; - virtual void addIndexItem(Definition *context,MemberDef *md, - const char *anchor,const char *word) = 0; + virtual void addIndexItem(Definition *context,MemberDef *md,const char *title) = 0; virtual void addIndexFile(const char *name) = 0; virtual void addImageFile(const char *name) = 0; virtual void addStyleSheetFile(const char *name) = 0; @@ -70,6 +69,13 @@ class IndexList : public IndexIntf for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1); } + template<typename A1,typename A2,typename A3> + void foreach(void (IndexIntf::*methodPtr)(A1,A2,A3),A1 a1,A2 a2,A3 a3) + { + QListIterator<IndexIntf> li(m_intfs); + for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1,a2,a3); + } + template<typename A1,typename A2,typename A3,typename A4> void foreach(void (IndexIntf::*methodPtr)(A1,A2,A3,A4),A1 a1,A2 a2,A3 a3,A4 a4) { @@ -104,10 +110,9 @@ class IndexList : public IndexIntf const char *file = 0, const char *anchor = 0) { foreach<bool,const char *,const char *,const char *,const char*> (&IndexIntf::addContentsItem,isDir,name,ref,file,anchor); } - void addIndexItem(Definition *context,MemberDef *md, - const char *anchor=0,const char *word=0) + void addIndexItem(Definition *context,MemberDef *md,const char *title=0) { foreach<Definition *,MemberDef *> - (&IndexIntf::addIndexItem,context,md,anchor,word); } + (&IndexIntf::addIndexItem,context,md,title); } void addIndexFile(const char *name) { foreach<const char *>(&IndexIntf::addIndexFile,name); } void addImageFile(const char *name) diff --git a/src/lang_cfg.h b/src/lang_cfg.h index 34d2ac9..99be35e 100644 --- a/src/lang_cfg.h +++ b/src/lang_cfg.h @@ -20,6 +20,7 @@ #define LANG_SI #define LANG_CN #define LANG_NO +#define LANG_MK #define LANG_BR #define LANG_DK #define LANG_SK @@ -32,6 +33,7 @@ #define LANG_ZA #define LANG_AR #define LANG_FA +#define LANG_SC #define LANG_VI #define LANG_TR #define LANG_EO diff --git a/src/lodepng.h b/src/lodepng.h index a86ab65..bbf40dc 100644 --- a/src/lodepng.h +++ b/src/lodepng.h @@ -1038,8 +1038,8 @@ in the Decoder's interface in the C++ version. getBpp(): bits per pixel of the PNG image getChannels(): amount of color channels of the PNG image -isGreyscaleType(): it's color type 0 or 4 -isAlphaType(): it's color type 2 or 6 +isGreyscaleType(): its color type 0 or 4 +isAlphaType(): its color type 2 or 6 These values are calculated out of color type and bit depth of InfoColor. diff --git a/src/memberdef.cpp b/src/memberdef.cpp index aadb796..f221dd6 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -277,7 +277,7 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ol.pushGeneratorState(); ol.disable(OutputGenerator::Html); ol.disable(OutputGenerator::Latex); - //if (!first) ol.writeString(" "); + //if (!first) ol.writeString(" "); if (!md->isObjCMethod()) ol.docify(")"); // end argument list ol.enableAll(); if (htmlOn) ol.enable(OutputGenerator::Html); @@ -2392,7 +2392,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, "warning: parameters of member %s are not (all) documented", qPrint(qualifiedName())); } - if (!hasDocumentedReturnType() && !isDefine() && hasDocumentation()) + if (!hasDocumentedReturnType() && isFunction() && hasDocumentation()) { warn_doc_error(docFile(),docLine(), "warning: return type of member %s is not documented", @@ -2807,6 +2807,13 @@ void MemberDef::_computeIsConstructor() m_isConstructorCached = name()=="__construct" ? 2 : 1; return; } + else if (name()=="__init__" && m_impl->fileDef && + getLanguageFromFileName(m_impl->fileDef->name())==SrcLangExt_Python) + // for Python + { + m_isConstructorCached=2; // TRUE + return; + } else // for other languages { QCString locName = m_impl->classDef->localName(); @@ -2849,6 +2856,12 @@ void MemberDef::_computeIsDestructor() { // for PHP isDestructor = name()=="__destruct"; } + else if (name()=="__del__" && m_impl->fileDef && + getLanguageFromFileName(m_impl->fileDef->name())==SrcLangExt_Python) + // for Python + { + isDestructor=TRUE; + } else // other languages { isDestructor = @@ -2943,7 +2956,7 @@ void MemberDef::writeEnumDeclaration(OutputList &typeDecl, typeDecl.enable(OutputGenerator::Latex); typeDecl.lineBreak(); typeDecl.disable(OutputGenerator::Latex); - typeDecl.writeString(" "); + typeDecl.writeString("  "); typeDecl.popGeneratorState(); } diff --git a/src/membergroup.cpp b/src/membergroup.cpp index 6c0b81a..6b40e5c 100644 --- a/src/membergroup.cpp +++ b/src/membergroup.cpp @@ -58,7 +58,6 @@ MemberGroup::MemberGroup(Definition *parent, m_parent = parent; m_docFile = docFile; m_xrefListItems = 0; - doc.prepend("<a name=\""+anchor()+"\"></a>"); //printf("Member group docs=`%s'\n",doc.data()); } @@ -109,7 +108,9 @@ void MemberGroup::writeDeclarations(OutputList &ol, ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd) { //printf("MemberGroup::writeDeclarations() memberList->count()=%d\n",memberList->count()); - memberList->writeDeclarations(ol,cd,nd,fd,gd,grpHeader,doc/*,TRUE,TRUE*/); + QCString ldoc = doc; + if (!ldoc.isEmpty()) ldoc.prepend("<a name=\""+anchor()+"\"></a>"); + memberList->writeDeclarations(ol,cd,nd,fd,gd,grpHeader,ldoc/*,TRUE,TRUE*/); } void MemberGroup::writePlainDeclarations(OutputList &ol, diff --git a/src/pagedef.cpp b/src/pagedef.cpp index 607fa1d..02d6006 100644 --- a/src/pagedef.cpp +++ b/src/pagedef.cpp @@ -159,7 +159,7 @@ void PageDef::writeDocumentation(OutputList &ol) } } - Doxygen::indexList.addIndexItem(this,0,0,filterTitle(title())); + Doxygen::indexList.addIndexItem(this,0,filterTitle(title())); } void PageDef::writePageDocumentation(OutputList &ol) @@ -84,6 +84,7 @@ static QCString g_defName; static QCString g_defText; static QCString g_defLitText; static QCString g_defArgsStr; +static QCString g_defExtraSpacing; static bool g_defVarArgs; static int g_level; static int g_lastCContext; @@ -944,6 +945,34 @@ QCString removeIdsAndMarkers(const char *s) result+="0L"; p++; while ((c=*p) && isId(c)) p++; + if (*p=='(') // undefined function macro + { + p++; + int count=1; + while ((c=*p++)) + { + if (c=='(') count++; + else if (c==')') + { + count--; + if (count==0) break; + } + else if (c=='/') + { + char pc=c; + c=*++p; + if (c=='*') // start of C comment + { + while (*p && !(pc=='*' && c=='/')) // search end of comment + { + pc=c; + c=*++p; + } + p++; + } + } + } + } } else if (c=='/') // skip C comments { @@ -1201,6 +1230,13 @@ static void readIncludeFile(const QCString &inc) // extract include path+name QCString incFileName=inc.mid(s,i-s).stripWhiteSpace(); + QCString dosExt = incFileName.right(4); + if (dosExt==".exe" || dosExt==".dll" || dosExt==".tbl") + { + // skip imported binary files (e.g. M$ type libraries) + return; + } + QCString oldFileName = g_yyFileName; FileDef *oldFileDef = g_yyFileDef; int oldLineNr = g_yyLineNr; @@ -1254,8 +1290,14 @@ static void readIncludeFile(const QCString &inc) if (oldFileDef) { bool ambig; + if (QDir::isRelativePath(incFileName)) + { + QString absPath = QDir::cleanDirPath(oldFileDef->getPath()+"/"+incFileName); + //printf("%s + %s -> resolved path %s\n",oldFileDef->getPath().data(),incFileName.data(),absPath.data()); + incFileName = absPath; + } FileDef *fd = findFileDef(Doxygen::inputNameDict,incFileName,ambig); - //printf("findFileDef(%s)=%p\n",incFileName.data(),fd); + //printf("%s::findFileDef(%s)=%p\n",oldFileDef->name().data(),incFileName.data(),fd); // add include dependency to the file in which the #include was found oldFileDef->addIncludeDependency(fd,incFileName,localInclude,g_isImported); // add included by dependency @@ -1302,6 +1344,15 @@ static void endCondSection() } } +static void forceEndCondSection() +{ + while (!g_condStack.isEmpty()) + { + g_condStack.pop(); + } + g_skip=FALSE; +} + static QCString escapeAt(const char *text) { QCString result; @@ -1879,7 +1930,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) } <EndImport>. { } -<DefName>{ID}/"(" { // define with argument +<DefName>{ID}/("\\\n")*"(" { // define with argument //printf("Define() `%s'\n",yytext); g_argDict = new QDict<int>(31); g_argDict->setAutoDelete(TRUE); @@ -1889,6 +1940,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) g_defLitText.resize(0); g_defName = yytext; g_defVarArgs = FALSE; + g_defExtraSpacing.resize(0); BEGIN(DefineArg); } <DefName>{ID}{B}+"1" { // special case: define with 1 -> can be "guard" @@ -1959,11 +2011,15 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) } g_expectGuard=FALSE; } +<DefineArg>"\\\n" { + g_defExtraSpacing+="\n"; + g_yyLineNr++; + } <DefineArg>","{B}* { g_defArgsStr+=yytext; } <DefineArg>"("{B}* { g_defArgsStr+=yytext; } <DefineArg>{B}*")"{B}* { g_defArgsStr+=yytext; - QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; + QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr+g_defExtraSpacing; outputArray(tmp.data(),tmp.length()); g_quoteArg=FALSE; g_insideComment=FALSE; @@ -2573,6 +2629,9 @@ void preprocessFile(const char *fileName,BufStr &input,BufStr &output) preYYlex(); g_lexInit=TRUE; + // make sure we don't extend a \cond with missing \endcond over multiple files (see bug 624829) + forceEndCondSection(); + if (Debug::isFlagSet(Debug::Preprocessor)) { char *orgPos=output.data()+orgOffset; diff --git a/src/pycode.l b/src/pycode.l index 79157a6..116219a 100644 --- a/src/pycode.l +++ b/src/pycode.l @@ -1336,6 +1336,10 @@ TARGET ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT BEGIN(Body); } +<*>[ \t]+ { + codify(yytext); + BEGIN(Body); + } <*>. { codify(yytext); // printf("[pycode] '%s' [ state %d ] [line %d] no match\n", diff --git a/src/pyscanner.l b/src/pyscanner.l index 24b2672..d47b00e 100644 --- a/src/pyscanner.l +++ b/src/pyscanner.l @@ -331,11 +331,11 @@ static void handleCommentBlock(const QCString &doc,bool brief) } -static void endOfDef() +static void endOfDef(int correction=0) { if (bodyEntry) { - bodyEntry->endBodyLine = yyLineNr; + bodyEntry->endBodyLine = yyLineNr-correction; bodyEntry = 0; } newEntry(); @@ -379,6 +379,34 @@ static void initSpecialBlock() startCommentBlock(TRUE); } +static void searchFoundDef() +{ + current->fileName = yyFileName; + current->startLine = yyLineNr; + current->bodyLine = yyLineNr; + current->section = Entry::FUNCTION_SEC; + current->protection = protection = Public; + current->lang = SrcLangExt_Python; + current->virt = Normal; + current->stat = FALSE; + current->mtype = mtype = Method; + current->type.resize(0); + current->name.resize(0); + current->args.resize(0); + current->argList->clear(); + g_packageCommentAllowed = FALSE; +} + +static void searchFoundClass() +{ + current->section = Entry::CLASS_SEC; + current->argList->clear(); + current->type += "class" ; + current->fileName = yyFileName; + current->bodyLine = yyLineNr; + g_packageCommentAllowed = FALSE; +} + //----------------------------------------------------------------------------- /* ----------------------------------------------------------------- */ #undef YY_INPUT @@ -438,9 +466,9 @@ STRINGLITERAL {STRINGPREFIX}?( {SHORTSTRING} | {LONGSTRING}) STRINGPREFIX ("r"|"u"|"ur"|"R"|"U"|"UR"|"Ur"|"uR") KEYWORD ("lambda"|"import"|"class"|"assert"|"as"|"from"|"global"|"def"|"True"|"False") FLOWKW ("or"|"and"|"is"|"not"|"print"|"for"|"in"|"if"|"try"|"except"|"yield"|"raise"|"break"|"continue"|"pass"|"if"|"return"|"while"|"elif"|"else"|"finally") -POUNDCOMMENT {B}"#"[^#\n][^\n]* +POUNDCOMMENT "#"[^#\n][^\n]* -STARTDOCSYMS ^{B}"##"/[^#] +STARTDOCSYMS "##" %option noyywrap @@ -493,36 +521,23 @@ STARTDOCSYMS ^{B}"##"/[^#] <Search>{ - ^{B}"def"{BB} | - "def"{BB} { // start of a function/method definition + ^{B}"def"{BB} { // start of a function/method definition with indent g_indent=computeIndent(yytext); - current->fileName = yyFileName; - current->startLine = yyLineNr; - current->bodyLine = yyLineNr; - current->section = Entry::FUNCTION_SEC; - current->protection = protection = Public; - current->lang = SrcLangExt_Python; - current->virt = Normal; - current->stat = FALSE; - current->mtype = mtype = Method; - current->type.resize(0); - current->name.resize(0); - current->args.resize(0); - current->argList->clear(); - g_packageCommentAllowed = FALSE; + searchFoundDef(); BEGIN( FunctionDec ); - } + } + "def"{BB} { // start of a function/method definition + searchFoundDef(); + BEGIN( FunctionDec ); + } - ^{B}"class"{BB} | - "class"{BB} { // start of a class definition + ^{B}"class"{BB} { // start of a class definition with indent g_indent=computeIndent(yytext); - current->section = Entry::CLASS_SEC; - current->argList->clear(); - current->type += "class" ; - current->fileName = yyFileName; - current->bodyLine = yyLineNr; - g_packageCommentAllowed = FALSE; - + searchFoundClass(); + BEGIN( ClassDec ) ; + } + "class"{BB} { // start of a class definition + searchFoundClass(); BEGIN( ClassDec ) ; } ^{B}"from"{BB} | @@ -578,11 +593,6 @@ STARTDOCSYMS ^{B}"##"/[^#] ^{BB} { g_curIndent=computeIndent(yytext); } - [^\n] { // any other character... - // This is the major default - // that should catch everything - // else in Body. - } {NEWLINE}+ { // new line lineCount(); @@ -598,11 +608,17 @@ STARTDOCSYMS ^{B}"##"/[^#] BEGIN(TripleComment); } - {STARTDOCSYMS} { // start of a special comment + {STARTDOCSYMS}/[^#] { // start of a special comment + g_curIndent=computeIndent(yytext); g_packageCommentAllowed = FALSE; initSpecialBlock(); BEGIN(SpecialComment); } + [^\n] { // any other character... + // This is the major default + // that should catch everything + // else in Body. + } } <FromMod>{ @@ -711,7 +727,7 @@ STARTDOCSYMS ^{B}"##"/[^#] BEGIN(TripleComment); } - {STARTDOCSYMS} { // start of a special comment + {STARTDOCSYMS}/[^#] { // start of a special comment initSpecialBlock(); BEGIN(SpecialComment); } @@ -728,6 +744,8 @@ STARTDOCSYMS ^{B}"##"/[^#] BEGIN( DoubleQuoteString ); } \n { yyLineNr++; } + {IDENTIFIER} // identifiers + [^'"\.#a-z_A-Z]+ // other uninteresting stuff . // anything else } @@ -742,7 +760,7 @@ STARTDOCSYMS ^{B}"##"/[^#] unput(yytext[i]); } endOfDef(); - YY_CURRENT_BUFFER->yy_at_bol=TRUE; + //YY_CURRENT_BUFFER->yy_at_bol=TRUE; BEGIN(Search); } else @@ -760,7 +778,7 @@ STARTDOCSYMS ^{B}"##"/[^#] unput(yytext[i]); } endOfDef(); - YY_CURRENT_BUFFER->yy_at_bol=TRUE; + //YY_CURRENT_BUFFER->yy_at_bol=TRUE; BEGIN(Search); } else @@ -782,7 +800,7 @@ STARTDOCSYMS ^{B}"##"/[^#] if (g_curIndent<=g_indent) // jumped out of the function { - endOfDef(); + endOfDef(1); BEGIN(Search); } } @@ -830,7 +848,7 @@ STARTDOCSYMS ^{B}"##"/[^#] BEGIN(TripleComment); } - {STARTDOCSYMS} { // start of a special comment + {STARTDOCSYMS}/[^#] { // start of a special comment initSpecialBlock(); BEGIN(SpecialComment); } @@ -931,14 +949,14 @@ STARTDOCSYMS ^{B}"##"/[^#] yyLineNr++; endOfDef(); g_hideClassDocs = FALSE; - YY_CURRENT_BUFFER->yy_at_bol=TRUE; + //YY_CURRENT_BUFFER->yy_at_bol=TRUE; BEGIN(Search); } - \n/"##" { // start of a special comment at indent 0 + \n/"##"[^#] { // start of a special comment at indent 0 yyLineNr++; endOfDef(); g_hideClassDocs = FALSE; - YY_CURRENT_BUFFER->yy_at_bol=TRUE; + //YY_CURRENT_BUFFER->yy_at_bol=TRUE; BEGIN(Search); } ^{BB}/\n { // skip empty line @@ -952,12 +970,12 @@ STARTDOCSYMS ^{B}"##"/[^#] g_curIndent=computeIndent(yytext); //fprintf(stderr,"g_curIndent=%d g_indent=%d\n",g_curIndent,g_indent); if (g_curIndent<=g_indent) - // jumped out of the class + // jumped out of the class/method { - endOfDef(); + endOfDef(1); g_indent=g_curIndent; // make sure the next rule matches ^... - YY_CURRENT_BUFFER->yy_at_bol=TRUE; + //YY_CURRENT_BUFFER->yy_at_bol=TRUE; g_hideClassDocs = FALSE; BEGIN(Search); } diff --git a/src/qhp.cpp b/src/qhp.cpp index f38cf39..0f3e3ad 100644 --- a/src/qhp.cpp +++ b/src/qhp.cpp @@ -188,9 +188,8 @@ void Qhp::addContentsItem(bool /*isDir*/, const char * name, } void Qhp::addIndexItem(Definition *context,MemberDef *md, - const char *anc,const char *word) + const char *word) { - (void)anc; (void)word; if (md) // member @@ -209,7 +208,7 @@ void Qhp::addIndexItem(Definition *context,MemberDef *md, QCString level1 = context->name(); QCString level2 = word ? QCString(word) : md->name(); QCString contRef = separateMemberPages ? cfname : cfiname; - QCString anchor = anc; + QCString anchor = md->anchor(); QCString ref; @@ -230,15 +229,7 @@ void Qhp::addIndexItem(Definition *context,MemberDef *md, // <keyword name="Foo" id="Foo" ref="doc.html"/> QCString contRef = context->getOutputFileBase(); QCString level1 = word ? QCString(word) : context->name(); - QCString ref; - if (anc) - { - ref = makeRef(contRef,anc); - } - else - { - ref = makeFileName(contRef); - } + QCString ref = makeFileName(contRef); const char * attributes[] = { "name", level1, @@ -33,11 +33,7 @@ class Qhp : public IndexIntf void decContentsDepth(); void addContentsItem(bool isDir, const char * name, const char * ref, const char * file, const char * anchor); - //void addIndexItem(const char * level1, const char * level2, - // const char * contRef, const char * memRef, - // const char * anchor, const MemberDef * md); - void addIndexItem(Definition *context,MemberDef *md, - const char *anchor,const char *word); + void addIndexItem(Definition *context,MemberDef *md,const char *title); void addIndexFile(const char * name); void addImageFile(const char * name); void addStyleSheetFile(const char * name); diff --git a/src/scanner.l b/src/scanner.l index 732dfbc..3685157 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -218,6 +218,7 @@ static void initEntry() current->virt = virt; current->stat = gstat; current->lang = language; + //printf("*** initEntry() language=%d\n",language); //if (!autoGroupStack.isEmpty()) //{ // //printf("Appending group %s\n",autoGroupStack.top()->groupname.data()); @@ -1782,6 +1783,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) // *currentTemplateSpec+='>'; if (--sharpCount<=0) { + current->bodyLine = yyLineNr; current->args = "("; currentArgumentContext = FuncQual; fullArgString = current->args.copy(); @@ -2153,7 +2155,10 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) } } <FindMembers>[*&]+ { - current->name += yytext ; + if (current->type.stripWhiteSpace().right(1)!=yytext) + { + current->name += yytext ; + } addType( current ); } <FindMembers,MemberSpec,Function,NextSemi,BitFields,ReadInitializer,OldStyleArgs>";"{BN}*("/**"|"//!"|"/*!"|"///")"<" { @@ -2714,6 +2719,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) if (needNewCurrent) { current = new Entry(*current); + initEntry(); } current->name.resize(0); current->args.resize(0); @@ -3078,8 +3084,12 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) } else { - //current->doc.resize(0); - //current->brief.resize(0); + if (!isTypedef) + { + // enabled the next two lines for bug 623424 + current->doc.resize(0); + current->brief.resize(0); + } BEGIN( MemberSpec ) ; } } @@ -3142,6 +3152,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) current_root->addSubEntry( current ) ; memspecEntry = current; current = new Entry(*current); + initEntry(); unput(';'); BEGIN( MemberSpec ) ; } @@ -3234,6 +3245,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) else // case 2: create a typedef field { Entry *varEntry=new Entry; + varEntry->lang = language; varEntry->protection = current->protection ; varEntry->mtype = current->mtype; varEntry->virt = current->virt; @@ -3288,8 +3300,19 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) current_root->addSubEntry(varEntry); } } - if (*yytext==';') + if (*yytext==';') // end of a struct/class ... { + if (msName.isEmpty() && memspecEntry && (current->section&Entry::COMPOUND_MASK)) + { // case where a class/struct has a doc block after it + if (!current->doc.isEmpty()) + { + memspecEntry->doc += current->doc; + } + if (!current->brief.isEmpty()) + { + memspecEntry->brief += current->brief; + } + } msType.resize(0); msName.resize(0); msArgs.resize(0); @@ -3335,7 +3358,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) <ReadBody,ReadNSBody,ReadBodyIntf>. { current->program += yytext ; } <FindMembers>"("/{BN}*"::"*{BN}*({TSCOPE}{BN}*"::")*{TSCOPE}{BN}*")"{BN}*"(" | /* typedef void (A<int>::func_t)(args...) */ -<FindMembers>("("({BN}*"::"*{BN}*{TSCOPE}{BN}*"::")*({BN}*[*&]{BN}*)+)+ { /* typedef void (A::*ptr_t)(args...) or int (*func(int))[] */ +<FindMembers>("("({BN}*"::"*{BN}*{TSCOPE}{BN}*"::")*({BN}*[*&\^]{BN}*)+)+ { /* typedef void (A::*ptr_t)(args...) or int (*func(int))[], the ^ is for Obj-C blocks */ if (insidePHP) // reference parameter { REJECT @@ -5446,7 +5469,7 @@ static void handleCommentBlock(const QCString &doc,bool brief) int position=0; bool needsEntry=FALSE; if (docBlockInBody && hideInBodyDocs) return; - //printf("parseCommentBlock [%s]\n",doc.data()); + //printf("parseCommentBlock [%s] brief=%d\n",doc.data(),brief); int lineNr = brief ? current->briefLine : current->docLine; // line of block start while (parseCommentBlock( g_thisParser, @@ -5454,9 +5477,9 @@ static void handleCommentBlock(const QCString &doc,bool brief) doc, // text yyFileName, // file lineNr, // line of block start - docBlockInBody ? FALSE : brief, - docBlockInBody ? FALSE : docBlockAutoBrief, - docBlockInBody, + docBlockInBody ? FALSE : brief, // isBrief + docBlockInBody ? FALSE : docBlockAutoBrief, // isJavaDocStyle + docBlockInBody, // isInBody protection, position, needsEntry @@ -5568,6 +5591,7 @@ static void parseCompounds(Entry *rt) //current->reset(); if (current) delete current; current = new Entry; + current->lang = language; gstat = FALSE; int ni=ce->name.findRev("::"); if (ni==-1) ni=0; else ni+=2; // set default protection based on the compound type @@ -5667,6 +5691,7 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt) yyLineNr= 1 ; yyFileName = fileName; setContext(); + rt->lang = language; msg("Parsing file %s...\n",yyFileName.data()); current_root = rt ; @@ -5710,7 +5735,12 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt) //} rt->program.resize(0); - delete current; current=0; + if (rt->children()->contains(current)==0) + // it could be that current is already added as a child to rt, so we + // only delete it if this is not the case. See bug 635317. + { + delete current; current=0; + } parseCompounds(rt); diff --git a/src/search.js b/src/search.js index a173d64..010fd4b 100644 --- a/src/search.js +++ b/src/search.js @@ -244,7 +244,7 @@ function SearchBox(name, resultsPath, inFrame, label) } else { - node.innerHTML=' '; + node.innerHTML=' '; } j++; } diff --git a/src/search.php b/src/search.php index d899ade..bddb487 100644 --- a/src/search.php +++ b/src/search.php @@ -279,7 +279,7 @@ function main() $query=$_GET["query"]; } end_form(preg_replace("/[^a-zA-Z0-9\-\_\.]/i", " ", $query )); - echo " \n<div class=\"searchresults\">\n"; + echo " \n<div class=\"searchresults\">\n"; $results = array(); $requiredWords = array(); $forbiddenWords = array(); diff --git a/src/search_js.h b/src/search_js.h index 7bc4f16..d8ef087 100644 --- a/src/search_js.h +++ b/src/search_js.h @@ -244,7 +244,7 @@ " }\n" " else\n" " {\n" -" node.innerHTML=' ';\n" +" node.innerHTML=' ';\n" " }\n" " j++;\n" " }\n" diff --git a/src/search_php.h b/src/search_php.h index 9cb3f20..3380cee 100644 --- a/src/search_php.h +++ b/src/search_php.h @@ -279,7 +279,7 @@ " $query=$_GET[\"query\"];\n" " }\n" " end_form(preg_replace(\"/[^a-zA-Z0-9\\-\\_\\.]/i\", \" \", $query ));\n" -" echo \" \\n<div class=\\\"searchresults\\\">\\n\";\n" +" echo \" \\n<div class=\\\"searchresults\\\">\\n\";\n" " $results = array();\n" " $requiredWords = array();\n" " $forbiddenWords = array();\n" diff --git a/src/translator_es.h b/src/translator_es.h index 3737578..077314a 100644 --- a/src/translator_es.h +++ b/src/translator_es.h @@ -1,4 +1,4 @@ -/****************************************************************************** +锘/****************************************************************************** * * * @@ -25,7 +25,7 @@ * Updated to 1.5.5 by Bartomeu Creus Navarro (5-febrero-2008) * Updated to 1.5.8 by Bartomeu Creus Navarro (10-abril-2009) * Updated to 1.6.3 by Bartomeu Creus Navarro (3-marzo-2010) - * Updated to 1.6.4 by Bartomeu Creus Navarro (26-mayo-2010) + * Updated to 1.6.4 by Bartomeu Creus Navarro (26-mayo-2010) [(16-jun-2010) grabado en UTF-8] */ #ifndef TRANSLATOR_ES_H @@ -84,36 +84,36 @@ class TranslatorSpanish : public Translator /*! header that is put before the detailed description of files, classes and namespaces. */ virtual QCString trDetailedDescription() - { return "Descripci髇 detallada"; } + { return "Descripci贸n detallada"; } /*! header that is put before the list of typedefs. */ virtual QCString trMemberTypedefDocumentation() - { return "Documentaci髇 de los 'Typedef' miembros de la clase"; } + { return "Documentaci贸n de los 'Typedef' miembros de la clase"; } /*! header that is put before the list of enumerations. */ virtual QCString trMemberEnumerationDocumentation() - { return "Documentaci髇 de las enumeraciones miembro de la clase"; } + { return "Documentaci贸n de las enumeraciones miembro de la clase"; } /*! header that is put before the list of member functions. */ virtual QCString trMemberFunctionDocumentation() - { return "Documentaci髇 de las funciones miembro"; } + { return "Documentaci贸n de las funciones miembro"; } /*! header that is put before the list of member attributes. */ virtual QCString trMemberDataDocumentation() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "Documentaci髇 de los campos"; + return "Documentaci贸n de los campos"; } else { - return "Documentaci髇 de los datos miembro"; + return "Documentaci贸n de los datos miembro"; } } /*! this is the text of a link put after brief descriptions. */ virtual QCString trMore() - { return "M醩..."; } + { return "M谩s..."; } /*! put in the class documentation */ virtual QCString trListOfAllMembers() @@ -135,15 +135,15 @@ class TranslatorSpanish : public Translator * parameter s is name of the project name. */ virtual QCString trGeneratedAutomatically(const char *s) - { QCString result="Generado autom醫icamente por Doxygen"; + { QCString result="Generado autom谩ticamente por Doxygen"; if (s) result+=(QCString)" para "+s; - result+=" del c骴igo fuente."; + result+=" del c贸digo fuente."; return result; } /*! put after an enum name in the list of all members */ virtual QCString trEnumName() - { return "nombre de la enumeraci髇"; } + { return "nombre de la enumeraci贸n"; } /*! put after an enum value in the list of all members */ virtual QCString trEnumValue() @@ -159,11 +159,11 @@ class TranslatorSpanish : public Translator * compounds or files (see the \\group command). */ virtual QCString trModules() - { return "M骴ulos"; } + { return "M贸dulos"; } /*! This is put above each page as a link to the class hierarchy */ virtual QCString trClassHierarchy() - { return "Jerarqu韆 de la clase"; } + { return "Jerarqu铆a de la clase"; } /*! This is put above each page as a link to the list of annotated classes */ virtual QCString trCompoundList() @@ -210,7 +210,7 @@ class TranslatorSpanish : public Translator /*! This is put above each page as a link to all related pages. */ virtual QCString trRelatedPages() - { return "P醙inas relacionadas"; } + { return "P谩ginas relacionadas"; } /*! This is put above each page as a link to all examples. */ virtual QCString trExamples() @@ -223,7 +223,7 @@ class TranslatorSpanish : public Translator /*! This is an introduction to the class hierarchy. */ virtual QCString trClassHierarchyDescription() { return "Esta lista de herencias esta ordenada " - "aproximadamente por orden alfab閠ico:"; + "aproximadamente por orden alfab茅tico:"; } /*! This is an introduction to the list with all files. */ @@ -240,12 +240,12 @@ class TranslatorSpanish : public Translator { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "Lista de estructuras con una breve descripci髇:"; + return "Lista de estructuras con una breve descripci贸n:"; } else { return "Lista de las clases, estructuras, " - "uniones e interfaces con una breve descripci髇:"; + "uniones e interfaces con una breve descripci贸n:"; } } @@ -270,11 +270,11 @@ class TranslatorSpanish : public Translator { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - result+="la documentaci髇 de la estructura/uni髇 para cada campo:"; + result+="la documentaci贸n de la estructura/uni贸n para cada campo:"; } else { - result+="la documentaci髇 de la clase para cada miembro:"; + result+="la documentaci贸n de la clase para cada miembro:"; } } else @@ -308,7 +308,7 @@ class TranslatorSpanish : public Translator if (extractAll) result+="a los ficheros a los que corresponden:"; else - result+="a la documentaci髇:"; + result+="a la documentaci贸n:"; return result; } @@ -318,29 +318,29 @@ class TranslatorSpanish : public Translator /*! This is an introduction to the page with the list of related pages */ virtual QCString trRelatedPagesDescription() - { return "Lista de toda la documentaci髇 relacionada:"; } + { return "Lista de toda la documentaci贸n relacionada:"; } /*! This is an introduction to the page with the list of class/file groups */ virtual QCString trModulesDescription() - { return "Lista de todos los m骴ulos:"; } + { return "Lista de todos los m贸dulos:"; } // index titles (the project name is prepended for these) /*! This is used in HTML as the title of index.html. */ virtual QCString trDocumentation() - { return "Documentaci髇"; } + { return "Documentaci贸n"; } /*! This is used in LaTeX as the title of the chapter with the * index of all groups. */ virtual QCString trModuleIndex() - { return "Indice de m骴ulos"; } + { return "Indice de m贸dulos"; } /*! This is used in LaTeX as the title of the chapter with the * class hierarchy. */ virtual QCString trHierarchicalIndex() - { return "Indice jer醨quico"; } + { return "Indice jer谩rquico"; } /*! This is used in LaTeX as the title of the chapter with the * annotated compound index. @@ -349,11 +349,11 @@ class TranslatorSpanish : public Translator { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "蚽dice de estructura de datos"; + return "脥ndice de estructura de datos"; } else { - return "蚽dice de clases"; + return "脥ndice de clases"; } } @@ -367,7 +367,7 @@ class TranslatorSpanish : public Translator * the documentation of all groups. */ virtual QCString trModuleDocumentation() - { return "Documentaci髇 de m骴ulos"; } + { return "Documentaci贸n de m贸dulos"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all classes, structs and unions. @@ -376,11 +376,11 @@ class TranslatorSpanish : public Translator { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "Documentaci髇 de las estructuras de datos"; + return "Documentaci贸n de las estructuras de datos"; } else { - return "Documentaci髇 de las clases"; + return "Documentaci贸n de las clases"; } } @@ -388,19 +388,19 @@ class TranslatorSpanish : public Translator * the documentation of all files. */ virtual QCString trFileDocumentation() - { return "Documentaci髇 de archivos"; } + { return "Documentaci贸n de archivos"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all examples. */ virtual QCString trExampleDocumentation() - { return "Documentaci髇 de ejemplos"; } + { return "Documentaci贸n de ejemplos"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all related pages. */ virtual QCString trPageDocumentation() - { return "Documentaci髇 de p醙inas"; } + { return "Documentaci贸n de p谩ginas"; } /*! This is used in LaTeX as the title of the document */ virtual QCString trReferenceManual() @@ -452,37 +452,37 @@ class TranslatorSpanish : public Translator * documentation blocks for defines */ virtual QCString trDefineDocumentation() - { return "Documentaci髇 de los 'defines'"; } + { return "Documentaci贸n de los 'defines'"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for function prototypes */ virtual QCString trFunctionPrototypeDocumentation() - { return "Documentaci髇 de las funciones prototipo"; } + { return "Documentaci贸n de las funciones prototipo"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for typedefs */ virtual QCString trTypedefDocumentation() - { return "Documentaci髇 de los 'typedefs'"; } + { return "Documentaci贸n de los 'typedefs'"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration types */ virtual QCString trEnumerationTypeDocumentation() - { return "Documentaci髇 de las enumeraciones"; } + { return "Documentaci贸n de las enumeraciones"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for functions */ virtual QCString trFunctionDocumentation() - { return "Documentaci髇 de las funciones"; } + { return "Documentaci贸n de las funciones"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for variables */ virtual QCString trVariableDocumentation() - { return "Documentaci髇 de las variables"; } + { return "Documentaci贸n de las variables"; } /*! This is used in the documentation of a file/namespace/group before * the list of links to documented compounds @@ -525,15 +525,15 @@ class TranslatorSpanish : public Translator /*! this text is generated when the \\internal command is used. */ virtual QCString trForInternalUseOnly() - { return "S髄o para uso interno."; } + { return "S贸lo para uso interno."; } /*! this text is generated when the \\warning command is used. */ virtual QCString trWarning() - { return "Atenci髇"; } + { return "Atenci贸n"; } /*! this text is generated when the \\version command is used. */ virtual QCString trVersion() - { return "Versi髇"; } + { return "Versi贸n"; } /*! this text is generated when the \\date command is used. */ virtual QCString trDate() @@ -545,11 +545,11 @@ class TranslatorSpanish : public Translator /*! this text is generated when the \\sa command is used. */ virtual QCString trSeeAlso() - { return "Ver tambi閚"; } + { return "Ver tambi茅n"; } /*! this text is generated when the \\param command is used. */ virtual QCString trParameters() - { return "Par醡etros"; } + { return "Par谩metros"; } /*! this text is generated when the \\exception command is used. */ virtual QCString trExceptions() @@ -571,8 +571,8 @@ class TranslatorSpanish : public Translator virtual QCString trNamespaceListDescription(bool extractAll) { QCString result="Lista de "; - if (!extractAll) result+="toda la documentaci髇 de "; - result+="los 'namespaces', con una breve descripci髇:"; + if (!extractAll) result+="toda la documentaci贸n de "; + result+="los 'namespaces', con una breve descripci贸n:"; return result; } @@ -590,7 +590,7 @@ class TranslatorSpanish : public Translator * related classes */ virtual QCString trRelatedFunctionDocumentation() - { return "Documentaci髇 de las funciones relacionadas y clases amigas"; } + { return "Documentaci贸n de las funciones relacionadas y clases amigas"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990425 @@ -607,11 +607,11 @@ class TranslatorSpanish : public Translator { case ClassDef::Class: result+=" la Clase "; break; case ClassDef::Struct: result+=" la Estructura "; break; - case ClassDef::Union: result+=" la Uni髇 "; 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 Categoria "; break; - case ClassDef::Exception: result+=" la Excepci髇 "; break; + case ClassDef::Exception: result+=" la Excepci贸n "; break; } result+=(QCString)clName; return result; @@ -634,34 +634,34 @@ class TranslatorSpanish : public Translator } virtual QCString trPublicMembers() - { return "M閠odos p鷅licos"; } + { return "M茅todos p煤blicos"; } virtual QCString trPublicSlots() - { return "Slots p鷅licos"; } + { return "Slots p煤blicos"; } virtual QCString trSignals() - { return "Se馻les"; } + { return "Se帽ales"; } virtual QCString trStaticPublicMembers() - { return "M閠odos p鷅licos est醫icos"; } + { return "M茅todos p煤blicos est谩ticos"; } virtual QCString trProtectedMembers() - { return "M閠odos protegidos"; } + { return "M茅todos protegidos"; } virtual QCString trProtectedSlots() { return "Slots protegidos"; } virtual QCString trStaticProtectedMembers() - { return "M閠odos protegidos est醫icos"; } + { return "M茅todos protegidos est谩ticos"; } virtual QCString trPrivateMembers() - { return "M閠odos privados"; } + { return "M茅todos privados"; } virtual QCString trPrivateSlots() { return "Slots privados"; } virtual QCString trStaticPrivateMembers() - { return "M閠odos privados est醫icos"; } + { return "M茅todos privados est谩ticos"; } /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -728,12 +728,12 @@ class TranslatorSpanish : public Translator virtual QCString trNamespaceMemberDescription(bool extractAll) { QCString result="Lista de "; - if (!extractAll) result+="toda la documentaci髇 de "; + if (!extractAll) result+="toda la documentaci贸n de "; result+="los miembros del namespace con enlace a "; if (extractAll) result+="los namespace de cada miembro:"; else - result+="la documentaci髇 de los namespaces pertenecientes a:"; + result+="la documentaci贸n de los namespaces pertenecientes a:"; return result; } /*! This is used in LaTeX as the title of the chapter with the @@ -746,7 +746,7 @@ class TranslatorSpanish : public Translator * the documentation of all namespaces. */ virtual QCString trNamespaceDocumentation() - { return "Documentaci髇 de namespaces"; } + { return "Documentaci贸n de namespaces"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990522 @@ -769,16 +769,16 @@ class TranslatorSpanish : public Translator bool single) { // here s is one of " Class", " Struct" or " Union" // single is true implies a single file - QCString result=(QCString)"La documentaci髇 para est"; + QCString result=(QCString)"La documentaci贸n para est"; switch(compType) { case ClassDef::Class: result+="a clase"; break; case ClassDef::Struct: result+="a estructura"; break; - case ClassDef::Union: result+="a uni髇"; 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韆"; break; - case ClassDef::Exception: result+="a excepci髇"; break; + case ClassDef::Category: result+="a categor铆a"; break; + case ClassDef::Exception: result+="a excepci贸n"; break; } result+=" fue generada a partir de"; if (single) result+="l siguiente fichero:"; @@ -790,7 +790,7 @@ class TranslatorSpanish : public Translator * list. */ virtual QCString trAlphabeticalList() - { return "Lista alfab閠ica"; } + { return "Lista alfab茅tica"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990901 @@ -803,7 +803,7 @@ class TranslatorSpanish : public Translator /*! This is in the (quick) index as a link to the main page (index.html) */ virtual QCString trMainPage() - { return "P醙ina principal"; } + { return "P谩gina principal"; } /*! This is used in references to page that are put in the LaTeX * documentation. It should be an abbreviation of the word page. @@ -817,11 +817,11 @@ class TranslatorSpanish : public Translator virtual QCString trDefinedAtLineInSourceFile() { - return "Definici髇 en la l韓ea @0 del archivo @1."; + return "Definici贸n en la l铆nea @0 del archivo @1."; } virtual QCString trDefinedInSourceFile() { - return "Definici髇 en el archivo @0."; + return "Definici贸n en el archivo @0."; } ////////////////////////////////////////////////////////////////////////// @@ -840,43 +840,43 @@ class TranslatorSpanish : public Translator /*! this text is put before a collaboration diagram */ virtual QCString trCollaborationDiagram(const char *clName) { - return (QCString)"Diagrama de colaboraci髇 para "+clName+":"; + return (QCString)"Diagrama de colaboraci贸n para "+clName+":"; } /*! this text is put before an include dependency graph */ virtual QCString trInclDepGraph(const char *fName) { - return (QCString)"Dependencia gr醘ica adjunta para "+fName+":"; + return (QCString)"Dependencia gr谩fica adjunta para "+fName+":"; } /*! header that is put before the list of constructor/destructors. */ virtual QCString trConstructorDocumentation() { - return "Documentaci髇 del constructor y destructor"; + return "Documentaci贸n del constructor y destructor"; } /*! Used in the file documentation to point to the corresponding sources. */ virtual QCString trGotoSourceCode() { - return "Ir al c骴igo fuente de este archivo."; + return "Ir al c贸digo fuente de este archivo."; } /*! Used in the file sources to point to the corresponding documentation. */ virtual QCString trGotoDocumentation() { - return "Ir a la documentaci髇 de este archivo."; + return "Ir a la documentaci贸n de este archivo."; } /*! Text for the \\pre command */ virtual QCString trPrecondition() { - return "Precondici髇"; + return "Precondici贸n"; } /*! Text for the \\post command */ virtual QCString trPostcondition() { - return "Postcondici髇"; + return "Postcondici贸n"; } /*! Text for the \\invariant command */ @@ -894,27 +894,27 @@ class TranslatorSpanish : public Translator /*! Text used the source code in the file index */ virtual QCString trCode() { - return "c骴igo"; + return "c贸digo"; } virtual QCString trGraphicalHierarchy() { - return "Representaci髇 gr醘ica de la clase"; + return "Representaci贸n gr谩fica de la clase"; } virtual QCString trGotoGraphicalHierarchy() { - return "Ir a la representaci髇 gr醘ica de la jerarqu韆 de la clase"; + return "Ir a la representaci贸n gr谩fica de la jerarqu铆a de la clase"; } virtual QCString trGotoTextualHierarchy() { - return "Ir a la jerarqu韆 textual de la clase"; + return "Ir a la jerarqu铆a textual de la clase"; } virtual QCString trPageIndex() { - return "P醙ina indice"; + return "P谩gina indice"; } ////////////////////////////////////////////////////////////////////////// @@ -928,7 +928,7 @@ class TranslatorSpanish : public Translator virtual QCString trPublicTypes() { - return "Tipos p鷅licos"; + return "Tipos p煤blicos"; } virtual QCString trPublicAttribs() @@ -939,13 +939,13 @@ class TranslatorSpanish : public Translator } else { - return "Atributos p鷅licos"; + return "Atributos p煤blicos"; } } virtual QCString trStaticPublicAttribs() { - return "Atributos p鷅licos est醫icos"; + return "Atributos p煤blicos est谩ticos"; } virtual QCString trProtectedTypes() @@ -960,7 +960,7 @@ class TranslatorSpanish : public Translator virtual QCString trStaticProtectedAttribs() { - return "Atributos protegidos est醫icos"; + return "Atributos protegidos est谩ticos"; } virtual QCString trPrivateTypes() @@ -975,7 +975,7 @@ class TranslatorSpanish : public Translator virtual QCString trStaticPrivateAttribs() { - return "Atributos privados est醫icos"; + return "Atributos privados est谩ticos"; } ////////////////////////////////////////////////////////////////////////// @@ -1010,12 +1010,12 @@ class TranslatorSpanish : public Translator virtual QCString trAttention() { - return "Atenci髇"; + return "Atenci贸n"; } virtual QCString trInclByDepGraph() { - return "Gr醘ico de los archivos que directa o " + return "Gr谩fico de los archivos que directa o " "indirectamente incluyen a este archivo:"; } @@ -1031,7 +1031,7 @@ class TranslatorSpanish : public Translator /*! title of the graph legend page */ QCString trLegendTitle() { - return "Colores y flechas del Gr醘ico"; + return "Colores y flechas del Gr谩fico"; } /*! page explaining how the dot graph's should be interpreted @@ -1040,13 +1040,13 @@ class TranslatorSpanish : public Translator virtual QCString trLegendDocs() { return - "Esta p醙ina explica como interpretar los gr醘icos que son generados " + "Esta p谩gina explica como interpretar los gr谩ficos que son generados " "por doxygen.<p>\n" "Considere el siguiente ejemplo:\n" "\\code\n" "/*! Clase invisible por truncamiento */\n" "class Invisible { };\n\n" - "/*! Clase truncada, relaci髇 de herencia escondida */\n" + "/*! Clase truncada, relaci贸n de herencia escondida */\n" "class Truncated : public Invisible { };\n\n" "/* Clase no documentada con comentarios de doxygen */\n" "class Undocumented { };\n\n" @@ -1071,31 +1071,31 @@ class TranslatorSpanish : public Translator " Used *m_usedClass;\n" "};\n" "\\endcode\n" - "Si la etiqueta \\c MAX_DOT_GRAPH_HEIGHT en el archivo de configuraci髇 " - "tiene valor 240 resultar en el siguiente gr醘ico:" + "Si la etiqueta \\c MAX_DOT_GRAPH_HEIGHT en el archivo de configuraci贸n " + "tiene valor 240 resultar谩 en el siguiente gr谩fico:" "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" "<p>\n" - "Las cajas en el gr醘ico arriba tienen el siguiente significado:\n" + "Las cajas en el gr谩fico arriba tienen el siguiente significado:\n" "<ul>\n" - "<li>Una caja llena negra representa la estructura o clase para la cu醠" - "se gener el gr醘ico.\n" - "<li>Una caja con borde negro se馻la una estructura o clase documentada.\n" - "<li>Una caja con borde griz se馻la una estructura o clase no documentada.\n" - "<li>una caja con borde rojo se馻la una estructura o clase documentada" - " de la cu醠 no toda las relaciones de jerarqu韆/contenido son " - "mostradas. El gr醘ico sera truncado si este no calza dentro de los " - "l韒ites especificados." + "<li>Una caja llena negra representa la estructura o clase para la cu谩l" + "se gener贸 el gr谩fico.\n" + "<li>Una caja con borde negro se帽ala una estructura o clase documentada.\n" + "<li>Una caja con borde griz se帽ala una estructura o clase no documentada.\n" + "<li>una caja con borde rojo se帽ala una estructura o clase documentada" + " de la cu谩l no toda las relaciones de jerarqu铆a/contenido son " + "mostradas. El gr谩fico sera truncado si este no calza dentro de los " + "l铆mites especificados." "</ul>\n" "Las flechas tienen el siguiente significado:\n" "<ul>\n" - "<li>Una flecha azul oscuro es usada para visualizar una relaci髇 herencia publica entre dos clases.\n" + "<li>Una flecha azul oscuro es usada para visualizar una relaci贸n herencia publica entre dos clases.\n" "<li>Una flecha verde oscuro es usada para herencia protegida.\n" "<li>Una flecha rojo oscuro es usada para herencia privada.\n" - "<li>Una flecha segmentada p鷕pura se usa si la clase es contenida o " - "usada por otra clase. La flecha est etiquetada por la variable " + "<li>Una flecha segmentada p煤rpura se usa si la clase es contenida o " + "usada por otra clase. La flecha est谩 etiquetada por la variable " "con que se accede a la clase o estructura apuntada. \n" - "<li>Una flecha segmentada amarilla indica la relaci髇 entre una instancia template y la clase template de la que se ha instanciado." - " La flecha se etiqueta con los par醡etros con que se llama al template.\n" + "<li>Una flecha segmentada amarilla indica la relaci贸n entre una instancia template y la clase template de la que se ha instanciado." + " La flecha se etiqueta con los par谩metros con que se llama al template.\n" "</ul>\n"; } @@ -1128,7 +1128,7 @@ class TranslatorSpanish : public Translator /*! Used as a section header for KDE-2 IDL methods */ virtual QCString trDCOPMethods() { - return "M閠odos DCOP"; + return "M茅todos DCOP"; } ////////////////////////////////////////////////////////////////////////// @@ -1144,7 +1144,7 @@ class TranslatorSpanish : public Translator /*! Used as a section header for IDL property documentation */ virtual QCString trPropertyDocumentation() { - return "Documentaci髇 de propiedades"; + return "Documentaci贸n de propiedades"; } ////////////////////////////////////////////////////////////////////////// @@ -1179,7 +1179,7 @@ class TranslatorSpanish : public Translator /*! The description of the package index page */ virtual QCString trPackageListDescription() { - return "Aqu van los paquetes con una breve descripci髇 (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 */ @@ -1256,7 +1256,7 @@ class TranslatorSpanish : public Translator /*! Used as header RTF general index */ virtual QCString trRTFGeneralIndex() { - return "蚽dice"; + return "脥ndice"; } /*! This is used for translation of the word that will possibly @@ -1309,7 +1309,7 @@ class TranslatorSpanish : public Translator */ virtual QCString trPage(bool first_capital, bool singular) { - QCString result((first_capital ? "P醙ina" : "p醙ina")); + QCString result((first_capital ? "P谩gina" : "p谩gina")); if (!singular) result+="s"; return result; } @@ -1419,7 +1419,7 @@ class TranslatorSpanish : public Translator /*! Header used for the documentation section of a class' events. */ virtual QCString trEventDocumentation() { - return "Documentaci髇 de los eventos"; + return "Documentaci贸n de los eventos"; } ////////////////////////////////////////////////////////////////////////// @@ -1446,7 +1446,7 @@ class TranslatorSpanish : public Translator */ virtual QCString trStaticPackageMembers() { - return "Funciones est醫icas del 'package'"; + return "Funciones est谩ticas del 'package'"; } /*! Used as a heading for a list of Java class variables with package @@ -1462,7 +1462,7 @@ class TranslatorSpanish : public Translator */ virtual QCString trStaticPackageAttribs() { - return "Atributos Est醫icos del 'package'"; + return "Atributos Est谩ticos del 'package'"; } ////////////////////////////////////////////////////////////////////////// @@ -1480,7 +1480,7 @@ class TranslatorSpanish : public Translator /*! Put in front of the call graph for a function. */ virtual QCString trCallGraph() { - return "Gr醘ico de llamadas para esta funci髇:"; + return "Gr谩fico de llamadas para esta funci贸n:"; } ////////////////////////////////////////////////////////////////////////// @@ -1501,7 +1501,7 @@ class TranslatorSpanish : public Translator */ virtual QCString trSearchResultsTitle() { - return "Resultados de la B鷖queda"; + return "Resultados de la B煤squeda"; } /*! This string is put just before listing the search results. The @@ -1516,15 +1516,15 @@ class TranslatorSpanish : public Translator { if (numDocuments==0) { - return "Disculpe, no se encontraron documentos que coincidan con su b鷖queda."; + return "Disculpe, no se encontraron documentos que coincidan con su b煤squeda."; } else if (numDocuments==1) { - return "Se encontr <b>1</b> documento que coincide con su b鷖queda."; + return "Se encontr贸 <b>1</b> documento que coincide con su b煤squeda."; } else { - return "Se encontraron <b>$num</b> documentos que coinciden con su b鷖queda. " + return "Se encontraron <b>$num</b> documentos que coinciden con su b煤squeda. " "Se muestran los mejores resultados primero."; } } @@ -1556,13 +1556,13 @@ class TranslatorSpanish : public Translator * hierarchy. */ virtual QCString trDirIndex() - { return "Jerarqu韆 de directorios"; } + { return "Jerarqu铆a de directorios"; } /*! This is used as the name of the chapter containing the documentation * of the directories. */ virtual QCString trDirDocumentation() - { return "Documentaci髇 de directorios"; } + { return "Documentaci贸n de directorios"; } /*! This is used as the title of the directory index and also in the * Quick links of an HTML page, to link to the directory hierarchy. @@ -1574,8 +1574,8 @@ class TranslatorSpanish : public Translator * and the fact that it is sorted alphabetically per level */ virtual QCString trDirDescription() - { return "La jeraqu韆 de este directorio est ordenada" - " alfab閠icamente, de manera aproximada:"; + { return "La jeraqu铆a de este directorio est谩 ordenada" + " alfab茅ticamente, de manera aproximada:"; } /*! This returns the title of a directory page. The name of the @@ -1607,9 +1607,9 @@ class TranslatorSpanish : public Translator */ virtual QCString trOverloadText() { - return "Esta es una funci髇 miembro sobrecargada que se " + return "Esta es una funci贸n miembro sobrecargada que se " "suministra por conveniencia. Difiere de la anterior " - "funci髇 solamente en los argumentos que acepta."; + "funci贸n solamente en los argumentos que acepta."; } ////////////////////////////////////////////////////////////////////////// @@ -1619,28 +1619,28 @@ class TranslatorSpanish : public Translator /*! This is used to introduce a caller (or called-by) graph */ virtual QCString trCallerGraph() { - return "Gr醘ico de llamadas a esta funci髇:"; + return "Gr谩fico de llamadas a esta funci贸n:"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration values */ virtual QCString trEnumerationValueDocumentation() - { return "Documentaci髇 de los valores de la enumeraci髇"; } + { 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駉s. Por lo tanto, las traducciones son del ingl閟 - // al espa駉l, no de un usuario de Fortran que puede que haya cosas que no + // 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髇. + // 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髇 de miembros Function/Subroutine"; } + { 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() @@ -1652,12 +1652,12 @@ class TranslatorSpanish : public Translator /*! This is an introduction to the annotated compound list (Fortran). */ virtual QCString trCompoundListDescriptionFortran() - { return "Aqu est醤 los tipos de datos con una breve descripci髇:"; } + { 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 "; + QCString result="Aqu铆 est谩 una lista de todos "; result+="los miembros de los tipos de datos "; if (!extractAll) { @@ -1666,7 +1666,7 @@ class TranslatorSpanish : public Translator result+="con enlaces a "; if (!extractAll) { - result+="la documentaci髇 de la estructura de datos para cada miembro"; + result+="la documentaci贸n de la estructura de datos para cada miembro"; } else { @@ -1679,13 +1679,13 @@ class TranslatorSpanish : public Translator * annotated compound index (Fortran). */ virtual QCString trCompoundIndexFortran() - { return "蚽dice de tipos de datos"; } + { 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髇 de tipos de datos"; } + { 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). @@ -1697,7 +1697,7 @@ class TranslatorSpanish : public Translator * of documentation blocks for subprograms (Fortran) */ virtual QCString trSubprogramDocumentation() - { return "Documentaci髇 de Funciones/Subprogramas"; } + { 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) @@ -1707,14 +1707,14 @@ class TranslatorSpanish : public Translator /*! used as the title of page containing all the index of all modules (Fortran). */ virtual QCString trModulesList() - { return "Lista de m骴ulos"; } + { 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骴ulos "; + QCString result="Lista de todos los m贸dulos "; if (!extractAll) result+="documentados "; - result+="con una breve descripci髇:"; + result+="con una breve descripci贸n:"; return result; } @@ -1727,13 +1727,13 @@ class TranslatorSpanish : public Translator if (isTemplate) result+=" la plantilla de"; switch(compType) { - case ClassDef::Class: result+="l m骴ulo"; break; + case ClassDef::Class: result+="l m贸dulo"; break; case ClassDef::Struct: result+="l tipo"; break; - case ClassDef::Union: result+=" la uni髇"; 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韆"; break; - case ClassDef::Exception: result+=" la excepci髇"; break; + case ClassDef::Category: result+=" la categor铆a"; break; + case ClassDef::Exception: result+=" la excepci贸n"; break; } result+=(QCString)clName; return result; @@ -1742,28 +1742,28 @@ class TranslatorSpanish : public Translator /*! used as the title of the HTML page of a module (Fortran) */ virtual QCString trModuleReference(const char *namespaceName) { - QCString result="Referencia m骴ulo "; + 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骴ulo"; } + { 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骴ulo "; + QCString result="Lista de todos los miembros del m贸dulo "; if (!extractAll) result+="documentados "; result+="con enlaces "; if (extractAll) { - result+="a la documentaci髇 del m骴ulo para cada uno:"; + result+="a la documentaci贸n del m贸dulo para cada uno:"; } else { - result+="al m骴ulo al que pertenecen:"; + result+="al m贸dulo al que pertenecen:"; } return result; } @@ -1772,7 +1772,7 @@ class TranslatorSpanish : public Translator * index of all modules (Fortran). */ virtual QCString trModulesIndex() - { return "蚽dice de m骴ulos"; } + { 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 @@ -1780,7 +1780,7 @@ class TranslatorSpanish : public Translator */ virtual QCString trModule(bool first_capital, bool singular) { - QCString result((first_capital ? "M骴ulo" : "m骴ulo")); + QCString result((first_capital ? "M贸dulo" : "m贸dulo")); if (!singular) result+="s"; return result; } @@ -1792,16 +1792,16 @@ class TranslatorSpanish : public Translator bool single) { // here s is one of " Module", " Struct" or " Union" // single is true implies a single file - QCString result=(QCString)"La documentaci髇 para est"; + QCString result=(QCString)"La documentaci贸n para est"; switch(compType) { - case ClassDef::Class: result+="e m骴ulo"; break; + case ClassDef::Class: result+="e m贸dulo"; break; case ClassDef::Struct: result+="e tipo"; break; - case ClassDef::Union: result+="a uni髇"; 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韆"; break; - case ClassDef::Exception: result+="a excepci髇"; 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:"; @@ -1844,7 +1844,7 @@ class TranslatorSpanish : public Translator /*! directory relation for \a name */ virtual QCString trDirRelation(const char *name) { - return QCString(name)+" relaci髇"; + return QCString(name)+" relaci贸n"; } /*! Loading message shown when loading search results */ @@ -1878,7 +1878,7 @@ class TranslatorSpanish : public Translator /*! introduction text for the directory dependency graph */ virtual QCString trDirDependency(const char *name) { - return (QCString)"Gr醘ico de dependencias para el directorio "+name; + return (QCString)"Gr谩fico de dependencias para el directorio "+name; } /*! when clicking a directory dependency label, a page with a @@ -1913,8 +1913,8 @@ class TranslatorSpanish : public Translator int hour,int minutes,int seconds, bool includeTime) { - static const char *days[] = { "Lunes","Martes","Mi閞coles","Jueves", - "Viernes","S醔ado","Domingo" }; + static const char *days[] = { "Lunes","Martes","Mi茅rcoles","Jueves", + "Viernes","S谩bado","Domingo" }; static const char *months[] = { "Enero","Febrero","Marzo","Abril", "Mayo","Junio","Julio","Agosto", "Septiembre","Octubre","Noviembre","Diciembre" }; |