From 69fbf29b9b2be1bdf9132adb799f31ab343a642e Mon Sep 17 00:00:00 2001 From: dimitri Date: Sun, 25 Feb 2001 17:49:47 +0000 Subject: Release-1.2.5-20010225 --- Doxyfile | 2 +- INSTALL | 4 +- Makefile.in | 30 +-- README | 4 +- VERSION | 2 +- addon/configgen/config_templ.h | 5 + addon/configgen/configgen.cpp | 35 +++- doc/commands.doc | 8 +- doc/config.doc | 42 ++++ doc/faq.doc | 38 +++- doc/index.doc | 3 + doc/language.doc | 8 +- packages/rpm/doxygen.spec | 2 +- src/classdef.cpp | 115 ++++++----- src/code.h | 2 + src/code.l | 30 ++- src/config.h | 235 ++++++++++----------- src/config.l | 61 +++++- src/definition.cpp | 2 + src/definition.h | 9 +- src/doc.l | 24 +++ src/doxygen.cpp | 160 ++++++++++----- src/doxygen.pro.in | 2 +- src/entry.cpp | 2 + src/entry.h | 43 +++- src/ftvhelp.cpp | 6 +- src/groupdef.cpp | 6 +- src/htmlgen.cpp | 13 +- src/htmlhelp.cpp | 11 +- src/index.cpp | 247 +++++++++++++++------- src/language.cpp | 4 + src/libdoxygen.pro.in | 2 +- src/mangen.cpp | 8 +- src/mangen.h | 2 +- src/memberdef.cpp | 12 +- src/membername.h | 13 +- src/page.h | 1 + src/reflist.cpp | 9 +- src/reflist.h | 1 + src/scanner.l | 124 ++++++++--- src/translator.h | 16 ++ src/translator_it.h | 45 ++++ src/translator_jp.h | 262 +++++++++++++++++++++++- src/translator_nl.h | 79 ++++++- src/translator_ru.h | 452 +++++++++++++++++++++++++---------------- src/treeview.h | 35 +++- src/treeview.js | 35 +++- src/util.cpp | 20 +- 48 files changed, 1656 insertions(+), 615 deletions(-) diff --git a/Doxyfile b/Doxyfile index 3dd5db4..9293e90 100644 --- a/Doxyfile +++ b/Doxyfile @@ -100,7 +100,7 @@ HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES +GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output diff --git a/INSTALL b/INSTALL index 0b0185b..a42c9b2 100644 --- a/INSTALL +++ b/INSTALL @@ -1,6 +1,6 @@ -DOXYGEN Version 1.2.5-20010211 +DOXYGEN Version 1.2.5-20010225 Please read the installation section of the manual for instructions. -------- -Dimitri van Heesch (11 February 2001) +Dimitri van Heesch (25 February 2001) diff --git a/Makefile.in b/Makefile.in index 2117bf2..c5cc66e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,3 +1,4 @@ +DOCDIR = $(INSTALL)/share/doc/packages/doxygen #all: src/version.cpp configgen doxywizard # cd qtools ; $(MAKE) @@ -45,25 +46,26 @@ distclean: clean -rm -f addon/xmlgen/Makefile addon/xmlgen/Makefile.xmlgen -rm -f addon/xmlgen/*.o + install: doxywizard_install $(INSTTOOL) -d $(INSTALL)/bin - $(INSTTOOL) -d $(INSTALL)/doc/doxygen + $(INSTTOOL) -d $(DOCDIR) $(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin $(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin $(INSTTOOL) -m 755 bin/doxysearch $(INSTALL)/bin - cp -r doc $(INSTALL)/doc/doxygen - cp -r examples $(INSTALL)/doc/doxygen - echo "DOXYGEN = $(INSTALL)" > $(INSTALL)/doc/doxygen/doc/Makefile - echo "DOXYDOCS = .." >> $(INSTALL)/doc/doxygen/doc/Makefile - echo "VERSION = $(VERSION)" >> $(INSTALL)/doc/doxygen/doc/Makefile - cat doc/Makefile.in >> $(INSTALL)/doc/doxygen/doc/Makefile - cd $(INSTALL)/doc/doxygen/examples ; $(MAKE) - cd $(INSTALL)/doc/doxygen/doc ; $(MAKE) - rm -rf $(INSTALL)/doc/doxygen/doc - cd $(INSTALL)/doc/doxygen/latex ; $(MAKE) - cp $(INSTALL)/doc/doxygen/latex/doxygen_manual.pdf $(INSTALL)/doc/doxygen - cp $(INSTALL)/doc/doxygen/latex/doxygen_manual.ps $(INSTALL)/doc/doxygen - rm -rf $(INSTALL)/doc/doxygen/latex + cp -r doc $(DOCDIR) + cp -r examples $(DOCDIR) + echo "DOXYGEN = $(INSTALL)" > $(DOCDIR)/doc/Makefile + echo "DOXYDOCS = .." >> $(DOCDIR)/doc/Makefile + echo "VERSION = $(VERSION)" >> $(DOCDIR)/doc/Makefile + cat doc/Makefile.in >> $(DOCDIR)/doc/Makefile + cd $(DOCDIR)/examples ; $(MAKE) + cd $(DOCDIR)/doc ; $(MAKE) + rm -rf $(DOCDIR)/doc + cd $(DOCDIR)/latex ; $(MAKE) + cp $(DOCDIR)/latex/doxygen_manual.pdf $(INSTALL)/doc/doxygen + cp $(DOCDIR)/latex/doxygen_manual.ps $(INSTALL)/doc/doxygen + rm -rf $(DOCDIR)/latex docs: FORCE cd examples ; $(MAKE) diff --git a/README b/README index 8e47fea..c1b29ca 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.2.5-20010211 +DOXYGEN Version 1.2.5-20010225 Please read INSTALL for compilation instructions. @@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at Enjoy, -Dimitri van Heesch (11 February 2001) +Dimitri van Heesch (25 February 2001) diff --git a/VERSION b/VERSION index 4bddb77..a60c80b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.5-20010211 +1.2.5-20010225 diff --git a/addon/configgen/config_templ.h b/addon/configgen/config_templ.h index cb26f9a..eca1a95 100644 --- a/addon/configgen/config_templ.h +++ b/addon/configgen/config_templ.h @@ -27,6 +27,11 @@ extern void checkConfig(); extern void configStrToVal(); extern void substituteEnvironmentVars(); +/*! \brief Namespace for configuration variables + * + * This struct acts as a namespace that holds the global static variables + * read from a user-supplied configuration file. + */ struct Config { static void init(); diff --git a/addon/configgen/configgen.cpp b/addon/configgen/configgen.cpp index cb4cfdf..167ec45 100644 --- a/addon/configgen/configgen.cpp +++ b/addon/configgen/configgen.cpp @@ -93,7 +93,7 @@ class ConfigOption virtual void printHeader(QTextStream &t) { t << " static " << type << " " << varName - << "; // " << shortDesc << endl; + << "; /*!< " << shortDesc << " */" << endl; } virtual void printStatic(QTextStream &) {} virtual void printConfig(QTextStream &t) @@ -1035,6 +1035,14 @@ void init() "disable (NO) the test list. This list is created by putting \\test \n" "commands in the documentation.\n" ); + ConfigBool::add( "generateBugList", + "GENERATE_BUGLIST", + "TRUE", + "do we want a bug list?", + "The GENERATE_BUGLIST tag can be used to enable (YES) or \n" + "disable (NO) the bug list. This list is created by putting \\bug \n" + "commands in the documentation.\n" + ); ConfigList::add( "aliasList", "ALIASES", "", @@ -1068,6 +1076,14 @@ void init() "For instance some of the names that are used will be different. The list \n" "of all members will be omitted, etc. \n" ); + ConfigBool::add( "showUsedFilesFlag", + "SHOW_USED_FILES", + "TRUE", + "do we show the list of used files for classes and structs?", + "Set the SHOW_USED_FILES tag to NO to disable the list of files generated \n" + "at the bottom of the documentation of classes and structs. If set to YES the \n" + "list will mention the files that were used to generate the documentation. \n" + ); //----------------------------------------------------------------------------------------------- ConfigInfo::add( "Messages","configuration options related to warning and progress messages"); //----------------------------------------------------------------------------------------------- @@ -1315,6 +1331,23 @@ void init() "it should be included in the master .chm file (NO).\n" ); addDependency("htmlHelpChiFlag","generateHtml"); + ConfigBool::add( "htmlHelpTocFlag", + "BINARY_TOC", + "FALSE", + "should a binary table of contents be generated?", + "If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag \n" + "controls whether a binary table of contents is generated (YES) or a \n" + "normal table of contents (NO) in the .chm file.\n" + ); + addDependency("htmlHelpTocFlag","generateHtml"); + ConfigBool::add( "htmlHelpTocExpandFlag", + "TOC_EXPAND", + "FALSE", + "should module elements be displayed in the table of contents?", + "The TOC_EXPAND flag can be set YES to add extra items for group members \n" + "to the contents of the Html help documentation and to the tree view. \n" + ); + addDependency("htmlHelpTocExpandFlag","generateHtml"); ConfigBool::add( "noIndexFlag", "DISABLE_INDEX", "FALSE", diff --git a/doc/commands.doc b/doc/commands.doc index 5a6bb82..92491ae 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -280,8 +280,12 @@ Doxygen. Unrecognized commands are treated as normal text. \addindex \fn Indicates that a comment block contains documentation for a function (either global or as a member of a class). This command is needed if a - comment block is \e not located before the function declaration - or definition. A full function declaration should be specified after the + comment block is \e not placed in front of the function declaration + or definition. If your comment block \e is in front of the function + declaration or definition this command can (and to avoid redundancy + should) be ommitted. + + A full function declaration should be specified after the \\fn command. The argument ends at the end of the line. \par Example: diff --git a/doc/config.doc b/doc/config.doc index 5cbb936..2bccacd 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -71,6 +71,7 @@ followed by the descriptions of the tags grouped by category.
  • \refitem cfg_alphabetical_index ALPHABETICAL_INDEX
  • \refitem cfg_always_detailed_sec ALWAYS_DETAILED_SEC
  • \refitem cfg_bin_abspath BIN_ABSPATH +
  • \refitem cfg_binary_toc BINARY_TOC
  • \refitem cfg_brief_member_desc BRIEF_MEMBER_DESC
  • \refitem cfg_case_sense_names CASE_SENSE_NAMES
  • \refitem cfg_cgi_name CGI_NAME @@ -93,6 +94,7 @@ followed by the descriptions of the tags grouped by category.
  • \refitem cfg_example_patterns EXAMPLE_PATTERNS
  • \refitem cfg_exclude EXCLUDE
  • \refitem cfg_exclude_patterns EXCLUDE_PATTERNS +
  • \refitem cfg_expand_as_defined EXPAND_AS_PREDEFINED
  • \refitem cfg_expand_only_predef EXPAND_ONLY_PREDEF
  • \refitem cfg_ext_doc_paths EXT_DOC_PATHS
  • \refitem cfg_extra_packages EXTRA_PACKAGES @@ -100,7 +102,10 @@ followed by the descriptions of the tags grouped by category.
  • \refitem cfg_extract_private EXTRACT_PRIVATE
  • \refitem cfg_extract_static EXTRACT_STATIC
  • \refitem cfg_file_patterns FILE_PATTERNS +
  • \refitem cfg_filter_source_files FILTER_SOURCE_FILES
  • \refitem cfg_full_path_names FULL_PATH_NAMES +
  • \refitem cfg_generate_buglist GENERATE_BUGLIST +
  • \refitem cfg_generate_chi GENERATE_CHI
  • \refitem cfg_generate_html GENERATE_HTML
  • \refitem cfg_generate_htmlhelp GENERATE_HTMLHELP
  • \refitem cfg_generate_latex GENERATE_LATEX @@ -159,12 +164,14 @@ followed by the descriptions of the tags grouped by category.
  • \refitem cfg_search_includes SEARCH_INCLUDES
  • \refitem cfg_searchengine SEARCHENGINE
  • \refitem cfg_show_include_files SHOW_INCLUDE_FILES +
  • \refitem cfg_show_used_files SHOW_USED_FILES
  • \refitem cfg_sort_member_docs SORT_MEMBER_DOCS
  • \refitem cfg_source_browser SOURCE_BROWSER
  • \refitem cfg_strip_code_comments STRIP_CODE_COMMENTS
  • \refitem cfg_strip_from_path STRIP_FROM_PATH
  • \refitem cfg_tab_size TAB_SIZE
  • \refitem cfg_tagfiles TAGFILES +
  • \refitem cfg_toc_expand TOC_EXPAND
  • \refitem cfg_treeview_width TREEVIEW_WIDTH
  • \refitem cfg_verbatim_headers VERBATIM_HEADERS
  • \refitem cfg_warn_format WARN_FORMAT @@ -430,6 +437,13 @@ followed by the descriptions of the tags grouped by category. disable (NO) the test list. This list is created by putting \ref cmdtest "\\test" commands in the documentation. +\anchor cfg_generate_buglist +
    \c GENERATE_BUGLIST
    + \addindex GENERATE_BUGLIST + The GENERATE_BUGLIST tag can be used to enable (YES) or + disable (NO) the bug list. This list is created by + putting \ref cmdbug "\\bug" commands in the documentation. + \anchor cfg_aliases
    \c ALIASES
    \addindex ALIASES @@ -465,6 +479,13 @@ followed by the descriptions of the tags grouped by category. for C. For instance some of the names that are used will be different. The list of all members will be omitted, etc. +\anchor cfg_show_used_files +
    \c SHOW_USED_FILES
    + \addindex SHOW_USED_FILES + Set the \c SHOW_USED_FILES tag to \c NO to disable the list of files generated + at the bottom of the documentation of classes and structs. If set to \c YES the + list will mention the files that were used to generate the documentation. + \subsection messages_input Options related to warning and progress messages @@ -744,6 +765,27 @@ followed by the descriptions of the tags grouped by category. (which basically renders \c doxysearch obsolete on Windows). The HTML workshop also contains a viewer for compressed HTML files. +\anchor cfg_generate_chi +
    \c GENERATE_CHI
    + \addindex GENERATE_CHI + If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c GENERATE_CHI flag + controls if a separate .chi index file is generated (YES) or that + it should be included in the master .chm file (NO). + +\anchor cfg_binary_toc +
    \c BINARY_TOC
    + \addindex BINARY_TOC + If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c BINARY_TOC flag + controls whether a binary table of contents is generated (YES) or a + normal table of contents (NO) in the .chm file. + +\anchor cfg_toc_expand +
    \c TOC_EXPAND
    + \addindex TOC_EXPAND + The \c TOC_EXPAND flag can be set YES to add extra items for + group members to the table of contents of the Html help documentation + and to the tree view. + \anchor cfg_disable_index
    \c DISABLE_INDEX
    \addindex DISABLE_INDEX diff --git a/doc/faq.doc b/doc/faq.doc index 5f38837..4245a74 100644 --- a/doc/faq.doc +++ b/doc/faq.doc @@ -35,6 +35,33 @@ You should use the \\mainpage command inside a comment block like this: */ \endverbatim +
  • Help, some/all of the members of my class / file / namespace + are not documented? + + Check the following: +
      +
    1. Is your class / file / namespace documented? If not, it will not + be extracted from the sources unless \c EXTRACT_ALL is set to \c YES + in the config file. +
    2. Are the members private? If so, you must set \c EXTRACT_PRIVATE to \c YES + to make them appear in the documentation. +
    3. Is there a function macro in your class that does not end with a + semicolon (e.g. MY_MACRO())? If so then you have to instruct + doxygen's preprocessor to remove it. + + This typically boils down to the following settings in the config file: + + \verbatim +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +PREDEFINED = MY_MACRO()= + \endverbatim + + Please read the \ref preprocessing "preprocessing" section of the + manual for more information. +
    +
  • When I set EXTRACT_ALL to NO non of my functions are shown in the documentation.
  • In order for global functions, variables, enums, typedefs, and defines @@ -64,10 +91,6 @@ around the blocks that should be hidden and put: in the config file then all blocks should be skipped by Doxygen as long as PREPROCESSING = YES. -
  • How can I make doxygen ignore nasty macro's? - -Look at section \ref preprocessing for the answer. -
  • How can I change what's after the \#include in the class documentation? You can document your class like @@ -145,15 +168,10 @@ The most important reason is too have a platform abstraction for most Unices and Windows by means of the QFile, QFileInfo, QDir, QDate, QTime and QIODevice classes. Another reason is for the nice and bug free utility classes, like QList, -QDict, QString, QArray, QTextStream, QRegExp etc. +QDict, QString, QArray, QTextStream, QRegExp, QXML etc. The GUI front-end doxywizard uses Qt for... well... the GUI! -
  • Can I use doxygen on my Java code? - -No, at the moment there is no support for Java. I suggest to -use Sun's JavaDoc instead. -
  • How can I exclude all test directories from my directory tree? Simply put an exclude pattern like this in the configuration file: diff --git a/doc/index.doc b/doc/index.doc index 5687c32..99ce67f 100644 --- a/doc/index.doc +++ b/doc/index.doc @@ -172,6 +172,9 @@ Thanks go to: Boris Bralo, Nickolay Semyonov, Richard Kim, FЖldvАri GyЖrgy, Grzegorz Kowal, and Wang Weihan for providing translations into various languages. +
  • The Comms group of Symbian for donating + me an ultra cool - snob@NOSPAM.int.spb.ru + + crocodil@NOSPAM.croco.net @@ -246,7 +246,7 @@ Here is a list of the languages and their current maintainers: \hline Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} \\ \hline - Russian & Nickolay Semyonov & {\tt snob@int.spb.ru} \\ + Russian & Andrey V. Stolyarov & {\tt crocodil@croco.net} \\ \hline Korean & Richard Kim & {\tt ryk@dspwiz.com} \\ \hline diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index 40a9c38..0f5d612 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,5 +1,5 @@ Name: doxygen -Version: 1.2.5-20010211 +Version: 1.2.5-20010225 Summary: documentation system for C, C++ and IDL Release: 1 Source0: doxygen-%{version}.src.tar.gz diff --git a/src/classdef.cpp b/src/classdef.cpp index ac6ef43..a84d03f 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -472,7 +472,8 @@ void ClassDef::insertMember(MemberDef *md) } - MemberInfo *mi = new MemberInfo((MemberDef *)md,Public,Normal); + MemberInfo *mi = new MemberInfo((MemberDef *)md, + md->protection(),md->virtualness(),FALSE); MemberNameInfo *mni=0; if ((mni=(*allMemberNameInfoDict)[md->name()])) { @@ -1112,48 +1113,52 @@ void ClassDef::writeDocumentation(OutputList &ol) // write the list of used files (not for man pages) ol.pushGeneratorState(); - ol.disable(OutputGenerator::Man); - ol.writeRuler(); - parseText(ol,theTranslator->trGeneratedFromFiles(compType,files.count()==1)); - - bool first=TRUE; - const char *file = files.first(); - while (file) + + if (Config::showUsedFilesFlag) { - bool ambig; - FileDef *fd=findFileDef(Doxygen::inputNameDict,file,ambig); - if (fd) + ol.disable(OutputGenerator::Man); + ol.writeRuler(); + parseText(ol,theTranslator->trGeneratedFromFiles(compType,files.count()==1)); + + bool first=TRUE; + const char *file = files.first(); + while (file) { - if (first) + bool ambig; + FileDef *fd=findFileDef(Doxygen::inputNameDict,file,ambig); + if (fd) { - first=FALSE; - ol.startItemList(); - } + if (first) + { + first=FALSE; + ol.startItemList(); + } - ol.writeListItem(); - QCString path=fd->getPath().copy(); - if (Config::fullPathNameFlag) - { - ol.docify(stripFromPath(path)); - } + ol.writeListItem(); + QCString path=fd->getPath().copy(); + if (Config::fullPathNameFlag) + { + ol.docify(stripFromPath(path)); + } - if (fd->generateSourceFile()) - { - ol.writeObjectLink(0,fd->sourceName(),0,fd->name()); - } - else if (fd->isLinkable()) - { - ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0, - fd->name()); - } - else - { - ol.docify(fd->name()); + if (fd->generateSourceFile()) + { + ol.writeObjectLink(0,fd->sourceName(),0,fd->name()); + } + else if (fd->isLinkable()) + { + ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0, + fd->name()); + } + else + { + ol.docify(fd->name()); + } } + file=files.next(); } - file=files.next(); + if (!first) ol.endItemList(); } - if (!first) ol.endItemList(); // write Author section (Man only) ol.enable(OutputGenerator::Man); @@ -1204,14 +1209,18 @@ void ClassDef::writeMemberList(OutputList &ol) ClassDef *cd=md->getClassDef(); // compute the protection level for this member - Protection protect=md->protection(); - if (mi->prot==Protected) // inherited protection + Protection prot=md->protection(); + if (mi->prot==Protected) // inherited protection: Protected { - if (protect==Public) protect=Protected; + if (prot==Public) prot=Protected; + } + else if (mi->prot==Private) // inherited protection: Private + { + prot=Private; } - //printf("Member %s of class %s mi->prot=%d prot=%d\n", - // md->name().data(),cd->name().data(),mi->prot,protect); + //printf("%s: Member %s of class %s md->protection()=%d mi->prot=%d prot=%d inherited=%d\n", + // name().data(),md->name().data(),cd->name().data(),md->protection(),mi->prot,prot,mi->inherited); Specifier virt=md->virtualness(); MemberDef *rmd=md->reimplements(); @@ -1224,7 +1233,9 @@ void ClassDef::writeMemberList(OutputList &ol) if (cd && !md->name().isEmpty() && md->name()[0]!='@' && ( md->isFriend() || - (mi->prot!=Private && (protect!=Private || Config::extractPrivateFlag)) + (/*mi->prot!=Private &&*/ + (prot!=Private || Config::extractPrivateFlag) + ) ) ) { @@ -1280,7 +1291,7 @@ void ClassDef::writeMemberList(OutputList &ol) ol.writeString(")"); memberWritten=TRUE; } - if ((protect!=Public || virt!=Normal || + if ((prot!=Public || virt!=Normal || md->isFriend() || md->isRelated() || md->isExplicit() || md->isMutable() || (md->isInline() && Config::inlineInfoFlag) || md->isSignal() || md->isSlot() || @@ -1299,8 +1310,8 @@ void ClassDef::writeMemberList(OutputList &ol) sl.append("inline"); if (md->isExplicit()) sl.append("explicit"); if (md->isMutable()) sl.append("mutable"); - if (protect==Protected) sl.append("protected"); - else if (protect==Private) sl.append("private"); + if (prot==Protected) sl.append("protected"); + else if (prot==Private) sl.append("private"); if (virt==Virtual) sl.append("virtual"); else if (virt==Pure) sl.append("pure virtual"); if (md->isStatic()) sl.append("static"); @@ -1500,12 +1511,10 @@ void ClassDef::mergeMembers() for ( ; (bcd=bcli.current()) ; ++bcli ) { ClassDef *bClass=bcd->classDef; - // merge the members of bClass with the onces from cd + // merge the members in the base class of this inheritance branch first bClass->mergeMembers(); - // the all member list of the branch until bClass is now complete - // so we can merge it with cd - + MemberNameInfoList *srcMnl = bClass->memberNameInfoList(); MemberNameInfoDict *dstMnd = memberNameInfoDict(); MemberNameInfoList *dstMnl = memberNameInfoList(); @@ -1602,7 +1611,7 @@ void ClassDef::mergeMembers() { Specifier virt=srcMi->virt; if (srcMi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt; - MemberInfo *newMi = new MemberInfo(srcMd,bcd->prot,virt); + MemberInfo *newMi = new MemberInfo(srcMd,bcd->prot,virt,TRUE); newMi->scopePath=bClass->name()+"::"+srcMi->scopePath; if (ambigue) { @@ -1645,7 +1654,7 @@ void ClassDef::mergeMembers() MemberInfo *mi; for (;(mi=mnii.current());++mnii) { - Protection prot = mi->memberDef->protection(); + Protection prot = mi->prot; if (bcd->prot==Protected) { if (prot==Public) prot=Protected; @@ -1655,15 +1664,15 @@ void ClassDef::mergeMembers() prot=Private; } //printf("%s::%s: prot=%d bcd->prot=%d result=%d\n", - // name().data(),mi->memberDef->name().data(),mi->memberDef->protection(), + // name().data(),mi->memberDef->name().data(),mi->prot, // bcd->prot,prot); - if (prot!=Private) + if (mi->prot!=Private) { Specifier virt=mi->virt; if (mi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt; - MemberInfo *newMi=new MemberInfo(mi->memberDef,prot,virt); + MemberInfo *newMi=new MemberInfo(mi->memberDef,prot,virt,TRUE); newMi->scopePath=bClass->name()+"::"+mi->scopePath; newMi->ambigClass=mi->ambigClass; newMi->ambiguityResolutionScope=mi->ambiguityResolutionScope.copy(); diff --git a/src/code.h b/src/code.h index a5a0ea4..3458389 100644 --- a/src/code.h +++ b/src/code.h @@ -23,9 +23,11 @@ class OutputDocInterface; class FileDef; +class MemberDef; extern void parseCode(OutputDocInterface &,const char *,const QCString &, bool ,const char *,FileDef *fd=0, int startLine=-1,int endLine=-1,bool inlineFragment=FALSE); extern void initParseCodeContext(); +extern void setParameterList(MemberDef *md); #endif diff --git a/src/code.l b/src/code.l index 14b738e..b8cdc69 100644 --- a/src/code.l +++ b/src/code.l @@ -379,6 +379,30 @@ static void addParameter() } } +void setParameterList(MemberDef *md) +{ + g_classScope = md->getClassDef() ? md->getClassDef()->name().data() : ""; + ArgumentList *al = md->argumentList(); + if (al==0) return; + Argument *a = al->first(); + while (a) + { + g_parmName = a->name.copy(); + g_parmType = a->type.copy(); + int i = g_parmType.find('*'); + if (i!=-1) + g_parmType = g_parmType.left(i); + i = g_parmType.find('&'); + if (i!=-1) + g_parmType = g_parmType.left(i); + if (g_parmType.left(6)=="const ") + g_parmType = g_parmType.right(g_parmType.length()-6); + g_parmType=g_parmType.stripWhiteSpace(); + addParameter(); + a = al->next(); + } +} + static void generateClassLink(OutputDocInterface &ol,char *clName,int *clNameLen=0) { int i=0; @@ -1032,9 +1056,9 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" while (e>=0 && (text.at(e)==')' || isspace(yytext[e]))) e--; QCString varname = text.mid(s+1,e-s); QCString tmp=varname.copy(); - g_code->docify(text.left(s+1)); + g_code->codify(text.left(s+1)); generateClassLink(*g_code,tmp.data()); - g_code->docify(text.right(yyleng-e-1)); + g_code->codify(text.right(yyleng-e-1)); addType(); g_name+=varname; } @@ -1046,7 +1070,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" g_name+=yytext; BEGIN( FuncCall ); } -\" { +\" { startFontClass("stringliteral"); g_code->codify(yytext); g_lastStringContext=YY_START; diff --git a/src/config.h b/src/config.h index ce14ac8..fba7711 100644 --- a/src/config.h +++ b/src/config.h @@ -1,4 +1,4 @@ -/* This file was generated by configgen on Thu Feb 8 22:26:39 2001 +/* This file was generated by configgen on Sun Feb 25 14:30:18 2001 * from config_templ.h * * DO NOT EDIT! @@ -33,122 +33,131 @@ extern void checkConfig(); extern void configStrToVal(); extern void substituteEnvironmentVars(); +/*! \brief Namespace for configuration variables + * + * This struct acts as a namespace that holds the global static variables + * read from a user-supplied configuration file. + */ struct Config { static void init(); - static QCString projectName; // the name of the project - static QCString projectNumber; // the number of the project - static QCString outputDir; // the global output directory - static QCString outputLanguage; // the output language - static bool extractAllFlag; // generate docs for all classes flag - static bool extractPrivateFlag; // generate docs for private members flag - static bool extractStaticFlag; // generate docs for static members flag - static bool hideMemberFlag; // hide undocumented members. - static bool hideClassFlag; // hide undocumented members. - static bool briefMemDescFlag; // enable `inline' brief member descr. - static bool repeatBriefFlag; // repeat brief descriptions. - static bool alwaysDetailsFlag; // show details description even if there is only a brief description? - static bool fullPathNameFlag; // using full path name in output - static QStrList stripFromPath; // list of candidates to strip from the file path - static bool internalDocsFlag; // determines what happens to internal docs. - static bool classDiagramFlag; // enable the generation of class diagrams. - static bool sourceBrowseFlag; // include source code in documentation. - static bool inlineSourceFlag; // inline the definition bodies in the docs? - static bool stripCommentsFlag; // strip special comments from code fragments? - static bool caseSensitiveNames; // determines if output can be mixed case. - static bool hideScopeNames; // hide the name of the scope. - static bool verbatimHeaderFlag; // enable/disable generation of verb headers. - static bool showIncFileFlag; // show include file in file documentation? - static bool autoBriefFlag; // should javadoc comments behaves as Qt comments. - static bool inheritDocsFlag; // inheritance of documentation enabled? - static bool inlineInfoFlag; // show info about inline members? - static bool sortMembersFlag; // sort members alphabetically? - static bool distributeDocFlag; // distribute docs over member group? - static int tabSize; // number of spaces in a tab - static QStrList sectionFilterList; // list of section filters that are enabled - static bool generateTodoList; // do we want a todo list? - static bool generateTestList; // do we want a test list? - static QStrList aliasList; // list of aliases - static int maxInitLines; // when do we hide values of variable and defines? - static bool optimizeForCFlag; // do we parse C code? - static bool quietFlag; // generate progress messages flag - static bool warningFlag; // generate warnings flag - static bool warningUndocFlag; // generate undocumented warnings - static QCString warnFormat; // format of the warning messages - static QCString warnLogFile; // log file to write warning to - static QStrList inputSources; // list of input files - static QStrList filePatternList; // list of file patterns - static bool recursiveFlag; // scan directories recursively - static QStrList excludeSources; // list of files to exclude from the input - static QStrList excludePatternList; // list of patterns to exclude from input - static QStrList examplePath; // list of example paths - static QStrList examplePatternList; // list of example patterns - static QStrList imagePath; // list of image paths - static QCString inputFilter; // a filter command that is applied to input files - static bool filterForSourceFlag; // do we filter source files? - static bool alphaIndexFlag; // should an alphabetical index be generated? - static int colsInAlphaIndex; // number of columns in the alphabetical index - static QStrList ignorePrefixList; // list of prefixes to ignore for the alphabetical index - static bool generateHtml; // generate HTML output - static QCString htmlOutputDir; // the directory to put the HTML files - static QCString headerFile; // the name of the personal HTML header - static QCString footerFile; // the name of the personal HTML footer - static QCString htmlStyleSheet; // user defined cascading style sheet - static bool htmlAlignMemberFlag; // align members in HTML using tables. - static bool htmlHelpFlag; // should html help files be generated? - static bool htmlHelpChiFlag; // should chi file be generated? - static bool noIndexFlag; // generate condensed index flag - static int enumValuesPerLine; // number of enum values that are put on one line - static bool ftvHelpFlag; // should a folder tree view be generated? - static int treeViewWidth; // What is the width of the treeview panel? - static bool generateLatex; // generate Latex output - static QCString latexOutputDir; // the directory to put the Latex files - static bool compactLatexFlag; // generate compact LaTeX documentation. - static QCString paperType; // the page type to generate docs for - static QStrList extraPackageList; // list of extra LaTeX packages. - static QCString latexHeaderFile; // the name of the personal LaTeX header - static bool pdfHyperFlag; // generate latex prepared creating hyperlinked pdfs. - static bool usePDFLatexFlag; // use pdflatex instead of plain latex - static bool latexBatchModeFlag; // continue after latex errors? - static bool generateRTF; // generate RTF flag - static QCString rtfOutputDir; // the directory to put the RTF files - static bool compactRTFFlag; // generate more compact RTF - static bool rtfHyperFlag; // generate hyper links in RTF - static QCString rtfStylesheetFile; // file to load stylesheet definitions from - static bool generateMan; // generate Man pages - static QCString manOutputDir; // the directory to put the man pages - static QCString manExtension; // extension the man page files - static bool preprocessingFlag; // enable preprocessing - static bool macroExpansionFlag; // expand macros in the source. - static bool onlyPredefinedFlag; // expand only predefined macros - static bool searchIncludeFlag; // search for included files - static QStrList includePath; // list of include paths - static QStrList includeFilePatternList; // list of include file patterns - static QStrList predefined; // list of predefined macro names. - static QStrList expandAsDefinedList; // list of defines to expand - static QStrList tagFileList; // list of tag files - static QCString genTagFile; // the tag file to generate - static bool allExtFlag; // include all external classes flag - static QCString perlPath; // the absolute path to perl - static bool haveDotFlag; // indicates wether or not dot is present - static bool classGraphFlag; // class graph - static bool collGraphFlag; // collaboration graph - static bool includeGraphFlag; // include graph - static bool includedByGraphFlag; // depends on include graph - static bool gfxHierarchyFlag; // flag to enable graphical hierarchy - static QCString dotPath; // path to the dot tool - static int maxDotGraphWidth; // max dot graph width - static int maxDotGraphHeight; // max dot graph height - static bool generateLegend; // generate legend page - static bool dotCleanUp; // remove intermedia dot files? - static bool searchEngineFlag; // generate search engine flag - static QCString cgiName; // the name of the CGI binary - static QCString cgiURL; // the absolute URL to the CGI binary - static QCString docURL; // the absolute URL to the documentation - static QCString docAbsPath; // the absolute path to the documentation - static QCString binAbsPath; // the absolute path to the doxysearch - static QStrList extDocPathList; // list of external doc. directories. + static QCString projectName; /*!< the name of the project */ + static QCString projectNumber; /*!< the number of the project */ + static QCString outputDir; /*!< the global output directory */ + static QCString outputLanguage; /*!< the output language */ + static bool extractAllFlag; /*!< generate docs for all classes flag */ + static bool extractPrivateFlag; /*!< generate docs for private members flag */ + static bool extractStaticFlag; /*!< generate docs for static members flag */ + static bool hideMemberFlag; /*!< hide undocumented members. */ + static bool hideClassFlag; /*!< hide undocumented members. */ + static bool briefMemDescFlag; /*!< enable `inline' brief member descr. */ + static bool repeatBriefFlag; /*!< repeat brief descriptions. */ + static bool alwaysDetailsFlag; /*!< show details description even if there is only a brief description? */ + static bool fullPathNameFlag; /*!< using full path name in output */ + static QStrList stripFromPath; /*!< list of candidates to strip from the file path */ + static bool internalDocsFlag; /*!< determines what happens to internal docs. */ + static bool classDiagramFlag; /*!< enable the generation of class diagrams. */ + static bool sourceBrowseFlag; /*!< include source code in documentation. */ + static bool inlineSourceFlag; /*!< inline the definition bodies in the docs? */ + static bool stripCommentsFlag; /*!< strip special comments from code fragments? */ + static bool caseSensitiveNames; /*!< determines if output can be mixed case. */ + static bool hideScopeNames; /*!< hide the name of the scope. */ + static bool verbatimHeaderFlag; /*!< enable/disable generation of verb headers. */ + static bool showIncFileFlag; /*!< show include file in file documentation? */ + static bool autoBriefFlag; /*!< should javadoc comments behaves as Qt comments. */ + static bool inheritDocsFlag; /*!< inheritance of documentation enabled? */ + static bool inlineInfoFlag; /*!< show info about inline members? */ + static bool sortMembersFlag; /*!< sort members alphabetically? */ + static bool distributeDocFlag; /*!< distribute docs over member group? */ + static int tabSize; /*!< number of spaces in a tab */ + static QStrList sectionFilterList; /*!< list of section filters that are enabled */ + static bool generateTodoList; /*!< do we want a todo list? */ + static bool generateTestList; /*!< do we want a test list? */ + static bool generateBugList; /*!< do we want a bug list? */ + static QStrList aliasList; /*!< list of aliases */ + static int maxInitLines; /*!< when do we hide values of variable and defines? */ + static bool optimizeForCFlag; /*!< do we parse C code? */ + static bool showUsedFilesFlag; /*!< do we show the list of used files for classes and structs? */ + static bool quietFlag; /*!< generate progress messages flag */ + static bool warningFlag; /*!< generate warnings flag */ + static bool warningUndocFlag; /*!< generate undocumented warnings */ + static QCString warnFormat; /*!< format of the warning messages */ + static QCString warnLogFile; /*!< log file to write warning to */ + static QStrList inputSources; /*!< list of input files */ + static QStrList filePatternList; /*!< list of file patterns */ + static bool recursiveFlag; /*!< scan directories recursively */ + static QStrList excludeSources; /*!< list of files to exclude from the input */ + static QStrList excludePatternList; /*!< list of patterns to exclude from input */ + static QStrList examplePath; /*!< list of example paths */ + static QStrList examplePatternList; /*!< list of example patterns */ + static QStrList imagePath; /*!< list of image paths */ + static QCString inputFilter; /*!< a filter command that is applied to input files */ + static bool filterForSourceFlag; /*!< do we filter source files? */ + static bool alphaIndexFlag; /*!< should an alphabetical index be generated? */ + static int colsInAlphaIndex; /*!< number of columns in the alphabetical index */ + static QStrList ignorePrefixList; /*!< list of prefixes to ignore for the alphabetical index */ + static bool generateHtml; /*!< generate HTML output */ + static QCString htmlOutputDir; /*!< the directory to put the HTML files */ + static QCString headerFile; /*!< the name of the personal HTML header */ + static QCString footerFile; /*!< the name of the personal HTML footer */ + static QCString htmlStyleSheet; /*!< user defined cascading style sheet */ + static bool htmlAlignMemberFlag; /*!< align members in HTML using tables. */ + static bool htmlHelpFlag; /*!< should html help files be generated? */ + static bool htmlHelpChiFlag; /*!< should chi file be generated? */ + static bool htmlHelpTocFlag; /*!< should a binary table of contents be generated? */ + static bool htmlHelpTocExpandFlag; /*!< should module elements be displayed in the table of contents? */ + static bool noIndexFlag; /*!< generate condensed index flag */ + static int enumValuesPerLine; /*!< number of enum values that are put on one line */ + static bool ftvHelpFlag; /*!< should a folder tree view be generated? */ + static int treeViewWidth; /*!< What is the width of the treeview panel? */ + static bool generateLatex; /*!< generate Latex output */ + static QCString latexOutputDir; /*!< the directory to put the Latex files */ + static bool compactLatexFlag; /*!< generate compact LaTeX documentation. */ + static QCString paperType; /*!< the page type to generate docs for */ + static QStrList extraPackageList; /*!< list of extra LaTeX packages. */ + static QCString latexHeaderFile; /*!< the name of the personal LaTeX header */ + static bool pdfHyperFlag; /*!< generate latex prepared creating hyperlinked pdfs. */ + static bool usePDFLatexFlag; /*!< use pdflatex instead of plain latex */ + static bool latexBatchModeFlag; /*!< continue after latex errors? */ + static bool generateRTF; /*!< generate RTF flag */ + static QCString rtfOutputDir; /*!< the directory to put the RTF files */ + static bool compactRTFFlag; /*!< generate more compact RTF */ + static bool rtfHyperFlag; /*!< generate hyper links in RTF */ + static QCString rtfStylesheetFile; /*!< file to load stylesheet definitions from */ + static bool generateMan; /*!< generate Man pages */ + static QCString manOutputDir; /*!< the directory to put the man pages */ + static QCString manExtension; /*!< extension the man page files */ + static bool preprocessingFlag; /*!< enable preprocessing */ + static bool macroExpansionFlag; /*!< expand macros in the source. */ + static bool onlyPredefinedFlag; /*!< expand only predefined macros */ + static bool searchIncludeFlag; /*!< search for included files */ + static QStrList includePath; /*!< list of include paths */ + static QStrList includeFilePatternList; /*!< list of include file patterns */ + static QStrList predefined; /*!< list of predefined macro names. */ + static QStrList expandAsDefinedList; /*!< list of defines to expand */ + static QStrList tagFileList; /*!< list of tag files */ + static QCString genTagFile; /*!< the tag file to generate */ + static bool allExtFlag; /*!< include all external classes flag */ + static QCString perlPath; /*!< the absolute path to perl */ + static bool haveDotFlag; /*!< indicates wether or not dot is present */ + static bool classGraphFlag; /*!< class graph */ + static bool collGraphFlag; /*!< collaboration graph */ + static bool includeGraphFlag; /*!< include graph */ + static bool includedByGraphFlag; /*!< depends on include graph */ + static bool gfxHierarchyFlag; /*!< flag to enable graphical hierarchy */ + static QCString dotPath; /*!< path to the dot tool */ + static int maxDotGraphWidth; /*!< max dot graph width */ + static int maxDotGraphHeight; /*!< max dot graph height */ + static bool generateLegend; /*!< generate legend page */ + static bool dotCleanUp; /*!< remove intermedia dot files? */ + static bool searchEngineFlag; /*!< generate search engine flag */ + static QCString cgiName; /*!< the name of the CGI binary */ + static QCString cgiURL; /*!< the absolute URL to the CGI binary */ + static QCString docURL; /*!< the absolute URL to the documentation */ + static QCString docAbsPath; /*!< the absolute path to the documentation */ + static QCString binAbsPath; /*!< the absolute path to the doxysearch */ + static QStrList extDocPathList; /*!< list of external doc. directories. */ }; #endif diff --git a/src/config.l b/src/config.l index 7221429..e06d867 100644 --- a/src/config.l +++ b/src/config.l @@ -1,4 +1,4 @@ -/* This file was generated by configgen on Thu Feb 8 22:26:39 2001 +/* This file was generated by configgen on Sun Feb 25 14:30:18 2001 * from config_templ.l * * DO NOT EDIT! @@ -106,9 +106,11 @@ int Config::tabSize = 8; QStrList Config::sectionFilterList; bool Config::generateTodoList = TRUE; bool Config::generateTestList = TRUE; +bool Config::generateBugList = TRUE; QStrList Config::aliasList; int Config::maxInitLines = 30; bool Config::optimizeForCFlag = FALSE; +bool Config::showUsedFilesFlag = TRUE; bool Config::quietFlag = FALSE; bool Config::warningFlag = TRUE; bool Config::warningUndocFlag = TRUE; @@ -135,6 +137,8 @@ QCString Config::htmlStyleSheet; bool Config::htmlAlignMemberFlag = TRUE; bool Config::htmlHelpFlag = FALSE; bool Config::htmlHelpChiFlag = FALSE; +bool Config::htmlHelpTocFlag = FALSE; +bool Config::htmlHelpTocExpandFlag = FALSE; bool Config::noIndexFlag = FALSE; int Config::enumValuesPerLine = 4; bool Config::ftvHelpFlag = FALSE; @@ -381,10 +385,12 @@ static void readIncludeFile(const char *incName) "ENABLED_SECTIONS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::sectionFilterList; elemStr=""; } "GENERATE_TODOLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTodoList; } "GENERATE_TESTLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTestList; } +"GENERATE_BUGLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateBugList; } "ALIASES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::aliasList; l->clear(); elemStr=""; } "ALIASES"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::aliasList; elemStr=""; } "MAX_INITIALIZER_LINES"[ \t]*"=" { BEGIN(GetString); s=&maxInitLinesString; s->resize(0); } "OPTIMIZE_OUTPUT_FOR_C"[ \t]*"=" { BEGIN(GetBool); b=&Config::optimizeForCFlag; } +"SHOW_USED_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::showUsedFilesFlag; } "QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; } "WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; } "WARN_IF_UNDOCUMENTED"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningUndocFlag; } @@ -419,6 +425,8 @@ static void readIncludeFile(const char *incName) "HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } "GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; } "GENERATE_CHI"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpChiFlag; } +"BINARY_TOC"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpTocFlag; } +"TOC_EXPAND"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpTocExpandFlag; } "DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; } "ENUM_VALUES_PER_LINE"[ \t]*"=" { BEGIN(GetString); s=&enumValuesPerLineString; s->resize(0); } "GENERATE_TREEVIEW"[ \t]*"=" { BEGIN(GetBool); b=&Config::ftvHelpFlag; } @@ -627,6 +635,7 @@ void dumpConfig() } printf("generateTodoList=`%d'\n",Config::generateTodoList); printf("generateTestList=`%d'\n",Config::generateTestList); + printf("generateBugList=`%d'\n",Config::generateBugList); { char *is=Config::aliasList.first(); while (is) @@ -637,6 +646,7 @@ void dumpConfig() } printf("maxInitLines=`%d'\n",Config::maxInitLines); printf("optimizeForCFlag=`%d'\n",Config::optimizeForCFlag); + printf("showUsedFilesFlag=`%d'\n",Config::showUsedFilesFlag); printf("# configuration options related to warning and progress messages\n"); printf("quietFlag=`%d'\n",Config::quietFlag); printf("warningFlag=`%d'\n",Config::warningFlag); @@ -723,6 +733,8 @@ void dumpConfig() printf("htmlAlignMemberFlag=`%d'\n",Config::htmlAlignMemberFlag); printf("htmlHelpFlag=`%d'\n",Config::htmlHelpFlag); printf("htmlHelpChiFlag=`%d'\n",Config::htmlHelpChiFlag); + printf("htmlHelpTocFlag=`%d'\n",Config::htmlHelpTocFlag); + printf("htmlHelpTocExpandFlag=`%d'\n",Config::htmlHelpTocExpandFlag); printf("noIndexFlag=`%d'\n",Config::noIndexFlag); printf("enumValuesPerLine=`%d'\n",Config::enumValuesPerLine); printf("ftvHelpFlag=`%d'\n",Config::ftvHelpFlag); @@ -866,9 +878,11 @@ void Config::init() Config::sectionFilterList.clear(); Config::generateTodoList = TRUE; Config::generateTestList = TRUE; + Config::generateBugList = TRUE; Config::aliasList.clear(); Config::maxInitLines = 30; Config::optimizeForCFlag = FALSE; + Config::showUsedFilesFlag = TRUE; Config::quietFlag = FALSE; Config::warningFlag = TRUE; Config::warningUndocFlag = TRUE; @@ -895,6 +909,8 @@ void Config::init() Config::htmlAlignMemberFlag = TRUE; Config::htmlHelpFlag = FALSE; Config::htmlHelpChiFlag = FALSE; + Config::htmlHelpTocFlag = FALSE; + Config::htmlHelpTocExpandFlag = FALSE; Config::noIndexFlag = FALSE; Config::enumValuesPerLine = 4; Config::ftvHelpFlag = FALSE; @@ -1383,6 +1399,17 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; + t << "# The GENERATE_BUGLIST tag can be used to enable (YES) or \n"; + t << "# disable (NO) the bug list. This list is created by putting \\bug \n"; + t << "# commands in the documentation.\n"; + t << "\n"; + } + t << "GENERATE_BUGLIST = "; + writeBoolValue(t,Config::generateBugList); + t << "\n"; + if (!sl) + { + t << "\n"; t << "# This tag can be used to specify a number of aliases that acts \n"; t << "# as commands in the documentation. An alias has the form \"name=value\". \n"; t << "# For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n"; @@ -1424,6 +1451,17 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; + t << "# Set the SHOW_USED_FILES tag to NO to disable the list of files generated \n"; + t << "# at the bottom of the documentation of classes and structs. If set to YES the \n"; + t << "# list will mention the files that were used to generate the documentation. \n"; + t << "\n"; + } + t << "SHOW_USED_FILES = "; + writeBoolValue(t,Config::showUsedFilesFlag); + t << "\n"; + if (!sl) + { + t << "\n"; } t << "#---------------------------------------------------------------------------\n"; t << "# configuration options related to warning and progress messages\n"; @@ -1746,6 +1784,27 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; + t << "# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag \n"; + t << "# controls whether a binary table of contents is generated (YES) or a \n"; + t << "# normal table of contents (NO) in the .chm file.\n"; + t << "\n"; + } + t << "BINARY_TOC = "; + writeBoolValue(t,Config::htmlHelpTocFlag); + t << "\n"; + if (!sl) + { + t << "\n"; + t << "# The TOC_EXPAND flag can be set YES to add extra items for group members \n"; + t << "# to the contents of the Html help documentation and to the tree view. \n"; + t << "\n"; + } + t << "TOC_EXPAND = "; + writeBoolValue(t,Config::htmlHelpTocExpandFlag); + t << "\n"; + if (!sl) + { + t << "\n"; t << "# The DISABLE_INDEX tag can be used to turn on/off the condensed index at \n"; t << "# top of each HTML page. The value NO (the default) enables the index and \n"; t << "# the value YES disables it. \n"; diff --git a/src/definition.cpp b/src/definition.cpp index ebd126c..3e220b2 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -42,6 +42,7 @@ Definition::Definition(const char *df,int dl, sourceRefDict=0; m_todoId=0; m_testId=0; + m_bugId=0; } Definition::~Definition() @@ -356,6 +357,7 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName) { initParseCodeContext(); //printf("Read:\n`%s'\n\n",codeFragment.data()); + if (definitionType()==TypeMember) setParameterList((MemberDef *)this); ol.startCodeFragment(); parseCode(ol,scopeName,codeFragment,FALSE,0, bodyDef,actualStart,actualEnd,TRUE); diff --git a/src/definition.h b/src/definition.h index fbf5ebd..70aea3f 100644 --- a/src/definition.h +++ b/src/definition.h @@ -110,13 +110,15 @@ class Definition void writeSourceRefs(OutputList &ol,const char *scopeName); void addSourceReference(MemberDef *d); - void setRefItems(int todoId,int testId) + void setRefItems(int todoId,int testId,int bugId) { if (todoId!=0) m_todoId=todoId; if (testId!=0) m_testId=testId; + if (bugId!=0) m_bugId=bugId; } int todoId() const { return m_todoId; } int testId() const { return m_testId; } + int bugId() const { return m_bugId; } /*! returns the file in which this definition was found */ QCString getDefFileName() const { return defFileName; } @@ -141,8 +143,9 @@ class Definition MemberList *sourceRefList; // list of entities that refer to this // entity in their definition MemberDict *sourceRefDict; - int m_testId; // id for test case - int m_todoId; // id for todo case + int m_testId; // id for test list item + int m_todoId; // id for todo list item + int m_bugId; // id for bug list item }; diff --git a/src/doc.l b/src/doc.l index efeb291..90a2381 100644 --- a/src/doc.l +++ b/src/doc.l @@ -1120,6 +1120,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) outDoc->writeDescItem(); } } + /* {CMD}"bug"[s]?{BN}+ { endArgumentList(); if (!inBugBlock) @@ -1139,6 +1140,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) outDoc->writeDescItem(); } } + */ {CMD}"note"[s]?{BN}+ { endArgumentList(); if (!inNoteBlock) @@ -1316,6 +1318,28 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) currentListIndent.pop(); } } +"\\bug "[0-9]+ { // this tag is generated in an earlier pass + if (Config::generateBugList) + { + QCString numStr=yytext; + numStr=numStr.right(numStr.length()-5); + bool ok; int num = numStr.toUInt(&ok); + RefItem *item = bugList.getRefItem(num); + ASSERT(item!=0); + endArgumentList(); + if (inBlock()) endBlock(); + currentListIndent.push("D"); + outDoc->startDescList(); + outDoc->startBold(); + outDoc->writeObjectLink(0,"bug",item->listAnchor,theTranslator->trBug()+": "); + outDoc->endBold(); + outDoc->endDescTitle(); + outDoc->writeDescItem(); + internalParseDocument(item->text); + outDoc->endDescList(); + currentListIndent.pop(); + } + } {CMD}"deprecated"{BN}+ { endArgumentList(); if (!inDeprecatedBlock) diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 4964bc0..8d11d8e 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -202,7 +202,7 @@ QCString spaces; static void addRelatedPage(const char *name,const QCString &ptitle, const QCString &doc,QList *anchors, const char *fileName,int startLine, - int todoId,int testId,GroupDef *gd=0, + int todoId,int testId,int bugId,GroupDef *gd=0, TagInfo *tagInfo=0 ) { @@ -224,6 +224,7 @@ static void addRelatedPage(const char *name,const QCString &ptitle, pi=new PageInfo(fileName,startLine,baseName,doc,title); pi->todoId=todoId; pi->testId=testId; + pi->bugId=bugId; if (tagInfo) { pi->reference = tagInfo->tagName; @@ -274,13 +275,14 @@ static void addRelatedPage(Entry *root) if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) break; } addRelatedPage(root->name,root->args,root->doc,root->anchors, - root->fileName,root->startLine,root->todoId,root->testId,gd,root->tagInfo + root->fileName,root->startLine,root->todoId, + root->testId,root->bugId,gd,root->tagInfo ); } //---------------------------------------------------------------------------- -static void addRefItem(int todoId,int testId,const char *prefix, +static void addRefItem(int todoId,int testId,int bugId,const char *prefix, const char *name,const char *title,const char *args=0) { @@ -311,7 +313,7 @@ static void addRefItem(int todoId,int testId,const char *prefix, doc += item->text; doc += "
  • \n"; //printf("Todo page: %s\n",doc.data()); - addRelatedPage("todo",theTranslator->trTodoList(),doc,0,"generated",1,0,0); + addRelatedPage("todo",theTranslator->trTodoList(),doc,0,"generated",1,0,0,0); item->written=TRUE; } @@ -340,7 +342,36 @@ static void addRefItem(int todoId,int testId,const char *prefix, doc += "\n
    "; doc += item->text; doc += "
    \n"; - addRelatedPage("test",theTranslator->trTestList(),doc,0,"generated",1,0,0); + addRelatedPage("test",theTranslator->trTestList(),doc,0,"generated",1,0,0,0); + + item->written=TRUE; + } + + //////////////////////////////////////////////////////////// + // add item to the bug list + //////////////////////////////////////////////////////////// + + if (bugId>0 && Config::generateBugList) + { + RefItem *item = bugList.getRefItem(bugId); + ASSERT(item!=0); + if (item->written) return; + + QCString doc; + doc += "
    \\anchor "; + doc += item->listAnchor; + doc += "\n"; + doc += prefix; + doc += " \\_internalref "; + doc += name; + doc += " \""; + doc += title; + doc += "\""; + if (args) doc += args; + doc += "
    \n
    "; + doc += item->text; + doc += "
    \n"; + addRelatedPage("bug",theTranslator->trBugList(),doc,0,"generated",1,0,0,0); item->written=TRUE; } @@ -377,7 +408,7 @@ static void buildGroupList(Entry *root) Doxygen::groupList.append(gd); Doxygen::groupDict.insert(root->name,gd); addGroupToGroups(root,gd); - gd->setRefItems(root->todoId,root->testId); + gd->setRefItems(root->todoId,root->testId,root->bugId); } } EntryListIterator eli(*root->sublist); @@ -419,7 +450,7 @@ static void buildFileList(Entry *root) fd->setDocumentation(root->doc,FALSE); fd->setBriefDescription(root->brief); fd->addSectionsToDefinition(root->anchors); - fd->setRefItems(root->todoId,root->testId); + fd->setRefItems(root->todoId,root->testId,root->bugId); QListIterator sli(*root->groups); QCString *s; for (;(s=sli.current());++sli) @@ -658,7 +689,7 @@ static void buildClassList(Entry *root) fd->insertClass(cd); } addClassToGroups(root,cd); - cd->setRefItems(root->todoId,root->testId); + cd->setRefItems(root->todoId,root->testId,root->bugId); if (!root->subGrouping) cd->setSubGrouping(FALSE); } else // new class @@ -707,7 +738,7 @@ static void buildClassList(Entry *root) if (!root->subGrouping) cd->setSubGrouping(FALSE); addClassToGroups(root,cd); - cd->setRefItems(root->todoId,root->testId); + cd->setRefItems(root->todoId,root->testId,root->bugId); // see if the class is found inside a namespace bool found=addNamespace(root,cd); @@ -819,7 +850,7 @@ static void buildNamespaceList(Entry *root) // insert the namespace in the file definition if (fd) fd->insertNamespace(nd); addNamespaceToGroups(root,nd); - nd->setRefItems(root->todoId,root->testId); + nd->setRefItems(root->todoId,root->testId,root->bugId); } else /* if (!root->doc.isEmpty() || !root->brief.isEmpty() || @@ -839,7 +870,7 @@ static void buildNamespaceList(Entry *root) //printf("Adding namespace to group\n"); addNamespaceToGroups(root,nd); - nd->setRefItems(root->todoId,root->testId); + nd->setRefItems(root->todoId,root->testId,root->bugId); bool ambig; // file definition containing the namespace nd @@ -964,7 +995,7 @@ static void findUsingDirectives(Entry *root) // add class to the list Doxygen::namespaceList.inSort(nd); Doxygen::namespaceDict.insert(root->name,nd); - nd->setRefItems(root->todoId,root->testId); + nd->setRefItems(root->todoId,root->testId,root->bugId); } } } @@ -1182,7 +1213,7 @@ static MemberDef *addVariableToClass( // add the member to the class } cd->insertMember(md); - md->setRefItems(root->todoId,root->testId); + md->setRefItems(root->todoId,root->testId,root->bugId); //TODO: insert FileDef instead of filename strings. cd->insertUsedFile(root->fileName); @@ -1274,7 +1305,7 @@ static MemberDef *addVariableToFile( // variable already in the scope { addMemberDocs(root,md,def,0,FALSE); - md->setRefItems(root->todoId,root->testId); + md->setRefItems(root->todoId,root->testId,root->bugId); return md; } @@ -1324,7 +1355,7 @@ static MemberDef *addVariableToFile( // md->setMemberGroup(memberGroupDict[root->mGrpId]); //} - md->setRefItems(root->todoId,root->testId); + md->setRefItems(root->todoId,root->testId,root->bugId); if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@') { nd->insertMember(md); @@ -1355,25 +1386,46 @@ static MemberDef *addVariableToFile( return md; } +/*! See if the return type string \a type is that of a function pointer + * \returns -1 if this is not a function pointer variable or + * the index at which the brace of (...*name) was found. + */ +static int findFunctionPtr(const QCString &type) +{ + static const QRegExp re("([^)]*)"); + int i=-1; + if (!type.isEmpty() && // return type is non-empty + (i=type.find(re,0))!=-1 && // contains a (* + type.find("operator")==-1 && // not an operator + type.find(")(")==-1 // not a function pointer return type + ) + { + return i; + } + else + { + return -1; + } +} + //---------------------------------------------------------------------- // Searches the Entry tree for Variable documentation sections. // If found they are stored in their class or in the global list. void buildVarList(Entry *root) { - static const QRegExp re("([^)]*)"); int i=-1; if (!root->name.isEmpty() && - //root->type!="class" && root->type!="interface" && - //root->type!="struct" && root->type!="union" && (root->type.isEmpty() || compoundKeywordDict.find(root->type)==0) && ( - (root->section==Entry::VARIABLE_SEC + (root->section==Entry::VARIABLE_SEC // it's a variable ) || - (root->section==Entry::FUNCTION_SEC && // function variable - !root->type.isEmpty() && root->type.find(re,0)!=-1 && - // special case to catch function pointers - root->type.find("operator")==-1 && root->type.find(")(")==-1 + (root->section==Entry::FUNCTION_SEC && // or maybe a function pointer variable + (i=findFunctionPtr(root->type))!=-1 + //!root->type.isEmpty() && // return type is non-empty + // root->type.find(re,0)!=-1 && // contains a (* + // /root->type.find("operator")==-1 && // not an operator + // root->type.find(")(")==-1 // not a function pointer return type ) ) ) // documented variable @@ -1404,7 +1456,6 @@ void buildVarList(Entry *root) } else { - i=root->type.find(re,0); if (i!=-1) // function pointer { int ai = root->type.find('[',i); @@ -1915,14 +1966,14 @@ static void buildMemberList(Entry *root) // add member to namespace nd->insertMember(md); md->setNamespace(nd); - md->setRefItems(root->todoId,root->testId); + md->setRefItems(root->todoId,root->testId,root->bugId); } else if (fd) { // add member to the file fd->insertMember(md); md->setFileDef(fd); - md->setRefItems(root->todoId,root->testId); + md->setRefItems(root->todoId,root->testId,root->bugId); } // add member to the list of file members @@ -2497,12 +2548,12 @@ static void computeMemberReferences() //---------------------------------------------------------------------- -static void addTodoTestReferences() +static void addTodoTestBugReferences() { ClassDef *cd=Doxygen::classList.first(); while (cd) { - addRefItem(cd->todoId(),cd->testId(),"class",cd->getOutputFileBase(),cd->name()); + addRefItem(cd->todoId(),cd->testId(),cd->bugId(),"class",cd->getOutputFileBase(),cd->name()); cd=Doxygen::classList.next(); } FileName *fn=Doxygen::inputNameList.first(); @@ -2511,7 +2562,7 @@ static void addTodoTestReferences() FileDef *fd=fn->first(); while (fd) { - addRefItem(fd->todoId(),fd->testId(),"file",fd->getOutputFileBase(),fd->name()); + addRefItem(fd->todoId(),fd->testId(),fd->bugId(),"file",fd->getOutputFileBase(),fd->name()); fd=fn->next(); } fn=Doxygen::inputNameList.next(); @@ -2519,20 +2570,20 @@ static void addTodoTestReferences() NamespaceDef *nd=Doxygen::namespaceList.first(); while (nd) { - addRefItem(nd->todoId(),nd->testId(),"namespace",nd->getOutputFileBase(),nd->name()); + addRefItem(nd->todoId(),nd->testId(),nd->bugId(),"namespace",nd->getOutputFileBase(),nd->name()); nd=Doxygen::namespaceList.next(); } GroupDef *gd=Doxygen::groupList.first(); while (gd) { - addRefItem(gd->todoId(),gd->testId(),"group",gd->getOutputFileBase(),gd->groupTitle()); + addRefItem(gd->todoId(),gd->testId(),gd->bugId(),"group",gd->getOutputFileBase(),gd->groupTitle()); gd=Doxygen::groupList.next(); } PageSDictIterator pdi(*Doxygen::pageSDict); PageInfo *pi=0; for (pdi.toFirst();(pi=pdi.current());++pdi) { - addRefItem(pi->todoId,pi->testId,"page",pi->name,pi->title); + addRefItem(pi->todoId,pi->testId,pi->bugId,"page",pi->name,pi->title); } MemberNameListIterator mnli(Doxygen::memberNameList); MemberName *mn=0; @@ -2552,7 +2603,7 @@ static void addTodoTestReferences() if (Config::optimizeForCFlag) memLabel="field"; if (d) { - addRefItem(md->todoId(),md->testId(),memLabel,d->getOutputFileBase()+":"+md->anchor(),scopeName+"::"+md->name(),md->argsString()); + addRefItem(md->todoId(),md->testId(),md->bugId(),memLabel,d->getOutputFileBase()+":"+md->anchor(),scopeName+"::"+md->name(),md->argsString()); } } } @@ -2573,7 +2624,7 @@ static void addTodoTestReferences() if (Config::optimizeForCFlag) memLabel="global"; if (d) { - addRefItem(md->todoId(),md->testId(),memLabel,d->getOutputFileBase()+":"+md->anchor(),md->name(),md->argsString()); + addRefItem(md->todoId(),md->testId(),md->bugId(),memLabel,d->getOutputFileBase()+":"+md->anchor(),md->name(),md->argsString()); } } } @@ -2684,7 +2735,7 @@ static void addMemberDocs(Entry *root, md->setBodyDef(fd); } - md->setRefItems(root->todoId,root->testId); + md->setRefItems(root->todoId,root->testId,root->bugId); } } @@ -3554,7 +3605,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl mn->append(md); cd->insertMember(md); cd->insertUsedFile(root->fileName); - md->setRefItems(root->todoId,root->testId); + md->setRefItems(root->todoId,root->testId,root->bugId); } } else // unrelated function with the same name as a member @@ -3678,7 +3729,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl mn->append(md); cd->insertMember(md); cd->insertUsedFile(root->fileName); - md->setRefItems(root->todoId,root->testId); + md->setRefItems(root->todoId,root->testId,root->bugId); if (newMemberName) { //printf("Adding memberName=%s\n",mn->memberName()); @@ -3730,23 +3781,26 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl static void findMemberDocumentation(Entry *root) { int i=-1,l; - QRegExp re("([a-z_A-Z0-9: ]*\\*+[ \\*]*"); + //QRegExp re("([a-z_A-Z0-9: ]*\\*+[ \\*]*"); Debug::print(Debug::FindMembers,0, "root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->memSpec=%d root->mGrpId=%d\n", root->type.data(),root->inside.data(),root->name.data(),root->args.data(),root->section,root->memSpec,root->mGrpId ); bool isFunc=TRUE; - if (!root->type.isEmpty() && (i=re.match(root->type,0,&l))!=-1) // func variable/typedef to func ptr + if ( + findFunctionPtr(root->type)!=-1 // func variable/typedef to func ptr + //!root->type.isEmpty() && (i=re.match(root->type,0,&l))!=-1 + ) { root->args+=root->type.right(root->type.length()-i-l); root->type=root->type.left(i+l); isFunc=FALSE; } - else if (root->name.find(re)!=-1 && root->name.find("operator")==-1) - // func ptr entered with \fn, \var or \typedef - { - isFunc=FALSE; - } + //else if (root->name.find(re)!=-1 && root->name.find("operator")==-1) + // // func ptr entered with \fn, \var or \typedef + //{ + // isFunc=FALSE; + //} else if ((root->type.isEmpty() && root->name.left(8)=="typedef ") || root->args.find('(')==-1) { @@ -3772,9 +3826,9 @@ static void findMemberDocumentation(Entry *root) !root->type.isEmpty() && /*root->type.left(8)!="typedef " &&*/ compoundKeywordDict.find(root->type)==0 ) - ) && - (!root->doc.isEmpty() || !root->brief.isEmpty() || root->bodyLine!=-1 || - (root->memSpec&Entry::Inline) || root->mGrpId!=-1 + ) && !root->stat && + (!root->doc.isEmpty() || !root->brief.isEmpty() || /*root->bodyLine!=-1 ||*/ + (root->memSpec&Entry::Inline) || root->mGrpId!=-1 ) ) { @@ -3907,7 +3961,7 @@ static void findEnums(Entry *root) //{ // md->setMemberGroup(memberGroupDict[root->mGrpId]); //} - md->setRefItems(root->todoId,root->testId); + md->setRefItems(root->todoId,root->testId,root->bugId); if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@') { if (Config::hideScopeNames) @@ -4615,7 +4669,7 @@ static void findDefineDocumentation(Entry *root) md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig)); md->addSectionsToDefinition(root->anchors); md->setMaxInitLines(root->initLines); - md->setRefItems(root->todoId,root->testId); + md->setRefItems(root->todoId,root->testId,root->bugId); if (root->mGrpId!=-1) md->setMemberGroupId(root->mGrpId); addMemberToGroups(root,md); } @@ -4648,7 +4702,7 @@ static void findDefineDocumentation(Entry *root) bool ambig; md->setBodyDef(findFileDef(Doxygen::inputNameDict,root->fileName,ambig)); md->addSectionsToDefinition(root->anchors); - md->setRefItems(root->todoId,root->testId); + md->setRefItems(root->todoId,root->testId,root->bugId); if (root->mGrpId!=-1) md->setMemberGroupId(root->mGrpId); addMemberToGroups(root,md); } @@ -4693,7 +4747,7 @@ static void buildPageList(Entry *root) { QCString title=root->args.stripWhiteSpace(); if (title.isEmpty()) title=theTranslator->trMainPage(); - addRefItem(root->todoId,root->testId,"page","index",title); + addRefItem(root->todoId,root->testId,root->bugId,"page","index",title); } EntryListIterator eli(*root->sublist); Entry *e; @@ -6154,8 +6208,8 @@ void parseInput() msg("Adding source references...\n"); addSourceReferences(); - msg("Adding todo/test references...\n"); - addTodoTestReferences(); + msg("Adding todo/test/bug list item...\n"); + addTodoTestBugReferences(); } diff --git a/src/doxygen.pro.in b/src/doxygen.pro.in index 4275ce4..11a21a4 100644 --- a/src/doxygen.pro.in +++ b/src/doxygen.pro.in @@ -15,7 +15,7 @@ # TMake project file for doxygen TEMPLATE = app.t -CONFIG = console warn_on $extraopt +CONFIG = console warn_on $extraopts HEADERS = doxygen.h SOURCES = main.cpp unix:LIBS += -L../lib -ldoxygen -lqtools diff --git a/src/entry.cpp b/src/entry.cpp index 297831f..beb52bb 100644 --- a/src/entry.cpp +++ b/src/entry.cpp @@ -76,6 +76,7 @@ Entry::Entry(const Entry &e) initLines = e.initLines; todoId = e.todoId; testId = e.testId; + bugId = e.bugId; tagInfo = e.tagInfo; sublist = new QList; sublist->setAutoDelete(TRUE); @@ -223,6 +224,7 @@ void Entry::reset() mGrpId = -1; todoId = 0; testId = 0; + bugId = 0; section = EMPTY_SEC; mtype = Method; virt = Normal; diff --git a/src/entry.h b/src/entry.h index 05d85c1..1dd7f91 100644 --- a/src/entry.h +++ b/src/entry.h @@ -25,14 +25,21 @@ enum Protection { Public, Protected, Private } ; enum Specifier { Normal, Virtual, Pure } ; enum MethodTypes { Method, Signal, Slot, DCOP, Property }; +/*! \brief This class stores information about an inheritance relation + */ struct BaseInfo { + /*! Creates an object representing an inheritance relation */ BaseInfo(const char *n,Protection p,Specifier v) : name(n),prot(p),virt(v) {} - QCString name; // the name of the base class - Protection prot; // inheritance type - Specifier virt; // virtualness + QCString name; //!< the name of the base class + Protection prot; //!< inheritance type + Specifier virt; //!< virtualness }; +/*! \brief This class contains the information about the argument of a + * function or template + * + */ struct Argument { /*! Construct a new argument. */ @@ -77,22 +84,36 @@ struct Argument QCString docs; /*!< Argument's documentation (may be empty) */ }; +/*! \brief This class represents an function or template argument list. + * + * This class also stores some information about member that is typically + * put after the argument list, such as wether the member is const, + * volatile or pure virtual. + */ class ArgumentList : public QList { public: - ~ArgumentList() {} + /*! Creates an empty argument list */ ArgumentList() : QList(), constSpecifier(FALSE), volatileSpecifier(FALSE), pureSpecifier(FALSE) {} + /*! Destroys the argument list */ + ~ArgumentList() {} bool hasDocumentation() const; + /*! Does the member modify the state of the class? default: FALSE. */ bool constSpecifier; + /*! Is the member volatile? default: FALSE. */ bool volatileSpecifier; + /*! Is this a pure virtual member? default: FALSE */ bool pureSpecifier; }; typedef QListIterator ArgumentListIterator; +/*! \brief This struct is used to capture the tag file information + * for an Entry. + */ struct TagInfo { QCString tagName; @@ -100,7 +121,10 @@ struct TagInfo QCString anchor; }; -/*! Raw entry. parseMain() in scanner.l will generate a tree of these +/*! \brief Represents an unstructured piece of information, about an + * entity found in the sources. + * + * parseMain() in scanner.l will generate a tree of these * entries. */ class Entry @@ -166,7 +190,11 @@ class Entry ~Entry(); int getSize(); + /*! Adds entry \e as a child to this entry */ void addSubEntry (Entry* e) ; + /*! Restore the state of this Entry to the default value it has + * at construction time. + */ void reset(); int section; //!< entry type (see Sections); @@ -207,8 +235,9 @@ class Entry QList *anchors; //!< list of anchors defined in this entry QCString fileName; //!< file this entry was extracted from int startLine; //!< start line of entry in the source - int todoId; //!< id of the todo item of this entry - int testId; //!< id of the test item of this entry + int todoId; //!< id of the todo list item of this entry + int testId; //!< id of the test list item of this entry + int bugId; //!< id of the bug list item of this entry TagInfo *tagInfo; //!< tag file info static int num; //!< counts the total number of entries private: diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp index 5936894..650ff82 100644 --- a/src/ftvhelp.cpp +++ b/src/ftvhelp.cpp @@ -18,6 +18,7 @@ #include "config.h" #include "message.h" #include "doxygen.h" +#include "language.h" const char treeview_data[]= @@ -273,7 +274,10 @@ static void generateFolderTreeViewData() else { QTextStream t(&f); - t << ""; + t << "<html><head>"; + t << "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=" + << theTranslator->idLanguageCharset() << "\">\n"; + t << "<title>"; if (Config::projectName.isEmpty()) { t << "Doxygen Documentation"; diff --git a/src/groupdef.cpp b/src/groupdef.cpp index 43ff8f3..9b0e840 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -175,12 +175,12 @@ void GroupDef::insertMember(MemberDef *md) return; // member already added } } - mni->append(new MemberInfo(md,Public,Normal)); + mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE)); } else { mni = new MemberNameInfo(md->name()); - mni->append(new MemberInfo(md,Public,Normal)); + mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE)); allMemberNameInfoDict->insert(mni->memberName(),mni); } allMemberList->append(md); @@ -262,7 +262,7 @@ void GroupDef::computeAnchors() void GroupDef::writeDocumentation(OutputList &ol) { ol.pushGeneratorState(); - ol.disable(OutputGenerator::Man); + //ol.disable(OutputGenerator::Man); startFile(ol,fileName,title); startTitle(ol,getOutputFileBase()); ol.docify(title); diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index aec995f..a0a46d7 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -275,9 +275,16 @@ void HtmlGenerator::writeStyleInfo(int part) else // write user defined style sheet { QFileInfo cssfi(Config::htmlStyleSheet); - startPlainFile(cssfi.fileName()); - t << fileToString(Config::htmlStyleSheet); - endPlainFile(); + if (!cssfi.exists() || !cssfi.isFile() || !cssfi.isReadable()) + { + err("Error: style sheet %s does not exist or is not readable!", Config::htmlStyleSheet.data()); + } + else + { + startPlainFile(cssfi.fileName()); + t << fileToString(Config::htmlStyleSheet); + endPlainFile(); + } } } } diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp index e3c2608..5d8936e 100644 --- a/src/htmlhelp.cpp +++ b/src/htmlhelp.cpp @@ -305,8 +305,8 @@ void HtmlHelp::createProjectFile() "Contents file=index.hhc\n" "Default Window=main\n" "Default topic=" << indexName << "\n" - "Index file=index.hhk\n" - "Binary TOC=YES\n"; + "Index file=index.hhk\n"; + if (Config::htmlHelpTocFlag) t << "Binary TOC=YES\n"; if (Config::htmlHelpChiFlag) t << "Create CHI file=YES\n"; t << "Title=" << Config::projectName << endl << endl; @@ -388,6 +388,13 @@ void HtmlHelp::addContentsItem(bool isDir, const char *name,const char *ref, const char *anchor) { + // If we're using a binary toc then folders cannot have links. + if(Config::htmlHelpTocFlag && isDir) + { + ref = 0; + anchor = 0; + } + int i; for (i=0;i<dc;i++) cts << " "; cts << "<LI><OBJECT type=\"text/sitemap\">"; cts << "<param name=\"Name\" value=\"" << name << "\">"; diff --git a/src/index.cpp b/src/index.cpp index bdb93e2..5f372d2 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -408,7 +408,6 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper) } -#if 0 //---------------------------------------------------------------------------- /*! Generates HTML Help tree of classes */ @@ -416,8 +415,8 @@ void writeClassTree(BaseClassList *cl) { HtmlHelp *htmlHelp=0; FTVHelp *ftvHelp=0; - bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag && Config::htmlHelpGroupsOnly; - bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag && Config::htmlHelpGroupsOnly; + bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag; + bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag; if (hasHtmlHelp) { htmlHelp = HtmlHelp::getInstance(); @@ -448,7 +447,7 @@ void writeClassTree(BaseClassList *cl) } if (hasFtvHelp) { - ftvHelp->addContentsItem(hasChildren,cd->name(),cd->getOutputFileBase()); + ftvHelp->addContentsItem(hasChildren,cd->getReference(),cd->getOutputFileBase(),0,cd->name()); } } if (hasChildren) @@ -472,8 +471,8 @@ void writeClassTree(ClassList *cl) { HtmlHelp *htmlHelp=0; FTVHelp *ftvHelp=0; - bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag && Config::htmlHelpGroupsOnly; - bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag && Config::htmlHelpGroupsOnly; + bool hasHtmlHelp = Config::generateHtml && Config::htmlHelpFlag; + bool hasFtvHelp = Config::generateHtml && Config::ftvHelpFlag; if (hasHtmlHelp) { htmlHelp = HtmlHelp::getInstance(); @@ -513,7 +512,6 @@ void writeClassTree(ClassList *cl) } } } -#endif //---------------------------------------------------------------------------- @@ -1937,13 +1935,13 @@ void writeExampleIndex(OutputList &ol) { ol.writeObjectLink(0,n,0,pi->title); if (hasHtmlHelp) htmlHelp->addContentsItem(FALSE,pi->title,n); - if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,0,n,0,pi->title); + if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,pi->getReference(),n,0,pi->title); } else { ol.writeObjectLink(0,n,0,pi->name); if (hasHtmlHelp) htmlHelp->addContentsItem(FALSE,pi->name,n); - if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,0,n,0,pi->name); + if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,pi->getReference(),n,0,pi->name); } ol.writeString("\n"); } @@ -2207,85 +2205,192 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd) ol.endIndexList(); } -#if 0 - // write namespaces - NamespaceList *namespaceList=gd->namespaceList; - if (namespaceList->count()>0) + + if (Config::htmlHelpTocExpandFlag) { - NamespaceDef *nsd=namespaceList->first(); - while (nsd) + // write members + struct MemInfo + { + MemberList *list; + QCString name; + }; + MemInfo memberLists[] = + { + { &gd->defineMembers, theTranslator->trDefines() }, + { &gd->typedefMembers, theTranslator->trTypedefs() }, + { &gd->enumMembers, theTranslator->trEnumerations() }, + { &gd->enumValMembers, theTranslator->trEnumerationValues() }, + { &gd->funcMembers, theTranslator->trFunctions() }, + { &gd->varMembers, theTranslator->trVariables() }, + { &gd->protoMembers, theTranslator->trFuncProtos() }, + { 0,0 } + }; + + MemberList *members; + MemInfo *pMemInfo; + for (pMemInfo=&memberLists[0]; (members=pMemInfo->list) ; pMemInfo++) + { + if (members->count()>0) { + if(htmlHelp) + { + htmlHelp->addContentsItem(TRUE, convertToHtml(pMemInfo->name), gd->getOutputFileBase(),0); + htmlHelp->incContentsDepth(); + } + + if(ftvHelp) + { + + ftvHelp->addContentsItem(TRUE, gd->getReference(), gd->getOutputFileBase(), 0, pMemInfo->name); + ftvHelp->incContentsDepth(); + } + + MemberDef *md=members->first(); + while (md) + { + GroupDef *gd=md->getGroupDef(); if(htmlHelp) - htmlHelp->addContentsItem(FALSE,convertToHtml(nsd->name()).data(),nsd->getOutputFileBase()); + { + htmlHelp->addContentsItem(FALSE,md->name(),gd->getOutputFileBase(),md->anchor()); + } if(ftvHelp) - ftvHelp->addContentsItem(FALSE,convertToHtml(nsd->name()).data(),nsd->getOutputFileBase()); - nsd=namespaceList->next(); + { + ftvHelp->addContentsItem(FALSE,gd->getReference(),gd->getOutputFileBase(),md->anchor(),md->name()); + } + md=members->next(); + } + + if(htmlHelp) htmlHelp->decContentsDepth(); + if(ftvHelp) ftvHelp->decContentsDepth(); + } - } + } - // write classes - writeClassTree(gd->classList); - - // write members - MemberList memberLists[7] = { - gd->defineMembers, - gd->typedefMembers, - gd->enumMembers, - gd->enumValMembers, - gd->funcMembers, - gd->varMembers, - gd->protoMembers - }; - MemberList members; - for (int i=0;i<7;i++) - { - members=memberLists[i]; - if (members.count()>0) + // write namespaces + NamespaceList *namespaceList=gd->namespaceList; + if (namespaceList->count()>0) + { + if(htmlHelp) { - MemberDef *md=members.first(); - while (md) - { - if(htmlHelp) - htmlHelp->addContentsItem(FALSE,md->name(),md->getGroupDef()->getOutputFileBase().data(),md->anchor()); - if(ftvHelp) - ftvHelp->addContentsItem(FALSE,md->name(),md->getGroupDef()->getOutputFileBase().data(),md->anchor()); - md=members.next(); - } + htmlHelp->addContentsItem(TRUE, convertToHtml(theTranslator->trNamespaces()), gd->getOutputFileBase(), 0); + htmlHelp->incContentsDepth(); } - } - - // write file list - FileList *fileList=gd->fileList; - if (fileList->count()>0) - { + + if(ftvHelp) + { + + ftvHelp->addContentsItem(TRUE, gd->getReference(), gd->getOutputFileBase(), 0, theTranslator->trNamespaces()); + ftvHelp->incContentsDepth(); + } + + NamespaceDef *nsd=namespaceList->first(); + while (nsd) + { + if(htmlHelp) + { + htmlHelp->addContentsItem(FALSE, convertToHtml(nsd->name()), nsd->getOutputFileBase()); + } + if(ftvHelp) + { + ftvHelp->addContentsItem(FALSE, nsd->getReference(), nsd->getOutputFileBase(), 0, convertToHtml(nsd->name())); + } + nsd=namespaceList->next(); + } + if (htmlHelp) htmlHelp->decContentsDepth(); + if (ftvHelp) ftvHelp->decContentsDepth(); + } + + // write classes + if(gd->classList->count()>0) + { + if(htmlHelp) + { + htmlHelp->addContentsItem(TRUE, convertToHtml(theTranslator->trClasses()), gd->getOutputFileBase(), 0); + htmlHelp->incContentsDepth(); + } + + if(ftvHelp) + { + + ftvHelp->addContentsItem(TRUE, gd->getReference(), gd->getOutputFileBase(), 0, theTranslator->trClasses()); + ftvHelp->incContentsDepth(); + } + + writeClassTree(gd->classList); + if(htmlHelp) htmlHelp->decContentsDepth(); + if(ftvHelp) ftvHelp->decContentsDepth(); + } + + // write file list + FileList *fileList=gd->fileList; + if (fileList->count()>0) + { + if(htmlHelp) + { + htmlHelp->addContentsItem(TRUE, convertToHtml(theTranslator->trFiles()), gd->getOutputFileBase(), 0); + htmlHelp->incContentsDepth(); + } + + if(ftvHelp) + { + + ftvHelp->addContentsItem(TRUE, gd->getReference(), gd->getOutputFileBase(), 0, theTranslator->trFiles()); + ftvHelp->incContentsDepth(); + } + FileDef *fd=fileList->first(); while (fd) { - if(htmlHelp) - htmlHelp->addContentsItem(FALSE,convertToHtml(fd->name()),fd->getOutputFileBase().data()); - if(ftvHelp) - ftvHelp->addContentsItem(FALSE,convertToHtml(fd->name()),fd->getOutputFileBase().data()); - fd=fileList->next(); + if(htmlHelp) + htmlHelp->addContentsItem(FALSE,convertToHtml(fd->name()),fd->getOutputFileBase()); + if(ftvHelp) + ftvHelp->addContentsItem(FALSE, fd->getReference(), fd->getOutputFileBase(), 0, convertToHtml(fd->name())); + fd=fileList->next(); } - } - - // write examples - PageSDictIterator eli(*(gd->exampleDict)); - { + if(htmlHelp) + htmlHelp->decContentsDepth(); + if(ftvHelp) + ftvHelp->decContentsDepth(); + } + + // write examples + if (gd->exampleDict->count()>0) + { + if(htmlHelp) + { + htmlHelp->addContentsItem(TRUE, convertToHtml(theTranslator->trExamples()), gd->getOutputFileBase(), 0); + htmlHelp->incContentsDepth(); + } + + if(ftvHelp) + { + ftvHelp->addContentsItem(TRUE, gd->getReference(), gd->getOutputFileBase(), 0, theTranslator->trExamples()); + ftvHelp->incContentsDepth(); + } + + PageSDictIterator eli(*(gd->exampleDict)); PageInfo *pi=eli.toFirst(); while (pi) { - if(htmlHelp) - htmlHelp->addContentsItem(FALSE,convertToHtml(pi->name),convertNameToFile(pi->name)+"-example"); - if(ftvHelp) - ftvHelp->addContentsItem(FALSE,convertToHtml(pi->name),convertNameToFile(pi->name)+"-example"); - pi=++eli; + if(htmlHelp) + { + htmlHelp->addContentsItem(FALSE,convertToHtml(pi->name),convertNameToFile(pi->name)+"-example"); + } + if(ftvHelp) + { + ftvHelp->addContentsItem(FALSE,pi->getReference(),convertToHtml(pi->name)+"-example",0,convertNameToFile(pi->name)); + } + pi=++eli; } - } -#endif - if(htmlHelp) htmlHelp->decContentsDepth(); - if(ftvHelp) ftvHelp->decContentsDepth(); + if (htmlHelp) htmlHelp->decContentsDepth(); + if (ftvHelp) ftvHelp->decContentsDepth(); + } + } + + if (htmlHelp) htmlHelp->decContentsDepth(); + if (ftvHelp) ftvHelp->decContentsDepth(); + gd->visited=TRUE; } } diff --git a/src/language.cpp b/src/language.cpp index c6f5d78..59c1221 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -126,6 +126,10 @@ bool setTranslator(const char *langName) { theTranslator=new TranslatorChinese; } + else if (L_EQUAL("norwegian")) + { + theTranslator=new TranslatorNorwegian; + } #endif else // use the default language (i.e. english) { diff --git a/src/libdoxygen.pro.in b/src/libdoxygen.pro.in index 9f2dece..b5d4f59 100644 --- a/src/libdoxygen.pro.in +++ b/src/libdoxygen.pro.in @@ -15,7 +15,7 @@ # TMake project file for doxygen TEMPLATE = libdoxygen.t -CONFIG = console warn_on staticlib +CONFIG = console warn_on staticlib $extraopts HEADERS = doxygen.h scanner.h doc.h classdef.h classlist.h memberdef.h \ membername.h index.h memberlist.h definition.h \ entry.h logos.h instdox.h message.h code.h \ diff --git a/src/mangen.cpp b/src/mangen.cpp index 1a61011..63cbed0 100644 --- a/src/mangen.cpp +++ b/src/mangen.cpp @@ -95,6 +95,10 @@ void ManGenerator::startFile(const char *name,const char *,bool) { fileName=fileName.right(fileName.length()-10); } + else if (fileName.left(6)=="group_") + { + fileName=fileName.right(fileName.length()-6); + } int i; if ((i=fileName.findRev('.'))!=-1) @@ -102,7 +106,9 @@ void ManGenerator::startFile(const char *name,const char *,bool) fileName=fileName.left(i); } if (convertToQCString(fileName.right(2))!=Config::manExtension) + { fileName+=Config::manExtension; + } startPlainFile(fileName); firstCol=TRUE; } @@ -114,7 +120,7 @@ void ManGenerator::endFile() void ManGenerator::endTitleHead(const char *,const char *name) { - t << ".TH " << name << " 3 \"" << dateToString(FALSE) << "\" \""; + t << ".TH \"" << name << "\" 3 \"" << dateToString(FALSE) << "\" \""; if (Config::projectName.isEmpty()) t << "Doxygen"; else diff --git a/src/mangen.h b/src/mangen.h index 96aa174..785cd75 100644 --- a/src/mangen.h +++ b/src/mangen.h @@ -199,7 +199,7 @@ class ManGenerator : public OutputGenerator void endDescTable() {} void startDescTableTitle() { writeListItem(); startBold(); } void endDescTableTitle() { endBold(); } - void startDescTableData() { } + void startDescTableData() { t << endl; firstCol=TRUE; } void endDescTableData() {} void startDotGraph() {} diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 4489b7d..d83f236 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -853,7 +853,7 @@ void MemberDef::writeDeclaration(OutputList &ol, * all active output formats. */ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, - const char *scopeName, + const char *scName, Definition *container ) { @@ -861,6 +861,15 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, if (getClassDef()==0 && isStatic() && !Config::extractStaticFlag) return; // hide member that are documented in their own group if (group!=0 && container->definitionType()!=TypeGroup) return; + + // if this member is in a group find the real scope name. + QCString scopeName = scName; + if (container->definitionType()==TypeGroup) + { + if (getClassDef()) scopeName=getClassDef()->name(); + else if (getNamespaceDef()) scopeName=getClassDef()->name(); + else if (getFileDef()) scopeName=getClassDef()->name(); + } bool hasDocs = detailsAreVisible(); //printf("MemberDef::writeDocumentation(): type=`%s' def=`%s'\n",type.data(),definition()); @@ -876,6 +885,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, QCString cname = container->name(); QCString cfname = container->getOutputFileBase(); + // get member name QCString doxyName=name().copy(); // prepend scope if there is any. TODO: make this optional for C only docs diff --git a/src/membername.h b/src/membername.h index 21282df..15f407c 100644 --- a/src/membername.h +++ b/src/membername.h @@ -58,15 +58,16 @@ typedef QDict<MemberName> MemberNameDict; struct MemberInfo { - MemberInfo(MemberDef *md,Protection p,Specifier v) : - memberDef(md), prot(p), virt(v),ambigClass(0) {} + MemberInfo(MemberDef *md,Protection p,Specifier v,bool inh) : + memberDef(md), prot(p), virt(v), inherited(inh), ambigClass(0) {} ~MemberInfo() {} MemberDef *memberDef; Protection prot; - Specifier virt; - QCString scopePath; - QCString ambiguityResolutionScope; - ClassDef *ambigClass; + Specifier virt; + bool inherited; + QCString scopePath; + QCString ambiguityResolutionScope; + ClassDef *ambigClass; }; class MemberNameInfo : public QList<MemberInfo> diff --git a/src/page.h b/src/page.h index 1b67ca5..c448631 100644 --- a/src/page.h +++ b/src/page.h @@ -90,6 +90,7 @@ class PageInfo // ids int todoId; int testId; + int bugId; // is this page part of a group GroupDef *inGroup; diff --git a/src/reflist.cpp b/src/reflist.cpp index b67628e..377ae41 100644 --- a/src/reflist.cpp +++ b/src/reflist.cpp @@ -22,7 +22,8 @@ RefList todoList; /*! The test criteria list */ RefList testList; - +/*! The bug list */ +RefList bugList; /*! Create a todo list */ RefList::RefList() @@ -63,7 +64,7 @@ int RefList::addRefItem() */ RefItem *RefList::getRefItem(int itemId) { - return m_dict->find(itemId); + return m_dict ? m_dict->find(itemId) : 0; } /*! Returns the first item in the dictionary or 0 if @@ -72,7 +73,7 @@ RefItem *RefList::getRefItem(int itemId) */ RefItem *RefList::getFirstRefItem() { - return m_dictIterator->toFirst(); + return m_dictIterator ? m_dictIterator->toFirst() : 0; } /*! Returns the next item in the dictionary or 0 if @@ -81,6 +82,6 @@ RefItem *RefList::getFirstRefItem() */ RefItem *RefList::getNextRefItem() { - return m_dictIterator->operator++(); + return m_dictIterator ? m_dictIterator->operator++() : 0; } diff --git a/src/reflist.h b/src/reflist.h index 1aa189e..837cb0a 100644 --- a/src/reflist.h +++ b/src/reflist.h @@ -51,5 +51,6 @@ class RefList extern RefList todoList; extern RefList testList; +extern RefList bugList; #endif diff --git a/src/scanner.l b/src/scanner.l index 452ee69..72cee53 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -87,9 +87,11 @@ static int squareCount = 0 ; static int ifCount = 0 ; static int padCount = 0 ; static int todoStartContext = 0; -static QCString todoString = 0; +static QCString todoString; static int testStartContext = 0; -static QCString testString = 0; +static QCString testString; +static int bugStartContext = 0; +static QCString bugString; static Entry* current_root = 0 ; static Entry* global_root = 0 ; static Entry* current = 0 ; @@ -474,6 +476,7 @@ TITLE [tT][iI][tT][lL][eE] %x SkipVerbatim %x TodoParam %x TestParam +%x BugParam %x SectionLabel %x SectionTitle %x SkipTemplate @@ -1202,7 +1205,7 @@ TITLE [tT][iI][tT][lL][eE] BEGIN(AfterDoc); } } -<FindMembers,FindFields>"//"([!*]?){B}*"@{"|"/*"([!*]?){B}*"@{" { +<FindMembers,FindFields>"//"([!*]?){B}*{CMD}"{"|"/*"([!*]?){B}*{CMD}"{" { startGroup(); tmpDocType=-1; if (current_root->section & Entry::SCOPE_MASK) @@ -1221,7 +1224,7 @@ TITLE [tT][iI][tT][lL][eE] BEGIN( Doc ); } } -<FindMembers,FindFields,ReadInitializer>"//"([!*]?){B}*"@}"|"/*"([!*]?){B}*"@}"{B}*"*/" { +<FindMembers,FindFields,ReadInitializer>"//"([!*]?){B}*{CMD}"}"|"/*"([!*]?){B}*{CMD}"}"{B}*"*/" { endGroup(); } <FindMembers>"=" { @@ -1401,7 +1404,7 @@ TITLE [tT][iI][tT][lL][eE] } <FindMembers>"[" { - if (current->name.isEmpty()) // IDL function property + if (current->name.isEmpty() || current->name=="typedef") // IDL function property { squareCount=1; lastSquareContext = YY_START; @@ -2258,11 +2261,20 @@ TITLE [tT][iI][tT][lL][eE] BEGIN( ClassVar ); } <ClassVar>{SCOPENAME}{BN}*/"(" { - addType(current); - current->name = yytext; - current->name = current->name.stripWhiteSpace(); - lineCount(); - BEGIN( FindMembers ); + if (insideIDL && strncmp(yytext,"switch",6)==0) + { + // Corba IDL style union + roundCount=0; + BEGIN(SkipUnionSwitch); + } + else + { + addType(current); + current->name = yytext; + current->name = current->name.stripWhiteSpace(); + lineCount(); + BEGIN( FindMembers ); + } } <ClassVar>{ID} { if (insideIDL && strcmp(yytext,"switch")==0) @@ -2417,7 +2429,7 @@ TITLE [tT][iI][tT][lL][eE] curlyCount=0; BEGIN( ReadBody ) ; } -<SkipUnionSwitch>"(" { +<SkipUnionSwitch>{B}*"(" { roundCount++; } <SkipUnionSwitch>")" { @@ -2564,7 +2576,7 @@ TITLE [tT][iI][tT][lL][eE] } BEGIN( tmpDocType ); } -<Doc,JavaDoc>{B}*{CMD}("fn"|"var"|"typedef"){B}* { +<Doc,JavaDoc>{B}*{CMD}("fn"|"var"|"typedef"){B}+ { current->section = Entry::MEMBERDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; @@ -2601,55 +2613,55 @@ TITLE [tT][iI][tT][lL][eE] current->startLine = yyLineNr; BEGIN( ClassDocFunc ); } -<Doc,JavaDoc>{B}*{CMD}"enum"{B}* { +<Doc,JavaDoc>{B}*{CMD}"enum"{B}+ { current->section = Entry::ENUMDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; BEGIN( EnumDocArg1 ); } -<Doc,JavaDoc>{B}*{CMD}"defgroup"{B}* { +<Doc,JavaDoc>{B}*{CMD}"defgroup"{B}+ { current->section = Entry::GROUPDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; BEGIN( GroupDocArg1 ); } -<Doc,JavaDoc>{B}*{CMD}"namespace"{B}* { +<Doc,JavaDoc>{B}*{CMD}"namespace"{B}+ { current->section = Entry::NAMESPACEDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; BEGIN( NameSpaceDocArg1 ); } -<Doc,JavaDoc>{B}*{CMD}"class"{B}* { +<Doc,JavaDoc>{B}*{CMD}"class"{B}+ { current->section = Entry::CLASSDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; BEGIN( ClassDocArg1 ); } -<Doc,JavaDoc>{B}*{CMD}"union"{B}* { +<Doc,JavaDoc>{B}*{CMD}"union"{B}+ { current->section = Entry::UNIONDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; BEGIN( ClassDocArg1 ); } -<Doc,JavaDoc>{B}*{CMD}"struct"{B}* { +<Doc,JavaDoc>{B}*{CMD}"struct"{B}+ { current->section = Entry::STRUCTDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; BEGIN( ClassDocArg1 ); } -<Doc,JavaDoc>{B}*{CMD}"interface"{B}* { +<Doc,JavaDoc>{B}*{CMD}"interface"{B}+ { current->section = Entry::INTERFACEDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; BEGIN( ClassDocArg1 ); } -<Doc,JavaDoc>{B}*{CMD}"idlexcept"{B}* { +<Doc,JavaDoc>{B}*{CMD}"idlexcept"{B}+ { current->section = Entry::EXCEPTIONDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; BEGIN( ClassDocArg1 ); } -<Doc,JavaDoc>{B}*{CMD}"page"{B}* { +<Doc,JavaDoc>{B}*{CMD}"page"{B}+ { current->section = Entry::PAGEDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; @@ -2667,7 +2679,7 @@ TITLE [tT][iI][tT][lL][eE] current->startLine = yyLineNr; BEGIN( FileDocArg1 ); } -<Doc,JavaDoc>{B}*{CMD}"example"{B}* { +<Doc,JavaDoc>{B}*{CMD}"example"{B}+ { current->section = Entry::EXAMPLE_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; @@ -2698,10 +2710,10 @@ TITLE [tT][iI][tT][lL][eE] } <SkipHtmlComment>"--"[!]?">" { BEGIN(lastSkipHtmlCommentContext); } <SkipHtmlComment>. -<AfterDoc,Doc,ClassDoc,PageDoc>("\\\\"|"@@")("todo"|"test")/[^a-z_A-Z0-9] { +<AfterDoc,Doc,ClassDoc,PageDoc>("\\\\"|"@@")("todo"|"test"|"bug")/[^a-z_A-Z0-9] { current->doc+=yytext; } -<AfterDocLine,LineDoc,JavaDoc>("\\\\"|"@@")("todo"|"test")/[^a-z_A-Z0-9] { +<AfterDocLine,LineDoc,JavaDoc>("\\\\"|"@@")("todo"|"test"|"bug")/[^a-z_A-Z0-9] { current->brief+=yytext; } <AfterDoc,AfterDocLine,LineDoc,Doc,JavaDoc,ClassDoc,PageDoc>{CMD}"todo"/[^a-z_A-Z0-9] { @@ -2718,6 +2730,13 @@ TITLE [tT][iI][tT][lL][eE] current->brief.resize(0); BEGIN(ClassDocBrief); } +<AfterDoc,AfterDocLine,LineDoc,Doc,JavaDoc,ClassDoc,PageDoc>{CMD}"bug"/[^a-z_A-Z0-9] { + bugStartContext = YY_START; + lastBriefContext = BugParam; // this is where we will continue at the end of the argument + bugString = current->brief.copy(); // these will be swapped later on. + current->brief.resize(0); + BEGIN(ClassDocBrief); + } <TodoParam>\n | <TodoParam>"//" | <TodoParam>"/*" | @@ -2778,6 +2797,36 @@ TITLE [tT][iI][tT][lL][eE] current->brief = testString.copy(); // restore orginial brief desc. BEGIN(testStartContext); } +<BugParam>\n | +<BugParam>"//" | +<BugParam>"/*" | +<BugParam>. { + if (current->bugId!=0) + { + RefItem *item = bugList.getRefItem(current->bugId); + item->text += " <p>"; + item->text += current->brief; + } + else + { + int bugItemId = bugList.addRefItem(); + char anchorLabel[12]; + sprintf(anchorLabel,"_bug%06d",bugItemId); + RefItem *item = bugList.getRefItem(bugItemId); + item->text = current->brief.copy(); + item->listAnchor = anchorLabel; + current->bugId = bugItemId; + QCString bugCmdString; + bugCmdString.sprintf("\\bug %d\n",bugItemId); + current->doc += bugCmdString; + sectionType=SectionInfo::Anchor; + sectionLabel=anchorLabel; + addSection(); + } + unput(*yytext); + current->brief = bugString.copy(); // restore orginial brief desc. + BEGIN(bugStartContext); + } <ExampleDocArg1>{FILE} { current->name = stripQuotes(yytext); BEGIN( ExampleDoc ); @@ -3057,7 +3106,7 @@ TITLE [tT][iI][tT][lL][eE] if (!removeSlashes) *pSkipDoc+=yytext; } -<SkipCode>^{B}*"*"+/{B}+ +<SkipCode>^{B}*"*"+/{BN}+ <SkipCode>"//" { *pSkipDoc+=yytext; } @@ -3102,7 +3151,7 @@ TITLE [tT][iI][tT][lL][eE] lineCount(); BEGIN( GroupName ); } -<ClassDoc,Doc,JavaDoc>"@{" { +<ClassDoc,Doc,JavaDoc>{CMD}"{" { if (current->section == Entry::GROUPDOC_SEC) { autoGroupNameStack.push(new QCString(current->name)); @@ -3118,7 +3167,7 @@ TITLE [tT][iI][tT][lL][eE] warn(yyFileName,yyLineNr,"Warning: @{ may only be used in a group block!\n"); } } -<ClassDoc,Doc,JavaDoc>"@}" { +<ClassDoc,Doc,JavaDoc>{CMD}"}" { endGroup(); } <ExampleDoc,PageDoc,ClassDoc>. { current->doc += yytext; } @@ -3203,6 +3252,12 @@ TITLE [tT][iI][tT][lL][eE] BEGIN( TestParam ); } else if (YY_START==ClassDocBrief && + lastBriefContext==BugParam) + { + unput('/');unput('*'); // make sure we have something to read + BEGIN( BugParam ); + } + else if (YY_START==ClassDocBrief && lastBriefContext==Doc) { current->doc += "\n\n"; @@ -3269,7 +3324,10 @@ TITLE [tT][iI][tT][lL][eE] <ClassDocBrief>{BS}({BL}|"\\n\\n") { current->brief=current->brief.stripWhiteSpace(); if (!current->doc.isEmpty()) current->doc+=" <p>"; - if (lastBriefContext==TodoParam || lastBriefContext==TestParam) + if (lastBriefContext==TodoParam || + lastBriefContext==TestParam || + lastBriefContext==BugParam + ) { unput('\n'); } @@ -3300,6 +3358,16 @@ TITLE [tT][iI][tT][lL][eE] unput('\n'); // make sure we have something to read BEGIN( TestParam ); } + else if + (lastBriefContext==BugParam && + (bugStartContext==LineDoc || + bugStartContext==AfterDocLine + ) + ) + { + unput('\n'); // make sure we have something to read + BEGIN( BugParam ); + } else { current->brief += " "; diff --git a/src/translator.h b/src/translator.h index 83c3c08..fe53b35 100644 --- a/src/translator.h +++ b/src/translator.h @@ -1227,6 +1227,22 @@ class Translator { return "Value:"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.5 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a \bug item */ + virtual QCString trBug() + { + return "Bug"; + } + /*! Used as the header of the bug list */ + virtual QCString trBugList() + { + return "Bug List"; + } + }; #endif diff --git a/src/translator_it.h b/src/translator_it.h index c0429cf..e1a36ed 100644 --- a/src/translator_it.h +++ b/src/translator_it.h @@ -5,6 +5,7 @@ * Initial Italian Translation by Ahmed Aldo Faisal * Revised and completed by Alessandro Falappa (June 1999) * Updates: + * 2001/02: translated new items used since version 1.2.4 * 2000/11: modified slightly the translation in trLegendDocs() function, * translated new items used since version 1.2.1 and 1.2.2 * 2000/08: translated new items used since version 1.1.3, 1.1.4, 1.1.5 and 1.2.0 @@ -998,6 +999,50 @@ class TranslatorItalian : public Translator return "Documentazione delle ProprietЮ"; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.4 +////////////////////////////////////////////////////////////////////////// + + /*! Used for Java interfaces in the summary section of Java packages */ + virtual QCString trInterfaces() + { + return "Interfacce"; + } + /*! Used for Java classes in the summary section of Java packages */ + virtual QCString trClasses() + { + return "Classi"; + } + /*! Used as the title of a Java package */ + virtual QCString trPackage(const char *name) + { + return (QCString)"Package "+name; + } + /*! Title of the package index page */ + virtual QCString trPackageList() + { + return "Lista dei package"; + } + /*! The description of the package index page */ + virtual QCString trPackageListDescription() + { + return "Questi sono i package e una loro breve descrizione (se disponibile):"; + } + /*! The link name in the Quick links header for each page */ + virtual QCString trPackages() + { + return "Package"; + } + /*! Used as a chapter title for Latex & RTF output */ + virtual QCString trPackageDocumentation() + { + return "Documentazione dei package"; + } + /*! Text shown before a multi-line define */ + virtual QCString trDefineValue() + { + return "Valore:"; + } }; #endif diff --git a/src/translator_jp.h b/src/translator_jp.h index 80b1e97..c97a6af 100644 --- a/src/translator_jp.h +++ b/src/translator_jp.h @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2001 by Dimitri van Heesch. + * Copyright (C) 1997-2000 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 @@ -25,12 +25,11 @@ class TranslatorJapanese : public Translator public: QCString idLanguage() { return "japanese"; } - QCString idLanguageCharset() - { return "euc-jp"; } - /*! returns the name of the package that is included by LaTeX */ QCString latexBabelPackage() - { return "a4j"; } + { return "english"; } + QCString idLanguageCharset() + { return "euc-jp"; } /*! used in the compound documentation before a list of related functions. */ QCString trRelatedFunctions() @@ -414,7 +413,7 @@ class TranslatorJapanese : public Translator /*! this text is generated when the \warning command is used. */ QCString trWarning() - { return "цМ╟у"; } + { return "╥ы╧П"; } /*! this text is generated when the \bug command is used. */ QCString trBugsAndLimitations() @@ -452,7 +451,9 @@ class TranslatorJapanese : public Translator QCString trGeneratedBy() { return ""; } - // new since 0.49-990307 +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990307 +////////////////////////////////////////////////////////////////////////// /*! used as the title of page containing all the index of all namespaces. */ QCString trNamespaceList() @@ -747,12 +748,12 @@ class TranslatorJapanese : public Translator /*! Text for the \pre command */ QCString trPrecondition() { - return "а╟дС╬Р╥О"; + return "╩Жа╟╬Р╥О"; } /*! Text for the \post command */ QCString trPostcondition() { - return "Postcondition"; + return "╩Ж╦Е╬Р╥О"; } /*! Text for the \invariant command */ QCString trInvariant() @@ -785,6 +786,249 @@ class TranslatorJapanese : public Translator { return "╔з║╪╔╦╨В╟З"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.0 +////////////////////////////////////////////////////////////////////////// + + QCString trNote() + { + return "Ёп╓╗╫Я╓╜"; + } + QCString trPublicTypes() + { + return "╦ЬЁ╚╥©"; + } + QCString trPublicAttribs() + { + return "╦ЬЁ╚б╟ю╜"; + } + QCString trStaticPublicAttribs() + { + return "юее╙╦ЬЁ╚б╟ю╜"; + } + QCString trProtectedTypes() + { + return "йщ╦Н╥©"; + } + QCString trProtectedAttribs() + { + return "йщ╦Нб╟ю╜"; + } + QCString trStaticProtectedAttribs() + { + return "юее╙йщ╦Нб╟ю╜"; + } + QCString trPrivateTypes() + { + return "хС╦ЬЁ╚╥©"; + } + QCString trPrivateAttribs() + { + return "хС╦ЬЁ╚б╟ю╜"; + } + QCString trStaticPrivateAttribs() + { + return "юее╙хС╦ЬЁ╚б╟ю╜"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a todo item */ + QCString trTodo() + { + return "TODO"; + } + /*! Used as the header of the todo list */ + QCString trTodoList() + { + return "TODO╔Й╔╧╔х"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.4 +////////////////////////////////////////////////////////////////////////// + + QCString trReferencedBy() + { + return "╪║╓г╩╡╬х╓╣╓Л╓ф╓╓╓ч╓╧║ё"; + } + QCString trRemarks() + { + return "╟у╦╚"; + } + QCString trAttention() + { + return "цМ╟у"; + } + QCString trInclByDepGraph() + { + return "╓Ё╓н╔╟╔И╔у╓о║╒╓Ё╓н╔у╔║╔╓╔К╓╛╓и╓н╔у╔║╔╓╔К╓╚╓Ид╬юэ║╒╢жюэе╙╓к" + "╔╓╔С╔╞╔К║╪╔и╓╣╓Л╓ф╓╓╓К╓╚╓Р╪╗╓╥╓ф╓╓╓ч╓╧║ё"; + } + QCString trSince() + { + return "Since"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.5 +////////////////////////////////////////////////////////////////////////// + + /*! title of the graph legend page */ + QCString trLegendTitle() + { + return "╔╟╔И╔у╓нкчнЦ"; + } + /*! page explaining how the dot graph's should be interpreted */ + QCString trLegendDocs() + { + return + "╓Ё╓н╔з║╪╔╦╓г╓о║╒doxygen ╓гю╦ю╝╓╣╓Л╓©╔╟╔И╔у╓Р╓и╓н╓Х╓╕╓к╓ъ╓©╓И╓Х╓╓╓╚╓Р" + "юБлю╓╥╓ч╓╧║ё<p>\n" + "╪║╓ннЦ╓Р╧м╓╗╓ф╓ъ╓ч╓╧║ё\n" + "\\code\n" + "/*! ╬йн╛╓╣╓Л╓ф╦╚╓╗╓й╓╓╔╞╔И╔╧ */\n" + "class Invisible { };\n\n" + "/*! ╬йн╛╓╣╓Л╓©╔╞╔И╔╧(╥я╬╣╢ь╥╦╓о╠ё╓╣╓Л╓ф╓╓╓К) */\n" + "class Truncated : public Invisible { };\n\n" + "/* doxygen ╔Ё╔А╔С╔х╓к╓Х╓К╔и╔╜╔Е╔А╔С╔х╓╛╓й╓╓╔╞╔И╔╧ */\n" + "class Undocumented { };\n\n" + "/*! public ╓г╥я╬╣╓╣╓Л╓©╔╞╔И╔╧ */\n" + "class PublicBase : public Truncated { };\n\n" + "/*! protected ╓г╥я╬╣╓╣╓Л╓©╔╞╔И╔╧ */\n" + "class ProtectedBase { };\n\n" + "/*! private ╓г╥я╬╣╓╣╓Л╓©╔╞╔И╔╧ */\n" + "class PrivateBase { };\n\n" + "/*! ╥я╬╣╓╣╓Л╓©╔╞╔И╔╧╓г╩х╓О╓Л╓ф╓╓╓К╔╞╔И╔╧ */\n" + "class Used { };\n\n" + "/*! йё©Т╓н╔╞╔И╔╧╓Р╥я╬╣╓╥╓ф╓╓╓К╬Е╟л╔╞╔И╔╧ */\n" + "class Inherited : public PublicBase,\n" + " protected ProtectedBase,\n" + " private PrivateBase,\n" + " public Undocumented\n" + "{\n" + " private:\n" + " Used *m_usedClass;\n" + "};\n" + "\\endcode\n" + "юъдЙ╔у╔║╔╓╔КцФ╓г║╒╔©╔╟ \\c MAX_DOT_GRAPH_HEIGHT ╓╛ 200 ╓к╔╩╔ц╔х╓╣╓Л╓©" + "╬Л╧Г║╒╪║╓н╓Х╓╕╓й╔╟╔И╔у╓х╓й╓Й╓ч╓╧║ё" + "<p><center><img src=\"graph_legend.gif\"></center>\n" + "<p>\n" + "╬Е╓н╔╟╔И╔уфБ╓н╔э╔ц╔╞╔╧╓к╓о╪║╓н╓Х╓╕╓й╟улё╓╛╓╒╓Й╓ч╓╧║ё\n" + "<ul>\n" + "<li>╧У╓╞еи╓Й╓д╓ж╓╣╓Л╓©╔э╔ц╔╞╔╧╓о║╒╓Ё╓н╔╟╔И╔у╓кбп╠Ч╓╧╓К╧╫б╓бн╓Д╔╞╔И╔╧╓Р" + "и╫╓╥╓ч╓╧║ё\n" + "<li>╧Уох╓н╔э╔ц╔╞╔╧╓о╔и╔╜╔Е╔А╔С╔х╓╛╓╒╓К╧╫б╓бн╓Д╔╞╔И╔╧╓Ри╫╓╥╓ч╓╧║ё\n" + "<li>Ё╔©╖╓нох╓н╔э╔ц╔╞╔╧╓о╔и╔╜╔Е╔А╔С╔х╓╛╓й╓╓╧╫б╓бн╓Д╔╞╔И╔╧╓Ри╫╓╥╓ч╓╧║ё\n" + "<li>южох╓н╔э╔ц╔╞╔╧╓о╔и╔╜╔Е╔А╔С╔х╓╛╓╒╓К╧╫б╓бн╓Д╔╞╔И╔╧╓Ри╫╓╥╓ч╓╧╓╛║╒" + "╩ьдЙ╓╣╓Л╓©╔╣╔╓╔╨╓к╪Щ╓ч╓И╓й╓╓╓©╓А╓к╥я╬╣║╕йЯ╢ч╢ь╥╦╓Р╓╧╓ы╓ф©ч╪╗╓╧╓К" + "╓Ё╓х╓╛╓г╓╜╓й╓╚╓ц╓©╓Ё╓х╓Р╪╗╓╥╓ч╓╧║ё" + "</ul>\n" + "лП╟У╓к╓о╪║╓н╓Х╓╕╓й╟улё╓╛╓╒╓Й╓ч╓╧║ё\n" + "<ul>\n" + "<li>юд╓╓лП╟У╓офС╓д╓н╔╞╔И╔╧╢ж╓н public ╥я╬╣╢ь╥╦╓Р╪╗╓╥╓ч╓╧║ё\n" + "<li>нп╓нлП╟У╓о protected ╥я╬╣╢ь╥╦╓Р╪╗╓╥╓ч╓╧║ё\n" + "<li>юж╓нлП╟У╓о private ╥я╬╣╢ь╥╦╓Р╪╗╓╥╓ч╓╧║ё\n" + "<li>╩Г╓нгкюЧлП╟У╓о║╒╓╫╓н╔╞╔И╔╧╓╛б╬╓н╔╞╔И╔╧╓к╢ч╓ч╓Л╓ф╓╓╓©╓Й║╒" + "мЬмя╓╣╓Л╓ф╓╓╓К╓Ё╓х╓Р╪╗╓╥╓ч╓╧║ё╓ч╓©║╒лП╟У╓╛╩ь╓╥╓ф╓╓╓К╔╞╔И╔╧╓Д╧╫б╓бн╓Р" + "╓и╓нйя©Т╓г╔╒╔╞╔╩╔╧╓г╓╜╓К╓╚╓РлП╟У╓н╔И╔ы╔К╓х╓╥╓ф╪╗╓╥╓ф╓╓╓ч╓╧║ё\n" + "</ul>\n"; + } + /*! text for the link to the legend page */ + QCString trLegend() + { + return "кчнЦ"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.0 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a test item */ + QCString trTest() + { + return "╔ф╔╧╔х"; + } + /*! Used as the header of the test list */ + QCString trTestList() + { + return "╔ф╔╧╔х╔Й╔╧╔х"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.1 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a section header for KDE-2 IDL methods */ + QCString trDCOPMethods() + { + return "DCOP╔А╔╫╔ц╔и"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.2 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a section header for IDL properties */ + QCString trProperties() + { + return "╔в╔М╔я╔ф╔ё"; + } + /*! Used as a section header for IDL property documentation */ + QCString trPropertyDocumentation() + { + return "╔в╔М╔я╔ф╔ё╓н╡РюБ"; + } + + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.4 +////////////////////////////////////////////////////////////////////////// + + /*! Used for Java interfaces in the summary section of Java packages */ + virtual QCString trInterfaces() + { + return "╔╓╔С╔©║╪╔у╔╖║╪╔╧"; + } + /*! Used for Java classes in the summary section of Java packages */ + virtual QCString trClasses() + { + return "╔╞╔И╔╧"; + } + /*! Used as the title of a Java package */ + virtual QCString trPackage(const char *name) + { + return (QCString)"╔я╔ц╔╠║╪╔╦ "+name; + } + /*! Title of the package index page */ + virtual QCString trPackageList() + { + return "╔я╔ц╔╠║╪╔╦╔Й╔╧╔х"; + } + /*! The description of the package index page */ + virtual QCString trPackageListDescription() + { + return "╢й╟вюБлю╓Р╩Щ╓д╔я╔ц╔╠║╪╔╦╓г╓╧║ё"; + } + /*! The link name in the Quick links header for each page */ + virtual QCString trPackages() + { + return "╔я╔ц╔╠║╪╔╦"; + } + /*! Used as a chapter title for Latex & RTF output */ + virtual QCString trPackageDocumentation() + { + return "╔я╔ц╔╠║╪╔╦╓н╡РюБ"; + } + /*! Text shown before a multi-line define */ + virtual QCString trDefineValue() + { + return "цм:"; + } }; #endif diff --git a/src/translator_nl.h b/src/translator_nl.h index e2e139b..e8ecbde 100644 --- a/src/translator_nl.h +++ b/src/translator_nl.h @@ -32,7 +32,7 @@ class TranslatorDutch : public Translator QCString trRelatedSubscript() { return "(Merk op dat dit geen member functies zijn.)"; } QCString trDetailedDescription() - { return "Gedetaileerde Beschrijving"; } + { return "Gedetailleerde Beschrijving"; } QCString trMemberTypedefDocumentation() { return "Documentatie van type definitie members"; } QCString trMemberEnumerationDocumentation() @@ -516,15 +516,15 @@ class TranslatorDutch : public Translator } QCString trGraphicalHierarchy() { - return "Grafische Klasse Hierarchie"; + return "Grafische Klasse Hiërarchie"; } QCString trGotoGraphicalHierarchy() { - return "Ga naar de grafische klasse hierarchie"; + return "Ga naar de grafische klasse hiërarchie"; } QCString trGotoTextualHierarchy() { - return "Ga naar de tekstuële klasse hierarchie"; + return "Ga naar de tekstuele klasse hiërarchie"; } QCString trPageIndex() { @@ -695,12 +695,12 @@ class TranslatorDutch : public Translator ////////////////////////////////////////////////////////////////////////// /*! Used as a marker that is put before a test item */ - virtual QCString trTest() + QCString trTest() { return "Test"; } /*! Used as the header of the test list */ - virtual QCString trTestList() + QCString trTestList() { return "Test Lijst"; } @@ -710,7 +710,7 @@ class TranslatorDutch : public Translator ////////////////////////////////////////////////////////////////////////// /*! Used as a section header for KDE-2 IDL methods */ - virtual QCString trDCOPMethods() + QCString trDCOPMethods() { return "DCOP Methoden"; } @@ -720,15 +720,76 @@ class TranslatorDutch : public Translator ////////////////////////////////////////////////////////////////////////// /*! Used as a section header for IDL properties */ - virtual QCString trProperties() + QCString trProperties() { return "Properties"; } /*! Used as a section header for IDL property documentation */ - virtual QCString trPropertyDocumentation() + QCString trPropertyDocumentation() { return "Property Documentatie"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.4 +////////////////////////////////////////////////////////////////////////// + + /*! Used for Java interfaces in the summary section of Java packages */ + QCString trInterfaces() + { + return "Interfaces"; + } + /*! Used for Java classes in the summary section of Java packages */ + QCString trClasses() + { + return "Klassen"; + } + /*! Used as the title of a Java package */ + QCString trPackage(const char *name) + { + return (QCString)"Package "+name; + } + /*! Title of the package index page */ + QCString trPackageList() + { + return "Package Lijst"; + } + /*! The description of the package index page */ + QCString trPackageListDescription() + { + return "Hier volgen de packages, elk met een korte beschrijving (indien aanwezig):"; + } + /*! The link name in the Quick links header for each page */ + QCString trPackages() + { + return "Packages"; + } + /*! Used as a chapter title for Latex & RTF output */ + QCString trPackageDocumentation() + { + return "Package Documentatie"; + } + /*! Text shown before a multi-line define */ + QCString trDefineValue() + { + return "Waarde:"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.5 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a \bug item */ + QCString trBug() + { + return "Bug"; + } + /*! Used as the header of the bug list */ + QCString trBugList() + { + return "Bug Lijst"; + } + }; #endif diff --git a/src/translator_ru.h b/src/translator_ru.h index 919faae..641aa46 100644 --- a/src/translator_ru.h +++ b/src/translator_ru.h @@ -14,6 +14,11 @@ * */ +/* + * Russian translation by Andrey V. Stolyarov <crocodil<AT>croco.net> + * released Feb 14, 2001 + */ + #ifndef TRANSLATOR_RU_H #define TRANSLATOR_RU_H @@ -32,48 +37,55 @@ class TranslatorRussian : public Translator } QCString trRelatedFunctions() { - return "Связанные Функции"; + return "Связанные функции"; } QCString trRelatedSubscript() { - return "(Обратите внимание, что эти функции не члены класса)"; + return "(Обратите внимание, что эти функции - не члены класса)"; } QCString trDetailedDescription() { - return "Детальное Описание"; + return "Детальное описание"; } QCString trMemberTypedefDocumentation() { // Need additional translation - return "Описание Членов typedef"; + return "Описание typedef-членов"; } QCString trMemberEnumerationDocumentation() { - return "Описание Членов Перечислимого Типа"; + return "Описание членов перечислимого типа"; } QCString trMemberFunctionDocumentation() { - return "Описание Функции Члена"; + return "Описание функций-членов"; } QCString trMemberDataDocumentation() { - return "Описание Данных Члена"; + if (Config::optimizeForCFlag) + { + return "Описание полей"; + } + else + { + return "Описание переменных-членов"; + } } QCString trMore() { - return "Еще..."; + return "Дальше..."; } QCString trListOfAllMembers() { - return "Cписок всех членов класса"; + return "Cписок всех членов класса."; } QCString trMemberList() { - return "Список Членов"; + return "Список членов"; } QCString trThisIsTheListOfAllMembers() { - return "Это полный список членов "; + return "Это полный список членов класса/структуры "; } QCString trIncludeIncludingInheritedMembers() { @@ -82,7 +94,7 @@ class TranslatorRussian : public Translator QCString trGeneratedAutomatically(const char *s) { QCString result="Автоматически создано системой Doxygen"; if (s) result+=(QCString)" для "+s; - result+=" из исходного текста."; + result+=" по файлам исходного текста."; return result; } QCString trEnumName() @@ -99,7 +111,7 @@ class TranslatorRussian : public Translator } QCString trVerbatimText(const char* f) { - return (QCString)"Это прямая вставка текста из "+f+"включаемого файла"; + return (QCString)"Это прямая вставка текста из включаемого файла"+f; } QCString trModules() { @@ -111,29 +123,52 @@ class TranslatorRussian : public Translator } QCString trCompoundList() { - // Need additional translation - return "Составной список (compound list)"; + if (Config::optimizeForCFlag) + { + return "Структуры данных"; + } + else + { + // doubtful translation; originally - "Compound List" + return "Список составных объектов"; + } } QCString trFileList() { - return "Список Файлов"; + return "Список файлов"; } QCString trHeaderFiles() { - return "Список Заголовочных Файлов"; + return "Заголовочные файлы"; } QCString trCompoundMembers() { - // Need additional translation - return "Составные члены (compound members)"; + if (Config::optimizeForCFlag) + { + return "Поля структур"; + } + else + { + return "Члены-данные"; + } } QCString trFileMembers() { - return "Члены Файла"; + if (Config::optimizeForCFlag) + { + return "Глобальные имена"; + } + else + { + // doubtful translation + // (originally - "File members", but not good for Russian) + return "Члены файла"; + } } QCString trRelatedPages() { - return "Связанные Страницы"; + // non-verbatim translation: originally "related pages" + return "См. также: "; } QCString trExamples() { @@ -145,8 +180,8 @@ class TranslatorRussian : public Translator } QCString trClassHierarchyDescription() { - // Need additional translation - return "Этот список (inheritance) тупо отсортирован, почти по алфафиту"; + return "Это дерево наследования отсортировано приблизительно " + "(но не совсем) по алфавиту"; } QCString trFileListDescription(bool extractAll) { @@ -157,36 +192,52 @@ class TranslatorRussian : public Translator } QCString trCompoundListDescription() { - return "Краткое описание классов, структур, объединений и " - "интерфейсов:"; + if (Config::optimizeForCFlag) + { + return "Структуры данных и их краткое описание: "; + } + else + { + return "Классы, структуры, объединения и интерфейсы " + "и их краткое описание: "; + } } QCString trCompoundMembersDescription(bool extractAll) { // Need additional translation QCString result="Список всех "; if(!extractAll) result+="документированных "; - result+="членов класса которые связаны с "; + result+="членов классов со ссылками на "; if(extractAll) - result+="the class documentation for each member:"; + result+="документацию по классу для каждого члена:"; else - result+="the classes the belong to:"; + result+="классы, к которым они принадлежат:"; return result; } QCString trFileMembersDescription(bool extractAll) { - // Need additional translation - QCString result="Список всех "; - if(!extractAll) result+="документированных "; - result+="членов файла, которые (links) указывают на"; - if(extractAll) - result+="the class documentation for each member:"; - else - result+="the classes the belong to:"; - return result; + QCString result="Список всех "; + if (!extractAll) result+="документированных "; + + if (Config::optimizeForCFlag) + { + result+="функций, переменных, макроопределений, " + "перечислений и определений типов"; + } + else + { + result+="членов файлов "; + } + result+=" со ссылками на "; + if (extractAll) + result+="файлы, к которым они принадлежат:"; + else + result+="документацию:"; + return result; } QCString trHeaderFilesDescription() { - return "Список заголовочных файлов, которые представляют API:"; + return "Список заголовочных файлов, составляющих API:"; } QCString trExamplesDescription() { @@ -194,8 +245,7 @@ class TranslatorRussian : public Translator } QCString trRelatedPagesDescription() { - // Need additional translation - return "Список всех страниц документации связанных с этой темой:"; + return "Список всех родственных страниц документации:"; } QCString trModulesDescription() { @@ -203,7 +253,7 @@ class TranslatorRussian : public Translator } QCString trNoDescriptionAvailable() { - return "Нет описания"; + return "Описание отсутствует"; } QCString trDocumentation() { @@ -211,7 +261,7 @@ class TranslatorRussian : public Translator } QCString trModuleIndex() { - return "Индекс модулей"; + return "Указатель модулей"; } QCString trHierarchicalIndex() { @@ -219,41 +269,48 @@ class TranslatorRussian : public Translator } QCString trCompoundIndex() { - // Need additional translation - return "Составной список"; + if (Config::optimizeForCFlag) + { + return "Список структур данных"; + } + else + { + // originally "compound index" + return "Список классов и структур"; + } } QCString trFileIndex() { - return "Индекс Файлов"; + return "Список файлов"; } QCString trModuleDocumentation() { - return "Документация по Модулям"; + return "Документация по модулям"; } QCString trClassDocumentation() { - return "Документация по Классам"; + return "Документация по классам"; } QCString trFileDocumentation() { - return "Документация по Файлам"; + return "Документация по файлам"; } QCString trExampleDocumentation() { - return "Примеры к Документации"; + return "Описания примеров"; } QCString trPageDocumentation() { - return "Документация по Страницам"; + return "Документация по страницам"; } QCString trReferenceManual() { - return "Справочное Описание"; + // originally reference manual + return "Краткий справочник"; } QCString trDefines() { - // Need Translation - return "Определения (Defines)"; + return "Определения"; } QCString trFunctionPrototypes() { @@ -265,20 +322,19 @@ class TranslatorRussian : public Translator } QCString trEnumerations() { - // Need Translation - return "Перечисления (Enumerations)"; + return "Перечисления"; } QCString trFunctions() { - return "Функции:"; + return "Функции"; } QCString trVariables() { - return "Переменные:"; + return "Переменные"; } QCString trEnumerationValues() { - return "Значение перечислимого типа"; + return "Значения перечислимого типа"; } QCString trAuthor() { @@ -286,7 +342,7 @@ class TranslatorRussian : public Translator } QCString trDefineDocumentation() { - return "Документация по определениям (defines)"; + return "Документация по определениям"; } QCString trFunctionPrototypeDocumentation() { @@ -314,8 +370,16 @@ class TranslatorRussian : public Translator } QCString trCompounds() { - // need translation - return "Compounds"; + if (Config::optimizeForCFlag) + { + return "Структуры данных"; + } + else + { + // originally "compounds" + return "Составные типы"; + } + } QCString trFiles() { @@ -325,16 +389,16 @@ class TranslatorRussian : public Translator { QCString result=(QCString)"Создано "+date; if(projName) result+=(QCString)" для "+projName; - result+=(QCString)" с использованием"; + result+=(QCString)" с помощью "; return result; } QCString trWrittenBy() { - return "Создано с использованием"; + return "написанного"; } QCString trClassDiagram(const char* clName) { - return (QCString)"Диаграмма наследования для "+clName; + return (QCString)"Диаграмма наследования для "+clName+":"; } QCString trForInternalUseOnly() { @@ -342,9 +406,8 @@ class TranslatorRussian : public Translator } QCString trReimplementedForInternalREasons() { - // need translation - return "Переписано по необходимости о которой вам знать не нужно;" - " програмный интерфейс не изменен."; + return "Реализация изменена по внутренним причинам;" + " Интерфейсная часть не изменилась."; } QCString trWarning() { @@ -372,7 +435,7 @@ class TranslatorRussian : public Translator } QCString trSeeAlso() { - return "Смотри"; + return "См. также"; } QCString trParameters() { @@ -384,16 +447,14 @@ class TranslatorRussian : public Translator } QCString trGeneratedBy() { - return "Создано с использованием"; + return "Создано при помощи"; } QCString trNamespaceList() { - // Need translation - return "Список Пространств Имен"; + return "Список пространств имен (namespaces)"; } QCString trNamespaceListDescription(bool extractAll) { - // Need translation QCString result="Список всех "; if(!extractAll) result+="документированных "; result+="пространств имен с кратким описанием:"; @@ -406,44 +467,53 @@ class TranslatorRussian : public Translator QCString trRelatedFunctionDocumentation() { // need translation - return "Документация по друзьям класса и связанным с ними функциям"; + return "Документация по друзьям класса и связанным функциям"; } QCString trCompoundReference(const char* clName, ClassDef::CompoundType compType, - bool /*isTemplate*/) - { - QCString result=(QCString)clName+" "; + bool isTemplate) + { + QCString result=(QCString)"Описание "; + if (isTemplate){ + switch(compType) + { + case ClassDef::Struct: result+="шаблонной "; break; + case ClassDef::Class: + case ClassDef::Union: + case ClassDef::Interface: + case ClassDef::Exception: + result+="шаблонного "; break; + } + } switch(compType) { - case ClassDef::Class: result+=" Класс"; break; - case ClassDef::Struct: result+=" Структура"; break; - case ClassDef::Union: result+=" Объединение"; break; - case ClassDef::Interface: result+=" Интерфейс"; break; - case ClassDef::Exception: result+=" Исключение"; break; + case ClassDef::Class: result+="класса "; break; + case ClassDef::Struct: result+="структуры "; break; + case ClassDef::Union: result+="объединения "; break; + case ClassDef::Interface: result+="интерфейса "; break; + case ClassDef::Exception: result+="исключения "; break; } - result+=" Описание"; + result+=clName; return result; } QCString trFileReference(const char* fileName) { QCString result; - result+=(QCString)"Описание Файла "+fileName; + result+=(QCString)"Описание файла "+fileName; return result; } QCString trNamespaceReference(const char* namespaceName) { - // need translation QCString result=(QCString)"Описание пространства имен "+namespaceName; return result; } QCString trPublicMembers() { - return "Открытые Методы"; + return "Открытые члены"; } QCString trPublicSlots() { - // need translation - return "Открытые Слоты (Slots)"; + return "Открытые слоты"; } QCString trSignals() { @@ -451,34 +521,31 @@ class TranslatorRussian : public Translator } QCString trStaticPublicMembers() { - return "Статические Открытые Методы"; + return "Статические открытые члены"; } QCString trProtectedMembers() { - return "Защищенные Методы"; + return "Защищенные члены"; } QCString trProtectedSlots() { - // need translation - return "Защищенные Слоты (Slots)"; + return "Защищенные слоты"; } QCString trStaticProtectedSlots() { - // need translation - return "Статические Защищенные Слоты (Slots)"; + return "Статические защищенные слоты"; } QCString trPrivateMembers() { - return "Закрытые Методы"; + return "Закрытые члены"; } QCString trPrivateSlots() { - // need translation - return "Закрытые Слоты (Slots)"; + return "Закрытые слоты"; } QCString trStaticPrivateMembers() { - return "Статические Закрытые Методы"; + return "Закрытые статические члены"; } QCString trWriteList(int numEntries) { @@ -492,20 +559,27 @@ class TranslatorRussian : public Translator if(i<numEntries-2) result+=", "; else - result+=", и "; + result+=" и "; } } return result; } QCString trInheritsList(int numEntries) { - // need translation - return "Дети (Inherits) "+trWriteList(numEntries)+"."; + return "Унаследован от "+trWriteList(numEntries)+"."; } QCString trInheritedByList(int numEntries) { - // need translation - return "Предки (Inherited By) "+trWriteList(numEntries)+"."; + return "Наследуется "+trWriteList(numEntries)+"."; + } + + QCString trReimplementedFromList(int numEntries) + { + // Originally: "reimplemented from" + // This translation assumes numEntries is always 1 + // which is true as of 1.2.5 and it's hard for me to + // imagine a situation when it could be wrong. + return "Переопределяет метод предка "+trWriteList(numEntries)+"."; } QCString trReimplementedInList(int numEntries) { @@ -513,31 +587,30 @@ class TranslatorRussian : public Translator } QCString trNamespaceMembers() { - // Need translation - return "Члены Пространства Имен"; + return "Члены пространств имен"; } QCString trNamespaceMemberDescription(bool extractAll) { QCString result="Список всех "; if(!extractAll) result+="документированных "; - result+="членов пространства имен со ссылками на "; + result+="членов пространств имен со ссылками на "; if(extractAll) - result+="документацию по каждому члену"; + result+="документацию по каждому члену:"; else - result+="документацию по пространству имен к которому они принадлежат"; + result+="пространства имен, к которым они принадлежат:"; return result; } QCString trNamespaceIndex() { - return "Индекс Пространства Имен"; + return "Индекс пространств имен"; } QCString trNamespaceDocumentation() { - return "Документация Пространства Имен"; + return "Документация пространств имен"; } QCString trNamespaces() { - return "Пространства Имен"; + return "Пространства имен"; } QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single) { @@ -559,7 +632,7 @@ class TranslatorRussian : public Translator } QCString trAlphabeticalList() { - return "Алфавитный Список"; + return "Алфавитный список"; } QCString trReturnValues() { @@ -567,8 +640,7 @@ class TranslatorRussian : public Translator } QCString trMainPage() { - // need translation - return "Начальная Страница (Main Page)"; + return "Главная страница"; } QCString trPageAbbreviation() { @@ -580,11 +652,11 @@ class TranslatorRussian : public Translator } QCString trDefinedAtLineInSourceFile() { - return "Определено в строке @0 файла @1."; + return "Определяется в строке @0 файла @1."; } QCString trDefinedInSourceFile() { - return "Определено в файле @0."; + return "Определяется в файле @0."; } QCString trDeprecated() { @@ -592,40 +664,36 @@ class TranslatorRussian : public Translator } QCString trCollaborationDiagram(const char* clName) { - // need translation - return (QCString)"Диаграмма связей для "+clName+":"; + // originally "collaboration diagram" + return (QCString)"Диаграмма использования для "+clName+":"; } QCString trInclDepGraph(const char* fName) { - // need translation - return (QCString)"Граф зависимостей для "+fName+":"; + return (QCString)"Граф зависимостей по включениям " + "файлов для "+fName+":"; } QCString trConstructorDocumentation() { - return "Документация по Конструктору и Деструктору"; + return "Документация по конструктору и деструктору"; } QCString trGotoSourceCode() { - // need translation - return "Смотри исходные тексты этого файла."; + return "Перейти к исходному тексту этого файла."; } QCString trGotoDocumentation() { - return "Смотри документацию по этому файлу."; + return "Перейти к документации на этот файл."; } QCString trPrecondition() { - // need translation - return "Начальное условие (Precondition)"; + return "Предусловие"; } QCString trPostcondition() { - // need translation - return "Конечное условие (Postcondition)"; + return "Постусловие"; } QCString trInvariant() { - // need translation return "Инвариант"; } QCString trInitialValue() @@ -634,26 +702,23 @@ class TranslatorRussian : public Translator } QCString trCode() { - return "исходные тексты"; + return "исходный текст"; } QCString trGraphicalHierarchy() { - // need translation - return "Графическая Иерархия Класса (ов?)"; + return "Графическая иерархия класса(ов)"; } QCString trGotoGraphicalHierarchy() { - // need translation - return "Смотри графическую иерархию класса"; + return "Перейти к графической иерархии"; } QCString trGotoTextualHierarchy() { - // need translation - return "Смотри текстовую иерархию класса"; + return "Перейти к текстовой иерархии"; } QCString trPageIndex() { - return "Индекс Страниц"; + return "Индекс страниц"; } QCString trNote() { @@ -661,47 +726,54 @@ class TranslatorRussian : public Translator } QCString trPublicTypes() { - return "Открытые Типы"; + return "Открытые типы"; } QCString trPublicAttribs() { - return "Открытые Аттрибуты"; + if (Config::optimizeForCFlag) + { + return "Поля данных"; + } + else + { + return "Открытые атрибуты"; + } } QCString trStaticPublicAttribs() { - return "Статические Открытые Аттрибуты"; + return "Открытые статические атрибуты"; } QCString trProtectedTypes() { - return "Защищенные Типы"; + return "Защищенные типы"; } QCString trProtectedAttribs() { - return "Защищенные Аттрибуты"; + return "Защищенные атрибуты"; } QCString trStaticProtectedAttribs() { - return "Статические Защищенные Аттрибуты"; + return "Статические защищенные атрибуты"; } QCString trPrivateTypes() { - return "Закрытые Типы"; + return "Закрытые типы"; } QCString trPrivateAttribs() { - return "Закрытые Аттрибуты"; + return "Закрытые атрибуты"; } QCString trStaticPrivateAttribs() { - return "Статические Закрытые Аттрибуты"; + return "Закрытые статические атрибуты"; } QCString trTodo() { - return "Todo"; + return "Необходимо сделать:"; } QCString trTodoList() { - return "Список Оставшихся Дел"; + return "Список дел"; } QCString trReferencedBy() { @@ -718,21 +790,21 @@ class TranslatorRussian : public Translator QCString trInclByDepGraph() { return "Этот граф показывает, какие файлы прямо или " - "косвенно включают этот файл:"; + "косвенно включают данный файл:"; } QCString trSince() { - return "После"; + return "Начиная с"; } QCString trLegendTitle() { - return "Толкование графа"; + return "Условные обозначения"; } QCString trLegendDocs() { return - "Эта страница обьясняет, как понимать графы, которые генерирует " - "doxygen.<p>\n" + //"Условные обозначения на графах, генерируемых программой " + //"doxygen.<p>\n" "Рассмотрим следующий пример:\n" "\\code\n" "/*! Невидимый класс из-за усечения */\n" @@ -747,9 +819,9 @@ class TranslatorRussian : public Translator "class ProtectedBase { };\n\n" "/*! Класс, использующий закрытое наследование */\n" "class PrivateBase { };\n\n" - "/*! Класс, используемый классом Inherited */\n" + "/*! Класс, используемый в классе Inherited */\n" "class Used { };\n\n" - "/*! Класс, порожденный от других классов */\n" + "/*! Суперкласс, унаследованный от нескольких классов */\n" "class Inherited : public PublicBase,\n" " protected ProtectedBase,\n" " private PrivateBase,\n" @@ -759,34 +831,35 @@ class TranslatorRussian : public Translator " Used *m_usedClass;\n" "};\n" "\\endcode\n" - "Если \\c MAX_DOT_GRAPH_HEIGHT тэг в конфигурационном файле " - "установлен в 200, получится следующий граф:" + "Если тэг \\c MAX_DOT_GRAPH_HEIGHT в конфигурационном файле " + "имеет значение 200, получим следующий граф:" "<p><center><img src=\"graph_legend.gif\"></center>\n" "<p>\n" - "Прямоугольники в этом графе имеют следующее значение:\n" + "Прямоугольники в этом графе имеют следующие значения:\n" "<ul>\n" - "<li>Заполненный чернный прямоугольник представляет структуру или класс, " - "для которого создан граф.\n" + "<li>Заполненный черный прямоугольник представляет структуру или класс, " + "для которого создан данный граф.\n" "<li>Прямоугольник с черной границей обозначает документированную структуру или класс.\n" - "<li>Прямоугольник с серой границей обозначает документированную структуру или класс.\n" + "<li>Прямоугольник с серой границей обозначает недокументированную структуру или класс.\n" "<li>Прямоугольник с красной границей обозначает документированную структуру или класс, для которого\n" - " не все отношения наследования/содержания показаны. Граф усечен, " - "если он не поместился в указанных границах." + " не все отношения наследования/содержания показаны. Граф усекается, " + "если он не поместился в указанные границы." "</ul>\n" - "Стрелки имеют следующее значение:\n" + "Стрелки имеют следующие значения:\n" "<ul>\n" "<li>Темносиняя стрелка используется для изображения отношения открытого наследования " "между двумя классами.\n" "<li>Темнозеленая стрелка используется при защищенном наследовании.\n" - "<li>Темнозеленая стрелка используется при закрытом наследовании.\n" - "<li>Фиолетовая стрелка используется, если класс содержится в или используется другим классом" - ". Стрелка маркированна переменной, " + "<li>Темнокрасная стрелка используется при закрытом наследовании.\n" + "<li>Фиолетовая пунктирная стрелка используется, если класс содержится " + "в другом классе или используется другим классом. " + "Стрелка маркируется именем переменной, " "через которую доступен указываемый класс или структура. \n" "</ul>\n"; } QCString trLegend() { - return "толкование"; + return "обозначения"; } QCString trTest() { @@ -794,34 +867,57 @@ class TranslatorRussian : public Translator } QCString trTestList() { - return "Список Тестов"; + return "Список тестов"; } -////////////////////////////////////////////////////////////////////////// -// new since 1.2.1 -////////////////////////////////////////////////////////////////////////// - /*! Used as a section header for KDE-2 IDL methods */ virtual QCString trDCOPMethods() { return "Методы DCOP"; } -////////////////////////////////////////////////////////////////////////// -// new since 1.2.2 -////////////////////////////////////////////////////////////////////////// - /*! Used as a section header for IDL properties */ virtual QCString trProperties() { return "Свойства"; } - /*! Used as a section header for IDL property documentation */ virtual QCString trPropertyDocumentation() { - return "Документация Свойств"; + return "Документация свойств"; } + virtual QCString trInterfaces() + { + return "Интерфейсы"; + } + virtual QCString trClasses() + { + return "Классы"; + } + virtual QCString trPackage(const char *name) + { + return (QCString)"Пакет "+name; + } + virtual QCString trPackageList() + { + return "Список пакетов"; + } + virtual QCString trPackageListDescription() + { + return "Список пакетов с кратким описанием (если есть):"; + } + virtual QCString trPackages() + { + return "Пакеты"; + } + virtual QCString trPackageDocumentation() + { + return "Документация пакетов"; + } + virtual QCString trDefineValue() + { + return "Значение:"; + } }; #endif diff --git a/src/treeview.h b/src/treeview.h index 213bc82..433db9e 100644 --- a/src/treeview.h +++ b/src/treeview.h @@ -103,7 +103,7 @@ " \n" "function hideFolder() \n" "{ \n" -" if (browserVersion == 1) { \n" +" if (browserVersion == 1 || browserVersion == 3) { \n" " if (this.navObj.style.display == \"none\") \n" " return \n" " this.navObj.style.display = \"none\" \n" @@ -171,6 +171,8 @@ " doc.yPos=8 \n" " doc.write(\"<layer id='folder\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n" " } \n" +" if (browserVersion == 3) \n" +" doc.write(\"<div id='folder\" + this.id + \"' style='display:none;'>\") \n" " \n" " doc.write(\"\\n<table \") \n" " if (browserVersion == 1) \n" @@ -199,6 +201,9 @@ " if (browserVersion == 2) { \n" " doc.write(\"</layer>\") \n" " } \n" +" if (browserVersion == 3) { \n" +" doc.write(\"</div>\") \n" +" } \n" " \n" " if (browserVersion == 1) { \n" " this.navObj = doc.all[\"folder\"+this.id] \n" @@ -209,7 +214,11 @@ " this.iconImg = this.navObj.document.images[\"folderIcon\"+this.id] \n" " this.nodeImg = this.navObj.document.images[\"nodeIcon\"+this.id] \n" " doc.yPos=doc.yPos+this.navObj.clip.height \n" -" } \n" +" } else if (browserVersion == 3) {\n" +" this.navObj = doc.getElementById(\"folder\"+this.id)\n" +" this.iconImg = doc.images.namedItem(\"folderIcon\"+this.id)\n" +" this.nodeImg = doc.images.namedItem(\"nodeIcon\"+this.id)\n" +" }\n" "} \n" " \n" "function outputFolderLink() \n" @@ -276,7 +285,7 @@ " \n" "function hideItem() \n" "{ \n" -" if (browserVersion == 1) { \n" +" if (browserVersion == 1 || browserVersion == 3) { \n" " if (this.navObj.style.display == \"none\") \n" " return \n" " this.navObj.style.display = \"none\" \n" @@ -310,6 +319,8 @@ "{ \n" " if (browserVersion == 2) \n" " doc.write(\"<layer id='item\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n" +" if (browserVersion == 3) \n" +" doc.write(\"<div id='item\" + this.id + \"' style='display:block;'>\") \n" " \n" " doc.write(\"\\n<table \") \n" " if (browserVersion == 1) \n" @@ -340,6 +351,8 @@ " \n" " if (browserVersion == 2) \n" " doc.write(\"</layer>\") \n" +" if (browserVersion == 3) \n" +" doc.write(\"</div>\")\n" " \n" " if (browserVersion == 1) { \n" " this.navObj = doc.all[\"item\"+this.id] \n" @@ -348,7 +361,10 @@ " this.navObj = doc.layers[\"item\"+this.id] \n" " this.iconImg = this.navObj.document.images[\"itemIcon\"+this.id] \n" " doc.yPos=doc.yPos+this.navObj.clip.height \n" -" } \n" +" } else if (browserVersion == 3) {\n" +" this.navObj = doc.getElementById(\"item\"+this.id)\n" +" this.iconImg = doc.images.namedItem(\"itemIcon\"+this.id)\n" +" }\n" "} \n" " \n" " \n" @@ -357,7 +373,7 @@ " \n" "function display() \n" "{ \n" -" if (browserVersion == 1) \n" +" if (browserVersion == 1 || browserVersion == 3) \n" " this.navObj.style.display = \"block\" \n" " else \n" " this.navObj.visibility = \"show\" \n" @@ -419,15 +435,18 @@ " else \n" " if (doc.layers) \n" " browserVersion = 2 //NS4 \n" -" else \n" -" browserVersion = 0 //other \n" +" else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)\n" +" browserVersion = 3 //mozilla\n" +" else \n" +" browserVersion = 0 //other \n" "\n" " foldersTree.initialize(0, 1, \"\") \n" " foldersTree.display()\n" " \n" " if (browserVersion > 0) \n" " { \n" -" doc.write(\"<layer top=\"+indexOfEntries[nEntries-1].navObj.top+\"> </layer>\") \n" +" if(browserVersion != 3)\n" +" doc.write(\"<layer top=\"+indexOfEntries[nEntries-1].navObj.top+\"> </layer>\") \n" " \n" " // close the whole tree \n" " clickOnNode(0) \n" diff --git a/src/treeview.js b/src/treeview.js index 58ca384..cc5e26a 100644 --- a/src/treeview.js +++ b/src/treeview.js @@ -103,7 +103,7 @@ function propagateChangesInState(folder) function hideFolder() { - if (browserVersion == 1) { + if (browserVersion == 1 || browserVersion == 3) { if (this.navObj.style.display == "none") return this.navObj.style.display = "none" @@ -171,6 +171,8 @@ function drawFolder(leftSide) doc.yPos=8 doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>") } + if (browserVersion == 3) + doc.write("<div id='folder" + this.id + "' style='display:none;'>") doc.write("\n<table ") if (browserVersion == 1) @@ -199,6 +201,9 @@ function drawFolder(leftSide) if (browserVersion == 2) { doc.write("</layer>") } + if (browserVersion == 3) { + doc.write("</div>") + } if (browserVersion == 1) { this.navObj = doc.all["folder"+this.id] @@ -209,7 +214,11 @@ function drawFolder(leftSide) this.iconImg = this.navObj.document.images["folderIcon"+this.id] this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] doc.yPos=doc.yPos+this.navObj.clip.height - } + } else if (browserVersion == 3) { + this.navObj = doc.getElementById("folder"+this.id) + this.iconImg = doc.images.namedItem("folderIcon"+this.id) + this.nodeImg = doc.images.namedItem("nodeIcon"+this.id) + } } function outputFolderLink() @@ -276,7 +285,7 @@ function Item(itemDescription, tagName, itemLink) // Constructor function hideItem() { - if (browserVersion == 1) { + if (browserVersion == 1 || browserVersion == 3) { if (this.navObj.style.display == "none") return this.navObj.style.display = "none" @@ -310,6 +319,8 @@ function drawItem(leftSide) { if (browserVersion == 2) doc.write("<layer id='item" + this.id + "' top=" + doc.yPos + " visibility=hidden>") + if (browserVersion == 3) + doc.write("<div id='item" + this.id + "' style='display:block;'>") doc.write("\n<table ") if (browserVersion == 1) @@ -340,6 +351,8 @@ function drawItem(leftSide) if (browserVersion == 2) doc.write("</layer>") + if (browserVersion == 3) + doc.write("</div>") if (browserVersion == 1) { this.navObj = doc.all["item"+this.id] @@ -348,7 +361,10 @@ function drawItem(leftSide) this.navObj = doc.layers["item"+this.id] this.iconImg = this.navObj.document.images["itemIcon"+this.id] doc.yPos=doc.yPos+this.navObj.clip.height - } + } else if (browserVersion == 3) { + this.navObj = doc.getElementById("item"+this.id) + this.iconImg = doc.images.namedItem("itemIcon"+this.id) + } } @@ -357,7 +373,7 @@ function drawItem(leftSide) function display() { - if (browserVersion == 1) + if (browserVersion == 1 || browserVersion == 3) this.navObj.style.display = "block" else this.navObj.visibility = "show" @@ -419,15 +435,18 @@ function initializeDocument() else if (doc.layers) browserVersion = 2 //NS4 - else - browserVersion = 0 //other + else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1) + browserVersion = 3 //mozilla + else + browserVersion = 0 //other foldersTree.initialize(0, 1, "") foldersTree.display() if (browserVersion > 0) { - doc.write("<layer top="+indexOfEntries[nEntries-1].navObj.top+"> </layer>") + if(browserVersion != 3) + doc.write("<layer top="+indexOfEntries[nEntries-1].navObj.top+"> </layer>") // close the whole tree clickOnNode(0) diff --git a/src/util.cpp b/src/util.cpp index bc4e8b5..5e9f840 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -324,15 +324,17 @@ QCString stripFromPath(const QCString &path) int guessSection(const char *name) { QCString n=((QCString)name).lower(); - if (n.right(2)==".c" || // source - n.right(3)==".cc" || - n.right(4)==".cxx" || - n.right(4)==".cpp" || - n.right(4)==".c++" || - n.right(3)==".ii" || // inline - n.right(4)==".ixx" || - n.right(4)==".ipp" || - n.right(4)==".i++" + if (n.right(2)==".c" || // source + n.right(3)==".cc" || + n.right(4)==".cxx" || + n.right(4)==".cpp" || + n.right(4)==".c++" || + n.right(5)==".java" || + n.right(3)==".ii" || // inline + n.right(4)==".ixx" || + n.right(4)==".ipp" || + n.right(4)==".i++" || + n.right(4)==".inl" ) return Entry::SOURCE_SEC; if (n.right(2)==".h" || // header n.right(3)==".hh" || -- cgit v0.12