From 4ad0d24c5b3a0afd99722ae5c33968ff9fa44e2d Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Wed, 28 Jul 2010 19:05:01 +0000 Subject: Release-1.7.1-20100728 --- Doxyfile | 9 +- INSTALL | 4 +- README | 4 +- configure | 4 +- doc/commands.doc | 24 +++- doc/config.doc | 2 +- doc/doxygen_manual.tex | 3 +- doc/install.doc | 1 + doc/language.doc | 6 +- doc/starting.doc | 16 ++- doc/translator_report.txt | 24 +--- qtools/qstring.cpp | 9 +- qtools/qstring.h | 16 ++- src/classdef.cpp | 30 +++-- src/classlist.cpp | 4 + src/code.l | 5 +- src/commentscan.l | 10 +- src/config.l | 6 +- src/config.xml | 18 +-- src/configoptions.cpp | 18 +-- src/defargs.l | 2 +- src/definition.cpp | 14 +- src/dirdef.cpp | 6 +- src/docsets.cpp | 5 +- src/docsets.h | 6 +- src/doctokenizer.l | 2 +- src/dot.cpp | 43 ++++++- src/dot.h | 11 ++ src/doxygen.cpp | 21 ++- src/doxygen.css | 12 +- src/doxygen_css.h | 12 +- src/eclipsehelp.cpp | 3 +- src/eclipsehelp.h | 3 +- src/ftvhelp.cpp | 2 +- src/ftvhelp.h | 2 +- src/groupdef.cpp | 2 +- src/htmldocvisitor.cpp | 8 +- src/htmlgen.cpp | 50 +++---- src/htmlhelp.cpp | 6 +- src/htmlhelp.h | 3 +- src/index.cpp | 25 ++-- src/index.h | 15 ++- src/lang_cfg.h | 2 + src/lodepng.h | 4 +- src/memberdef.cpp | 19 ++- src/membergroup.cpp | 5 +- src/pagedef.cpp | 2 +- src/pre.l | 65 +++++++++- src/pycode.l | 4 + src/pyscanner.l | 112 +++++++++------- src/qhp.cpp | 15 +-- src/qhp.h | 6 +- src/scanner.l | 50 +++++-- src/search.js | 2 +- src/search.php | 2 +- src/search_js.h | 2 +- src/search_php.h | 2 +- src/translator_es.h | 322 +++++++++++++++++++++++----------------------- 58 files changed, 657 insertions(+), 423 deletions(-) diff --git a/Doxyfile b/Doxyfile index def6ede..6c2dbac 100644 --- a/Doxyfile +++ b/Doxyfile @@ -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 = diff --git a/INSTALL b/INSTALL index fae334f..ee08aea 100644 --- a/INSTALL +++ b/INSTALL @@ -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) diff --git a/README b/README index 715c7d5..679c4f0 100644 --- a/README +++ b/README @@ -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) diff --git a/configure b/configure index 0b0fd75..afb6fa3 100755 --- a/configure +++ b/configure @@ -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".
+\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. + +
\section cmdextends \\extends \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.
\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. Turkish Emin Ilker Cetinbas niw3 at yahoo dot com - 1.6.0 + up-to-date Ukrainian @@ -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 Helpers page +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: 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("+ "); + ol.writeString("+ "); else - ol.writeString("- "); + ol.writeString("- "); } else ol.writeString(""); @@ -1793,9 +1799,9 @@ void ClassDef::writeMemberList(OutputList &ol) if (md->isObjCMethod()) { if (md->isStatic()) - ol.writeString("+ "); + ol.writeString("+ "); else - ol.writeString("- "); + ol.writeString("- "); } else ol.writeString(""); @@ -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 { diff --git a/src/code.l b/src/code.l index ba24ea2..ddc6763 100644 --- a/src/code.l +++ b/src/code.l @@ -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} } {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; } {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$]+"$" "" << endl) if (Config_getBool("HTML_ALIGN_MEMBERS")) { - t << " "; + t << " "; } else { @@ -1791,7 +1793,7 @@ void HtmlGenerator::startMemberSubtitle() void HtmlGenerator::endMemberSubtitle() { DBG_HTML(t << "" << endl) - if (Config_getBool("HTML_ALIGN_MEMBERS")) t << "

" << endl; + if (Config_getBool("HTML_ALIGN_MEMBERS")) t << "
" << endl; } void HtmlGenerator::startIndexList() @@ -1918,7 +1920,7 @@ void HtmlGenerator::startParameterType(bool first,const char *key) void HtmlGenerator::endParameterType() { DBG_HTML(t << "" << endl;) - t << " " << endl; + t << " " << endl; } void HtmlGenerator::startParameterName(bool /*oneArgOnly*/) @@ -1936,13 +1938,13 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket) { t << "" << endl; t << " "; - if (closeBracket) t << " )"; - t << " " << endl; + if (closeBracket) t << " )"; + t << " " << endl; t << " "; } else { - t << " " << endl; + t << " " << endl; t << " " << endl; t << " " << endl; t << " " << 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"; t << " \n"; t << " \n"; - t << " \n"; + t << " \n"; if (!highlightSearch) { t << " \n"; @@ -2543,7 +2545,7 @@ void HtmlGenerator::writeSearchPage() } else { - t << " \n
\n"; + t << " \n
\n"; t << "
\n"; } @@ -2684,7 +2686,7 @@ void HtmlGenerator::endConstraintParam() void HtmlGenerator::startConstraintType() { - t << "
 :"; + t << " :"; } void HtmlGenerator::endConstraintType() @@ -2694,7 +2696,7 @@ void HtmlGenerator::endConstraintType() void HtmlGenerator::startConstraintDocs() { - t << " "; + t << " "; } 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)"" + @@ -1362,9 +1362,9 @@ void writeAlphabeticalClassList(OutputList &ol) ol.writeString("\">"); ol.writeString("" "" - "" "" "
  "); + "
  "); ol.writeString(s); - ol.writeString( "  
" + ol.writeString( "  " "
\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 << "" - << " " + << " " << convertToXML(map.categoryLabel[i]) << ""; 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 + void foreach(void (IndexIntf::*methodPtr)(A1,A2,A3),A1 a1,A2 a2,A3 a3) + { + QListIterator li(m_intfs); + for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1,a2,a3); + } + template 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 (&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 - (&IndexIntf::addIndexItem,context,md,anchor,word); } + (&IndexIntf::addIndexItem,context,md,title); } void addIndexFile(const char *name) { foreach(&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(""); //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(""); + 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) diff --git a/src/pre.l b/src/pre.l index c171af0..60446df 100644 --- a/src/pre.l +++ b/src/pre.l @@ -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}"'")) } . { } -{ID}/"(" { // define with argument +{ID}/("\\\n")*"(" { // define with argument //printf("Define() `%s'\n",yytext); g_argDict = new QDict(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); } {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; } +"\\\n" { + g_defExtraSpacing+="\n"; + g_yyLineNr++; + } ","{B}* { g_defArgsStr+=yytext; } "("{B}* { g_defArgsStr+=yytext; } {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}"##"/[^#] { - ^{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. + } } { @@ -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, // 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, diff --git a/src/qhp.h b/src/qhp.h index 1ba2e94..e5b4a08 100644 --- a/src/qhp.h +++ b/src/qhp.h @@ -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}+)?) } } [*&]+ { - current->name += yytext ; + if (current->type.stripWhiteSpace().right(1)!=yytext) + { + current->name += yytext ; + } addType( current ); } ";"{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}+)?) . { current->program += yytext ; } "("/{BN}*"::"*{BN}*({TSCOPE}{BN}*"::")*{TSCOPE}{BN}*")"{BN}*"(" | /* typedef void (A::func_t)(args...) */ -("("({BN}*"::"*{BN}*{TSCOPE}{BN}*"::")*({BN}*[*&]{BN}*)+)+ { /* typedef void (A::*ptr_t)(args...) or int (*func(int))[] */ +("("({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
\n"; + echo " \n
\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
\\n\";\n" +" echo \" \\n
\\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ón detallada"; } + { return "Descripción detallada"; } /*! header that is put before the list of typedefs. */ virtual QCString trMemberTypedefDocumentation() - { return "Documentación 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ón 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ón 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ón de los campos"; + return "Documentación de los campos"; } else { - return "Documentación 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ás..."; } + { 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áticamente por Doxygen"; + { QCString result="Generado automáticamente por Doxygen"; if (s) result+=(QCString)" para "+s; - result+=" del código 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ón"; } + { 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ódulos"; } + { return "Módulos"; } /*! This is put above each page as a link to the class hierarchy */ virtual QCString trClassHierarchy() - { return "Jerarquía 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áginas 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ético:"; + "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ón:"; + return "Lista de estructuras con una breve descripción:"; } else { return "Lista de las clases, estructuras, " - "uniones e interfaces con una breve descripción:"; + "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ón de la estructura/unión para cada campo:"; + result+="la documentación de la estructura/unión para cada campo:"; } else { - result+="la documentación 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ón:"; + 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ón 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ódulos:"; } + { 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ón"; } + { 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ódulos"; } + { 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árquico"; } + { 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 "Índice de estructura de datos"; + return "Ãndice de estructura de datos"; } else { - return "Índice de clases"; + return "Ãndice de clases"; } } @@ -367,7 +367,7 @@ class TranslatorSpanish : public Translator * the documentation of all groups. */ virtual QCString trModuleDocumentation() - { return "Documentación de módulos"; } + { 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ón de las estructuras de datos"; + return "Documentación de las estructuras de datos"; } else { - return "Documentación 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ón 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ón 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ón de páginas"; } + { 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ón 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ón 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ón 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ón 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ón 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ón 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ólo para uso interno."; } + { return "Sólo para uso interno."; } /*! this text is generated when the \\warning command is used. */ virtual QCString trWarning() - { return "Atención"; } + { return "Atención"; } /*! this text is generated when the \\version command is used. */ virtual QCString trVersion() - { return "Versión"; } + { 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én"; } + { return "Ver también"; } /*! this text is generated when the \\param command is used. */ virtual QCString trParameters() - { return "Parámetros"; } + { 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ón de "; - result+="los 'namespaces', con una breve descripción:"; + 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ón 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ón "; 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ón "; 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étodos públicos"; } + { return "Métodos públicos"; } virtual QCString trPublicSlots() - { return "Slots públicos"; } + { return "Slots públicos"; } virtual QCString trSignals() - { return "Señales"; } + { return "Señales"; } virtual QCString trStaticPublicMembers() - { return "Métodos públicos estáticos"; } + { return "Métodos públicos estáticos"; } virtual QCString trProtectedMembers() - { return "Métodos protegidos"; } + { return "Métodos protegidos"; } virtual QCString trProtectedSlots() { return "Slots protegidos"; } virtual QCString trStaticProtectedMembers() - { return "Métodos protegidos estáticos"; } + { return "Métodos protegidos estáticos"; } virtual QCString trPrivateMembers() - { return "Métodos privados"; } + { return "Métodos privados"; } virtual QCString trPrivateSlots() { return "Slots privados"; } virtual QCString trStaticPrivateMembers() - { return "Métodos privados estáticos"; } + { 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ón 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ón 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ón 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ón 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ón"; break; + case ClassDef::Union: result+="a unión"; break; case ClassDef::Interface: result+="e interfaz"; break; case ClassDef::Protocol: result+="e protocolo"; break; - case ClassDef::Category: result+="a categoría"; break; - case ClassDef::Exception: result+="a excepción"; break; + 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ética"; } + { 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ágina 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ón en la línea @0 del archivo @1."; + return "Definición en la línea @0 del archivo @1."; } virtual QCString trDefinedInSourceFile() { - return "Definición 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ón 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áfica 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ón 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ódigo fuente de este archivo."; + return "Ir al código fuente de este archivo."; } /*! Used in the file sources to point to the corresponding documentation. */ virtual QCString trGotoDocumentation() { - return "Ir a la documentación de este archivo."; + return "Ir a la documentación de este archivo."; } /*! Text for the \\pre command */ virtual QCString trPrecondition() { - return "Precondición"; + return "Precondición"; } /*! Text for the \\post command */ virtual QCString trPostcondition() { - return "Postcondición"; + 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ódigo"; + return "código"; } virtual QCString trGraphicalHierarchy() { - return "Representación gráfica de la clase"; + return "Representación gráfica de la clase"; } virtual QCString trGotoGraphicalHierarchy() { - return "Ir a la representación gráfica de la jerarquía de la clase"; + return "Ir a la representación gráfica de la jerarquía de la clase"; } virtual QCString trGotoTextualHierarchy() { - return "Ir a la jerarquía textual de la clase"; + return "Ir a la jerarquía textual de la clase"; } virtual QCString trPageIndex() { - return "Página indice"; + return "Página indice"; } ////////////////////////////////////////////////////////////////////////// @@ -928,7 +928,7 @@ class TranslatorSpanish : public Translator virtual QCString trPublicTypes() { - return "Tipos públicos"; + return "Tipos públicos"; } virtual QCString trPublicAttribs() @@ -939,13 +939,13 @@ class TranslatorSpanish : public Translator } else { - return "Atributos públicos"; + return "Atributos públicos"; } } virtual QCString trStaticPublicAttribs() { - return "Atributos públicos estáticos"; + return "Atributos públicos estáticos"; } virtual QCString trProtectedTypes() @@ -960,7 +960,7 @@ class TranslatorSpanish : public Translator virtual QCString trStaticProtectedAttribs() { - return "Atributos protegidos estáticos"; + return "Atributos protegidos estáticos"; } virtual QCString trPrivateTypes() @@ -975,7 +975,7 @@ class TranslatorSpanish : public Translator virtual QCString trStaticPrivateAttribs() { - return "Atributos privados estáticos"; + return "Atributos privados estáticos"; } ////////////////////////////////////////////////////////////////////////// @@ -1010,12 +1010,12 @@ class TranslatorSpanish : public Translator virtual QCString trAttention() { - return "Atención"; + return "Atención"; } virtual QCString trInclByDepGraph() { - return "Gráfico 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áfico"; + 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ágina explica como interpretar los gráficos que son generados " + "Esta página explica como interpretar los gráficos que son generados " "por doxygen.

\n" "Considere el siguiente ejemplo:\n" "\\code\n" "/*! Clase invisible por truncamiento */\n" "class Invisible { };\n\n" - "/*! Clase truncada, relación 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ón " - "tiene valor 240 resultará en el siguiente gráfico:" + "Si la etiqueta \\c MAX_DOT_GRAPH_HEIGHT en el archivo de configuración " + "tiene valor 240 resultará en el siguiente gráfico:" "

\"\"
\n" "

\n" - "Las cajas en el gráfico arriba tienen el siguiente significado:\n" + "Las cajas en el gráfico arriba tienen el siguiente significado:\n" "

    \n" - "
  • Una caja llena negra representa la estructura o clase para la cuál" - "se generó el gráfico.\n" - "
  • Una caja con borde negro señala una estructura o clase documentada.\n" - "
  • Una caja con borde griz señala una estructura o clase no documentada.\n" - "
  • 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." + "
  • Una caja llena negra representa la estructura o clase para la cuál" + "se generó el gráfico.\n" + "
  • Una caja con borde negro señala una estructura o clase documentada.\n" + "
  • Una caja con borde griz señala una estructura o clase no documentada.\n" + "
  • 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." "
\n" "Las flechas tienen el siguiente significado:\n" "
    \n" - "
  • Una flecha azul oscuro es usada para visualizar una relación herencia publica entre dos clases.\n" + "
  • Una flecha azul oscuro es usada para visualizar una relación herencia publica entre dos clases.\n" "
  • Una flecha verde oscuro es usada para herencia protegida.\n" "
  • Una flecha rojo oscuro es usada para herencia privada.\n" - "
  • Una flecha segmentada púrpura se usa si la clase es contenida o " - "usada por otra clase. La flecha está etiquetada por la variable " + "
  • 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" - "
  • 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" + "
  • 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" "
\n"; } @@ -1128,7 +1128,7 @@ class TranslatorSpanish : public Translator /*! Used as a section header for KDE-2 IDL methods */ virtual QCString trDCOPMethods() { - return "Métodos 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ón 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ón (si etá disponible):"; + return "Aquí van los paquetes con una breve descripción (si etá disponible):"; } /*! The link name in the Quick links header for each page */ @@ -1256,7 +1256,7 @@ class TranslatorSpanish : public Translator /*! Used as header RTF general index */ virtual QCString trRTFGeneralIndex() { - return "Índice"; + 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ágina" : "página")); + 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ón de los eventos"; + return "Documentación de los eventos"; } ////////////////////////////////////////////////////////////////////////// @@ -1446,7 +1446,7 @@ class TranslatorSpanish : public Translator */ virtual QCString trStaticPackageMembers() { - return "Funciones estáticas 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áticos 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áfico de llamadas para esta función:"; + 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úsqueda"; + 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úsqueda."; + return "Disculpe, no se encontraron documentos que coincidan con su búsqueda."; } else if (numDocuments==1) { - return "Se encontró 1 documento que coincide con su búsqueda."; + return "Se encontró 1 documento que coincide con su búsqueda."; } else { - return "Se encontraron $num documentos que coinciden con su búsqueda. " + return "Se encontraron $num 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ía 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ón 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ía de este directorio está ordenada" - " alfabéticamente, 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ón miembro sobrecargada que se " + return "Esta es una función miembro sobrecargada que se " "suministra por conveniencia. Difiere de la anterior " - "función 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áfico de llamadas a esta función:"; + 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ón de los valores de la enumeración"; } + { return "Documentación de los valores de la enumeración"; } ////////////////////////////////////////////////////////////////////////// // new since 1.5.4 (mainly for Fortran) ////////////////////////////////////////////////////////////////////////// // De parte de Bartomeu: // No conozco el Fortran, salvo un par de ejercicios en la universidad - // hace muchos años. Por lo tanto, las traducciones son del inglés - // al español, no de un usuario de Fortran que puede que haya cosas que no + // hace muchos años. Por lo tanto, las traducciones son del inglés + // al español, no de un usuario de Fortran que puede que haya cosas que no // traduzca o traduzca de otra forma. Que los usuarios de Fortran disculpen - // y espero se animen a mejorar mi traducción. + // y espero se animen a mejorar mi traducción. /*! header that is put before the list of member subprograms (Fortran). */ virtual QCString trMemberFunctionDocumentationFortran() - { return "Documetación de miembros Function/Subroutine"; } + { 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án los tipos de datos con una breve descripción:"; } + { 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ón 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 "Índice 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ón 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ón 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ódulos"; } + { return "Lista de módulos"; } /*! used as an introduction to the modules list (Fortran) */ virtual QCString trModulesListDescription(bool extractAll) { - QCString result="Lista de todos los módulos "; + QCString result="Lista de todos los módulos "; if (!extractAll) result+="documentados "; - result+="con una breve descripción:"; + 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ódulo"; break; + case ClassDef::Class: result+="l módulo"; break; case ClassDef::Struct: result+="l tipo"; break; - case ClassDef::Union: result+=" la unión"; break; + case ClassDef::Union: result+=" la unión"; break; case ClassDef::Interface: result+=" la interfaz"; break; case ClassDef::Protocol: result+="l protocolo"; break; - case ClassDef::Category: result+=" la categoría"; break; - case ClassDef::Exception: result+=" la excepción"; break; + 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ódulo "; + QCString result="Referencia módulo "; result+=namespaceName; return result; } /*! This is put above each page as a link to all members of modules. (Fortran) */ virtual QCString trModulesMembers() - { return "Miembros módulo"; } + { return "Miembros módulo"; } /*! This is an introduction to the page with all modules members (Fortran) */ virtual QCString trModulesMemberDescription(bool extractAll) { - QCString result="Lista de todos los miembros del módulo "; + QCString result="Lista de todos los miembros del módulo "; if (!extractAll) result+="documentados "; result+="con enlaces "; if (extractAll) { - result+="a la documentación del módulo para cada uno:"; + result+="a la documentación del módulo para cada uno:"; } else { - result+="al módulo 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 "Índice de módulos"; } + { 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ódulo" : "módulo")); + 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ón para est"; + QCString result=(QCString)"La documentación para est"; switch(compType) { - case ClassDef::Class: result+="e módulo"; break; + case ClassDef::Class: result+="e módulo"; break; case ClassDef::Struct: result+="e tipo"; break; - case ClassDef::Union: result+="a unión"; break; + case ClassDef::Union: result+="a unión"; break; case ClassDef::Interface: result+="e interfaz"; break; case ClassDef::Protocol: result+="e protocolo"; break; - case ClassDef::Category: result+="a categoría"; break; - case ClassDef::Exception: result+="a excepción"; break; + 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ón"; + 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áfico 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ércoles","Jueves", - "Viernes","Sábado","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" }; -- cgit v0.12