From 44904635bc78fae2ce60fc942cc5b7cba9958a34 Mon Sep 17 00:00:00 2001 From: dimitri Date: Mon, 16 May 2005 10:07:22 +0000 Subject: Release-1.4.3 --- INSTALL | 4 +- README | 4 +- VERSION | 2 +- configure | 2 +- doc/config.doc | 14 ++- doc/language.doc | 14 +-- doc/translator_report.txt | 92 ++------------ src/classdef.cpp | 4 +- src/classdef.h | 1 + src/code.l | 2 +- src/commentscan.l | 5 +- src/config.l | 3 +- src/definition.cpp | 6 +- src/doctokenizer.l | 2 +- src/doxygen.cpp | 202 +++++++++++++++++-------------- src/htags.cpp | 2 +- src/latexdocvisitor.cpp | 5 +- src/latexgen.cpp | 5 +- src/memberdef.cpp | 29 +++-- src/memberdef.h | 1 + src/scanner.l | 2 +- src/translator_ca.h | 69 +++-------- src/translator_de.h | 62 +--------- src/translator_lt.h | 138 +++++++++++---------- src/translator_pl.h | 20 ++- src/util.cpp | 107 +++++++++++----- src/util.h | 2 +- tmake/lib/m68k-atari-mint-g++/tmake.conf | 4 +- 28 files changed, 387 insertions(+), 416 deletions(-) diff --git a/INSTALL b/INSTALL index a5f9286..2a6428d 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.4.2-20050508 +DOXYGEN Version 1.4.3 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (08 May 2005) +Dimitri van Heesch (16 May 2005) diff --git a/README b/README index 6fb98a7..afa60db 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.4.2_20050508 +DOXYGEN Version 1.4.3 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) (08 May 2005) +Dimitri van Heesch (dimitri@stack.nl) (16 May 2005) diff --git a/VERSION b/VERSION index 25ee7fd..428b770 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.4.2-20050508 +1.4.3 diff --git a/configure b/configure index 0781e41..055e759 100755 --- a/configure +++ b/configure @@ -1,4 +1,4 @@ -#! /bin/bash +#! /bin/sh # # $Id$ # diff --git a/doc/config.doc b/doc/config.doc index f27f4a3..9a16a7b 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -914,7 +914,19 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn" If the \c USE_HTAGS tag is set to \c YES then the references to source code will point to the HTML generated by the htags(1) tool instead of doxygen built-in source browser. The htags tool is part of GNU's global source - tagging system (see http://www.gnu.org/software/global/global.html) + tagging system (see http://www.gnu.org/software/global/global.html). + The use it do the following: + + -# Install the latest version of global (i.e. 4.8.6 or better) + -# Enable SOURCE_BROWSER and USE_HTAGS in the config file + -# Make sure the INPUT points to the root of the source tree + -# Run doxygen as normal + + Doxygen will invoke htags (and that will in turn invoke gtags), so these tools + must be available from the command line (i.e. in the search path). + + The result: instead of the source browser generated by doxygen, the links to + source code will now point to the output of htags. diff --git a/doc/language.doc b/doc/language.doc index 5f9eeb3..4af2938 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.4.2-20050508), 31 languages +Currently (version 1.4.3), 31 languages are supported (sorted alphabetically): Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French, @@ -66,7 +66,7 @@ when the translator was updated. Catalan Maximiliano Pin
Albert Mora mcpin at emtesistemas dot com
amora at iua dot upf dot es - 1.4.1 + up-to-date Chinese @@ -180,7 +180,7 @@ when the translator was updated. Lithuanian Tomas Simonaitis
Mindaugas Radzius
Aidas Berukstis haden at homelan dot lt
mindaugasradzius at takas dot lt
aidasber at takas dot lt - 1.3.8 + up-to-date Norwegian @@ -192,7 +192,7 @@ when the translator was updated. Polish Piotr Kaminski
Grzegorz Kowal Piotr.Kaminski at ctm dot gdynia dot pl
g_kowal at poczta dot onet dot pl - 1.4.1 + up-to-date Portuguese @@ -267,7 +267,7 @@ when the translator was updated. \hline Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & up-to-date \\ \hline - Catalan & Maximiliano Pin & {\tt\tiny mcpin@emtesistemas.com} & 1.4.1 \\ + Catalan & Maximiliano Pin & {\tt\tiny mcpin@emtesistemas.com} & up-to-date \\ ~ & Albert Mora & {\tt\tiny amora@iua.upf.es} & ~ \\ \hline Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & 1.4.1 \\ @@ -313,13 +313,13 @@ when the translator was updated. \hline KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\ \hline - Lithuanian & Tomas Simonaitis & {\tt\tiny haden@homelan.lt} & 1.3.8 \\ + Lithuanian & Tomas Simonaitis & {\tt\tiny haden@homelan.lt} & up-to-date \\ ~ & Mindaugas Radzius & {\tt\tiny mindaugasradzius@takas.lt} & ~ \\ ~ & Aidas Berukstis & {\tt\tiny aidasber@takas.lt} & ~ \\ \hline Norwegian & Lars Erik Jordet & {\tt\tiny lejordet@gmail.com} & 1.3.9 \\ \hline - Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & 1.4.1 \\ + Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & up-to-date \\ ~ & Grzegorz Kowal & {\tt\tiny g\_kowal@poczta.onet.pl} & ~ \\ \hline Portuguese & Rui Godinho Lopes & {\tt\tiny ruiglopes@yahoo.com} & 1.3.3 \\ diff --git a/doc/translator_report.txt b/doc/translator_report.txt index e34f853..c1957bc 100644 --- a/doc/translator_report.txt +++ b/doc/translator_report.txt @@ -1,4 +1,4 @@ -(1.4.2-20050508) +(1.4.3) Doxygen supports the following 31 languages (sorted alphabetically): @@ -8,7 +8,7 @@ German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean (+En), Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. -Of them, 13 translators are up-to-date, 18 translators are based on +Of them, 16 translators are up-to-date, 15 translators are based on some adapter class, and 2 are English based. ---------------------------------------------------------------------- @@ -19,15 +19,18 @@ still may be some details listed even for them: TranslatorAfrikaans TranslatorBrazilian -- Remove the obsolete methods (never used). + TranslatorCatalan TranslatorCroatian TranslatorCzech TranslatorDutch -- Remove the obsolete methods (never used). TranslatorEnglish -- Remove the obsolete methods (never used). - TranslatorGerman -- Remove the obsolete methods (never used). + TranslatorGerman TranslatorHungarian TranslatorIndonesian -- Remove the obsolete methods (never used). TranslatorItalian TranslatorKorean + TranslatorLithuanian + TranslatorPolish -- Remove the obsolete methods (never used). TranslatorRussian TranslatorSwedish @@ -40,15 +43,12 @@ must be implemented to become up-to-date: TranslatorUkrainian 1.4.1 1 method to implement TranslatorSerbian 1.4.1 1 method to implement TranslatorRomanian 1.4.1 1 method to implement - TranslatorPolish 1.4.1 1 method to implement TranslatorFrench 1.4.1 1 method to implement TranslatorChinese 1.4.1 1 method to implement - TranslatorCatalan 1.4.1 1 method to implement TranslatorNorwegian 1.3.9 7 methods to implement TranslatorJapanese 1.3.9 7 methods to implement TranslatorDanish 1.3.9 7 methods to implement TranslatorSpanish 1.3.8 8 methods to implement - TranslatorLithuanian 1.3.8 8 methods to implement TranslatorChinesetraditional 1.3.8 8 methods to implement TranslatorPortuguese 1.3.3 12 methods to implement TranslatorSlovak 1.2.18 21 methods to implement @@ -89,29 +89,6 @@ TranslatorBrazilian (Translator) virtual QCString trNoDescriptionAvailable() -TranslatorCatalan (TranslatorAdapter_1_4_1) 1 method to implement ------------------ - - Implements 191 of the required methods. - - Missing methods (should be implemented): - - virtual QCString trOverloadText() - - Obsolete methods (should be removed, never used): - - virtual QCString trHeaderFilesDescription() - virtual QCString trField(bool first_capital, bool singular) - virtual QCString trPackageDocumentation() - virtual QCString trSources() - virtual QCString trReimplementedForInternalReasons() - virtual QCString trInterfaces() - virtual QCString trHeaderFiles() - virtual QCString trBugsAndLimitations() - virtual QCString trEnumerationValueDocumentation() - virtual QCString trNoDescriptionAvailable() - - TranslatorChinese (TranslatorAdapter_1_4_1) 1 method to implement ----------------- @@ -358,25 +335,6 @@ TranslatorFrench (TranslatorAdapter_1_4_1) 1 method to implement virtual QCString trNoDescriptionAvailable() -TranslatorGerman (Translator) ----------------- - - Implements 192 of the required methods. - - Obsolete methods (should be removed, never used): - - virtual QCString trHeaderFilesDescription() - virtual QCString trField(bool, bool singular) - virtual QCString trPackageDocumentation() - virtual QCString trSources() - virtual QCString trReimplementedForInternalReasons() - virtual QCString trInterfaces() - virtual QCString trHeaderFiles() - virtual QCString trBugsAndLimitations() - virtual QCString trEnumerationValueDocumentation() - virtual QCString trNoDescriptionAvailable() - - TranslatorGreek (TranslatorAdapter_1_2_11) 26 methods to implement --------------- @@ -501,36 +459,6 @@ TranslatorKoreanEn (TranslatorEnglish) 187 methods to implement virtual QCString latexLanguageSupportCommand() -TranslatorLithuanian (TranslatorAdapter_1_3_8) 8 methods to implement --------------------- - - Implements 184 of the required methods. - - Missing methods (should be implemented): - - virtual QCString trOverloadText() - virtual QCString trDirIndex() - virtual QCString trDirDocumentation() - virtual QCString trDirectories() - virtual QCString trDirDescription() - virtual QCString trSourceFile(QCString & filename) - virtual QCString trDirReference(const char * dirName) - virtual QCString trDir(bool first_capital, bool singular) - - Obsolete methods (should be removed, never used): - - virtual QCString trHeaderFilesDescription() - virtual QCString trField(bool first_capital, bool singular) - virtual QCString trPackageDocumentation() - virtual QCString trSources() - virtual QCString trReimplementedForInternalReasons() - virtual QCString trInterfaces() - virtual QCString trHeaderFiles() - virtual QCString trBugsAndLimitations() - virtual QCString trEnumerationValueDocumentation() - virtual QCString trNoDescriptionAvailable() - - TranslatorNorwegian (TranslatorAdapter_1_3_9) 7 methods to implement ------------------- @@ -560,14 +488,10 @@ TranslatorNorwegian (TranslatorAdapter_1_3_9) 7 methods to implement virtual QCString trNoDescriptionAvailable() -TranslatorPolish (TranslatorAdapter_1_4_1) 1 method to implement +TranslatorPolish (Translator) ---------------- - Implements 191 of the required methods. - - Missing methods (should be implemented): - - virtual QCString trOverloadText() + Implements 192 of the required methods. Obsolete methods (should be removed, never used): diff --git a/src/classdef.cpp b/src/classdef.cpp index 4aed1ee..dd419bb 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -876,7 +876,7 @@ void ClassDef::writeDetailedDescription(OutputList &ol, const QCString &pageType { if ((!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) || !documentation().isEmpty() || - /*(Config_getBool("SOURCE_BROWSER") && startBodyLine!=-1 && bodyDef) ||*/ + (Config_getBool("SOURCE_BROWSER") && getStartBodyLine()!=-1 && getBodyDef()) || exampleFlag) { ol.writeRuler(); @@ -2455,7 +2455,7 @@ void ClassDef::determineImplUsageRelation() QCString usedClassName; QCString templSpec; bool found=FALSE; - while (extractClassNameFromType(type,pos,usedClassName,templSpec) && !found) + while (extractClassNameFromType(type,pos,usedClassName,templSpec)!=-1 && !found) { //printf("usedClassName=`%s' templSpec=%s\n",usedClassName.data(),templSpec.data()); // check if usedClassName is a template argument of its class diff --git a/src/classdef.h b/src/classdef.h index 81d7bf2..ce572ee 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -305,6 +305,7 @@ class ClassDef : public Definition void setIsStatic(bool b) { m_isStatic=b; } void setIsObjectiveC(bool b) { m_isObjC=b; } void addListReferences(); + void setCompoundType(CompoundType t) { m_compType = t; } /*! Creates a new compound definition. * \param fileName full path and file name in which this compound was diff --git a/src/code.l b/src/code.l index d0e0902..6f2c874 100644 --- a/src/code.l +++ b/src/code.l @@ -627,7 +627,7 @@ static ClassDef *stripClassName(const char *s) QCString type = s; QCString className; QCString templSpec; - while (extractClassNameFromType(type,pos,className,templSpec)) + while (extractClassNameFromType(type,pos,className,templSpec)!=-1) { QCString clName=className+templSpec; ClassDef *cd=0; diff --git a/src/commentscan.l b/src/commentscan.l index e8f3725..31a7c52 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -501,10 +501,10 @@ static void checkFormula(); static void prependScope() { +#if 0 Entry *current_root = current->parent; if (current_root && current_root->section & Entry::SCOPE_MASK) { - //printf("--- prependScope %s to %s\n",current_root->name.data(),current->name.data()); current->name.prepend(current_root->name+"::"); if (current_root->tArgLists) { @@ -513,7 +513,6 @@ static void prependScope() current->tArgLists = new QList; current->tArgLists->setAutoDelete(TRUE); } - //printf("prependScope #=%d #current=%d\n",current_root->tArgLists->count(),current->tArgLists->count()); QListIterator talsi(*current_root->tArgLists); ArgumentList *srcAl=0; for (talsi.toLast();(srcAl=talsi.current());--talsi) @@ -525,12 +524,12 @@ static void prependScope() for (;(a=tali.current());++tali) { dstAl->append(new Argument(*a)); - //printf("appending argument %s %s\n",a->type.data(),a->name.data()); } current->tArgLists->insert(0,dstAl); } } } +#endif } static void addSection() diff --git a/src/config.l b/src/config.l index 43bfb32..bfe0e13 100644 --- a/src/config.l +++ b/src/config.l @@ -1940,7 +1940,8 @@ void Config::create() "If the USE_HTAGS tag is set to YES then the references to source code \n" "will point to the HTML generated by the htags(1) tool instead of doxygen \n" "built-in source browser. The htags tool is part of GNU's global source \n" - "tagging system (see http://www.gnu.org/software/global/global.html) \n", + "tagging system (see http://www.gnu.org/software/global/global.html). You \n" + "will need version 4.8.6 or higher. \n", FALSE ); cb->addDependency("SOURCE_BROWSER"); diff --git a/src/definition.cpp b/src/definition.cpp index 635302d..b9d7104 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -369,7 +369,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *) { QCString lineStr,anchorStr; lineStr.sprintf("%d",m_startBodyLine); - anchorStr.sprintf(Htags::useHtags ? "%d" : "l%05d",m_startBodyLine); + anchorStr.sprintf(Htags::useHtags ? "L%d" : "l%05d",m_startBodyLine); ol.newParagraph(); if (lineMarkerPos[A-Z_a-z0-9.:/#\-\+]+ { +[A-Z_a-z0-9.:/#\-\+\(\)]+ { g_token->name = yytext; return TK_WORD; } diff --git a/src/doxygen.cpp b/src/doxygen.cpp index d49e706..9b493d4 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -640,6 +640,40 @@ ArgumentList *getTemplateArgumentsFromName( return ali.current(); } +static ClassDef::CompoundType convertToCompoundType(int section) +{ + ClassDef::CompoundType sec=ClassDef::Class; + switch(section) + { + case Entry::UNION_SEC: + case Entry::UNIONDOC_SEC: + sec=ClassDef::Union; + break; + case Entry::STRUCT_SEC: + case Entry::STRUCTDOC_SEC: + sec=ClassDef::Struct; + break; + case Entry::INTERFACE_SEC: + case Entry::INTERFACEDOC_SEC: + sec=ClassDef::Interface; + break; + case Entry::PROTOCOL_SEC: + case Entry::PROTOCOLDOC_SEC: + sec=ClassDef::Protocol; + break; + case Entry::CATEGORY_SEC: + case Entry::CATEGORYDOC_SEC: + sec=ClassDef::Category; + break; + case Entry::EXCEPTION_SEC: + case Entry::EXCEPTIONDOC_SEC: + sec=ClassDef::Exception; + break; + } + return sec; +} + + static void addClassToContext(Entry *root) { // QCString fullName=removeRedundantWhiteSpace(root->name); @@ -667,13 +701,9 @@ static void addClassToContext(Entry *root) // see if the using statement was found inside a namespace or inside // the global file scope. QCString scName; - if (root->parent->section == Entry::NAMESPACE_SEC) + if (root->parent->section&Entry::SCOPE_MASK) { scName=root->parent->name; - // if (!scName.isEmpty()) - // { - // nd = getResolvedNamespace(scName); - // } } QCString fullName = root->name; @@ -681,8 +711,8 @@ static void addClassToContext(Entry *root) ClassDef *cd = getClass(qualifiedName); - Debug::print(Debug::Classes,0, " Found class with name %s (cd=%p)\n", - cd ? cd->name().data() : root->name.data(), cd); + Debug::print(Debug::Classes,0, " Found class with name %s (qualifiedName=%s -> cd=%p)\n", + cd ? cd->name().data() : root->name.data(), qualifiedName.data(),cd); if (cd) { @@ -740,38 +770,12 @@ static void addClassToContext(Entry *root) getTemplateArgumentsFromName(cd->name(),root->tArgLists); cd->setTemplateArguments(tArgList); } + + cd->setCompoundType(convertToCompoundType(root->section)); } else // new class { - - ClassDef::CompoundType sec=ClassDef::Class; - switch(root->section) - { - case Entry::UNION_SEC: - case Entry::UNIONDOC_SEC: - sec=ClassDef::Union; - break; - case Entry::STRUCT_SEC: - case Entry::STRUCTDOC_SEC: - sec=ClassDef::Struct; - break; - case Entry::INTERFACE_SEC: - case Entry::INTERFACEDOC_SEC: - sec=ClassDef::Interface; - break; - case Entry::PROTOCOL_SEC: - case Entry::PROTOCOLDOC_SEC: - sec=ClassDef::Protocol; - break; - case Entry::CATEGORY_SEC: - case Entry::CATEGORYDOC_SEC: - sec=ClassDef::Category; - break; - case Entry::EXCEPTION_SEC: - case Entry::EXCEPTIONDOC_SEC: - sec=ClassDef::Exception; - break; - } + ClassDef::CompoundType sec = convertToCompoundType(root->section); Debug::print(Debug::Classes,0," New class `%s' (sec=0x%08x)! #tArgLists=%d\n", fullName.data(),root->section,root->tArgLists ? (int)root->tArgLists->count() : -1); QCString className; @@ -3194,7 +3198,7 @@ static void findUsedClassesForClass(Entry *root, type = substituteTemplateArgumentsInString(type,formalArgs,actualArgs); } //printf(" template substitution gives=%s\n",type.data()); - while (!found && extractClassNameFromType(type,pos,usedClassName,templSpec)) + while (!found && extractClassNameFromType(type,pos,usedClassName,templSpec)!=-1) { //printf(" found used class %s\n",usedClassName.data()); // the name could be a type definition, resolve it @@ -3326,47 +3330,42 @@ static void findBaseClassesForClass( BaseInfo *bi=0; for (bii.toFirst();(bi=bii.current());++bii) { - //printf("masterCd=%s bi->name=%s\n",masterCd->localName().data(),bi->name.data()); - //if ( masterCd->localName()!=bi->name.left(masterCd->localName().length()) - // || bi->name.at(masterCd->localName().length())!='<' - // ) // to avoid recursive lock-up in cases like - // // template class A : public A - //{ - bool delTempNames=FALSE; - if (templateNames==0) - { - templateNames = getTemplateArgumentsInName(formalArgs,bi->name); - delTempNames=TRUE; - } - BaseInfo tbi(bi->name,bi->prot,bi->virt); - if (actualArgs) // substitute the formal template arguments of the base class - { - tbi.name = substituteTemplateArgumentsInString(bi->name,formalArgs,actualArgs); - } - //printf("bi->name=%s tbi.name=%s\n",bi->name.data(),tbi.name.data()); + //printf("masterCd=%s bi->name=%s #actualArgs=%d\n", + // masterCd->localName().data(),bi->name.data(),actualArgs?(int)actualArgs->count():-1); + bool delTempNames=FALSE; + if (templateNames==0) + { + templateNames = getTemplateArgumentsInName(formalArgs,bi->name); + delTempNames=TRUE; + } + BaseInfo tbi(bi->name,bi->prot,bi->virt); + if (actualArgs) // substitute the formal template arguments of the base class + { + tbi.name = substituteTemplateArgumentsInString(bi->name,formalArgs,actualArgs); + } + //printf("bi->name=%s tbi.name=%s\n",bi->name.data(),tbi.name.data()); - if (mode==DocumentedOnly) + if (mode==DocumentedOnly) + { + // find a documented base class in the correct scope + if (!findClassRelation(root,context,instanceCd,&tbi,templateNames,DocumentedOnly,isArtificial)) { - // find a documented base class in the correct scope - if (!findClassRelation(root,context,instanceCd,&tbi,templateNames,DocumentedOnly,isArtificial)) + if (!Config_getBool("HIDE_UNDOC_RELATIONS")) { - if (!Config_getBool("HIDE_UNDOC_RELATIONS")) - { - // no documented base class -> try to find an undocumented one - findClassRelation(root,context,instanceCd,&tbi,templateNames,Undocumented,isArtificial); - } + // no documented base class -> try to find an undocumented one + findClassRelation(root,context,instanceCd,&tbi,templateNames,Undocumented,isArtificial); } } - else if (mode==TemplateInstances) - { - findClassRelation(root,context,instanceCd,&tbi,templateNames,TemplateInstances,isArtificial); - } - if (delTempNames) - { - delete templateNames; - templateNames=0; - } - //} + } + else if (mode==TemplateInstances) + { + findClassRelation(root,context,instanceCd,&tbi,templateNames,TemplateInstances,isArtificial); + } + if (delTempNames) + { + delete templateNames; + templateNames=0; + } } } @@ -3413,7 +3412,8 @@ static bool findTemplateInstanceRelation(Entry *root, Entry *templateRoot = classEntries.find(templateClass->name()); if (templateRoot) { - Debug::print(Debug::Classes,0," template root found %s!\n",templateRoot->name.data()); + Debug::print(Debug::Classes,0," template root found %s templSpec=%s!\n", + templateRoot->name.data(),templSpec.data()); ArgumentList *templArgs = new ArgumentList; stringToArgumentList(templSpec,templArgs); findBaseClassesForClass(templateRoot,context,templateClass,instanceClass, @@ -3644,10 +3644,14 @@ static bool findClassRelation( } else { - baseClass=new ClassDef(root->fileName,root->startLine, - baseClassName,ClassDef::Class); - Doxygen::classSDict.append(baseClassName,baseClass); - if (isArtificial) baseClass->setClassIsArtificial(); + baseClass=Doxygen::classSDict.find(baseClassName); + if (baseClass==0) + { + baseClass=new ClassDef(root->fileName,root->startLine, + baseClassName,ClassDef::Class); + Doxygen::classSDict.append(baseClassName,baseClass); + if (isArtificial) baseClass->setClassIsArtificial(); + } } // add base class to this class cd->insertBaseClass(baseClass,biName,bi->prot,bi->virt,templSpec); @@ -4432,33 +4436,28 @@ static void findMember(Entry *root, do { done=TRUE; - if (funcDecl.left(7)=="friend ") // treat friends as related members + if (funcDecl.stripPrefix("friend ")) // treat friends as related members { - funcDecl=funcDecl.right(funcDecl.length()-7); isFriend=TRUE; done=FALSE; } - if (funcDecl.left(7)=="inline ") + if (funcDecl.stripPrefix("inline ")) { - funcDecl=funcDecl.right(funcDecl.length()-7); root->memSpec|=Entry::Inline; done=FALSE; } - if (funcDecl.left(9)=="explicit ") + if (funcDecl.stripPrefix("explicit ")) { - funcDecl=funcDecl.right(funcDecl.length()-9); root->memSpec|=Entry::Explicit; done=FALSE; } - if (funcDecl.left(8)=="mutable ") + if (funcDecl.stripPrefix("mutable ")) { - funcDecl=funcDecl.right(funcDecl.length()-8); root->memSpec|=Entry::Mutable; done=FALSE; } - if (funcDecl.left(8)=="virtual ") + if (funcDecl.stripPrefix("virtual ")) { - funcDecl=funcDecl.right(funcDecl.length()-7); done=FALSE; } } while (!done); @@ -4521,7 +4520,8 @@ static void findMember(Entry *root, if (root->relates.isEmpty() && root->parent && (root->parent->section&Entry::SCOPE_MASK) && - !root->parent->name.isEmpty()) + !root->parent->name.isEmpty()) // see if we can combine scopeName + // with the scope in which it was found { QCString joinedName = root->parent->name+"::"+scopeName; if (!scopeName.isEmpty() && @@ -4534,6 +4534,30 @@ static void findMember(Entry *root, scopeName = mergeScopes(root->parent->name,scopeName); } } + else // see if we can prefix a namespace or class that is used from the file + { + bool ambig; + FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig); + if (fd) + { + NamespaceSDict *fnl = fd->getUsedNamespaces(); + if (fnl) + { + QCString joinedName; + NamespaceDef *fnd; + NamespaceSDict::Iterator nsdi(*fnl); + for (nsdi.toFirst();(fnd=nsdi.current());++nsdi) + { + joinedName = fnd->name()+"::"+scopeName; + if (Doxygen::namespaceSDict[joinedName]) + { + scopeName=joinedName; + break; + } + } + } + } + } scopeName=stripTemplateSpecifiersFromScope( removeRedundantWhiteSpace(scopeName),FALSE,&funcSpec); diff --git a/src/htags.cpp b/src/htags.cpp index 681e5b8..56b0a2d 100644 --- a/src/htags.cpp +++ b/src/htags.cpp @@ -66,7 +66,7 @@ bool Htags::execute(const QCString &htmldir) /* * Construct command line for htags(1). */ - QCString commandLine = " -g -s -a -n"; + QCString commandLine = " -g -s -a -n "; if (!quiet) commandLine += "-v "; if (warnings) commandLine += "-w "; if (!htagsOptions.isEmpty()) diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp index 8cbefc0..719c357 100644 --- a/src/latexdocvisitor.cpp +++ b/src/latexdocvisitor.cpp @@ -124,8 +124,9 @@ void LatexDocVisitor::visit(DocSymbol *s) { case DocSymbol::BSlash: m_t << "$\\backslash$"; break; case DocSymbol::At: m_t << "@"; break; - case DocSymbol::Less: m_t << "$<$"; break; - case DocSymbol::Greater: m_t << "$>$"; break; + case DocSymbol::Less: if (m_insidePre) m_t << "<"; else m_t << "$<$"; + break; + case DocSymbol::Greater: if (m_insidePre) m_t << ">"; else m_t << "$>$"; break; case DocSymbol::Amp: m_t << "\\&"; break; case DocSymbol::Dollar: m_t << "\\$"; break; case DocSymbol::Hash: m_t << "\\#"; break; diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 90384ec..cf19c9b 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -229,9 +229,12 @@ static void writeDefaultHeaderPart1(QTextStream &t) "\\usepackage{alltt}\n" //"\\usepackage{ae,aecompl,aeguill}\n" ; - if (Config_getBool("PDF_HYPERLINKS")) + if (Config_getBool("USE_PDFLATEX")) { t << "\\usepackage{times}" << endl; + } + if (Config_getBool("PDF_HYPERLINKS")) + { t << "\\ifx\\pdfoutput\\undefined" << endl << "\\usepackage[ps2pdf," << endl << " pagebackref=true," << endl diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 36079fd..ee96ff1 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -1943,7 +1943,7 @@ void MemberDef::warnIfUndocumented() // d->isLinkable(),isLinkable(),isDocumentedFriendClass(), // name().data(),prot); if (!isLinkable() && - !isDocumentedFriendClass() && + !isFriendClass() && name().find('@')==-1 && d->name().find('@')==-1 && (prot!=Private || Config_getBool("EXTRACT_PRIVATE")) ) @@ -1960,13 +1960,21 @@ void MemberDef::warnIfUndocumented() // *enumDeclList+=ed; //} -bool MemberDef::isDocumentedFriendClass() const +bool MemberDef::isFriendClass() const { - ClassDef *fcd=0; return (isFriend() && (type=="friend class" || type=="friend struct" || - type=="friend union") && - (fcd=getClass(name())) && fcd->isLinkable()); + type=="friend union")); +} + +bool MemberDef::isDocumentedFriendClass() const +{ + ClassDef *fcd=0; + QCString baseName=name(); + int i=baseName.find('<'); + if (i!=-1) baseName=baseName.left(i); + return (isFriendClass() && + (fcd=getClass(baseName)) && fcd->isLinkable()); } bool MemberDef::hasDocumentation() const @@ -2125,6 +2133,7 @@ void MemberDef::addListReference(Definition *) } QCString memName = name(); Definition *pd=getOuterScope(); + QCString memArgs; if (!isRelated() && ( (!hideScopeNames && // there is a scope @@ -2135,19 +2144,25 @@ void MemberDef::addListReference(Definition *) ) ) { - if (optimizeOutputJava) + if (isObjCMethod()) + { + memName = "[" + pd->name() + " " + name() + "]"; + } + else if (optimizeOutputJava) { memName.prepend(pd->name()+"."); + memArgs = argsString(); } else { memName.prepend(pd->name()+"::"); + memArgs = argsString(); } } if (xrefListItems()) { addRefItem(xrefListItems(),memLabel, - getOutputFileBase()+"#"+anchor(),memName,argsString()); + getOutputFileBase()+"#"+anchor(),memName,memArgs); } else { diff --git a/src/memberdef.h b/src/memberdef.h index 6b5c3bf..70c69ac 100644 --- a/src/memberdef.h +++ b/src/memberdef.h @@ -156,6 +156,7 @@ class MemberDef : public Definition bool isBriefSectionVisible() const; bool isDetailedSectionVisible(bool inGroup,bool inFile) const; bool isDetailedSectionLinkable() const; + bool isFriendClass() const; bool isDocumentedFriendClass() const; // set functions diff --git a/src/scanner.l b/src/scanner.l index dfe8777..f56d880 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -2358,6 +2358,7 @@ IDLATTR ("["[^\]]*"]"){BN}* } } "}"{BN}+"typedef"{BN}+ { //err("ReadBody count=%d\n",curlyCount); + lineCount(); if ( curlyCount>0 ) { current->program += yytext ; @@ -2365,7 +2366,6 @@ IDLATTR ("["[^\]]*"]"){BN}* } else { - lineCount(); isTypedef = TRUE; current->endBodyLine = yyLineNr; QCString &cn = current->name; diff --git a/src/translator_ca.h b/src/translator_ca.h index 3980309..4676a6c 100644 --- a/src/translator_ca.h +++ b/src/translator_ca.h @@ -39,7 +39,7 @@ // Translator class (by the local maintainer) when the localized // translator is made up-to-date again. -class TranslatorCatalan : public TranslatorAdapter_1_4_1 +class TranslatorCatalan : public Translator { public: @@ -189,10 +189,6 @@ class TranslatorCatalan : public TranslatorAdapter_1_4_1 virtual QCString trFileList() { return "Llista dels Fitxers"; } - /*! This is put above each page as a link to the list of all verbatim headers */ - virtual QCString trHeaderFiles() - { return "Fitxers d'encapēalaments"; } - /*! This is put above each page as a link to all members of compounds. */ virtual QCString trCompoundMembers() { @@ -324,10 +320,6 @@ class TranslatorCatalan : public TranslatorAdapter_1_4_1 return result; } - /*! This is an introduction to the page with the list of all header files. */ - virtual QCString trHeaderFilesDescription() - { return "Aquests són els fitxers d'encapēalament que constitueixen l'API:"; } - /*! This is an introduction to the page with the list of all examples */ virtual QCString trExamplesDescription() { return "Aquesta és la llista de tots els exemples:"; } @@ -339,12 +331,6 @@ class TranslatorCatalan : public TranslatorAdapter_1_4_1 /*! This is an introduction to the page with the list of class/file groups */ virtual QCString trModulesDescription() { return "Aquesta és la llista de mņduls:"; } - - /*! This sentences is used in the annotated class/file lists if no brief - * description is given. - */ - virtual QCString trNoDescriptionAvailable() - { return "No hi ha cap descripció disponible"; } // index titles (the project name is prepended for these) @@ -496,12 +482,6 @@ class TranslatorCatalan : public TranslatorAdapter_1_4_1 { return "Documentació dels Tipus de les Enumeracions"; } /*! This is used in the documentation of a file/namespace before the list - * of documentation blocks for enumeration values - */ - virtual QCString trEnumerationValueDocumentation() - { return "Documentació dels Valors de les Enumeracions"; } - - /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for functions */ virtual QCString trFunctionDocumentation() @@ -555,18 +535,10 @@ class TranslatorCatalan : public TranslatorAdapter_1_4_1 virtual QCString trForInternalUseOnly() { return "Tan sols per a śs intern."; } - /*! this text is generated when the \\reimp command is used. */ - virtual QCString trReimplementedForInternalReasons() - { return "Reimplementat per raons internes; l'API no es veu afectada."; } - /*! this text is generated when the \\warning command is used. */ virtual QCString trWarning() { return "Atenció"; } - /*! this text is generated when the \\bug command is used. */ - virtual QCString trBugsAndLimitations() - { return "Errors i limitacions"; } - /*! this text is generated when the \\version command is used. */ virtual QCString trVersion() { return "Versió"; } @@ -845,10 +817,6 @@ class TranslatorCatalan : public TranslatorAdapter_1_4_1 // new since 0.49-991003 ////////////////////////////////////////////////////////////////////////// - virtual QCString trSources() - { - return "Codi Font"; - } virtual QCString trDefinedAtLineInSourceFile() { return "Definició a la lķnia @0 del fitxer @1."; @@ -1148,11 +1116,6 @@ class TranslatorCatalan : public TranslatorAdapter_1_4_1 // new since 1.2.4 ////////////////////////////////////////////////////////////////////////// - /*! Used for Java interfaces in the summary section of Java packages */ - virtual QCString trInterfaces() - { - return "Interfķcies"; - } /*! Used for Java classes in the summary section of Java packages */ virtual QCString trClasses() { @@ -1185,11 +1148,6 @@ class TranslatorCatalan : public TranslatorAdapter_1_4_1 { return "Paquets"; } - /*! Used as a chapter title for Latex & RTF output */ - virtual QCString trPackageDocumentation() - { - return "Documentació dels Paquets"; - } /*! Text shown before a multi-line define */ virtual QCString trDefineValue() { @@ -1330,17 +1288,6 @@ class TranslatorCatalan : public TranslatorAdapter_1_4_1 * be followed by a single name or by a list of names * of the category. */ - virtual QCString trField(bool first_capital, bool singular) - { - QCString result((first_capital ? "Camp" : "camp")); - if (!singular) result+="s"; - return result; - } - - /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names - * of the category. - */ virtual QCString trGlobal(bool first_capital, bool singular) { QCString result((first_capital ? "Global" : "global")); @@ -1596,6 +1543,20 @@ class TranslatorCatalan : public TranslatorAdapter_1_4_1 if (!singular) result+="s"; return result; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.4.1 +////////////////////////////////////////////////////////////////////////// + + /*! This text is added to the documentation when the \\overload command + * is used for a overloaded function. + */ + virtual QCString trOverloadText() + { + return "Aquesta és una funció membre sobrecarregada, " + "proveļda per conveničncia. Es diferencia de la funció " + "anterior només en els arguments que accepta."; + } }; #endif diff --git a/src/translator_de.h b/src/translator_de.h index cfa8896..7eccaf4 100644 --- a/src/translator_de.h +++ b/src/translator_de.h @@ -14,6 +14,8 @@ * input used in their production; they are not affected by this license. * * The translation into German was provided by + * Jens Seidel (jensseidel@users.sf.net) + * based on work from * Jens Breitenstein (Jens.Breitenstein@tlc.de) */ @@ -103,6 +105,9 @@ // - Changed Todo list translation as suggested in // http://bugzilla.gnome.org/show_bug.cgi?id=172818 // +// 2005/05/09 Jens Seidel (jensseidel@users.sourceforge.net) +// - Updated for "new since 1.4.3" version (removed unused methods) +// // Todo: // - see FIXME @@ -244,10 +249,6 @@ class TranslatorGerman : public Translator virtual QCString trFileList() { return "Auflistung der Dateien"; } - /*! This is put above each page as a link to the list of all verbatim headers */ - virtual QCString trHeaderFiles() - { return "Header-Dateien"; } - /*! This is put above each page as a link to all members of compounds. */ virtual QCString trCompoundMembers() { @@ -371,10 +372,6 @@ class TranslatorGerman : public Translator return result; } - /*! This is an introduction to the page with the list of all header files. */ - virtual QCString trHeaderFilesDescription() - { return "Hier folgen die Headerdateien, welche die API definieren:"; } - /*! This is an introduction to the page with the list of all examples */ virtual QCString trExamplesDescription() { return "Hier folgt eine Liste mit allen Beispielen:"; } @@ -387,12 +384,6 @@ class TranslatorGerman : public Translator virtual QCString trModulesDescription() { return "Hier folgt die Aufzählung aller Module:"; } - /*! This sentences is used in the annotated class/file lists if no brief - * description is given. - */ - virtual QCString trNoDescriptionAvailable() - { return "Keine Beschreibung verfügbar"; } - // index titles (the project name is prepended for these) /*! This is used in HTML as the title of index.html. */ @@ -538,12 +529,6 @@ class TranslatorGerman : public Translator { return "Dokumentation der Aufzählungstypen"; } /*! This is used in the documentation of a file/namespace before the list - * of documentation blocks for enumeration values - */ - virtual QCString trEnumerationValueDocumentation() - { return "Dokumentation des Wertebereiches der Aufzählungstypen"; } - - /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for functions */ virtual QCString trFunctionDocumentation() @@ -598,19 +583,10 @@ class TranslatorGerman : public Translator virtual QCString trForInternalUseOnly() { return "Nur für den internen Gebrauch."; } - /*! this text is generated when the \\reimp command is used. */ - virtual QCString trReimplementedForInternalReasons() - { return "Aus internen Gründen neu implementiert. " - "Das API wird davon nicht berührt."; } - /*! this text is generated when the \\warning command is used. */ virtual QCString trWarning() { return "Warnung"; } - /*! this text is generated when the \\bug command is used. */ - virtual QCString trBugsAndLimitations() - { return "Fehler und Einschränkungen"; } - /*! this text is generated when the \\version command is used. */ virtual QCString trVersion() { return "Version"; } @@ -895,11 +871,6 @@ class TranslatorGerman : public Translator // new since 0.49-991003 ////////////////////////////////////////////////////////////////////////// - virtual QCString trSources() - { - return "Quellen"; - } - virtual QCString trDefinedAtLineInSourceFile() { return "Definiert in Zeile @0 der Datei @1."; @@ -1243,12 +1214,6 @@ class TranslatorGerman : public Translator // new since 1.2.4 ////////////////////////////////////////////////////////////////////////// - /*! Used for Java interfaces in the summary section of Java packages */ - virtual QCString trInterfaces() - { - return "Schnittstellen"; - } - /*! Used for Java classes in the summary section of Java packages */ virtual QCString trClasses() { @@ -1282,12 +1247,6 @@ class TranslatorGerman : public Translator return "Pakete"; } - /*! Used as a chapter title for Latex & RTF output */ - virtual QCString trPackageDocumentation() - { - return "Paketdokumentation"; - } - /*! Text shown before a multi-line define */ virtual QCString trDefineValue() { @@ -1408,17 +1367,6 @@ class TranslatorGerman : public Translator * be followed by a single name or by a list of names * of the category. */ - virtual QCString trField(bool, bool singular) - { - QCString result("Feld"); - if (!singular) result+="er"; - return result; - } - - /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names - * of the category. - */ virtual QCString trGlobal(bool first_capital, bool singular) { QCString result((first_capital ? "Global" : "global")); // FIXME diff --git a/src/translator_lt.h b/src/translator_lt.h index e23e492..d9549d5 100644 --- a/src/translator_lt.h +++ b/src/translator_lt.h @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2005 by Dimitri van Heesch. + * Copyright (C) 1997-2004 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -21,8 +21,10 @@ * if you have any suggestions drop us an email * ------------------------------------------- * Project start :13.May.2k4 - * Last Doxygen version covered : 1.3.6 - * Last revision : + * Last Doxygen version covered : 1.4.3 + * + * Revisions: + * Updated to 1.3.9 25.Oct.2k4 * */ @@ -30,7 +32,7 @@ #define TRANSLATOR_LT_H -class TranslatorLithuanian : public TranslatorAdapter_1_3_8 +class TranslatorLithuanian : public Translator { public: @@ -180,10 +182,6 @@ class TranslatorLithuanian : public TranslatorAdapter_1_3_8 virtual QCString trFileList() { return "Failai"; } - /*! This is put above each page as a link to the list of all verbatim headers */ - virtual QCString trHeaderFiles() - { return "Antraščių Failai"; } - /*! This is put above each page as a link to all members of compounds. */ virtual QCString trCompoundMembers() { @@ -316,10 +314,6 @@ class TranslatorLithuanian : public TranslatorAdapter_1_3_8 return result; } - /*! This is an introduction to the page with the list of all header files. */ - virtual QCString trHeaderFilesDescription() - { return "Antraščių failai, kurie sudaro API:"; } - /*! This is an introduction to the page with the list of all examples */ virtual QCString trExamplesDescription() { return "Visų pavyzdžių sąrašas:"; } @@ -332,15 +326,8 @@ class TranslatorLithuanian : public TranslatorAdapter_1_3_8 virtual QCString trModulesDescription() { return "Visų modulių sąrašas:"; } - /*! This sentences is used in the annotated class/file lists if no brief - * description is given. - */ - virtual QCString trNoDescriptionAvailable() - { return "Aprašymo nėra"; } - // index titles (the project name is prepended for these) - - + /*! This is used in HTML as the title of index.html. */ virtual QCString trDocumentation() { return "Dokumentacija"; } @@ -488,12 +475,6 @@ class TranslatorLithuanian : public TranslatorAdapter_1_3_8 { return "Išvardinimo Tipo Dokumentacija"; } /*! This is used in the documentation of a file/namespace before the list - * of documentation blocks for enumeration values - */ - virtual QCString trEnumerationValueDocumentation() - { return "Išvardinimo Reikšmių Dokumentacija"; } - - /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for functions */ virtual QCString trFunctionDocumentation() @@ -547,18 +528,10 @@ class TranslatorLithuanian : public TranslatorAdapter_1_3_8 virtual QCString trForInternalUseOnly() { return "Tiktai vidiniam naudojimui."; } - /*! this text is generated when the \\reimp command is used. */ - virtual QCString trReimplementedForInternalReasons() - { return "Reimplemented for internal reasons; the API is not affected."; }/*FIXME*/ - /*! this text is generated when the \\warning command is used. */ virtual QCString trWarning() { return "Įspėjimas"; } - /*! this text is generated when the \\bug command is used. */ - virtual QCString trBugsAndLimitations() - { return "Klaidos ir apribojimai"; } - /*! this text is generated when the \\version command is used. */ virtual QCString trVersion() { return "Versija"; } @@ -832,10 +805,6 @@ class TranslatorLithuanian : public TranslatorAdapter_1_3_8 // new since 0.49-991003 ////////////////////////////////////////////////////////////////////////// - virtual QCString trSources() - { - return "Šaltiniai";/*FIXME cia gali buti ir programos tekstai*/ - } virtual QCString trDefinedAtLineInSourceFile() { return "Apibrėžimas failo @1 eilutėje @0."; @@ -1142,11 +1111,6 @@ class TranslatorLithuanian : public TranslatorAdapter_1_3_8 // new since 1.2.4 ////////////////////////////////////////////////////////////////////////// - /*! Used for Java interfaces in the summary section of Java packages */ - virtual QCString trInterfaces() - { - return "Sąsajos"; - } /*! Used for Java classes in the summary section of Java packages */ virtual QCString trClasses() { @@ -1179,11 +1143,6 @@ class TranslatorLithuanian : public TranslatorAdapter_1_3_8 { return "Paketai"; } - /*! Used as a chapter title for Latex & RTF output */ - virtual QCString trPackageDocumentation() - { - return "Paketo Dokumentacija"; - } /*! Text shown before a multi-line define */ virtual QCString trDefineValue() { @@ -1328,18 +1287,6 @@ class TranslatorLithuanian : public TranslatorAdapter_1_3_8 * be followed by a single name or by a list of names * of the category. */ - virtual QCString trField(bool first_capital, bool singular) - { - QCString result((first_capital ? "Lauka" : "lauka")); - if (!singular) result+="i"; - else result+="s"; - return result; - } - - /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names - * of the category. - */ virtual QCString trGlobal(bool first_capital, bool singular) { QCString result((first_capital ? "Global" : "global")); @@ -1529,7 +1476,7 @@ class TranslatorLithuanian : public TranslatorAdapter_1_3_8 } else { - return "Surasti $num dokumentų, atitinkančių Jūsų užklausą. " + return "Surasta $num dokumentų, atitinkančių Jūsų užklausą. " "Pirmiausiai rodomi labiausiai tenkinantys užklausą."; } } @@ -1540,6 +1487,75 @@ class TranslatorLithuanian : public TranslatorAdapter_1_3_8 { return "Atitikmenys:"; } +////////////////////////////////////////////////////////////////////////// +// new since 1.3.8 +////////////////////////////////////////////////////////////////////////// + + /*! This is used in HTML as the title of page with source code for file filename + */ + virtual QCString trSourceFile(QCString& filename) + { + return filename + " išeities tekstas"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.9 +////////////////////////////////////////////////////////////////////////// + + /*! This is used as the name of the chapter containing the directory + * hierarchy. + */ + virtual QCString trDirIndex() + { return "Direktorijų hierarchija"; } + + /*! This is used as the name of the chapter containing the documentation + * of the directories. + */ + virtual QCString trDirDocumentation() + { return "Direktorijų dokumentacija"; } + + /*! This is used as the title of the directory index and also in the + * Quick links of a HTML page, to link to the directory hierarchy. + */ + virtual QCString trDirectories() + { return "Direktorijos"; } + + /*! This returns a sentences that introduces the directory hierarchy. + * and the fact that it is sorted alphabetically per level + */ + virtual QCString trDirDescription() + { return "Ši direktorjų strūktūra grubiai surikiuota abėcėlės tvarka:"; + } + + /*! This returns the title of a directory page. The name of the + * directory is passed via \a dirName. + */ + virtual QCString trDirReference(const char *dirName) + { QCString result=dirName; result+=" Directorijos aprašas"; return result; } + + /*! This returns the word directory with or without starting capital + * (\a first_capital) and in sigular or plural form (\a singular). + */ + virtual QCString trDir(bool first_capital, bool singular) + { + QCString result((first_capital ? "Direktorij" : "direktorij")); + if (singular) result+="a"; else result+="os"; + return result; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.4.1 +////////////////////////////////////////////////////////////////////////// + + /*! This text is added to the documentation when the \\overload command + * is used for a overloaded function. + */ + virtual QCString trOverloadText() + { + return "Perkraunamas metodas sukurtas patogumui. " + "Jis skiriasi nuo aukščiau minėto tik argumetais."; + } + }; diff --git a/src/translator_pl.h b/src/translator_pl.h index ac4b16d..76a44ec 100644 --- a/src/translator_pl.h +++ b/src/translator_pl.h @@ -20,7 +20,7 @@ #ifndef TRANSLATOR_PL_H #define TRANSLATOR_PL_H -class TranslatorPolish : public TranslatorAdapter_1_4_1 +class TranslatorPolish : public Translator { private: /*! to avoid macro redefinition from translator_pl.h */ @@ -1537,9 +1537,10 @@ class TranslatorPolish : public TranslatorAdapter_1_4_1 * and the fact that it is sorted alphabetically per level */ virtual QCString trDirDescription() - { return "Ta struktura katalogów jest posortowana jest z grubsza, " + { + return "Ta struktura katalogów jest posortowana jest z grubsza, " "choę nie ca³kowicie, alfabetycznie:"; - } + } /*! This returns the title of a directory page. The name of the * directory is passed via \a dirName. @@ -1556,6 +1557,19 @@ class TranslatorPolish : public TranslatorAdapter_1_4_1 if (! singular) result+="i"; return result; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.4.1 +////////////////////////////////////////////////////////////////////////// + + /*! This text is added to the documentation when the \\overload command + * is used for a overloaded function. + */ + virtual QCString trOverloadText() + { + return "To jest metoda przeci±æona, udostźpniona dla wygody. " + "Róæni siź od powyæszej metody tylko zestawem akceptowanych argumentów."; + } }; #endif diff --git a/src/util.cpp b/src/util.cpp index e18190e..d0dcec6 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -2256,6 +2256,7 @@ void stripIrrelevantConstVolatile(QCString &s) //#define MATCH printf("Match at line %d\n",__LINE__); //#define NOMATCH printf("Nomatch at line %d\n",__LINE__); + static bool matchArgument(const Argument *srcA,const Argument *dstA, const QCString &className, const QCString &namespaceName, @@ -2627,6 +2628,7 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl, return TRUE; // all arguments match } + static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *arg) { QCString type = arg->type; @@ -2655,42 +2657,51 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *a static QRegExp id("[a-z_A-Z][:a-z_A-Z0-9]*"); - QCString canType; - int i,p=0,l; - while ((i=id.match(type,p,&l))!=-1) // foreach identifier in the type + QCString canType,templSpec,word; + int i,p=0,pp=0; + while ((i=extractClassNameFromType(type,p,word,templSpec))!=-1) + // foreach identifier in the type { - canType += type.mid(p,i-p); - QCString word = type.mid(i,l); - ClassDef *cd = getResolvedClass(d,fs,word,0,0,TRUE); - //printf("word %s => %s\n",word.data(),cd?cd->qualifiedName().data():""); + //printf(" i=%d p=%d\n",i,p); + canType += type.mid(pp,i-pp); + ClassDef *cd = 0; + if (!templSpec.isEmpty()) + { + cd = getResolvedClass(d,fs,word+templSpec,0,0,TRUE); + } + if (cd==0) + { + cd = getResolvedClass(d,fs,word,0,0,TRUE); + } + //printf(">>>> word '%s' => '%s'\n",(word+templSpec).data(),cd?cd->qualifiedNameWithTemplateParameters().data():""); if (cd) { - canType+=cd->qualifiedName(); + canType+=cd->qualifiedNameWithTemplateParameters(); } else { QCString resolvedType = resolveTypeDef(d,word); if (resolvedType.isEmpty()) { - int i=word.findRev("::"); - if (i!=-1) // strip scope if it cannot be resolved anyway - // TODO is this robust enough? - { - canType+=word.mid(i+2); - } - else - { - canType+=word; - } + //int i=word.findRev("::"); + //if (i!=-1) // strip scope if it cannot be resolved anyway + // // TODO is this robust enough? + //{ + // canType+=word.mid(i+2); + //} + //else + //{ + canType+=word+templSpec; + //} } else { canType+=resolvedType; } } - p=i+l; + pp=p; } - canType += type.right(type.length()-p); + canType += type.right(type.length()-pp); //printf("result = %s->%s\n",type.data(),canType.data()); return removeRedundantWhiteSpace(canType); @@ -3062,7 +3073,14 @@ bool getDefs(const QCString &scName,const QCString &memberName, //if (mmd->isLinkable()) //{ bool match=args==0 || +#ifdef NEW_MATCH + matchArguments2(mmd->getOuterScope(),md->getFileDef(),md->argumentList(), + fcd,fcd->getFileDef(),argList, + checkCV + ); +#else matchArguments(mmd->argumentList(),argList,className,0,checkCV); +#endif //printf("match=%d\n",match); if (match) { @@ -3175,8 +3193,15 @@ bool getDefs(const QCString &scName,const QCString &memberName, { argList=new ArgumentList; stringToArgumentList(args,argList); +#ifdef NEW_MATCH + match=matchArguments2( + mmd->getOuterScope(),mmd->getFileDef(),mmd->argumentList(), + fnd,mmd->getFileDef(),argList, + checkCV); +#else match=matchArguments(mmd->argumentList(),argList,0, namespaceName,checkCV); +#endif } if (match) { @@ -3255,7 +3280,14 @@ bool getDefs(const QCString &scName,const QCString &memberName, { argList=new ArgumentList; stringToArgumentList(args,argList); +#ifdef NEW_MATCH + match=matchArguments2( + md->getOuterScope(),fd,md->argumentList(), + Doxygen::globalScope,fd,argList, + checkCV); +#else match=matchArguments(md->argumentList(),argList,0,0,checkCV); +#endif delete argList; argList=0; } if (match) @@ -4417,10 +4449,11 @@ void addMembersToMemberGroup(MemberList *ml, } /*! Extracts a (sub-)string from \a type starting at \a pos that - * could form a class. When TRUE is returned the result is the - * class \a name and a template argument list \a templSpec. + * could form a class. The index of the match is returned and the found + * class \a name and a template argument list \a templSpec. If -1 is returned + * there are no more matches. */ -bool extractClassNameFromType(const QCString &type,int &pos,QCString &name,QCString &templSpec) +int extractClassNameFromType(const QCString &type,int &pos,QCString &name,QCString &templSpec) { static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*"); name.resize(0); @@ -4453,17 +4486,25 @@ bool extractClassNameFromType(const QCString &type,int &pos,QCString &name,QCStr te++; } } - if (te>ts) templSpec = type.mid(ts,te-ts),tl+=te-ts; name = type.mid(i,l); - pos=i+l+tl; + if (te>ts) + { + templSpec = type.mid(ts,te-ts),tl+=te-ts; + pos=i+l+tl; + } + else // no template part + { + pos=i+l; + } //printf("extractClassNameFromType([in] type=%s,[out] pos=%d,[out] name=%s,[out] templ=%s)=TRUE\n", // type.data(),pos,name.data(),templSpec.data()); - return TRUE; + return i; } } + pos = typeLen; //printf("extractClassNameFromType([in] type=%s,[out] pos=%d,[out] name=%s,[out] templ=%s)=FALSE\n", // type.data(),pos,name.data(),templSpec.data()); - return FALSE; + return -1; } /*! Substitutes any occurrence of a formal argument from argument list @@ -4500,9 +4541,10 @@ QCString substituteTemplateArgumentsInString( ++formAli,actArg=actualArgs->next() ) { - if (formArg->type=="class" || formArg->type=="typename") + //printf("formArg->type=%s\n",formArg->type.data()); + if (formArg->type=="class" || formArg->type=="typename" || formArg->type.left(8)=="template") { - //printf("n=%s formArg->type=%s formArg->name=%si formArg->defval=%s\n", + //printf("n=%s formArg->type='%s' formArg->name='%s' formArg->defval='%s'\n", // n.data(),formArg->type.data(),formArg->name.data(),formArg->defval.data()); if (formArg->name==n && actArg && !actArg->type.isEmpty()) // base class is a template argument { @@ -4526,6 +4568,13 @@ QCString substituteTemplateArgumentsInString( found=TRUE; } } + else if (formArg->name==n && actArg==0 && !formArg->defval.isEmpty() && + formArg->defval!=name /* to prevent recursion */ + ) + { + result += substituteTemplateArgumentsInString(formArg->defval,formalArgs,actualArgs)+" "; + found=TRUE; + } } if (!found) result += n; p=i+l; diff --git a/src/util.h b/src/util.h index fc991f4..9ae8650 100644 --- a/src/util.h +++ b/src/util.h @@ -184,7 +184,7 @@ QCString getOverloadDocs(); void addMembersToMemberGroup(MemberList *ml, MemberGroupSDict *memberGroupSDict, Definition *context); -bool extractClassNameFromType(const QCString &type,int &pos, +int extractClassNameFromType(const QCString &type,int &pos, QCString &name,QCString &templSpec); QCString substituteTemplateArgumentsInString( const QCString &name, diff --git a/tmake/lib/m68k-atari-mint-g++/tmake.conf b/tmake/lib/m68k-atari-mint-g++/tmake.conf index 9f69008..2de619f 100755 --- a/tmake/lib/m68k-atari-mint-g++/tmake.conf +++ b/tmake/lib/m68k-atari-mint-g++/tmake.conf @@ -8,10 +8,10 @@ TEMPLATE = app CONFIG = qt warn_on release TMAKE_CC = gcc -TMAKE_CFLAGS = -pipe +TMAKE_CFLAGS = TMAKE_CFLAGS_WARN_ON = -Wall -W -fno-exceptions TMAKE_CFLAGS_WARN_OFF = -TMAKE_CFLAGS_RELEASE = -O2 +TMAKE_CFLAGS_RELEASE = -O0 TMAKE_CFLAGS_DEBUG = -g TMAKE_CFLAGS_SHLIB = -fPIC TMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses -- cgit v0.12