diff options
author | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2001-05-24 16:25:58 (GMT) |
---|---|---|
committer | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2001-05-24 16:25:58 (GMT) |
commit | 9c04d0ffef418ec6c771a0afa4679a4e508ba710 (patch) | |
tree | 8572e4828627ab6b9a6d55d425469176c0c02e0b | |
parent | 9ca6896b9e1e932f3ddf11bb74a9f80d5560044e (diff) | |
download | Doxygen-9c04d0ffef418ec6c771a0afa4679a4e508ba710.zip Doxygen-9c04d0ffef418ec6c771a0afa4679a4e508ba710.tar.gz Doxygen-9c04d0ffef418ec6c771a0afa4679a4e508ba710.tar.bz2 |
Release-1.2.7-20010524
72 files changed, 1866 insertions, 1054 deletions
@@ -1,6 +1,6 @@ -DOXYGEN Version 1.2.7-20010517 +DOXYGEN Version 1.2.7-20010524 Please read the installation section of the manual for instructions. -------- -Dimitri van Heesch (17 May 2001) +Dimitri van Heesch (24 May 2001) @@ -1,4 +1,4 @@ -DOXYGEN Version 1.2.7_20010517 +DOXYGEN Version 1.2.7_20010524 Please read INSTALL for compilation instructions. @@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at Enjoy, -Dimitri van Heesch (17 May 2001) +Dimitri van Heesch (24 May 2001) @@ -1 +1 @@ -1.2.7-20010517 +1.2.7-20010524 diff --git a/addon/xmlgen/xml.cpp b/addon/xmlgen/xml.cpp index ea40d05..6e3a7d6 100644 --- a/addon/xmlgen/xml.cpp +++ b/addon/xmlgen/xml.cpp @@ -493,10 +493,10 @@ void generateXML() t << "<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?>" << endl; t << "<!DOCTYPE doxygen SYSTEM \"doxygen.dtd\">" << endl; t << "<doxygen>" << endl; - if (Doxygen::classList.count()+Doxygen::inputNameList.count()>0) + if (Doxygen::classSDict.count()+Doxygen::inputNameList.count()>0) { t << " <compoundlist>" << endl; - ClassListIterator cli(Doxygen::classList); + ClassSDict::Iterator cli(Doxygen::classSDict); ClassDef *cd; for (cli.toFirst();(cd=cli.current());++cli) { diff --git a/doc/Makefile.in b/doc/Makefile.in index 1c7a664..90c7d94 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -12,7 +12,7 @@ # Documents produced by Doxygen are derivative works derived from the # input used in their production; they are not affected by this license. -all: language.doc FORCE +all: FORCE DOXYGEN_DOCDIR=$(DOXYDOCS); \ export DOXYGEN_DOCDIR; \ VERSION=$(VERSION) ; \ @@ -28,6 +28,8 @@ all: language.doc FORCE clean: rm -rf ../html ../latex language.doc +language: language.doc language.tpl translator.pl + language.doc: language.tpl FORCE $(PERL) translator.pl diff --git a/doc/Makefile.win_nmake.in b/doc/Makefile.win_nmake.in index 07ea0d0..92829a1 100644 --- a/doc/Makefile.win_nmake.in +++ b/doc/Makefile.win_nmake.in @@ -26,5 +26,11 @@ all: FORCE clean: del /s /q ..\html ..\latex + del translator_report.txt *.bak + +language: language.doc language.tpl translator.pl + +language.doc: language.tpl FORCE + $(PERL) translator.pl FORCE: diff --git a/doc/commands.doc b/doc/commands.doc index a3b89e7..b0b9bc2 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -127,6 +127,7 @@ documentation: <li> \refitem cmdverbinclude \verbinclude <li> \refitem cmdversion \version <li> \refitem cmdwarning \warning +<li> \refitem cmdweakgroup \weakgroup <li> \refitem cmddollar \$ <li> \refitem cmdat \@ <li> \refitem cmdbackslash \\ @@ -150,10 +151,14 @@ Doxygen. Unrecognized commands are treated as normal text. Structural indicators \htmlonly --- </center>\endhtmlonly</h2> -\subsection cmdaddtogroup \addtogroup <name> +\subsection cmdaddtogroup \addtogroup <name> [(title)] \addindex \addtogroup - Add extra documentation to a group \<name\> that was previously defined - using \\defgroup. This command can also be used to add a number of + Defines a group just like \ref cmddefgroup "\\defgroup", but in contrast to + that command using the same \<name\> more than once will not result in a warning, + but rather one group with a merged documentation and the first title found in + any of the commands. + + The title is optional, so this command can also be used to add a number of entities to an existing group using \@{ and \@} like this: \verbatim @@ -177,7 +182,8 @@ Doxygen. Unrecognized commands are treated as normal text. /*! @} */ \endverbatim - See also \ref cmddefgroup "\\defgroup" and \ref cmdingroup "\\ingroup". + \sa page \ref grouping "Grouping", sections \ref cmddefgroup "\\defgroup", \ref cmdingroup "\\ingroup" and + \ref cmdweakgroup "\\weakgroup". \subsection cmdclass \class <name> [<header-file>] [<header-name>] @@ -225,9 +231,10 @@ Doxygen. Unrecognized commands are treated as normal text. categories. You can also use groups as members of other groups, thus building a hierarchy of groups. - The \<name\> argument should an single word identifier. + The \<name\> argument should be a single word identifier. - \sa section \ref cmdingroup "\\ingroup" + \sa page \ref grouping "Grouping", sections \ref cmdingroup "\\ingroup", \ref cmdaddtogroup "\\addtogroup", + \ref cmdweakgroup "\\weakgroup". <hr> @@ -348,7 +355,8 @@ Doxygen. Unrecognized commands are treated as normal text. class, file or namespace, then it will be added to the group or groups identified by \<groupname\>. - \sa section \ref cmddefgroup "\\defgroup". + \sa page \ref grouping "Grouping", sections \ref cmddefgroup "\\defgroup", + \ref cmdaddtogroup "\\addtogroup" and \ref cmdweakgroup "\\weakgroup" <hr> \subsection cmdinterface \interface @@ -556,6 +564,15 @@ Public/Protected/Private/... section. \sa section \ref cmdfn "\\fn" and \ref cmdtypedef "\\typedef". <hr> +\subsection cmdweakgroup \weakgroup <name> [(title)] + \addindex \addtogroup + Can be used exactly like \ref cmdaddtogroup "\\addtogroup", but has + a lower priority when it comes to resolving conflicting grouping + definitions. + + \sa page \ref grouping "Grouping" and \ref cmdaddtogroup "\\addtogroup". + +<hr> <h2>\htmlonly <center> --- \endhtmlonly Section indicators diff --git a/doc/config.doc b/doc/config.doc index b41c9af..f5d1f1e 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -142,6 +142,7 @@ followed by the descriptions of the tags grouped by category. <li> \refitem cfg_latex_output LATEX_OUTPUT <li> \refitem cfg_macro_expansion MACRO_EXPANSION <li> \refitem cfg_man_extension MAN_EXTENSION +<li> \refitem cfg_man_links MAN_LINKS <li> \refitem cfg_man_output MAN_OUTPUT <li> \refitem cfg_max_dot_graph_height MAX_DOT_GRAPH_HEIGHT <li> \refitem cfg_max_dot_graph_width MAX_DOT_GRAPH_WIDTH @@ -997,6 +998,16 @@ EXTRA_PACKAGES = times \addindex MAX_EXTENSION The \c MAN_EXTENSION tag determines the extension that is added to the generated man pages (default is the subroutine's section .3) + +\anchor cfg_man_links +<dt>\c MAN_LINKS <dd> + \addindex MAN_LINKS + If the \c MAN_LINKS tag is set to \c YES and Doxygen generates man output, + then it will generate one additional man file for each entity documented in + the real man page(s). These additional files only source the real man page, + but without them the man command would be unable to find the correct page. + The default is \c NO. + </dl> \subsection config_prepro Preprocessor related options @@ -1138,22 +1149,22 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre> \anchor cfg_include_graph <dt>\c INCLUDE_GRAPH <dd> \addindex INCLUDE_GRAPH - If the \c ENABLE_PREPROCESSING, \c INCLUDE_GRAPH, and \c HAVE_DOT tags are - set to \c YES then doxygen will generate a graph for each documented file + If the \c ENABLE_PREPROCESSING, \c SEARCH_INCLUDES, \c INCLUDE_GRAPH, and \c HAVE_DOT + tags are set to \c YES then doxygen will generate a graph for each documented file showing the direct and indirect include dependencies of the file with other documented files. \anchor cfg_included_by_graph <dt>\c INCLUDED_BY_GRAPH <dd> \addindex INCLUDED_BY_GRAPH - If the \c ENABLE_PREPROCESSING, \c INCLUDED_BY_GRAPH, and \c HAVE_DOT tags are - set to \c YES then doxygen will generate a graph for each documented header - file showing the documented files that directly or indirectly include this - file. + If the \c ENABLE_PREPROCESSING, \c SEARCH_INCLUDES, \c INCLUDED_BY_GRAPH, and + \c HAVE_DOT tags are set to \c YES then doxygen will generate a graph for each + documented header file showing the documented files that directly or indirectly + include this file. \anchor cfg_graphical_hierarchy <dt>\c GRAPHICAL_HIERARCHY <dd> - \addindex GRAPHICAL_HIERATCHY + \addindex GRAPHICAL_HIERARCHY If the \c GRAPHICAL_HIERARCHY and \c HAVE_DOT tags are set to \c YES then doxygen will graphical hierarchy of all classes instead of a textual one. diff --git a/doc/faq.doc b/doc/faq.doc index 38d553a..7b4894b 100644 --- a/doc/faq.doc +++ b/doc/faq.doc @@ -17,7 +17,7 @@ /*! \page faq Frequently Asked Questions <ol> -<li><b>How do get information on the index page in HTML?</b> +<li><b>How to get information on the index page in HTML?</b> <p> You should use the \\mainpage command inside a comment block like this: \verbatim diff --git a/doc/grouping.doc b/doc/grouping.doc index 71a8e37..ae80ae8 100644 --- a/doc/grouping.doc +++ b/doc/grouping.doc @@ -34,6 +34,7 @@ command in a special comment block. The first argument of the command is a label that should uniquely identify the group. You can make an entity a member of a specific group by putting a \ref cmdingroup "\\ingroup" command inside its documentation block. +The second argument is the title of the group. To avoid putting \ref cmdingroup "\\ingroup" commands in the documentation of each member you can also group members together by the @@ -44,11 +45,75 @@ documentation block. Groups can also be nested using these grouping markers. +You will get an error message when you use the same group label more than once. +If you don't want doxygen to enforce +unique labels, then you can use \ref cmdaddtogroup "\\addtogroup" instead of +\ref cmddefgroup "\\defgroup". It can be used exactly like \ref cmddefgroup "\\defgroup", +but when the group has been defined already, then it silently merges the existing documentation +with the new one. +The title of the group is optional for this command, so you can use +\verbatim +/** \addtogroup <label> */ +/*\@{*/ +/*\@}*/ +\endverbatim +to add members to a group that is defined in more detail elsewhere. + Note that compound entities (like classes, files and namespaces) can be put into multiple groups, but members (like variable, functions, typedefs and enums) can only be a member of one group (this restriction is to avoid ambiguous linking targets). +Doxygen will put members into that group where the grouping definition had +the highest priority: f.i. \ref cmdingroup "\\ingroup" overrides any automatic +grouping definition via <code>\@{</code> <code>\@}</code>. Conflicting grouping +definitions with the same priority trigger a warning, unless one definition +was for a member without any explicit documentation. The following example +puts VarInA into group A and silently resolves the conflict for IntegerVariable by +putting it into group IntVariables, because the second instance of IntegerVariable +is undocumented: + +\verbatim + +/** + * \ingroup A + */ +extern int VarInA; + +/** + * \defgroup IntVariables Global integer variables + */ +/*@{*/ + +/** an integer variable */ +extern int IntegerVariable; + +/*@}*/ + +.... + +/** + * \defgroup Variables Global variables + */ +/*@{*/ + +/** a variable in group A */ +int VarInA; + +int IntegerVariable; + +/*@}*/ +\endverbatim + +The priorities of grouping definitions are (from highest to lowest): +\ref cmdingroup "\\ingroup", \ref cmddefgroup "\\defgroup", +\ref cmdaddtogroup "\\addtogroup", \ref cmdweakgroup "\\weakgroup". +The last command is exactly like \ref cmdaddtogroup "\\addtogroup" +with a lower priority. It was added to allow "lazy" grouping +definitions: you can use commands with a higher priority in your .h +files to define the hierarchy and \ref cmdweakgroup "\\weakgroup" +in .c files without having to duplicate the hierarchy exactly. + \par Example: \verbinclude group.cpp diff --git a/doc/install.doc b/doc/install.doc index 70d625a..2a5a6e6 100644 --- a/doc/install.doc +++ b/doc/install.doc @@ -421,6 +421,10 @@ Here is what is required: to produce PDF output instead of DVI, or the PDF can be produced from PostScript using the utility <code>ps2pdf</code>. + If you want to use MikTeX then you need to download the + fancyhdr package separately. You can find it at: + ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/supported/fancyhdr/ + <li>If you want to generate compressed HTML help (see \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP") in the config file, then you need the Microsoft HTML help workshop. diff --git a/doc/language.tpl b/doc/language.tpl index f7eb542..18c0b40 100644 --- a/doc/language.tpl +++ b/doc/language.tpl @@ -1,6 +1,6 @@ /****************************************************************************** - * <notice>This is the template for generating language.doc. Edit this file, - * not the language.doc.</notice> + * <notice>This is the template for generating language.doc. + * Edit manually this file, not the language.doc!</notice> * * * Copyright (C) 1997-2001 by Dimitri van Heesch. @@ -23,7 +23,8 @@ Doxygen has support for multiple languages. This means that the text fragments that doxygen generates can changed into languages other than English (the default) at configuration time. <p> -Currently, $numlang languages are supported (sorted alphabetically): +Currently (version $version), $numlang languages +are supported (sorted alphabetically): $languages. The table of information related to the supported languages follows. @@ -33,7 +34,6 @@ when the translator was updated. <p> $information_table -Have a look at <code>doxygen/doc/translator.txt</code> for more details. <p> Most people on the list have indicated that they were also busy diff --git a/doc/maintainers.txt b/doc/maintainers.txt index 16b9e46..bddd9d4 100644 --- a/doc/maintainers.txt +++ b/doc/maintainers.txt @@ -15,7 +15,7 @@ Petr Přikryl: prikrylp@skil.cz Vlastimil Havran: havran@fel.cvut.cz Danish -Erik Søe Sørensen: erik@mail.nu +Erik Søe Sørensen: erik@mail.nu Dutch Dimitri van Heesch: dimitri@stack.nl diff --git a/doc/translator.bat b/doc/translator.bat index fc12581..3dccb13 100644 --- a/doc/translator.bat +++ b/doc/translator.bat @@ -1,4 +1 @@ -:start -call perl -w translator.pl -pause -goto start
\ No newline at end of file +@call perl -w translator.pl diff --git a/doc/translator.pl b/doc/translator.pl index f5b889e..375fe2b 100644 --- a/doc/translator.pl +++ b/doc/translator.pl @@ -4,6 +4,8 @@ # This is a Perl script for Doxygen developers. # Its main purpose is to extract the information from sources # related to internationalization (the translator classes). +# It uses the information to generate documentation (language.doc, +# translator_report.txt) from templates (language.tpl, maintainers.txt). # # Petr Prikryl (prikrylp@skil.cz) # History: @@ -11,10 +13,26 @@ # 2001/04/27 # - First version of the script. # -# 2002/05/02 +# 2001/05/02 # - Update to accept updateNeededMessage() in the Translator class. # - First version that generates doc/language.doc. # +# 2001/05/07 +# - Environment variable $doxygenrootdir now points to the +# Doxygen's root directory. +# +# 2001/05/11 +# - Updated to reflect using TranslatorAdapterCVS as the base +# class for "almost up-to-date" translators. +# - $doxygenrootdir and other global variables for storing +# directories determined from DOXYGEN_DOCDIR environment +# variable. The change was done because the DOXYGEN_DOCDIR +# was already used before. +# - $version mark can be used in the language.tpl template. +# +# 2001/05/18 +# - Character entity ø recognized in maintainers.txt. +# ################################################################ require 5.005; @@ -23,14 +41,21 @@ use Carp; # Global variables # -my $doxygenrootdir = ".."; -my $srcdir = "$doxygenrootdir/src"; -my $docdir = "$doxygenrootdir/doc"; +my $doxygenrootdir = 'directory set at the beginning of the body'; +my $srcdir = 'directory set at the beginning of the body'; +my $docdir = 'directory set at the beginning of the body'; + +my $doxversion = 'set at the beginning of the body'; # Names of the output files. # -my $ftxt = "translator_report.txt"; -my $fdoc = "language.doc"; +my $ftranslatortxt = "translator_report.txt"; +my $flangdoc = "language.doc"; + +# Names of the template files and other intput files. +# +my $flangtpl = "language.tpl"; # template for language.doc +my $fmaintainers = "maintainers.txt"; # database of local lang. maintainers ################################################################ @@ -199,7 +224,7 @@ sub GetInfoFrom ##{{{ ################################################################ # GenerateLanguageDoc takes document templates and code sources -# generates the content as expected in the language.doc file (the +# generates the content as expected in the $flangdoc file (the # part of the Doxygen documentation), and returns the result as a # string. # @@ -250,7 +275,8 @@ xxxTABLE_FOOTxxx \latexonly \begin{tabular}{|l|l|l|l|} \hline - {\bf Language} & {\bf Maintainer} & {Contact address} & {Status} \\ + {\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\ + \hline xxxTABLE_HEADxxx my $latexTableRow = <<'xxxTABLE_ROWxxx'; @@ -267,7 +293,7 @@ xxxTABLE_FOOTxxx # Read the template of the documentation, and join the content # to a single string. #{{{ # - my $fin = "$docdir/language.tpl"; + my $fin = "$docdir/$flangtpl"; open(FIN, "< $fin") or die "\nError when open < $fin: $!"; my @content = <FIN>; close FIN; @@ -304,7 +330,7 @@ xxxTABLE_FOOTxxx # Read the information related to maintainers into the # string using suitable separators -- one line, one language. #{{{ # - $fin = "$docdir/maintainers.txt"; + $fin = "$docdir/$fmaintainers"; open(FIN, "< $fin") or die "\nError when open < $fin: $!"; my @maintainers = <FIN>; close FIN; @@ -374,7 +400,7 @@ xxxTABLE_FOOTxxx foreach my $lang (sort keys %language) { # Read the line with info for the language and separate - # the information of status. #{{{ + # the status. #{{{ # my @list = split(/<msep\/>/, $language{$lang}); my $status = shift @list; @@ -382,6 +408,10 @@ xxxTABLE_FOOTxxx my $i = $status =~ s{^Translator$}{up-to-date}; if ($i == 0) { + $i = $status =~ s{^TranslatorAdapterCVS}{almost up-to-date}; + } + + if ($i == 0) { $i = $status =~ s{^TranslatorAdapter_(\d)_(\d)_(\d)} {$1.$2.$3}x; } @@ -479,9 +509,9 @@ xxxTABLE_FOOTxxx ##}}} # Finish the tables, and substitute the mark in the doc - # template by the contatenation of the tables. Add NOSPAM to - # email addresses in the HTML table. Replace the special - # character sequences. #{{{ + # template by the contatenation of the tables and the notice + # about $ftranslatortxt. Add NOSPAM to email addresses in the + # HTML table. Replace the special character sequences. #{{{ # $tableHTML .= $htmlTableFoot; $tableLATEX .= $latexTableFoot; @@ -493,16 +523,26 @@ xxxTABLE_FOOTxxx $tableLATEX =~ s/á/\\'{a}/sg; $tableLATEX =~ s/ä/\\"{a}/sg; $tableLATEX =~ s/ö/\\"{o}/sg; + $tableLATEX =~ s/ø/\\o{}/sg; $tableLATEX =~ s/_/\\_/sg; - $output =~ s{\$information_table}{$tableHTML$tableLATEX}; + my $notice = "\nHave a look at <a href=\"../doc/$ftranslatortxt\"\n>" + . "<code>doxygen/doc/$ftranslatortxt</code></a> " + . "for more details."; + + $output =~ s{\$information_table}{$tableHTML$tableLATEX$notice}; + + $output =~ s{\$version}{$doxversion}; + ##}}} # Replace the introduction notice in the output. #{{{ # $output =~ s{<notice>.+?</notice>} -{Warning: this file was generated from the language.tpl template - * Do not edit this file. Edit the template!}sx; +{Warning: this file was generated from the $flangtpl template + * and the $fmaintainers files by the $0 script. + * + * Do not edit this file. Edit the above mentioned files!}sx; ##}}} # Return the content of the generated output file. @@ -516,6 +556,24 @@ xxxTABLE_FOOTxxx # Body # { + # Set the content of global variables using the environment + # variables. #{{{ + # + $docdir = (defined $ENV{'DOXYGEN_DOCDIR'}) + ? $ENV{'DOXYGEN_DOCDIR'} : '.'; + + $docdir =~ s{\\}{/}g; + $docdir =~ s{/$}{}; + + $doxygenrootdir = ($docdir eq '.') ? '..' : $docdir; + $doxygenrootdir =~ s{/doc$}{}; + + $srcdir = "$doxygenrootdir/src"; + + $doxversion = (defined $ENV{'VERSION'}) ? $ENV{'VERSION'} : 'unknown'; + + ##}}} + # The translator base class must be present. Exit otherwise. #{{{ # if (!-f "$srcdir/translator.h") @@ -635,7 +693,7 @@ xxxTABLE_FOOTxxx # Generate the textual output file. # - my $fout = "$docdir/$ftxt"; + my $fout = "$docdir/$ftranslatortxt"; # Open it first. # @@ -655,24 +713,37 @@ xxxTABLE_FOOTxxx # If there are up-to-date translators, list them. #{{{ # - my @list = sort grep { $cb{$_} =~ m/^Translator$/ } keys %cb; + my @list = sort grep { $cb{$_} =~ m/^Translator(AdapterCVS)?$/ } keys %cb; if (@list) { print FOUT "\n" .'-' x 70 . "\n"; print FOUT "The following translator classes are up-to-date " . "(sorted alphabetically).\n" . "This means that they derive from the Translator class. " - . "However, there still\n" - . "may be some details listed below " - . "for them. Please, check it.\n\n"; + . "If the translator\n" + . "derives from TranslatorAdapterCVS, it is considered " + . "to be almost up-to-date.\n" + . "In other words, it is newer than the last official " + . "release. Anyway, there\n" + . "still may be some details listed even for " + . "the up-to-date translators.\n" + . "Please, check the text below.\n\n"; - foreach (@list) { print FOUT " $_\n"; } + foreach (@list) { + print FOUT " $_"; + + # For almost up-to-date translators, show also the base class. + # + if ($cb{$_} ne 'Translator') { print FOUT "\t($cb{$_})"; } + + print FOUT "\n"; + } } ##}}} # If there are obsolete translators, list them. #{{{ # - @list = sort grep { $cb{$_} =~ m/^TranslatorAdapter/ } keys %cb; + @list = sort grep { $cb{$_} =~ m/^TranslatorAdapter_/ } keys %cb; if (@list) { print FOUT "\n" .'-' x 70 . "\n"; @@ -732,7 +803,7 @@ xxxTABLE_FOOTxxx # Generate the language.doc file. # - $fout = "$docdir/$fdoc"; + $fout = "$docdir/$flangdoc"; # Open it first for the output. # diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index b61fab3..b235205 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,14 +1,14 @@ Name: doxygen -Version: 1.2.7_20010517 +Version: 1.2.7_20010524 Summary: documentation system for C, C++ and IDL -Release: 2 -Source: doxygen_%{version}.src.tar.gz +Release: 3 +Source: doxygen-%{version}.src.tar.gz Copyright: GPL Group: unsorted URL: http://www.stack.nl/~dimitri/doxygen Packager: Matthias Andree <ma@dt.e-technik.uni-dortmund.de> -BuildRoot: /var/tmp/doxygen_%{version}.root +BuildRoot: /var/tmp/doxygen-%{version}.root # requires Perl for tmake (Troll's make) BuildPrereq: perl tetex @@ -33,7 +33,7 @@ den Quellen extrahiert. Doxygen wird auf einer Linux-Plattform entwickelt, funktioniert aber genauso auf den meisten andern Unix Dialekten. Das Programm ist auch für Windows 95/NT erhältlich. -Author: +Autor: -------- Dimitri van Heesch <dimitri@stack.nl> @@ -41,13 +41,14 @@ Author: %setup -n doxygen-%{version} %build -CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix /do_we_need_this_usr --with-doxywizard +CFLAGS="$RPM_OPT_FLAGS" ./configure --with-doxywizard make %install rm -rf $RPM_BUILD_ROOT make install INSTALL=$RPM_BUILD_ROOT/usr DOCDIR=$RPM_BUILD_ROOT%{_docdir}/doxygen install -m 644 LICENSE LANGUAGE.HOWTO PLATFORMS README VERSION $RPM_BUILD_ROOT%{_docdir}/doxygen +find $RPM_BUILD_ROOT -name CVS -type d -depth -exec rm -r {} \; %files %defattr(-,root,root) diff --git a/src/classdef.cpp b/src/classdef.cpp index c3219d6..3eb9fae 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -626,7 +626,7 @@ void ClassDef::writeDocumentation(OutputList &ol) pageType+=cType; pageTitle+=pageType+" Reference"; if (outerTempArgList) pageTitle.prepend(" Template"); - startFile(ol,getOutputFileBase(),pageTitle); + startFile(ol,getOutputFileBase(),name(),pageTitle); startTitle(ol,getOutputFileBase()); parseText(ol,theTranslator->trCompoundReference(name(),m_compType,outerTempArgList!=0)); endTitle(ol,getOutputFileBase(),name()); @@ -1096,7 +1096,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.disableAllBut(OutputGenerator::Man); ol.writeString("\n"); ol.startGroupHeader(); - parseText(ol,theTranslator->trAuthor()); + parseText(ol,theTranslator->trAuthor(TRUE,TRUE)); ol.endGroupHeader(); parseText(ol,theTranslator->trGeneratedAutomatically(Config_getString("PROJECT_NAME"))); ol.popGeneratorState(); @@ -1121,7 +1121,8 @@ void ClassDef::writeMemberList(OutputList &ol) ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); - startFile(ol,m_memListFileName,theTranslator->trMemberList()); + startFile(ol,m_memListFileName,m_memListFileName, + theTranslator->trMemberList()); startTitle(ol,0); parseText(ol,name()+" "+theTranslator->trMemberList()); endTitle(ol,0,0); @@ -1891,7 +1892,7 @@ QCString ClassDef::getSourceFileBase() const return convertNameToFile(m_fileName+"-source"); } -void ClassDef::setGroupDefForAllMembers(GroupDef *gd) +void ClassDef::setGroupDefForAllMembers(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs) { gd->addClass(this); //printf("ClassDef::setGroupDefForAllMembers(%s)\n",gd->name().data()); @@ -1904,10 +1905,10 @@ void ClassDef::setGroupDefForAllMembers(GroupDef *gd) for (mnii.toFirst();(mi=mnii.current());++mnii) { MemberDef *md=mi->memberDef; - md->setGroupDef(gd); + md->setGroupDef(gd,pri,fileName,startLine,hasDocs); gd->insertMember(md,TRUE); ClassDef *innerClass = md->getClassDefOfAnonymousType(); - if (innerClass) innerClass->setGroupDefForAllMembers(gd); + if (innerClass) innerClass->setGroupDefForAllMembers(gd,pri,fileName,startLine,hasDocs); } } } diff --git a/src/classdef.h b/src/classdef.h index 7869759..b39b87d 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -228,7 +228,7 @@ class ClassDef : public Definition void determineIntfUsageRelation(); void setSubGrouping(bool enabled) { m_subGrouping = enabled; } void setProtection(Protection p) { m_prot=p; } - void setGroupDefForAllMembers(GroupDef *g); + void setGroupDefForAllMembers(GroupDef *g,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs); void addInnerCompound(Definition *d); void setIsTemplateBaseClass(int num) { m_isTemplBaseClass = num; } void initTemplateMapping(); diff --git a/src/config.h b/src/config.h index 9d5bbf3..b690bcb 100644 --- a/src/config.h +++ b/src/config.h @@ -8,16 +8,32 @@ #include <qlist.h> #include <qtextstream.h> - /*! \brief Abstract base class for any configuration option. * */ class ConfigOption { + friend class Config; + public: - enum OptionType { O_Info, O_List, O_Enum, O_String, O_Int, O_Bool }; - enum { MAX_OPTION_LENGTH = 23 }; + /*! The type of option */ + enum OptionType + { + O_Info, //<! A section header + O_List, //<! A list of items + O_Enum, //<! A fixed set of items + O_String, //<! A single item + O_Int, //<! An integer value + O_Bool //<! A boolean value + }; + enum + { + /*! Maximum length of an option in the config file. Used for + * alignment purposes. + */ + MAX_OPTION_LENGTH = 23 + }; ConfigOption(OptionType t) : m_kind(t) { m_spaces.fill(' ',40); @@ -25,20 +41,23 @@ class ConfigOption virtual ~ConfigOption() { } + + /*! returns the kind of option this is. */ + OptionType kind() const { return m_kind; } + QCString name() const { return m_name; } + QCString docs() const { return m_doc; } + + QCString dependsOn() const { return m_dependency; } void addDependency(const char *dep) { m_dependency = dep; } - OptionType kind() const { return m_kind; } + + protected: virtual void writeTemplate(QTextStream &t,bool sl) = 0; virtual void convertStrToVal() {} virtual void substEnvVars() {} virtual void init() {} - QCString name() const { return m_name; } - QCString docs() const { return m_doc; } - QCString dependsOn() const { return m_dependency; } - - protected: QCString convertToComment(const QCString &s) { @@ -340,48 +359,90 @@ class ConfigBool : public ConfigOption * The static member instance() can be used to get * a pointer to the one and only instance. */ -struct Config +class Config { public: + ///////////////////////////// + // public API + ///////////////////////////// + + /*! Returns the one and only instance of this class */ static Config *instance() { if (m_instance==0) m_instance = new Config; return m_instance; } - void writeTemplate(QFile *f,bool shortIndex); - void convertStrToVal(); - void substituteEnvironmentVars(); - void check(); - void init(); - void parse(const QCString &config,const char *fn); + /*! Returns an iterator that can by used to iterate over the + * configuration options. + */ QListIterator<ConfigOption> iterator() { return QListIterator<ConfigOption>(*m_options); } - //////////////////////// - // get functions - //////////////////////// + /*! + * @name Getting configuration values. + * @{ + */ + + /*! Returns the value of the string option with name \a fileName. + * The arguments \a num and \a name are for debugging purposes only. + * There is a convenience function Config_getString() for this. + */ QCString &getString(const char *fileName,int num,const char *name) const; + + /*! Returns the value of the list option with name \a fileName. + * The arguments \a num and \a name are for debugging purposes only. + * There is a convenience function Config_getList() for this. + */ QStrList &getList(const char *fileName,int num,const char *name) const; + + /*! Returns the value of the enum option with name \a fileName. + * The arguments \a num and \a name are for debugging purposes only. + * There is a convenience function Config_getEnum() for this. + */ QCString &getEnum(const char *fileName,int num,const char *name) const; + + /*! Returns the value of the integer option with name \a fileName. + * The arguments \a num and \a name are for debugging purposes only. + * There is a convenience function Config_getInt() for this. + */ int &getInt(const char *fileName,int num,const char *name) const; + + /*! Returns the value of the boolean option with name \a fileName. + * The arguments \a num and \a name are for debugging purposes only. + * There is a convenience function Config_getBool() for this. + */ bool &getBool(const char *fileName,int num,const char *name) const; + + /*! Returns the ConfigOption corresponding with \a name or 0 if + * the option is not supported. + */ ConfigOption *get(const char *name) const { return m_dict->find(name); } + /* @} */ + + /*! + * @name Adding configuration options. + * @{ + */ - //////////////////////// - // add functions - //////////////////////// + /*! Starts a new configuration section with \a name and description \a doc. + * \returns An object representing the option. + */ ConfigInfo *addInfo(const char *name,const char *doc) { ConfigInfo *result = new ConfigInfo(name,doc); m_options->append(result); return result; } + + /*! Adds a new string option with \a name and documentation \a doc. + * \returns An object representing the option. + */ ConfigString *addString(const char *name, const char *doc) { @@ -390,6 +451,11 @@ struct Config m_dict->insert(name,result); return result; } + + /*! Adds a new enumeration option with \a name and documentation \a doc + * and initial value \a defVal. + * \returns An object representing the option. + */ ConfigEnum *addEnum(const char *name, const char *doc, const char *defVal) @@ -399,6 +465,10 @@ struct Config m_dict->insert(name,result); return result; } + + /*! Adds a new string option with \a name and documentation \a doc. + * \returns An object representing the option. + */ ConfigList *addList(const char *name, const char *doc) { @@ -407,6 +477,12 @@ struct Config m_dict->insert(name,result); return result; } + + /*! Adds a new integer option with \a name and documentation \a doc. + * The integer has a range between \a minVal and \a maxVal and a + * default value of \a defVal. + * \returns An object representing the option. + */ ConfigInt *addInt(const char *name, const char *doc, int minVal,int maxVal,int defVal) @@ -416,6 +492,11 @@ struct Config m_dict->insert(name,result); return result; } + + /*! Adds a new boolean option with \a name and documentation \a doc. + * The boolean has a default value of \a defVal. + * \returns An object representing the option. + */ ConfigBool *addBool(const char *name, const char *doc, bool defVal) @@ -425,6 +506,23 @@ struct Config m_dict->insert(name,result); return result; } + /*! @} */ + + /*! Writes a template configuration file to \a f. If \a shortIndex + * is \c TRUE the description of each configuration option will + * be omitted. + */ + void writeTemplate(QFile *f,bool shortIndex); + + ///////////////////////////// + // internal API + ///////////////////////////// + + void convertStrToVal(); + void substituteEnvironmentVars(); + void check(); + void init(); + void parse(const QCString &config,const char *fn); protected: Config() { diff --git a/src/config.l b/src/config.l index 2bdc9c8..e3a1813 100644 --- a/src/config.l +++ b/src/config.l @@ -555,7 +555,8 @@ void Config::writeTemplate(QFile *f,bool sl) #endif if (!sl) { - t << "# This file describes the settings to be used by doxygen for a project\n"; + t << "# This file describes the settings to be used by the documentation system\n"; + t << "# doxygen (www.doxygen.org) for a project\n"; t << "#\n"; t << "# All text after a hash (#) is considered a comment and will be ignored\n"; t << "# The format is:\n"; @@ -1728,7 +1729,7 @@ void Config::create() "If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output \n" "The RTF output is optimised for Word 97 and may not look very pretty with \n" "other RTF readers or editors.\n", - TRUE + FALSE ); cs = addString( "RTF_OUTPUT", @@ -1781,7 +1782,7 @@ void Config::create() "GENERATE_MAN", "If the GENERATE_MAN tag is set to YES (the default) Doxygen will \n" "generate man pages \n", - TRUE + FALSE ); cs = addString( "MAN_OUTPUT", @@ -1799,6 +1800,16 @@ void Config::create() ); cs->setDefaultValue(".3"); cs->addDependency("GENERATE_MAN"); + cb = addBool( + "MAN_LINKS", + "If the MAN_LINKS tag is set to YES and Doxygen generates man output,\n" + "then it will generate one additional man file for each entity\n" + "documented in the real man page(s). These additional files\n" + "only source the real man page, but without them the man command\n" + "would be unable to find the correct page. The default is NO.\n", + FALSE + ); + cb->addDependency("GENERATE_MAN"); //----------------------------------------------------------------------------------------------- //addInfo( "XML","configuration options related to the XML output"); //----------------------------------------------------------------------------------------------- @@ -1938,18 +1949,19 @@ void Config::create() cb->addDependency("HAVE_DOT"); cb = addBool( "INCLUDE_GRAPH", - "If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to \n" - "YES then doxygen will generate a graph for each documented file showing \n" - "the direct and indirect include dependencies of the file with other \n" - "documented files. \n", + "If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT \n" + "tags are set to YES then doxygen will generate a graph for each documented \n" + "file showing the direct and indirect include dependencies of the file with \n" + "other documented files. \n", TRUE ); cb->addDependency("HAVE_DOT"); cb = addBool( "INCLUDED_BY_GRAPH", - "If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to \n" - "YES then doxygen will generate a graph for each documented header file showing \n" - "the documented files that directly or indirectly include this file \n", + "If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and \n" + "HAVE_DOT tags are set to YES then doxygen will generate a graph for each \n" + "documented header file showing the documented files that directly or \n" + "indirectly include this file. \n", TRUE ); cb->addDependency("HAVE_DOT"); @@ -1432,7 +1432,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) outDoc->endDescList(); currentListIndent.pop(); } -<DocScan>{CMD}"author"{BN}+ { +<DocScan>{CMD}"author"[s]?{BN}+ { endArgumentList(); if (!inAuthorBlock) { @@ -1441,7 +1441,8 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) currentListIndent.push("D"); outDoc->startDescList(); outDoc->startBold(); - scanString(theTranslator->trAuthors()+": "); + bool singular = ((QString)yytext).find('s')==-1; + scanString(theTranslator->trAuthor(TRUE,singular)+": "); outDoc->endBold(); outDoc->endDescTitle(); outDoc->writeDescItem(); diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 3c9cd3a..372c53a 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -270,11 +270,11 @@ static void addRelatedPage(const char *name,const QCString &ptitle, static void addRelatedPage(Entry *root) { GroupDef *gd=0; - QListIterator<QCString> sli(*root->groups); - QCString *s; - for (;(s=sli.current());++sli) + QListIterator<Grouping> gli(*root->groups); + Grouping *g; + for (;(g=gli.current());++gli) { - if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) break; + if (!g->groupname.isEmpty() && (gd=Doxygen::groupDict[g->groupname])) break; } addRelatedPage(root->name,root->args,root->doc,root->anchors, root->fileName,root->startLine,root->todoId, @@ -393,10 +393,30 @@ static void buildGroupList(Entry *root) if ((gd=Doxygen::groupDict[root->name])) { - warn(root->fileName,root->startLine, - "Warning: group %s already documented. " - "Skipping documentation.", - root->name.data()); + if ( root->groupdoctype==Entry::GROUPDOC_NORMAL ) + { + warn(root->fileName,root->startLine, + "Warning: group %s already documented. " + "Skipping documentation.", + root->name.data()); + } + else + { + if ( !gd->hasGroupTitle() ) + gd->setGroupTitle( root->type ); + else if ( root->type.length() > 0 && root->name != root->type && gd->groupTitle() != root->type ) + warn( root->fileName,root->startLine, + "group %s: ignoring title \"%s\" that does not match old title \"%s\"\n", + root->name.data(), root->type.data(), gd->groupTitle() ); + if ( gd->briefDescription().isEmpty() ) + gd->setBriefDescription(root->brief); + if ( !root->doc.stripWhiteSpace().isEmpty() ) + gd->setDocumentation( gd->documentation().isEmpty() ? root->doc : + gd->documentation() + "\n\n" + root->doc ); + gd->addSectionsToDefinition(root->anchors); + gd->setRefItems(root->todoId,root->testId,root->bugId); + addGroupToGroups(root,gd); + } } else { @@ -440,30 +460,6 @@ static void organizeSubGroups(Entry *root) } } -static void addToGroupSections(Entry *root) -{ - if (root->section==Entry::ADDGRPDOC_SEC && !root->name.isEmpty()) - { - GroupDef *gd = Doxygen::groupDict[root->name]; - if (gd) - { - gd->setDocumentation(gd->documentation()+"<p>"+root->brief+root->doc); - } - else - { - warn(root->fileName,root->startLine, - "Warning: ignoring addtogroup command for undefined " - "group `%s'.",root->name.data()); - } - } - EntryListIterator eli(*root->sublist); - Entry *e; - for (;(e=eli.current());++eli) - { - addToGroupSections(e); - } -} - //---------------------------------------------------------------------- static void buildFileList(Entry *root) @@ -496,12 +492,12 @@ static void buildFileList(Entry *root) fd->setBriefDescription(root->brief); fd->addSectionsToDefinition(root->anchors); fd->setRefItems(root->todoId,root->testId,root->bugId); - QListIterator<QCString> sli(*root->groups); - QCString *s; - for (;(s=sli.current());++sli) + QListIterator<Grouping> gli(*root->groups); + Grouping *g; + for (;(g=gli.current());++gli) { GroupDef *gd=0; - if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) + if (!g->groupname.isEmpty() && (gd=Doxygen::groupDict[g->groupname])) { gd->addFile(fd); //printf("File %s: in group %s\n",fd->name().data(),s->data()); @@ -709,7 +705,7 @@ static void buildClassList(Entry *root) !root->name.isEmpty() ) { - QCString fullName=root->name.copy(); + QCString fullName=removeRedundantWhiteSpace(root->name); if (fullName.isEmpty()) { // this should not be called @@ -1103,12 +1099,12 @@ static void findUsingDirectives(Entry *root) nd->setBriefDescription(root->brief); nd->addSectionsToDefinition(root->anchors); - QListIterator<QCString> sli(*root->groups); - QCString *s; - for (;(s=sli.current());++sli) + QListIterator<Grouping> gli(*root->groups); + Grouping *g; + for (;(g=gli.current());++gli) { GroupDef *gd=0; - if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) + if (!g->groupname.isEmpty() && (gd=Doxygen::groupDict[g->groupname])) gd->addNamespace(nd); } @@ -1448,12 +1444,12 @@ static MemberDef *addVariableToFile( // merge ingroup specifiers if (md->getGroupDef()==0 && root->groups->first()) { - GroupDef *gd=Doxygen::groupDict[root->groups->first()->data()]; - md->setGroupDef(gd); + GroupDef *gd=Doxygen::groupDict[root->groups->first()->groupname.data()]; + md->setGroupDef(gd, root->groups->first()->pri, root->fileName, root->startLine, root->doc.length() != 0); } else if (md->getGroupDef()!=0 && root->groups->count()==0) { - root->groups->append(new QCString(md->getGroupDef()->name())); + root->groups->append(new Grouping(md->getGroupDef()->name(), md->getGroupPri())); } } } @@ -1999,12 +1995,12 @@ static void buildMemberList(Entry *root) // merge ingroup specifiers if (md->getGroupDef()==0 && root->groups->first()) { - GroupDef *gd=Doxygen::groupDict[root->groups->first()->data()]; - md->setGroupDef(gd); + GroupDef *gd=Doxygen::groupDict[root->groups->first()->groupname.data()]; + md->setGroupDef(gd, root->groups->first()->pri, root->fileName, root->startLine, root->doc.length() != 0); } else if (md->getGroupDef()!=0 && root->groups->count()==0) { - root->groups->append(new QCString(md->getGroupDef()->name())); + root->groups->append(new Grouping(md->getGroupDef()->name(), md->getGroupPri())); } } } @@ -5103,9 +5099,7 @@ static void generatePageDocs() else pageName=pi->name.lower(); - startFile(*outputList,pageName,pi->title); - - startFile(*outputList,pageName,pi->title); + startFile(*outputList,pageName,pageName,pi->title); // save old generator state and write title only to Man generator outputList->pushGeneratorState(); @@ -5190,7 +5184,7 @@ static void generateExampleDocs() { msg("Generating docs for example %s...\n",pi->name.data()); QCString n=convertNameToFile(pi->name+"-example"); - startFile(*outputList,n,"Example Documentation"); + startFile(*outputList,n,n,"Example Documentation"); startTitle(*outputList,n); outputList->docify(pi->name); endTitle(*outputList,n,0); @@ -5380,7 +5374,7 @@ static void generateSearchIndex() //outputList->generateExternalIndex(); outputList->pushGeneratorState(); outputList->disableAllBut(OutputGenerator::Html); - startFile(*outputList,"header.html","Search Engine",TRUE); + startFile(*outputList,"header.html",0,"Search Engine",TRUE); outputList->endPlainFile(); outputList->startPlainFile("footer.html"); endFile(*outputList,TRUE); @@ -6483,7 +6477,6 @@ void parseInput() msg("Building group list...\n"); buildGroupList(root); organizeSubGroups(root); - addToGroupSections(root); msg("Building namespace list...\n"); buildNamespaceList(root); diff --git a/src/entry.cpp b/src/entry.cpp index beb52bb..bbea6ef 100644 --- a/src/entry.cpp +++ b/src/entry.cpp @@ -29,7 +29,7 @@ Entry::Entry() sublist->setAutoDelete(TRUE); extends = new QList<BaseInfo>; extends->setAutoDelete(TRUE); - groups = new QList<QCString>; + groups = new QList<Grouping>; groups->setAutoDelete(TRUE); anchors = new QList<QCString>; anchors->setAutoDelete(TRUE); @@ -40,6 +40,7 @@ Entry::Entry() mtArgList = 0; mGrpId = -1; tagInfo = 0; + groupdoctype = GROUPDOC_NORMAL; reset(); } @@ -82,7 +83,7 @@ Entry::Entry(const Entry &e) sublist->setAutoDelete(TRUE); extends = new QList<BaseInfo>; extends->setAutoDelete(TRUE); - groups = new QList<QCString>; + groups = new QList<Grouping>; groups->setAutoDelete(TRUE); anchors = new QList<QCString>; anchors->setAutoDelete(TRUE); @@ -91,6 +92,7 @@ Entry::Entry(const Entry &e) //printf("Entry::Entry(copy) tArgList=0\n"); tArgList = 0; mtArgList = 0; + groupdoctype = e.groupdoctype; // deep copy of the child entry list QListIterator<Entry> eli(*e.sublist); @@ -109,14 +111,15 @@ Entry::Entry(const Entry &e) } // deep copy group list - QListIterator<QCString> sli(*e.groups); - QCString *s; - for (;(s=sli.current());++sli) + QListIterator<Grouping> gli(*e.groups); + Grouping *g; + for (;(g=gli.current());++gli) { - groups->append(new QCString(*s)); + groups->append(new Grouping(*g)); } QListIterator<QCString> sli2(*e.anchors); + QCString *s; for (;(s=sli2.current());++sli2) { anchors->append(new QCString(*s)); @@ -234,6 +237,7 @@ void Entry::reset() memSpec = 0; subGrouping = TRUE; protection = Public; + groupdoctype = GROUPDOC_NORMAL; sublist->clear(); extends->clear(); groups->clear(); @@ -270,14 +274,15 @@ int Entry::getSize() size+=bi->name.length()+1+sizeof(bi->prot)+sizeof(bi->virt); bi=extends->next(); } - QCString *s=groups->first(); - while (s) + Grouping *g=groups->first(); + while (g) { size+=sizeof(QLNode); - size+=s->length()+1; - s=groups->next(); + size+=g->groupname.length()+1; + size+=sizeof(g->pri); + g=groups->next(); } - s=anchors->first(); + QCString *s=anchors->first(); while (s) { size+=sizeof(QLNode); diff --git a/src/entry.h b/src/entry.h index 0417b40..beee698 100644 --- a/src/entry.h +++ b/src/entry.h @@ -121,6 +121,53 @@ struct TagInfo QCString anchor; }; +struct Grouping { + typedef enum { + GROUPING_LOWEST, + GROUPING_AUTO_WEAK = + GROUPING_LOWEST, //!< membership in group was defined via @weakgroup @{ @} + GROUPING_AUTO_ADD, //!< membership in group was defined via @add[to]group @{ @} + GROUPING_AUTO_DEF, //!< membership in group was defined via @defgroup @{ @} + GROUPING_AUTO_HIGHEST = + GROUPING_AUTO_DEF, + GROUPING_INGROUP, //!< membership in group was defined by @ingroup + GROUPING_HIGHEST = + GROUPING_INGROUP + } GroupPri_t; + + static const char *getGroupPriName( GroupPri_t priority ) + { + switch( priority ) + { + case GROUPING_AUTO_WEAK: + return "@weakgroup"; + break; + case GROUPING_AUTO_ADD: + return "@addtogroup"; + break; + case GROUPING_AUTO_DEF: + return "@defgroup"; + break; + case GROUPING_INGROUP: + return "@ingroup"; + break; + default: + return "???"; + break; + } + } + + Grouping( const char *gn, GroupPri_t p ) : + groupname(gn), + pri(p) {} + Grouping( const Grouping &g ) : + groupname(g.groupname), + pri(g.pri) {} + QCString groupname; //!< name of the group + GroupPri_t pri; //!< priority of this definition + +}; + /*! \brief Represents an unstructured piece of information, about an * entity found in the sources. * @@ -176,8 +223,7 @@ class Entry MAINPAGEDOC_SEC = 0x01200000, MEMBERGRP_SEC = 0x01300000, USINGDECL_SEC = 0x01400000, - PACKAGE_SEC = 0x01500000, - ADDGRPDOC_SEC = 0x01600000 + PACKAGE_SEC = 0x01500000 }; enum MemberSpecifier { @@ -231,8 +277,8 @@ class Entry int endBodyLine; //!< line number where the definition ends int mGrpId; //!< member group id QList<Entry> *sublist; //!< entries that are children of this one - QList<BaseInfo> *extends; //!< list of base classes - QList<QCString> *groups; //!< list of groups this entry belongs to + QList<BaseInfo> *extends; //!< list of base classes + QList<Grouping> *groups; //!< list of groups this entry belongs to QList<QCString> *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 @@ -241,6 +287,47 @@ class 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 + enum { + GROUPDOC_NORMAL, //<! @defgroup + GROUPDOC_ADD, //<! @addgroup + GROUPDOC_WEAK //<! @weakgroup + } groupdoctype; //!< kind of group + /// return the command name used to define GROUPDOC_SEC + const char *groupdoccmd() const + { + switch( this->groupdoctype ) { + case GROUPDOC_NORMAL: + return "\\defgroup"; + break; + case GROUPDOC_ADD: + return "\\addgroup"; + break; + case GROUPDOC_WEAK: + return "\\weakgroup"; + break; + default: + return "unknown group command"; + } + } + Grouping::GroupPri_t groupingpri() const + { + if( this->section != GROUPDOC_SEC ) { + return Grouping::GROUPING_LOWEST; + } + switch( this->groupdoctype ) { + case GROUPDOC_NORMAL: + return Grouping::GROUPING_AUTO_DEF; + break; + case GROUPDOC_ADD: + return Grouping::GROUPING_AUTO_ADD; + break; + case GROUPDOC_WEAK: + return Grouping::GROUPING_AUTO_WEAK; + break; + default: + return Grouping::GROUPING_LOWEST; + } + } private: Entry &operator=(const Entry &); } ; diff --git a/src/filedef.cpp b/src/filedef.cpp index 5974f87..37d6b20 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -117,7 +117,7 @@ void FileDef::writeDocumentation(OutputList &ol) //printf("WriteDocumentation diskname=%s\n",diskname.data()); QCString pageTitle=name()+" File Reference"; - startFile(ol,getOutputFileBase(),pageTitle); + startFile(ol,getOutputFileBase(),name(),pageTitle); startTitle(ol,getOutputFileBase()); parseText(ol,theTranslator->trFileReference(docname)); endTitle(ol,getOutputFileBase(),docName()); @@ -393,7 +393,7 @@ void FileDef::writeDocumentation(OutputList &ol) // write Author section (Man only) ol.disableAllBut(OutputGenerator::Man); ol.startGroupHeader(); - parseText(ol,theTranslator->trAuthor()); + parseText(ol,theTranslator->trAuthor(TRUE,TRUE)); ol.endGroupHeader(); parseText(ol,theTranslator->trGeneratedAutomatically(Config_getString("PROJECT_NAME"))); ol.enableAll(); @@ -411,7 +411,7 @@ void FileDef::writeDocumentation(OutputList &ol) void FileDef::writeSource(OutputList &ol) { ol.disableAllBut(OutputGenerator::Html); - startFile(ol,getSourceFileBase(),docname+" Source File"); + startFile(ol,getSourceFileBase(),0,docname+" Source File"); startTitle(ol,0); parseText(ol,docname); endTitle(ol,0,0); diff --git a/src/formula.cpp b/src/formula.cpp index 6c4c043..1c1bfc7 100644 --- a/src/formula.cpp +++ b/src/formula.cpp @@ -174,7 +174,7 @@ void FormulaList::generateBitmaps(const char *path) #ifdef _WIN32 char gsArgs[256]; sprintf(gsArgs,"-q -g%dx%d -r%dx%dx -sDEVICE=ppmraw " - "-sOutputFile=%s.pnm -DNOPAUSE -- %s.ps", + "-sOutputFile=%s.pnm -dNOPAUSE -dBATCH -- %s.ps", gx,gy,(int)(scaleFactor*72),(int)(scaleFactor*72), formBase.data(),formBase.data() ); @@ -210,7 +210,7 @@ void FormulaList::generateBitmaps(const char *path) #else char gsArgs[4096]; sprintf(gsArgs,"-q -g%dx%d -r%dx%dx -sDEVICE=ppmraw " - "-sOutputFile=%s.pnm -DNOPAUSE -- %s.ps", + "-sOutputFile=%s.pnm -dNOPAUSE -dBATCH -- %s.ps", gx,gy,(int)(scaleFactor*72),(int)(scaleFactor*72), formBase.data(),formBase.data() ); diff --git a/src/groupdef.cpp b/src/groupdef.cpp index 44389f3..752dc4c 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -44,14 +44,8 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t) : exampleDict = new PageSDict(257); allMemberList = new MemberList; allMemberNameInfoDict = new MemberNameInfoDict(1009); - if (t) - title = t; - else - { - title = na; - title.at(0)=toupper(title.at(0)); - } fileName = (QCString)"group_"+na; + setGroupTitle( t ); memberGroupList = new MemberGroupList; memberGroupList->setAutoDelete(TRUE); memberGroupDict = new MemberGroupDict(1009); @@ -90,6 +84,22 @@ GroupDef::~GroupDef() delete memberGroupDict; } +void GroupDef::setGroupTitle( const char *t ) +{ + if ( t && strlen(t) ) + { + title = t; + titleSet = TRUE; + } + else + { + title = name(); + title.at(0)=toupper(title.at(0)); + titleSet = FALSE; + } +} + + void GroupDef::distributeMemberGroupDocumentation() { MemberGroupListIterator mgli(*memberGroupList); @@ -158,7 +168,7 @@ void GroupDef::addMembersToMemberGroup() void GroupDef::insertMember(MemberDef *md,bool docOnly) { - //printf("GroupDef::insertMember(%s)\n",md->name().data()); + // fprintf(stderr, "GroupDef(%s)::insertMember(%s)\n", title.data(), md->name().data()); MemberNameInfo *mni=0; if ((mni=(*allMemberNameInfoDict)[md->name()])) { // member with this name already found @@ -237,6 +247,70 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly) //addMemberToGroup(md,groupId); } +void GroupDef::removeMember(MemberDef *md) +{ + // fprintf(stderr, "GroupDef(%s)::removeMember( %s )\n", title.data(), md->name().data()); + MemberNameInfo *mni = allMemberNameInfoDict->find(md->name()); + if (mni) + { + MemberNameInfoIterator mnii(*mni); + while( mnii.current() ) + { + if( mnii.current()->memberDef == md ) + { + mni->remove(mnii.current()); + break; + } + ++mnii; + } + if( mni->isEmpty() ) + { + allMemberNameInfoDict->remove(md->name()); + delete mni; + } + + allMemberList->remove(md); + switch(md->memberType()) + { + case MemberDef::Variable: + decVarMembers.remove(md); + docVarMembers.remove(md); + break; + case MemberDef::Function: + decFuncMembers.remove(md); + docFuncMembers.remove(md); + break; + case MemberDef::Typedef: + decTypedefMembers.remove(md); + docTypedefMembers.remove(md); + break; + case MemberDef::Enumeration: + decEnumMembers.remove(md); + docEnumMembers.remove(md); + break; + case MemberDef::EnumValue: + decEnumValMembers.remove(md); + docEnumValMembers.remove(md); + break; + case MemberDef::Prototype: + decProtoMembers.remove(md); + docProtoMembers.remove(md); + break; + case MemberDef::Define: + decDefineMembers.remove(md); + docDefineMembers.remove(md); + break; + default: + err("GroupDef::removeMember(): unexpected member remove in file!\n"); + } + } +} + +bool GroupDef::containsGroup(const GroupDef *def) +{ + return groupList->find(def) >= 0; +} + void GroupDef::addGroup(const GroupDef *def) { if (Config_getBool("SORT_MEMBER_DOCS")) @@ -280,7 +354,7 @@ void GroupDef::writeDocumentation(OutputList &ol) { ol.pushGeneratorState(); //ol.disable(OutputGenerator::Man); - startFile(ol,getOutputFileBase(),title); + startFile(ol,getOutputFileBase(),name(),title); startTitle(ol,getOutputFileBase()); ol.docify(title); endTitle(ol,getOutputFileBase(),title); @@ -510,12 +584,12 @@ void GroupDef::writeDocumentation(OutputList &ol) void addClassToGroups(Entry *root,ClassDef *cd) { - QListIterator<QCString> sli(*root->groups); - QCString *s; - for (;(s=sli.current());++sli) + QListIterator<Grouping> gli(*root->groups); + Grouping *g; + for (;(g=gli.current());++gli) { GroupDef *gd=0; - if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) + if (!g->groupname.isEmpty() && (gd=Doxygen::groupDict[g->groupname])) { gd->addClass(cd); //printf("Compound %s: in group %s\n",cd->name().data(),s->data()); @@ -526,13 +600,13 @@ void addClassToGroups(Entry *root,ClassDef *cd) void addNamespaceToGroups(Entry *root,NamespaceDef *nd) { //printf("root->groups->count()=%d\n",root->groups->count()); - QListIterator<QCString> sli(*root->groups); - QCString *s; - for (;(s=sli.current());++sli) + QListIterator<Grouping> gli(*root->groups); + Grouping *g; + for (;(g=gli.current());++gli) { GroupDef *gd=0; //printf("group `%s'\n",s->data()); - if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) + if (!g->groupname.isEmpty() && (gd=Doxygen::groupDict[g->groupname])) { gd->addNamespace(nd); //printf("Namespace %s: in group %s\n",nd->name().data(),s->data()); @@ -542,12 +616,13 @@ void addNamespaceToGroups(Entry *root,NamespaceDef *nd) void addGroupToGroups(Entry *root,GroupDef *subGroup) { - QListIterator<QCString> sli(*root->groups); - QCString *s; - for (;(s=sli.current());++sli) + QListIterator<Grouping> gli(*root->groups); + Grouping *g; + for (;(g=gli.current());++gli) { GroupDef *gd=0; - if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) + if (!g->groupname.isEmpty() && (gd=Doxygen::groupDict[g->groupname]) && + !gd->containsGroup(subGroup) ) { gd->addGroup(subGroup); subGroup->addParentGroup(gd); @@ -555,34 +630,87 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup) } } -/*! Add a member to all groups it is contained in */ +/*! Add a member to the group with the highest priority */ void addMemberToGroups(Entry *root,MemberDef *md) { - QListIterator<QCString> sli(*root->groups); - QCString *s; - for (;(s=sli.current());++sli) + //printf(" Root 0x%p = %s, md 0x%p %s\n", root, root->name.data(), md, md->name().data() ); + QListIterator<Grouping> gli(*root->groups); + Grouping *g; + + // Search entry's group list for group with highest pri. + Grouping::GroupPri_t pri = Grouping::GROUPING_LOWEST; + GroupDef *fgd=0; + for (;(g=gli.current());++gli) { - //printf("addMemberToGroups(group=%s,member=%s)\n",s->data(),md->name().data()); - GroupDef *gd=0; - if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) + GroupDef *gd; + if (!g->groupname.isEmpty() && + (gd=Doxygen::groupDict[g->groupname]) && + g->pri >= pri) { - GroupDef *mgd = md->getGroupDef(); - if (mgd==0) + if( fgd && g->pri == pri ) { + warn(root->fileName.data(), root->startLine, + "Warning: Member %s found in multiple %s groups! " + "The member will be put in group %s, and not in group %s", + md->name().data(), Grouping::getGroupPriName( pri ), + gd->name().data(), fgd->name().data() + ); + } + + fgd = gd; + pri = g->pri; + } + } + + // put member into group defined by this entry? + if( fgd ) + { + GroupDef *mgd = md->getGroupDef(); + bool insertit = FALSE; + if (mgd==0) + insertit = TRUE; + else if (mgd!=fgd) + { + bool moveit = FALSE; + + // move member from one group to another if + // - the new one has a higher priority + // - the new entry has the same priority, but with docs where the old one had no docs + if( md->getGroupPri() < pri ) + moveit = TRUE; + else { - gd->insertMember(md); - md->setGroupDef(gd); - ClassDef *cd = md->getClassDefOfAnonymousType(); - if (cd) cd->setGroupDefForAllMembers(gd); + if( md->getGroupPri() == pri ) + { + + if( root->doc.length() != 0 && !md->getGroupHasDocs() ) + moveit = TRUE; + else if( root->doc.length() != 0 && md->getGroupHasDocs() ) + { + warn(md->getGroupFileName(),md->getGroupStartLine(), + "Warning: Member documentation for %s found several times in %s groups!\n" + "%s:%d: The member will remain in group %s, and won't be put into group %s", + md->name().data(), Grouping::getGroupPriName( pri ), + root->fileName.data(), root->startLine, + mgd->name().data(), + fgd->name().data() + ); + } + } } - else if (mgd!=gd) + + if( moveit ) { - warn(mgd->getDefFileName(),mgd->getDefLine(), - "Warning: Member %s found in multiple groups.!\n" - "The member will be put in group %s, and not in group %s", - md->name().data(),mgd->name().data(),gd->name().data() - ); + mgd->removeMember(md); + insertit = TRUE; } - //printf("Member %s: in group %s\n",md->name().data(),s->data()); + } + + if( insertit ) + { + fgd->insertMember(md); + md->setGroupDef(fgd,pri,root->fileName,root->startLine,root->doc.length() != 0); + ClassDef *cd = md->getClassDefOfAnonymousType(); + if (cd) cd->setGroupDefForAllMembers(fgd,pri,root->fileName,root->startLine,root->doc.length() != 0); } } } @@ -590,12 +718,12 @@ void addMemberToGroups(Entry *root,MemberDef *md) void addExampleToGroups(Entry *root,PageInfo *eg) { - QListIterator<QCString> sli(*root->groups); - QCString *s; - for (;(s=sli.current());++sli) + QListIterator<Grouping> gli(*root->groups); + Grouping *g; + for (;(g=gli.current());++gli) { GroupDef *gd=0; - if (!s->isEmpty() && (gd=Doxygen::groupDict[*s])) + if (!g->groupname.isEmpty() && (gd=Doxygen::groupDict[g->groupname])) { gd->addExample(eg); //printf("Example %s: in group %s\n",eg->name().data(),s->data()); diff --git a/src/groupdef.h b/src/groupdef.h index 73eaf94..c2d413a 100644 --- a/src/groupdef.h +++ b/src/groupdef.h @@ -48,6 +48,8 @@ class GroupDef : public Definition DefType definitionType() { return TypeGroup; } QCString getOutputFileBase() const; const char *groupTitle() const { return title; } + void setGroupTitle( const char *newtitle ); + bool hasGroupTitle( ) { return titleSet; } void addFile(const FileDef *def); void addClass(const ClassDef *def); void addNamespace(const NamespaceDef *def); @@ -56,6 +58,8 @@ class GroupDef : public Definition void addPage(PageInfo *def); // pages in this group void addExample(const PageInfo *def); // examples in this group void insertMember(MemberDef *def,bool docOnly=FALSE); + void removeMember(MemberDef *md); + bool containsGroup(const GroupDef *def); // true if def is already a subgroup void writeDocumentation(OutputList &ol); int countMembers() const; bool isLinkableInProject() @@ -82,6 +86,7 @@ class GroupDef : public Definition private: QCString title; // title of the group + bool titleSet; // true if title is not the same as the name QCString fileName; // base name of the generated file FileList *fileList; // list of files in the group ClassSDict *classSDict; // list of classes in the group @@ -115,7 +120,6 @@ class GroupDef : public Definition /* user defined member groups */ MemberGroupList *memberGroupList; // list of member groups in this group MemberGroupDict *memberGroupDict; - }; class GroupList : public QList<GroupDef> diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index e156a48..2ff36de 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -101,7 +101,7 @@ static void writeDefaultHeaderFile(QTextStream &t,const char *title, bool external) { t << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n" - "<html><head><meta name=\"robots\" content=\"noindex\">\n" + "<html><head>" /*"<meta name=\"robots\" content=\"noindex\">\n"*/ "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=" << theTranslator->idLanguageCharset() << "\">\n" "<title>" << title << "</title>\n"; @@ -151,7 +151,8 @@ void HtmlGenerator::writeFooterFile(QFile &file) } -void HtmlGenerator::startFile(const char *name,const char *title,bool external) +void HtmlGenerator::startFile(const char *name,const char *, + const char *title,bool external) { QCString fileName=name; lastTitle=title; diff --git a/src/htmlgen.h b/src/htmlgen.h index d3bbcc4..e293e98 100644 --- a/src/htmlgen.h +++ b/src/htmlgen.h @@ -45,7 +45,8 @@ class HtmlGenerator : public OutputGenerator OutputGenerator *get(OutputType o) { return (o==Html) ? this : 0; } //void generateExternalIndex(); - void startFile(const char *name,const char *title,bool external); + void startFile(const char *name,const char *manName, + const char *title,bool external); void writeFooter(int,bool); void endFile(); void clearBuffer(); diff --git a/src/index.cpp b/src/index.cpp index 8954cd3..5fc1431 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -300,9 +300,10 @@ void endTitle(OutputList &ol,const char *fileName,const char *name) ol.endTitleHead(fileName,name); } -void startFile(OutputList &ol,const char *name,const char *title,bool external) +void startFile(OutputList &ol,const char *name,const char *manName, + const char *title,bool external) { - ol.startFile(name,title,external); + ol.startFile(name,manName,title,external); if (!Config_getBool("DISABLE_INDEX")) writeQuickLinks(ol,TRUE,external); } @@ -634,7 +635,7 @@ void writeHierarchicalIndex(OutputList &ol) if (hierarchyClasses==0) return; ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"hierarchy","Hierarchical Index"); + startFile(ol,"hierarchy",0,"Hierarchical Index"); startTitle(ol,0); QCString title = theTranslator->trClassHierarchy(); QCString htmlHelpTitle = title; @@ -684,7 +685,7 @@ void writeGraphicalClassHierarchy(OutputList &ol) { if (hierarchyClasses==0) return; ol.disableAllBut(OutputGenerator::Html); - startFile(ol,"inherits","Graphical Class Hierarchy"); + startFile(ol,"inherits",0,"Graphical Class Hierarchy"); startTitle(ol,0); QCString title = theTranslator->trGraphicalHierarchy(); QCString htmlHelpTitle = title; @@ -763,7 +764,7 @@ void writeFileIndex(OutputList &ol) ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); if (documentedFiles==0) ol.disableAllBut(OutputGenerator::Html); - startFile(ol,"files","File Index"); + startFile(ol,"files",0,"File Index"); startTitle(ol,0); QCString title = theTranslator->trFileList(); QCString htmlHelpTitle = title; @@ -982,7 +983,7 @@ void writeNamespaceIndex(OutputList &ol) if (documentedNamespaces==0) return; ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"namespaces","Namespace Index"); + startFile(ol,"namespaces",0,"Namespace Index"); startTitle(ol,0); QCString title = theTranslator->trNamespaceList(); QCString htmlHelpTitle = title; @@ -1324,7 +1325,7 @@ void writeAlphabeticalIndex(OutputList &ol) if (annotatedClasses==0) return; ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); - startFile(ol,"classes.html","Alphabetical index"); + startFile(ol,"classes.html",0,"Alphabetical index"); startTitle(ol,0); parseText(ol,Config_getString("PROJECT_NAME")+" "+theTranslator->trCompoundIndex()); endTitle(ol,0,0); @@ -1345,7 +1346,7 @@ void writeAnnotatedIndex(OutputList &ol) ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"annotated","Annotated Index"); + startFile(ol,"annotated",0,"Annotated Index"); startTitle(ol,0); QCString title = theTranslator->trCompoundList(); QCString htmlHelpTitle = title; @@ -1396,7 +1397,7 @@ void writePackageIndex(OutputList &ol) ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"packages","Package Index"); + startFile(ol,"packages",0,"Package Index"); startTitle(ol,0); QCString title = theTranslator->trPackageList(); QCString htmlHelpTitle = title; @@ -1588,7 +1589,7 @@ void writeMemberIndex(OutputList &ol) if (documentedMembers==0) return; ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); - startFile(ol,"functions","Compound Member Index"); + startFile(ol,"functions",0,"Compound Member Index"); QCString title = theTranslator->trCompoundMembers(); QCString htmlHelpTitle = title; QCString ftvHelpTitle = title; @@ -1845,7 +1846,7 @@ void writeFileMemberIndex(OutputList &ol) if (documentedFunctions==0) return; ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); - startFile(ol,"globals","File Member Index"); + startFile(ol,"globals",0,"File Member Index"); QCString title = theTranslator->trFileMembers(); QCString htmlHelpTitle = title; QCString ftvHelpTitle = title; @@ -1884,7 +1885,7 @@ void writeNamespaceMemberIndex(OutputList &ol) if (documentedNamespaceMembers==0) return; ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); - startFile(ol,"namespacemembers","Namespace Member Index"); + startFile(ol,"namespacemembers",0,"Namespace Member Index"); QCString title = theTranslator->trNamespaceMembers(); QCString htmlHelpTitle = title; QCString ftvHelpTitle = title; @@ -1923,7 +1924,7 @@ void writeExampleIndex(OutputList &ol) if (Doxygen::exampleSDict->count()==0) return; ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"examples","Example Index"); + startFile(ol,"examples",0,"Example Index"); startTitle(ol,0); QCString title = theTranslator->trExamples(); QCString htmlHelpTitle = title; @@ -2028,7 +2029,7 @@ void writePageIndex(OutputList &ol) if (indexedPages==0) return; ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"pages","Page Index"); + startFile(ol,"pages",0,"Page Index"); startTitle(ol,0); QCString title = theTranslator->trRelatedPages(); QCString htmlHelpTitle = title; @@ -2132,7 +2133,7 @@ void writeGraphInfo(OutputList &ol) ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); generateGraphLegend(Config_getString("HTML_OUTPUT")); - startFile(ol,"graph_legend","Graph Legend"); + startFile(ol,"graph_legend",0,"Graph Legend"); startTitle(ol,0); parseText(ol,theTranslator->trLegendTitle()); endTitle(ol,0,0); @@ -2523,7 +2524,7 @@ void writeGroupIndex(OutputList &ol) if (documentedGroups==0) return; ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"modules","Module Index"); + startFile(ol,"modules",0,"Module Index"); startTitle(ol,0); QCString title = theTranslator->trModules(); QCString htmlHelpTitle = title; @@ -2607,7 +2608,7 @@ void writeIndex(OutputList &ol) QCString indexName="index"; if (Config_getBool("GENERATE_TREEVIEW")) indexName="main"; - ol.startFile(indexName,title,FALSE); + ol.startFile(indexName,0,title,FALSE); bool &generateHtml = Config_getBool("GENERATE_HTML") ; bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP"); @@ -2655,7 +2656,7 @@ void writeIndex(OutputList &ol) ol.enable(OutputGenerator::Latex); ol.enable(OutputGenerator::RTF); - ol.startFile("refman",0,FALSE); + ol.startFile("refman",0,0,FALSE); ol.startIndexSection(isTitlePageStart); if (!Config_getString("LATEX_HEADER").isEmpty()) { @@ -2780,7 +2781,7 @@ void writeIndex(OutputList &ol) if (Doxygen::mainPage) { ol.disable(OutputGenerator::Man); - startFile(ol,Doxygen::mainPage->name,Doxygen::mainPage->title); + startFile(ol,Doxygen::mainPage->name,0,Doxygen::mainPage->title); //SectionInfo *si=0; //if (!Doxygen::mainPage->title.isEmpty() && !Doxygen::mainPage->name.isEmpty() && // (si=Doxygen::sectionDict[Doxygen::mainPage->name])!=0) diff --git a/src/index.h b/src/index.h index eb9a38f..412dffe 100644 --- a/src/index.h +++ b/src/index.h @@ -86,7 +86,8 @@ extern int documentedPackages; void startTitle(OutputList &ol,const char *fileName); void endTitle(OutputList &ol,const char *fileName,const char *name); -void startFile(OutputList &ol,const char *name,const char *title,bool external=FALSE); +void startFile(OutputList &ol,const char *name,const char *manName, + const char *title,bool external=FALSE); void endFile(OutputList &ol,bool external=FALSE); #endif diff --git a/src/language.cpp b/src/language.cpp index 5c3ee5d..32bf52a 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -17,8 +17,10 @@ #include "message.h" #include "language.h" +#include "translator.h" #include "translator_en.h" #if !defined(ENGLISH_ONLY) +#include "translator_adapter.h" #include "translator_nl.h" #include "translator_se.h" #include "translator_cz.h" diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 8fb0a50..e176192 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -408,7 +408,7 @@ void LatexGenerator::writeStyleSheetFile(QFile &f) writeDefaultStyleSheetPart3(t); } -void LatexGenerator::startFile(const char *name,const char *,bool) +void LatexGenerator::startFile(const char *name,const char *,const char *,bool) { QCString fileName=name; if (fileName.right(4)!=".tex" && fileName.right(4)!=".sty") fileName+=".tex"; diff --git a/src/latexgen.h b/src/latexgen.h index d9341dd..4d07b51 100644 --- a/src/latexgen.h +++ b/src/latexgen.h @@ -42,7 +42,8 @@ class LatexGenerator : public OutputGenerator bool isEnabled(OutputType o) { return (o==Latex && active); } OutputGenerator *get(OutputType o) { return (o==Latex) ? this : 0; } - void startFile(const char *name,const char *title, bool external); + void startFile(const char *name,const char *manName, + const char *title, bool external); void writeFooter(int,bool) {} void endFile(); void clearBuffer(); diff --git a/src/libdoxygen.pro.in b/src/libdoxygen.pro.in index 428c15f..319cf3a 100644 --- a/src/libdoxygen.pro.in +++ b/src/libdoxygen.pro.in @@ -142,9 +142,10 @@ SOURCES = ce_lex.cpp \ util.cpp \ version.cpp -win32:TMAKE_CXXFLAGS += -DQT_NODLL +win32:TMAKE_CXXFLAGS += -DQT_NODLL -Zm200 INCLUDEPATH += ../qtools win32:INCLUDEPATH += . DESTDIR = ../lib TARGET = doxygen OBJECTS_DIR = ../objects + diff --git a/src/mangen.cpp b/src/mangen.cpp index 2082e2b..bdf3795 100644 --- a/src/mangen.cpp +++ b/src/mangen.cpp @@ -27,6 +27,7 @@ #include "config.h" #include "util.h" #include "doxygen.h" +#include <string.h> static QCString getExtension() { @@ -94,10 +95,11 @@ void ManGenerator::init() } } -void ManGenerator::startFile(const char *name,const char *,bool) +static QCString buildFileName(const char *name) { QCString fileName=name; +#if 0 // TODO: do something sensible here. if (fileName.left(6)=="class_") { @@ -129,11 +131,20 @@ void ManGenerator::startFile(const char *name,const char *,bool) { fileName=fileName.left(i); } +#endif + if (convertToQCString(fileName.right(2))!=Config_getString("MAN_EXTENSION")) { fileName+=Config_getString("MAN_EXTENSION"); } - startPlainFile(fileName); + + return fileName; +} + +void ManGenerator::startFile(const char *,const char *manName, + const char *,bool) +{ + startPlainFile( buildFileName( manName ) ); firstCol=TRUE; } @@ -361,6 +372,46 @@ void ManGenerator::startMemberDoc(const char *,const char *,const char *,const c paragraph=FALSE; } +void ManGenerator::startDoxyAnchor(const char *fname,const char *, + const char *name) +{ + const char *basename; + + // something to be done? + if( !Config_getBool("MAN_LINKS") ) + { + return; // no + } + + // truncate after an (optional) :: + basename = strrchr( name, ':' ); + if ( !basename ) + { + basename = name; + } + else + { + basename++; + } + + // only create file when it doesn't exist + QCString fileName=dir+"/"+buildFileName( basename ); + QFile linkfile( fileName ); + if ( !linkfile.open( IO_ReadOnly ) ) + { + if ( linkfile.open( IO_WriteOnly ) ) + { + QTextStream linkstream; + linkstream.setDevice(&linkfile); +#if QT_VERSION >= 200 + linkstream.setEncoding(QTextStream::Latin1); +#endif + linkstream << ".so man" << getExtension() << "/" << buildFileName( fname ) << endl; + } + } + linkfile.close(); +} + void ManGenerator::endMemberDoc() { t << "\""; diff --git a/src/mangen.h b/src/mangen.h index 8b841df..818f325 100644 --- a/src/mangen.h +++ b/src/mangen.h @@ -40,7 +40,8 @@ class ManGenerator : public OutputGenerator OutputGenerator *get(OutputType o) { return (o==Man) ? this : 0; } static void init(); - void startFile(const char *name,const char *title,bool external); + void startFile(const char *name,const char *manName, + const char *title,bool external); void writeFooter(int,bool) {} void endFile(); void clearBuffer(); @@ -125,7 +126,7 @@ class ManGenerator : public OutputGenerator void writeChar(char c); void startMemberDoc(const char *,const char *,const char *,const char *); void endMemberDoc(); - void startDoxyAnchor(const char *,const char *,const char *) {} + void startDoxyAnchor(const char *,const char *,const char *); void endDoxyAnchor(const char *,const char *) {} void startCodeAnchor(const char *) {} void endCodeAnchor() {} diff --git a/src/memberdef.cpp b/src/memberdef.cpp index f64eb96..0d4aa98 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -1468,8 +1468,12 @@ QCString MemberDef::anchor() const return anc; } -void MemberDef::setGroupDef(GroupDef *gd) +void MemberDef::setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs) { - printf("%s MemberDef::setGroupDef(%s)\n",name().data(),gd->name().data()); + //printf("%s MemberDef::setGroupDef(%s)\n",name().data(),gd->name().data()); group=gd; + grouppri=pri; + groupFileName=fileName; + groupStartLine=startLine; + groupHasDocs=hasDocs; } diff --git a/src/memberdef.h b/src/memberdef.h index 39869d4..bf8b446 100644 --- a/src/memberdef.h +++ b/src/memberdef.h @@ -84,11 +84,17 @@ class MemberDef : public Definition // scope query members ClassDef *getClassDef() const { return classDef; } - GroupDef *getGroupDef() const { return group; } FileDef *getFileDef() const { return fileDef; } NamespaceDef* getNamespaceDef() const { return nspace; } //Definition *getCompoundDef() const; + // querying the grouping definition + GroupDef *getGroupDef() const { return group; } + Grouping::GroupPri_t getGroupPri() const { return grouppri; } + const char *getGroupFileName() const { return groupFileName; } + int getGroupStartLine() const { return groupStartLine; } + bool getGroupHasDocs() const { return groupHasDocs; } + // direct kind info Protection protection() const { return prot; } Specifier virtualness() const { return virt; } @@ -137,7 +143,7 @@ class MemberDef : public Definition void setMaxInitLines(int lines) { userInitLines=lines; } void setMemberClass(ClassDef *cd) { classDef=cd; } void setSectionList(MemberList *sl) { section=sl; } - void setGroupDef(GroupDef *gd); + void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs); void setExplicitExternal(bool b) { explExt=b; } void makeRelated() { related=TRUE; } @@ -274,6 +280,11 @@ class MemberDef : public Definition // as its type then this is computed by // getClassDefOfAnonymousType() and // cached here. + Grouping::GroupPri_t grouppri; // priority of this definition + QCString groupFileName; // file where this grouping was defined + int groupStartLine; // line " " " " " + bool groupHasDocs; // true if the entry that caused the grouping was documented + // disable copying of member defs diff --git a/src/membergroup.cpp b/src/membergroup.cpp index 83e4dd3..e124c8d 100644 --- a/src/membergroup.cpp +++ b/src/membergroup.cpp @@ -75,7 +75,7 @@ void MemberGroup::insertMember(MemberDef *md) GroupDef *gd; if (firstMd && (gd=firstMd->getGroupDef())) { - md->setGroupDef(gd); + md->setGroupDef(gd, firstMd->getGroupPri(), firstMd->getGroupFileName(), firstMd->getGroupStartLine(), firstMd->getGroupHasDocs()); gd->insertMember(md); } } diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index 7df4850..2f866bd 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -210,7 +210,7 @@ void NamespaceDef::computeAnchors() void NamespaceDef::writeDocumentation(OutputList &ol) { QCString pageTitle=name()+" Namespace Reference"; - startFile(ol,getOutputFileBase(),pageTitle); + startFile(ol,getOutputFileBase(),name(),pageTitle); startTitle(ol,getOutputFileBase()); //ol.docify(pageTitle); parseText(ol,theTranslator->trNamespaceReference(name())); @@ -320,7 +320,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol) ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Man); ol.startGroupHeader(); - parseText(ol,theTranslator->trAuthor()); + parseText(ol,theTranslator->trAuthor(TRUE,TRUE)); ol.endGroupHeader(); parseText(ol,theTranslator->trGeneratedAutomatically(Config_getString("PROJECT_NAME"))); diff --git a/src/outputgen.h b/src/outputgen.h index 9ec3edf..438fa4d 100644 --- a/src/outputgen.h +++ b/src/outputgen.h @@ -289,7 +289,8 @@ class OutputGenerator : public BaseOutputDocInterface /////////////////////////////////////////////////////////////// // structural output interface /////////////////////////////////////////////////////////////// - virtual void startFile(const char *name,const char *title,bool ext) = 0; + virtual void startFile(const char *name,const char *manName, + const char *title,bool ext) = 0; virtual void writeFooter(int,bool) = 0; virtual void endFile() = 0; virtual void startIndexSection(IndexSections) = 0; diff --git a/src/outputlist.cpp b/src/outputlist.cpp index 3e02375..cba5c17 100644 --- a/src/outputlist.cpp +++ b/src/outputlist.cpp @@ -275,6 +275,7 @@ FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3) FORALL3(const char *a1,const char *a2,bool a3,a1,a2,a3) FORALL3(uchar a1,uchar a2,uchar a3,a1,a2,a3) FORALL4(const char *a1,const char *a2,const char *a3,const char *a4,a1,a2,a3,a4) +FORALL4(const char *a1,const char *a2,const char *a3,bool a4,a1,a2,a3,a4) //-------------------------------------------------------------------------- diff --git a/src/outputlist.h b/src/outputlist.h index abbe8f8..3660d97 100644 --- a/src/outputlist.h +++ b/src/outputlist.h @@ -82,8 +82,9 @@ class OutputList : public OutputDocInterface { forall(&OutputGenerator::endProjectNumber); } void writeStyleInfo(int part) { forall(&OutputGenerator::writeStyleInfo,part); } - void startFile(const char *name,const char *title,bool external) - { forall(&OutputGenerator::startFile,name,title,external); } + void startFile(const char *name,const char *manName, + const char *title,bool external) + { forall(&OutputGenerator::startFile,name,manName,title,external); } void writeFooter(int fase,bool external) { forall(&OutputGenerator::writeFooter,fase,external); } void endFile() @@ -458,6 +459,7 @@ class OutputList : public OutputDocInterface FORALLPROTO3(const char *,const char *,const char *); FORALLPROTO3(ClassDiagram &,const char *,const char *); FORALLPROTO4(const char *,const char *,const char *,const char *); + FORALLPROTO4(const char *,const char *,const char *,bool); OutputList(const OutputList &ol); QList<OutputGenerator> *outputs; diff --git a/src/packagedef.cpp b/src/packagedef.cpp index 7c21c8e..7fd00eb 100644 --- a/src/packagedef.cpp +++ b/src/packagedef.cpp @@ -53,7 +53,7 @@ void PackageDef::writeDocumentation(OutputList &ol) QCString title = theTranslator->trPackage(name()); ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,getOutputFileBase(),title); + startFile(ol,getOutputFileBase(),name(),title); startTitle(ol,getOutputFileBase()); ol.docify(title); endTitle(ol,getOutputFileBase(),title); diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index a85e017..8a8c31f 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -857,7 +857,8 @@ void RTFGenerator::beginRTFSection() t << Rtf_Style["Heading2"]->reference << "\n"; } -void RTFGenerator::startFile(const char *name,const char *, bool ) +void RTFGenerator::startFile(const char *name,const char *, + const char *, bool ) { QCString fileName=name; diff --git a/src/rtfgen.h b/src/rtfgen.h index 2e8bff4..15d0ffc 100644 --- a/src/rtfgen.h +++ b/src/rtfgen.h @@ -42,7 +42,8 @@ class RTFGenerator : public OutputGenerator bool isEnabled(OutputType o) { return (o==RTF && active); } OutputGenerator *get(OutputType o) { return (o==RTF) ? this : 0; } - void startFile(const char *name,const char *title, bool external); + void startFile(const char *name,const char *manName, + const char *title, bool external); void writeFooter(int,bool) {} void endFile(); void clearBuffer(); diff --git a/src/scanner.l b/src/scanner.l index 960e07b..4d1dda8 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -142,8 +142,8 @@ static QCString *pCopyRoundString; static QCString *pCopyCurlyString; static QCString *pCopyQuotedString; static QCString *pSkipDoc; -static QStack<QCString> autoGroupNameStack; -static QCString lastDefGroup; +static QStack<Grouping> autoGroupStack; +static Grouping lastDefGroup( "", Grouping::GROUPING_LOWEST ); static bool insideFormula; static bool insideTryBlock=FALSE; @@ -168,7 +168,7 @@ static void initParser() virt = Normal; baseVirt = Normal; isTypedef = FALSE; - autoGroupNameStack.clear(); + autoGroupStack.clear(); insideTryBlock = FALSE; insideIDL = FALSE; } @@ -180,38 +180,35 @@ static void initEntry() current->virt = virt; current->stat = gstat; current->mGrpId = memberGroupId; - if (!autoGroupNameStack.isEmpty()) + if (!autoGroupStack.isEmpty()) { - current->groups->append(new QCString(*autoGroupNameStack.top())); + current->groups->append(new Grouping(*autoGroupStack.top())); } } //----------------------------------------------------------------------------- -/// remove old group name (if given) and add new one (if given) -static void setCurrentGroup( QCString *oldgroup, QCString *newgroup ) +/// remove any automatic grouping and add new one (if given) +static void setCurrentGroup( QCString *newgroup, Grouping::GroupPri_t pri ) { - if (oldgroup) + /* remove auto group name from current entry and discard it */ + Grouping *g = current->groups->first(); + int i=0; + while (g) { - /* remove auto group name from current entry and discard it */ - QCString *s = current->groups->first(); - int i=0; - while (s) - { - if (*s==*oldgroup) - { - current->groups->remove(i); - break; - } - s=current->groups->next(); - i++; - } + if (g->pri <= Grouping::GROUPING_AUTO_DEF) + { + current->groups->remove(i); + i--; + } + g=current->groups->next(); + i++; } /* use new group name instead? */ if ( newgroup ) { - current->groups->append(new QCString(*newgroup)); + current->groups->append(new Grouping(*newgroup, pri)); } } @@ -474,7 +471,6 @@ TITLE [tT][iI][tT][lL][eE] %x DocBaseClass %x CppQuote %x EndCppQuote -%x AddGroupDocArg1 %x GroupDocArg1 %x GroupDocArg2 %x GroupName @@ -1689,11 +1685,11 @@ TITLE [tT][iI][tT][lL][eE] varEntry->mGrpId = current->mGrpId; // deep copy group list - QListIterator<QCString> sli(*current->groups); - QCString *s; - for (;(s=sli.current());++sli) + QListIterator<Grouping> gli(*current->groups); + Grouping *g; + for (;(g=gli.current());++gli) { - varEntry->groups->append(new QCString(*s)); + varEntry->groups->append(new Grouping(*g)); } //printf("Add: type=`%s',name=`%s',args=`%s'\n", @@ -2684,13 +2680,22 @@ TITLE [tT][iI][tT][lL][eE] current->section = Entry::GROUPDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; + current->groupdoctype = Entry::GROUPDOC_NORMAL; BEGIN( GroupDocArg1 ); } <Doc,JavaDoc>{B}*{CMD}"addtogroup"{B}+ { - current->section = Entry::ADDGRPDOC_SEC; + current->section = Entry::GROUPDOC_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; - BEGIN( AddGroupDocArg1 ); + current->groupdoctype = Entry::GROUPDOC_ADD; + BEGIN( GroupDocArg1 ); + } +<Doc,JavaDoc>{B}*{CMD}"weakgroup"{B}+ { + current->section = Entry::GROUPDOC_SEC; + current->fileName = yyFileName; + current->startLine = yyLineNr; + current->groupdoctype = Entry::GROUPDOC_WEAK; + BEGIN( GroupDocArg1 ); } <Doc,JavaDoc>{B}*{CMD}"namespace"{B}+ { current->section = Entry::NAMESPACEDOC_SEC; @@ -2753,7 +2758,7 @@ TITLE [tT][iI][tT][lL][eE] BEGIN( ExampleDocArg1 ); } <LineDoc>{CMD}"name"[^\n]*\n { - lastDefGroup.resize(0); + lastDefGroup.groupname.resize(0); memberGroupHeader=&yytext[5]; memberGroupHeader=memberGroupHeader.stripWhiteSpace(); current->section = Entry::MEMBERGRP_SEC; @@ -2763,7 +2768,7 @@ TITLE [tT][iI][tT][lL][eE] BEGIN( lastDocContext ); } <Doc,JavaDoc>{CMD}"name"{B}+ { - lastDefGroup.resize(0); + lastDefGroup.groupname.resize(0); current->section = Entry::MEMBERGRP_SEC; current->fileName = yyFileName; current->startLine = yyLineNr; @@ -2946,30 +2951,10 @@ TITLE [tT][iI][tT][lL][eE] yyLineNr++; } -<AddGroupDocArg1>{ID} { - current->name = yytext; - lastDefGroup = yytext; - newDocState(); - } -<AddGroupDocArg1>"\n" { - warn(yyFileName,yyLineNr, - "Warning: missing argument after " - "\\addtogroup." - ); - yyLineNr++; - BEGIN( Doc ); - } -<GroupDocArg2>"*/" { - unput('/');unput('*'); - warn(yyFileName,yyLineNr, - "Warning: missing argument after " - "\\addtogroup." - ); - BEGIN( Doc ); - } <GroupDocArg1>{ID}(".html"?) { current->name = yytext; - lastDefGroup = yytext; + lastDefGroup.groupname = yytext; + lastDefGroup.pri = current->groupingpri(); // the .html stuff is for Qt compatibility if (current->name.right(5)==".html") current->name=current->name.left(current->name.length()-5); @@ -2978,25 +2963,29 @@ TITLE [tT][iI][tT][lL][eE] <GroupDocArg1>"\\"{B}*"\n" { yyLineNr++; } <GroupDocArg1>"\n" { warn(yyFileName,yyLineNr, - "Warning: missing argument after " - "\\defgroup." + "Warning: missing group name after %s", + current->groupdoccmd() ); yyLineNr++; BEGIN( Doc ); } +<GroupDocArg2>{B}*"*/" { + // fake input for end of title rule + yyLineNr--; + unput('/');unput('*');unput('\n'); + } +<GroupDocArg2>"\\"{B}*"\n" { yyLineNr++; } <GroupDocArg2>[^\n\*]+ { current->type += yytext; current->type = current->type.stripWhiteSpace(); } -<GroupDocArg2>. { - current->type += yytext; - } -<GroupDocArg2>"\\"{B}*"\n" { yyLineNr++; } -<GroupDocArg2>"*/" { - unput('/');unput('*'); - newDocState(); - } <GroupDocArg2>"\n" { + if( current->groupdoctype == Entry::GROUPDOC_NORMAL && + current->type.length() == 0 ) + warn(yyFileName,yyLineNr, + "Warning: missing title after " + "\\defgroup %s", current->name.data() + ); yyLineNr++; newDocState(); } @@ -3240,11 +3229,11 @@ TITLE [tT][iI][tT][lL][eE] BEGIN( GroupName ); } <ClassDoc,Doc,JavaDoc>{CMD}"{" { - if (current->section==Entry::GROUPDOC_SEC || - current->section==Entry::ADDGRPDOC_SEC - ) + if (current->section==Entry::GROUPDOC_SEC ) { - autoGroupNameStack.push(new QCString(current->name)); + autoGroupStack.push(new Grouping(current->name, + current->groupingpri() + )); } else if (current->section == Entry::MEMBERGRP_SEC) { @@ -3392,7 +3381,7 @@ TITLE [tT][iI][tT][lL][eE] } <GroupName>{ID} { current->groups->append( - new QCString(yytext) + new Grouping(yytext, Grouping::GROUPING_INGROUP) ); } <GroupName>\n { @@ -3745,18 +3734,17 @@ static void startGroup() warn(yyFileName,yyLineNr,"Warning: ignoring nested member group. " "Previous command was found at line %d.",lastMemberGroupLine); } - else if (!lastDefGroup.isEmpty()) + else if (!lastDefGroup.groupname.isEmpty()) { - setCurrentGroup( autoGroupNameStack.top(), &lastDefGroup); - autoGroupNameStack.push(new QCString(lastDefGroup)); - lastDefGroup.resize(0); + setCurrentGroup( &lastDefGroup.groupname, lastDefGroup.pri ); + autoGroupStack.push(new Grouping(lastDefGroup)); + lastDefGroup.groupname.resize(0); } else { if (memberGroupHeader.isEmpty()) { - //warn("Warning: member group does not have a header " - // "at line %d of %s.\n",yyLineNr,yyFileName); + // warn( yyFileName, yyLineNr, "Warning: member group does not have a header" ); memberGroupHeader="[NOHEADER]"; } memberGroupId = newMemberGroupId(); @@ -3767,7 +3755,7 @@ static void startGroup() static void endGroup() { - if (memberGroupId==NOGROUP && autoGroupNameStack.isEmpty()) + if (memberGroupId==NOGROUP && autoGroupStack.isEmpty()) { warn(yyFileName,yyLineNr, "Warning: end of group without matching begin."); @@ -3788,11 +3776,16 @@ static void endGroup() memberGroupHeader.resize(0); memberGroupDocs.resize(0); } - else if (!autoGroupNameStack.isEmpty()) // end of group + else if (!autoGroupStack.isEmpty()) // end of group { - QCString *oldName = autoGroupNameStack.pop(); - setCurrentGroup(oldName,autoGroupNameStack.top()); - delete oldName; + Grouping *current = autoGroupStack.pop(); + Grouping *parent = autoGroupStack.top(); + if( parent ) { + setCurrentGroup( &parent->groupname, parent->pri ); + } else { + setCurrentGroup( NULL, Grouping::GROUPING_LOWEST ); + } + delete current; } } diff --git a/src/translator.h b/src/translator.h index 5125717..a77bd28 100644 --- a/src/translator.h +++ b/src/translator.h @@ -431,9 +431,6 @@ class Translator */ virtual QCString trEnumerationValues() = 0; - /*! This is used in man pages as the author section. */ - virtual QCString trAuthor() = 0; - /*! This is used in the documentation of a file before the list of * documentation blocks for defines */ @@ -504,9 +501,6 @@ class Translator /*! this text is generated when the \\date command is used. */ virtual QCString trDate() = 0; - /*! this text is generated when the \\author command is used. */ - virtual QCString trAuthors() = 0; - /*! this text is generated when the \\return command is used. */ virtual QCString trReturns() = 0; @@ -688,13 +682,13 @@ class Translator /*! Used in the file sources to point to the corresponding documentation. */ virtual QCString trGotoDocumentation() = 0; - /*! Text for the \pre command */ + /*! Text for the \\pre command */ virtual QCString trPrecondition() = 0; - /*! Text for the \post command */ + /*! Text for the \\post command */ virtual QCString trPostcondition() = 0; - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ virtual QCString trInvariant() = 0; /*! Text shown before a multi-line variable/enum initialization */ @@ -846,6 +840,17 @@ class Translator virtual QCString trMember(bool first_capital, bool singular) = 0; virtual QCString trField(bool first_capital, bool singular) = 0; virtual QCString trGlobal(bool first_capital, bool singular) = 0; + + + ////////////////////////////////////////////////////////////////////////// + // new since 1.2.7 + ////////////////////////////////////////////////////////////////////////// + + /*! This text is generated when the \\author command is used and + * for the author section in man pages. + */ + virtual QCString trAuthor(bool first_capital, bool singular) = 0; + }; #endif diff --git a/src/translator_adapter.h b/src/translator_adapter.h index 04d35d4..4ef420a 100644 --- a/src/translator_adapter.h +++ b/src/translator_adapter.h @@ -1,29 +1,75 @@ #ifndef TRANSLATOR_ADAPTER_H #define TRANSLATOR_ADAPTER_H -#include "translator_en.h" - -/*! A function to generate a warning message to signal the user - * that the translation of his/her language of choice needs updating - * \relates TranslatorAdapterBase - */ -inline QCString createUpdateNeededMessage(const char *languageName, - const char *versionString) -{ - return (QCString)"Warning: The selected output language \""+languageName+ - "\" has not been updated\nsince release "+versionString+ - ". As a result some sentences may appear in English.\n"; -} +#include "version.h" /*! \brief Base of the translator adapter tree * * This class provides access to the english translations, to be used - * as a substitute for real translations. + * as a substitute for not implemented local translations. */ -class TranslatorAdapterBase : public Translator +class TranslatorAdapterCVS : public Translator { protected: TranslatorEnglish english; + + /*! An auxiliary inline method used by the updateNeededMessage() + * for building a warning message. + */ + inline QCString createUpdateNeededMessage(const QCString & languageName, + const QCString & versionString) + { + return QCString("Warning: The selected output language \"") + + languageName + + "\" has not been updated\nsince " + + versionString + + ". As a result some sentences may appear in English.\n\n"; + } + + public: + /*! A method to generate a warning message to signal the user + * that the translation of his/her language of choice needs + * updating. + */ + virtual QCString updateNeededMessage() + { + QCString vs("CVS release "); + vs += versionString; // the one from the version.cpp + return createUpdateNeededMessage(idLanguage(), vs); + } + +//----------------------------------------------------------------------- +// The things below this line should go to the new +// TranslatorAdapter_1_2_x, as public methods. The things above +// should stay in TranslatorAdapterCVS and need not to be touched. +// The first five lines below should be uncommented, and the +// release number at the fifth of those lines should be set. + +// class TranslatorAdapter_1_2_7 : public TranslatorAdapterCVS +// { +// public: +// virtual QCString updateNeededMessage() +// { return createUpdateNeededMessage(idLanguage(),"release 1.2.7"); } + + /*! These are the default implementations of the obsolete methods + * for introducing author/authors (possibly localized). + */ + virtual QCString trAuthors() + { return "Author(s)"; } + + virtual QCString trAuthor() + { return "Author"; } + + /*! This is the localized implementation of newer equivalent + * using the obsolete methods trAuthors() and trAuthor(). + */ + virtual QCString trAuthor(bool first_capital, bool singular) + { + if (first_capital) + return (singular) ? trAuthor() : trAuthors(); // possibly localized + else + return english.trAuthor(first_capital, singular); + } }; /*! \brief Translator adapter class for release 1.2.6 @@ -31,26 +77,26 @@ class TranslatorAdapterBase : public Translator * Translator adapter for dealing with translator changes since * release 1.2.6 */ -class TranslatorAdapter_1_2_6 : public TranslatorAdapterBase +class TranslatorAdapter_1_2_6 : public TranslatorAdapterCVS { public: - QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"1.2.6"); } + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.2.6"); } /*! Used as ansicpg for RTF file */ - QCString trRTFansicp() + virtual QCString trRTFansicp() { return "1252"; } /*! Used as ansicpg for RTF fcharset */ - QCString trRTFCharSet() + virtual QCString trRTFCharSet() { return "0"; } /*! Used as header RTF general index */ - QCString trRTFGeneralIndex() + virtual QCString trRTFGeneralIndex() { return "Index"; } @@ -65,13 +111,13 @@ class TranslatorAdapter_1_2_6 : public TranslatorAdapterBase * used in the documentation of a group before the list of * links to documented files. This is possibly localized. */ - QCString trFiles() + virtual QCString trFiles() { return "Files"; } /*! This is the localized implementation of newer equivalent * using the obsolete method trFiles(). */ - QCString trFile(bool first_capital, bool singular) + virtual QCString trFile(bool first_capital, bool singular) { if (first_capital && !singular) return trFiles(); // possibly localized @@ -83,11 +129,11 @@ class TranslatorAdapter_1_2_6 : public TranslatorAdapterBase * latexLanguageSupportCommand(). The default implementation * of the obsolete method follows. */ - QCString latexBabelPackage() + virtual QCString latexBabelPackage() { return ""; } /*! Default implementation of the newer method. */ - QCString latexLanguageSupportCommand() + virtual QCString latexLanguageSupportCommand() { QCString result(latexBabelPackage()); if (!result.isEmpty()) @@ -98,30 +144,31 @@ class TranslatorAdapter_1_2_6 : public TranslatorAdapterBase return result; } - QCString idLanguageCharset() + virtual QCString idLanguageCharset() { return english.idLanguageCharset(); } - QCString trClass(bool first_capital, bool singular) + virtual QCString trClass(bool first_capital, bool singular) { return english.trClass(first_capital,singular); } - QCString trNamespace(bool first_capital, bool singular) + virtual QCString trNamespace(bool first_capital, bool singular) { return english.trNamespace(first_capital,singular); } - QCString trGroup(bool first_capital, bool singular) + virtual QCString trGroup(bool first_capital, bool singular) { return english.trGroup(first_capital,singular); } - QCString trPage(bool first_capital, bool singular) + virtual QCString trPage(bool first_capital, bool singular) { return english.trPage(first_capital,singular); } - QCString trMember(bool first_capital, bool singular) + virtual QCString trMember(bool first_capital, bool singular) { return english.trMember(first_capital,singular); } - QCString trField(bool first_capital, bool singular) + virtual QCString trField(bool first_capital, bool singular) { return english.trField(first_capital,singular); } - QCString trGlobal(bool first_capital, bool singular) + virtual QCString trGlobal(bool first_capital, bool singular) { return english.trGlobal(first_capital,singular); } - + + }; /*! \brief Translator adapter class for release 1.2.5 @@ -132,13 +179,13 @@ class TranslatorAdapter_1_2_6 : public TranslatorAdapterBase class TranslatorAdapter_1_2_5 : public TranslatorAdapter_1_2_6 { public: - QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"1.2.5"); } + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.2.5"); } - QCString trBug() + virtual QCString trBug() { return english.trBug(); } - QCString trBugList() + virtual QCString trBugList() { return english.trBugList(); } }; @@ -150,31 +197,31 @@ class TranslatorAdapter_1_2_5 : public TranslatorAdapter_1_2_6 class TranslatorAdapter_1_2_4 : public TranslatorAdapter_1_2_5 { public: - QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"1.2.4"); } + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.2.4"); } - QCString trInterfaces() + virtual QCString trInterfaces() { return english.trInterfaces(); } - QCString trClasses() + virtual QCString trClasses() { return english.trClasses(); } - QCString trPackage(const char *name) + virtual QCString trPackage(const char *name) { return english.trPackage(name); } - QCString trPackageList() + virtual QCString trPackageList() { return english.trPackageList(); } - QCString trPackageListDescription() + virtual QCString trPackageListDescription() { return english.trPackageListDescription(); } - QCString trPackages() + virtual QCString trPackages() { return english.trPackages(); } - QCString trPackageDocumentation() + virtual QCString trPackageDocumentation() { return english.trPackageDocumentation(); } - QCString trDefineValue() + virtual QCString trDefineValue() { return english.trDefineValue(); } }; @@ -187,13 +234,13 @@ class TranslatorAdapter_1_2_4 : public TranslatorAdapter_1_2_5 class TranslatorAdapter_1_2_2 : public TranslatorAdapter_1_2_4 { public: - QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"1.2.2"); } + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.2.2"); } - QCString trProperties() + virtual QCString trProperties() { return english.trProperties(); } - QCString trPropertyDocumentation() + virtual QCString trPropertyDocumentation() { return english.trPropertyDocumentation(); } }; @@ -205,10 +252,10 @@ class TranslatorAdapter_1_2_2 : public TranslatorAdapter_1_2_4 class TranslatorAdapter_1_2_1 : public TranslatorAdapter_1_2_2 { public: - QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"1.2.1"); } + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.2.1"); } - QCString trDCOPMethods() + virtual QCString trDCOPMethods() { return english.trDCOPMethods(); } }; @@ -220,13 +267,13 @@ class TranslatorAdapter_1_2_1 : public TranslatorAdapter_1_2_2 class TranslatorAdapter_1_2_0 : public TranslatorAdapter_1_2_1 { public: - QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"1.2.0"); } + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.2.0"); } - QCString trTest() + virtual QCString trTest() { return english.trTest(); } - QCString trTestList() + virtual QCString trTestList() { return english.trTestList(); } }; @@ -239,16 +286,16 @@ class TranslatorAdapter_1_2_0 : public TranslatorAdapter_1_2_1 class TranslatorAdapter_1_1_5 : public TranslatorAdapter_1_2_0 { public: - QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"1.1.5"); } + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.1.5"); } - QCString trLegendTitle() + virtual QCString trLegendTitle() { return english.trLegendTitle(); } - QCString trLegendDocs() + virtual QCString trLegendDocs() { return english.trLegendDocs(); } - QCString trLegend() + virtual QCString trLegend() { return english.trLegend(); } }; @@ -260,22 +307,22 @@ class TranslatorAdapter_1_1_5 : public TranslatorAdapter_1_2_0 class TranslatorAdapter_1_1_4 : public TranslatorAdapter_1_1_5 { public: - QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"1.1.4"); } + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.1.4"); } - QCString trReferencedBy() + virtual QCString trReferencedBy() { return english.trReferencedBy(); } - QCString trRemarks() + virtual QCString trRemarks() { return english.trRemarks(); } - QCString trAttention() + virtual QCString trAttention() { return english.trAttention(); } - QCString trInclByDepGraph() + virtual QCString trInclByDepGraph() { return english.trInclByDepGraph(); } - QCString trSince() + virtual QCString trSince() { return english.trSince(); } }; @@ -287,13 +334,13 @@ class TranslatorAdapter_1_1_4 : public TranslatorAdapter_1_1_5 class TranslatorAdapter_1_1_3 : public TranslatorAdapter_1_1_4 { public: - QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"1.1.3"); } + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.1.3"); } - QCString trTodo() + virtual QCString trTodo() { return english.trTodo(); } - QCString trTodoList() + virtual QCString trTodoList() { return english.trTodoList(); } }; @@ -305,40 +352,40 @@ class TranslatorAdapter_1_1_3 : public TranslatorAdapter_1_1_4 class TranslatorAdapter_1_1_0 : public TranslatorAdapter_1_1_3 { public: - QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"1.1.0"); } + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.1.0"); } - QCString trNote() + virtual QCString trNote() { return english.trNote(); } - QCString trPublicTypes() + virtual QCString trPublicTypes() { return english.trPublicTypes(); } - QCString trPublicAttribs() + virtual QCString trPublicAttribs() { return english.trPublicAttribs(); } - QCString trStaticPublicAttribs() + virtual QCString trStaticPublicAttribs() { return english.trStaticPublicAttribs(); } - QCString trProtectedTypes() + virtual QCString trProtectedTypes() { return english.trProtectedTypes(); } - QCString trProtectedAttribs() + virtual QCString trProtectedAttribs() { return english.trProtectedAttribs(); } - QCString trStaticProtectedAttribs() + virtual QCString trStaticProtectedAttribs() { return english.trStaticProtectedAttribs(); } - QCString trPrivateTypes() + virtual QCString trPrivateTypes() { return english.trPrivateTypes(); } - QCString trPrivateAttribs() + virtual QCString trPrivateAttribs() { return english.trPrivateAttribs(); } - QCString trStaticPrivateAttribs() + virtual QCString trStaticPrivateAttribs() { return english.trStaticPrivateAttribs(); } - QCString trEnumerationValueDocumentation() + virtual QCString trEnumerationValueDocumentation() { return english.trEnumerationValueDocumentation(); } }; @@ -349,113 +396,113 @@ class TranslatorAdapter_1_1_0 : public TranslatorAdapter_1_1_3 */ class TranslatorAdapter_1_0_0 : public TranslatorAdapter_1_1_0 { - QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"1.0.0"); } + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.0.0"); } - QCString trIncludingInheritedMembers() + virtual QCString trIncludingInheritedMembers() { return english.trIncludingInheritedMembers(); } - QCString trFuncProtos() + virtual QCString trFuncProtos() { return english.trFuncProtos(); } - QCString trNamespaces() + virtual QCString trNamespaces() { return english.trNamespaces(); } - QCString trGeneratedFromFiles(ClassDef::CompoundType compType, + virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single) { return english.trGeneratedFromFiles(compType, single); } - QCString trAlphabeticalList() + virtual QCString trAlphabeticalList() { return english.trAlphabeticalList(); } - QCString trReturnValues() + virtual QCString trReturnValues() { return english.trReturnValues(); } - QCString trMainPage() + virtual QCString trMainPage() { return english.trMainPage(); } - QCString trPageAbbreviation() + virtual QCString trPageAbbreviation() { return english.trPageAbbreviation(); } - QCString trSources() + virtual QCString trSources() { return english.trSources(); } - QCString trStaticProtectedMembers() + virtual QCString trStaticProtectedMembers() { return english.trStaticProtectedMembers(); } - QCString trDefinedAtLineInSourceFile() + virtual QCString trDefinedAtLineInSourceFile() { return english.trDefinedAtLineInSourceFile(); } - QCString trDefinedInSourceFile() + virtual QCString trDefinedInSourceFile() { return english.trDefinedInSourceFile(); } - QCString trDeprecated() + virtual QCString trDeprecated() { return english.trDeprecated(); } - QCString trCollaborationDiagram(const char *clName) + virtual QCString trCollaborationDiagram(const char *clName) { return english.trCollaborationDiagram(clName); } - QCString trInclDepGraph(const char *fName) + virtual QCString trInclDepGraph(const char *fName) { return english.trInclDepGraph(fName); } - QCString trConstructorDocumentation() + virtual QCString trConstructorDocumentation() { return english.trConstructorDocumentation(); } - QCString trGotoSourceCode() + virtual QCString trGotoSourceCode() { return english.trGotoSourceCode(); } - QCString trGotoDocumentation() + virtual QCString trGotoDocumentation() { return english.trGotoDocumentation(); } - QCString trPrecondition() + virtual QCString trPrecondition() { return english.trPrecondition(); } - QCString trPostcondition() + virtual QCString trPostcondition() { return english.trPostcondition(); } - QCString trInvariant() + virtual QCString trInvariant() { return english.trInvariant(); } - QCString trInitialValue() + virtual QCString trInitialValue() { return english.trInitialValue(); } - QCString trCode() + virtual QCString trCode() { return english.trCode(); } - QCString trGraphicalHierarchy() + virtual QCString trGraphicalHierarchy() { return english.trGraphicalHierarchy(); } - QCString trGotoGraphicalHierarchy() + virtual QCString trGotoGraphicalHierarchy() { return english.trGotoGraphicalHierarchy(); } - QCString trGotoTextualHierarchy() + virtual QCString trGotoTextualHierarchy() { return english.trGotoTextualHierarchy(); } - QCString trPageIndex() + virtual QCString trPageIndex() { return english.trPageIndex(); } - QCString trReimplementedForInternalReasons() + virtual QCString trReimplementedForInternalReasons() { return english.trReimplementedForInternalReasons(); } - QCString trClassHierarchyDescription() + virtual QCString trClassHierarchyDescription() { return english.trClassHierarchyDescription(); } - QCString trNoDescriptionAvailable() + virtual QCString trNoDescriptionAvailable() { return english.trNoDescriptionAvailable(); } - QCString trEnumerationValues() + virtual QCString trEnumerationValues() { return english.trEnumerationValues(); } - QCString trFunctionPrototypeDocumentation() + virtual QCString trFunctionPrototypeDocumentation() { return english.trFunctionPrototypeDocumentation(); } - QCString trEnumerationTypeDocumentation() + virtual QCString trEnumerationTypeDocumentation() { return english.trEnumerationTypeDocumentation(); } - QCString trFunctionDocumentation() + virtual QCString trFunctionDocumentation() { return english.trFunctionDocumentation(); } - QCString trRelatedFunctionDocumentation() + virtual QCString trRelatedFunctionDocumentation() { return english.trRelatedFunctionDocumentation(); } }; diff --git a/src/translator_br.h b/src/translator_br.h index a2f748f..2bb1855 100644 --- a/src/translator_br.h +++ b/src/translator_br.h @@ -24,7 +24,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6 { public: - // --- Language contol methods ------------------- + // --- Language control methods ------------------- /*! Used for identification of the language. May resemble * the string returned by latexBabelPackage(), but it is not used @@ -630,9 +630,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6 return result; } - /*! \mgroup Class sections - * these are for the member sections of a class, struct or union - */ + /* these are for the member sections of a class, struct or union */ virtual QCString trPublicMembers() { return "Métodos Públicos"; } virtual QCString trPublicSlots() @@ -653,7 +651,6 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6 { return "Slots Privados"; } virtual QCString trStaticPrivateMembers() { return "Métodos Privados Estáticos"; } - /*! \endmgroup */ /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -858,17 +855,17 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6 { return "Vá para a documentação deste arquivo."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ virtual QCString trPrecondition() { return "Pré-Condição"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ virtual QCString trPostcondition() { return "Pós-Condição"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ virtual QCString trInvariant() { return "Invariável"; diff --git a/src/translator_cn.h b/src/translator_cn.h index f534346..b85aad2 100644 --- a/src/translator_cn.h +++ b/src/translator_cn.h @@ -504,17 +504,17 @@ class TranslatorChinese : public TranslatorAdapter_1_2_1 { return "ä¯ÀÀ¸ÃÎļþµÄÎĵµ¡£"; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ QCString trPrecondition() { return "Ç°ÖÃÌõ¼þ"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ QCString trPostcondition() { return "ºóÖÃÌõ¼þ"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ QCString trInvariant() { return "²»±äÐÔ"; diff --git a/src/translator_cz.h b/src/translator_cz.h index 050cfb1..64cd8d2 100644 --- a/src/translator_cz.h +++ b/src/translator_cz.h @@ -108,27 +108,37 @@ // class Translator. The English translator is now on the same // level as other translators. // +// 2001/05/02 +// - The Decode() inline identifier changed to decode (i.e. lower +// case) to be consistent with HR and RU translator, which also +// use the approach. +// - Removed the obsolete method trFiles(). // +// 2001/05/18 +// - The trRelatedPagesDescription() content updated to fit +// the context better. +// - Implemented new method trAuthor(params). +// - Removed obsolete methods trAuthor() and trAuthors(). +// // Notices: // -------- // The conditional compilation ensures or the neutral functionality -// of the private inline Decode(), or calling the WinToISO() method +// of the private inline decode(), or calling the WinToISO() method // for on-line encoding conversion. If you want to maintain the // source in the iso-8859-2, do convert the encoding of the source, -// change the conditional definition of the inline Decode() using the +// change the conditional definition of the inline decode() using the // method ISO88592ToWin1250() -- for conversion of strings for the // Windows version. The version which does not call the function is // probably slightly faster. -#include "translator.h" class TranslatorCzech : public Translator { private: - /*! The Decode() inline assumes the source written in the + /*! The decode() inline assumes the source written in the Windows encoding (maintainer only dependent). */ - inline QCString Decode(const QCString & sInput) + inline QCString decode(const QCString & sInput) { #ifdef _WIN32 return sInput; @@ -160,60 +170,60 @@ class TranslatorCzech : public Translator /*! used in the compound documentation before a list of related functions. */ virtual QCString trRelatedFunctions() - { return Decode("Související funkce"); } + { return decode("Související funkce"); } /*! subscript for the related functions. */ virtual QCString trRelatedSubscript() - { return Decode("(Uvedené funkce nejsou èlenskými funkcemi.)"); } + { return decode("(Uvedené funkce nejsou èlenskými funkcemi.)"); } /*! header that is put before the detailed description of files, classes and namespaces. */ virtual QCString trDetailedDescription() - { return Decode("Detailní popis"); } + { return decode("Detailní popis"); } /*! header that is put before the list of typedefs. */ virtual QCString trMemberTypedefDocumentation() - { return Decode("Dokumentace k èlenským typùm"); } + { return decode("Dokumentace k èlenským typùm"); } /*! header that is put before the list of enumerations. */ virtual QCString trMemberEnumerationDocumentation() - { return Decode("Dokumentace k èlenským výètùm"); } + { return decode("Dokumentace k èlenským výètùm"); } /*! header that is put before the list of member functions. */ virtual QCString trMemberFunctionDocumentation() - { return Decode("Dokumentace k metodám"); } + { return decode("Dokumentace k metodám"); } /*! header that is put before the list of member attributes. */ virtual QCString trMemberDataDocumentation() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return Decode("Dokumentace k položkám"); + return decode("Dokumentace k položkám"); } else { - return Decode("Dokumentace k datovým èlenùm"); + return decode("Dokumentace k datovým èlenùm"); } } /*! this is the text of a link put after brief descriptions. */ virtual QCString trMore() - { return Decode("..."); } + { return decode("..."); } /*! put in the class documentation */ virtual QCString trListOfAllMembers() - { return Decode("Seznam všech èlenù."); } + { return decode("Seznam všech èlenù."); } /*! used as the title of the "list of all members" page of a class */ virtual QCString trMemberList() - { return Decode("Seznam èlenù tøídy"); } + { return decode("Seznam èlenù tøídy"); } /*! this is the first part of a sentence that is followed by a class name */ virtual QCString trThisIsTheListOfAllMembers() - { return Decode("Zde naleznete úplný seznam èlenù tøídy "); } + { return decode("Zde naleznete úplný seznam èlenù tøídy "); } /*! this is the remainder of the sentence after the class name */ virtual QCString trIncludingInheritedMembers() - { return Decode(", vèetnì všech zdìdìných èlenù."); } + { return decode(", vèetnì všech zdìdìných èlenù."); } /*! this is put at the author sections at the bottom of man pages. * parameter s is name of the project name. @@ -223,20 +233,20 @@ class TranslatorCzech : public Translator "ze zdrojových textù"; if (s) result+=(QCString)" projektu "+s; result+="."; - return Decode(result); + return decode(result); } /*! put after an enum name in the list of all members */ virtual QCString trEnumName() - { return Decode("jméno výètu"); } + { return decode("jméno výètu"); } /*! put after an enum value in the list of all members */ virtual QCString trEnumValue() - { return Decode("hodnota výètu"); } + { return decode("hodnota výètu"); } /*! put after an undocumented member in the list of all members */ virtual QCString trDefinedIn() - { return Decode("definován v"); } + { return decode("definován v"); } // quick reference sections @@ -244,43 +254,43 @@ class TranslatorCzech : public Translator * compounds or files (see the \\group command). */ virtual QCString trModules() - { return Decode("Moduly"); } + { return decode("Moduly"); } /*! This is put above each page as a link to the class hierarchy */ virtual QCString trClassHierarchy() - { return Decode("Hierarchie tøíd"); } + { return decode("Hierarchie tøíd"); } /*! This is put above each page as a link to the list of annotated classes */ virtual QCString trCompoundList() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return Decode("Datové struktury"); + return decode("Datové struktury"); } else { - return Decode("Seznam tøíd"); + return decode("Seznam tøíd"); } } /*! This is put above each page as a link to the list of documented files */ virtual QCString trFileList() - { return Decode("Seznam souborù"); } + { return decode("Seznam souborù"); } /*! This is put above each page as a link to the list of all verbatim headers */ virtual QCString trHeaderFiles() - { return Decode("Seznam hlavièkových souborù"); } + { return decode("Seznam hlavièkových souborù"); } /*! This is put above each page as a link to all members of compounds. */ virtual QCString trCompoundMembers() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return Decode("Datové položky"); + return decode("Datové položky"); } else { - return Decode("Seznam èlenù tøíd"); + return decode("Seznam èlenù tøíd"); } } @@ -289,29 +299,29 @@ class TranslatorCzech : public Translator { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return Decode("Globální symboly"); + return decode("Globální symboly"); } else { - return Decode("Symboly v souborech"); + return decode("Symboly v souborech"); } } /*! This is put above each page as a link to all related pages. */ virtual QCString trRelatedPages() - { return Decode("Ostatní stránky"); } + { return decode("Ostatní stránky"); } /*! This is put above each page as a link to all examples. */ virtual QCString trExamples() - { return Decode("Pøíklady"); } + { return decode("Pøíklady"); } /*! This is put above each page as a link to the search engine. */ virtual QCString trSearch() - { return Decode("Hledat"); } + { return decode("Hledat"); } /*! This is an introduction to the class hierarchy. */ virtual QCString trClassHierarchyDescription() - { return Decode("Zde naleznete seznam, vyjadøující vztah dìdiènosti tøíd. " + { return decode("Zde naleznete seznam, vyjadøující vztah dìdiènosti tøíd. " "Je seøazen pøibližnì (ale ne úplnì) podle abecedy:"); } @@ -321,7 +331,7 @@ class TranslatorCzech : public Translator QCString result="Zde naleznete seznam všech "; if (!extractAll) result+="dokumentovaných "; result+="souborù se struènými popisy:"; - return Decode(result); + return decode(result); } /*! This is an introduction to the annotated compound list. */ @@ -329,12 +339,12 @@ class TranslatorCzech : public Translator { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return Decode("Následující seznam obsahuje identifikace datových " + return decode("Následující seznam obsahuje identifikace datových " "struktur a jejich struèné popisy:"); } else { - return Decode("Následující seznam obsahuje pøedevším identifikace " + return decode("Následující seznam obsahuje pøedevším identifikace " "tøíd, ale nacházejí se zde i další netriviální prvky, " "jako jsou struktury (struct), unie (union) a rozhraní " "(interface). V seznamu jsou uvedeny jejich struèné " @@ -385,7 +395,7 @@ class TranslatorCzech : public Translator } } - return Decode(result); + return decode(result); } /*! This is an introduction to the page with all file members. */ @@ -410,52 +420,50 @@ class TranslatorCzech : public Translator else result+="dokumentaci:"; - return Decode(result); + return decode(result); } /*! This is an introduction to the page with the list of all header files. */ virtual QCString trHeaderFilesDescription() - { return Decode("Zde naleznete hlavièkové soubory, které tvoøí " + { return decode("Zde naleznete hlavièkové soubory, které tvoøí " "aplikaèní programátorské rozhraní (API):"); } /*! This is an introduction to the page with the list of all examples */ virtual QCString trExamplesDescription() - { return Decode("Zde naleznete seznam všech pøíkladù:"); } + { return decode("Zde naleznete seznam všech pøíkladù:"); } /*! This is an introduction to the page with the list of related pages */ virtual QCString trRelatedPagesDescription() - { return Decode("Následující seznam odkazuje na další stránky projektu, " - "které mají charakter uspoøádaných seznamù informací, " - "posbíraných z rùzných míst ve zdrojových souborech:"); } + { return decode("Následující seznam odkazuje na další stránky projektu:"); } /*! This is an introduction to the page with the list of class/file groups */ virtual QCString trModulesDescription() - { return Decode("Zde naleznete seznam všech modulù:"); } + { return decode("Zde naleznete seznam všech modulù:"); } /*! This sentences is used in the annotated class/file lists if no brief * description is given. */ virtual QCString trNoDescriptionAvailable() - { return Decode("Popis není k dispozici"); } + { return decode("Popis není k dispozici"); } // index titles (the project name is prepended for these) /*! This is used in HTML as the title of index.html. */ virtual QCString trDocumentation() - { return Decode("Dokumentace"); } + { return decode("Dokumentace"); } /*! This is used in LaTeX as the title of the chapter with the * index of all groups. */ virtual QCString trModuleIndex() - { return Decode("Rejstøík modulù"); } + { return decode("Rejstøík modulù"); } /*! This is used in LaTeX as the title of the chapter with the * class hierarchy. */ virtual QCString trHierarchicalIndex() - { return Decode("Rejstøík hierarchie tøíd"); } + { return decode("Rejstøík hierarchie tøíd"); } /*! This is used in LaTeX as the title of the chapter with the * annotated compound index. @@ -464,11 +472,11 @@ class TranslatorCzech : public Translator { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return Decode("Rejstøík datových struktur"); + return decode("Rejstøík datových struktur"); } else { - return Decode("Rejstøík tøíd"); + return decode("Rejstøík tøíd"); } } @@ -476,129 +484,125 @@ class TranslatorCzech : public Translator * list of all files. */ virtual QCString trFileIndex() - { return Decode("Rejstøík souborù"); } + { return decode("Rejstøík souborù"); } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all groups. */ virtual QCString trModuleDocumentation() - { return Decode("Dokumentace modulù"); } + { return decode("Dokumentace modulù"); } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all classes, structs and unions. */ virtual QCString trClassDocumentation() - { return Decode("Dokumentace tøíd"); } + { return decode("Dokumentace tøíd"); } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all files. */ virtual QCString trFileDocumentation() - { return Decode("Dokumentace souborù"); } + { return decode("Dokumentace souborù"); } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all examples. */ virtual QCString trExampleDocumentation() - { return Decode("Dokumentace pøíkladù"); } + { return decode("Dokumentace pøíkladù"); } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all related pages. */ virtual QCString trPageDocumentation() - { return Decode("Dokumentace souvisejících stránek"); } + { return decode("Dokumentace souvisejících stránek"); } /*! This is used in LaTeX as the title of the document */ virtual QCString trReferenceManual() - { return Decode("Referenèní pøíruèka"); } + { return decode("Referenèní pøíruèka"); } /*! This is used in the documentation of a file as a header before the * list of defines */ virtual QCString trDefines() - { return Decode("Definice maker"); } + { return decode("Definice maker"); } /*! This is used in the documentation of a file as a header before the * list of function prototypes */ virtual QCString trFuncProtos() - { return Decode("Prototypy"); } + { return decode("Prototypy"); } /*! This is used in the documentation of a file as a header before the * list of typedefs */ virtual QCString trTypedefs() - { return Decode("Definice typù"); } + { return decode("Definice typù"); } /*! This is used in the documentation of a file as a header before the * list of enumerations */ virtual QCString trEnumerations() - { return Decode("Výèty"); } + { return decode("Výèty"); } /*! This is used in the documentation of a file as a header before the * list of (global) functions */ virtual QCString trFunctions() - { return Decode("Funkce"); } + { return decode("Funkce"); } /*! This is used in the documentation of a file as a header before the * list of (global) variables */ virtual QCString trVariables() - { return Decode("Promìnné"); } + { return decode("Promìnné"); } /*! This is used in the documentation of a file as a header before the * list of (global) variables */ virtual QCString trEnumerationValues() - { return Decode("Hodnoty výètù"); } + { return decode("Hodnoty výètù"); } - /*! This is used in man pages as the author section. */ - virtual QCString trAuthor() - { return Decode("Autor"); } - /*! This is used in the documentation of a file before the list of * documentation blocks for defines */ virtual QCString trDefineDocumentation() - { return Decode("Dokumentace k definicím maker"); } + { return decode("Dokumentace k definicím maker"); } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for function prototypes */ virtual QCString trFunctionPrototypeDocumentation() - { return Decode("Dokumentace prototypù"); } + { return decode("Dokumentace prototypù"); } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for typedefs */ virtual QCString trTypedefDocumentation() - { return Decode("Dokumentace definic typù"); } + { return decode("Dokumentace definic typù"); } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration types */ virtual QCString trEnumerationTypeDocumentation() - { return Decode("Dokumentace výètových typù"); } + { return decode("Dokumentace výètových typù"); } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration values */ virtual QCString trEnumerationValueDocumentation() - { return Decode("Dokumentace výètových hodnot"); } + { return decode("Dokumentace výètových hodnot"); } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for functions */ virtual QCString trFunctionDocumentation() - { return Decode("Dokumentace funkcí"); } + { return decode("Dokumentace funkcí"); } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for variables */ virtual QCString trVariableDocumentation() - { return Decode("Dokumentace promìnných"); } + { return decode("Dokumentace promìnných"); } /*! This is used in the documentation of a file/namespace/group before * the list of links to documented compounds @@ -607,20 +611,14 @@ class TranslatorCzech : public Translator { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return Decode("Datové struktry"); + return decode("Datové struktry"); } else { - return Decode("Tøídy"); + return decode("Tøídy"); } } - /*! This is used in the documentation of a group before the list of - * links to documented files - */ - virtual QCString trFiles() - { return Decode("Soubory"); } - /*! This is used in the standard footer of each page and indicates when * the page was generated */ @@ -629,75 +627,71 @@ class TranslatorCzech : public Translator QCString result=(QCString)"Generováno "+date; if (projName) result+=(QCString)" pro projekt "+projName; result+=(QCString)" programem"; - return Decode(result); + return decode(result); } /*! This is part of the sentence used in the standard footer of each page. */ virtual QCString trWrittenBy() { - return Decode(" -- autor "); + return decode(" -- autor "); } /*! this text is put before a class diagram */ virtual QCString trClassDiagram(const char *clName) { - return Decode((QCString)"Diagram dìdiènosti pro tøídu "+clName); + return decode((QCString)"Diagram dìdiènosti pro tøídu "+clName); } /*! this text is generated when the \\internal command is used. */ virtual QCString trForInternalUseOnly() - { return Decode("Pouze pro vnitøní použití."); } + { return decode("Pouze pro vnitøní použití."); } /*! this text is generated when the \\reimp command is used. */ virtual QCString trReimplementedForInternalReasons() - { return Decode("Reimplementováno z interních dùvodù; " + { return decode("Reimplementováno z interních dùvodù; " "aplikaèní rozhraní zachováno."); } /*! this text is generated when the \\warning command is used. */ virtual QCString trWarning() - { return Decode("Pozor"); } + { return decode("Pozor"); } /*! this text is generated when the \\bug command is used. */ virtual QCString trBugsAndLimitations() - { return Decode("Chyby a omezení"); } + { return decode("Chyby a omezení"); } /*! this text is generated when the \\version command is used. */ virtual QCString trVersion() - { return Decode("Verze"); } + { return decode("Verze"); } /*! this text is generated when the \\date command is used. */ virtual QCString trDate() - { return Decode("Datum"); } - - /*! this text is generated when the \\author command is used. */ - virtual QCString trAuthors() - { return Decode("Autor/autoøi"); } + { return decode("Datum"); } /*! this text is generated when the \\return command is used. */ virtual QCString trReturns() - { return Decode("Návratová hodnota"); } + { return decode("Návratová hodnota"); } /*! this text is generated when the \\sa command is used. */ virtual QCString trSeeAlso() - { return Decode("Viz také"); } + { return decode("Viz také"); } /*! this text is generated when the \\param command is used. */ virtual QCString trParameters() - { return Decode("Parametry"); } + { return decode("Parametry"); } /*! this text is generated when the \\exception command is used. */ virtual QCString trExceptions() - { return Decode("Výjimky"); } + { return decode("Výjimky"); } /*! this text is used in the title page of a LaTeX document. */ virtual QCString trGeneratedBy() - { return Decode("Generováno programem"); } + { return decode("Generováno programem"); } // new since 0.49-990307 /*! used as the title of page containing all the index of all namespaces. */ virtual QCString trNamespaceList() - { return Decode("Seznam prostorù jmen"); } + { return decode("Seznam prostorù jmen"); } /*! used as an introduction to the namespace list */ virtual QCString trNamespaceListDescription(bool extractAll) @@ -705,14 +699,14 @@ class TranslatorCzech : public Translator QCString result="Zde naleznete seznam všech "; if (!extractAll) result+="dokumentovaných "; result+="prostorù jmen se struèným popisem:"; - return Decode(result); + return decode(result); } /*! used in the class documentation as a header before the list of all * friends of a class */ virtual QCString trFriends() - { return Decode("Friends"); } + { return decode("Friends"); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990405 @@ -722,7 +716,7 @@ class TranslatorCzech : public Translator * related classes */ virtual QCString trRelatedFunctionDocumentation() - { return Decode("Dokumentace k friends"); } + { return decode("Dokumentace k friends"); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990425 @@ -744,7 +738,7 @@ class TranslatorCzech : public Translator case ClassDef::Exception: result+="výjimky "; break; } result+=clName; - return Decode(result); + return decode(result); } /*! used as the title of the HTML page of a file */ @@ -752,7 +746,7 @@ class TranslatorCzech : public Translator { QCString result("Dokumentace souboru "); result+=fileName; - return Decode(result); + return decode(result); } /*! used as the title of the HTML page of a namespace */ @@ -760,32 +754,32 @@ class TranslatorCzech : public Translator { QCString result("Dokumentace prostoru jmen "); result+=namespaceName; - return Decode(result); + return decode(result); } /*! \mgroup Class sections * these are for the member sections of a class, struct or union */ virtual QCString trPublicMembers() - { return Decode("Veøejné metody"); } + { return decode("Veøejné metody"); } virtual QCString trPublicSlots() - { return Decode("Veøejné sloty"); } + { return decode("Veøejné sloty"); } virtual QCString trSignals() - { return Decode("Signály"); } + { return decode("Signály"); } virtual QCString trStaticPublicMembers() - { return Decode("Statické veøejné metody"); } + { return decode("Statické veøejné metody"); } virtual QCString trProtectedMembers() - { return Decode("Chránìné metody"); } + { return decode("Chránìné metody"); } virtual QCString trProtectedSlots() - { return Decode("Chránìné sloty"); } + { return decode("Chránìné sloty"); } virtual QCString trStaticProtectedMembers() - { return Decode("Statické chránìné metody"); } + { return decode("Statické chránìné metody"); } virtual QCString trPrivateMembers() - { return Decode("Privátní metody"); } + { return decode("Privátní metody"); } virtual QCString trPrivateSlots() - { return Decode("Privátní sloty"); } + { return decode("Privátní sloty"); } virtual QCString trStaticPrivateMembers() - { return Decode("Statické privátní metody"); } + { return decode("Statické privátní metody"); } /*! \endmgroup */ /*! this function is used to produce a comma-separated list of items. @@ -810,7 +804,7 @@ class TranslatorCzech : public Translator result+=" a "; } } - return Decode(result); + return decode(result); } /*! used in class documentation to produce a list of base classes, @@ -821,7 +815,7 @@ class TranslatorCzech : public Translator QCString result("Dìdí z "); result += (numEntries == 1) ? "bázové tøídy " : "bázových tøíd "; result += trWriteList(numEntries)+"."; - return Decode(result); + return decode(result); } /*! used in class documentation to produce a list of super classes, @@ -832,7 +826,7 @@ class TranslatorCzech : public Translator QCString result("Zdìdìna "); result += (numEntries == 1) ? "tøídou " : "tøídami "; result += trWriteList(numEntries)+"."; - return Decode(result); + return decode(result); } /*! used in member documentation blocks to produce a list of @@ -843,7 +837,7 @@ class TranslatorCzech : public Translator QCString result("Reimplementuje "); result += (numEntries == 1) ? "metodu tøídy " : "metody tøíd "; result += trWriteList(numEntries)+"."; - return Decode(result); + return decode(result); } /*! used in member documentation blocks to produce a list of @@ -854,12 +848,12 @@ class TranslatorCzech : public Translator QCString result("Reimplementováno "); result += (numEntries == 1) ? "tøídou " : "tøídami "; result += trWriteList(numEntries)+"."; - return Decode(result); + return decode(result); } /*! This is put above each page as a link to all members of namespaces. */ virtual QCString trNamespaceMembers() - { return Decode("Symboly v prostorech jmen"); } + { return decode("Symboly v prostorech jmen"); } /*! This is an introduction to the page with all namespace members */ virtual QCString trNamespaceMemberDescription(bool extractAll) @@ -872,19 +866,19 @@ class TranslatorCzech : public Translator result+="dokumentaci pøíslušného prostoru jmen:"; else result+="pøíslušný prostor jmen:"; - return Decode(result); + return decode(result); } /*! This is used in LaTeX as the title of the chapter with the * index of all namespaces. */ virtual QCString trNamespaceIndex() - { return Decode("Rejstøík prostorù jmen"); } + { return decode("Rejstøík prostorù jmen"); } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all namespaces. */ virtual QCString trNamespaceDocumentation() - { return Decode("Dokumentace prostorù jmen"); } + { return decode("Dokumentace prostorù jmen"); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990522 @@ -894,7 +888,7 @@ class TranslatorCzech : public Translator * namespaces in a file. */ virtual QCString trNamespaces() - { return Decode("Prostory jmen"); } + { return decode("Prostory jmen"); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990728 @@ -919,14 +913,14 @@ class TranslatorCzech : public Translator result+=" byla generována z "; if (single) result+="následujícího souboru:"; else result+="následujících souborù:"; - return Decode(result); + return decode(result); } /*! This is in the (quick) index as a link to the alphabetical compound * list. */ virtual QCString trAlphabeticalList() - { return Decode("Rejstøík tøíd"); } + { return decode("Rejstøík tøíd"); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990901 @@ -934,18 +928,18 @@ class TranslatorCzech : public Translator /*! This is used as the heading text for the retval command. */ virtual QCString trReturnValues() - { return Decode("Vracené hodnoty"); } + { return decode("Vracené hodnoty"); } /*! This is in the (quick) index as a link to the main page (index.html) */ virtual QCString trMainPage() - { return Decode("Hlavní stránka"); } + { return decode("Hlavní stránka"); } /*! This is used in references to page that are put in the LaTeX * documentation. It should be an abbreviation of the word page. */ virtual QCString trPageAbbreviation() - { return Decode("s."); } + { return decode("s."); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-991003 @@ -953,15 +947,15 @@ class TranslatorCzech : public Translator virtual QCString trSources() { - return Decode("Zdroje"); + return decode("Zdroje"); } virtual QCString trDefinedAtLineInSourceFile() { - return Decode("Definice je uvedena na øádku @0 v souboru @1."); + return decode("Definice je uvedena na øádku @0 v souboru @1."); } virtual QCString trDefinedInSourceFile() { - return Decode("Definice v souboru @0."); + return decode("Definice v souboru @0."); } ////////////////////////////////////////////////////////////////////////// @@ -970,7 +964,7 @@ class TranslatorCzech : public Translator virtual QCString trDeprecated() { - return Decode("Zastaralé"); + return decode("Zastaralé"); } ////////////////////////////////////////////////////////////////////////// @@ -980,69 +974,69 @@ class TranslatorCzech : public Translator /*! this text is put before a collaboration diagram */ virtual QCString trCollaborationDiagram(const char *clName) { - return Decode((QCString)"Diagram tøíd pro "+clName+":"); + return decode((QCString)"Diagram tøíd pro "+clName+":"); } /*! this text is put before an include dependency graph */ virtual QCString trInclDepGraph(const char *fName) { - return Decode((QCString)"Graf závislostí na vkládaných souborech " + return decode((QCString)"Graf závislostí na vkládaných souborech " "pro "+fName+":"); } /*! header that is put before the list of constructor/destructors. */ virtual QCString trConstructorDocumentation() { - return Decode("Dokumentace konstruktoru a destruktoru"); + return decode("Dokumentace konstruktoru a destruktoru"); } /*! Used in the file documentation to point to the corresponding sources. */ virtual QCString trGotoSourceCode() { - return Decode("Zobrazit zdrojový text tohoto souboru."); + return decode("Zobrazit zdrojový text tohoto souboru."); } /*! Used in the file sources to point to the corresponding documentation. */ virtual QCString trGotoDocumentation() { - return Decode("Zobrazit dokumentaci tohoto souboru."); + return decode("Zobrazit dokumentaci tohoto souboru."); } /*! Text for the \pre command */ virtual QCString trPrecondition() { - return Decode("Precondition"); + return decode("Precondition"); } /*! Text for the \post command */ virtual QCString trPostcondition() { - return Decode("Postcondition"); + return decode("Postcondition"); } /*! Text for the \invariant command */ virtual QCString trInvariant() { - return Decode("Invariant"); + return decode("Invariant"); } /*! Text shown before a multi-line variable/enum initialization */ virtual QCString trInitialValue() { - return Decode("Initializer:"); + return decode("Initializer:"); } /*! Text used the source code in the file index */ virtual QCString trCode() { - return Decode("zdrojový text"); + return decode("zdrojový text"); } virtual QCString trGraphicalHierarchy() { - return Decode("Grafické zobrazení hierarchie tøíd"); + return decode("Grafické zobrazení hierarchie tøíd"); } virtual QCString trGotoGraphicalHierarchy() { - return Decode("Zobrazit grafickou podobu hierarchie tøíd"); + return decode("Zobrazit grafickou podobu hierarchie tøíd"); } virtual QCString trGotoTextualHierarchy() { - return Decode("Zobrazit textovou podobu hierarchie tøíd"); + return decode("Zobrazit textovou podobu hierarchie tøíd"); } virtual QCString trPageIndex() { - return Decode("Rejstøík stránek"); + return decode("Rejstøík stránek"); } ////////////////////////////////////////////////////////////////////////// @@ -1051,50 +1045,50 @@ class TranslatorCzech : public Translator virtual QCString trNote() { - return Decode("Poznámka"); + return decode("Poznámka"); } virtual QCString trPublicTypes() { - return Decode("Veøejné typy"); + return decode("Veøejné typy"); } virtual QCString trPublicAttribs() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return Decode("Datové položky"); + return decode("Datové položky"); } else { - return Decode("Veøejné atributy"); + return decode("Veøejné atributy"); } } virtual QCString trStaticPublicAttribs() { - return Decode("Statické veøejné atributy"); + return decode("Statické veøejné atributy"); } virtual QCString trProtectedTypes() { - return Decode("Chránìné typy"); + return decode("Chránìné typy"); } virtual QCString trProtectedAttribs() { - return Decode("Chránìné atributy"); + return decode("Chránìné atributy"); } virtual QCString trStaticProtectedAttribs() { - return Decode("Statické chránìné atributy"); + return decode("Statické chránìné atributy"); } virtual QCString trPrivateTypes() { - return Decode("Privátní typy"); + return decode("Privátní typy"); } virtual QCString trPrivateAttribs() { - return Decode("Privátní atributy"); + return decode("Privátní atributy"); } virtual QCString trStaticPrivateAttribs() { - return Decode("Statické privátní atributy"); + return decode("Statické privátní atributy"); } ////////////////////////////////////////////////////////////////////////// @@ -1104,12 +1098,12 @@ class TranslatorCzech : public Translator /*! Used as a marker that is put before a todo item */ virtual QCString trTodo() { - return Decode("Plánované úpravy"); + return decode("Plánované úpravy"); } /*! Used as the header of the todo list */ virtual QCString trTodoList() { - return Decode("Seznam plánovaných úprav"); + return decode("Seznam plánovaných úprav"); } ////////////////////////////////////////////////////////////////////////// @@ -1118,24 +1112,24 @@ class TranslatorCzech : public Translator virtual QCString trReferencedBy() { - return Decode("Používá se v"); + return decode("Používá se v"); } virtual QCString trRemarks() { - return Decode("Poznámky"); // ??? not checked in a context + return decode("Poznámky"); // ??? not checked in a context } virtual QCString trAttention() { - return Decode("Upozornìní"); // ??? not checked in a context + return decode("Upozornìní"); // ??? not checked in a context } virtual QCString trInclByDepGraph() { - return Decode("Následující graf ukazuje, které soubory pøímo nebo " + return decode("Následující graf ukazuje, které soubory pøímo nebo " "nepøímo vkládají tento soubor:"); } virtual QCString trSince() { - return Decode("Od"); // ??? not checked in a context + return decode("Od"); // ??? not checked in a context } //////////////////////////////////////////////////////////////////////////// @@ -1145,7 +1139,7 @@ class TranslatorCzech : public Translator /*! title of the graph legend page */ virtual QCString trLegendTitle() { - return Decode("Vysvìtlivky ke grafu"); + return decode("Vysvìtlivky ke grafu"); } /*! page explaining how the dot graph's should be interpreted */ virtual QCString trLegendDocs() @@ -1214,12 +1208,12 @@ class TranslatorCzech : public Translator "je tøída nebo struktura zpøístupnìna.\n" "</ul>\n"); - return Decode(result); + return decode(result); } /*! text for the link to the legend page */ virtual QCString trLegend() { - return Decode("vysvìtlivky"); + return decode("vysvìtlivky"); } ////////////////////////////////////////////////////////////////////////// @@ -1229,13 +1223,13 @@ class TranslatorCzech : public Translator /*! Used as a marker that is put before a test item */ virtual QCString trTest() { - return Decode("Test"); + return decode("Test"); } /*! Used as the header of the test list */ virtual QCString trTestList() { - return Decode("Seznam testù"); + return decode("Seznam testù"); } ////////////////////////////////////////////////////////////////////////// @@ -1245,7 +1239,7 @@ class TranslatorCzech : public Translator /*! Used as a section header for KDE-2 IDL methods */ virtual QCString trDCOPMethods() { - return Decode("Metody DCOP"); + return decode("Metody DCOP"); } ////////////////////////////////////////////////////////////////////////// @@ -1255,12 +1249,12 @@ class TranslatorCzech : public Translator /*! Used as a section header for IDL properties */ virtual QCString trProperties() { - return Decode("Vlastnosti"); + return decode("Vlastnosti"); } /*! Used as a section header for IDL property documentation */ virtual QCString trPropertyDocumentation() { - return Decode("Dokumentace k vlastnosti"); + return decode("Dokumentace k vlastnosti"); } ////////////////////////////////////////////////////////////////////////// // new since 1.2.4 @@ -1269,43 +1263,43 @@ class TranslatorCzech : public Translator /*! Used for Java interfaces in the summary section of Java packages */ virtual QCString trInterfaces() { - return Decode("Rozhraní"); + return decode("Rozhraní"); } /*! Used for Java classes in the summary section of Java packages */ virtual QCString trClasses() { - return Decode("Tøídy"); + return decode("Tøídy"); } /*! Used as the title of a Java package */ virtual QCString trPackage(const char *name) { - return Decode((QCString)"Balík "+name); + return decode((QCString)"Balík "+name); } /*! Title of the package index page */ virtual QCString trPackageList() { - return Decode("Seznam balíkù"); + return decode("Seznam balíkù"); } /*! The description of the package index page */ virtual QCString trPackageListDescription() { - return Decode("Zde naleznete seznam balíkù se struèným popisem " + return decode("Zde naleznete seznam balíkù se struèným popisem " "(pokud byl uveden):"); } /*! The link name in the Quick links header for each page */ virtual QCString trPackages() { - return Decode("Balíky"); + return decode("Balíky"); } /*! Used as a chapter title for Latex & RTF output */ virtual QCString trPackageDocumentation() { - return Decode("Dokumentace balíku"); + return decode("Dokumentace balíku"); } /*! Text shown before a multi-line define */ virtual QCString trDefineValue() { - return Decode("Hodnota:"); + return decode("Hodnota:"); } ////////////////////////////////////////////////////////////////////////// @@ -1315,12 +1309,12 @@ class TranslatorCzech : public Translator /*! Used as a marker that is put before a \\bug item */ virtual QCString trBug() { - return Decode("Chyba"); + return decode("Chyba"); } /*! Used as the header of the bug list */ virtual QCString trBugList() { - return Decode("Seznam chyb"); + return decode("Seznam chyb"); } ////////////////////////////////////////////////////////////////////////// @@ -1336,13 +1330,13 @@ class TranslatorCzech : public Translator /*! Used as ansicpg for RTF fcharset */ virtual QCString trRTFCharSet() { - return "0"; //??? + return "238"; } /*! Used as header RTF general index */ virtual QCString trRTFGeneralIndex() { - return "Index"; //??? + return decode("Rejstøík"); } /*! This is used for translation of the word that will possibly @@ -1353,7 +1347,7 @@ class TranslatorCzech : public Translator { QCString result((first_capital ? "Tøíd" : "tøíd")); result+=(singular ? "a" : "y"); - return Decode(result); + return decode(result); } /*! This is used for translation of the word that will possibly @@ -1364,7 +1358,7 @@ class TranslatorCzech : public Translator { QCString result((first_capital ? "Soubor" : "soubor")); if (!singular) result+="y"; - return Decode(result); + return decode(result); } /*! This is used for translation of the word that will possibly @@ -1376,7 +1370,7 @@ class TranslatorCzech : public Translator QCString result((first_capital ? "Prostor" : "prostor")); if (!singular) result+="y"; result+=" jmen"; - return Decode(result); + return decode(result); } /*! This is used for translation of the word that will possibly @@ -1387,7 +1381,7 @@ class TranslatorCzech : public Translator { QCString result((first_capital ? "Skupin" : "skupin")); result+=(singular ? "a" : "y"); - return Decode(result); + return decode(result); } /*! This is used for translation of the word that will possibly @@ -1398,7 +1392,7 @@ class TranslatorCzech : public Translator { QCString result((first_capital ? "Stránk" : "stránk")); result+=(singular ? "a" : "y"); - return Decode(result); + return decode(result); } /*! This is used for translation of the word that will possibly @@ -1409,7 +1403,7 @@ class TranslatorCzech : public Translator { QCString result((first_capital ? "Èlen" : "èlen")); if (!singular) result+="y"; - return Decode(result); + return decode(result); } /*! This is used for translation of the word that will possibly @@ -1420,7 +1414,7 @@ class TranslatorCzech : public Translator { QCString result((first_capital ? "Položk" : "položk")); result+=(singular ? "a" : "y"); - return Decode(result); + return decode(result); } /*! ??? Jak to prelozit? Bylo by dobre, kdyby se ozval nekdo, @@ -1432,6 +1426,20 @@ class TranslatorCzech : public Translator if (!singular) result+="s"; return result; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.7 +////////////////////////////////////////////////////////////////////////// + + /*! This text is generated when the \\author command is used and + * for the author section in man pages. */ + virtual QCString trAuthor(bool first_capital, bool singular) + { + QCString result((first_capital ? "Auto" : "auto")); + result += (singular) ? "r" : "øi"; + return decode(result); + } + }; #endif // TRANSLATOR_CZ_H diff --git a/src/translator_de.h b/src/translator_de.h index 9a65fe2..f926ac6 100644 --- a/src/translator_de.h +++ b/src/translator_de.h @@ -37,6 +37,14 @@ // this makes it easier to read and fixes three problems (two in // \code segment) // +// 2001/04/23 Jens Seidel (jensseidel@users.sourceforge.net) +// - Update for "new since 1.2.6-20010422" version +// +// 2001/05/06 Jens Seidel (jensseidel@users.sourceforge.net) +// - Update for "new since 1.2.7" version +// - Removed implementation of latexBabelPackage(), trVerbatimText(), +// trFiles(), added latexLanguageSupportCommand(). +// // Todo: // - translation of all Config_getBool("OPTIMIZE_OUTPUT_FOR_C") // strings (see translator.h) @@ -50,144 +58,161 @@ #ifndef TRANSLATOR_DE_H #define TRANSLATOR_DE_H -#include "translator_adapter.h" +#include "translator.h" -class TranslatorGerman : public TranslatorAdapter_1_2_6 +class TranslatorGerman : public TranslatorAdapterCVS { public: - QCString idLanguage() - { return "german"; } - QCString latexBabelPackage() - // returns the name of the package that is included by LaTeX + // --- Language control methods ------------------- + + /* Used for identification of the language. The identification + * should not be translated. It should be replaced by the name + * of the language in English using lower-case characters only + * (e.g. "czech", "japanese", "russian", etc.). It should be equal to + * the identification used in language.cpp. + */ + virtual QCString idLanguage() { return "german"; } - QCString trRelatedFunctions() - // used in the compound documentation before a list of related functions. + /* Used to get the LaTeX command(s) for the language support. This method + * was designed for languages which do wish to use a babel package. + */ + virtual QCString latexLanguageSupportCommand() + { + return "\\usepackage{german}\n"; + } + + /* return the language charset. This will be used for the HTML output */ + virtual QCString idLanguageCharset() + { + return "iso-8859-1"; + } + + // --- Language translation methods ------------------- + + /* used in the compound documentation before a list of related functions. */ + virtual QCString trRelatedFunctions() { return "Verwandte Funktionen"; } - QCString trRelatedSubscript() - // subscript for the related functions. + /* subscript for the related functions. */ + virtual QCString trRelatedSubscript() { return "(Es handelt sich hierbei nicht um Elementfunktionen.)"; } - QCString trDetailedDescription() - // header that is put before the detailed description of files, classes and namespaces. + /* header that is put before the detailed description of files, classes and namespaces. */ + virtual QCString trDetailedDescription() { return "Ausführliche Beschreibung"; } - QCString trMemberTypedefDocumentation() - // header that is put before the list of typedefs. + /* header that is put before the list of typedefs. */ + virtual QCString trMemberTypedefDocumentation() { return "Dokumentation der benutzerdefinierten Datentypen"; } - QCString trMemberEnumerationDocumentation() - // header that is put before the list of enumerations. + /* header that is put before the list of enumerations. */ + virtual QCString trMemberEnumerationDocumentation() { return "Dokumentation der Aufzählungstypen"; } - QCString trMemberFunctionDocumentation() - // header that is put before the list of member functions. + /* header that is put before the list of member functions. */ + virtual QCString trMemberFunctionDocumentation() { return "Dokumentation der Elementfunktionen"; } - QCString trMemberDataDocumentation() - // header that is put before the list of member attributes. + /* header that is put before the list of member attributes. */ + virtual QCString trMemberDataDocumentation() { return "Dokumentation der Datenelemente"; } - QCString trMore() - // this is the text of a link put after brief descriptions. + /* this is the text of a link put after brief descriptions. */ + virtual QCString trMore() { return "Mehr..."; } - QCString trListOfAllMembers() - // put in the class documentation + /* put in the class documentation */ + virtual QCString trListOfAllMembers() { return "Aufstellung aller Elemente"; } - QCString trMemberList() - // used as the title of the "list of all members" page of a class + /* used as the title of the "list of all members" page of a class */ + virtual QCString trMemberList() { return "Elementverzeichnis"; } - QCString trThisIsTheListOfAllMembers() - // this is the first part of a sentence that is followed by a class name + /* this is the first part of a sentence that is followed by a class name */ + virtual QCString trThisIsTheListOfAllMembers() { return "Vollständige Aufstellung aller Elemente für "; } - QCString trIncludingInheritedMembers() - // this is the remainder of the sentence after the class name + /* this is the remainder of the sentence after the class name */ + virtual QCString trIncludingInheritedMembers() { return " einschließlich aller geerbten Elemente."; } - QCString trGeneratedAutomatically(const char *s) - // this is put at the author sections at the bottom of man pages. - // parameter s is name of the project name. + /* this is put at the author sections at the bottom of man pages. + * parameter s is name of the project name. + */ + virtual QCString trGeneratedAutomatically(const char *s) { QCString result="Automatisch erzeugt von Doxygen"; if (s) result+=(QCString)" für "+s; result+=" aus dem Quellcode."; return result; } - QCString trEnumName() - // put after an enum name in the list of all members + /* put after an enum name in the list of all members */ + virtual QCString trEnumName() { return "enum Bezeichner"; } - QCString trEnumValue() - // put after an enum value in the list of all members + /* put after an enum value in the list of all members */ + virtual QCString trEnumValue() { return "enum Wert"; } - QCString trDefinedIn() - // put after an undocumented member in the list of all members + /* put after an undocumented member in the list of all members */ + virtual QCString trDefinedIn() { return "Definiert in"; } - QCString trVerbatimText(const char *f) - // put as in introduction in the verbatim header file of a class. - // parameter f is the name of the include file. - { return (QCString)"Dieses ist der unveränderte Text aus der " - "Include-Datei "+f+"."; } - // quick reference sections - QCString trModules() - // This is put above each page as a link to the list of all groups of - // compounds or files (see the \group command). + /* This is put above each page as a link to the list of all groups of + * compounds or files (see the \group command). + */ + virtual QCString trModules() { return "Module"; } - QCString trClassHierarchy() - // This is put above each page as a link to the class hierarchy + /* This is put above each page as a link to the class hierarchy */ + virtual QCString trClassHierarchy() { return "Klassenhierarchie"; } - QCString trCompoundList() - // This is put above each page as a link to the list of annotated classes + /* This is put above each page as a link to the list of annotated classes */ + virtual QCString trCompoundList() { return "Übersicht"; } - QCString trFileList() - // This is put above each page as a link to the list of documented files + /* This is put above each page as a link to the list of documented files */ + virtual QCString trFileList() { return "Auflistung der Dateien"; } - QCString trHeaderFiles() - // This is put above each page as a link to the list of all verbatim headers + /* This is put above each page as a link to the list of all verbatim headers */ + virtual QCString trHeaderFiles() { return "Auflistung der Header-Dateien"; } - QCString trCompoundMembers() - // This is put above each page as a link to all members of compounds. + /* This is put above each page as a link to all members of compounds. */ + virtual QCString trCompoundMembers() { return "Elementübersicht"; } - QCString trFileMembers() - // This is put above each page as a link to all members of files. + /* This is put above each page as a link to all members of files. */ + virtual QCString trFileMembers() { return "Datei-Elemente"; } - QCString trRelatedPages() - // This is put above each page as a link to all related pages. + /* This is put above each page as a link to all related pages. */ + virtual QCString trRelatedPages() { return "Zusätzliche Informationen"; } - QCString trExamples() - // This is put above each page as a link to all examples. + /* This is put above each page as a link to all examples. */ + virtual QCString trExamples() { return "Beispiele"; } - QCString trSearch() - // This is put above each page as a link to the search engine. + /* This is put above each page as a link to the search engine. */ + virtual QCString trSearch() { return "Suchen"; } - QCString trClassHierarchyDescription() - // This is an introduction to the class hierarchy. + /* This is an introduction to the class hierarchy. */ + virtual QCString trClassHierarchyDescription() { return "Die Liste der Ableitungen ist -mit Einschränkungen- " "alphabetisch sortiert:"; } - QCString trFileListDescription(bool extractAll) - // This is an introduction to the list with all files. + /* This is an introduction to the list with all files. */ + virtual QCString trFileListDescription(bool extractAll) { QCString result="Hier folgt die Aufzählung aller "; if (!extractAll) result+="dokumentierten "; @@ -195,8 +220,8 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 return result; } - QCString trCompoundListDescription() - // This is an introduction to the annotated compound list + /* This is an introduction to the annotated compound list. */ + virtual QCString trCompoundListDescription() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) return "Hier folgt die Aufzählung aller Datenstrukturen " @@ -206,8 +231,8 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 "und Varianten mit einer Kurzbeschreibung:"; // FIXME: "interfaces" = ?? } - QCString trCompoundMembersDescription(bool extractAll) - // This is an introduction to the page with all class members + /* This is an introduction to the page with all class members. */ + virtual QCString trCompoundMembersDescription(bool extractAll) { QCString result="Hier folgt die Aufzählung aller "; if (!extractAll) result+="dokumentierten "; @@ -229,8 +254,8 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 return result; } - QCString trFileMembersDescription(bool extractAll) - // This is an introduction to the page with all file members + /* This is an introduction to the page with all file members. */ + virtual QCString trFileMembersDescription(bool extractAll) { QCString result="Hier folgt die Aufzählung aller "; if (!extractAll) result+="dokumentierten "; @@ -240,46 +265,50 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 return result; } - QCString trHeaderFilesDescription() - // This is an introduction to the page with the list of all header files + /* This is an introduction to the page with the list of all header files. */ + virtual QCString trHeaderFilesDescription() { return "Hier folgen die Headerdateien, welche die API definieren:"; } - QCString trExamplesDescription() - // This is an introduction to the page with the list of all examples + /* This is an introduction to the page with the list of all examples */ + virtual QCString trExamplesDescription() { return "Hier folgt eine Liste mit allen Beispielen:"; } - QCString trRelatedPagesDescription() - // This is an introduction to the page with the list of related pages + /* This is an introduction to the page with the list of related pages */ + virtual QCString trRelatedPagesDescription() { return "Hier folgt eine Liste mit zusammengehörigen Themengebieten:"; } - QCString trModulesDescription() - // This is an introduction to the page with the list of class/file groups + /* This is an introduction to the page with the list of class/file groups */ + virtual QCString trModulesDescription() { return "Hier folgt die Aufzählung aller Module:"; } - QCString trNoDescriptionAvailable() - // This sentences is used in the annotated class/file lists if no brief - // description is given. + /* This sentences is used in the annotated class/file lists if no brief + * description is given. + */ + virtual QCString trNoDescriptionAvailable() { return "Keine Beschreibung verfügbar"; } // index titles (the project name is prepended for these) - - QCString trDocumentation() - // This is used in HTML as the title of index.html. + + /* This is used in HTML as the title of index.html. */ + virtual QCString trDocumentation() { return "Dokumentation"; } - QCString trModuleIndex() - // This is used in LaTeX as the title of the chapter with the - // index of all groups. + /* This is used in LaTeX as the title of the chapter with the + * index of all groups. + */ + virtual QCString trModuleIndex() { return "Modul-Verzeichnis"; } - QCString trHierarchicalIndex() - // This is used in LaTeX as the title of the chapter with the - // class hierarchy. + /* This is used in LaTeX as the title of the chapter with the + * class hierarchy. + */ + virtual QCString trHierarchicalIndex() { return "Hierarchie-Verzeichnis"; } - QCString trCompoundIndex() - // This is used in LaTeX as the title of the chapter with the - // annotated compound index + /* This is used in LaTeX as the title of the chapter with the + * annotated compound index. + */ + virtual QCString trCompoundIndex() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) return "Datenstruktur-Verzeichnis"; @@ -287,125 +316,144 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 return "Datenstruktur-Verzeichnis"; // FIXME: war compound } - QCString trFileIndex() - // This is used in LaTeX as the title of the chapter with the - // list of all files. + /* This is used in LaTeX as the title of the chapter with the + * list of all files. + */ + virtual QCString trFileIndex() { return "Datei-Verzeichnis"; } - QCString trModuleDocumentation() - // This is used in LaTeX as the title of the chapter containing - // the documentation of all groups. + /* This is used in LaTeX as the title of the chapter containing + * the documentation of all groups. + */ + virtual QCString trModuleDocumentation() { return "Modul-Dokumentation"; } - QCString trClassDocumentation() - // This is used in LaTeX as the title of the chapter containing - // the documentation of all classes, structs and unions. + /* This is used in LaTeX as the title of the chapter containing + * the documentation of all classes, structs and unions. + */ + virtual QCString trClassDocumentation() { return "Klassen-Dokumentation"; } - QCString trFileDocumentation() - // This is used in LaTeX as the title of the chapter containing - // the documentation of all files. + /* This is used in LaTeX as the title of the chapter containing + * the documentation of all files. + */ + virtual QCString trFileDocumentation() { return "Datei-Dokumentation"; } - QCString trExampleDocumentation() - // This is used in LaTeX as the title of the chapter containing - // the documentation of all examples. + /* This is used in LaTeX as the title of the chapter containing + * the documentation of all examples. + */ + virtual QCString trExampleDocumentation() { return "Dokumentation der Beispiele"; } - QCString trPageDocumentation() - // This is used in LaTeX as the title of the chapter containing - // the documentation of all related pages. + /* This is used in LaTeX as the title of the chapter containing + * the documentation of all related pages. + */ + virtual QCString trPageDocumentation() { return "Zusätzliche Informationen"; } - QCString trReferenceManual() - // This is used in LaTeX as the title of the document + /* This is used in LaTeX as the title of the document */ + virtual QCString trReferenceManual() { return "Nachschlagewerk"; } - QCString trDefines() - // This is used in the documentation of a file as a header before the - // list of defines + /* This is used in the documentation of a file as a header before the + * list of defines + */ + virtual QCString trDefines() { return "Makrodefinitionen"; } - QCString trFuncProtos() - // This is used in the documentation of a file as a header before the - // list of function prototypes + /* This is used in the documentation of a file as a header before the + * list of function prototypes + */ + virtual QCString trFuncProtos() { return "Funktionsprototypen"; } - QCString trTypedefs() - // This is used in the documentation of a file as a header before the - // list of typedefs + /* This is used in the documentation of a file as a header before the + * list of typedefs + */ + virtual QCString trTypedefs() { return "Typendefinitionen"; } - QCString trEnumerations() - // This is used in the documentation of a file as a header before the - // list of enumerations + /* This is used in the documentation of a file as a header before the + * list of enumerations + */ + virtual QCString trEnumerations() { return "Aufzählungen"; } - QCString trFunctions() - // This is used in the documentation of a file as a header before the - // list of (global) functions + /* This is used in the documentation of a file as a header before the + * list of (global) functions + */ + virtual QCString trFunctions() { return "Funktionen"; } - QCString trVariables() - // This is used in the documentation of a file as a header before the - // list of (global) variables + /* This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trVariables() { return "Variablen"; } - QCString trEnumerationValues() - // This is used in the documentation of a file as a header before the - // list of (global) variables + /* This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trEnumerationValues() { return "Aufzählungswerte"; } - QCString trAuthor() - // This is used in man pages as the author section. + /* This is used in man pages as the author section. */ + virtual QCString trAuthor() { return "Autor"; } - QCString trDefineDocumentation() - // This is used in the documentation of a file before the list of - // documentation blocks for defines + /* This is used in the documentation of a file before the list of + * documentation blocks for defines + */ + virtual QCString trDefineDocumentation() { return "Makro-Dokumentation"; } - QCString trFunctionPrototypeDocumentation() - // This is used in the documentation of a file/namespace before the list - // of documentation blocks for function prototypes + /* This is used in the documentation of a file/namespace before the list + * of documentation blocks for function prototypes + */ + virtual QCString trFunctionPrototypeDocumentation() { return "Funktionsprototypen Dokumentation"; } - QCString trTypedefDocumentation() - // This is used in the documentation of a file/namespace before the list - // of documentation blocks for typedefs + /* This is used in the documentation of a file/namespace before the list + * of documentation blocks for typedefs + */ + virtual QCString trTypedefDocumentation() { return "Dokumentation der benutzerdefinerten Typen"; } - QCString trEnumerationTypeDocumentation() - // This is used in the documentation of a file/namespace before the list - // of documentation blocks for enumeration types + /* This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration types + */ + virtual QCString trEnumerationTypeDocumentation() { return "Dokumentation der Aufzählungstypen"; } - QCString trEnumerationValueDocumentation() - // This is used in the documentation of a file/namespace before the list - // of documentation blocks for enumeration values + /* This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration values + */ + virtual QCString trEnumerationValueDocumentation() { return "Dokumentation des Wertebereiches der Aufzählungstypen"; } - QCString trFunctionDocumentation() - // This is used in the documentation of a file/namespace before the list - // of documentation blocks for functions + /* This is used in the documentation of a file/namespace before the list + * of documentation blocks for functions + */ + virtual QCString trFunctionDocumentation() { return "Dokumentation der Funktionen"; } - QCString trVariableDocumentation() - // This is used in the documentation of a file/namespace before the list - // of documentation blocks for variables + /* This is used in the documentation of a file/namespace before the list + * of documentation blocks for variables + */ + virtual QCString trVariableDocumentation() { return "Variablen-Dokumentation"; } - QCString trCompounds() - // This is used in the documentation of a file/namespace/group before - // the list of links to documented compounds + /* This is used in the documentation of a file/namespace/group before + * the list of links to documented compounds + */ + virtual QCString trCompounds() { return "Übersicht"; } - QCString trFiles() - // This is used in the documentation of a group before the list of - // links to documented files - { return "Dateien"; } - - QCString trGeneratedAt(const char *date,const char *projName) + /* This is used in the standard footer of each page and indicates when + * the page was generated + */ + virtual QCString trGeneratedAt(const char *date,const char *projName) { QCString result=(QCString)"Erzeugt am "+date; if (projName) result+=(QCString)" für "+projName; @@ -413,76 +461,78 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 return result; } - QCString trWrittenBy() + /* This is part of the sentence used in the standard footer of each page. + */ + virtual QCString trWrittenBy() { return "geschrieben von"; } - QCString trClassDiagram(const char *clName) - // this text is put before a class diagram + /* this text is put before a class diagram */ + virtual QCString trClassDiagram(const char *clName) { - return (QCString)"Klassendiagramm für "+clName; + return (QCString)"Klassendiagramm für "+clName+":"; } - QCString trForInternalUseOnly() - // this text is generated when the \internal command is used. + /* this text is generated when the \internal command is used. */ + virtual QCString trForInternalUseOnly() { return "Nur für den internen Gebrauch."; } - QCString trReimplementedForInternalReasons() - // this text is generated when the \reimp command is used. + /* this text is generated when the \reimp command is used. */ + virtual QCString trReimplementedForInternalReasons() { return "Aus internen Gründen neu implementiert. " "Das API wird davon nicht berührt."; } - QCString trWarning() - // this text is generated when the \warning command is used. + /* this text is generated when the \warning command is used. */ + virtual QCString trWarning() { return "Warnung"; } - QCString trBugsAndLimitations() - // this text is generated when the \bug command is used. + /* this text is generated when the \bug command is used. */ + virtual QCString trBugsAndLimitations() { return "Fehler und Einschränkungen"; } - QCString trVersion() - // this text is generated when the \version command is used. + /* this text is generated when the \version command is used. */ + virtual QCString trVersion() { return "Version"; } - QCString trDate() - // this text is generated when the \date command is used. + /* this text is generated when the \date command is used. */ + virtual QCString trDate() { return "Datum"; } - QCString trAuthors() - // this text is generated when the \author command is used. + /* this text is generated when the \author command is used. */ + virtual QCString trAuthors() { return "Autor(en)"; } - QCString trReturns() - // this text is generated when the \return command is used. + /* this text is generated when the \return command is used. */ + virtual QCString trReturns() { return "Rückgabe"; } - QCString trSeeAlso() - // this text is generated when the \sa command is used. + /* this text is generated when the \sa command is used. */ + virtual QCString trSeeAlso() { return "Siehe auch"; } - QCString trParameters() - // this text is generated when the \param command is used. + /* this text is generated when the \param command is used. */ + virtual QCString trParameters() { return "Parameter"; } - QCString trExceptions() - // this text is generated when the \exception command is used. + /* this text is generated when the \exception command is used. */ + virtual QCString trExceptions() { return "Ausnahmebehandlung"; } - QCString trGeneratedBy() - // this text is used in the title page of a LaTeX document. + /* this text is used in the title page of a LaTeX document. */ + virtual QCString trGeneratedBy() { return "Erzeugt von"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990307 ////////////////////////////////////////////////////////////////////////// - QCString trNamespaceList() - // used as the title of page containing all the index of all namespaces. + /* used as the title of page containing all the index of all namespaces. */ + virtual QCString trNamespaceList() { return "Liste aller Namensbereiche"; } - QCString trNamespaceListDescription(bool extractAll) - // used as an introduction to the namespace list + /* used as an introduction to the namespace list */ + virtual QCString trNamespaceListDescription(bool extractAll) { QCString result="Liste aller "; if (!extractAll) result+="dokumentierten "; @@ -490,28 +540,30 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 return result; } - QCString trFriends() - // used in the class documentation as a header before the list of all - // friends of a class + /* used in the class documentation as a header before the list of all + * friends of a class + */ + virtual QCString trFriends() { return "Freundbeziehungen"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990405 ////////////////////////////////////////////////////////////////////////// - QCString trRelatedFunctionDocumentation() - // used in the class documentation as a header before the list of all - // related classes + /* used in the class documentation as a header before the list of all + * related classes + */ + virtual QCString trRelatedFunctionDocumentation() { return "Freundbeziehungen und Funktionsdokumentation"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990425 ////////////////////////////////////////////////////////////////////////// - QCString trCompoundReference(const char *clName, + /* used as the title of the HTML page of a class/struct/union */ + virtual QCString trCompoundReference(const char *clName, ClassDef::CompoundType compType, - bool /*isTemplate*/) - // used as the title of the HTML page of a class/struct/union + bool /*isTemplate*/) // FIXME { QCString result=(QCString)clName+" "; switch(compType) @@ -526,16 +578,16 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 return result; } - QCString trFileReference(const char *fileName) - // used as the title of the HTML page of a file + /* used as the title of the HTML page of a file */ + virtual QCString trFileReference(const char *fileName) { QCString result=fileName; result+=" Dateireferenz"; return result; } - QCString trNamespaceReference(const char *namespaceName) - // used as the title of the HTML page of a namespace + /* used as the title of the HTML page of a namespace */ + virtual QCString trNamespaceReference(const char *namespaceName) { QCString result=namespaceName; result+=" Namensbereichsreferenz"; @@ -543,42 +595,43 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 } // these are for the member sections of a class, struct or union - QCString trPublicMembers() + virtual QCString trPublicMembers() { return "Öffentliche Datenelemente"; } - QCString trPublicSlots() + virtual QCString trPublicSlots() { return "Öffentliche Slots"; } - QCString trSignals() + virtual QCString trSignals() { return "Signale"; } - QCString trStaticPublicMembers() + virtual QCString trStaticPublicMembers() { return "Öffentliche, statische Datenelemente"; } - QCString trProtectedMembers() + virtual QCString trProtectedMembers() { return "Geschützte Datenelemente"; } - QCString trProtectedSlots() + virtual QCString trProtectedSlots() { return "Geschützte Slots"; } - QCString trStaticProtectedMembers() + virtual QCString trStaticProtectedMembers() { return "Geschützte, statische Datenelemente"; } - QCString trPrivateMembers() + virtual QCString trPrivateMembers() { return "Private Datenelemente"; } - QCString trPrivateSlots() + virtual QCString trPrivateSlots() { return "Private Slots"; } - QCString trStaticPrivateMembers() + virtual QCString trStaticPrivateMembers() { return "Private, statische Datenelemente"; } // end of member sections - QCString trWriteList(int numEntries) + /* this function is used to produce a comma-separated list of items. + * use generateMarker(i) to indicate where item i should be put. + */ + virtual QCString trWriteList(int numEntries) { - // this function is used to produce a comma-separated list of items. - // use generateMarker(i) to indicate where item i should be put. QCString result; int i; // the inherits list contain `numEntries' classes @@ -599,40 +652,44 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 return result; } - QCString trInheritsList(int numEntries) - // used in class documentation to produce a list of base classes, - // if class diagrams are disabled. + /* used in class documentation to produce a list of base classes, + * if class diagrams are disabled. + */ + virtual QCString trInheritsList(int numEntries) { return "Abgeleitet von "+trWriteList(numEntries)+"."; } - QCString trInheritedByList(int numEntries) - // used in class documentation to produce a list of super classes, - // if class diagrams are disabled. + /* used in class documentation to produce a list of super classes, + * if class diagrams are disabled. + */ + virtual QCString trInheritedByList(int numEntries) { return "Basisklasse für "+trWriteList(numEntries)+"."; } - QCString trReimplementedFromList(int numEntries) - // used in member documentation blocks to produce a list of - // members that are hidden by this one. + /* used in member documentation blocks to produce a list of + * members that are hidden by this one. + */ + virtual QCString trReimplementedFromList(int numEntries) { return "Erneute Implementation von "+trWriteList(numEntries)+"."; } - QCString trReimplementedInList(int numEntries) + /* used in member documentation blocks to produce a list of + * all member that overwrite the implementation of this member. + */ + virtual QCString trReimplementedInList(int numEntries) { - // used in member documentation blocks to produce a list of - // all member that overwrite the implementation of this member. return "Erneute Implementation in "+trWriteList(numEntries)+"."; } - QCString trNamespaceMembers() - // This is put above each page as a link to all members of namespaces. + /* This is put above each page as a link to all members of namespaces. */ + virtual QCString trNamespaceMembers() { return "Elemente eines Namensbereiches"; } - QCString trNamespaceMemberDescription(bool extractAll) - // This is an introduction to the page with all namespace members + /* This is an introduction to the page with all namespace members */ + virtual QCString trNamespaceMemberDescription(bool extractAll) { QCString result="Hier folgt die Aufzählung aller "; if (!extractAll) result+="dokumentierten "; @@ -644,14 +701,16 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 return result; } - QCString trNamespaceIndex() - // This is used in LaTeX as the title of the chapter with the - // index of all namespaces. + /* This is used in LaTeX as the title of the chapter with the + * index of all namespaces. + */ + virtual QCString trNamespaceIndex() { return "Verzeichnis der Namensbereiche"; } - QCString trNamespaceDocumentation() - // This is used in LaTeX as the title of the chapter containing - // the documentation of all namespaces. + /* This is used in LaTeX as the title of the chapter containing + * the documentation of all namespaces. + */ + virtual QCString trNamespaceDocumentation() { return "Dokumentation der Namensbereiche"; } ////////////////////////////////////////////////////////////////////////// @@ -978,11 +1037,11 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 "<li>Ein schwarz gefülltes Rechteck stellt die Struktur oder " "Klasse dar, für die der Graph erzeugt wurde.\n" "<li>Ein Rechteck mit schwarzem Rahmen kennzeichnet eine dokumentierte " - " Struktur oder Klasse.\n" + "Struktur oder Klasse.\n" "<li>Ein Rechteck mit grauem Rahmen kennzeichnet eine undokumentierte " - " Struktur oder Klasse.\n" + "Struktur oder Klasse.\n" "<li>Ein Rechteck mit rotem Rahmen kennzeichnet eine dokumentierte " - " Struktur oder Klasse, für die nicht alle Vererbungs-/" + "Struktur oder Klasse, für die nicht alle Vererbungs-/" "Enthaltenseinsbeziehungen dargestellt werden. Ein Graph wird gekürzt, " "wenn er nicht in die angegebenen Schranken passt." "</ul>\n" @@ -995,7 +1054,7 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 "<li>Ein gestrichelter violetter Pfeil bedeutet, dass eine Klasse in einer " "anderen enthalten ist oder von einer anderen benutzt wird. Am Pfeil " "stehen die Variable(n), mit deren Hilfe auf die Struktur oder Klasse " - "an der Pfeilspitze zugegriffen werden kann. \n" + "an der Pfeilspitze zugegriffen werden kann.\n" "</ul>\n"; } @@ -1061,13 +1120,9 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 virtual QCString trClasses() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { return "Datenstrukturen"; - } else - { return "Klassen"; - } } /* Used as the title of a Java package */ @@ -1121,6 +1176,123 @@ class TranslatorGerman : public TranslatorAdapter_1_2_6 { return "Bug Liste"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.6-20010422 +////////////////////////////////////////////////////////////////////////// + + /* Used as ansicpg for RTF file. See translator_en.h for details. */ + virtual QCString trRTFansicp() + { + return "1252"; + } + + /* Used as ansicpg for RTF fcharset + * \see trRTFansicp() for a table of possible values. + */ + virtual QCString trRTFCharSet() + { + return "0"; + } + + /* Used as header RTF general index */ + virtual QCString trRTFGeneralIndex() + { + return "Index"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.7 +////////////////////////////////////////////////////////////////////////// + + /* This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trClass(bool, bool singular) + { + QCString result("Klasse"); + if (!singular) result+="n"; + return result; + } + + /* This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trFile(bool, bool singular) + { + QCString result("Datei"); + if (!singular) result+="en"; + return result; + } + + /* This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trNamespace(bool, bool singular) + { + QCString result("Namensbereich"); + if (!singular) result+="e"; + return result; + } + + /* This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trGroup(bool, bool singular) + { + QCString result("Gruppe"); + if (!singular) result+="n"; + return result; + } + + /* This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trPage(bool, bool singular) + { + QCString result("Seite"); + if (!singular) result+="n"; + return result; + } + + /* This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trMember(bool, bool singular) + { + QCString result("Element"); + if (!singular) result+="e"; + return result; + } + + /* This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trField(bool, bool singular) + { + QCString result("Feld"); // FIXME + if (!singular) result+="er"; + return result; + } + + /* This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trGlobal(bool first_capital, bool singular) + { + QCString result((first_capital ? "Global" : "global")); // FIXME + if (!singular) result+="s"; + return result; + } + }; #endif diff --git a/src/translator_dk.h b/src/translator_dk.h index f0d235a..b5a14d2 100644 --- a/src/translator_dk.h +++ b/src/translator_dk.h @@ -37,9 +37,7 @@ #ifndef TRANSLATOR_DK_H #define TRANSLATOR_DK_H -#include "translator.h" - -class TranslatorDanish : public Translator +class TranslatorDanish : public TranslatorAdapterCVS { public: @@ -879,17 +877,17 @@ class TranslatorDanish : public Translator { return "Hop til denne fils dokumentation."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ virtual QCString trPrecondition() { return "Precondition"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ virtual QCString trPostcondition() { return "Postcondition"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ virtual QCString trInvariant() { return "Invariant"; diff --git a/src/translator_en.h b/src/translator_en.h index 42a510e..27d2da3 100644 --- a/src/translator_en.h +++ b/src/translator_en.h @@ -18,7 +18,26 @@ #ifndef TRANSLATOR_EN_H #define TRANSLATOR_EN_H -#include "translator.h" +// When defining a translator class for the new language, follow +// the description in the documentation. One of the steps says +// that you should copy the translator_en.h (this) file to your +// translator_xx.h new file. Your new language should use the +// Translator class as the base class. This means that you need to +// implement exactly the same (pure virtual) methods as the +// TranslatorEnglish does. Because of this, it is a good idea to +// start with the copy of TranslatorEnglish and replace the strings +// one by one. +// +// It is not necessary to include "translator.h" or +// "translator_adapter.h" here. The files are included in the +// language.cpp correctly. Not including any of the mentioned +// files frees the maintainer from thinking about whether the +// first, the second, or both files should be included or not, and +// why. This holds namely for localized translators because their +// base class is changed occasionaly to adapter classes when the +// Translator class changes the interface, or back to the +// Translator class (by the local maintainer) when the localized +// translator is made up-to-date again. class TranslatorEnglish : public Translator { @@ -35,8 +54,19 @@ class TranslatorEnglish : public Translator virtual QCString idLanguage() { return "english"; } - /*! Used to get the LaTeX command(s) for the language support. This method - * was designed for languages which do wish to use a babel package. + /*! Used to get the LaTeX command(s) for the language support. + * This method should return string with commands that switch + * LaTeX to the desired language. For example + * <pre>"\\usepackage[german]{babel}\n" + * </pre> + * or + * <pre>"\\usepackage{polski}\n" + * "\\usepackage[latin2]{inputenc}\n" + * "\\usepackage[T1]{fontenc}\n" + * </pre> + * + * The English LaTeX does not use such commands. Because of this + * the empty string is returned in this implementation. */ virtual QCString latexLanguageSupportCommand() { @@ -434,9 +464,6 @@ class TranslatorEnglish : public Translator { return "Enumeration values"; } /*! This is used in man pages as the author section. */ - virtual QCString trAuthor() - { return "Author"; } - /*! This is used in the documentation of a file before the list of * documentation blocks for defines */ @@ -542,9 +569,6 @@ class TranslatorEnglish : public Translator { return "Date"; } /*! this text is generated when the \\author command is used. */ - virtual QCString trAuthors() - { return "Author(s)"; } - /*! this text is generated when the \\return command is used. */ virtual QCString trReturns() { return "Returns"; } @@ -1179,6 +1203,7 @@ class TranslatorEnglish : public Translator /*! Used as ansicpg for RTF file * * The following table shows the correlation of Charset name, Charset Value and + * <pre> * Codepage number: * Charset Name Charset Value(hex) Codepage number * ------------------------------------------------------ @@ -1197,6 +1222,7 @@ class TranslatorEnglish : public Translator * HANGEUL_CHARSET 129 (x81) 949 * GB2313_CHARSET 134 (x86) 936 * CHINESEBIG5_CHARSET 136 (x88) 950 + * </pre> * */ virtual QCString trRTFansicp() @@ -1204,6 +1230,7 @@ class TranslatorEnglish : public Translator return "1252"; } + /*! Used as ansicpg for RTF fcharset * \see trRTFansicp() for a table of possible values. */ @@ -1225,7 +1252,6 @@ class TranslatorEnglish : public Translator virtual QCString trClass(bool first_capital, bool singular) { QCString result((first_capital ? "Class" : "class")); - if (first_capital) toupper(result.at(0)); if (!singular) result+="es"; return result; } @@ -1306,7 +1332,20 @@ class TranslatorEnglish : public Translator if (!singular) result+="s"; return result; } - + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.7 +////////////////////////////////////////////////////////////////////////// + + /*! This text is generated when the \\author command is used and + * for the author section in man pages. */ + virtual QCString trAuthor(bool first_capital, bool singular) + { + QCString result((first_capital ? "Author" : "author")); + if (!singular) result+="s"; + return result; + } + }; #endif diff --git a/src/translator_es.h b/src/translator_es.h index 374b387..a1c3427 100644 --- a/src/translator_es.h +++ b/src/translator_es.h @@ -530,9 +530,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_1_5 return result; } - /*! \mgroup Class sections - * these are for the member sections of a class, struct or union - */ + /* these are for the member sections of a class, struct or union */ virtual QCString trPublicMembers() { return "Métodos públicos"; } virtual QCString trPublicSlots() @@ -553,7 +551,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_1_5 { return "Slots privados"; } virtual QCString trStaticPrivateMembers() { return "Métodos privados estáticos"; } - /*! \endmgroup */ /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -756,17 +753,17 @@ class TranslatorSpanish : public TranslatorAdapter_1_1_5 { return "Ir a la documentación de este archivo."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ virtual QCString trPrecondition() { return "Precondición"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ virtual QCString trPostcondition() { return "Postcondicón"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ virtual QCString trInvariant() { return "Invariante"; diff --git a/src/translator_fr.h b/src/translator_fr.h index 85ba3de..82af3d5 100644 --- a/src/translator_fr.h +++ b/src/translator_fr.h @@ -532,9 +532,7 @@ class TranslatorFrench : public TranslatorAdapter_1_2_0 return result; } - /*! \mgroup Class sections - * these are for the member sections of a class, struct or union - */ + /* these are for the member sections of a class, struct or union */ virtual QCString trPublicMembers() { return "Membres publics"; } virtual QCString trPublicSlots() @@ -555,7 +553,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_0 { return "Connecteurs privés"; } virtual QCString trStaticPrivateMembers() { return "Membres privés statiques"; } - /*! \endmgroup */ /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -760,17 +757,17 @@ class TranslatorFrench : public TranslatorAdapter_1_2_0 { return "Aller à la documentation de ce fichier."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ virtual QCString trPrecondition() { return "Précondition"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ virtual QCString trPostcondition() { return "Postcondition"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ virtual QCString trInvariant() { return "Invariant"; diff --git a/src/translator_hr.h b/src/translator_hr.h index e0b81c1..f3395aa 100644 --- a/src/translator_hr.h +++ b/src/translator_hr.h @@ -535,17 +535,17 @@ class TranslatorCroatian : public TranslatorAdapter_1_2_6 { return "Dokumenacija za ovu datoteku."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ QCString trPrecondition() { return "Preduvjeti"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ QCString trPostcondition() { return "Postuvjeti"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ QCString trInvariant() { return "Invarijanta"; diff --git a/src/translator_hu.h b/src/translator_hu.h index e399914..ee8d343 100644 --- a/src/translator_hu.h +++ b/src/translator_hu.h @@ -24,7 +24,7 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1 { public: - // --- Language contol methods ------------------- + // --- Language control methods ------------------- QCString idLanguage() { return "hungarian"; } /*! Used to get the command(s) for the language support. This method @@ -543,9 +543,7 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1 return result; } - /*! \mgroup Class sections - * these are for the member sections of a class, struct or union - */ + /* these are for the member sections of a class, struct or union */ QCString trPublicMembers() { return "Publikus metódusok"; } QCString trPublicSlots() @@ -566,7 +564,6 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1 { return "Privát adatok"; } QCString trStaticPrivateMembers() { return "Statikus privát metódusok"; } - /*! \endmgroup */ /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -769,17 +766,17 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1 { return "Ugrás a fájl dokumentációjához."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ QCString trPrecondition() { return "Elõfeltétel"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ QCString trPostcondition() { return "Utófeltétel"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ QCString trInvariant() { return "Invariáns"; diff --git a/src/translator_it.h b/src/translator_it.h index b099d95..33e9eac 100644 --- a/src/translator_it.h +++ b/src/translator_it.h @@ -57,9 +57,7 @@ #ifndef TRANSLATOR_IT_H #define TRANSLATOR_IT_H -#include "translator.h" - -class TranslatorItalian : public Translator +class TranslatorItalian : public TranslatorAdapterCVS { public: @@ -676,9 +674,7 @@ class TranslatorItalian : public Translator return result; } - /*! \mgroup Class sections - * these are for the member sections of a class, struct or union - */ + /* these are for the member sections of a class, struct or union */ QCString trPublicMembers() { return "Membri pubblici"; } QCString trPublicSlots() @@ -699,7 +695,6 @@ class TranslatorItalian : public Translator { return "Slot privati"; } QCString trStaticPrivateMembers() { return "Membri privati statici"; } - /*! \endmgroup */ /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -903,17 +898,17 @@ class TranslatorItalian : public Translator { return "Vai alla documentazione di questo file."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ QCString trPrecondition() { return "Precondizione"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ QCString trPostcondition() { return "Postcondizione"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ QCString trInvariant() { return "Invariante"; diff --git a/src/translator_jp.h b/src/translator_jp.h index e6f4eae..4786558 100644 --- a/src/translator_jp.h +++ b/src/translator_jp.h @@ -520,9 +520,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5 return result; } - /*! \mgroup Class sections - * these are for the member sections of a class, struct or union - */ + /* these are for the member sections of a class, struct or union */ QCString trPublicMembers() { return "¸ø³«¥á¥ó¥Ð"; } QCString trPublicSlots() @@ -543,7 +541,6 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5 { return "Èó¸ø³«¥¹¥í¥Ã¥È"; } QCString trStaticPrivateMembers() { return "ÀÅŪÈó¸ø³«¥á¥ó¥Ð"; } - /*! \endmgroup */ /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -745,17 +742,17 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5 { return "¤³¤Î¥Õ¥¡¥¤¥ë¤Î²òÀâ¤ò¸«¤ë¡£"; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ QCString trPrecondition() { return "»öÁ°¾ò·ï"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ QCString trPostcondition() { return "»ö¸å¾ò·ï"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ QCString trInvariant() { return "Invariant"; diff --git a/src/translator_kr.h b/src/translator_kr.h index 50b0654..18b63c9 100644 --- a/src/translator_kr.h +++ b/src/translator_kr.h @@ -530,9 +530,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 return result; } - /*! \mgroup Class sections - * these are for the member sections of a class, struct or union - */ + /* these are for the member sections of a class, struct or union */ QCString trPublicMembers() { return "°ø¿ë ¸Þ¼Òµå"; } QCString trPublicSlots() @@ -553,7 +551,6 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 { return "Private Slots"; } QCString trStaticPrivateMembers() { return "Á¤Àû ÇÁ¶óÀ̺£ÀÌÆ® ¸Þ¼Òµå"; } - /*! \endmgroup */ /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -757,17 +754,17 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 { return "ÀÌ ÆÄÀÏÀÇ ¹®¼È·Î °¡½Ã¿À"; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ QCString trPrecondition() { return "ÀüÁ¦ Á¶°Ç"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ QCString trPostcondition() { return "ÈÄ¹Ì Á¶°Ç"; // "ÈÄÄ¡Á¶°Ç" } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ QCString trInvariant() { return "º¯ÇÏÁö ¾Ê´Â"; diff --git a/src/translator_nl.h b/src/translator_nl.h index 9665e54..c5f9372 100644 --- a/src/translator_nl.h +++ b/src/translator_nl.h @@ -501,17 +501,17 @@ class TranslatorDutch : public TranslatorAdapter_1_2_6 { return "Ga naar de documentatie van deze file."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ QCString trPrecondition() { return "Preconditie"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ QCString trPostcondition() { return "Postconditie"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ QCString trInvariant() { return "Invariant"; diff --git a/src/translator_no.h b/src/translator_no.h index 03ed9a5..b25c106 100644 --- a/src/translator_no.h +++ b/src/translator_no.h @@ -571,17 +571,17 @@ class TranslatorNorwegian : public TranslatorAdapter_1_2_2 { return "Gå til dokumentasjonen for denne filen."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ virtual QCString trPrecondition() { return "Før-kondisjon"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ virtual QCString trPostcondition() { return "Etter-kondisjon"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ virtual QCString trInvariant() { return "Invariant"; diff --git a/src/translator_pl.h b/src/translator_pl.h index 54777ea..c1246e4 100644 --- a/src/translator_pl.h +++ b/src/translator_pl.h @@ -24,7 +24,7 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1 { public: - // --- Language contol methods ------------------- + // --- Language control methods ------------------- /*! Used for identification of the language. May resemble * the string returned by latexBabelPackage(), but it is not used @@ -545,9 +545,7 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1 return result; } - /*! \mgroup Class sections - * these are for the member sections of a class, struct or union - */ + /* these are for the member sections of a class, struct or union */ QCString trPublicMembers() { return "Metody Publiczne"; } QCString trPublicSlots() @@ -568,7 +566,6 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1 { return "Sloty Prywatne"; } QCString trStaticPrivateMembers() { return "Statyczne Metody Prywatne"; } - /*! \endmgroup */ /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -770,17 +767,17 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1 { return "Id¼ do dokumentacji tego pliku."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ QCString trPrecondition() { return "Warunek wstêpny"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ QCString trPostcondition() { return "Warunek koñcowy"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ QCString trInvariant() { return "Inwariant"; diff --git a/src/translator_pt.h b/src/translator_pt.h index 3fd93ab..ba0d0cc 100644 --- a/src/translator_pt.h +++ b/src/translator_pt.h @@ -524,9 +524,7 @@ class TranslatorPortuguese : public TranslatorAdapter_1_1_5 return result; } - /*! \mgroup Class sections - * these are for the member sections of a class, struct or union - */ + /* these are for the member sections of a class, struct or union */ virtual QCString trPublicMembers() { return "Membros públicos"; } virtual QCString trPublicSlots() @@ -547,7 +545,6 @@ class TranslatorPortuguese : public TranslatorAdapter_1_1_5 { return "Slots privados"; } virtual QCString trStaticPrivateMembers() { return "Membros privados estáticos"; } - /*! \endmgroup */ /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -753,17 +750,17 @@ class TranslatorPortuguese : public TranslatorAdapter_1_1_5 { return "Ir para a documentação deste ficheiro."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ virtual QCString trPrecondition() { return "Precondição"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ virtual QCString trPostcondition() { return "Poscondição"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ virtual QCString trInvariant() { return "Invariante"; diff --git a/src/translator_ro.h b/src/translator_ro.h index c2a6e2a..11c0cee 100644 --- a/src/translator_ro.h +++ b/src/translator_ro.h @@ -38,7 +38,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1 { public: - // --- Language contol methods ------------------- + // --- Language control methods ------------------- /*! Used for identification of the language. May resemble * the string returned by latexBabelPackage(), but it is not used @@ -571,9 +571,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1 return result; } - /*! \mgroup Class sections - * these are for the member sections of a class, struct or union - */ + /* these are for the member sections of a class, struct or union */ virtual QCString trPublicMembers() { return "Metode Publice"; } virtual QCString trPublicSlots() @@ -594,7 +592,6 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1 { return "Sloturi Private"; } virtual QCString trStaticPrivateMembers() { return "Metode Statice Private"; } - /*! \endmgroup */ /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -797,17 +794,17 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1 { return "Vezi documentaþia."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ virtual QCString trPrecondition() { return "Precondiþie"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ virtual QCString trPostcondition() { return "Postcondiþie"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ virtual QCString trInvariant() { return "Invariant"; diff --git a/src/translator_ru.h b/src/translator_ru.h index d634953..37d9deb 100644 --- a/src/translator_ru.h +++ b/src/translator_ru.h @@ -48,9 +48,7 @@ #ifndef TRANSLATOR_RU_H #define TRANSLATOR_RU_H -#include "translator.h" - -class TranslatorRussian : public Translator +class TranslatorRussian : public TranslatorAdapterCVS { private: /*! The Decode() inline assumes the source written in the @@ -921,17 +919,17 @@ class TranslatorRussian : public Translator { return decode("óÍ. ÄÏËÕÍÅÎÔÁÃÉÀ."); } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ virtual QCString trPrecondition() { return decode("ðÒÅÄÕÓÌÏ×ÉÅ"); } - /*! Text for the \post command */ + /*! Text for the \\post command */ virtual QCString trPostcondition() { return decode("ðÏÓÔÕÓÌÏ×ÉÅ"); } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ virtual QCString trInvariant() { return decode("éÎ×ÁÒÉÁÎÔ"); diff --git a/src/translator_si.h b/src/translator_si.h index 98d6824..74efad5 100644 --- a/src/translator_si.h +++ b/src/translator_si.h @@ -528,17 +528,17 @@ class TranslatorSlovene : public TranslatorAdapter_1_1_5 { return "dokumenacija tekoèe datoteke."; } - /*! Text for the \pre command */ + /*! Text for the \\pre command */ QCString trPrecondition() { return "Predpogoji (preconditions)"; } - /*! Text for the \post command */ + /*! Text for the \\post command */ QCString trPostcondition() { return "Naknadni pogoji (posconditions)"; } - /*! Text for the \invariant command */ + /*! Text for the \\invariant command */ QCString trInvariant() { return "Invarianta"; diff --git a/src/util.cpp b/src/util.cpp index 42070d6..d7acf08 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -460,7 +460,7 @@ QCString removeRedundantWhiteSpace(const QCString &s) result+=' '; result+=s.at(i); } - else if (c!=' ' || + else if (!isspace(c) || ( i!=0 && i!=l-1 && (isId(s.at(i-1)) || s.at(i-1)==')' || s.at(i-1)==',' || s.at(i-1)=='>' || s.at(i-1)==']') && isId(s.at(i+1)) |