From 46361b7017fbbbc5f560eea54aac2be86abaf90e Mon Sep 17 00:00:00 2001 From: dimitri Date: Sun, 18 Jul 2004 19:47:03 +0000 Subject: Release-1.3.7-20040718 --- .cvsignore | 3 + INSTALL | 4 +- README | 4 +- VERSION | 2 +- addon/doxmlparser/examples/metrics/.cvsignore | 2 + addon/doxmlparser/src/.cvsignore | 2 + addon/doxmlparser/test/.cvsignore | 2 + addon/doxywizard/.cvsignore | 2 + addon/doxywizard/doxywizard.cpp | 40 +- addon/doxywizard/doxywizard.pro.in | 2 +- addon/doxywizard/doxywizard.res | Bin 0 -> 13464 bytes configure | 6 +- doc/.cvsignore | 1 + doc/commands.doc | 31 +- doc/config.doc | 11 + doc/doxywizard_expert.png | Bin 0 -> 30056 bytes doc/doxywizard_main.png | Bin 0 -> 57204 bytes doc/doxywizard_menu.png | Bin 0 -> 58661 bytes doc/doxywizard_page1.png | Bin 0 -> 39646 bytes doc/doxywizard_page2.png | Bin 0 -> 39048 bytes doc/doxywizard_page3.png | Bin 0 -> 50904 bytes doc/doxywizard_page4.png | Bin 0 -> 43718 bytes doc/doxywizard_usage.doc | 104 +- doc/language.doc | 53 +- doc/maintainers.txt | 5 +- doc/translator.py | 5 +- examples/.cvsignore | 1 + libmd5/.cvsignore | 2 + libpng/.cvsignore | 2 + packages/rpm/doxygen.spec | 2 +- qtools/.cvsignore | 2 + src/.cvsignore | 5 + src/classdef.h | 1 + src/code.l | 2 +- src/config.l | 12 +- src/definition.cpp | 2 +- src/docparser.cpp | 19 +- src/docparser.h | 8 +- src/dot.cpp | 6 +- src/dot.h | 3 +- src/doxygen.cpp | 32 +- src/doxygen.h | 12 + src/htmlattrib.h | 12 + src/htmldocvisitor.cpp | 17 +- src/htmldocvisitor.h | 2 +- src/lang_cfg.h | 1 + src/language.cpp | 3 + src/libdoxygen.pro.in | 1 + src/memberdef.cpp | 4 +- src/memberdef.h | 5 +- src/pre.l | 13 +- src/translator_cn.h | 232 +++- src/translator_za.h | 1550 +++++++++++++++++++++++++ src/util.cpp | 141 ++- src/util.h | 1 + src/xmlgen.cpp | 15 +- 56 files changed, 2213 insertions(+), 174 deletions(-) create mode 100644 .cvsignore create mode 100644 addon/doxmlparser/examples/metrics/.cvsignore create mode 100644 addon/doxmlparser/src/.cvsignore create mode 100644 addon/doxmlparser/test/.cvsignore create mode 100644 addon/doxywizard/.cvsignore create mode 100755 addon/doxywizard/doxywizard.res create mode 100644 doc/.cvsignore create mode 100644 doc/doxywizard_expert.png create mode 100644 doc/doxywizard_main.png create mode 100644 doc/doxywizard_menu.png create mode 100644 doc/doxywizard_page1.png create mode 100644 doc/doxywizard_page2.png create mode 100644 doc/doxywizard_page3.png create mode 100644 doc/doxywizard_page4.png create mode 100644 examples/.cvsignore create mode 100644 libmd5/.cvsignore create mode 100644 libpng/.cvsignore create mode 100644 qtools/.cvsignore create mode 100644 src/.cvsignore create mode 100644 src/translator_za.h diff --git a/.cvsignore b/.cvsignore new file mode 100644 index 0000000..315d326 --- /dev/null +++ b/.cvsignore @@ -0,0 +1,3 @@ +Makefile +.makeconfig +.tmakeconfig diff --git a/INSTALL b/INSTALL index 29c182d..0fb122f 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.3.7-20040704 +DOXYGEN Version 1.3.7-20040718 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (04 July 2004) +Dimitri van Heesch (18 July 2004) diff --git a/README b/README index ea00793..c738704 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.3.7_20040704 +DOXYGEN Version 1.3.7_20040718 Please read INSTALL for compilation instructions. @@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (04 July 2004) +Dimitri van Heesch (dimitri@stack.nl) (18 July 2004) diff --git a/VERSION b/VERSION index d9c7eea..c6b9338 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.7-20040704 +1.3.7-20040718 diff --git a/addon/doxmlparser/examples/metrics/.cvsignore b/addon/doxmlparser/examples/metrics/.cvsignore new file mode 100644 index 0000000..06de5f5 --- /dev/null +++ b/addon/doxmlparser/examples/metrics/.cvsignore @@ -0,0 +1,2 @@ +Makefile +metrics.pro diff --git a/addon/doxmlparser/src/.cvsignore b/addon/doxmlparser/src/.cvsignore new file mode 100644 index 0000000..6d40d43 --- /dev/null +++ b/addon/doxmlparser/src/.cvsignore @@ -0,0 +1,2 @@ +Makefile +doxmlparser.pro diff --git a/addon/doxmlparser/test/.cvsignore b/addon/doxmlparser/test/.cvsignore new file mode 100644 index 0000000..6d469ff --- /dev/null +++ b/addon/doxmlparser/test/.cvsignore @@ -0,0 +1,2 @@ +Makefile +xmlparse.pro diff --git a/addon/doxywizard/.cvsignore b/addon/doxywizard/.cvsignore new file mode 100644 index 0000000..02b5a07 --- /dev/null +++ b/addon/doxywizard/.cvsignore @@ -0,0 +1,2 @@ +Makefile +doxywizard.pro \ No newline at end of file diff --git a/addon/doxywizard/doxywizard.cpp b/addon/doxywizard/doxywizard.cpp index 9c9737d..9462296 100644 --- a/addon/doxywizard/doxywizard.cpp +++ b/addon/doxywizard/doxywizard.cpp @@ -308,24 +308,6 @@ Step3::Step3(QWidget *parent) : QWidget(parent,"Step3") bg->setButton(0); layout->addWidget(bg); - //w = new QWidget( this ); - //bl = new QHBoxLayout(w); - //bl->addWidget(new QLabel("Select the output language:",w)); - //m_outputLang = new QComboBox(w); - //m_outputLang->setMinimumSize(m_outputLang->sizeHint()); - //bl->setSpacing(10); - //bl->addWidget(m_outputLang); - //bl->addStretch(1); - //m_outputLang->insertItem("English"); - //m_outputLang->insertItem("Dutch"); - //m_outputLang->insertItem("German"); - //m_outputLang->insertItem("Spanish"); - //m_outputLang->insertItem("French"); - //m_outputLang->insertItem("Chinese"); - //m_outputLang->insertItem("Japanese"); - //m_outputLang->insertItem("Korean"); - //layout->addWidget(w); - layout->addStretch(1); connect(m_latexEnabled,SIGNAL(stateChanged(int)), @@ -558,9 +540,9 @@ void Step4::setDiagramMode(DiagramMode mode) { switch(mode) { - case DM_None: m_diagramMode->setButton(0); break; - case DM_Builtin: m_diagramMode->setButton(1); break; - case DM_Dot: m_diagramMode->setButton(2); break; + case DM_None: m_diagramMode->setButton(0); diagramModeChanged(0); break; + case DM_Builtin: m_diagramMode->setButton(1); diagramModeChanged(1); break; + case DM_Dot: m_diagramMode->setButton(2); diagramModeChanged(2); break; } } @@ -654,6 +636,12 @@ MainWidget::MainWidget(QWidget *parent) // initialize config settings Config::instance()->init(); Config::instance()->check(); +#if defined(Q_OS_MACX) + // we bundle dot with doxywizard on the Mac so we can safely enable + // it here + Config_getString("DOT_PATH")=getResourcePath(); + Config_getBool("HAVE_DOT")=TRUE; +#endif QWidget *w = new QWidget(this); setCentralWidget(w); @@ -1130,7 +1118,10 @@ void MainWidget::launchExpert() expert.init(); expert.exec(); #if defined(Q_OS_MACX) + // we bundle dot with doxywizard on the Mac so we can safely enable + // it here Config_getString("DOT_PATH")=getResourcePath(); + Config_getBool("HAVE_DOT")=TRUE; #endif setConfigSaved(FALSE); } @@ -1183,6 +1174,13 @@ void MainWidget::resetConfig() { // initialize config settings Config::instance()->init(); +#if defined(Q_OS_MACX) + // we bundle dot with doxywizard on the Mac so we can safely enable + // it here + Config_getString("DOT_PATH")=getResourcePath(); + Config_getBool("HAVE_DOT")=TRUE; +#endif + m_configFileName = ""; setConfigSaved(FALSE); statusBar()->message("Configuration settings reset to their defaults",messageTimeout); diff --git a/addon/doxywizard/doxywizard.pro.in b/addon/doxywizard/doxywizard.pro.in index 78f32f9..6cb1250 100644 --- a/addon/doxywizard/doxywizard.pro.in +++ b/addon/doxywizard/doxywizard.pro.in @@ -53,7 +53,7 @@ win32:INCLUDEPATH += . macosx-c++:LIBS+=-framework CoreFoundation -framework ApplicationServices # extra link options -win32:TMAKE_LFLAGS = /NODEFAULTLIB:msvcrt.lib +win32:TMAKE_LFLAGS = /NODEFAULTLIB:msvcrt.lib doxywizard.res win32:TMAKE_LIBS = $(QTDIR)\lib\qtmain.lib $(QTDIR)\lib\qt-mt332.lib user32.lib gdi32.lib comdlg32.lib imm32.lib ole32.lib uuid.lib wsock32.lib win32:TMAKE_LIBS_QT = diff --git a/addon/doxywizard/doxywizard.res b/addon/doxywizard/doxywizard.res new file mode 100755 index 0000000..283b8bb Binary files /dev/null and b/addon/doxywizard/doxywizard.res differ diff --git a/configure b/configure index 49b994a..00bc2d7 100755 --- a/configure +++ b/configure @@ -28,7 +28,7 @@ f_insttool=NO f_english=NO f_wizard=NO f_thread=NO -f_langs=nl,se,cz,fr,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ke,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca,lt +f_langs=nl,se,cz,fr,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ke,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca,lt,za while test -n "$1"; do case $1 in @@ -111,7 +111,7 @@ Options: See PLATFORMS for a list of possibilities --prefix dir Installation prefix directory (doxygen will be put in PREFIX/bin/doxygen) - [default: /usr] + [default: $f_prefix] --docdir dir Documentation is installed in DOCDIR/doxygen/ [default: PREFIX/share/doc/packages] --install name Use \`name' as the name of the GNU install tool @@ -527,7 +527,7 @@ echo -n " Generating src/lang_cfg.h..." echo $f_langs | $f_perl -e '@l=split(/,/,); chomp @l; @allowed=(NL,SE,CZ,FR,IT,DE,JP,JE,ES,FI,RU,HR,PL,PT,HU,KR,KE,RO,SI,CN,NO,BR, - DK,SK,UA,GR,TW,SR,CA,LT); + DK,SK,UA,GR,TW,SR,CA,LT,ZA); foreach my $elem (@l){ $elem =~ tr/a-z/A-Z/; $r=0; diff --git a/doc/.cvsignore b/doc/.cvsignore new file mode 100644 index 0000000..f3c7a7c --- /dev/null +++ b/doc/.cvsignore @@ -0,0 +1 @@ +Makefile diff --git a/doc/commands.doc b/doc/commands.doc index 652f2ce..4ca0aa6 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -108,11 +108,18 @@ documentation: \refitem cmdpackage \\package \refitem cmdpage \\page \refitem cmdpar \\par +\refitem cmdparagraph \\paragraph \refitem cmdparam \\param \refitem cmdpost \\post \refitem cmdpre \\pre +\refitem cmd_php_only \\private (PHP only) +\refitem cmd_php_only \\privatesection (PHP only) \refitem cmdproperty \\property +\refitem cmd_php_only \\protected (PHP only) +\refitem cmd_php_only \\protectedsection (PHP only) \refitem cmdprotocol \\protocol +\refitem cmd_php_only \\public (PHP only) +\refitem cmd_php_only \\publicsection (PHP only) \refitem cmdref \\ref \refitem cmdrelates \\relates \refitem cmdrelatesalso \\relatesalso @@ -2010,10 +2017,21 @@ class C {}; prevent auto-linking to word that is also a documented class or struct.
-
+\section cmd_php_only PHP only commands +For PHP files there are a number of additional commands, that can be +used inside classes to make members public, private, or protected even +though the language itself doesn't support this notion. + +To mark a single item use one of \\private, \\protected, \\public. +For starting a section with a certain protection level use one of: +\\privatesection, \\protectedsection, \\publicsection. +The latter commands are similar to +"private:", "protected:", and "public:" in C++. +

\htmlonly
--- \endhtmlonly Commands included for Qt compatibility \htmlonly ---
\endhtmlonly

+
The following commands are supported to remain compatible to the Qt class browser generator. Do \e not use these commands in your own documentation. @@ -2028,16 +2046,7 @@ browser generator. Do \e not use these commands in your own documentation.
  • \\l
  • \\postheader - -For PHP files there are a number of additional commands, that can be -used inside classes to make members public, private, or protected even -though the language itself doesn't support this notion. - -To mark a single item use one of \\private, \\protected, \\public. -For starting a section with a certain protection level use one of: -\\privatesection, \\protectedsection, \\publicsection. -The latter commands are similar to -"private:", "protected:", and "public:" in C++. +
    */ diff --git a/doc/config.doc b/doc/config.doc index 437a56e..c37644c 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -97,6 +97,7 @@ followed by the descriptions of the tags grouped by category. \refitem cfg_extract_private EXTRACT_PRIVATE \refitem cfg_extract_static EXTRACT_STATIC \refitem cfg_file_patterns FILE_PATTERNS +\refitem cfg_filter_patterns FILTER_PATTERNS \refitem cfg_filter_source_files FILTER_SOURCE_FILES \refitem cfg_full_path_names FULL_PATH_NAMES \refitem cfg_generate_autogen_def GENERATE_AUTOGEN_DEF @@ -777,6 +778,16 @@ function's detailed documentation block. input file. Doxygen will then use the output that the filter program writes to standard output. +\anchor cfg_filter_patterns +
    \c FILTER_PATTERNS
    + \addindex FILTER_PATTERNS + The \c FILTER_PATTERNS tag can be used to specify filters on a per file pattern + basis. Doxygen will compare the file name with each pattern and apply the + filter if there is a match. The filters are a list of the form: + pattern=filter (like *.cpp=my_cpp_filter). See \c INPUT_FILTER for further + info on how filters are used. If \c FILTER_PATTERNS is empty, \c INPUT_FILTER + is applied to all files. + \anchor cfg_filter_source_files
    \c FILTER_SOURCE_FILES
    \addindex FILTER_SOURCE_FILES diff --git a/doc/doxywizard_expert.png b/doc/doxywizard_expert.png new file mode 100644 index 0000000..93fd4ee Binary files /dev/null and b/doc/doxywizard_expert.png differ diff --git a/doc/doxywizard_main.png b/doc/doxywizard_main.png new file mode 100644 index 0000000..e57c144 Binary files /dev/null and b/doc/doxywizard_main.png differ diff --git a/doc/doxywizard_menu.png b/doc/doxywizard_menu.png new file mode 100644 index 0000000..37adc46 Binary files /dev/null and b/doc/doxywizard_menu.png differ diff --git a/doc/doxywizard_page1.png b/doc/doxywizard_page1.png new file mode 100644 index 0000000..ee3181d Binary files /dev/null and b/doc/doxywizard_page1.png differ diff --git a/doc/doxywizard_page2.png b/doc/doxywizard_page2.png new file mode 100644 index 0000000..dc9b5a8 Binary files /dev/null and b/doc/doxywizard_page2.png differ diff --git a/doc/doxywizard_page3.png b/doc/doxywizard_page3.png new file mode 100644 index 0000000..f75e63f Binary files /dev/null and b/doc/doxywizard_page3.png differ diff --git a/doc/doxywizard_page4.png b/doc/doxywizard_page4.png new file mode 100644 index 0000000..e4f4361 Binary files /dev/null and b/doc/doxywizard_page4.png differ diff --git a/doc/doxywizard_usage.doc b/doc/doxywizard_usage.doc index 468f3fa..a758b4c 100644 --- a/doc/doxywizard_usage.doc +++ b/doc/doxywizard_usage.doc @@ -16,13 +16,77 @@ */ /*! \page doxywizard_usage Doxywizard usage -Doxywizard is a GUI front-end for creating and editing -configuration files that are used by doxygen. +Doxywizard is a GUI front-end for configuring and running doxygen. -Doxywizard consists of a single executable that, when started, -pops up a window. +When you start doxywizard it will display the main window +(the actual look depends on the OS used). -The main window has a number of tab field, one +\image html doxywizard_main.png "Main window" + +The windows shows the steps to take to configure and run doxygen. +The first step is to choose one of the ways to configure doxygen. +
    +
    Wizard
    Click this button to quickly configure the most important + settings and leave the rest of the options to their defaults. +
    Expert
    Click this button to to gain access to the + \ref config "full range of configuration options". +
    Load
    Click this button to load an existing configuration file + from disk. +
    +Note that you can select multiple buttons in a row, for instance to first +configure doxygen using the Wizard and then fine tune the settings via +the Expert. + +After doxygen is configured you need to save the configuration as a file +to disk. This second step allows doxygen to use the configuration +and has the additional advantage that the configuration can be reused +to run doxygen with the same settings at a later point in time. + +Since some configuration options may use relative paths, the next step is +to select a directory from which to run doxygen. This is typically the root +of the source tree and will most of the time already be filled in correctly. + +Once the configuration file is saved and the working directory is set, you +can run doxygen based on the selected settings. Do this by pressing the +"Start" button. Once doxygen runs you can cancel it by clicking the same +button again. The output produced by doxygen is captured and shown in a log +window. Once doxygen finishes, the log can be saved as a text file. + +

    The Wizard Dialog

    + +If you select the Wizard button in step 1, then a dialog with +a number of tabs will appear. + +\image html doxywizard_page1.png "Wizard dialog: Project settings" + +The fields in the project tab speak for themselves. Once doxygen has finished +the Destination directory is where to look for the results. Doxygen will +put each output format in a separate sub-directory. + +\image html doxywizard_page2.png "Wizard dialog: Mode of operating" + +The mode tab allows you to select how doxygen will look at your sources. +The default is to only look for things that have been documented. + +You can also select how doxygen should present the results. +The latter does not affect the way doxygen parses your source code. + +\image html doxywizard_page3.png "Wizard dialog: Output to produce" + +You can select one or more of the output formats that doxygen should +produce. For HTML and LaTeX there are additional options. + +\image html doxywizard_page4.png "Wizard dialog: Diagrams to generate" + +Doxygen can produce a number of diagrams. Using the diagrams tab you +can select which ones to generate. For most diagrams the +dot tool of the GraphViz package +is needed (if you use the binary packages for Mac or Windows this +tool is already included). + +

    Expert dialog

    + +The Expert dialog has a number of tab fields, one for each section in the configuration file. Each tab-field contains a number of lines, one for each configuration option in that section. @@ -38,13 +102,37 @@ The kind of input widget depends on the type of the configuration option.
  • For options taking a lists of strings, a one line edit field is available, with a `+' button to add this string to the list and a `-' button to remove the selected string from the list. There - is also a button with a circular "refresh" arrow that, when pressed, + is also a `*' button that, when pressed, replaces the selected item in the list with the string entered in the edit field.
  • For file and folder entries, there are special buttons - that start a file dialog. + that start a file selection dialog. -\image html doxywizard.gif +\image html doxywizard_expert.png "Some options from the Expert dialog" + +The get additional information about the meaning of an option, click +on the "Help" button at the bottom right of the dialog and then on the +item. A tooltip with additional information will appear. + +

    Menu options

    + +The GUI front-end has a menu with a couple of useful items + +\image html doxywizard_menu.png "File menu" + +
    +
    Open...
    This is the same as the "Load" button in the main window + and allows to open a configuration file from disk. +
    Save as..
    This is the same as the "Save" button in the main window + and can be used to save the current configuration settings to disk. +
    Recent configurations
    Allow to quickly load a recently saved + configuration. +
    Set as default...
    Stores the current configuration settings as the + default to use next time the GUI is started. You will be asked to + confirm the action. +
    Reset...
    Restores the factory defaults as the default settings to use. + You will be asked to confirm the action. +
    */ diff --git a/doc/language.doc b/doc/language.doc index 6f4df69..dc2193f 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -23,12 +23,13 @@ text fragments, generated by doxygen, can be produced in languages other than English (the default). The output language is chosen through the configuration file (with default name and known as Doxyfile). -Currently (version 1.3.7), 29 languages +Currently (version 1.3.8), 30 languages are supported (sorted alphabetically): -Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, -Czech, Danish, Dutch, English, Finnish, French, German, Greek, -Hungarian, Italian, Japanese (+En), Korean (+En), Lithuanian, -Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak,. +Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese +Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French, +German, Greek, Hungarian, Italian, Japanese (+En), Korean (+En), +Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, +Slovak, Slovene, Spanish, Swedish, and Ukrainian.. The table of information related to the supported languages follows. It is sorted by language alphabetically. The Status column @@ -50,10 +51,16 @@ when the translator was updated. + Afrikaans + Johan Prinsloo + johan@NOSPAM.zippysnoek.com + up-to-date + + Brazilian Portuguese Fabio "FJTC" Jun Takada Chino chino@NOSPAM.icmc.sc.usp.br - 1.3.8 + up-to-date Catalan @@ -63,9 +70,9 @@ when the translator was updated. Chinese - Wei Liu
    Wang Weihan - liuwei@NOSPAM.asiainfo.com
    wangweihan@NOSPAM.capinfo.com.cn - 1.2.13 + Li Daobing
    Wei Liu + lidaobing@NOSPAM.gmail.com
    liuwei@NOSPAM.asiainfo.com + 1.3.08 Chinese Traditional @@ -77,13 +84,13 @@ when the translator was updated. Croatian Boris Bralo boris.bralo@NOSPAM.zg.tel.hr - 1.3.8 + up-to-date Czech Petr Přikryl prikrylp@NOSPAM.skil.cz - 1.3.8 + up-to-date Danish @@ -95,7 +102,7 @@ when the translator was updated. Dutch Dimitri van Heesch dimitri@NOSPAM.stack.nl - 1.3.8 + up-to-date English @@ -137,7 +144,7 @@ when the translator was updated. Italian Alessandro Falappa
    Ahmed Aldo Faisal alessandro@NOSPAM.falappa.net
    aaf23@NOSPAM.cam.ac.uk - 1.3.8 + up-to-date Japanese @@ -221,7 +228,7 @@ when the translator was updated. Spanish Francisco Oltra Thennet foltra@NOSPAM.puc.cl - 1.3.08 + 1.3.8 Swedish @@ -250,23 +257,25 @@ when the translator was updated. \hline \hline - Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny chino@icmc.sc.usp.br} & 1.3.8 \\ + Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & up-to-date \\ + \hline + Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny chino@icmc.sc.usp.br} & up-to-date \\ \hline Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\ \hline - Chinese & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & 1.2.13 \\ - ~ & Wang Weihan & {\tt\tiny wangweihan@capinfo.com.cn} & ~ \\ + Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & 1.3.08 \\ + ~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\ \hline Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\ ~ & Gary Lee & {\tt\tiny garylee@ecosine.com.tw} & ~ \\ \hline - Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.tel.hr} & 1.3.8 \\ + Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.tel.hr} & up-to-date \\ \hline - Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & 1.3.8 \\ + Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\ \hline Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny erik@mail.nu} & 1.3.8 \\ \hline - Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & 1.3.8 \\ + Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ \hline English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ \hline @@ -281,7 +290,7 @@ when the translator was updated. Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari@diatronltd.com} & 1.3.8 \\ ~ & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & ~ \\ \hline - Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & 1.3.8 \\ + Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & up-to-date \\ ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\ \hline Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.3.3 \\ @@ -314,7 +323,7 @@ when the translator was updated. \hline Slovene & Matjaz Ostroversnik & {\tt\tiny matjaz.ostroversnik@zrs-tk.si} & 1.2.16 \\ \hline - Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.08 \\ + Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\ \hline Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.3.3 \\ \hline diff --git a/doc/maintainers.txt b/doc/maintainers.txt index 9d19367..2022a32 100644 --- a/doc/maintainers.txt +++ b/doc/maintainers.txt @@ -9,6 +9,9 @@ % the maintainer(s) for the language (one line, one maintainer) % in the form: +TranslatorAfrikaans +Johan Prinsloo: johan@zippysnoek.com + TranslatorBrazilian Fabio "FJTC" Jun Takada Chino: chino@icmc.sc.usp.br @@ -16,8 +19,8 @@ TranslatorCatalan Albert Mora: amora@iua.upf.es TranslatorChinese +Li Daobing: lidaobing@gmail.com Wei Liu: liuwei@asiainfo.com -Wang Weihan: wangweihan@capinfo.com.cn TranslatorChinesetraditional Daniel YC Lin: daniel@twpda.com diff --git a/doc/translator.py b/doc/translator.py index c3527a8..b2da2a6 100644 --- a/doc/translator.py +++ b/doc/translator.py @@ -42,6 +42,7 @@ 2004/04/16 - Added new tokens to the tokenizer (to remove some warnings). 2004/05/25 - Added from __future__ import generators not to force Python 2.3. 2004/06/03 - Removed dependency on textwrap module. + 2004/07/07 - Fixed the bug in the fill() function. """ from __future__ import generators @@ -70,7 +71,7 @@ def fill(s): else: lines.append(line) # another full line formed line = word # next line started - + lines.append(line) # the last line return '\n'.join(lines) @@ -1390,7 +1391,7 @@ class TrManager: alphabetically). This means that they derive from the Translator class and they implement all %d of the required methods. Anyway, there still may be some details listed even - for them. Please, see the details for them:''' + for them:''' s = s % len(self.requiredMethodsDic) f.write('-' * 70 + '\n') f.write(fill(s) + '\n\n') diff --git a/examples/.cvsignore b/examples/.cvsignore new file mode 100644 index 0000000..f3c7a7c --- /dev/null +++ b/examples/.cvsignore @@ -0,0 +1 @@ +Makefile diff --git a/libmd5/.cvsignore b/libmd5/.cvsignore new file mode 100644 index 0000000..555eb7c --- /dev/null +++ b/libmd5/.cvsignore @@ -0,0 +1,2 @@ +Makefile +libmd5.pro diff --git a/libpng/.cvsignore b/libpng/.cvsignore new file mode 100644 index 0000000..b8950e1 --- /dev/null +++ b/libpng/.cvsignore @@ -0,0 +1,2 @@ +Makefile +libpng.pro diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index 06555d7..7c38345 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,6 +1,6 @@ Summary: A documentation system for C/C++. Name: doxygen -Version: 1.3.7_20040704 +Version: 1.3.7_20040718 Release: 1 Epoch: 1 Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz diff --git a/qtools/.cvsignore b/qtools/.cvsignore new file mode 100644 index 0000000..c703ad3 --- /dev/null +++ b/qtools/.cvsignore @@ -0,0 +1,2 @@ +Makefile +qtools.pro diff --git a/src/.cvsignore b/src/.cvsignore new file mode 100644 index 0000000..6f899dd --- /dev/null +++ b/src/.cvsignore @@ -0,0 +1,5 @@ +Makefile +doxygen.pro +doxytag.pro +libdoxycfg.pro +libdoxygen.pro diff --git a/src/classdef.h b/src/classdef.h index 418b3b7..3f6bf8e 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -75,6 +75,7 @@ class ClassDef : public Definition QCString getReference() const; bool isReference() const; bool isLocal() const { return m_isLocal; } + bool isArtificial() const { return m_artificial; } bool hasDocumentation() const; diff --git a/src/code.l b/src/code.l index e42b1c8..4961c36 100644 --- a/src/code.l +++ b/src/code.l @@ -2017,7 +2017,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) g_name+=yytext; BEGIN( FuncCall ); } -\" { +\" { startFontClass("stringliteral"); g_code->codify(yytext); g_lastStringContext=YY_START; diff --git a/src/config.l b/src/config.l index 5b644a3..0371916 100644 --- a/src/config.l +++ b/src/config.l @@ -1943,7 +1943,17 @@ void Config::create() "by executing (via popen()) the command , where \n" "is the value of the INPUT_FILTER tag, and is the name of an \n" "input file. Doxygen will then use the output that the filter program writes \n" - "to standard output. \n" + "to standard output. If FILTER_PATTERNS is specified, this tag will be \n" + "ignored. \n" + ); + cl = addList( + "FILTER_PATTERNS", + "The FILTER_PATTERNS tag can be used to specify filters on a per file pattern \n" + "basis. Doxygen will compare the file name with each pattern and apply the \n" + "filter if there is a match. The filters are a list of the form: \n" + "pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further \n" + "info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER \n" + "is applied to all files. \n" ); cl->setWidgetType(ConfigList::File); cb = addBool( diff --git a/src/definition.cpp b/src/definition.cpp index 6581847..346b7e6 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -246,7 +246,7 @@ static bool readCodeFragment(const char *fileName, { //printf("readCodeFragment(%s,%d,%d)\n",fileName,startLine,endLine); if (fileName==0 || fileName[0]==0) return FALSE; // not a valid file name - QCString cmd=Config_getString("INPUT_FILTER")+" \""+fileName+"\""; + QCString cmd=getFileFilter(fileName)+" \""+fileName+"\""; FILE *f = Config_getBool("FILTER_SOURCE_FILES") ? popen(cmd,"r") : fopen(fileName,"r"); bool found=FALSE; if (f) diff --git a/src/docparser.cpp b/src/docparser.cpp index b324348..3f74dcf 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -1251,6 +1251,17 @@ DocAnchor::DocAnchor(DocNode *parent,const QString &id,bool newAnchor) //--------------------------------------------------------------------------- +DocVerbatim::DocVerbatim(DocNode *parent,const QString &context, + const QString &text, Type t,bool isExample, + const QString &exampleFile) + : m_parent(parent), m_context(context), m_text(text), m_type(t), + m_isExample(isExample), m_exampleFile(exampleFile), m_relPath(g_relPath) +{ +} + + +//--------------------------------------------------------------------------- + void DocInclude::parse() { DBG(("DocInclude::parse(file=%s,text=%s)\n",m_file.data(),m_text.data())); @@ -1480,7 +1491,7 @@ bool DocXRefItem::parse() //--------------------------------------------------------------------------- DocFormula::DocFormula(DocNode *parent,int id) : - m_parent(parent) + m_parent(parent), m_relPath(g_relPath) { QString formCmd; formCmd.sprintf("\\form#%d",id); @@ -4117,7 +4128,7 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag break; case HTML_UNKNOWN: warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unsupported html tag <%s> found", tagName.data()); - m_children.append(new DocWord(this, "<"+tagName+">")); + m_children.append(new DocWord(this, "<"+tagName+tagHtmlAttribs.toString()+">")); break; break; default: @@ -4257,8 +4268,8 @@ int DocPara::handleHtmlEndTag(const QString &tagName) // ignore tag (can be part of break; case HTML_UNKNOWN: - warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unsupported html tag found", - tagName.data()); + warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unsupported html tag found", tagName.data()); + m_children.append(new DocWord(this,"")); break; default: // we should not get here! diff --git a/src/docparser.h b/src/docparser.h index 1b75451..84fe830 100644 --- a/src/docparser.h +++ b/src/docparser.h @@ -357,9 +357,7 @@ class DocVerbatim : public DocNode enum Type { Code, HtmlOnly, ManOnly, LatexOnly, XmlOnly, Verbatim, Dot }; DocVerbatim(DocNode *parent,const QString &context, const QString &text, Type t,bool isExample, - const QString &exampleFile) : - m_parent(parent), m_context(context), m_text(text), m_type(t), - m_isExample(isExample), m_exampleFile(exampleFile) {} + const QString &exampleFile); Kind kind() const { return Kind_Verbatim; } Type type() const { return m_type; } QString text() const { return m_text; } @@ -368,6 +366,7 @@ class DocVerbatim : public DocNode void accept(DocVisitor *v) { v->visit(this); } bool isExample() const { return m_isExample; } QString exampleFile() const { return m_exampleFile; } + QString relPath() const { return m_relPath; } private: DocNode *m_parent; @@ -376,6 +375,7 @@ class DocVerbatim : public DocNode Type m_type; bool m_isExample; QString m_exampleFile; + QString m_relPath; }; @@ -455,6 +455,7 @@ class DocFormula : public DocNode Kind kind() const { return Kind_Formula; } QString name() const { return m_name; } QString text() const { return m_text; } + QString relPath() const { return m_relPath; } int id() const { return m_id; } DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { v->visit(this); } @@ -463,6 +464,7 @@ class DocFormula : public DocNode DocNode *m_parent; QString m_name; QString m_text; + QString m_relPath; int m_id; }; diff --git a/src/dot.cpp b/src/dot.cpp index 7ebc1dd..4bde818 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -2433,9 +2433,11 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir, * dotfiles to generate image maps. * \param inFile just the basename part of the filename * \param outDir output directory + * \param relPath relative path the to root of the output dir * \returns a string which is the HTML image map (without the \\) */ -QString getDotImageMapFromFile(const QString& inFile, const QString& outDir) +QString getDotImageMapFromFile(const QString& inFile, const QString& outDir, + const QCString &relPath) { QString outFile = inFile + ".map"; @@ -2458,7 +2460,7 @@ QString getDotImageMapFromFile(const QString& inFile, const QString& outDir) } QString result; QTextOStream tmpout(&result); - convertMapFile(tmpout, outFile, "",TRUE); + convertMapFile(tmpout, outFile, relPath ,TRUE); QDir().remove(outFile); // printf("result=%s\n",result.data()); diff --git a/src/dot.h b/src/dot.h index c948ae4..a70f561 100644 --- a/src/dot.h +++ b/src/dot.h @@ -202,7 +202,8 @@ class DotCallGraph void generateGraphLegend(const char *path); void writeDotGraphFromFile(const char *inFile,const char *outDir, const char *outFile,GraphOutputFormat format); -QString getDotImageMapFromFile(const QString& inFile, const QString& outDir); +QString getDotImageMapFromFile(const QString& inFile, const QString& outDir, + const QCString& relPath); #endif diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 15f10d9..98bb3ac 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -119,6 +119,8 @@ SearchIndex * Doxygen::searchIndex=0; SDict *Doxygen::symbolMap; bool Doxygen::outputToWizard=FALSE; QDict * Doxygen::htmlDirMap = 0; +QCache Doxygen::lookupCache(20000,20000); +bool Doxygen::lookupCacheEnabled=FALSE; static StringList inputFiles; static StringDict excludeNameDict(1009); // sections @@ -149,7 +151,6 @@ void clearAll() Doxygen::formulaNameDict.clear(); Doxygen::tagDestinationDict.clear(); delete Doxygen::mainPage; Doxygen::mainPage=0; - } void statistics() @@ -3387,7 +3388,7 @@ static bool findClassRelation( } baseClassName=stripTemplateSpecifiersFromScope (removeRedundantWhiteSpace(baseClassName)); - MemberDef *baseClassTypeDef; + MemberDef *baseClassTypeDef=0; QCString templSpec; ClassDef *baseClass=getResolvedClass(explicitGlobalScope ? 0 : cd, cd->getFileDef(), // todo: is this ok? @@ -3417,7 +3418,9 @@ static bool findClassRelation( ); int i; - if (baseClass==0 && (i=baseClassName.find('<'))!=-1) + int si=baseClassName.findRev("::"); + if (si==-1) si=0; + if (baseClass==0 && (i=baseClassName.find('<',si))!=-1) // base class has template specifiers { // TODO: here we should try to find the correct template specialization @@ -3450,10 +3453,10 @@ static bool findClassRelation( //printf("cd=%p baseClass=%p\n",cd,baseClass); bool found=baseClass!=0 && (baseClass!=cd || mode==TemplateInstances); - if (!found && (i=baseClassName.findRev("::"))!=-1) + if (!found && si!=-1) { // replace any namespace aliases - replaceNamespaceAliases(baseClassName,i); + replaceNamespaceAliases(baseClassName,si); baseClass=getResolvedClass(cd,cd->getFileDef(),baseClassName); found=baseClass!=0 && baseClass!=cd; } @@ -3493,7 +3496,11 @@ static bool findClassRelation( else if (mode==DocumentedOnly) { QCString usedName; - if (baseClassTypeDef) usedName=biName; + if (baseClassTypeDef) + { + usedName=biName; + //printf("***** usedName=%s templSpec=%s\n",usedName.data(),templSpec.data()); + } cd->insertBaseClass(baseClass,usedName,bi->prot,bi->virt,templSpec); // add this class as super class to the base class baseClass->insertSubClass(cd,bi->prot,bi->virt,templSpec); @@ -6975,7 +6982,8 @@ static void copyAndFilterFile(const char *fileName,BufStr &dest) QFileInfo fi(fileName); if (!fi.exists()) return; - if (Config_getString("INPUT_FILTER").isEmpty()) + QCString filterName = getFileFilter(fileName); + if (filterName.isEmpty()) { QFile f(fileName); if (!f.open(IO_ReadOnly)) @@ -6994,11 +7002,11 @@ static void copyAndFilterFile(const char *fileName,BufStr &dest) } else { - QCString cmd=Config_getString("INPUT_FILTER")+" "+fileName; + QCString cmd=filterName+" "+fileName; FILE *f=popen(cmd,"r"); if (!f) { - err("Error: could not execute filter %s\n",Config_getString("INPUT_FILTER").data()); + err("Error: could not execute filter %s\n",filterName.data()); return; } const int bufSize=1024; @@ -7428,6 +7436,8 @@ void initDoxygen() excludeNameDict.setAutoDelete(TRUE); Doxygen::memGrpInfoDict.setAutoDelete(TRUE); Doxygen::tagDestinationDict.setAutoDelete(TRUE); + Doxygen::lookupCache.setAutoDelete(TRUE); + Doxygen::lookupCacheEnabled=FALSE; } void cleanUpDoxygen() @@ -8225,6 +8235,10 @@ void parseInput() computeClassRelations(); classEntries.clear(); + // from now on the class relations are fixed and we can + // start to cache them to improve performance + Doxygen::lookupCacheEnabled=TRUE; + msg("Searching for enumerations...\n"); findEnums(root); findEnumDocumentation(root); diff --git a/src/doxygen.h b/src/doxygen.h index b526495..32d2cbf 100644 --- a/src/doxygen.h +++ b/src/doxygen.h @@ -22,6 +22,7 @@ #include "qtbc.h" #include #include +#include #include "groupdef.h" #include "filedef.h" #include "classdef.h" @@ -51,6 +52,15 @@ class StringDict : public QDict virtual ~StringDict() {} }; +struct LookupInfo +{ + LookupInfo(ClassDef *cd=0,MemberDef *td=0,QCString ts="") + : classDef(cd), typeDef(td), templSpec(ts) {} + ClassDef *classDef; + MemberDef *typeDef; + QCString templSpec; +}; + extern QCString spaces; @@ -101,6 +111,8 @@ class Doxygen static SDict *symbolMap; static bool outputToWizard; static QDict *htmlDirMap; + static QCache lookupCache; + static bool lookupCacheEnabled; }; void initDoxygen(); diff --git a/src/htmlattrib.h b/src/htmlattrib.h index 371f3d5..a62c8e5 100644 --- a/src/htmlattrib.h +++ b/src/htmlattrib.h @@ -35,6 +35,18 @@ class HtmlAttribList : public QList { operator=(l); } HtmlAttribList &operator=(const HtmlAttribList &l) { clear(); QList::operator=(l); return *this; } + QString toString() const + { + HtmlAttribList *that = (HtmlAttribList *)this; + QString result; + HtmlAttrib *attr=that->first(); + while (attr) + { + result+=" "+attr->name+"=\""+attr->value+"\""; + attr=that->next(); + } + return result; + } private: QCollection::Item newItem( QCollection::Item d ) { return (QCollection::Item)new HtmlAttrib(*(HtmlAttrib *)d); } diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp index dd1f6df..de1dba2 100644 --- a/src/htmldocvisitor.cpp +++ b/src/htmldocvisitor.cpp @@ -28,7 +28,7 @@ #include "config.h" #define PREFRAG_START "
    "
    -#define PREFRAG_END   "
    " static QString htmlAttribsToString(const HtmlAttribList &attribs) { @@ -228,7 +228,7 @@ void HtmlDocVisitor::visit(DocVerbatim *s) file.close(); m_t << "
    " << endl; - writeDotFile(fileName); + writeDotFile(fileName,s->relPath()); m_t << "
    " << endl; file.remove(); @@ -308,13 +308,14 @@ void HtmlDocVisitor::visit(DocFormula *f) if (m_hide) return; bool bDisplay = f->text().at(0)=='\\'; if (bDisplay) m_t << "

    " << endl; - m_t << "\"";text()); m_t << "\""; /// @todo cache image dimensions on formula generation and give height/width /// for faster preloading and better rendering of the page - m_t << " src=\"" << f->name() << ".png\">"; + m_t << " src=\"" << f->relPath() << f->name() << ".png\">"; if (bDisplay) m_t << endl << "

    " << endl; } @@ -742,7 +743,7 @@ void HtmlDocVisitor::visitPost(DocImage *img) void HtmlDocVisitor::visitPre(DocDotFile *df) { if (m_hide) return; - writeDotFile(df->file()); + writeDotFile(df->file(),""); m_t << "

    " << endl; if (df->hasCaption()) { @@ -1053,7 +1054,7 @@ void HtmlDocVisitor::popEnabled() delete v; } -void HtmlDocVisitor::writeDotFile(const QString &fileName) +void HtmlDocVisitor::writeDotFile(const QString &fileName,const QString &relPath) { QString baseName=fileName; int i; @@ -1065,10 +1066,10 @@ void HtmlDocVisitor::writeDotFile(const QString &fileName) writeDotGraphFromFile(fileName,outDir,baseName,BITMAP); QString mapName = baseName+".map"; QString mapFile = fileName+".map"; - m_t << "\""" << endl; - QString imap = getDotImageMapFromFile(fileName,outDir); + QString imap = getDotImageMapFromFile(fileName,outDir,relPath.data()); m_t << "" << imap << "" << endl; } diff --git a/src/htmldocvisitor.h b/src/htmldocvisitor.h index 0650478..9d96e46 100644 --- a/src/htmldocvisitor.h +++ b/src/htmldocvisitor.h @@ -137,7 +137,7 @@ class HtmlDocVisitor : public DocVisitor void startLink(const QString &ref,const QString &file, const QString &relPath,const QString &anchor); void endLink(); - void writeDotFile(const QString &fileName); + void writeDotFile(const QString &fileName,const QString &relPath); void pushEnabled(); void popEnabled(); diff --git a/src/lang_cfg.h b/src/lang_cfg.h index 085c2a0..e44d5f5 100644 --- a/src/lang_cfg.h +++ b/src/lang_cfg.h @@ -28,3 +28,4 @@ #define LANG_SR #define LANG_CA #define LANG_LT +#define LANG_ZA diff --git a/src/language.cpp b/src/language.cpp index 8cc1214..7df83f9 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -115,6 +115,9 @@ #ifdef LANG_LT #include "translator_lt.h" #endif +#ifdef LANG_ZA +#include "translator_za.h" +#endif #endif #define L_EQUAL(a) !stricmp(langName,a) diff --git a/src/libdoxygen.pro.in b/src/libdoxygen.pro.in index 30a9042..5b65522 100644 --- a/src/libdoxygen.pro.in +++ b/src/libdoxygen.pro.in @@ -115,6 +115,7 @@ HEADERS = bufstr.h \ translator_sr.h \ translator_tw.h \ translator_ua.h \ + translator_za.h \ unistd.h \ util.h \ version.h \ diff --git a/src/memberdef.cpp b/src/memberdef.cpp index ce37bac..752e2d8 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -578,10 +578,10 @@ bool MemberDef::isLinkableInProject() const //printf("in a namespace but namespace not linkable!\n"); return FALSE; // in namespace but namespace not linkable } - if (!group && fileDef && !fileDef->isLinkableInProject()) + if (!group && !nspace && fileDef && !fileDef->isLinkableInProject()) { //printf("in a file but file not linkable!\n"); - return FALSE; // in file but file not linkable + return FALSE; // in file (and not in namespace) but file not linkable } if (prot==Private && !Config_getBool("EXTRACT_PRIVATE") && mtype!=Friend) { diff --git a/src/memberdef.h b/src/memberdef.h index 564fdc0..736dc2d 100644 --- a/src/memberdef.h +++ b/src/memberdef.h @@ -270,7 +270,9 @@ class MemberDef : public Definition // cached typedef functions bool isTypedefValCached() const { return m_isTypedefValCached; } ClassDef *getCachedTypedefVal() const { return m_cachedTypedefValue; } - void cacheTypedefVal(ClassDef *val) { m_isTypedefValCached=TRUE; m_cachedTypedefValue=val; } + QCString getCachedTypedefTemplSpec() const { return m_cachedTypedefTemplSpec; } + void cacheTypedefVal(ClassDef *val,const QCString &templSpec) + { m_isTypedefValCached=TRUE; m_cachedTypedefValue=val; m_cachedTypedefTemplSpec=templSpec; } // declaration <-> definition relation void setMemberDefinition(MemberDef *md) { memDef=md; } @@ -360,6 +362,7 @@ class MemberDef : public Definition bool m_isTypedefValCached; ClassDef *m_cachedTypedefValue; + QCString m_cachedTypedefTemplSpec; // inbody documentation int m_inbodyLine; diff --git a/src/pre.l b/src/pre.l index 847d8db..a33ffe2 100644 --- a/src/pre.l +++ b/src/pre.l @@ -190,9 +190,10 @@ static FILE *checkAndOpenFile(const QCString &absName) if (alreadyIncluded) return 0; - if (!Config_getString("INPUT_FILTER").isEmpty()) + QCString filterName = getFileFilter(absName); + if (!filterName.isEmpty()) { - QCString cmd = Config_getString("INPUT_FILTER")+" "+absName; + QCString cmd = filterName+" "+absName; f=popen(cmd,"r"); if (!f) err("Error: could not execute filter %s\n",cmd.data()); } @@ -1480,7 +1481,9 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) . {ID} { Define *def; - if ((def=isDefined(yytext)) && !def->isPredefined) + if ((def=isDefined(yytext)) + /*&& !def->isPredefined*/ + ) { //printf("undefining %s\n",yytext); def->undef=TRUE; @@ -1955,7 +1958,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) { FileState *fs=g_includeStack.pop(); //fileDefineCache->merge(g_yyFileName,fs->fileName); - if (Config_getString("INPUT_FILTER").isEmpty()) + if (getFileFilter(fs->fileName.data()).isEmpty()) fclose(fs->filePtr); else pclose(fs->filePtr); @@ -2203,7 +2206,7 @@ void preprocessFile(const char *fileName,BufStr &output) } - QCString &inputFilter = Config_getString("INPUT_FILTER"); + QCString inputFilter = getFileFilter(fileName); if (inputFilter.isEmpty()) { preYYin = fopen(fileName,"r"); diff --git a/src/translator_cn.h b/src/translator_cn.h index f044067..7b2756a 100644 --- a/src/translator_cn.h +++ b/src/translator_cn.h @@ -24,7 +24,7 @@ */ #define CN_SPC -class TranslatorChinese : public TranslatorAdapter_1_2_13 +class TranslatorChinese : public TranslatorAdapter_1_3_3 { public: /*! Used for identification of the language. The identification @@ -36,24 +36,24 @@ class TranslatorChinese : public TranslatorAdapter_1_2_13 virtual QCString idLanguage() { return "chinese"; } - /*! 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 - *
    "\\usepackage[german]{babel}\n"
    -		 * 
    - * or - *
    "\\usepackage{polski}\n"
    -		 * "\\usepackage[latin2]{inputenc}\n"
    -		 * "\\usepackage[T1]{fontenc}\n"
    -		 * 
    - * - * The English LaTeX does not use such commands. Because of this - * the empty string is returned in this implementation. - */ - virtual QCString latexLanguageSupportCommand() - { + /*! 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 + *
    "\\usepackage[german]{babel}\n"
    +     * 
    + * or + *
    "\\usepackage{polski}\n"
    +     * "\\usepackage[latin2]{inputenc}\n"
    +     * "\\usepackage[T1]{fontenc}\n"
    +     * 
    + * + * The English LaTeX does not use such commands. Because of this + * the empty string is returned in this implementation. + */ + virtual QCString latexLanguageSupportCommand() + { return ""; - } + } /*! return the language charset. This will be used for the HTML output */ @@ -495,8 +495,8 @@ class TranslatorChinese : public TranslatorAdapter_1_2_13 case ClassDef::Struct: result+="结构"; break; case ClassDef::Union: result+="联合"; break; case ClassDef::Interface: result+="接口"; break; - case ClassDef::Protocol: result+="protocol"; break; // translate me! - case ClassDef::Category: result+="category"; break; // translate me! + case ClassDef::Protocol: result+="协议"; break; // translate me! + case ClassDef::Category: result+="分类"; break; // translate me! case ClassDef::Exception: result+="异常"; break; } result+="参考"; @@ -661,8 +661,8 @@ class TranslatorChinese : public TranslatorAdapter_1_2_13 case ClassDef::Struct: result+="结构"; break; case ClassDef::Union: result+="联合"; break; case ClassDef::Interface: result+="接口"; break; - case ClassDef::Protocol: result+="protocol"; break; // translate me! - case ClassDef::Category: result+="category"; break; // translate me! + case ClassDef::Protocol: result+="协议"; break; // translate me! + case ClassDef::Category: result+="分类"; break; // translate me! case ClassDef::Exception: result+="异常"; break; } result+="的文档由以下文件生成:"; @@ -1282,6 +1282,194 @@ class TranslatorChinese : public TranslatorAdapter_1_2_13 { return "参考"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.13 +////////////////////////////////////////////////////////////////////////// + + /*! used in member documentation blocks to produce a list of + * members that are implemented by this one. + */ + virtual QCString trImplementedFromList(int numEntries) + { + /* return "Implements "+trWriteList(numEntries)+"."; */ + return "实现了"CN_SPC+trWriteList(numEntries)+"。"; + } + + /*! used in member documentation blocks to produce a list of + * all members that implement this abstract member. + */ + virtual QCString trImplementedInList(int numEntries) + { + /* return "Implemented in "+trWriteList(numEntries)+"."; */ + return "在"CN_SPC+trWriteList(numEntries)+CN_SPC"内被实现。"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + /* return "Table of Contents"; */ + return "目录"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.17 +////////////////////////////////////////////////////////////////////////// + + /*! Used as the header of the list of item that have been + * flagged deprecated + */ + virtual QCString trDeprecatedList() + { +/* return "Deprecated List"; */ + return "过时列表"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.18 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a header for declaration section of the events found in + * a C# program + */ + virtual QCString trEvents() + { + /* return "Events"; */ + return "事件"; + } + /*! Header used for the documentation section of a class' events. */ + virtual QCString trEventDocumentation() + { + /* return "Event Documentation"; */ + return "事件文档"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a heading for a list of Java class types with package scope. + */ + virtual QCString trPackageTypes() + { + /* return "Package Types"; */ + return "模块类型"; + } + /*! Used as a heading for a list of Java class functions with package + * scope. + */ + virtual QCString trPackageMembers() + { + /* return "Package Functions"; */ + return "模块函数"; + } + /*! Used as a heading for a list of static Java class functions with + * package scope. + */ + virtual QCString trStaticPackageMembers() + { + /* return "Static Package Functions"; */ + return "静态模块函数"; + } + /*! Used as a heading for a list of Java class variables with package + * scope. + */ + virtual QCString trPackageAttribs() + { + /* return "Package Attributes"; */ + return "模块属性"; + } + /*! Used as a heading for a list of static Java class variables with + * package scope. + */ + virtual QCString trStaticPackageAttribs() + { + /* return "Static Package Attributes"; */ + return "静态模块属性"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.1 +////////////////////////////////////////////////////////////////////////// + + /*! Used in the quick index of a class/file/namespace member list page + * to link to the unfiltered list of all members. + */ + virtual QCString trAll() + { + /* return "All"; */ + return "全部"; + } + /*! Put in front of the call graph for a function. */ + virtual QCString trCallGraph() + { + /* return "Here is the call graph for this function:"; */ + return "函数调用图:"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.3 +////////////////////////////////////////////////////////////////////////// + + /*! When the search engine is enabled this text is put in the header + * of each page before the field where one can enter the text to search + * for. + */ + virtual QCString trSearchForIndex() + { + /* return "Search for"; */ + return "搜索"; + } + /*! This string is used as the title for the page listing the search + * results. + */ + virtual QCString trSearchResultsTitle() + { + /* return "Search Results"; */ + return "搜索结果"; + } + /*! This string is put just before listing the search results. The + * text can be different depending on the number of documents found. + * Inside the text you can put the special marker $num to insert + * the number representing the actual number of search results. + * The @a numDocuments parameter can be either 0, 1 or 2, where the + * value 2 represents 2 or more matches. HTML markup is allowed inside + * the returned string. + */ + virtual QCString trSearchResults(int numDocuments) + { + if (numDocuments==0) + { + /* return "Sorry, no documents matching your query."; */ + return "对不起,找不到与你的查询相符的文档。"; + } + else if (numDocuments==1) + { + /* return "Found 1 document matching your query."; */ + return "找到1篇与你的查询相符的文档。"; + } + else + { + /* return "Found $num documents matching your query. " + "Showing best matches first."; */ + return "找到$num篇与你的查询相符的文档。" + "先显示最吻合的文档。"; + } + } + /*! This string is put before the list of matched words, for each search + * result. What follows is the list of words that matched the query. + */ + virtual QCString trSearchMatches() + { + return "Matches:"; + return "符合的结果:"; + } }; #endif diff --git a/src/translator_za.h b/src/translator_za.h new file mode 100644 index 0000000..7f115dc --- /dev/null +++ b/src/translator_za.h @@ -0,0 +1,1550 @@ +/****************************************************************************** + * + * + * + * Copyright (C) 1997-2004 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ + + /* + * Bronne vir hierdie vertaling (Sources for this translation): + * Die Stigting vir Afrikaans se rekenaartermelys: + * - http://www.afrikaans.com/rekenaarterme.html + * Werkgroep vir Afrikaanse IT-terme: + * - http://www.vertaal.org/index.html + */ + +#ifndef TRANSLATOR_ZA_H +#define TRANSLATOR_ZA_H + +class TranslatorAfrikaans : public Translator +{ + public: + + // --- 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 "afrikaans"; } + + /*! 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 + *
    "\\usepackage[german]{babel}\n"
    +     *  
    + * or + *
    "\\usepackage{polski}\n"
    +     *  "\\usepackage[latin2]{inputenc}\n"
    +     *  "\\usepackage[T1]{fontenc}\n"
    +     *  
    + * + * The Afrikaans LaTeX does not use such commands. Because of this + * the empty string is returned in this implementation. + */ + virtual QCString latexLanguageSupportCommand() + { + //should we use return "\\usepackage[afrikaans]{babel}\n"; + // not sure - for now return an empty string + return ""; + } + + /*! 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 "Verwante Funksies"; } + + /*! subscript for the related functions. */ + virtual QCString trRelatedSubscript() + { return "(Let daarop dat hierdie nie lede funksies is nie.)"; } + + /*! header that is put before the detailed description of files, classes and namespaces. */ + virtual QCString trDetailedDescription() + { return "Detail Beskrywing"; } + + /*! header that is put before the list of typedefs. */ + virtual QCString trMemberTypedefDocumentation() + { return "Lede Typedef Dokumentasie"; } + + /*! header that is put before the list of enumerations. */ + virtual QCString trMemberEnumerationDocumentation() + { return "Lede Enumerasie Dokumentasie"; } + + /*! header that is put before the list of member functions. */ + virtual QCString trMemberFunctionDocumentation() + { return "Lede Funksie Dokumentasie"; } + + /*! header that is put before the list of member attributes. */ + virtual QCString trMemberDataDocumentation() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Veld Dokumentasie"; + } + else + { + return "Lede Data Dokumentasie"; + } + } + + /*! this is the text of a link put after brief descriptions. */ + virtual QCString trMore() + { return "Meer detail..."; } + + /*! put in the class documentation */ + virtual QCString trListOfAllMembers() + { return "Lys van alle lede."; } + + /*! used as the title of the "list of all members" page of a class */ + virtual QCString trMemberList() + { return "Lede Lys"; } + + /*! this is the first part of a sentence that is followed by a class name */ + virtual QCString trThisIsTheListOfAllMembers() + { return "Hierdie is 'n volledige lys van lede vir "; } + + /*! this is the remainder of the sentence after the class name */ + virtual QCString trIncludingInheritedMembers() + { return ", insluitend alle afgeleide lede."; } + + /*! 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="Automaties gegenereer deur Doxygen"; + if (s) result+=(QCString)" vir "+s; + result+=" van die bron kode af."; + return result; + } + + /*! put after an enum name in the list of all members */ + virtual QCString trEnumName() + { return "enum naam"; } + + /*! put after an enum value in the list of all members */ + virtual QCString trEnumValue() + { return "enum waarde"; } + + /*! put after an undocumented member in the list of all members */ + virtual QCString trDefinedIn() + { return "gedefinieër in"; } + + // quick reference sections + + /*! 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 "Modules"; } + + /*! This is put above each page as a link to the class hierarchy */ + virtual QCString trClassHierarchy() + { return "Klas Hierargie"; } + + /*! 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 "Data Strukture"; + } + else + { + return "Klas Lys"; + } + } + + /*! This is put above each page as a link to the list of documented files */ + virtual QCString trFileList() + { return "Leër Lys"; } + + /*! This is put above each page as a link to the list of all verbatim headers */ + virtual QCString trHeaderFiles() + { return "Kop Leër"; } + + /*! 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 "Data Velde"; + } + else + { + return "Klas Lede"; + } + } + + /*! This is put above each page as a link to all members of files. */ + virtual QCString trFileMembers() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Globals"; + } + else + { + return "Leër Lede"; + } + } + + /*! This is put above each page as a link to all related pages. */ + virtual QCString trRelatedPages() + { return "Verwante Bladsye"; } + + /*! This is put above each page as a link to all examples. */ + virtual QCString trExamples() + { return "Voorbeelde"; } + + /*! This is put above each page as a link to the search engine. */ + virtual QCString trSearch() + { return "Soek"; } + + /*! This is an introduction to the class hierarchy. */ + virtual QCString trClassHierarchyDescription() + { + return "Hierdie afgeleide lys word rofweg gesorteer: "; + } + + /*! This is an introduction to the list with all files. */ + virtual QCString trFileListDescription(bool extractAll) + { + QCString result="Hier is 'n lys van alle "; + if (!extractAll) result+="gedokumenteerde "; + result+="leërs met kort beskrywings:"; + return result; + } + + /*! This is an introduction to the annotated compound list. */ + virtual QCString trCompoundListDescription() + { + + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return " Data strukture met kort beskrywings:"; + } + else + { + return "Klasse, structs, " + "unions en intervlakke met kort beskrywings:"; + } + } + + /*! This is an introduction to the page with all class members. */ + virtual QCString trCompoundMembersDescription(bool extractAll) + { + QCString result="'n Lys van alle "; + if (!extractAll) + { + result+="gedokumenteerde "; + } + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="struct en union velde"; + } + else + { + result+="klas lede"; + } + result+=" met skakels na "; + if (!extractAll) + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="die struct/union dokumentasie vir elke veld:"; + } + else + { + result+="die klas dokumentasie vir elke lid:"; + } + } + else + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="die structures/unions waaraan hulle behoort:"; + } + else + { + result+="die klasse waaraan hulle behoort:"; + } + } + return result; + } + + /*! This is an introduction to the page with all file members. */ + virtual QCString trFileMembersDescription(bool extractAll) + { + QCString result="'n Lys van alle "; + if (!extractAll) result+="gedokumenteerde "; + + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="funksies, veranderlikes, defines, enums, en typedefs"; + } + else + { + result+="leër lede"; + } + result+=" met skakels na "; + if (extractAll) + result+="die leërs waaraan hulle behoort:"; + else + result+="die dokumentasie:"; + return result; + } + + /*! This is an introduction to the page with the list of all header files. */ + virtual QCString trHeaderFilesDescription() + { return "Die kop leers waaruit die API bestaan:"; } + + /*! This is an introduction to the page with the list of all examples */ + virtual QCString trExamplesDescription() + { return "'n Lys van alle voorbeelde:"; } + + /*! This is an introduction to the page with the list of related pages */ + virtual QCString trRelatedPagesDescription() + { return "'n Lys van alle verwante dokumentasie:"; } + + /*! This is an introduction to the page with the list of class/file groups */ + virtual QCString trModulesDescription() + { return "'n Lys van alle modules:"; } + + /*! This sentences is used in the annotated class/file lists if no brief + * description is given. + */ + virtual QCString trNoDescriptionAvailable() + { return "Geen beskrywings beskikbaar"; } + + // index titles (the project name is prepended for these) + + + /*! This is used in HTML as the title of index.html. */ + virtual QCString trDocumentation() + { return "Dokumentasie"; } + + /*! This is used in LaTeX as the title of the chapter with the + * index of all groups. + */ + virtual QCString trModuleIndex() + { return "Module Indeks"; } + + /*! This is used in LaTeX as the title of the chapter with the + * class hierarchy. + */ + virtual QCString trHierarchicalIndex() + { return "Hierargiese Indeks"; } + + /*! 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 "Data Strukture Indeks"; + } + else + { + return "Klas Indeks"; + } + } + + /*! This is used in LaTeX as the title of the chapter with the + * list of all files. + */ + virtual QCString trFileIndex() + { return "Leër Indeks"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all groups. + */ + virtual QCString trModuleDocumentation() + { return "Module Dokumentasie"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all classes, structs and unions. + */ + virtual QCString trClassDocumentation() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Data Strukture Dokumentasie"; + } + else + { + return "Klas Dokumentasie"; + } + } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all files. + */ + virtual QCString trFileDocumentation() + { return "Leër Dokumentasie"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all examples. + */ + virtual QCString trExampleDocumentation() + { return "Voorbeeld Dokumentasie"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all related pages. + */ + virtual QCString trPageDocumentation() + { return "Bladsy Dokumentasie"; } + + /*! This is used in LaTeX as the title of the document */ + virtual QCString trReferenceManual() + { return "Verwysings Handleiding"; } + + /*! This is used in the documentation of a file as a header before the + * list of defines + */ + virtual QCString trDefines() + { return "Definiesies"; } + + /*! This is used in the documentation of a file as a header before the + * list of function prototypes + */ + virtual QCString trFuncProtos() + { return "Funksie Prototipes"; } + + /*! This is used in the documentation of a file as a header before the + * list of typedefs + */ + virtual QCString trTypedefs() + { return "Typedefs"; } + + /*! This is used in the documentation of a file as a header before the + * list of enumerations + */ + virtual QCString trEnumerations() + { return "Enumerations"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) functions + */ + virtual QCString trFunctions() + { return "Funksies"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trVariables() + { return "Veranderlikes"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trEnumerationValues() + { return "Enumeration waardes"; } + + /*! This is used in the documentation of a file before the list of + * documentation blocks for defines + */ + virtual QCString trDefineDocumentation() + { return "Define Documentation"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for function prototypes + */ + virtual QCString trFunctionPrototypeDocumentation() + { return "Funksie Prototipe Dokumentasie"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for typedefs + */ + virtual QCString trTypedefDocumentation() + { return "Typedef Dokumentasie"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration types + */ + virtual QCString trEnumerationTypeDocumentation() + { return "Enumeration Type Dokumentasie"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration values + */ + virtual QCString trEnumerationValueDocumentation() + { return "Enumeration Waarde Dokumentasie"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for functions + */ + virtual QCString trFunctionDocumentation() + { return "Funksie Dokumentasie"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for variables + */ + virtual QCString trVariableDocumentation() + { return "Veranderlike Dokumentasie"; } + + /*! This is used in the documentation of a file/namespace/group before + * the list of links to documented compounds + */ + virtual QCString trCompounds() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Data Strukture"; + } + else + { + return "Klasse"; + } + } + + /*! 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)"Gegenereer op "+date; + if (projName) result+=(QCString)" vir "+projName; + result+=(QCString)" deur"; + return result; + } + /*! This is part of the sentence used in the standard footer of each page. + */ + virtual QCString trWrittenBy() + { + return "geskryf deur"; + } + + /*! this text is put before a class diagram */ + virtual QCString trClassDiagram(const char *clName) + { + return (QCString)"Afleidings diagram vir "+clName+":"; + } + + /*! this text is generated when the \\internal command is used. */ + virtual QCString trForInternalUseOnly() + { return "Slegs vir interne gebruik."; } + + /*! this text is generated when the \\reimp command is used. */ + virtual QCString trReimplementedForInternalReasons() + { return "Hergeimplimenteer vir interne redes; die API word nie beinvloed nie."; } + + /*! this text is generated when the \\warning command is used. */ + virtual QCString trWarning() + { return "Waarskuwing"; } + + /*! this text is generated when the \\bug command is used. */ + virtual QCString trBugsAndLimitations() + { return "Bugs and beperkings"; } + + /*! this text is generated when the \\version command is used. */ + virtual QCString trVersion() + { return "Weergawe"; } + + /*! this text is generated when the \\date command is used. */ + virtual QCString trDate() + { return "Datum"; } + + /*! this text is generated when the \\return command is used. */ + virtual QCString trReturns() + { return "Returns"; } + + /*! this text is generated when the \\sa command is used. */ + virtual QCString trSeeAlso() + { return "Sien ook"; } + + /*! this text is generated when the \\param command is used. */ + virtual QCString trParameters() + { return "Parameters"; } + + /*! this text is generated when the \\exception command is used. */ + virtual QCString trExceptions() + { return "Exceptions"; } + + /*! this text is used in the title page of a LaTeX document. */ + virtual QCString trGeneratedBy() + { return "Gegenereer deur"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990307 +////////////////////////////////////////////////////////////////////////// + + /*! used as the title of page containing all the index of all namespaces. */ + virtual QCString trNamespaceList() + { return "Namespace Lys"; } + + /*! used as an introduction to the namespace list */ + virtual QCString trNamespaceListDescription(bool extractAll) + { + QCString result="'n Lys van alle "; + if (!extractAll) result+="gedokumenteerde "; + result+="namespaces met kort beskrywings:"; + return result; + } + + /*! used in the class documentation as a header before the list of all + * friends of a class + */ + virtual QCString trFriends() + { return "Friends"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990405 +////////////////////////////////////////////////////////////////////////// + + /*! used in the class documentation as a header before the list of all + * related classes + */ + virtual QCString trRelatedFunctionDocumentation() + { return "Friends En Verwante Funksie Dokumentasie"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990425 +////////////////////////////////////////////////////////////////////////// + + /*! used as the title of the HTML page of a class/struct/union */ + virtual QCString trCompoundReference(const char *clName, + ClassDef::CompoundType compType, + bool isTemplate) + { + QCString result=(QCString)clName; + switch(compType) + { + case ClassDef::Class: result+=" klas"; break; + case ClassDef::Struct: result+=" Struct"; break; + case ClassDef::Union: result+=" Union"; break; + case ClassDef::Interface: result+=" Intervlak"; break; + case ClassDef::Protocol: result+=" Protocol"; break; + case ClassDef::Category: result+=" Kategorie"; break; + case ClassDef::Exception: result+=" Exception"; break; + } + if (isTemplate) result+=" Template"; + result+=" Verwysing"; + return result; + } + + /*! used as the title of the HTML page of a file */ + virtual QCString trFileReference(const char *fileName) + { + QCString result=fileName; + result+=" Leër Verwysing"; + return result; + } + + /*! used as the title of the HTML page of a namespace */ + virtual QCString trNamespaceReference(const char *namespaceName) + { + QCString result=namespaceName; + result+=" Namespace Verwysing"; + return result; + } + + virtual QCString trPublicMembers() + { return "Publieke Lede Funksies"; } + virtual QCString trPublicSlots() + { return "Publieke Slots"; } + virtual QCString trSignals() + { return "Signals"; } + virtual QCString trStaticPublicMembers() + { return "Statiese Publieke Lede Funksies"; } + virtual QCString trProtectedMembers() + { return "Beskermde Lede Funksies"; } + virtual QCString trProtectedSlots() + { return "Beskermde Slots"; } + virtual QCString trStaticProtectedMembers() + { return "Statiese Beskermde Lede Funksies"; } + virtual QCString trPrivateMembers() + { return "Private Lede Funksies"; } + virtual QCString trPrivateSlots() + { return "Private Slots"; } + virtual QCString trStaticPrivateMembers() + { return "Statiese Private Lede Funksies"; } + + /*! 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) + { + QCString result; + int i; + // the inherits list contain `numEntries' classes + for (i=0;i