summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--INSTALL4
-rw-r--r--README4
-rw-r--r--VERSION2
-rw-r--r--addon/doxywizard/Makefile.in2
-rw-r--r--addon/doxywizard/doxywizard.cpp2
-rw-r--r--addon/doxywizard/doxywizard.h2
-rw-r--r--addon/doxywizard/doxywizard.pro.in2
-rw-r--r--addon/doxywizard/doxywizard_templ.cpp2
-rw-r--r--addon/doxywizard/doxywizard_templ.h2
-rw-r--r--addon/doxywizard/inputbool.cpp2
-rw-r--r--addon/doxywizard/inputbool.h2
-rw-r--r--addon/doxywizard/inputint.cpp2
-rw-r--r--addon/doxywizard/inputint.h2
-rw-r--r--addon/doxywizard/inputstring.cpp2
-rw-r--r--addon/doxywizard/inputstring.h2
-rw-r--r--addon/doxywizard/inputstrlist.cpp2
-rw-r--r--addon/doxywizard/inputstrlist.h2
-rw-r--r--addon/doxywizard/pagewidget.cpp2
-rw-r--r--addon/doxywizard/pagewidget.h2
-rw-r--r--addon/doxywizard/pixmaps.cpp2
-rw-r--r--addon/doxywizard/pixmaps.h2
-rw-r--r--addon/doxywizard/qtbc.h2
-rw-r--r--addon/xmlgen/xml.cpp18
-rw-r--r--addon/xmlread/qtbc.h2
-rw-r--r--doc/config.doc8
-rw-r--r--doc/docblocks.doc46
-rw-r--r--doc/install.doc33
-rw-r--r--doc/language.doc8
-rw-r--r--packages/rpm/doxygen.spec55
-rw-r--r--qtools/Makefile.in2
-rw-r--r--qtools/qarray.h2
-rw-r--r--qtools/qasciidict.h2
-rw-r--r--qtools/qbuffer.cpp2
-rw-r--r--qtools/qbuffer.h2
-rw-r--r--qtools/qcollection.cpp2
-rw-r--r--qtools/qcollection.h2
-rw-r--r--qtools/qcstring.cpp2
-rw-r--r--qtools/qcstring.h2
-rw-r--r--qtools/qdatastream.cpp2
-rw-r--r--qtools/qdatastream.h2
-rw-r--r--qtools/qdatetime.cpp2
-rw-r--r--qtools/qdatetime.h2
-rw-r--r--qtools/qdict.h2
-rw-r--r--qtools/qdir.cpp2
-rw-r--r--qtools/qdir.h2
-rw-r--r--qtools/qdir_unix.cpp2
-rw-r--r--qtools/qdir_win32.cpp2
-rw-r--r--qtools/qfeatures.h2
-rw-r--r--qtools/qfile.cpp2
-rw-r--r--qtools/qfile.h2
-rw-r--r--qtools/qfile_unix.cpp2
-rw-r--r--qtools/qfile_win32.cpp2
-rw-r--r--qtools/qfiledefs_p.h2
-rw-r--r--qtools/qfileinfo.cpp2
-rw-r--r--qtools/qfileinfo.h2
-rw-r--r--qtools/qfileinfo_unix.cpp2
-rw-r--r--qtools/qfileinfo_win32.cpp2
-rw-r--r--qtools/qgarray.cpp2
-rw-r--r--qtools/qgarray.h2
-rw-r--r--qtools/qgdict.cpp2
-rw-r--r--qtools/qgdict.h2
-rw-r--r--qtools/qgeneric.h2
-rw-r--r--qtools/qglist.cpp2
-rw-r--r--qtools/qglist.h2
-rw-r--r--qtools/qglobal.cpp2
-rw-r--r--qtools/qglobal.h2
-rw-r--r--qtools/qgvector.cpp2
-rw-r--r--qtools/qgvector.h2
-rw-r--r--qtools/qintdict.h2
-rw-r--r--qtools/qiodevice.cpp2
-rw-r--r--qtools/qiodevice.h2
-rw-r--r--qtools/qlist.h2
-rw-r--r--qtools/qmap.cpp2
-rw-r--r--qtools/qmap.h2
-rw-r--r--qtools/qptrdict.h2
-rw-r--r--qtools/qqueue.h2
-rw-r--r--qtools/qregexp.cpp2
-rw-r--r--qtools/qregexp.h2
-rw-r--r--qtools/qshared.h2
-rw-r--r--qtools/qsortedlist.h2
-rw-r--r--qtools/qstack.h2
-rw-r--r--qtools/qstring.cpp2
-rw-r--r--qtools/qstring.h2
-rw-r--r--qtools/qstringlist.cpp2
-rw-r--r--qtools/qstringlist.h2
-rw-r--r--qtools/qstrlist.h2
-rw-r--r--qtools/qstrvec.h2
-rw-r--r--qtools/qtextcodec.cpp2
-rw-r--r--qtools/qtextcodec.h2
-rw-r--r--qtools/qtextstream.cpp2
-rw-r--r--qtools/qtextstream.h2
-rw-r--r--qtools/qtl.h2
-rw-r--r--qtools/qvaluelist.h2
-rw-r--r--qtools/qvaluestack.h2
-rw-r--r--qtools/qvector.h2
-rw-r--r--qtools/qxml.cpp2
-rw-r--r--qtools/qxml.h2
-rw-r--r--src/classdef.cpp261
-rw-r--r--src/classdef.h3
-rw-r--r--src/definition.cpp2
-rw-r--r--src/definition.h2
-rw-r--r--src/doc.l137
-rw-r--r--src/doxygen.cpp24
-rw-r--r--src/filedef.cpp127
-rw-r--r--src/filedef.h25
-rw-r--r--src/groupdef.cpp151
-rw-r--r--src/groupdef.h25
-rw-r--r--src/index.cpp14
-rw-r--r--src/language.cpp6
-rw-r--r--src/latexgen.cpp10
-rw-r--r--src/memberdef.cpp765
-rw-r--r--src/memberdef.h27
-rw-r--r--src/membergroup.cpp82
-rw-r--r--src/membergroup.h21
-rw-r--r--src/memberlist.cpp600
-rw-r--r--src/memberlist.h43
-rw-r--r--src/message.cpp4
-rw-r--r--src/namespacedef.cpp141
-rw-r--r--src/namespacedef.h28
-rw-r--r--src/rtfgen.cpp16
-rw-r--r--src/scanner.l26
-rw-r--r--src/translator.h18
-rw-r--r--src/translator_br.h786
-rw-r--r--src/translator_cz.h189
-rw-r--r--src/translator_de.h155
-rw-r--r--src/translator_ru.h1653
-rw-r--r--src/util.cpp91
-rw-r--r--src/util.h7
128 files changed, 3304 insertions, 2489 deletions
diff --git a/INSTALL b/INSTALL
index 5bf3046..f11b8bd 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,6 +1,6 @@
-DOXYGEN Version 1.2.6-20010409
+DOXYGEN Version 1.2.6-20010422
Please read the installation section of the manual for instructions.
--------
-Dimitri van Heesch (09 April 2001)
+Dimitri van Heesch (22 April 2001)
diff --git a/README b/README
index afd334e..dbc2ab2 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-DOXYGEN Version 1.2.6_20010409
+DOXYGEN Version 1.2.6_20010422
Please read INSTALL for compilation instructions.
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
-Dimitri van Heesch (09 April 2001)
+Dimitri van Heesch (22 April 2001)
diff --git a/VERSION b/VERSION
index ebc8ce8..3339dbc 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.2.6-20010409
+1.2.6-20010422
diff --git a/addon/doxywizard/Makefile.in b/addon/doxywizard/Makefile.in
index 65995b5..1b56e9a 100644
--- a/addon/doxywizard/Makefile.in
+++ b/addon/doxywizard/Makefile.in
@@ -1,5 +1,5 @@
#
-# $Id$
+#
#
# Copyright (C) 1997-2001 by Dimitri van Heesch.
#
diff --git a/addon/doxywizard/doxywizard.cpp b/addon/doxywizard/doxywizard.cpp
index 8ceecbb..13d80f5 100644
--- a/addon/doxywizard/doxywizard.cpp
+++ b/addon/doxywizard/doxywizard.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/doxywizard.h b/addon/doxywizard/doxywizard.h
index f78733e..be99539 100644
--- a/addon/doxywizard/doxywizard.h
+++ b/addon/doxywizard/doxywizard.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/doxywizard.pro.in b/addon/doxywizard/doxywizard.pro.in
index 649c395..53847c2 100644
--- a/addon/doxywizard/doxywizard.pro.in
+++ b/addon/doxywizard/doxywizard.pro.in
@@ -1,5 +1,5 @@
#
-# $Id$
+#
#
# Copyright (C) 1997-2001 by Dimitri van Heesch.
#
diff --git a/addon/doxywizard/doxywizard_templ.cpp b/addon/doxywizard/doxywizard_templ.cpp
index 97fe34c..cafec21 100644
--- a/addon/doxywizard/doxywizard_templ.cpp
+++ b/addon/doxywizard/doxywizard_templ.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/doxywizard_templ.h b/addon/doxywizard/doxywizard_templ.h
index 4daf3fd..92e35e1 100644
--- a/addon/doxywizard/doxywizard_templ.h
+++ b/addon/doxywizard/doxywizard_templ.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/inputbool.cpp b/addon/doxywizard/inputbool.cpp
index 4ac2f8a..c77578e 100644
--- a/addon/doxywizard/inputbool.cpp
+++ b/addon/doxywizard/inputbool.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/inputbool.h b/addon/doxywizard/inputbool.h
index 9c2511f..2b4d869 100644
--- a/addon/doxywizard/inputbool.h
+++ b/addon/doxywizard/inputbool.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/inputint.cpp b/addon/doxywizard/inputint.cpp
index d6173c4..702988c 100644
--- a/addon/doxywizard/inputint.cpp
+++ b/addon/doxywizard/inputint.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/inputint.h b/addon/doxywizard/inputint.h
index 28da9cf..47fbf13 100644
--- a/addon/doxywizard/inputint.h
+++ b/addon/doxywizard/inputint.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/inputstring.cpp b/addon/doxywizard/inputstring.cpp
index e43fc93..a20ba68 100644
--- a/addon/doxywizard/inputstring.cpp
+++ b/addon/doxywizard/inputstring.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/inputstring.h b/addon/doxywizard/inputstring.h
index 794f93e..1c4554d 100644
--- a/addon/doxywizard/inputstring.h
+++ b/addon/doxywizard/inputstring.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/inputstrlist.cpp b/addon/doxywizard/inputstrlist.cpp
index c6c34f4..9ab9a5b 100644
--- a/addon/doxywizard/inputstrlist.cpp
+++ b/addon/doxywizard/inputstrlist.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/inputstrlist.h b/addon/doxywizard/inputstrlist.h
index e60b036..115bad2 100644
--- a/addon/doxywizard/inputstrlist.h
+++ b/addon/doxywizard/inputstrlist.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/pagewidget.cpp b/addon/doxywizard/pagewidget.cpp
index 67d4d57..7e6920b 100644
--- a/addon/doxywizard/pagewidget.cpp
+++ b/addon/doxywizard/pagewidget.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/pagewidget.h b/addon/doxywizard/pagewidget.h
index 266fcc4..6d238df 100644
--- a/addon/doxywizard/pagewidget.h
+++ b/addon/doxywizard/pagewidget.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/pixmaps.cpp b/addon/doxywizard/pixmaps.cpp
index 6c7199b..5f2497b 100644
--- a/addon/doxywizard/pixmaps.cpp
+++ b/addon/doxywizard/pixmaps.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/pixmaps.h b/addon/doxywizard/pixmaps.h
index 144fee3..7ec854e 100644
--- a/addon/doxywizard/pixmaps.h
+++ b/addon/doxywizard/pixmaps.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/doxywizard/qtbc.h b/addon/doxywizard/qtbc.h
index 13b6fea..51f62dd 100644
--- a/addon/doxywizard/qtbc.h
+++ b/addon/doxywizard/qtbc.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/addon/xmlgen/xml.cpp b/addon/xmlgen/xml.cpp
index dbfb0e9..ea40d05 100644
--- a/addon/xmlgen/xml.cpp
+++ b/addon/xmlgen/xml.cpp
@@ -420,18 +420,18 @@ void generateXMLForFile(FileDef *fd,QTextStream &t)
t << " <compoundname>";
writeXMLString(t,fd->name());
t << "</compoundname>" << endl;
- int numMembers = fd->defineMembers.count()+fd->protoMembers.count()+
- fd->typedefMembers.count()+fd->enumMembers.count()+
- fd->funcMembers.count()+fd->varMembers.count();
+ int numMembers = fd->decDefineMembers.count()+fd->decProtoMembers.count()+
+ fd->decTypedefMembers.count()+fd->decEnumMembers.count()+
+ fd->decFuncMembers.count()+fd->decVarMembers.count();
if (numMembers>0)
{
t << " <sectionlist>" << endl;
- generateXMLFileSection(fd,t,&fd->defineMembers,"define");
- generateXMLFileSection(fd,t,&fd->protoMembers,"prototype");
- generateXMLFileSection(fd,t,&fd->typedefMembers,"typedef");
- generateXMLFileSection(fd,t,&fd->enumMembers,"enum");
- generateXMLFileSection(fd,t,&fd->funcMembers,"func");
- generateXMLFileSection(fd,t,&fd->varMembers,"var");
+ generateXMLFileSection(fd,t,&fd->decDefineMembers,"define");
+ generateXMLFileSection(fd,t,&fd->decProtoMembers,"prototype");
+ generateXMLFileSection(fd,t,&fd->decTypedefMembers,"typedef");
+ generateXMLFileSection(fd,t,&fd->decEnumMembers,"enum");
+ generateXMLFileSection(fd,t,&fd->decFuncMembers,"func");
+ generateXMLFileSection(fd,t,&fd->decVarMembers,"var");
t << " </sectionlist>" << endl;
}
t << " </compounddef>" << endl;
diff --git a/addon/xmlread/qtbc.h b/addon/xmlread/qtbc.h
index 13b6fea..51f62dd 100644
--- a/addon/xmlread/qtbc.h
+++ b/addon/xmlread/qtbc.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/doc/config.doc b/doc/config.doc
index afe2b8e..b819f53 100644
--- a/doc/config.doc
+++ b/doc/config.doc
@@ -164,6 +164,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_rtf_stylesheet_file RTF_STYLESHEET_FILE
<li> \refitem cfg_search_includes SEARCH_INCLUDES
<li> \refitem cfg_searchengine SEARCHENGINE
+<li> \refitem cfg_short_names SHORT_NAMES
<li> \refitem cfg_show_include_files SHOW_INCLUDE_FILES
<li> \refitem cfg_show_used_files SHOW_USED_FILES
<li> \refitem cfg_sort_member_docs SORT_MEMBER_DOCS
@@ -351,6 +352,13 @@ followed by the descriptions of the tags grouped by category.
classes or files whose names only differ in case and if your file system
supports case sensitive file names.
+\anchor cfg_short_names
+<dt>\c SHORT_NAMES <dd>
+ \addindex SHORT_NAMES
+ If the \c SHORT_NAMES tag is set to \c YES, doxygen will generate much shorter
+ (but less readable) file names. This can be useful is your file systems
+ doesn't support long names like on DOS, Mac, or CD-ROM.
+
\anchor cfg_hide_scope_names
<dt>\c HIDE_SCOPE_NAMES <dd>
\addindex HIDE_SCOPE_NAMES
diff --git a/doc/docblocks.doc b/doc/docblocks.doc
index 95d13b5..d2df482 100644
--- a/doc/docblocks.doc
+++ b/doc/docblocks.doc
@@ -43,7 +43,7 @@ The following types of special documentation blocks are supported by doxygen:
Doxygen only allows one brief and one detailed description. If there is
one brief description before a declaration and one before a
definition, only the one before the \e declaration will be used. If
-the same situation occurs for a detail description,
+the same situation occurs for a detailed description,
the one before the \e definition is preferred and the one before the
declaration will be ignored.
@@ -56,14 +56,15 @@ Here is an example of a documented piece of C++ code using the Qt style:
The one-line comments should contain a brief description,
whereas the multi-line comment blocks contain a more detailed description.
-The brief descriptions are included in the member overview of a class,
-namespace or file and are printed using a small italic font
-(this description can be hidden by
- setting \ref cfg_brief_member_desc "BRIEF_MEMBER_DESC" to \c NO in
-the config file). By default the brief descriptions are also the first
-sentence of the detailed description
-(this can be changed by setting the \ref cfg_repeat_brief "REPEAT_BRIEF" tag
-to \c NO). Both the brief and the detailed descriptions are optional
+Note that consecutive one-line comments are merged together in one brief
+description. The brief descriptions are included in the member overview of a
+class, namespace or file and are printed using a small italic font
+(this description can be hidden by setting
+\ref cfg_brief_member_desc "BRIEF_MEMBER_DESC" to \c NO in
+the config file). By default the brief descriptions become the first
+sentence of the detailed descriptions
+(but this can be changed by setting the \ref cfg_repeat_brief "REPEAT_BRIEF"
+tag to \c NO). Both the brief and the detailed descriptions are optional
for the Qt style.
By default a JavaDoc style documentation block behaves the same way as a
@@ -71,7 +72,7 @@ Qt style documentation block. This is not according the JavaDoc specification
however, where the first sentence of the documentation block is automatically
treated as a brief description. To enable this behaviour you should set
\ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" to YES in the configuration
-file. If you enble this option and want to put a dot in the middle of a
+file. If you enable this option and want to put a dot in the middle of a
sentence without ending it, you should put a backslash and a space after it.
Here is an example:
\verbatim
@@ -112,7 +113,8 @@ of a function or inside a normal C style comment block), as long as you put a
structural command inside the documentation block.
Structural commands (like all other commands) start with a backslash
-(<tt>\\</tt>) followed by a command name and one or more parameters.
+(<tt>\\</tt>), or an at-sign (<tt>\@</tt>) in JavaDoc style,
+followed by a command name and one or more parameters.
For instance, if you want to document the class \c Test in the example
above, you could have also put the following documentation block somewhere
in the input that is read by doxygen:
@@ -124,7 +126,7 @@ in the input that is read by doxygen:
*/
\endverbatim
-Here the special command \c \class is used to indicated that the
+Here the special command \c \class is used to indicate that the
comment block contains documentation for the class \c Test.
Other structural commands are:
<ul>
@@ -142,11 +144,17 @@ commands. Note that the documentation block belonging to a file
should always contain a structural command.
To document a member of a C++ class, you must also document the class
-itself. The same holds for namespaces. To document a C function, typedef,
+itself. The same holds for namespaces. To document a global C function, typedef,
enum or preprocessor definition you must first document the file that
contains it (usually this will be a header file, because that file contains
the information that is exported to other source files).
+Let's repeat that, because it is often overlooked:
+to document global objects (functions, typedefs, enum, macros, etc), you
+<em>must</em> document the file in which they are defined. In other words,
+there <em>must</em> at least be a \verbatim /*! \file */ \endverbatim
+or a \verbatim /** @file */ \endverbatim line in this file.
+
Here is an example of a C header named \c structcmd.h that is documented
using structural commands:
\verbinclude structcmd.h
@@ -164,7 +172,7 @@ using structural commands:
\subsection memberdoc Documenting compound members.
-If you want to document the members of a file, struct, union, class, or enum
+If you want to document the members of a file, struct, union, class, or enum,
and you want to put the documentation for these members inside the compound,
it is sometimes desired to place the documentation block after the member
instead of before. For this purpose doxygen has the following
@@ -172,7 +180,7 @@ additional comment blocks:
\verbatim
/*!< ... */
\endverbatim
-This block can be used to put a qt style documentation blocks after a member.
+This block can be used to put a Qt style documentation blocks after a member.
The one line version look as follows:
\verbatim
//!< ...
@@ -189,7 +197,7 @@ Note that these blocks have the same structure and meaning as the
special comment blocks above only the \< indicates that the member is
located in front of the block instead of after the block.
-Here is an example of a the use of these comment blocks:
+Here is an example of the use of these comment blocks:
\verbinclude afterdoc.h
\htmlonly
Click <a href="$(DOXYGEN_DOCDIR)/examples/afterdoc/html/class_test.html">here</a>
@@ -198,9 +206,9 @@ Here is an example of a the use of these comment blocks:
\warning These blocks can only be used to document \e members.
They cannot be used to document files, classes, unions, structs,
- groups, namespaces and enums. Furthermore, the structural commands
- mentioned in the previous section (like <code>\\class</code>) are ignored
- inside these comment blocks.
+ groups, namespaces and enums themselves. Furthermore, the structural
+ commands mentioned in the previous section
+ (like <code>\\class</code>) are ignored inside these comment blocks.
\htmlonly
Go to the <a href="lists.html">next</a> section or return to the
diff --git a/doc/install.doc b/doc/install.doc
index fe05177..30acc5c 100644
--- a/doc/install.doc
+++ b/doc/install.doc
@@ -358,11 +358,18 @@ Here is what is required:
<li>The GNU tools flex, bison, and sed.
To get these working on Windows you should install the
<a href="http://sources.redhat.com/cygwin/">cygwin tools</a>
- \latexonly(see {\tt http://sources.redhat.com/cygwin/})\endlatexonly.
+ \latexonly(see {\tt http://sources.redhat.com/cygwin/})\endlatexonly
+
+ Alternatively, you can also choose to
+ download only a <a href="http://www.doxygen.org/dl/cygwin_tools.zip">small subset</a>
+ \latexonly(see {\tt http://www.doxygen.org/dl/cygwin_tools.zip})\endlatexonly
+ of the cygwin tools that I put together just to compile doxygen.
Make sure the <code>BISONLIB</code> environment variable points to the
location where the files <code>bison.simple</code> and
- <code>bison.hairy</code> are located.
+ <code>bison.hairy</code> are located. For instance if these files are in
+ <code>c:\\tools\\cygwin\\share</code> then BISONLIB should
+ be set to <code>//c/tools/cygwin/share/</code>
Also make sure the tools are available from a dos box, by adding
the directory they are in to the search path.
@@ -377,16 +384,18 @@ Here is what is required:
using WinZip -- as mentioned at the beginning of this list of
steps.
-<li>Since Doxygen-1.2.2-20001015, the distribution includes the part
- of Qt-2.x.x that is needed for compilation of doxygen, doxytag,
- and doxysearch. The missing files for Windows were also created.
- This allows compilation of doxygen on systems without X11 or the
- full Qt. For doxywizard Qt-2.2 is still required however.
-
- You may be interested in the professional license of
- <A HREF="http://www.trolltech.com/products/qt.html">Qt for Windows</A>
- \latexonly\par (see
- {\tt http://www.trolltech.com/products/qt.html})\endlatexonly.
+<li>From Doxygen-1.2.2-20001015 onwards, the distribution includes the part
+ of Qt-2.x.x that is needed for to compile doxygen, doxytag,
+ and doxysearch. The Windows specific part were also created.
+ As a result doxygen can be compiled on systems without X11 or the
+ commerical version of Qt.
+
+ For doxywizard, a complete Qt library this is
+ still a requirement however. You may be interested in the professional
+ license of <A HREF="http://www.trolltech.com/products/qt.html">Qt for
+ Windows</A> \latexonly\par (see
+ {\tt http://www.trolltech.com/products/qt.html})\endlatexonly. If you
+ donate me a professional license I'll port doxywizard for you :-)
<li>To generate LaTeX documentation or formulas in HTML you need the tools:
<code>latex</code>, <code>dvips</code> and <code>gswin32</code>.
diff --git a/doc/language.doc b/doc/language.doc
index 595fa4e..d7b3a53 100644
--- a/doc/language.doc
+++ b/doc/language.doc
@@ -148,11 +148,11 @@ Here is a list of the languages and their current maintainers:
Russian
</TD>
<TD>
- Andrey V. Stolyarov
+ Alexandr Chelpanov
</TD>
<TD>
- <a href="mailto:crocodil@NOSPAM.croco.net">
- crocodil@NOSPAM.croco.net</a>
+ <a href="mailto:cav@NOSPAM.cryptopro.ru">
+ cav@NOSPAM.cryptopro.ru</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
@@ -246,7 +246,7 @@ Here is a list of the languages and their current maintainers:
\hline
Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} \\
\hline
- Russian & Andrey V. Stolyarov & {\tt crocodil@croco.net} \\
+ Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} \\
\hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} \\
\hline
diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec
index b5921f2..803b24c 100644
--- a/packages/rpm/doxygen.spec
+++ b/packages/rpm/doxygen.spec
@@ -1,8 +1,8 @@
Name: doxygen
-Version: 1.2.6_20010409
+Version: 1.2.6_20010422
Summary: documentation system for C, C++ and IDL
-Release: 1
-Source0: doxygen_%{version}.src.tar.gz
+Release: 2
+Source: doxygen_%{version}.src.tar.gz
Copyright: GPL
Group: unsorted
@@ -13,43 +13,54 @@ BuildRoot: /var/tmp/doxygen_%{version}.root
# requires Perl for tmake (Troll's make)
BuildPrereq: perl tetex
-%define prefix /usr
-
%description
+Doxygen is a documentation system for C and C++. It can generate an
+on-line class browser (in HTML) and/or an off-line reference manual
+(in LaTeX) from a set of documented source files. The documentation is
+extracted directly from the sources. Doxygen is developed on a Linux
+platform, but it runs on most other UNIX flavors as well. An
+executable for Windows 95/NT is also available.
+Author:
+--------
+ Dimitri van Heesch <dimitri@stack.nl>
-%prep
-%setup -n doxygen-%{version}
+%description -l de
+Doxygen ist ein Dokumentationssystem fЭr C und C++. Es kann eine
+KlassenЭbersicht (in HTML) und/oder eine Referenz (in LaTeX) aus
+dokumentierten Quelldateien erzeugen. Die Dokumentation wird direkt aus
+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:
+--------
+ Dimitri van Heesch <dimitri@stack.nl>
+%prep
+%setup -n doxygen-%{version}
%build
-CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix %{prefix} --with-doxywizard
+CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix /do_we_need_this_usr --with-doxywizard
make
%install
rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT%{prefix}/usr
-
-# install
-make INSTALL=$RPM_BUILD_ROOT%{prefix} install
-( cd $RPM_BUILD_ROOT
- mkdir -p ./usr/doc/packages
- mv .%{prefix}/doc/doxygen ./usr/doc/packages/doxygen
- mv .%{prefix}/doc/doxysearch ./usr/doc/packages/doxysearch
- mv .%{prefix}/doc/doxytag ./usr/doc/packages/doxytag
- mv .%{prefix}/doc/doxywizard ./usr/doc/packages/doxywizard
-)
+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
%files
%defattr(-,root,root)
-%{prefix}/bin
-# %doc LANGUAGE.HOWTO LICENSE PLATFORMS VERSION README
-%doc %{prefix}/doc/packages/doxygen
+%attr(755,root,root) /usr/bin/*
+%doc %{_docdir}/doxygen
%clean
rm -rf $RPM_BUILD_ROOT
%changelog
+* Mon Apr 16 2001 Jens Seidel <jensseidel@users.sourceforge.net>
+ - new decription (english, german)
+ - use of %{_docdir}
+ - added README, LICENSE, ... to install section
* Mon Mar 13 2000 Matthias Andree <ma@dt.e-technik.uni-dortmund.de>
- inital version build with rpmify
diff --git a/qtools/Makefile.in b/qtools/Makefile.in
index 26a8e9c..78710fd 100644
--- a/qtools/Makefile.in
+++ b/qtools/Makefile.in
@@ -1,5 +1,5 @@
#
-# $Id$
+#
#
# Copyright (C) 1997-2000 by Dimitri van Heesch.
#
diff --git a/qtools/qarray.h b/qtools/qarray.h
index 5fb6bf7..90dcbb7 100644
--- a/qtools/qarray.h
+++ b/qtools/qarray.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QArray template/macro class
**
diff --git a/qtools/qasciidict.h b/qtools/qasciidict.h
index 23b85e5..3f2deaf 100644
--- a/qtools/qasciidict.h
+++ b/qtools/qasciidict.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QAsciiDict template class
**
diff --git a/qtools/qbuffer.cpp b/qtools/qbuffer.cpp
index 59d20a2..beed0ba 100644
--- a/qtools/qbuffer.cpp
+++ b/qtools/qbuffer.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QBuffer class
**
diff --git a/qtools/qbuffer.h b/qtools/qbuffer.h
index d3fdae1..9dcd286 100644
--- a/qtools/qbuffer.h
+++ b/qtools/qbuffer.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QBuffer class
**
diff --git a/qtools/qcollection.cpp b/qtools/qcollection.cpp
index 21bf412..e70b64b 100644
--- a/qtools/qcollection.cpp
+++ b/qtools/qcollection.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of base class for all collection classes
**
diff --git a/qtools/qcollection.h b/qtools/qcollection.h
index e672609..a169b7c 100644
--- a/qtools/qcollection.h
+++ b/qtools/qcollection.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of base class for all collection classes
**
diff --git a/qtools/qcstring.cpp b/qtools/qcstring.cpp
index f128ae1..2d2e0c5 100644
--- a/qtools/qcstring.cpp
+++ b/qtools/qcstring.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of extended char array operations, and QByteArray and
** QCString classes
diff --git a/qtools/qcstring.h b/qtools/qcstring.h
index b9cad44..073a969 100644
--- a/qtools/qcstring.h
+++ b/qtools/qcstring.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of the extended char array operations,
** and QByteArray and QCString classes
diff --git a/qtools/qdatastream.cpp b/qtools/qdatastream.cpp
index c586570..7f63cbf 100644
--- a/qtools/qdatastream.cpp
+++ b/qtools/qdatastream.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QDataStream class
**
diff --git a/qtools/qdatastream.h b/qtools/qdatastream.h
index dafab36..3d18062 100644
--- a/qtools/qdatastream.h
+++ b/qtools/qdatastream.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QDataStream class
**
diff --git a/qtools/qdatetime.cpp b/qtools/qdatetime.cpp
index 026387a..cecb855 100644
--- a/qtools/qdatetime.cpp
+++ b/qtools/qdatetime.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of date and time classes
**
diff --git a/qtools/qdatetime.h b/qtools/qdatetime.h
index 820fde3..2479dbf 100644
--- a/qtools/qdatetime.h
+++ b/qtools/qdatetime.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of date and time classes
**
diff --git a/qtools/qdict.h b/qtools/qdict.h
index fdd9366..3b70336 100644
--- a/qtools/qdict.h
+++ b/qtools/qdict.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QDict template class
**
diff --git a/qtools/qdir.cpp b/qtools/qdir.cpp
index b0d1c0d..ed7ed99 100644
--- a/qtools/qdir.cpp
+++ b/qtools/qdir.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QDir class
**
diff --git a/qtools/qdir.h b/qtools/qdir.h
index 8fcadf5..dd74271 100644
--- a/qtools/qdir.h
+++ b/qtools/qdir.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QDir class
**
diff --git a/qtools/qdir_unix.cpp b/qtools/qdir_unix.cpp
index 9ace60a..46a3b69 100644
--- a/qtools/qdir_unix.cpp
+++ b/qtools/qdir_unix.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QDirclass
**
diff --git a/qtools/qdir_win32.cpp b/qtools/qdir_win32.cpp
index 832c86b..b1eee66 100644
--- a/qtools/qdir_win32.cpp
+++ b/qtools/qdir_win32.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/qtools/qfeatures.h b/qtools/qfeatures.h
index 9dc5107..84fa715 100644
--- a/qtools/qfeatures.h
+++ b/qtools/qfeatures.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Global feature selection
**
diff --git a/qtools/qfile.cpp b/qtools/qfile.cpp
index 06300de..2222b5b 100644
--- a/qtools/qfile.cpp
+++ b/qtools/qfile.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QFile class
**
diff --git a/qtools/qfile.h b/qtools/qfile.h
index e95cdf4..4ef0685 100644
--- a/qtools/qfile.h
+++ b/qtools/qfile.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QFile class
**
diff --git a/qtools/qfile_unix.cpp b/qtools/qfile_unix.cpp
index a1beb31..e074eed 100644
--- a/qtools/qfile_unix.cpp
+++ b/qtools/qfile_unix.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QFileInfo class
**
diff --git a/qtools/qfile_win32.cpp b/qtools/qfile_win32.cpp
index 12a0643..fd28d43 100644
--- a/qtools/qfile_win32.cpp
+++ b/qtools/qfile_win32.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/qtools/qfiledefs_p.h b/qtools/qfiledefs_p.h
index eeac5c5..4a1a154 100644
--- a/qtools/qfiledefs_p.h
+++ b/qtools/qfiledefs_p.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Common macros and system include files for QFile, QFileInfo and QDir.
**
diff --git a/qtools/qfileinfo.cpp b/qtools/qfileinfo.cpp
index 7e30a9e..5053b76 100644
--- a/qtools/qfileinfo.cpp
+++ b/qtools/qfileinfo.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QFileInfo class
**
diff --git a/qtools/qfileinfo.h b/qtools/qfileinfo.h
index 8543e1c..76ef8c2 100644
--- a/qtools/qfileinfo.h
+++ b/qtools/qfileinfo.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QFileInfo class
**
diff --git a/qtools/qfileinfo_unix.cpp b/qtools/qfileinfo_unix.cpp
index fbeb363..5a8fe04 100644
--- a/qtools/qfileinfo_unix.cpp
+++ b/qtools/qfileinfo_unix.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QFileInfo class
**
diff --git a/qtools/qfileinfo_win32.cpp b/qtools/qfileinfo_win32.cpp
index abb9b9d..bfcc6ac 100644
--- a/qtools/qfileinfo_win32.cpp
+++ b/qtools/qfileinfo_win32.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * $Id$
+ *
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
diff --git a/qtools/qgarray.cpp b/qtools/qgarray.cpp
index b20caee..efc9de0 100644
--- a/qtools/qgarray.cpp
+++ b/qtools/qgarray.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QGArray class
**
diff --git a/qtools/qgarray.h b/qtools/qgarray.h
index 971d6bf..12c463b 100644
--- a/qtools/qgarray.h
+++ b/qtools/qgarray.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QGArray class
**
diff --git a/qtools/qgdict.cpp b/qtools/qgdict.cpp
index 545628e..c3b2f74 100644
--- a/qtools/qgdict.cpp
+++ b/qtools/qgdict.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QGDict and QGDictIterator classes
**
diff --git a/qtools/qgdict.h b/qtools/qgdict.h
index cc9e262..6243364 100644
--- a/qtools/qgdict.h
+++ b/qtools/qgdict.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QGDict and QGDictIterator classes
**
diff --git a/qtools/qgeneric.h b/qtools/qgeneric.h
index 312cb30..c2892a0 100644
--- a/qtools/qgeneric.h
+++ b/qtools/qgeneric.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Macros for pasting tokens; utilized by our generic classes
**
diff --git a/qtools/qglist.cpp b/qtools/qglist.cpp
index 0ffddf0..f464a73 100644
--- a/qtools/qglist.cpp
+++ b/qtools/qglist.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QGList and QGListIterator classes
**
diff --git a/qtools/qglist.h b/qtools/qglist.h
index 6949aa3..f400b64 100644
--- a/qtools/qglist.h
+++ b/qtools/qglist.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QGList and QGListIterator classes
**
diff --git a/qtools/qglobal.cpp b/qtools/qglobal.cpp
index 95075a9..50f5202 100644
--- a/qtools/qglobal.cpp
+++ b/qtools/qglobal.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Global functions
**
diff --git a/qtools/qglobal.h b/qtools/qglobal.h
index 7acd0de..9c2b53e 100644
--- a/qtools/qglobal.h
+++ b/qtools/qglobal.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Global type declarations and definitions
**
diff --git a/qtools/qgvector.cpp b/qtools/qgvector.cpp
index a769a55..88409ce 100644
--- a/qtools/qgvector.cpp
+++ b/qtools/qgvector.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QGVector class
**
diff --git a/qtools/qgvector.h b/qtools/qgvector.h
index b5fbde0..6a7999d 100644
--- a/qtools/qgvector.h
+++ b/qtools/qgvector.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QGVector class
**
diff --git a/qtools/qintdict.h b/qtools/qintdict.h
index 52722ed..ddc5fdf 100644
--- a/qtools/qintdict.h
+++ b/qtools/qintdict.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QIntDict template class
**
diff --git a/qtools/qiodevice.cpp b/qtools/qiodevice.cpp
index babe387..43b2787 100644
--- a/qtools/qiodevice.cpp
+++ b/qtools/qiodevice.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QIODevice class
**
diff --git a/qtools/qiodevice.h b/qtools/qiodevice.h
index 6688bda..1c54217 100644
--- a/qtools/qiodevice.h
+++ b/qtools/qiodevice.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QIODevice class
**
diff --git a/qtools/qlist.h b/qtools/qlist.h
index a7ad156..a4608fb 100644
--- a/qtools/qlist.h
+++ b/qtools/qlist.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QList template/macro class
**
diff --git a/qtools/qmap.cpp b/qtools/qmap.cpp
index 3f73f81..1d2510a 100644
--- a/qtools/qmap.cpp
+++ b/qtools/qmap.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QMap
**
diff --git a/qtools/qmap.h b/qtools/qmap.h
index ecd355f..f384a3d 100644
--- a/qtools/qmap.h
+++ b/qtools/qmap.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QMap class
**
diff --git a/qtools/qptrdict.h b/qtools/qptrdict.h
index 2ed1ef2..c075e30 100644
--- a/qtools/qptrdict.h
+++ b/qtools/qptrdict.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QPtrDict template class
**
diff --git a/qtools/qqueue.h b/qtools/qqueue.h
index 36af518..94bc130 100644
--- a/qtools/qqueue.h
+++ b/qtools/qqueue.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QQueue template/macro class
**
diff --git a/qtools/qregexp.cpp b/qtools/qregexp.cpp
index 99189a6..671867e 100644
--- a/qtools/qregexp.cpp
+++ b/qtools/qregexp.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QRegExp class
**
diff --git a/qtools/qregexp.h b/qtools/qregexp.h
index a66453c..25868ce 100644
--- a/qtools/qregexp.h
+++ b/qtools/qregexp.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QRegExp class
**
diff --git a/qtools/qshared.h b/qtools/qshared.h
index 338029e..79fab7b 100644
--- a/qtools/qshared.h
+++ b/qtools/qshared.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QShared struct
**
diff --git a/qtools/qsortedlist.h b/qtools/qsortedlist.h
index 7b90da6..aeadd90 100644
--- a/qtools/qsortedlist.h
+++ b/qtools/qsortedlist.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QList template/macro class
**
diff --git a/qtools/qstack.h b/qtools/qstack.h
index 47311a5..c23215c 100644
--- a/qtools/qstack.h
+++ b/qtools/qstack.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QStack template/macro class
**
diff --git a/qtools/qstring.cpp b/qtools/qstring.cpp
index b9530a6..e13ffc8 100644
--- a/qtools/qstring.cpp
+++ b/qtools/qstring.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of the QString class and related Unicode functions
**
diff --git a/qtools/qstring.h b/qtools/qstring.h
index b574b05..f131446 100644
--- a/qtools/qstring.h
+++ b/qtools/qstring.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of the QString class, and related Unicode
** functions.
diff --git a/qtools/qstringlist.cpp b/qtools/qstringlist.cpp
index d923f23..ff4f33e 100644
--- a/qtools/qstringlist.cpp
+++ b/qtools/qstringlist.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QStringList
**
diff --git a/qtools/qstringlist.h b/qtools/qstringlist.h
index 04d11c6..03342c5 100644
--- a/qtools/qstringlist.h
+++ b/qtools/qstringlist.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QStringList class
**
diff --git a/qtools/qstrlist.h b/qtools/qstrlist.h
index abec631..c6a1864 100644
--- a/qtools/qstrlist.h
+++ b/qtools/qstrlist.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QStrList, QStrIList and QStrListIterator classes
**
diff --git a/qtools/qstrvec.h b/qtools/qstrvec.h
index 31d7d89..15d3abb 100644
--- a/qtools/qstrvec.h
+++ b/qtools/qstrvec.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QStrVec and QStrIVec classes
**
diff --git a/qtools/qtextcodec.cpp b/qtools/qtextcodec.cpp
index b55345e..cdecfce 100644
--- a/qtools/qtextcodec.cpp
+++ b/qtools/qtextcodec.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QTextCodec class
**
diff --git a/qtools/qtextcodec.h b/qtools/qtextcodec.h
index 9d5783f..18ece20 100644
--- a/qtools/qtextcodec.h
+++ b/qtools/qtextcodec.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QTextCodec class
**
diff --git a/qtools/qtextstream.cpp b/qtools/qtextstream.cpp
index ae794df..6686f81 100644
--- a/qtools/qtextstream.cpp
+++ b/qtools/qtextstream.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QTextStream class
**
diff --git a/qtools/qtextstream.h b/qtools/qtextstream.h
index 357447d..c5f5ba1 100644
--- a/qtools/qtextstream.h
+++ b/qtools/qtextstream.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QTextStream class
**
diff --git a/qtools/qtl.h b/qtools/qtl.h
index ed1fe40..bd72e7d 100644
--- a/qtools/qtl.h
+++ b/qtools/qtl.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of Qt template library classes
**
diff --git a/qtools/qvaluelist.h b/qtools/qvaluelist.h
index 246df84..a1014ed 100644
--- a/qtools/qvaluelist.h
+++ b/qtools/qvaluelist.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QValueList class
**
diff --git a/qtools/qvaluestack.h b/qtools/qvaluestack.h
index e38edb2..9728d6c 100644
--- a/qtools/qvaluestack.h
+++ b/qtools/qvaluestack.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QValueStack class
**
diff --git a/qtools/qvector.h b/qtools/qvector.h
index 9dd970c..36f0be7 100644
--- a/qtools/qvector.h
+++ b/qtools/qvector.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QVector template/macro class
**
diff --git a/qtools/qxml.cpp b/qtools/qxml.cpp
index f437783..11a9b01 100644
--- a/qtools/qxml.cpp
+++ b/qtools/qxml.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Implementation of QXmlSimpleReader and related classes.
**
diff --git a/qtools/qxml.h b/qtools/qxml.h
index 98d6641..ce40e5f 100644
--- a/qtools/qxml.h
+++ b/qtools/qxml.h
@@ -1,5 +1,5 @@
/****************************************************************************
-** $Id$
+**
**
** Definition of QXmlSimpleReader and related classes.
**
diff --git a/src/classdef.cpp b/src/classdef.cpp
index f477cb1..743ff4f 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -150,58 +150,31 @@ void ClassDef::insertSubClass(ClassDef *cd,Protection p,
inheritedBy->inSort(new BaseClassDef(cd,0,p,s,t));
}
-void ClassDef::addMemberListToGroup(MemberList *ml)
-{
- MemberListIterator mli(*ml);
- MemberDef *md;
- for (;(md=mli.current());++mli)
- {
- int groupId=md->getMemberGroupId();
- if (groupId!=-1)
- {
- QCString *pGrpHeader = Doxygen::memberHeaderDict[groupId];
- QCString *pDocs = Doxygen::memberDocDict[groupId];
- if (pGrpHeader)
- {
- MemberGroup *mg = memberGroupDict->find(groupId);
- if (mg==0)
- {
- mg = new MemberGroup(groupId,*pGrpHeader,pDocs ? pDocs->data() : 0);
- memberGroupDict->insert(groupId,mg);
- memberGroupList->append(mg);
- }
- mg->insertMember(md);
- md->setMemberGroup(mg);
- }
- }
- }
-}
-
void ClassDef::addMembersToMemberGroup()
{
- addMemberListToGroup(&pubTypes);
- addMemberListToGroup(&pubMembers);
- addMemberListToGroup(&pubAttribs);
- addMemberListToGroup(&pubSlots);
- addMemberListToGroup(&signals);
- addMemberListToGroup(&dcopMethods);
- addMemberListToGroup(&pubStaticMembers);
- addMemberListToGroup(&pubStaticAttribs);
- addMemberListToGroup(&proTypes);
- addMemberListToGroup(&proMembers);
- addMemberListToGroup(&proAttribs);
- addMemberListToGroup(&proSlots);
- addMemberListToGroup(&proStaticMembers);
- addMemberListToGroup(&proStaticAttribs);
- addMemberListToGroup(&priTypes);
- addMemberListToGroup(&priMembers);
- addMemberListToGroup(&priAttribs);
- addMemberListToGroup(&priSlots);
- addMemberListToGroup(&priStaticMembers);
- addMemberListToGroup(&priStaticAttribs);
- addMemberListToGroup(&friends);
- addMemberListToGroup(&related);
- addMemberListToGroup(&properties);
+ ::addMembersToMemberGroup(&pubTypes,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&pubMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&pubAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&pubSlots,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&signals,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&dcopMethods,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&pubStaticMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&pubStaticAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proTypes,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proSlots,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proStaticMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proStaticAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priTypes,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priSlots,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priStaticMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priStaticAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&friends,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&related,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&properties,memberGroupDict,memberGroupList);
}
// adds new member definition to the class
@@ -1037,85 +1010,26 @@ void ClassDef::writeDocumentation(OutputList &ol)
writeTemplateSpec(ol,outerTempArgList,pageType,name());
}
- typedefMembers.countDocMembers();
- if (typedefMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trMemberTypedefDocumentation());
- ol.endGroupHeader();
- typedefMembers.writeDocumentation(ol,name(),this);
- }
+ typedefMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trMemberTypedefDocumentation());
- enumMembers.countDocMembers();
- if (enumMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trMemberEnumerationDocumentation());
- ol.endGroupHeader();
- enumMembers.writeDocumentation(ol,name(),this);
- }
+ enumMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trMemberEnumerationDocumentation());
- //enumValMembers.countDocMembers();
- //if (enumValMembers.totalCount()>0)
- //{
- // ol.writeRuler();
- // ol.startGroupHeader();
- // parseText(ol,theTranslator->trEnumerationValueDocumentation());
- // ol.endGroupHeader();
- // enumValMembers.writeDocumentation(ol,name());
- //}
-
- constructors.countDocMembers();
- if (constructors.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trConstructorDocumentation());
- ol.endGroupHeader();
- constructors.writeDocumentation(ol,name(),this);
- }
+ constructors.writeDocumentation(ol,name(),this,
+ theTranslator->trConstructorDocumentation());
- functionMembers.countDocMembers();
- if (functionMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trMemberFunctionDocumentation());
- ol.endGroupHeader();
- functionMembers.writeDocumentation(ol,name(),this);
- }
+ functionMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trMemberFunctionDocumentation());
- relatedMembers.countDocMembers();
- if (relatedMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trRelatedFunctionDocumentation());
- ol.endGroupHeader();
- relatedMembers.writeDocumentation(ol,name(),this);
- }
+ relatedMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trRelatedFunctionDocumentation());
- variableMembers.countDocMembers();
- if (variableMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trMemberDataDocumentation());
- ol.endGroupHeader();
- variableMembers.writeDocumentation(ol,name(),this);
- }
+ variableMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trMemberDataDocumentation());
- propertyMembers.countDocMembers();
- if (propertyMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trPropertyDocumentation());
- ol.endGroupHeader();
- propertyMembers.writeDocumentation(ol,name(),this);
- }
+ propertyMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trPropertyDocumentation());
ol.startTextBlock();
@@ -1398,13 +1312,16 @@ bool ClassDef::hasNonReferenceSuperClass()
return found;
}
+/*! called from MemberDef::writeDeclaration() to (recusively) write the
+ * definition of an annonymous struct, union or class.
+ */
void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup)
{
//ol.insertMemberAlign();
//printf("ClassName=`%s' inGroup=%d\n",name().data(),inGroup);
- if (inGroup && md && md->getClassDef()==this) return;
-
+ //if (inGroup && md && md->getClassDef()==this) return;
+
ol.docify(compoundTypeString());
int ri=name().findRev("::");
if (ri==-1) ri=name().length();
@@ -1417,45 +1334,64 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup)
ol.docify(" {");
ol.endMemberItem(FALSE);
- // insert members of this class
- if (inGroup)
+ // write user defined member groups
+ MemberGroupListIterator mgli(*memberGroupList);
+ MemberGroup *mg;
+ for (;(mg=mgli.current());++mgli)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->writePlainDeclarations(ol,this,0,0,0);
- }
+ mg->setInGroup(inGroup);
+ mg->writePlainDeclarations(ol,this,0,0,0);
}
- else
+
+ pubTypes.setInGroup(inGroup);
+ pubTypes.writePlainDeclarations(ol,this,0,0,0);
+ pubMembers.setInGroup(inGroup);
+ pubMembers.writePlainDeclarations(ol,this,0,0,0);
+ pubAttribs.setInGroup(inGroup);
+ pubAttribs.writePlainDeclarations(ol,this,0,0,0);
+ pubSlots.setInGroup(inGroup);
+ pubSlots.writePlainDeclarations(ol,this,0,0,0);
+ signals.setInGroup(inGroup);
+ signals.writePlainDeclarations(ol,this,0,0,0);
+ dcopMethods.setInGroup(inGroup);
+ dcopMethods.writePlainDeclarations(ol,this,0,0,0);
+ properties.setInGroup(inGroup);
+ properties.writePlainDeclarations(ol,this,0,0,0);
+ pubStaticMembers.setInGroup(inGroup);
+ pubStaticMembers.writePlainDeclarations(ol,this,0,0,0);
+ pubStaticAttribs.setInGroup(inGroup);
+ pubStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
+ proTypes.setInGroup(inGroup);
+ proTypes.writePlainDeclarations(ol,this,0,0,0);
+ proMembers.setInGroup(inGroup);
+ proMembers.writePlainDeclarations(ol,this,0,0,0);
+ proAttribs.setInGroup(inGroup);
+ proAttribs.writePlainDeclarations(ol,this,0,0,0);
+ proSlots.setInGroup(inGroup);
+ proSlots.writePlainDeclarations(ol,this,0,0,0);
+ proStaticMembers.setInGroup(inGroup);
+ proStaticMembers.writePlainDeclarations(ol,this,0,0,0);
+ proStaticAttribs.setInGroup(inGroup);
+ proStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
+ if (Config_getBool("EXTRACT_PRIVATE"))
{
- pubTypes.writePlainDeclarations(ol,this,0,0,0);
- pubMembers.writePlainDeclarations(ol,this,0,0,0);
- pubAttribs.writePlainDeclarations(ol,this,0,0,0);
- pubSlots.writePlainDeclarations(ol,this,0,0,0);
- signals.writePlainDeclarations(ol,this,0,0,0);
- dcopMethods.writePlainDeclarations(ol,this,0,0,0);
- properties.writePlainDeclarations(ol,this,0,0,0);
- pubStaticMembers.writePlainDeclarations(ol,this,0,0,0);
- pubStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
- proTypes.writePlainDeclarations(ol,this,0,0,0);
- proMembers.writePlainDeclarations(ol,this,0,0,0);
- proAttribs.writePlainDeclarations(ol,this,0,0,0);
- proSlots.writePlainDeclarations(ol,this,0,0,0);
- proStaticMembers.writePlainDeclarations(ol,this,0,0,0);
- proStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
- if (Config_getBool("EXTRACT_PRIVATE"))
- {
- priTypes.writePlainDeclarations(ol,this,0,0,0);
- priMembers.writePlainDeclarations(ol,this,0,0,0);
- priAttribs.writePlainDeclarations(ol,this,0,0,0);
- priSlots.writePlainDeclarations(ol,this,0,0,0);
- priStaticMembers.writePlainDeclarations(ol,this,0,0,0);
- priStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
- }
- friends.writePlainDeclarations(ol,this,0,0,0);
- related.writePlainDeclarations(ol,this,0,0,0);
+ priTypes.setInGroup(inGroup);
+ priTypes.writePlainDeclarations(ol,this,0,0,0);
+ priMembers.setInGroup(inGroup);
+ priMembers.writePlainDeclarations(ol,this,0,0,0);
+ priAttribs.setInGroup(inGroup);
+ priAttribs.writePlainDeclarations(ol,this,0,0,0);
+ priSlots.setInGroup(inGroup);
+ priSlots.writePlainDeclarations(ol,this,0,0,0);
+ priStaticMembers.setInGroup(inGroup);
+ priStaticMembers.writePlainDeclarations(ol,this,0,0,0);
+ priStaticAttribs.setInGroup(inGroup);
+ priStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
}
+ friends.setInGroup(inGroup);
+ friends.writePlainDeclarations(ol,this,0,0,0);
+ related.setInGroup(inGroup);
+ related.writePlainDeclarations(ol,this,0,0,0);
}
/*! a link to this class is possible within this project */
@@ -1478,6 +1414,11 @@ bool ClassDef::isVisibleInHierarchy()
(hasDocumentation() || !Config_getBool("HIDE_UNDOC_CLASSES") || isReference());
}
+bool ClassDef::hasDocumentation() const
+{
+ return Definition::hasDocumentation();
+}
+
//----------------------------------------------------------------------
// recursive function:
// returns TRUE iff class definition `bcd' represents an (in)direct base
diff --git a/src/classdef.h b/src/classdef.h
index 2270d31..63dabd9 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -70,6 +70,8 @@ class ClassDef : public Definition
QCString getFileBase() const;
QCString getSourceFileBase() const;
+ bool hasDocumentation() const;
+
/*! Returns the name as it is appears in the documentation */
QCString displayName() const;
@@ -247,7 +249,6 @@ class ClassDef : public Definition
protected:
void addUsedInterfaceClasses(MemberDef *md,const char *typeStr);
- void addMemberListToGroup(MemberList *);
bool hasExamples();
bool hasNonReferenceSuperClass();
diff --git a/src/definition.cpp b/src/definition.cpp
index 78c2ded..1beeba9 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -400,7 +400,7 @@ void Definition::writeSourceRefs(OutputList &ol,const char *scopeName)
ol.popGeneratorState();
}
-bool Definition::hasDocumentation()
+bool Definition::hasDocumentation() const
{
return !doc.isEmpty() || // has detailed docs
!brief.isEmpty() || // has brief description
diff --git a/src/definition.h b/src/definition.h
index 7353e38..2018525 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -73,7 +73,7 @@ class Definition
*/
void setBriefDescription(const char *b);
/*! Returns TRUE iff the definition is documented */
- virtual bool hasDocumentation();
+ virtual bool hasDocumentation() const;
virtual bool isLinkableInProject() = 0;
virtual bool isLinkable() = 0;
diff --git a/src/doc.l b/src/doc.l
index 8bbf7a4..2f6dc97 100644
--- a/src/doc.l
+++ b/src/doc.l
@@ -1841,21 +1841,49 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
<DocScan,DocRefName>{ID}"<"[^>\ \t\n]*">"("::"{ID})+"("?[a-z_A-Z0-9,:\<\> \t\*\&]*")"? {
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
BEGIN(DocScan);
}
<DocScan,DocRefName>{SCOPEMASK}"("[a-z_A-Z0-9,:\<\> \t\*\&]+")" {
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
BEGIN(DocScan);
}
<DocScan,DocRefName>{SCOPEMASK}("()")? {
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
BEGIN(DocScan);
}
<DocScan,DocRefName>({SCOPEMASK}"::")?"operator"{OPMASK} {
QCString oName=yytext;
- generateRef(*outDoc,className,
- removeRedundantWhiteSpace(oName),inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,
+ removeRedundantWhiteSpace(oName),inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
BEGIN(DocScan);
}
<DocScan>("http:"|"https:"|"ftp:"|"file:"){URLMASK} { outDoc->startHtmlLink(yytext);
@@ -1864,10 +1892,24 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
<DocScan>[a-zA-Z_0-9\.\-]+"@"[0-9a-z_A-Z\.\-]+ { outDoc->writeMailLink(yytext); }
<DocScan>{FILESCHAR}*{FILEECHAR}+/".\\n" { // special exception that is otherwise matches by FILEMASK
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
}
<DocScan>{FILEMASK} {
- generateFileRef(*outDoc,yytext);
+ if (!insideHtmlLink)
+ {
+ generateFileRef(*outDoc,yytext);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
}
<DocCodeBlock>{BN}*{CMD}"endcode"/[^a-z_A-Z0-9] { // needed to match things like \endcode. (note the dot)
parseCode(*outDoc,className,codeBlock,exampleDoc,exampleName);
@@ -2156,55 +2198,118 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
<DocEmphasis>{FILEMASK} {
outDoc->startEmphasis();
- generateFileRef(*outDoc,yytext);
+ if (!insideHtmlLink)
+ {
+ generateFileRef(*outDoc,yytext);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endEmphasis();
BEGIN( DocScan );
}
<DocEmphasis>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*")" {
outDoc->startEmphasis();
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endEmphasis();
BEGIN( DocScan );
}
<DocEmphasis>{WORD} {
outDoc->startEmphasis();
- linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ if (!insideHtmlLink)
+ {
+ linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endEmphasis();
BEGIN( DocScan );
}
<DocBold>{FILEMASK} {
outDoc->startBold();
- generateFileRef(*outDoc,yytext);
+ if (!insideHtmlLink)
+ {
+ generateFileRef(*outDoc,yytext);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endBold();
BEGIN( DocScan );
}
<DocBold>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*")" {
outDoc->startBold();
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endBold();
BEGIN( DocScan );
}
<DocBold>{WORD} {
outDoc->startBold();
- linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ if (!insideHtmlLink)
+ {
+ linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endBold();
BEGIN( DocScan );
}
<DocCode>{FILEMASK} {
outDoc->startTypewriter();
- generateFileRef(*outDoc,yytext);
+ if (!insideHtmlLink)
+ {
+ generateFileRef(*outDoc,yytext);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endTypewriter();
BEGIN( DocScan );
}
<DocCode>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()!\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*")" {
outDoc->startTypewriter();
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endTypewriter();
BEGIN( DocScan );
}
<DocCode>{WORD} {
outDoc->startTypewriter();
- linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ if (!insideHtmlLink)
+ {
+ linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endTypewriter();
BEGIN( DocScan );
}
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 18610ac..73c765c 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -599,7 +599,7 @@ static bool addNamespace(Entry *root,ClassDef *cd)
{
NamespaceDef *nd=0;
//printf("addNameSpace() trying: %s\n",e->name.data());
- QCString nsName = stripAnnonymousNamespaceScope(e->name);
+ QCString nsName = stripAnonymousNamespaceScope(e->name);
if (!nsName.isEmpty() && nsName.at(0)!='@' &&
(nd=getResolvedNamespace(nsName))
)
@@ -637,7 +637,7 @@ static void buildClassList(Entry *root)
}
else
{
- fullName=stripAnnonymousNamespaceScope(fullName);
+ fullName=stripAnonymousNamespaceScope(fullName);
Debug::print(Debug::Classes,0," Found class with name %s\n",fullName.data());
bool ambig;
@@ -825,7 +825,7 @@ static void buildNamespaceList(Entry *root)
!root->name.isEmpty()
)
{
- QCString fullName=stripAnnonymousNamespaceScope(root->name.copy());
+ QCString fullName=stripAnonymousNamespaceScope(root->name.copy());
if (!fullName.isEmpty())
{
//printf("Found namespace %s in %s at line %d\n",root->name.data(),
@@ -1199,13 +1199,14 @@ static MemberDef *addVariableToClass(
md->setDefinition(def);
md->setBitfields(root->bitfields);
md->addSectionsToDefinition(root->anchors);
- md->setFromAnnonymousScope(fromAnnScope);
- md->setFromAnnonymousMember(fromAnnMemb);
+ md->setFromAnonymousScope(fromAnnScope);
+ md->setFromAnonymousMember(fromAnnMemb);
md->setIndentDepth(indentDepth);
md->setBodySegment(root->bodyLine,root->endBodyLine);
md->setInitializer(root->initializer);
md->setMaxInitLines(root->initLines);
md->setMemberGroupId(root->mGrpId);
+ addMemberToGroups(root,md);
//if (root->mGrpId!=-1)
//{
// printf("memberdef %s in memberGroup %d\n",name.data(),root->mGrpId);
@@ -1356,8 +1357,8 @@ static MemberDef *addVariableToFile(
md->setDocumentation(root->doc);
md->setBriefDescription(root->brief);
md->addSectionsToDefinition(root->anchors);
- md->setFromAnnonymousScope(fromAnnScope);
- md->setFromAnnonymousMember(fromAnnMemb);
+ md->setFromAnonymousScope(fromAnnScope);
+ md->setFromAnonymousMember(fromAnnMemb);
md->setIndentDepth(indentDepth);
md->setBodySegment(root->bodyLine,root->endBodyLine);
md->setInitializer(root->initializer);
@@ -1366,6 +1367,7 @@ static MemberDef *addVariableToFile(
md->setBodyDef(fd);
md->setDefinition(def);
md->setExplicitExternal(root->explicitExternal);
+ addMemberToGroups(root,md);
//if (root->mGrpId!=-1)
//{
// md->setMemberGroup(memberGroupDict[root->mGrpId]);
@@ -1535,7 +1537,7 @@ void buildVarList(Entry *root)
else
mtype=MemberDef::Variable;
- QCString classScope=stripAnnonymousNamespaceScope(scope);
+ QCString classScope=stripAnonymousNamespaceScope(scope);
QCString annScopePrefix=scope.left(scope.length()-classScope.length());
scope=classScope;
if (!scope.isEmpty() && !name.isEmpty() && (cd=getClass(scope)))
@@ -1639,7 +1641,7 @@ static void buildMemberList(Entry *root)
//printf("root->parent=`%s' cd=%p root->type.find(re,0)=%d\n",
// root->parent->name.data(),getClass(root->parent->name),
// root->type.find(re,0));
- QCString scope=stripAnnonymousNamespaceScope(root->parent->name.copy());
+ QCString scope=stripAnonymousNamespaceScope(root->parent->name.copy());
bool isMember=FALSE;
int memIndex=rname.find("::");
@@ -2475,7 +2477,7 @@ static void computeClassRelations(Entry *root)
{
ClassDef *cd;
// strip any annonymous scopes first
- QCString bName=stripAnnonymousNamespaceScope(root->name);
+ QCString bName=stripAnonymousNamespaceScope(root->name);
Debug::print(Debug::Classes,0," Class %s : \n",bName.data());
if ((cd=getClass(bName)))
{
@@ -3201,7 +3203,7 @@ static void findMember(Entry *root,
Entry *p=root->parent;
while (p) // get full scope as class name
{
- QCString sc = stripAnnonymousNamespaceScope(p->name);
+ QCString sc = stripAnonymousNamespaceScope(p->name);
if ((p->section & Entry::SCOPE_MASK)
&& !sc.isEmpty() && sc[0]!='@'
)
diff --git a/src/filedef.cpp b/src/filedef.cpp
index 741c76d..e2fcb76 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -114,7 +114,7 @@ void FileDef::writeDocumentation(OutputList &ol)
// fn.prepend(stripFromPath(getPath().copy()));
//}
- //printf("WriteDocumentation %p diskname=%s\n",this,diskname.data());
+ //printf("WriteDocumentation diskname=%s\n",diskname.data());
QCString pageTitle=name()+" File Reference";
startFile(ol,getOutputFileBase(),pageTitle);
@@ -311,7 +311,13 @@ void FileDef::writeDocumentation(OutputList &ol)
}
}
- allMemberList.writeDeclarations(ol,0,0,this,0,0,0);
+ //allMemberList.writeDeclarations(ol,0,0,this,0,0,0);
+ decDefineMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trDefines(),0);
+ decProtoMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trFuncProtos(),0);
+ decTypedefMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trTypedefs(),0);
+ decEnumMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trEnumerations(),0);
+ decFuncMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trFunctions(),0);
+ decVarMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trVariables(),0);
ol.endMemberSections();
//doc=doc.stripWhiteSpace();
@@ -366,65 +372,23 @@ void FileDef::writeDocumentation(OutputList &ol)
}
}
- defineMembers.countDocMembers();
- if (defineMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trDefineDocumentation());
- ol.endGroupHeader();
- defineMembers.writeDocumentation(ol,name(),this);
- }
+ docDefineMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trDefineDocumentation());
- protoMembers.countDocMembers();
- if (protoMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionPrototypeDocumentation());
- ol.endGroupHeader();
- protoMembers.writeDocumentation(ol,name(),this);
- }
+ docProtoMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionPrototypeDocumentation());
- typedefMembers.countDocMembers();
- if (typedefMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trTypedefDocumentation());
- ol.endGroupHeader();
- typedefMembers.writeDocumentation(ol,name(),this);
- }
+ docTypedefMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trTypedefDocumentation());
- enumMembers.countDocMembers();
- if (enumMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trEnumerationTypeDocumentation());
- ol.endGroupHeader();
- enumMembers.writeDocumentation(ol,name(),this);
- }
+ docEnumMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trEnumerationTypeDocumentation());
- funcMembers.countDocMembers();
- if (funcMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionDocumentation());
- ol.endGroupHeader();
- funcMembers.writeDocumentation(ol,name(),this);
- }
+ docFuncMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionDocumentation());
- varMembers.countDocMembers();
- if (varMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trVariableDocumentation());
- ol.endGroupHeader();
- varMembers.writeDocumentation(ol,name(),this);
- }
+ docVarMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trVariableDocumentation());
// write Author section (Man only)
ol.disableAllBut(OutputGenerator::Man);
@@ -470,6 +434,7 @@ void FileDef::writeSource(OutputList &ol)
ol.enableAll();
}
+#if 0
/*! Adds a member \a md to the member group with id \a groupId.
*/
void FileDef::addMemberListToGroup(MemberList *ml,
@@ -501,15 +466,16 @@ void FileDef::addMemberListToGroup(MemberList *ml,
}
}
}
+#endif
void FileDef::addMembersToMemberGroup()
{
- addMemberListToGroup(&allMemberList,&MemberDef::isDefine);
- addMemberListToGroup(&allMemberList,&MemberDef::isTypedef);
- addMemberListToGroup(&allMemberList,&MemberDef::isEnumerate);
- addMemberListToGroup(&allMemberList,&MemberDef::isEnumValue);
- addMemberListToGroup(&allMemberList,&MemberDef::isFunction);
- addMemberListToGroup(&allMemberList,&MemberDef::isVariable);
+ ::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList);
}
/*! Adds member definition \a md to the list of all members of this file */
@@ -521,45 +487,56 @@ void FileDef::insertMember(MemberDef *md)
switch(md->memberType())
{
case MemberDef::Variable:
+ case MemberDef::Property:
+ decVarMembers.append(md);
if (sortMemberDocs)
- varMembers.inSort(md);
+ docVarMembers.inSort(md);
else
- varMembers.append(md);
+ docVarMembers.append(md);
break;
case MemberDef::Function:
+ decFuncMembers.append(md);
if (sortMemberDocs)
- funcMembers.inSort(md);
+ docFuncMembers.inSort(md);
else
- funcMembers.append(md);
+ docFuncMembers.append(md);
break;
case MemberDef::Typedef:
+ decTypedefMembers.append(md);
if (sortMemberDocs)
- typedefMembers.inSort(md);
+ docTypedefMembers.inSort(md);
else
- typedefMembers.append(md);
+ docTypedefMembers.append(md);
break;
case MemberDef::Enumeration:
+ decEnumMembers.append(md);
if (sortMemberDocs)
- enumMembers.inSort(md);
+ docEnumMembers.inSort(md);
else
- enumMembers.append(md);
+ docEnumMembers.append(md);
break;
case MemberDef::EnumValue: // enum values are shown inside their enums
break;
case MemberDef::Prototype:
+ decProtoMembers.append(md);
if (sortMemberDocs)
- protoMembers.inSort(md);
+ docProtoMembers.inSort(md);
else
- protoMembers.append(md);
+ docProtoMembers.append(md);
break;
case MemberDef::Define:
+ decDefineMembers.append(md);
if (sortMemberDocs)
- defineMembers.inSort(md);
+ docDefineMembers.inSort(md);
else
- defineMembers.append(md);
+ docDefineMembers.append(md);
break;
default:
- err("FileDef::insertMembers(): unexpected member insert in file!\n");
+ err("FileDef::insertMembers(): "
+ "member `%s' with class scope `%s' inserted in file scope `%s'!\n",
+ md->name().data(),
+ md->getClassDef() ? md->getClassDef()->name().data() : "",
+ name().data());
}
//addMemberToGroup(md,groupId);
}
diff --git a/src/filedef.h b/src/filedef.h
index d042601..26a297d 100644
--- a/src/filedef.h
+++ b/src/filedef.h
@@ -149,15 +149,22 @@ class FileDef : public Definition
//void generateXMLSection(QTextStream &t,MemberList *ml,const char *type);
MemberList allMemberList;
- MemberList defineMembers;
- MemberList protoMembers;
- MemberList typedefMembers;
- MemberList enumMembers;
- MemberList funcMembers;
- MemberList varMembers;
-
- protected:
- void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
+
+ // members in the declaration part of the documentation
+ MemberList decDefineMembers;
+ MemberList decProtoMembers;
+ MemberList decTypedefMembers;
+ MemberList decEnumMembers;
+ MemberList decFuncMembers;
+ MemberList decVarMembers;
+
+ // members in the documentation part of the documentation
+ MemberList docDefineMembers;
+ MemberList docProtoMembers;
+ MemberList docTypedefMembers;
+ MemberList docEnumMembers;
+ MemberList docFuncMembers;
+ MemberList docVarMembers;
private:
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 765c95f..ccb81de 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -56,6 +56,22 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t) :
memberGroupList->setAutoDelete(TRUE);
memberGroupDict = new MemberGroupDict(1009);
+ decDefineMembers.setInGroup(TRUE);
+ decProtoMembers.setInGroup(TRUE);
+ decTypedefMembers.setInGroup(TRUE);
+ decEnumMembers.setInGroup(TRUE);
+ decEnumValMembers.setInGroup(TRUE);
+ decFuncMembers.setInGroup(TRUE);
+ decVarMembers.setInGroup(TRUE);
+
+ docDefineMembers.setInGroup(TRUE);
+ docProtoMembers.setInGroup(TRUE);
+ docTypedefMembers.setInGroup(TRUE);
+ docEnumMembers.setInGroup(TRUE);
+ docEnumValMembers.setInGroup(TRUE);
+ docFuncMembers.setInGroup(TRUE);
+ docVarMembers.setInGroup(TRUE);
+
visited = 0;
}
@@ -119,6 +135,7 @@ void GroupDef::addExample(const PageInfo *def)
exampleDict->append(def->name,def);
}
+#if 0
void GroupDef::addMemberListToGroup(MemberList *ml,
bool (MemberDef::*func)() const)
{
@@ -147,9 +164,12 @@ void GroupDef::addMemberListToGroup(MemberList *ml,
}
}
}
+#endif
+
void GroupDef::addMembersToMemberGroup()
{
+#if 0
addMemberListToGroup(allMemberList,&MemberDef::isDefine);
addMemberListToGroup(allMemberList,&MemberDef::isTypedef);
addMemberListToGroup(allMemberList,&MemberDef::isEnumerate);
@@ -158,6 +178,23 @@ void GroupDef::addMembersToMemberGroup()
addMemberListToGroup(allMemberList,&MemberDef::isSlot);
addMemberListToGroup(allMemberList,&MemberDef::isSignal);
addMemberListToGroup(allMemberList,&MemberDef::isVariable);
+#endif
+
+ ::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decEnumValMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList);
+
+ //printf("GroupDef::addMembersToMemberGroup() memberGroupList=%d\n",memberGroupList->count());
+ MemberGroupListIterator mgli(*memberGroupList);
+ MemberGroup *mg;
+ for (;(mg=mgli.current());++mgli)
+ {
+ mg->setInGroup(TRUE);
+ }
}
@@ -189,49 +226,55 @@ void GroupDef::insertMember(MemberDef *md)
switch(md->memberType())
{
case MemberDef::Variable:
+ decVarMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- varMembers.inSort(md);
+ docVarMembers.inSort(md);
else
- varMembers.append(md);
+ docVarMembers.append(md);
break;
case MemberDef::Function:
+ decFuncMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- funcMembers.inSort(md);
+ docFuncMembers.inSort(md);
else
- funcMembers.append(md);
+ docFuncMembers.append(md);
break;
case MemberDef::Typedef:
+ decTypedefMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- typedefMembers.inSort(md);
+ docTypedefMembers.inSort(md);
else
- typedefMembers.append(md);
+ docTypedefMembers.append(md);
break;
case MemberDef::Enumeration:
+ decEnumMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- enumMembers.inSort(md);
+ docEnumMembers.inSort(md);
else
- enumMembers.append(md);
+ docEnumMembers.append(md);
break;
case MemberDef::EnumValue:
- if (Config_getBool("SORT_MEMBER_DOCS"))
- enumValMembers.inSort(md);
- else
- enumValMembers.append(md);
break;
case MemberDef::Prototype:
+ decProtoMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- protoMembers.inSort(md);
+ docProtoMembers.inSort(md);
else
- protoMembers.append(md);
+ docProtoMembers.append(md);
break;
case MemberDef::Define:
+ decDefineMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- defineMembers.inSort(md);
+ docDefineMembers.inSort(md);
else
- defineMembers.append(md);
+ docDefineMembers.append(md);
break;
default:
- err("FileDef::insertMembers(): unexpected member insert in file!\n");
+ err("GroupDef::insertMembers(): "
+ "member `%s' with class scope `%s' inserted in group scope `%s'!\n",
+ md->name().data(),
+ md->getClassDef() ? md->getClassDef()->name().data() : "",
+ name().data());
}
//addMemberToGroup(md,groupId);
}
@@ -410,7 +453,13 @@ void GroupDef::writeDocumentation(OutputList &ol)
mg->writeDeclarations(ol,0,0,0,this);
}
- allMemberList->writeDeclarations(ol,0,0,0,this,0,0);
+ //allMemberList->writeDeclarations(ol,0,0,0,this,0,0);
+ decDefineMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trDefines(),0);
+ decProtoMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trFuncProtos(),0);
+ decTypedefMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trTypedefs(),0);
+ decEnumMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trEnumerations(),0);
+ decFuncMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trFunctions(),0);
+ decVarMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trVariables(),0);
}
ol.endMemberSections();
@@ -471,65 +520,23 @@ void GroupDef::writeDocumentation(OutputList &ol)
}
}
- defineMembers.countDocMembers(TRUE);
- if (defineMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trDefineDocumentation());
- ol.endGroupHeader();
- defineMembers.writeDocumentation(ol,name(),this);
- }
+ docDefineMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trDefineDocumentation());
- protoMembers.countDocMembers(TRUE);
- if (protoMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionPrototypeDocumentation());
- ol.endGroupHeader();
- protoMembers.writeDocumentation(ol,name(),this);
- }
+ docProtoMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionPrototypeDocumentation());
- typedefMembers.countDocMembers(TRUE);
- if (typedefMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trTypedefDocumentation());
- ol.endGroupHeader();
- typedefMembers.writeDocumentation(ol,name(),this);
- }
+ docTypedefMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trTypedefDocumentation());
- enumMembers.countDocMembers(TRUE);
- if (enumMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trEnumerationTypeDocumentation());
- ol.endGroupHeader();
- enumMembers.writeDocumentation(ol,name(),this);
- }
+ docEnumMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trEnumerationTypeDocumentation());
- funcMembers.countDocMembers(TRUE);
- if (funcMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionDocumentation());
- ol.endGroupHeader();
- funcMembers.writeDocumentation(ol,name(),this);
- }
+ docFuncMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionDocumentation());
- varMembers.countDocMembers(TRUE);
- if (varMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trVariableDocumentation());
- ol.endGroupHeader();
- varMembers.writeDocumentation(ol,name(),this);
- }
+ docVarMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trVariableDocumentation());
if (!Config_getString("GENERATE_TAGFILE").isEmpty())
{
diff --git a/src/groupdef.h b/src/groupdef.h
index 8c586ba..e55c727 100644
--- a/src/groupdef.h
+++ b/src/groupdef.h
@@ -94,14 +94,23 @@ class GroupDef : public Definition
MemberList *allMemberList;
MemberNameInfoDict *allMemberNameInfoDict;
- // members sorted by type
- MemberList defineMembers;
- MemberList protoMembers;
- MemberList typedefMembers;
- MemberList enumMembers;
- MemberList enumValMembers;
- MemberList funcMembers;
- MemberList varMembers;
+ // members in the declaration part of the documentation
+ MemberList decDefineMembers;
+ MemberList decProtoMembers;
+ MemberList decTypedefMembers;
+ MemberList decEnumMembers;
+ MemberList decEnumValMembers;
+ MemberList decFuncMembers;
+ MemberList decVarMembers;
+
+ // members in the documentation part of the documentation
+ MemberList docDefineMembers;
+ MemberList docProtoMembers;
+ MemberList docTypedefMembers;
+ MemberList docEnumMembers;
+ MemberList docEnumValMembers;
+ MemberList docFuncMembers;
+ MemberList docVarMembers;
/* user defined member groups */
MemberGroupList *memberGroupList; // list of member groups in this group
diff --git a/src/index.cpp b/src/index.cpp
index d37bef6..f7aa869 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -2239,13 +2239,13 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel)
};
MemInfo memberLists[] =
{
- MemInfo(&gd->defineMembers, theTranslator->trDefines()),
- MemInfo(&gd->typedefMembers, theTranslator->trTypedefs()),
- MemInfo(&gd->enumMembers, theTranslator->trEnumerations()),
- MemInfo(&gd->enumValMembers, theTranslator->trEnumerationValues()),
- MemInfo(&gd->funcMembers, theTranslator->trFunctions()),
- MemInfo(&gd->varMembers, theTranslator->trVariables()),
- MemInfo(&gd->protoMembers, theTranslator->trFuncProtos()),
+ MemInfo(&gd->docDefineMembers, theTranslator->trDefines()),
+ MemInfo(&gd->docTypedefMembers, theTranslator->trTypedefs()),
+ MemInfo(&gd->docEnumMembers, theTranslator->trEnumerations()),
+ MemInfo(&gd->docEnumValMembers, theTranslator->trEnumerationValues()),
+ MemInfo(&gd->docFuncMembers, theTranslator->trFunctions()),
+ MemInfo(&gd->docVarMembers, theTranslator->trVariables()),
+ MemInfo(&gd->docProtoMembers, theTranslator->trFuncProtos()),
MemInfo(0,0)
};
diff --git a/src/language.cpp b/src/language.cpp
index 870a271..d8b2b86 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -61,10 +61,6 @@ bool setTranslator(const char *langName)
}
else if (L_EQUAL("czech"))
{
-#ifndef _WIN32
- err("Warning: The Czech translation uses the windows code page 1250 encoding.\n"
- "Please convert translator_cz.h to ISO Latin-2 to use it under UNIX.\n");
-#endif
theTranslator=new TranslatorCzech;
}
else if (L_EQUAL("french"))
@@ -133,7 +129,7 @@ bool setTranslator(const char *langName)
}
else if (L_EQUAL("brazilian"))
{
- theTranslator=new TranslatorBrazilianPortuguese;
+ theTranslator=new TranslatorBrazilian;
}
#endif
else // use the default language (i.e. english)
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index 9347c79..761845f 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -261,16 +261,6 @@ static void writeDefaultHeaderPart1(QTextStream &t)
// The result of the LatexLanguageSupportCommand()
// is empty, which means that the language prefers
// the babel package, or no package is needed at all.
- if (theTranslator->latexBabelPackage()=="russian")
- {
- // The russian babel package also needs an encoding.
- // Assume the encoding matched the platform.
-#if defined(_WIN32)
- t << "\\usepackage[cp1251]{inputenc}\n";
-#else
- t << "\\usepackage[koi8-r]{inputenc}\n";
-#endif
- }
t << "\\usepackage[" << theTranslator->latexBabelPackage() << "]{babel}\n";
}
}
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 9962576..75b5c21 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -182,7 +182,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
}
}
-static void writeTemplatePrefix(OutputList &ol,ArgumentList *al,bool br=TRUE)
+static void writeTemplatePrefix(OutputList &ol,ArgumentList *al)
{
ol.docify("template<");
Argument *a=al->first();
@@ -200,35 +200,29 @@ static void writeTemplatePrefix(OutputList &ol,ArgumentList *al,bool br=TRUE)
if (a) ol.docify(", ");
}
ol.docify("> ");
- if (br)
- {
- // ol.pushGeneratorState();
- // ol.disable(OutputGenerator::Man);
- // ol.disable(OutputGenerator::Latex);
- // ol.lineBreak();
- // ol.popGeneratorState();
- }
}
//-----------------------------------------------------------------------------
/*! Creates a new member definition.
- * Members can be function/variables/enums/etc. inside a class or inside a
- * file.
*
* \param df File containing the definition of this member.
* \param dl Line at which the member definition was found.
* \param t A string representing the type of the member.
- * \param n A string representing the name of the member.
+ * \param na A string representing the name of the member.
* \param a A string representing the arguments of the member.
- * \param p The type of protection of the member, possible values are:
+ * \param e A string representing the throw clause of the members.
+ * \param p The protection context of the member, possible values are:
* \c Public, \c Protected, \c Private.
- * \param v The `virtualness' of the member, possible values are:
+ * \param v The degree of `virtualness' of the member, possible values are:
* \c Normal, \c Virtual, \c Pure.
- * \param s A boolean that is true if the member is static.
- * \param r A boolean that is true if the member is only related.
+ * \param s A boolean that is true iff the member is static.
+ * \param r A boolean that is true iff the member is only related.
* \param mt The kind of member. See #MemberDef::MemberType for a list of
* all types.
+ * \param tal The template arguments of this member.
+ * \param al The arguments of this member. This is a structured form of
+ * the string past as argument \a a.
*/
MemberDef::MemberDef(const char *df,int dl,
@@ -240,7 +234,6 @@ MemberDef::MemberDef(const char *df,int dl,
//printf("++++++ MemberDef(%s file=%s,line=%d) ++++++ \n",na,df,dl);
classDef=0;
fileDef=0;
- //fileDec=0;
redefines=0;
redefinedBy=0;
nspace=0;
@@ -268,7 +261,6 @@ MemberDef::MemberDef(const char *df,int dl,
stat=s;
mtype=mt;
exception=e;
- eUsed=FALSE;
proto=FALSE;
annScope=FALSE;
memSpec=FALSE;
@@ -319,6 +311,7 @@ MemberDef::MemberDef(const char *df,int dl,
}
}
+/*! Destroys the member definition. */
MemberDef::~MemberDef()
{
delete redefinedBy;
@@ -399,10 +392,6 @@ QCString MemberDef::getOutputFileBase() const
{
return fileDef->getOutputFileBase();
}
- //else if (fileDec)
- //{
- // return fileDec->getOutputFileBase();
- //}
else if (nspace)
{
return nspace->getOutputFileBase();
@@ -454,7 +443,7 @@ void MemberDef::writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd,
{
Definition *d=0;
if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else if (gd) d=gd;
- if (d==0) { err("Member %s without group! Please report this bug!\n",name().data()); return; }
+ if (d==0) { err("Member %s without definition! Please report this bug!\n",name().data()); return; }
if (group!=0 && gd==0) // forward link to the group
{
ol.writeObjectLink(group->getReference(),group->getOutputFileBase(),anchor(),name());
@@ -465,422 +454,435 @@ void MemberDef::writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd,
}
}
-
-void MemberDef::writeDeclaration(OutputList &ol,
- ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool inGroup
- )
+/*! If this member has an anonymous class/struct/union as its type, then
+ * this method will return the ClassDef that describes this return type.
+ */
+ClassDef *MemberDef::getClassDefOfAnonymousType(const char *scopeName) const
{
- int i,l;
- bool hasDocs=hasDocumentation();
- //printf("%s MemberDef::writeDeclaration(): hasDocs %d\n",name().data(),hasDocs);
- //if (cd)
- //{
- // printf("MemberDef: %s in class %s annScope=%d annMemb=%p\n",
- // name().data(),cd->name().data(),annScope,annMemb);
- //}
-
- // hide members in anonymous scopes
- // (they are displayed by there parent placeholder)
- if (annScope) return;
- // hide undocumented members unless overwritten by the configuration
- if (!hasDocs && Config_getBool("HIDE_UNDOC_MEMBERS")) return;
- // hide members with no detailed desciption and brief descriptions explicitly
- // disabled.
- if (Config_getBool("HIDE_UNDOC_MEMBERS") && documentation().isEmpty() &&
- !Config_getBool("BRIEF_MEMBER_DESC") && !Config_getBool("REPEAT_BRIEF")
- ) return;
- // hide static file & namespace members unless extract static is on
- if (cd==0 && isStatic() && !Config_getBool("EXTRACT_STATIC")) return;
-
- // hide private member that are put into a member group. Non-grouped
- // members are not rendered anyway.
- //printf("md->name()=`%s' Protection=%d\n",name().data(),protection());
- if (inGroup && protection()==Private && !Config_getBool("EXTRACT_PRIVATE")) return;
-
- QCString ltype=type.copy();
+ QCString cname=scopeName;
+ QCString ltype(type);
// strip `static' keyword from ltype
if (ltype.left(7)=="static ") ltype=ltype.right(ltype.length()-7);
// strip `friend' keyword from ltype
if (ltype.left(7)=="friend ") ltype=ltype.right(ltype.length()-7);
static QRegExp r("@[0-9]+");
- i=-1;
- if ((ltype.isEmpty() || (i=r.match(ltype,0,&l))==-1) || !enumUsed())
+ int l,i=r.match(ltype,0,&l);
+ // search for the last anonymous scope in the member type
+ ClassDef *annoClassDef=0;
+ if (i!=-1) // found anonymous scope in type
{
-
- if (!Config_getString("GENERATE_TAGFILE").isEmpty())
+ int il=i-1,ir=i+l;
+ // extract anonymous scope
+ while (il>=0 && (isId(ltype.at(il)) || ltype.at(il)==':' || ltype.at(il)=='@')) il--;
+ if (il>0) il++;
+ while (ir<(int)ltype.length() && (isId(ltype.at(ir)) || ltype.at(ir)==':' || ltype.at(ir)=='@')) ir++;
+
+ //QCString annName = ltype.mid(i,l);
+ QCString annName = ltype.mid(il,ir-il);
+
+ // if inside a class or namespace try to prepend the scope name
+ if (!cname.isEmpty() && annName.left(cname.length()+2)!=cname+"::")
{
- Doxygen::tagFile << " <member kind=\"";
- switch (mtype)
- {
- case Define: Doxygen::tagFile << "define"; break;
- case EnumValue: Doxygen::tagFile << "enumvalue"; break;
- case Property: Doxygen::tagFile << "property"; break;
- case Variable: Doxygen::tagFile << "variable"; break;
- case Typedef: Doxygen::tagFile << "typedef"; break;
- case Enumeration: Doxygen::tagFile << "enumeration"; break;
- case Function: Doxygen::tagFile << "function"; break;
- case Signal: Doxygen::tagFile << "signal"; break;
- case Prototype: Doxygen::tagFile << "prototype"; break;
- case Friend: Doxygen::tagFile << "friend"; break;
- case DCOP: Doxygen::tagFile << "dcop"; break;
- case Slot: Doxygen::tagFile << "slot"; break;
- }
- if (prot!=Public)
- {
- Doxygen::tagFile << "\" protection=\"";
- if (prot==Protected) Doxygen::tagFile << "public";
- else /* Private */ Doxygen::tagFile << "protected";
- }
- if (virt!=Normal)
- {
- Doxygen::tagFile << "\" virtualness=\"";
- if (virt==Virtual) Doxygen::tagFile << "virtual";
- else /* Pure */ Doxygen::tagFile << "pure";
- }
- if (isStatic())
- {
- Doxygen::tagFile << "\" static=\"yes";
- }
- Doxygen::tagFile << "\">" << endl;
- Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
- Doxygen::tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>" << endl;
- Doxygen::tagFile << " <arglist>" << convertToXML(argsString()) << "</arglist>" << endl;
- writeDocAnchorsToTagFile();
- Doxygen::tagFile << " </member>" << endl;
+ QCString ts=stripAnonymousNamespaceScope(cname+"::"+annName);
+ //printf("Member::writeDeclaration: Trying %s\n",ts.data());
+ annoClassDef=getClass(ts);
}
-
- Definition *d=0;
- ASSERT (cd!=0 || nd!=0 || fd!=0 || gd!=0); // member should belong to something
- if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd;
- QCString cname = d->name();
- QCString cfname = d->getOutputFileBase();
-
- //int gId = inGroup ? -1 : groupId();
- //MemberGroup *mg = (gId!=prevGroupId && gId!=-1) ? memberGroupDict[gId] : 0;
- //const char *gHeader = 0;
- //const char *gFile = 0;
- //if (mg)
- //{
- // gHeader=mg->header();
- // gFile=mg->getOutputFileBase();
- //}
- //
- //if (!inGroup)
- //{
- // if (prevGroupId==-1 && gId!=-1)
- // {
- // ol.memberGroupSpacing(FALSE);
- // ol.memberGroupSeparator();
- // }
- // else if (prevGroupId!=-1 && gId==-1)
- // {
- // ol.memberGroupSpacing(TRUE);
- // ol.memberGroupSeparator();
- // }
- // else if (prevGroupId!=-1 && gId!=-1 && prevGroupId!=gId)
- // {
- // ol.memberGroupSpacing(TRUE);
- // ol.memberGroupSeparator();
- // }
- //}
-
- HtmlHelp *htmlHelp=0;
- bool hasHtmlHelp = Config_getBool("GENERATE_HTML") && Config_getBool("GENERATE_HTMLHELP");
- if (hasHtmlHelp) htmlHelp = HtmlHelp::getInstance();
-
- // search for the last anonymous scope in the member type
- ClassDef *annoClassDef=0;
- //while (i!=-1 && cname.find(ltype.mid(i,l))!=-1)
- //{
- // i=r.match(ltype,i+l,&l);
- //}
- int il=i-1,ir=i+l;
- if (i!=-1) // found anonymous scope in type
+ // if not found yet, try without scope name
+ if (annoClassDef==0)
{
- // extract anonymous scope
- while (il>=0 && (isId(ltype.at(il)) || ltype.at(il)==':' || ltype.at(il)=='@')) il--;
- if (il>0) il++;
- while (ir<(int)ltype.length() && (isId(ltype.at(ir)) || ltype.at(ir)==':' || ltype.at(ir)=='@')) ir++;
-
- //QCString annName = ltype.mid(i,l);
- QCString annName = ltype.mid(il,ir-il);
-
- // if inside a class or namespace try to prepend the scope name
- if ((cd || nd) && annName.left(cname.length())!=cname)
- {
- QCString ts=stripAnnonymousNamespaceScope(cname+"::"+annName);
- //printf("Member::writeDeclaration: Trying %s\n",ts.data());
- annoClassDef=getClass(ts);
- }
- // if not found yet, try without scope name
- if (annoClassDef==0)
- {
- QCString ts=stripAnnonymousNamespaceScope(annName);
- //printf("Member::writeDeclaration: Trying %s\n",ts.data());
- annoClassDef=getClass(ts);
- }
+ QCString ts=stripAnonymousNamespaceScope(annName);
+ //printf("Member::writeDeclaration: Trying %s\n",ts.data());
+ annoClassDef=getClass(ts);
}
+ }
+ return annoClassDef;
+}
+
+/*! This methods returns TRUE iff the brief section (also known as
+ * declaration section) is visible in the documentation.
+ */
+bool MemberDef::isBriefSectionVisible() const
+{
+ // only include static members with file/namespace scope if
+ // explicitly enabled in the config file
+ bool visibleIfStatic = !(getClassDef()==0 &&
+ isStatic() &&
+ !Config_getBool("EXTRACT_STATIC")
+ );
- // start a new member declaration
- ol.startMemberItem((annoClassDef || annMemb || annEnumType) ? 1 : 0);
+ // only include members is the are documented or
+ // HIDE_UNDOC_MEMBERS is NO in the config file
+ bool visibleIfDocumented = (!Config_getBool("HIDE_UNDOC_MEMBERS") ||
+ hasDocumentation()
+ );
+
+ // hide members with no detailed desciption and brief descriptions
+ // explicitly disabled.
+ bool visibleIfEnabled = !(Config_getBool("HIDE_UNDOC_MEMBERS") &&
+ documentation().isEmpty() &&
+ !Config_getBool("BRIEF_MEMBER_DESC") &&
+ !Config_getBool("REPEAT_BRIEF")
+ );
+
+ // only include members that are non-private unless EXTRACT_PRIVATE is
+ // set to YES or the member is part of a group
+ bool visibleIfPrivate = (protection()!=Private ||
+ Config_getBool("EXTRACT_PRIVATE")
+ );
- // If there is no detailed description we need to write the anchor here.
- bool detailsVisible = detailsAreVisible();
- if (!detailsVisible && !Config_getBool("EXTRACT_ALL") && !annMemb)
- {
- QCString doxyName=name().copy();
- if (!cname.isEmpty()) doxyName.prepend(cname+"::");
- ol.startDoxyAnchor(cfname,anchor(),doxyName);
+ return visibleIfStatic && visibleIfDocumented &&
+ visibleIfEnabled && visibleIfPrivate && !annScope;
+}
- ol.addIndexItem(name(),cname);
- ol.addIndexItem(cname,name());
+void MemberDef::writeDeclaration(OutputList &ol,
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
+ bool inGroup
+ )
+{
+ //printf("%s MemberDef::writeDeclaration()\n",name().data());
- if (hasHtmlHelp)
- {
- htmlHelp->addIndexItem(cname,name(),cfname,anchor());
- }
- ol.pushGeneratorState();
- ol.disable(OutputGenerator::Man);
- ol.docify("\n");
- ol.popGeneratorState();
- }
+ // hide members whose brief section should not be visible
+ if (!isBriefSectionVisible()) return;
- //printf("member name=%s indDepth=%d\n",name().data(),indDepth);
- if (annoClassDef || annMemb)
- {
- int j;
- for (j=0;j<indDepth;j++)
- {
- ol.writeNonBreakableSpace(3);
- }
- }
-
- if (tArgList)
+ // write tag file information of this member
+ if (!Config_getString("GENERATE_TAGFILE").isEmpty())
+ {
+ Doxygen::tagFile << " <member kind=\"";
+ switch (mtype)
{
- writeTemplatePrefix(ol,tArgList,FALSE);
+ case Define: Doxygen::tagFile << "define"; break;
+ case EnumValue: Doxygen::tagFile << "enumvalue"; break;
+ case Property: Doxygen::tagFile << "property"; break;
+ case Variable: Doxygen::tagFile << "variable"; break;
+ case Typedef: Doxygen::tagFile << "typedef"; break;
+ case Enumeration: Doxygen::tagFile << "enumeration"; break;
+ case Function: Doxygen::tagFile << "function"; break;
+ case Signal: Doxygen::tagFile << "signal"; break;
+ case Prototype: Doxygen::tagFile << "prototype"; break;
+ case Friend: Doxygen::tagFile << "friend"; break;
+ case DCOP: Doxygen::tagFile << "dcop"; break;
+ case Slot: Doxygen::tagFile << "slot"; break;
}
- else if (membTAL)
+ if (prot!=Public)
{
- writeTemplatePrefix(ol,membTAL,FALSE);
+ Doxygen::tagFile << "\" protection=\"";
+ if (prot==Protected) Doxygen::tagFile << "public";
+ else /* Private */ Doxygen::tagFile << "protected";
}
-
- if (i!=-1) // member has an anonymous type
+ if (virt!=Normal)
{
- //printf("annoClassDef=%p annMemb=%p scopeName=`%s' anonymous=`%s'\n",
- // annoClassDef,annMemb,cname.data(),ltype.mid(i,l).data());
-
- if (annoClassDef) // type is an anonymous compound
- {
- //printf("class found!\n");
- annoClassDef->writeDeclaration(ol,annMemb,inGroup);
- ol.startMemberItem(2);
- int j;
- for (j=0;j<indDepth;j++)
- {
- ol.writeNonBreakableSpace(3);
- }
- QCString varName=ltype.right(ltype.length()-ir).stripWhiteSpace();
- ol.docify("}");
- if (varName.isEmpty() && (name().isEmpty() || name().at(0)=='@'))
- {
- ol.docify(";");
- }
- else
- {
- ol.docify(varName);
- }
- }
- else
- {
- if (getAnonymousEnumType()) // type is an anonymous enum
- {
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype.left(i),TRUE);
- ol+=*getAnonymousEnumType()->enumDecl();
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype.right(ltype.length()-i-l),TRUE);
- }
- else
- {
- ltype = ltype.left(i) + " { ... } " + ltype.right(ltype.length()-i-l);
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype,TRUE);
- }
- }
+ Doxygen::tagFile << "\" virtualness=\"";
+ if (virt==Virtual) Doxygen::tagFile << "virtual";
+ else /* Pure */ Doxygen::tagFile << "pure";
}
- else
- {
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype,TRUE);
- }
- bool htmlOn = ol.isEnabled(OutputGenerator::Html);
- if (htmlOn && Config_getBool("HTML_ALIGN_MEMBERS") && !ltype.isEmpty())
+ if (isStatic())
{
- ol.disable(OutputGenerator::Html);
+ Doxygen::tagFile << "\" static=\"yes";
}
- if (!ltype.isEmpty()) ol.docify(" ");
- if (htmlOn)
+ Doxygen::tagFile << "\">" << endl;
+ Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
+ Doxygen::tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>" << endl;
+ Doxygen::tagFile << " <arglist>" << convertToXML(argsString()) << "</arglist>" << endl;
+ writeDocAnchorsToTagFile();
+ Doxygen::tagFile << " </member>" << endl;
+ }
+
+ Definition *d=0;
+ ASSERT (cd!=0 || nd!=0 || fd!=0 || gd!=0); // member should belong to something
+ if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd;
+ QCString cname = d->name();
+ QCString cfname = d->getOutputFileBase();
+
+ HtmlHelp *htmlHelp=0;
+ bool hasHtmlHelp = Config_getBool("GENERATE_HTML") && Config_getBool("GENERATE_HTMLHELP");
+ if (hasHtmlHelp) htmlHelp = HtmlHelp::getInstance();
+
+ // search for the last anonymous scope in the member type
+ ClassDef *annoClassDef=getClassDefOfAnonymousType((cd||nd)?cname.data():0);
+
+ // start a new member declaration
+ ol.startMemberItem((annoClassDef || annMemb || annEnumType) ? 1 : 0);
+
+ // If there is no detailed description we need to write the anchor here.
+ bool detailsVisible = isDetailedSectionVisible();
+ if (!detailsVisible && !annMemb)
+ {
+ QCString doxyName=name().copy();
+ if (!cname.isEmpty()) doxyName.prepend(cname+"::");
+ ol.startDoxyAnchor(cfname,anchor(),doxyName);
+
+ ol.addIndexItem(name(),cname);
+ ol.addIndexItem(cname,name());
+
+ if (hasHtmlHelp)
{
- ol.enable(OutputGenerator::Html);
+ htmlHelp->addIndexItem(cname,name(),cfname,anchor());
}
+ ol.pushGeneratorState();
+ ol.disable(OutputGenerator::Man);
+ ol.docify("\n");
+ ol.popGeneratorState();
+ }
- if (annMemb)
+ //printf("member name=%s indDepth=%d\n",name().data(),indDepth);
+ if (annoClassDef || annMemb)
+ {
+ int j;
+ for (j=0;j<indDepth;j++)
{
- //bool latexOn = ol.isEnabled(OutputGenerator::Latex);
- //bool manOn = ol.isEnabled(OutputGenerator::Man);
- //if (latexOn) ol.disable(OutputGenerator::Latex);
- //if (manOn) ol.disable(OutputGenerator::Man);
- ol.pushGeneratorState();
- ol.disableAllBut(OutputGenerator::Html);
ol.writeNonBreakableSpace(3);
- ol.popGeneratorState();
- //if (latexOn) ol.enable(OutputGenerator::Latex);
- //if (manOn) ol.enable(OutputGenerator::Man);
}
- else
+ }
+
+ if (tArgList)
+ {
+ writeTemplatePrefix(ol,tArgList);
+ }
+ else if (membTAL)
+ {
+ writeTemplatePrefix(ol,membTAL);
+ }
+
+ QCString ltype(type);
+ // strip `static' keyword from ltype
+ if (ltype.left(7)=="static ") ltype=ltype.right(ltype.length()-7);
+ // strip `friend' keyword from ltype
+ if (ltype.left(7)=="friend ") ltype=ltype.right(ltype.length()-7);
+ static QRegExp r("@[0-9]+");
+
+ int l,i=r.match(ltype,0,&l);
+ if (i!=-1) // member has an anonymous type
+ {
+ //printf("annoClassDef=%p annMemb=%p scopeName=`%s' anonymous=`%s'\n",
+ // annoClassDef,annMemb,cname.data(),ltype.mid(i,l).data());
+
+ if (annoClassDef) // type is an anonymous compound
{
- ol.insertMemberAlign();
+ int ir=i+l;
+ //printf("class found!\n");
+ annoClassDef->writeDeclaration(ol,annMemb,inGroup);
+ ol.startMemberItem(2);
+ int j;
+ for (j=0;j<indDepth;j++)
+ {
+ ol.writeNonBreakableSpace(3);
+ }
+ QCString varName=ltype.right(ltype.length()-ir).stripWhiteSpace();
+ //printf(">>>>>> indDepth=%d ltype=`%s' varName=`%s'\n",indDepth,ltype.data(),varName.data());
+ ol.docify("}");
+ if (varName.isEmpty() && (name().isEmpty() || name().at(0)=='@'))
+ {
+ ol.docify(";");
+ }
+ //else
+ //{
+ // ol.docify(varName);
+ //}
}
-
- // write name
- if (!name().isEmpty() && name().at(0)!='@')
+ else
{
- if (isLinkable())
+ if (getAnonymousEnumType()) // type is an anonymous enum
{
- if (annMemb)
- {
- //printf("anchor=%s ann_anchor=%s\n",anchor(),annMemb->anchor());
- annMemb->writeLink(ol,
- annMemb->getClassDef(),
- annMemb->getNamespaceDef(),
- annMemb->getFileDef(),
- annMemb->getGroupDef()
- );
- annMemb->annUsed=annUsed=TRUE;
- }
- else
- //printf("writeLink %s->%d\n",name.data(),hasDocumentation());
- writeLink(ol,cd,nd,fd,gd);
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype.left(i),TRUE);
+ ol+=*getAnonymousEnumType()->enumDecl();
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype.right(ltype.length()-i-l),TRUE);
}
- else // there is a brief member description and brief member
- // descriptions are enabled or there is no detailed description.
+ else
{
- if (annMemb) annMemb->annUsed=annUsed=TRUE;
- ol.startBold();
- ol.docify(name());
- ol.endBold();
+ ltype = ltype.left(i) + " { ... } " + ltype.right(ltype.length()-i-l);
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype,TRUE);
}
}
+ }
+ else
+ {
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype,TRUE);
+ }
+ bool htmlOn = ol.isEnabled(OutputGenerator::Html);
+ if (htmlOn && Config_getBool("HTML_ALIGN_MEMBERS") && !ltype.isEmpty())
+ {
+ ol.disable(OutputGenerator::Html);
+ }
+ if (!ltype.isEmpty()) ol.docify(" ");
+ if (htmlOn)
+ {
+ ol.enable(OutputGenerator::Html);
+ }
- // if member template specifiers are not part of the name, but they are
- // present, we add them
- //if (tArgList && !(name().find('<')!=-1 && name().find('>')!=-1)
- // && cd && cd->templateArguments())
- //{
- // ol.docify(tempArgListToString(tArgList));
- //}
+ if (annMemb)
+ {
+ ol.pushGeneratorState();
+ ol.disableAllBut(OutputGenerator::Html);
+ ol.writeNonBreakableSpace(3);
+ ol.popGeneratorState();
+ }
+ else
+ {
+ ol.insertMemberAlign();
+ }
- if (argsString())
+ // write name
+ if (!name().isEmpty() && name().at(0)!='@')
+ {
+ if (isLinkable())
{
- if (!isDefine()) ol.writeString(" ");
- //ol.docify(argsString());
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),argsString());
+ if (annMemb)
+ {
+ //printf("anchor=%s ann_anchor=%s\n",anchor(),annMemb->anchor());
+ annMemb->writeLink(ol,
+ annMemb->getClassDef(),
+ annMemb->getNamespaceDef(),
+ annMemb->getFileDef(),
+ annMemb->getGroupDef()
+ );
+ annMemb->annUsed=annUsed=TRUE;
+ }
+ else
+ //printf("writeLink %s->%d\n",name.data(),hasDocumentation());
+ writeLink(ol,cd,nd,fd,gd);
}
-
- if (excpString())
+ else // there is a brief member description and brief member
+ // descriptions are enabled or there is no detailed description.
{
- ol.writeString(" ");
- ol.docify(excpString());
+ if (annMemb) annMemb->annUsed=annUsed=TRUE;
+ ol.startBold();
+ ol.docify(name());
+ ol.endBold();
}
+ }
+
+ if (argsString())
+ {
+ if (!isDefine()) ol.writeString(" ");
+ //ol.docify(argsString());
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),argsString());
+ }
+
+ if (excpString())
+ {
+ ol.writeString(" ");
+ ol.docify(excpString());
+ }
- if (!bitfields.isEmpty()) // add bitfields
+ if (!bitfields.isEmpty()) // add bitfields
+ {
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),bitfields.simplifyWhiteSpace());
+ }
+ else if (!init.isEmpty() && initLines==0 && // one line initializer
+ ((maxInitLines>0 && userInitLines==-1) || userInitLines>0) // enabled by default or explicitly
+ ) // add initializer
+ {
+ if (!isDefine())
{
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),bitfields.simplifyWhiteSpace());
+ ol.writeString(" = ");
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),init.simplifyWhiteSpace());
}
- else if (!init.isEmpty() && initLines==0 && // one line initializer
- ((maxInitLines>0 && userInitLines==-1) || userInitLines>0) // enabled by default or explicitly
- ) // add initializer
+ else
{
- if (!isDefine())
- {
- ol.writeString(" = ");
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),init.simplifyWhiteSpace());
- }
- else
- {
- ol.writeNonBreakableSpace(3);
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),init);
- }
+ ol.writeNonBreakableSpace(3);
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),init);
}
+ }
- if (!detailsVisible && !Config_getBool("EXTRACT_ALL") && !annMemb)
- {
- ol.endDoxyAnchor(cfname,anchor());
- }
+ if (!detailsVisible && !annMemb)
+ {
+ ol.endDoxyAnchor(cfname,anchor());
+ }
- ol.endMemberItem((annoClassDef!=0 && indDepth==0) || annEnumType);
-
- //ol.endMemberItem(gId!=-1,gFile,gHeader,annoClassDef || annMemb);
- // write brief description
- if (!briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC") && !annMemb)
+ ol.endMemberItem((annoClassDef!=0 && indDepth==0) || annEnumType);
+
+ //ol.endMemberItem(gId!=-1,gFile,gHeader,annoClassDef || annMemb);
+ // write brief description
+ if (!briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC") && !annMemb)
+ {
+ ol.startMemberDescription();
+ parseDoc(ol,defFileName,defLine,cname,name(),briefDescription());
+ if (detailsVisible)
{
- ol.startMemberDescription();
- parseDoc(ol,defFileName,defLine,cname,name(),briefDescription());
- if (/*!documentation().isEmpty()*/ detailsAreVisible())
+ ol.pushGeneratorState();
+ ol.disableAllBut(OutputGenerator::Html);
+ ol.endEmphasis();
+ ol.docify(" ");
+ if (group!=0 && gd==0) // forward link to the group
{
- ol.pushGeneratorState();
- ol.disableAllBut(OutputGenerator::Html);
- ol.endEmphasis();
- ol.docify(" ");
- if (group!=0 && gd==0) // forward link to the group
- {
- ol.startTextLink(group->getOutputFileBase(),anchor());
- }
- else
- {
- ol.startTextLink(0,anchor());
- }
- parseText(ol,theTranslator->trMore());
- ol.endTextLink();
- ol.startEmphasis();
- ol.popGeneratorState();
+ ol.startTextLink(group->getOutputFileBase(),anchor());
+ }
+ else
+ {
+ ol.startTextLink(0,anchor());
}
- //ol.newParagraph();
- ol.endMemberDescription();
+ parseText(ol,theTranslator->trMore());
+ ol.endTextLink();
+ ol.startEmphasis();
+ ol.popGeneratorState();
}
+ //ol.newParagraph();
+ ol.endMemberDescription();
}
warnIfUndocumented();
}
+bool MemberDef::isDetailedSectionVisible(bool inGroup) const
+{
+ // the member has details documentation for any of the following reasons
+ bool docFilter =
+ // treat everything as documented
+ Config_getBool("EXTRACT_ALL") ||
+ // has detailed docs
+ !documentation().isEmpty() ||
+ // is an enum with values that are documented
+ (mtype==Enumeration && docEnumValues) ||
+ // is documented enum value
+ (mtype==EnumValue && !briefDescription().isEmpty()) ||
+ // has brief description that is part of the detailed description
+ (!briefDescription().isEmpty() &&
+ (!Config_getBool("BRIEF_MEMBER_DESC") ||
+ Config_getBool("ALWAYS_DETAILED_SEC")) &&
+ Config_getBool("REPEAT_BRIEF"
+ )
+ ) ||
+ // has a multi-line initialization block
+ (initLines>0 && initLines<maxInitLines) ||
+ // has one or more documented arguments
+ (argList!=0 && argList->hasDocumentation());
+
+ // this is not a global static or global statics should be extracted
+ bool staticFilter = getClassDef()!=0 || !isStatic() || Config_getBool("EXTRACT_STATIC");
+
+ // details are not part of a group or this is for a group documentation page
+ bool groupFilter = getGroupDef()==0 || inGroup;
+
+ // member is part of an anonymous scope that is the type of
+ // another member in the list.
+ //
+ bool inAnonymousScope = !briefDescription().isEmpty() && annUsed;
+
+ return ((docFilter && staticFilter) || inAnonymousScope) && groupFilter;
+}
+
/*! Writes the "detailed documentation" section of this member to
* all active output formats.
*/
void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
const char *scName,
- Definition *container
+ Definition *container,
+ bool inGroup
)
{
- // hide global static functions unless extractStaticFlag is enabled
- if (getClassDef()==0 && isStatic() && !Config_getBool("EXTRACT_STATIC")) return;
- // hide member that are documented in their own group
- if (group!=0 && container->definitionType()!=TypeGroup) return;
-
// if this member is in a group find the real scope name.
- QCString scopeName = scName;
- if (container->definitionType()==TypeGroup)
+ bool hasDocs = isDetailedSectionVisible(inGroup);
+ //printf("MemberDef::writeDocumentation(): name=`%s' hasDocs=`%d' containerType=%d inGroup=%d\n",
+ // name().data(),hasDocs,container->definitionType(),inGroup);
+ if ( hasDocs )
{
- if (getClassDef()) scopeName=getClassDef()->name();
- else if (getNamespaceDef()) scopeName=getNamespaceDef()->name();
- else if (getFileDef()) scopeName=getFileDef()->name();
- }
+ QCString scopeName = scName;
+ if (container->definitionType()==TypeGroup)
+ {
+ if (getClassDef()) scopeName=getClassDef()->name();
+ else if (getNamespaceDef()) scopeName=getNamespaceDef()->name();
+ else if (getFileDef()) scopeName=getFileDef()->name();
+ }
- bool hasDocs = detailsAreVisible();
- //printf("MemberDef::writeDocumentation(): type=`%s' def=`%s'\n",type.data(),definition());
- if (
- Config_getBool("EXTRACT_ALL") || hasDocs
- || /* member is part of an anonymous scope that is the type of
- * another member in the list.
- */
- (!hasDocs && !briefDescription().isEmpty() && annUsed)
- )
- {
// get definition.
QCString cname = container->name();
QCString cfname = container->getOutputFileBase();
@@ -939,7 +941,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
}
if (!found) // anonymous compound
{
- //printf("Annonymous compound `%s'\n",cname.data());
+ //printf("Anonymous compound `%s'\n",cname.data());
ol.startDoxyAnchor(cfname,anchor(),doxyName);
ol.startMemberDoc(cname,name(),anchor(),name());
if (hasHtmlHelp)
@@ -1429,30 +1431,17 @@ bool MemberDef::isLinkable()
return isLinkableInProject() || isReference();
}
-bool MemberDef::detailsAreVisible() const
-{
- return !documentation().isEmpty() || // has detailed docs
- //((Config_getBool("SOURCE_BROWSER") || Config_getBool("INLINE_SOURCES")) && startBodyLine!=-1 && bodyDef) || // has reference to sources
- (mtype==Enumeration && docEnumValues) || // has enum values
- (mtype==EnumValue && !briefDescription().isEmpty()) || // is doc enum value
- (!briefDescription().isEmpty() &&
- (!Config_getBool("BRIEF_MEMBER_DESC") || Config_getBool("ALWAYS_DETAILED_SEC")) &&
- Config_getBool("REPEAT_BRIEF") // has brief description inside detailed area
- ) ||
- (initLines>0 && initLines<maxInitLines) ||
- (argList!=0 && argList->hasDocumentation())
- ;
-}
-
void MemberDef::setEnumDecl(OutputList &ed)
{
enumDeclList=new OutputList(&ed);
*enumDeclList+=ed;
}
-bool MemberDef::hasDocumentation()
+bool MemberDef::hasDocumentation() const
{
- return Definition::hasDocumentation() || (argList!=0 && argList->hasDocumentation());
+ return Definition::hasDocumentation() ||
+ (mtype==Enumeration && docEnumValues) || // has enum values
+ (argList!=0 && argList->hasDocumentation());
}
void MemberDef::setMemberGroup(MemberGroup *grp)
diff --git a/src/memberdef.h b/src/memberdef.h
index ee60338..4eda16b 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -95,6 +95,7 @@ class MemberDef : public Definition
Specifier virtualness() const { return virt; }
MemberType memberType() const { return mtype; }
+
// convenience methods
bool isSignal() const { return mtype==Signal; }
bool isSlot() const { return mtype==Slot; }
@@ -117,8 +118,9 @@ class MemberDef : public Definition
// output info
bool isLinkableInProject();
bool isLinkable();
- bool detailsAreVisible() const;
- bool hasDocumentation(); // overrides hasDocumentation in definition.h
+ bool hasDocumentation() const; // overrides hasDocumentation in definition.h
+ bool isBriefSectionVisible() const;
+ bool isDetailedSectionVisible(bool inGroup=FALSE) const;
// set functions
void setMemberType(MemberType t) { mtype=t; }
@@ -148,7 +150,8 @@ class MemberDef : public Definition
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
bool inGroup);
void writeDocumentation(MemberList *ml,OutputList &ol,
- const char *scopeName,Definition *container);
+ const char *scopeName,Definition *container,
+ bool inGroup);
void warnIfUndocumented();
// relation to other members
@@ -162,8 +165,8 @@ class MemberDef : public Definition
void setEnumScope(MemberDef *md) { enumScope=md; }
MemberDef *getEnumScope() const { return enumScope; }
void setEnumDecl(OutputList &ed);
- void setEnumUsed() { eUsed=TRUE; }
- bool enumUsed() const { return eUsed; }
+ //void setEnumUsed() { eUsed=TRUE; }
+ //bool enumUsed() const { return eUsed; }
OutputList *enumDecl() const { return enumDeclList; }
MemberList *enumFieldList() const { return enumFields; }
void setDocumentedEnumValues(bool value) { docEnumValues=value; }
@@ -202,11 +205,11 @@ class MemberDef : public Definition
void setMemberGroupId(int id) { grpId=id; }
int getMemberGroupId() const { return grpId; }
- // annonymous scope members
- void setFromAnnonymousScope(bool b) { annScope=b; }
- void setFromAnnonymousMember(MemberDef *m) { annMemb=m; }
- bool fromAnnonymousScope() const { return annScope; }
- bool annonymousDeclShown() const { return annUsed; }
+ // anonymous scope members
+ void setFromAnonymousScope(bool b) { annScope=b; }
+ void setFromAnonymousMember(MemberDef *m) { annMemb=m; }
+ bool fromAnonymousScope() const { return annScope; }
+ bool anonymousDeclShown() const { return annUsed; }
void setIndentDepth( int i) { indDepth=i; }
int indentDepth() { return indDepth; }
@@ -214,7 +217,7 @@ class MemberDef : public Definition
QCString getScopeString() const;
- //void generateXML(QTextStream &t,Definition *def);
+ ClassDef *getClassDefOfAnonymousType(const char *scopeName) const;
private:
ClassDef *classDef; // member of or related to
@@ -247,7 +250,7 @@ class MemberDef : public Definition
bool stat; // is it a static function?
int memSpec; // The specifiers present for this member
MemberType mtype; // returns the kind of member
- bool eUsed; // is the enumerate already placed in a list
+ //bool eUsed; // is the enumerate already placed in a list
bool proto; // is it a prototype;
bool docEnumValues; // is an enum with documented enum values.
bool annScope; // member is part of an annoymous scope
diff --git a/src/membergroup.cpp b/src/membergroup.cpp
index f96dc06..83e4dd3 100644
--- a/src/membergroup.cpp
+++ b/src/membergroup.cpp
@@ -43,7 +43,7 @@ MemberGroup::MemberGroup(int id,const char *hdr,const char *d) /* : Definition(i
scope = 0;
inSameSection = TRUE;
inDeclSection = 0;
- numDeclMembers = -1;
+ m_numDecMembers = -1;
//printf("Member group docs=`%s'\n",doc.data());
}
@@ -89,15 +89,22 @@ void MemberGroup::setAnchors()
void MemberGroup::writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd)
{
- memberList->writeDeclarations(ol,cd,nd,fd,gd,grpHeader,doc,TRUE,TRUE);
+ //printf("MemberGroup::writeDeclarations() memberList->count()=%d\n",memberList->count());
+ memberList->writeDeclarations(ol,cd,nd,fd,gd,grpHeader,doc/*,TRUE,TRUE*/);
}
void MemberGroup::writePlainDeclarations(OutputList &ol,
- ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool inGroup)
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd
+ )
{
//printf("MemberGroup::writePlainDeclarations() memberList->count()=%d\n",memberList->count());
- memberList->writePlainDeclarations(ol,cd,nd,fd,gd,inGroup);
+ memberList->writePlainDeclarations(ol,cd,nd,fd,gd);
+}
+
+void MemberGroup::writeDocumentation(OutputList &ol,const char *scopeName,
+ Definition *container)
+{
+ memberList->writeDocumentation(ol,scopeName,container,0);
}
/*! Add this group as a subsection of the declaration section, instead
@@ -111,14 +118,14 @@ void MemberGroup::addToDeclarationSection()
}
}
-int MemberGroup::countDecMembers(bool sectionPerType)
+int MemberGroup::countDecMembers(/*bool sectionPerType*/)
{
- if (numDeclMembers==-1) /* number of member not cached */
+ if (m_numDecMembers==-1) /* number of member not cached */
{
- memberList->countDecMembers(TRUE,TRUE,sectionPerType);
- numDeclMembers = memberList->totalCount();
+ memberList->countDecMembers(/*TRUE,TRUE,sectionPerType*/);
+ m_numDecMembers = memberList->numDecMembers();
}
- return numDeclMembers;
+ return m_numDecMembers;
}
void MemberGroup::distributeMemberGroupDocumentation()
@@ -141,3 +148,58 @@ void MemberGroup::distributeMemberGroupDocumentation()
}
}
}
+
+int MemberGroup::varCount() const
+{
+ return memberList->varCount();
+}
+
+int MemberGroup::funcCount() const
+{
+ return memberList->funcCount();
+}
+
+int MemberGroup::enumCount() const
+{
+ return memberList->enumCount();
+}
+
+int MemberGroup::enumValueCount() const
+{
+ return memberList->enumValueCount();
+}
+
+int MemberGroup::typedefCount() const
+{
+ return memberList->typedefCount();
+}
+
+int MemberGroup::protoCount() const
+{
+ return memberList->protoCount();
+}
+
+int MemberGroup::defineCount() const
+{
+ return memberList->defineCount();
+}
+
+int MemberGroup::friendCount() const
+{
+ return memberList->friendCount();
+}
+
+int MemberGroup::numDecMembers() const
+{
+ return memberList->numDecMembers();
+}
+
+int MemberGroup::numDocMembers() const
+{
+ return memberList->numDocMembers();
+}
+
+void MemberGroup::setInGroup(bool b)
+{
+ memberList->setInGroup(b);
+}
diff --git a/src/membergroup.h b/src/membergroup.h
index 8ddcb66..833350e 100644
--- a/src/membergroup.h
+++ b/src/membergroup.h
@@ -43,15 +43,28 @@ class MemberGroup /* : public Definition */
void insertMember(MemberDef *);
void setAnchors();
void writePlainDeclarations(OutputList &ol,
- ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool inGroup=TRUE);
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
void writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
+
+ void writeDocumentation(OutputList &ol,const char *scopeName,
+ Definition *container);
QCString documentation() { return doc; }
bool allMembersInSameSection() { return inSameSection; }
void addToDeclarationSection();
- int countDecMembers(bool sectionPerType);
+ int countDecMembers(/*bool sectionPerType*/);
void distributeMemberGroupDocumentation();
+ int varCount() const;
+ int funcCount() const;
+ int enumCount() const;
+ int enumValueCount() const;
+ int typedefCount() const;
+ int protoCount() const;
+ int defineCount() const;
+ int friendCount() const;
+ int numDecMembers() const;
+ int numDocMembers() const;
+ void setInGroup(bool b);
private:
MemberList *memberList; // list of all members in the group
@@ -62,7 +75,7 @@ class MemberGroup /* : public Definition */
QCString doc;
MemberList *inDeclSection;
bool inSameSection;
- int numDeclMembers;
+ int m_numDecMembers;
};
class MemberGroupList : public QList<MemberGroup>
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index d6d05e2..404c5a0 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -30,6 +30,9 @@
MemberList::MemberList() : QList<MemberDef>()
{
memberGroupList=0;
+ m_numDecMembers=-1; // special value indicating that computation is needed
+ m_numDocMembers=-1; // special value indicating that computation is needed
+ m_inGroup=FALSE;
}
MemberList::~MemberList()
@@ -44,96 +47,98 @@ int MemberList::compareItems(GCI item1, GCI item2)
return strcmp(c1->name(),c2->name());
}
-void MemberList::countDecMembers(bool inGroup,bool countSubGroups,bool sectionPerType)
+/*! Count the number of members in this list that are visible in
+ * the declaration part of a compound's documentation page.
+ */
+void MemberList::countDecMembers(/*bool inGroup,bool countSubGroups,bool sectionPerType*/)
{
- //printf("----- countDecMembers ----\n");
- varCnt=funcCnt=enumCnt=enumValCnt=typeCnt=protoCnt=defCnt=friendCnt=0;
- m_count=0;
- MemberDef *md=first();
- while (md)
+ if (m_numDecMembers!=-1) return;
+
+ //printf("----- countDecMembers count=%d ----\n",count());
+ m_varCnt=m_funcCnt=m_enumCnt=m_enumValCnt=0;
+ m_typeCnt=m_protoCnt=m_defCnt=m_friendCnt=0;
+ m_numDecMembers=0;
+ QListIterator<MemberDef> mli(*this);
+ MemberDef *md;
+ for (mli.toFirst();(md=mli.current());++mli)
{
- //printf("md=%p md->name()=`%s' inGroup=%d getMemberGroup()=%p\n",
- // md,md->name().data(),inGroup,md->getMemberGroup());
- if (!(md->getClassDef()==0 && md->isStatic() && !Config_getBool("EXTRACT_STATIC")) &&
- (!Config_getBool("HIDE_UNDOC_MEMBERS") || md->hasDocumentation()) &&
- (
- (!Config_getBool("HIDE_UNDOC_MEMBERS") || !md->documentation().isEmpty() ||
- Config_getBool("BRIEF_MEMBER_DESC") || Config_getBool("REPEAT_BRIEF")
- ) || Config_getBool("EXTRACT_ALL") ||
- (md->isEnumerate() &&
- md->hasDocumentedEnumValues()
- )
- ) &&
- inGroup==md->visibleMemberGroup(sectionPerType) &&
- !(inGroup && md->protection()==Private && !Config_getBool("EXTRACT_PRIVATE"))
- )
+ if (md->isBriefSectionVisible())
{
switch(md->memberType())
{
case MemberDef::Variable: // fall through
- case MemberDef::Property: varCnt++,m_count++;
+ case MemberDef::Property: m_varCnt++,m_numDecMembers++;
break;
case MemberDef::Function: // fall through
case MemberDef::Signal: // fall through
case MemberDef::DCOP: // fall through
case MemberDef::Slot: if (!md->isRelated() || md->getClassDef())
- funcCnt++,m_count++;
+ m_funcCnt++,m_numDecMembers++;
break;
- case MemberDef::Enumeration: enumCnt++,m_count++; break;
- case MemberDef::EnumValue: enumValCnt++,m_count++; break;
- case MemberDef::Typedef: typeCnt++,m_count++; break;
- case MemberDef::Prototype: protoCnt++,m_count++; break;
+ case MemberDef::Enumeration: m_enumCnt++,m_numDecMembers++; break;
+ case MemberDef::EnumValue: m_enumValCnt++,m_numDecMembers++; break;
+ case MemberDef::Typedef: m_typeCnt++,m_numDecMembers++; break;
+ case MemberDef::Prototype: m_protoCnt++,m_numDecMembers++; break;
case MemberDef::Define: if (Config_getBool("EXTRACT_ALL") ||
md->argsString() ||
!md->initializer().isEmpty() ||
md->hasDocumentation()
- ) defCnt++,m_count++;
+ ) m_defCnt++,m_numDecMembers++;
break;
- case MemberDef::Friend: friendCnt++,m_count++; break;
+ case MemberDef::Friend: m_friendCnt++,m_numDecMembers++; break;
default:
- err("Error: Unknown member type found!");
+ err("Error: Unknown member type found for member `%s'\n!",md->name().data());
}
}
- md=next();
}
- if (memberGroupList && countSubGroups)
+ if (memberGroupList /*&& countSubGroups*/)
{
MemberGroupListIterator mgli(*memberGroupList);
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)
{
- int mgCount = mg->countDecMembers(sectionPerType);
- //printf("memberGroupList adding %d inGroup=%d\n",mgCount,inGroup);
- m_count+=mgCount;
+ mg->countDecMembers();
+ m_varCnt+=mg->varCount();
+ m_funcCnt+=mg->funcCount();
+ m_enumCnt+=mg->enumCount();
+ m_enumValCnt+=mg->enumValueCount();
+ m_typeCnt+=mg->typedefCount();
+ m_protoCnt+=mg->protoCount();
+ m_defCnt+=mg->defineCount();
+ m_friendCnt+=mg->friendCount();
+ m_numDecMembers+=mg->numDecMembers();
}
}
//printf("----- end countDecMembers ----\n");
- //printf("MemberList::countDecMembers(%d)=%d\n",inGroup,m_count);
+ //printf("MemberList::countDecMembers()=%d\n",m_numDecMembers);
}
-void MemberList::countDocMembers(bool listOfGroup)
+void MemberList::countDocMembers()
{
- /*varCnt=funcCnt=enumCnt=enumValCnt=typeCnt=protoCnt=defCnt=friendCnt=0;*/
- m_count=0;
- MemberDef *md=first();
- while (md)
+ if (m_numDocMembers!=-1) return; // used cached value
+ m_numDocMembers=0;
+ QListIterator<MemberDef> mli(*this);
+ MemberDef *md;
+ for (mli.toFirst();(md=mli.current());++mli)
{
- //printf("%s MemberList::countDocMembers() details=%d\n",
- // md->name().data(),md->detailsAreVisible());
- bool visibleIfStatic =
- !(md->getClassDef()==0 && md->isStatic() && !Config_getBool("EXTRACT_STATIC"));
-
- bool inOwnGroup = (md->getGroupDef()!=0 && !listOfGroup);
-
- if (visibleIfStatic && !inOwnGroup &&
- (Config_getBool("EXTRACT_ALL") || md->detailsAreVisible())
- )
+ if (md->isDetailedSectionVisible(m_inGroup))
+ {
+ // do not count enum values, since they do not produce entries of their own
+ if (md->memberType()!=MemberDef::EnumValue) m_numDocMembers++;
+ }
+ }
+ if (memberGroupList)
+ {
+ MemberGroupListIterator mgli(*memberGroupList);
+ MemberGroup *mg;
+ for (;(mg=mgli.current());++mgli)
{
- if (md->memberType()!=MemberDef::EnumValue) m_count++;
+ mg->countDecMembers();
+ m_numDocMembers+=mg->numDocMembers();
}
- md=next();
}
+ //printf("MemberList::countDocMembers()=%d memberGroupList=%p\n",m_numDocMembers,memberGroupList);
}
bool MemberList::insert(uint index,const MemberDef *md)
@@ -157,183 +162,88 @@ MemberListIterator::MemberListIterator(const QList<MemberDef> &l) :
}
void MemberList::writePlainDeclarations(OutputList &ol,
- ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool inGroup,bool countSubGroups
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd
)
{
- bool sectionPerType = !inGroup && (fd || nd || gd);
//printf("----- writePlainDeclaration() ----\n");
- countDecMembers(inGroup,countSubGroups,sectionPerType);
- if (totalCount()==0) return; // no members in this list
+ countDecMembers(/*inGroup,countSubGroups,sectionPerType*/);
+ if (numDecMembers()==0) return; // no members in this list
//printf("----> writePlainDeclaration() inGroup=%d totalCount()=%d\n",inGroup,totalCount());
ol.pushGeneratorState();
- //int prevGroupId = -1;
- if (!sectionPerType) ol.startMemberList();
+ ol.startMemberList();
MemberDef *md;
-
- if (defineCount()>0)
- {
- if (sectionPerType)
- {
- ol.startMemberHeader();
- parseText(ol,theTranslator->trDefines());
- ol.endMemberHeader();
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()); ++mli )
- {
- //printf("md->isDefined()=%d inGroup=%d md->getMemberGroup()=%p\n",
- // md->isDefine(),inGroup,md->getMemberGroup());
- if (md->isDefine() &&
- (md->argsString() || md->hasDocumentation() ||
- !md->initializer().isEmpty() ||
- Config_getBool("EXTRACT_ALL")) &&
- inGroup==md->visibleMemberGroup(sectionPerType)
- )
- {
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
- }
- }
- if (sectionPerType)
- {
- ol.endMemberList();
- }
- }
-
- if (protoCount()>0)
- {
- //printf("There are %d prototypes\n",protoCount());
- if (sectionPerType)
- {
- ol.startMemberHeader();
- parseText(ol,theTranslator->trFuncProtos());
- ol.endMemberHeader();
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()); ++mli )
- {
- if (md->isPrototype() && inGroup==md->visibleMemberGroup(sectionPerType))
- {
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
- }
- }
- if (sectionPerType)
- {
- ol.endMemberList();
- }
- }
-
- if (typedefCount()>0)
- {
- //printf("There are %d typedefs\n",typedefCount());
- if (sectionPerType)
- {
- ol.startMemberHeader();
- parseText(ol,theTranslator->trTypedefs());
- ol.endMemberHeader();
- //ol.writeMemberHeader("Typedefs");
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()) ; ++mli )
- {
- if (md->isTypedef() && inGroup==md->visibleMemberGroup(sectionPerType))
- {
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
- }
- }
- if (sectionPerType) ol.endMemberList();
- }
-
- // write enums
- if (enumCount()>0)
+ MemberListIterator mli(*this);
+ for ( ; (md=mli.current()); ++mli )
{
- //printf("There are %d enums\n",enumCount());
- if (sectionPerType)
+ //printf(">>> Member `%s' type=%d\n",md->name().data(),md->memberType());
+ switch(md->memberType())
{
- ol.startMemberHeader();
- parseText(ol,theTranslator->trEnumerations());
- ol.endMemberHeader();
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()) ; ++mli ) // iterate through the members
- {
- // see if member is hidden by protection
- if (md->protection()==Private && !Config_getBool("EXTRACT_PRIVATE")) continue;
-
- QCString type=md->typeString();
- type=type.stripWhiteSpace(); // TODO: is this really needed?
-
- // filter out enums that are in a group iff inGroup holds
- if (md->isEnumerate() && inGroup==md->visibleMemberGroup(sectionPerType) /*&& (hasDocs || !Config_getBool("HIDE_UNDOC_MEMBERS"))*/)
+ case MemberDef::Define: // fall through
+ case MemberDef::Prototype: // fall through
+ case MemberDef::Typedef: // fall through
+ case MemberDef::Variable: // fall through
+ case MemberDef::Function: // fall through
+ case MemberDef::Signal: // fall through
+ case MemberDef::Slot: // fall through
+ case MemberDef::DCOP: // fall through
+ case MemberDef::Property:
+ md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
+ break;
+ case MemberDef::Enumeration:
{
- // filter out invisible enums
- if ( !Config_getBool("HIDE_UNDOC_MEMBERS") || // do not hide undocumented members or
- !md->documentation().isEmpty() || // member has detailed descr. or
- md->hasDocumentedEnumValues() || // member has documented enum vales.
- (
- !md->briefDescription().isEmpty() &&
- Config_getBool("BRIEF_MEMBER_DESC") // brief descr. is shown or
- )
- )
+ OutputList typeDecl(&ol);
+ QCString name(md->name());
+ int i=name.findRev("::");
+ if (i!=-1) name=name.right(name.length()-i-2); // strip scope (TODO: is this needed?)
+ if (name[0]!='@') // not an anonymous enum
{
- OutputList typeDecl(&ol);
- QCString name=md->name().copy();
- int i=name.findRev("::");
- if (i!=-1) name=name.right(name.length()-i-2); // strip scope
- if (name[0]!='@') // not an anonymous enum
+ if (md->isLinkableInProject() || md->hasDocumentedEnumValues())
{
- if (md->isLinkableInProject() || md->hasDocumentedEnumValues())
- {
- if (!Config_getString("GENERATE_TAGFILE").isEmpty())
- {
- Doxygen::tagFile << " <member kind=\"enumeration\">" << endl;
- Doxygen::tagFile << " <name>" << convertToXML(md->name()) << "</name>" << endl;
- Doxygen::tagFile << " <anchor>" << convertToXML(md->anchor()) << "</anchor>" << endl;
- Doxygen::tagFile << " <arglist>" << convertToXML(md->argsString()) << "</arglist>" << endl;
- Doxygen::tagFile << " </member>" << endl;
- }
- md->writeLink(typeDecl,cd,nd,fd,gd);
- }
- else
+ if (!Config_getString("GENERATE_TAGFILE").isEmpty())
{
- typeDecl.startBold();
- typeDecl.docify(name);
- typeDecl.endBold();
+ Doxygen::tagFile << " <member kind=\"enumeration\">" << endl;
+ Doxygen::tagFile << " <name>" << convertToXML(md->name()) << "</name>" << endl;
+ Doxygen::tagFile << " <anchor>" << convertToXML(md->anchor()) << "</anchor>" << endl;
+ Doxygen::tagFile << " <arglist>" << convertToXML(md->argsString()) << "</arglist>" << endl;
+ Doxygen::tagFile << " </member>" << endl;
}
- typeDecl.writeChar(' ');
+ md->writeLink(typeDecl,cd,nd,fd,gd);
+ }
+ else
+ {
+ typeDecl.startBold();
+ typeDecl.docify(name);
+ typeDecl.endBold();
}
+ typeDecl.writeChar(' ');
+ }
+
+ int enumMemCount=0;
- int enumMemCount=0;
-
- uint enumValuesPerLine =
- (uint)Config_getInt("ENUM_VALUES_PER_LINE");
- typeDecl.docify("{ ");
- QList<MemberDef> *fmdl=md->enumFieldList();
- if (fmdl)
+ uint enumValuesPerLine = (uint)Config_getInt("ENUM_VALUES_PER_LINE");
+ typeDecl.docify("{ ");
+ QList<MemberDef> *fmdl=md->enumFieldList();
+ if (fmdl)
+ {
+ MemberDef *fmd=fmdl->first();
+ while (fmd)
{
- MemberDef *fmd=fmdl->first();
- while (fmd)
+ /* in html we start a new line after a number of items */
+ if (fmdl->count()>enumValuesPerLine
+ && (enumMemCount%enumValuesPerLine)==0
+ )
{
- /* in html we start a new line after a number of items */
- if (fmdl->count()>enumValuesPerLine
- && (enumMemCount%enumValuesPerLine)==0
- )
- {
- typeDecl.pushGeneratorState();
- typeDecl.disableAllBut(OutputGenerator::Html);
- typeDecl.lineBreak();
- typeDecl.writeString("&nbsp;&nbsp;");
- typeDecl.popGeneratorState();
- }
+ typeDecl.pushGeneratorState();
+ typeDecl.disableAllBut(OutputGenerator::Html);
+ typeDecl.lineBreak();
+ typeDecl.writeString("&nbsp;&nbsp;");
+ typeDecl.popGeneratorState();
+ }
- if (fmd->hasDocumentation()) // enum value has docs
- {
+ if (fmd->hasDocumentation()) // enum value has docs
+ {
if (!Config_getString("GENERATE_TAGFILE").isEmpty())
{
Doxygen::tagFile << " <member kind=\"enumvalue\">" << endl;
@@ -342,130 +252,95 @@ void MemberList::writePlainDeclarations(OutputList &ol,
Doxygen::tagFile << " <arglist>" << convertToXML(fmd->argsString()) << "</arglist>" << endl;
Doxygen::tagFile << " </member>" << endl;
}
- fmd->writeLink(typeDecl,cd,nd,fd,gd);
- }
- else // no docs for this enum value
- {
- typeDecl.startBold();
- typeDecl.docify(fmd->name());
- typeDecl.endBold();
- }
- if (!fmd->initializer().isEmpty()) // enum value has initializer
- {
- typeDecl.writeString(" = ");
- parseText(typeDecl,fmd->initializer());
- }
-
- fmd=fmdl->next();
- if (fmd) typeDecl.writeString(", ");
- typeDecl.disable(OutputGenerator::Man);
- typeDecl.writeString("\n"); // to prevent too long lines in LaTeX
- typeDecl.enable(OutputGenerator::Man);
- enumMemCount++;
+ fmd->writeLink(typeDecl,cd,nd,fd,gd);
}
- if (fmdl->count()>enumValuesPerLine)
+ else // no docs for this enum value
{
- typeDecl.pushGeneratorState();
- typeDecl.disableAllBut(OutputGenerator::Html);
- typeDecl.lineBreak();
- typeDecl.popGeneratorState();
+ typeDecl.startBold();
+ typeDecl.docify(fmd->name());
+ typeDecl.endBold();
}
+ if (!fmd->initializer().isEmpty()) // enum value has initializer
+ {
+ typeDecl.writeString(" = ");
+ parseText(typeDecl,fmd->initializer());
+ }
+
+ fmd=fmdl->next();
+ if (fmd) typeDecl.writeString(", ");
+ typeDecl.disable(OutputGenerator::Man);
+ typeDecl.writeString("\n"); // to prevent too long lines in LaTeX
+ typeDecl.enable(OutputGenerator::Man);
+ enumMemCount++;
+ }
+ if (fmdl->count()>enumValuesPerLine)
+ {
+ typeDecl.pushGeneratorState();
+ typeDecl.disableAllBut(OutputGenerator::Html);
+ typeDecl.lineBreak();
+ typeDecl.popGeneratorState();
}
- typeDecl.docify(" }");
- md->setEnumDecl(typeDecl);
- int enumVars=0;
- MemberListIterator vmli(*this);
- MemberDef *vmd;
- if (name[0]=='@') // anonymous enum => append variables
+ }
+ typeDecl.docify(" }");
+ md->setEnumDecl(typeDecl);
+ int enumVars=0;
+ MemberListIterator vmli(*this);
+ MemberDef *vmd;
+ if (name[0]=='@') // anonymous enum => append variables
+ {
+ for ( ; (vmd=vmli.current()) ; ++vmli)
{
- for ( ; (vmd=vmli.current()) ; ++vmli)
+ QCString vtype=vmd->typeString();
+ if ((vtype.find(name))!=-1)
{
- QCString vtype=vmd->typeString();
- if ((vtype.find(name))!=-1)
- {
- enumVars++;
- vmd->setAnonymousEnumType(md);
- }
+ enumVars++;
+ vmd->setAnonymousEnumType(md);
}
}
- // if this is an annoymous enum and there are variable of this
- // enum type (i.e. enumVars>0), then we do not show the enum here.
- if (enumVars==0) // show enum here
+ }
+ // if this is an anoymous enum and there are variable of this
+ // enum type (i.e. enumVars>0), then we do not show the enum here.
+ if (enumVars==0) // show enum here
+ {
+ ol.startMemberItem(0);
+ ol.writeString("enum ");
+ ol.insertMemberAlign();
+ ol+=typeDecl; // append the enum values.
+ ol.endMemberItem(FALSE);
+ if (!md->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
{
- ol.startMemberItem(0);
- ol.writeString("enum ");
- ol.insertMemberAlign();
- ol+=typeDecl; // append the enum values.
- ol.endMemberItem(FALSE);
- if (!md->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
+ ol.startMemberDescription();
+ parseDoc(ol,
+ md->getDefFileName(),md->getDefLine(),
+ cd?cd->name().data():0,md->name().data(),
+ md->briefDescription()
+ );
+ if (!md->documentation().isEmpty() || md->hasDocumentedEnumValues())
{
- ol.startMemberDescription();
- parseDoc(ol,
- md->getDefFileName(),md->getDefLine(),
- cd?cd->name().data():0,md->name().data(),
- md->briefDescription()
- );
- if (!md->documentation().isEmpty() || md->hasDocumentedEnumValues())
- {
- ol.disableAllBut(OutputGenerator::Html);
- ol.endEmphasis();
- ol.docify(" ");
- ol.startTextLink(0,md->anchor());
- parseText(ol,theTranslator->trMore());
- ol.endTextLink();
- ol.startEmphasis();
- ol.enableAll();
- }
- ol.endMemberDescription();
+ ol.disableAllBut(OutputGenerator::Html);
+ ol.endEmphasis();
+ ol.docify(" ");
+ ol.startTextLink(0,md->anchor());
+ parseText(ol,theTranslator->trMore());
+ ol.endTextLink();
+ ol.startEmphasis();
+ ol.enableAll();
}
+ ol.endMemberDescription();
}
- md->warnIfUndocumented();
}
- } // md->isEnumerate()
- } // enum loop
- if (sectionPerType) ol.endMemberList();
- } // write enums
-
- // write functions
- if (funcCount()>0)
- {
- //printf("There are %d functions\n",funcCount());
- if (sectionPerType)
- {
- ol.startMemberHeader();
- parseText(ol,theTranslator->trFunctions());
- ol.endMemberHeader();
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()) ; ++mli )
- {
- if (
- ( md->isFunction() || md->isSignal() || md->isSlot() || md->isDCOP()) &&
- ( !md->isRelated() || md->getClassDef() ) &&
- inGroup==md->visibleMemberGroup(sectionPerType)
- )
- {
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
+ md->warnIfUndocumented();
+ break;
}
- }
- if (sectionPerType) ol.endMemberList();
- }
-
- if (friendCount()>0)
- {
- //printf("There are %d friends\n",friendCount());
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()) ; ++mli )
- {
- if (md->isFriend() && inGroup==md->visibleMemberGroup(sectionPerType))
+ case MemberDef::Friend:
{
+ //printf("Writing friend `%s'\n",md->name().data());
QCString type=md->typeString();
//printf("Friend: type=%s name=%s\n",type.data(),md->name().data());
bool isFriendClass = type=="friend class";
if (!isFriendClass)
{
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
+ md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
}
else // isFriendClass
// friend is undocumented as a member but it is a class,
@@ -499,52 +374,31 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol.endMemberItem(FALSE);
}
}
+ break;
}
+ case MemberDef::EnumValue:
+ break;
}
}
- // write variables
- if (varCount()>0)
- {
- //printf("There are %d variables\n",varCount());
- if (sectionPerType)
- {
- ol.startMemberHeader();
- parseText(ol,theTranslator->trVariables());
- ol.endMemberHeader();
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()) ; ++mli )
- {
- if ((md->isVariable() || md->isProperty()) &&
- inGroup==md->visibleMemberGroup(sectionPerType))
- {
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
- }
- }
- if (sectionPerType) ol.endMemberList();
- }
-
- // handle members that are inside annonymous compounds and for which
- // no variables of the annonymous compound type exist.
+ // handle members that are inside anonymous compounds and for which
+ // no variables of the anonymous compound type exist.
if (cd)
{
MemberListIterator mli(*this);
for ( ; (md=mli.current()) ; ++mli )
{
- if (md->fromAnnonymousScope() && !md->annonymousDeclShown()
- && inGroup==md->visibleMemberGroup(sectionPerType))
+ if (md->fromAnonymousScope() && !md->anonymousDeclShown())
{
- //printf("annonymous compound members\n");
- md->setFromAnnonymousScope(FALSE);
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
- md->setFromAnnonymousScope(TRUE);
+ //printf("anonymous compound members\n");
+ md->setFromAnonymousScope(FALSE);
+ md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
+ md->setFromAnonymousScope(TRUE);
}
}
}
- if (!sectionPerType) { ol.endMemberList(); /*ol.writeChar('\n');*/ }
+ ol.endMemberList();
ol.popGeneratorState();
//printf("----- end writePlainDeclaration() ----\n");
@@ -552,24 +406,13 @@ void MemberList::writePlainDeclarations(OutputList &ol,
void MemberList::writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- const char *title,const char *subtitle,
- bool inGroup,bool countSubGroups)
+ const char *title,const char *subtitle
+ /*, bool inGroup,bool countSubGroups*/)
{
//printf("MemberList::writeDeclaration(title=`%s',subtitle=`%s')\n",title,subtitle);
//printf("----- writeDeclaration() ----\n");
- bool sectionPerType = !inGroup && (fd || nd || gd);
- countDecMembers(FALSE,countSubGroups,sectionPerType); // count member not in group
- int normalMembers = totalCount();
- int ingroupMembers = 0;
- //printf("Normal members %d\n",normalMembers);
- if (inGroup)
- {
- countDecMembers(TRUE,countSubGroups,sectionPerType); // count member inside group
- ingroupMembers = totalCount();
- }
- int totalMembers = normalMembers + ingroupMembers;
- //printf("Total members %d\n",totalMembers);
- if (totalMembers==0) return;
+ countDecMembers(); // count member not in group
+ if (numDecMembers()==0) return;
if (title)
{
ol.startMemberHeader();
@@ -580,15 +423,16 @@ void MemberList::writeDeclarations(OutputList &ol,
{
//printf("subtitle=`%s'\n",subtitle);
ol.startMemberSubtitle();
- if (inGroup)
+ if (m_inGroup)
parseDoc(ol,"<generated>",1,0,0,subtitle);
else
parseText(ol,subtitle);
ol.endMemberSubtitle();
}
- writePlainDeclarations(ol,cd,nd,fd,gd,inGroup,FALSE);
+ writePlainDeclarations(ol,cd,nd,fd,gd);
+ //printf("memberGroupList=%p\n",memberGroupList);
if (memberGroupList)
{
MemberGroupListIterator mgli(*memberGroupList);
@@ -611,8 +455,8 @@ void MemberList::writeDeclarations(OutputList &ol,
}
ol.startMemberGroup();
mg->writePlainDeclarations(ol,cd,nd,fd,gd);
- ++mgli;
ol.endMemberGroup(hasHeader);
+ ++mgli;
}
}
//printf("----- end writeDeclaration() ----\n");
@@ -620,13 +464,37 @@ void MemberList::writeDeclarations(OutputList &ol,
}
void MemberList::writeDocumentation(OutputList &ol,
- const char *scopeName, Definition *container)
+ const char *scopeName, Definition *container,
+ const char *title)
{
+ //printf("MemberList::writeDocumentation()\n");
+
+ countDocMembers();
+ if (numDocMembers()==0) return;
+
+ if (title)
+ {
+ ol.writeRuler();
+ ol.startGroupHeader();
+ parseText(ol,title);
+ ol.endGroupHeader();
+ }
+
MemberListIterator mli(*this);
MemberDef *md;
for ( ; (md=mli.current()) ; ++mli)
{
- md->writeDocumentation(this,ol,scopeName,container);
+ md->writeDocumentation(this,ol,scopeName,container,m_inGroup);
+ }
+ if (memberGroupList)
+ {
+ //printf("MemberList::writeDocumentation() -- member groups\n");
+ MemberGroupListIterator mgli(*memberGroupList);
+ MemberGroup *mg;
+ for (;(mg=mgli.current());++mgli)
+ {
+ mg->writeDocumentation(ol,scopeName,container);
+ }
}
}
diff --git a/src/memberlist.h b/src/memberlist.h
index 417abfd..9b8410f 100644
--- a/src/memberlist.h
+++ b/src/memberlist.h
@@ -33,36 +33,35 @@ class MemberList : public QList<MemberDef>
void inSort(const MemberDef *md);
void append(const MemberDef *md);
int compareItems(GCI item1,GCI item2);
- int varCount() const { return varCnt; }
- int funcCount() const { return funcCnt; }
- int enumCount() const { return enumCnt; }
- int enumValueCount() const { return enumValCnt; }
- int typedefCount() const { return typeCnt; }
- int protoCount() const { return protoCnt; }
- int defineCount() const { return defCnt; }
- int friendCount() const { return friendCnt; }
- void countDecMembers(bool inGroup,bool countSubGroups,bool sectionPerType);
- void countDocMembers(bool listOfGroup=FALSE);
- int totalCount() const
- { return //varCnt+funcCnt+enumCnt+enumValCnt+typeCnt+
- //protoCnt+defCnt+friendCnt;
- m_count;
- }
+ int varCount() const { ASSERT(m_numDecMembers!=-1); return m_varCnt; }
+ int funcCount() const { ASSERT(m_numDecMembers!=-1); return m_funcCnt; }
+ int enumCount() const { ASSERT(m_numDecMembers!=-1); return m_enumCnt; }
+ int enumValueCount() const { ASSERT(m_numDecMembers!=-1); return m_enumValCnt; }
+ int typedefCount() const { ASSERT(m_numDecMembers!=-1); return m_typeCnt; }
+ int protoCount() const { ASSERT(m_numDecMembers!=-1); return m_protoCnt; }
+ int defineCount() const { ASSERT(m_numDecMembers!=-1); return m_defCnt; }
+ int friendCount() const { ASSERT(m_numDecMembers!=-1); return m_friendCnt; }
+ int numDecMembers() const { ASSERT(m_numDecMembers!=-1); return m_numDecMembers; }
+ int numDocMembers() const { ASSERT(m_numDocMembers!=-1); return m_numDocMembers; }
+ void countDecMembers(/*bool inGroup,bool countSubGroups,bool sectionPerType*/);
+ void countDocMembers();
void writePlainDeclarations(OutputList &ol,
- ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool inGroup=FALSE,bool countSubGroups=TRUE);
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
void writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- const char *title,const char *subtitle,
- bool inGroup=FALSE,bool countSubGroups=TRUE);
+ const char *title,const char *subtitle);
void writeDocumentation(OutputList &ol,const char *scopeName,
- Definition *container);
+ Definition *container,const char *title);
void addMemberGroup(MemberGroup *mg);
+ void setInGroup(bool group) { m_inGroup=group; }
private:
- int varCnt,funcCnt,enumCnt,enumValCnt,typeCnt,protoCnt,defCnt,friendCnt;
- int m_count;
+ int m_varCnt,m_funcCnt,m_enumCnt,m_enumValCnt,m_typeCnt;
+ int m_protoCnt,m_defCnt,m_friendCnt;
+ int m_numDecMembers; // number of members in the brief part of the memberlist
+ int m_numDocMembers; // number of members in the detailed part of the memberlist
MemberGroupList *memberGroupList;
+ bool m_inGroup; // is this list part of a group
};
class MemberListIterator : public QListIterator<MemberDef>
diff --git a/src/message.cpp b/src/message.cpp
index 5c9e783..285f1c3 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -85,6 +85,10 @@ void initWarningFormat()
{
warnFile = fopen(Config_getString("WARN_LOGFILE"),"w");
}
+ if (!warnFile) // point it to something valid, because warn() relies on it
+ {
+ warnFile = stderr;
+ }
}
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index b214de6..efcd10f 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -87,6 +87,7 @@ void NamespaceDef::insertClass(ClassDef *cd)
}
}
+#if 0
void NamespaceDef::addMemberListToGroup(MemberList *ml,
bool (MemberDef::*func)() const)
{
@@ -114,14 +115,16 @@ void NamespaceDef::addMemberListToGroup(MemberList *ml,
}
}
}
+#endif
void NamespaceDef::addMembersToMemberGroup()
{
- addMemberListToGroup(&allMemberList,&MemberDef::isTypedef);
- addMemberListToGroup(&allMemberList,&MemberDef::isEnumerate);
- addMemberListToGroup(&allMemberList,&MemberDef::isEnumValue);
- addMemberListToGroup(&allMemberList,&MemberDef::isFunction);
- addMemberListToGroup(&allMemberList,&MemberDef::isVariable);
+ ::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList);
}
void NamespaceDef::insertMember(MemberDef *md)
@@ -131,49 +134,55 @@ void NamespaceDef::insertMember(MemberDef *md)
switch(md->memberType())
{
case MemberDef::Variable:
+ decVarMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- varMembers.inSort(md);
+ docVarMembers.inSort(md);
else
- varMembers.append(md);
+ docVarMembers.append(md);
break;
case MemberDef::Function:
+ decFuncMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- funcMembers.inSort(md);
+ docFuncMembers.inSort(md);
else
- funcMembers.append(md);
+ docFuncMembers.append(md);
break;
case MemberDef::Typedef:
+ decTypedefMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- typedefMembers.inSort(md);
+ docTypedefMembers.inSort(md);
else
- typedefMembers.append(md);
+ docTypedefMembers.append(md);
break;
case MemberDef::Enumeration:
+ decEnumMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- enumMembers.inSort(md);
+ docEnumMembers.inSort(md);
else
- enumMembers.append(md);
+ docEnumMembers.append(md);
break;
case MemberDef::EnumValue:
- if (Config_getBool("SORT_MEMBER_DOCS"))
- enumValMembers.inSort(md);
- else
- enumValMembers.append(md);
break;
case MemberDef::Prototype:
+ decProtoMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- protoMembers.inSort(md);
+ docProtoMembers.inSort(md);
else
- protoMembers.append(md);
+ docProtoMembers.append(md);
break;
case MemberDef::Define:
+ decDefineMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- defineMembers.inSort(md);
+ docDefineMembers.inSort(md);
else
- defineMembers.append(md);
+ docDefineMembers.append(md);
break;
default:
- err("NamespaceDef::insertMembers(): unexpected member inserted in namespace!\n");
+ err("NamespaceDef::insertMembers(): "
+ "member `%s' with class scope `%s' inserted in namespace scope `%s'!\n",
+ md->name().data(),
+ md->getClassDef() ? md->getClassDef()->name().data() : "",
+ name().data());
}
//addMemberToGroup(md,groupId);
}
@@ -238,7 +247,14 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
mg->writeDeclarations(ol,0,this,0,0);
}
- allMemberList.writeDeclarations(ol,0,this,0,0,0,0);
+
+ //allMemberList.writeDeclarations(ol,0,this,0,0,0,0);
+ decDefineMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trDefines(),0);
+ decProtoMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trFuncProtos(),0);
+ decTypedefMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trTypedefs(),0);
+ decEnumMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trEnumerations(),0);
+ decFuncMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trFunctions(),0);
+ decVarMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trVariables(),0);
ol.endMemberSections();
if ((!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) ||
@@ -273,76 +289,23 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
ol.endTextBlock();
}
- //memList->countDocMembers();
- defineMembers.countDocMembers();
- if ( defineMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trDefineDocumentation());
- ol.endGroupHeader();
- defineMembers.writeDocumentation(ol,name(),this);
- }
+ docDefineMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trDefineDocumentation());
- protoMembers.countDocMembers();
- if ( protoMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionPrototypeDocumentation());
- ol.endGroupHeader();
- protoMembers.writeDocumentation(ol,name(),this);
- }
+ docProtoMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionPrototypeDocumentation());
- typedefMembers.countDocMembers();
- if ( typedefMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trTypedefDocumentation());
- ol.endGroupHeader();
- typedefMembers.writeDocumentation(ol,name(),this);
- }
+ docTypedefMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trTypedefDocumentation());
- enumMembers.countDocMembers();
- if ( enumMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trEnumerationTypeDocumentation());
- ol.endGroupHeader();
- enumMembers.writeDocumentation(ol,name(),this);
- }
+ docEnumMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trEnumerationTypeDocumentation());
- //enumValMembers.countDocMembers();
- //if ( enumValMembers.totalCount()>0 )
- //{
- // ol.writeRuler();
- // ol.startGroupHeader();
- // parseText(ol,theTranslator->trEnumerationValueDocumentation());
- // ol.endGroupHeader();
- // enumValMembers.writeDocumentation(ol,name());
- //}
-
- funcMembers.countDocMembers();
- if ( funcMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionDocumentation());
- ol.endGroupHeader();
- funcMembers.writeDocumentation(ol,name(),this);
- }
+ docFuncMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionDocumentation());
- varMembers.countDocMembers();
- if ( varMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trVariableDocumentation());
- ol.endGroupHeader();
- varMembers.writeDocumentation(ol,name(),this);
- }
+ docVarMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trVariableDocumentation());
// write Author section (Man only)
ol.pushGeneratorState();
@@ -365,7 +328,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
int NamespaceDef::countMembers()
{
allMemberList.countDocMembers();
- return allMemberList.totalCount()+classList->count();
+ return allMemberList.numDocMembers()+classList->count();
}
void NamespaceDef::addUsingDirective(NamespaceDef *nd)
diff --git a/src/namespacedef.h b/src/namespacedef.h
index 0e1d089..08a8701 100644
--- a/src/namespacedef.h
+++ b/src/namespacedef.h
@@ -66,8 +66,8 @@ class NamespaceDef : public Definition
void addMembersToMemberGroup();
void distributeMemberGroupDocumentation();
- protected:
- void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
+ //protected:
+ // void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
private:
//QCString reference;
@@ -79,13 +79,23 @@ class NamespaceDef : public Definition
ClassList *usingDeclList;
MemberList allMemberList;
- MemberList defineMembers;
- MemberList protoMembers;
- MemberList typedefMembers;
- MemberList enumMembers;
- MemberList enumValMembers;
- MemberList funcMembers;
- MemberList varMembers;
+
+ // members in the declaration part of the documentation
+ MemberList decDefineMembers;
+ MemberList decProtoMembers;
+ MemberList decTypedefMembers;
+ MemberList decEnumMembers;
+ MemberList decFuncMembers;
+ MemberList decVarMembers;
+
+ // members in the documentation part of the documentation
+ MemberList docAllMemberList;
+ MemberList docDefineMembers;
+ MemberList docProtoMembers;
+ MemberList docTypedefMembers;
+ MemberList docEnumMembers;
+ MemberList docFuncMembers;
+ MemberList docVarMembers;
/* user defined member groups */
MemberGroupList *memberGroupList;
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index 82f3396..be3b676 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -742,13 +742,17 @@ void RTFGenerator::beginRTFDocument()
/* all the included RTF files should begin with the
* same header
*/
- t <<"{\\rtf1\\ansi\\ansicpg1252\\uc1 \\deff0\\deflang1033\\deflangfe1033\n";
+ t <<"{\\rtf1\\ansi\\ansicpg" << theTranslator->trRTFansicp();
+ t <<"\\uc1 \\deff0\\deflang1033\\deflangfe1033\n";
DBG_RTF(t <<"{\\comment Begining font list}\n")
t <<"{\\fonttbl ";
- t <<"{\\f0\\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}\n";
- t <<"{\\f1\\fswiss\\fcharset0\\fprq2{\\*\\panose 020b0604020202020204}Arial;}\n";
- t <<"{\\f2\\fmodern\\fcharset0\\fprq1{\\*\\panose 02070309020205020404}Courier New;}\n";
+ t <<"{\\f0\\froman\\fcharset" << theTranslator->trRTFCharSet();
+ t <<"\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}\n";
+ t <<"{\\f1\\fswiss\\fcharset" << theTranslator->trRTFCharSet();
+ t <<"\\fprq2{\\*\\panose 020b0604020202020204}Arial;}\n";
+ t <<"{\\f2\\fmodern\\fcharset" << theTranslator->trRTFCharSet();
+ t <<"\\fprq1{\\*\\panose 02070309020205020404}Courier New;}\n";
t <<"{\\f3\\froman\\fcharset2\\fprq2{\\*\\panose 05050102010706020507}Symbol;}\n";
t <<"}\n";
DBG_RTF(t <<"{\\comment begin colors}\n")
@@ -1332,9 +1336,9 @@ void RTFGenerator::endIndexSection(IndexSections is)
case isEndIndex:
beginRTFChapter();
t << Rtf_Style["Heading1"]->reference;
- t << "Index\\par "<< endl;
+ t << theTranslator->trRTFGeneralIndex() << "\\par "<< endl;
t << Rtf_Style_Reset << endl;
- t << "{\\tc \\v Index}" << endl;
+ t << "{\\tc \\v " << theTranslator->trRTFGeneralIndex() << "}" << endl;
t << "{\\field\\fldedit {\\*\\fldinst INDEX \\\\c2 \\\\*MERGEFORMAT}{\\fldrslt INDEX}}\n";
break;
diff --git a/src/scanner.l b/src/scanner.l
index cf35630..2a38b43 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -1248,7 +1248,7 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN(AfterDoc);
}
}
-<FindMembers,FindFields>"//"([!*]?){B}*{CMD}"{"|"/*"([!*]?){B}*{CMD}"{" {
+<FindMembers,FindFields>"//"([!/]?){B}*{CMD}"{"|"/*"([!*]?){B}*{CMD}"{" {
startGroup();
tmpDocType=-1;
if (current_root->section & Entry::SCOPE_MASK)
@@ -1267,7 +1267,7 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( Doc );
}
}
-<FindMembers,FindFields,ReadInitializer>"//"([!*]?){B}*{CMD}"}"|"/*"([!*]?){B}*{CMD}"}"{B}*"*/" {
+<FindMembers,FindFields,ReadInitializer>"//"([!/]?){B}*{CMD}"}"|"/*"([!*]?){B}*{CMD}"}"{B}*"*/" {
endGroup();
}
<FindMembers>"=" {
@@ -1687,6 +1687,15 @@ TITLE [tT][iI][tT][lL][eE]
varEntry->doc = current->doc.copy();
varEntry->brief = current->brief.copy();
varEntry->mGrpId = current->mGrpId;
+
+ // deep copy group list
+ QListIterator<QCString> sli(*current->groups);
+ QCString *s;
+ for (;(s=sli.current());++sli)
+ {
+ varEntry->groups->append(new QCString(*s));
+ }
+
//printf("Add: type=`%s',name=`%s',args=`%s'\n",
// varEntry->type.data(),varEntry->name.data(),varEntry->args.data());
current_root->addSubEntry(varEntry);
@@ -2313,7 +2322,6 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( ClassVar );
}
<ClassVar>{SCOPENAME}{BN}*/"(" {
- err("Inside IDL = %d\n",insideIDL);
if (insideIDL && strncmp(yytext,"switch",6)==0 && !isId(yytext[6]))
{
// Corba IDL style union
@@ -3810,7 +3818,19 @@ static void parseCompounds(Entry *rt)
mtype = Method;
gstat = FALSE;
virt = Normal;
+
+ memberGroupId = NOGROUP;
+
+ // rebuild compound's group context
+ QCString *s = ce->groups->first();
+ if (s)
+ {
+ lastDefGroup=*s;
+ startGroup();
+ }
+
current->mGrpId = memberGroupId = ce->mGrpId;
+
scanYYlex() ;
delete current; current=0;
ce->program.resize(0);
diff --git a/src/translator.h b/src/translator.h
index 9b6e413..d40e379 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -1276,6 +1276,24 @@ class Translator
return "Bug List";
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.?
+//////////////////////////////////////////////////////////////////////////
+ /*! Used as ansicpg for RTF file */
+ virtual QCString trRTFansicp()
+ {
+ return "1252";
+ }
+ /*! Used as ansicpg for RTF fcharset */
+ virtual QCString trRTFCharSet()
+ {
+ return "0";
+ }
+ /*! Used as header RTF general index */
+ virtual QCString trRTFGeneralIndex()
+ {
+ return "Index";
+ }
};
#endif
diff --git a/src/translator_br.h b/src/translator_br.h
index 4919737..ae8ed73 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -1,7 +1,4 @@
/******************************************************************************
- *
- *
- *
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
@@ -13,10 +10,9 @@
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
- * The translation into Brasilian Portuguese was provided by
+ * Brazilian Portuguese version by
* Fabio "FJTC" Jun Takada Chino <chino@grad.icmc.sc.usp.br>
- * Based on the original translation to Portuguese provided by
- * Rui Godinho Lopes <ruiglopes@yahoo.com>
+ * Version: 1.2.6.1 (2001/04/13)
*/
#ifndef TRANSLATOR_BR_H
@@ -24,450 +20,557 @@
#include "translator.h"
-/*
-* I used the name brazilian in language.cpp.
-*/
-class TranslatorBrazilianPortuguese : public Translator
+class TranslatorBrazilian: public Translator
{
public:
- QCString idLanguage()
- { return "brazilian"; }
+
+ // --- Language contol methods -------------------
+
+ /*! Used for identification of the language. May resemble
+ * the string returned by latexBabelPackage(), but it is not used
+ * for the same purpose. The identification should not be translated.
+ * It should be replaced by the name of the language in English
+ * (e.g. Czech, Japanese, Russian, etc.). It should be equal to
+ * the identification in language.h.
+ */
+ virtual QCString idLanguage()
+ {
+ return "portuges";
+ /* I'm not sure if it is correct. I did not found the documentation of BabelPackage*/
+ }
+
+ /*! Used to get the command(s) for the language support. This method
+ * was designed for languages which do not prefer babel package.
+ * If this methods returns empty string, then the latexBabelPackage()
+ * method is used to generate the command for using the babel package.
+ */
+ virtual QCString latexLanguageSupportCommand()
+ {
+ return "Brazilian";
+ }
+
/*! returns the name of the package that is included by LaTeX */
- QCString latexBabelPackage()
- { return "portuguese_br"; }
+ virtual QCString latexBabelPackage()
+ { 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. */
- QCString trRelatedFunctions()
- { return "FunГУes relacionadas"; }
+ virtual QCString trRelatedFunctions()
+ { return "FunГУes Relacionadas"; }
/*! subscript for the related functions. */
- QCString trRelatedSubscript()
- { return "(Note que nЦo sЦo funГУes membro)"; }
+ virtual QCString trRelatedSubscript()
+ { return "(Note que estes nЦo sЦo funГУes membros.)"; }
/*! header that is put before the detailed description of files, classes and namespaces. */
- QCString trDetailedDescription()
- { return "DescriГЦo"; }
+ virtual QCString trDetailedDescription()
+ { return "DescriГЦo Detalhada"; }
/*! header that is put before the list of typedefs. */
- QCString trMemberTypedefDocumentation()
- { return "Tipos definidos"; }
+ virtual QCString trMemberTypedefDocumentation()
+ { return "DefiniГУes de Tipos"; }
/*! header that is put before the list of enumerations. */
- QCString trMemberEnumerationDocumentation()
+ virtual QCString trMemberEnumerationDocumentation()
{ return "EnumeraГУes"; }
/*! header that is put before the list of member functions. */
- QCString trMemberFunctionDocumentation()
+ virtual QCString trMemberFunctionDocumentation()
{ return "MИtodos"; }
/*! header that is put before the list of member attributes. */
- QCString trMemberDataDocumentation()
- { return "Atributos"; }
+ virtual QCString trMemberDataDocumentation()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Campos e Atributos";
+ }
+ else
+ {
+ return "Constantes";
+ }
+ }
/*! this is the text of a link put after brief descriptions. */
- QCString trMore()
+ virtual QCString trMore()
{ return "Mais..."; }
/*! put in the class documentation */
- QCString trListOfAllMembers()
- { return "Mostrar lista completa dos membros"; }
+ virtual QCString trListOfAllMembers()
+ { return "Lista de todos os Membros."; }
/*! used as the title of the "list of all members" page of a class */
- QCString trMemberList()
- { return "Lista dos membros"; }
+ virtual QCString trMemberList()
+ { return "Lista de Membros"; }
/*! this is the first part of a sentence that is followed by a class name */
- QCString trThisIsTheListOfAllMembers()
- { return "Esta И a lista de todos os membros de "; }
+ virtual QCString trThisIsTheListOfAllMembers()
+ { return "Esta И a lista completa dos membros da "; }
/*! this is the remainder of the sentence after the class name */
- QCString trIncludingInheritedMembers()
- { return ", incluindo os membros herdados."; }
+ virtual QCString trIncludingInheritedMembers()
+ { return ", incluindo todos os membros herdados."; }
/*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name.
*/
- QCString trGeneratedAutomatically(const char *s)
+ virtual QCString trGeneratedAutomatically(const char *s)
{ QCString result="Gerado automaticamente por Doxygen";
if (s) result+=(QCString)" para "+s;
- result+=" a partir do cСdigo fonte.";
+ result+=" a partir do cСdigo-fonte.";
return result;
}
/*! put after an enum name in the list of all members */
- QCString trEnumName()
- { return "enumeraГЦo"; }
+ virtual QCString trEnumName()
+ { return "Nome da enumeraГЦo"; }
/*! put after an enum value in the list of all members */
- QCString trEnumValue()
- { return "valor enumerado"; }
+ virtual QCString trEnumValue()
+ { return "Valor enumerado"; }
/*! put after an undocumented member in the list of all members */
- QCString trDefinedIn()
- { return "definido em"; }
+ virtual QCString trDefinedIn()
+ { return "definida em"; }
/*! put as in introduction in the verbatim header file of a class.
* parameter f is the name of the include file.
*/
- QCString trIncludeFile()
- { return "Arquivo incluМdo"; }
- QCString trVerbatimText(const char *f)
- { return (QCString)"Este texto foi originado pelo arquivo incluМdo "+f+"."; }
+ virtual QCString trVerbatimText(const char *f)
+ { return (QCString)"Este И o texto original do arquivo "+f+"."; }
// 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).
+ * compounds or files (see the \\group command).
*/
- QCString trModules()
- { return "MСdulos"; }
+ virtual QCString trModules()
+ { return "Modulos"; }
/*! This is put above each page as a link to the class hierarchy */
- QCString trClassHierarchy()
- { return "Hierarquia de classes"; }
+ virtual QCString trClassHierarchy()
+ { return "Hierarquia de Classes"; }
/*! This is put above each page as a link to the list of annotated classes */
- QCString trCompoundList()
- { return "Lista de componentes";
+ virtual QCString trCompoundList()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Estrutura de Dados";
+ }
+ else
+ {
+ return "Lista de Componentes";
+ }
+ }
- /*! This is put above each page as a link to the list of documented files */}
- QCString trFileList()
- { return "Lista de arquivos"; }
+ /*! This is put above each page as a link to the list of documented files */
+ virtual QCString trFileList()
+ { return "Lista de Arquivos"; }
/*! This is put above each page as a link to the list of all verbatim headers */
- QCString trHeaderFiles()
- { return "Arquivos IncluМdos"; }
+ virtual QCString trHeaderFiles()
+ { return "Arquivos de CabeГalho (Headers)"; }
/*! This is put above each page as a link to all members of compounds. */
- QCString trCompoundMembers()
- { return "Componentes"; }
+ virtual QCString trCompoundMembers()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Campos de Dados";
+ }
+ else
+ {
+ return "Componentes Membros";
+ }
+ }
/*! This is put above each page as a link to all members of files. */
- QCString trFileMembers()
- { return "DeclaraГУes"; }
+ virtual QCString trFileMembers()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Globais";
+ }
+ else
+ {
+ return "Arquivos Membros";
+ }
+ }
/*! This is put above each page as a link to all related pages. */
- QCString trRelatedPages()
- { return "Paginas relacionadas"; }
+ virtual QCString trRelatedPages()
+ { return "PАginas relacionadas"; }
/*! This is put above each page as a link to all examples. */
- QCString trExamples()
+ virtual QCString trExamples()
{ return "Exemplos"; }
/*! This is put above each page as a link to the search engine. */
- QCString trSearch()
- { return "Localizar"; }
+ virtual QCString trSearch()
+ { return "Busca"; }
/*! This is an introduction to the class hierarchy. */
- QCString trClassHierarchyDescription()
- { return "Esta lista de heranГas estА organizada, dentro do possМvel, por ordem alfabИtica:"; }
+ virtual QCString trClassHierarchyDescription()
+ { return "Esta lista de hierarquia И parcialmente ordenada em ordem alfabИtica:"; }
/*! This is an introduction to the list with all files. */
- QCString trFileListDescription(bool extractAll)
+ virtual QCString trFileListDescription(bool extractAll)
{
- QCString result="Lista de todos os arquivos ";
+ QCString result="Aqui estА a lista de todos os arquivos ";
if (!extractAll) result+="documentados ";
- result+="com uma breve descriГЦo:";
+ result+="com suas respectivas descriГУes:";
return result;
}
/*! This is an introduction to the annotated compound list. */
- QCString trCompoundListDescription()
- { return "Lista de classes, estruturas, uniУes e interfaces com breves descriГУes:";
+ virtual QCString trCompoundListDescription()
+ {
+
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Aqui estЦo as estruturas de dados e suas respectivas descriГУes:";
+ }
+ else
+ {
+ return "Aqui estЦo as classes, estruturas, uniУes e interfaces e suas respectivas descriГУes:";
+ }
}
/*! This is an introduction to the page with all class members. */
- QCString trCompoundMembersDescription(bool extractAll)
+ virtual QCString trCompoundMembersDescription(bool extractAll)
{
- QCString result="Lista de todos os membros ";
+ QCString result="Aqui estА a lista de todos os membros de classes ";
if (!extractAll) result+="documentados ";
result+="com links para ";
- if (extractAll) result+="a documentaГЦo das respectivas classes:";
- else result+="o arquivo a que pertencem:";
+ if (extractAll)
+ result+="a documentaГЦo de suas respectivas classes:";
+ else
+ result+="suas respectivas classes:";
return result;
}
/*! This is an introduction to the page with all file members. */
- QCString trFileMembersDescription(bool extractAll)
+ virtual QCString trFileMembersDescription(bool extractAll)
{
- QCString result="Lista de todos os membros ";
- if (!extractAll) result+="documentados ";
+ QCString result="Aqui esta a lista de ";
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result+="tadas as funГУes, variАveis, definiГУes, enumeraГУes e definiГУes de tipos ";
+ if (!extractAll) result+="documentadas ";
+ }
+ else
+ {
+ result+="todos os membros dos arquivos ";
+ if (!extractAll) result+="documentados ";
+ }
+
+
result+="com links para ";
- if (extractAll) result+="a documentaГЦo correspondente:";
- else result+="os arquivos onde foram definidos:";
+ if (extractAll)
+ result+="seus respectivos arquivos:";
+ else
+ result+="suas respectivas documentaГУes:";
return result;
}
/*! This is an introduction to the page with the list of all header files. */
- QCString trHeaderFilesDescription()
- { return "Lista de todos os arquivos cabeГalho que constituem a API:"; }
+ virtual QCString trHeaderFilesDescription()
+ { return "Aqui estЦo os arquivos de cabeГalho que compУe a API:"; }
/*! This is an introduction to the page with the list of all examples */
- QCString trExamplesDescription()
- { return "Lista de todos os exemplos:"; }
+ virtual QCString trExamplesDescription()
+ { return "Aqui estА a lista de todos os exemplos:"; }
/*! This is an introduction to the page with the list of related pages */
- QCString trRelatedPagesDescription()
- { return "Lista de documentaГЦo relacionada:"; }
+ virtual QCString trRelatedPagesDescription()
+ { return "Aqui estА a lista de toda a documentaГЦo relacionadas:"; }
/*! This is an introduction to the page with the list of class/file groups */
- QCString trModulesDescription()
- { return "Lista de todos os mСdulos:"; }
+ virtual QCString trModulesDescription()
+ { return "Aqui estА a lista de todos os mИdulos:"; }
/*! This sentences is used in the annotated class/file lists if no brief
* description is given.
*/
- QCString trNoDescriptionAvailable()
- { return "Nenhuma descriГЦo disponМvel"; }
+ virtual QCString trNoDescriptionAvailable()
+ { return "Sem descriГЦodisponМvel"; }
// index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */
- QCString trDocumentation()
+ virtual QCString trDocumentation()
{ return "DocumentaГЦo"; }
/*! This is used in LaTeX as the title of the chapter with the
* index of all groups.
*/
- QCString trModuleIndex()
- { return "мndice dos mСdulos"; }
+ virtual QCString trModuleIndex()
+ { return "мndice de MСdulos"; }
/*! This is used in LaTeX as the title of the chapter with the
* class hierarchy.
*/
- QCString trHierarchicalIndex()
- { return "мndice da hierarquia"; }
+ virtual QCString trHierarchicalIndex()
+ { return "мndice HierАrquico"; }
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index.
*/
- QCString trCompoundIndex()
- { return "мndice dos componentes"; }
+ virtual QCString trCompoundIndex()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "мndice das Estruturas de Dados";
+ }
+ else
+ {
+ return "мndice dos Componentes";
+ }
+ }
/*! This is used in LaTeX as the title of the chapter with the
* list of all files.
*/
- QCString trFileIndex()
- { return "мndice dos arquivos"; }
+ virtual QCString trFileIndex()
+ { return "мndice dos Arquivos"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all groups.
*/
- QCString trModuleDocumentation()
- { return "DocumentaГЦo do mСdulo"; }
+ virtual QCString trModuleDocumentation()
+ { return "MСdulos"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions.
*/
- QCString trClassDocumentation()
- { return "DocumentaГЦo da classe"; }
+ virtual QCString trClassDocumentation()
+ { return "Classes"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all files.
*/
- QCString trFileDocumentation()
- { return "DocumentaГЦo do arquivo"; }
+ virtual QCString trFileDocumentation()
+ { return "Arquivos"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples.
*/
- QCString trExampleDocumentation()
- { return "DocumentaГЦo do exemplo"; }
+ virtual QCString trExampleDocumentation()
+ { return "Exemplos"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages.
*/
- QCString trPageDocumentation()
- { return "DocumentaГЦo da pАgina"; }
+ virtual QCString trPageDocumentation()
+ { return "DocumentaГЦo Relacionada"; }
/*! This is used in LaTeX as the title of the document */
- QCString trReferenceManual()
- { return "Manual de referЙncia"; }
+ virtual QCString trReferenceManual()
+ { return "Manual de ReferЙncia"; }
/*! This is used in the documentation of a file as a header before the
* list of defines
*/
- QCString trDefines()
- { return "DefiniГЦo de macros"; }
+ virtual QCString trDefines()
+ { return "DefiniГУes e Macros"; }
/*! This is used in the documentation of a file as a header before the
* list of function prototypes
*/
- QCString trFuncProtos()
- { return "ProtСtipos de funГУes"; }
+ virtual QCString trFuncProtos()
+ { return "ProtСtipos de FunГУes"; }
/*! This is used in the documentation of a file as a header before the
* list of typedefs
*/
- QCString trTypedefs()
- { return "DefiniГУes de tipos"; }
+ virtual QCString trTypedefs()
+ { return "DefiniГУes de Tipos"; }
/*! This is used in the documentation of a file as a header before the
* list of enumerations
*/
- QCString trEnumerations()
+ virtual QCString trEnumerations()
{ return "EnumeraГУes"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
*/
- QCString trFunctions()
+ virtual QCString trFunctions()
{ return "FunГУes"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
- QCString trVariables()
+ virtual QCString trVariables()
{ return "VariАveis"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
- QCString trEnumerationValues()
- { return "Valores da enumeraГЦo"; }
+ virtual QCString trEnumerationValues()
+ { return "Valores Enumerados"; }
/*! This is used in man pages as the author section. */
- QCString trAuthor()
+ virtual QCString trAuthor()
{ return "Autor"; }
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
*/
- QCString trDefineDocumentation()
- { return "Macros"; }
+ virtual QCString trDefineDocumentation()
+ { return "DeiniГУes e macros"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes
*/
- QCString trFunctionPrototypeDocumentation()
- { return "ProtСtipos das funГУes"; }
+ virtual QCString trFunctionPrototypeDocumentation()
+ { return "ProtСtipos de funГУes"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs
*/
- QCString trTypedefDocumentation()
- { return "Tipos"; }
+ virtual QCString trTypedefDocumentation()
+ { return "DefiniГУes de tipos"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types
*/
- QCString trEnumerationTypeDocumentation()
+ virtual QCString trEnumerationTypeDocumentation()
{ return "EnumeraГУes"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
- QCString trEnumerationValueDocumentation()
- { return "Elementos da enumeraГЦo"; }
+ virtual QCString trEnumerationValueDocumentation()
+ { return "Valores enumerados"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
- QCString trFunctionDocumentation()
+ virtual QCString trFunctionDocumentation()
{ return "FunГУes"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables
*/
- QCString trVariableDocumentation()
+ virtual QCString trVariableDocumentation()
{ return "VariАveis"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds
*/
- QCString trCompounds()
- { return "Componentes"; }
+ virtual QCString trCompounds()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Estruturas de Dados";
+ }
+ else
+ {
+ return "Componentes";
+ }
+ }
/*! This is used in the documentation of a group before the list of
* links to documented files
*/
- QCString trFiles()
+ virtual QCString trFiles()
{ return "Arquivos"; }
/*! This is used in the standard footer of each page and indicates when
* the page was generated
*/
- QCString trGeneratedAt(const char *date,const char *projName)
+ virtual QCString trGeneratedAt(const char *date,const char *projName)
{
- QCString result=(QCString)"Criado em "+date;
+ QCString result=(QCString)"Gerado em "+date;
if (projName) result+=(QCString)" para "+projName;
result+=(QCString)" por";
return result;
}
/*! This is part of the sentence used in the standard footer of each page.
*/
- QCString trWrittenBy()
+ virtual QCString trWrittenBy()
{
return "escrito por";
}
/*! this text is put before a class diagram */
- QCString trClassDiagram(const char *clName)
+ virtual QCString trClassDiagram(const char *clName)
{
- return (QCString)"Diagrama de heranГas da classe "+clName;
+ return (QCString)"Diagrama de Hierarquia para "+clName+":";
}
- /*! this text is generated when the \internal command is used. */
- QCString trForInternalUseOnly()
+ /*! this text is generated when the \\internal command is used. */
+ virtual QCString trForInternalUseOnly()
{ return "Apenas para uso interno."; }
- /*! this text is generated when the \reimp command is used. */
- QCString trReimplementedForInternalReasons()
- { return "Redefinido por razУes internas. A interface nЦo foi afetada.";
- }
+ /*! this text is generated when the \\reimp command is used. */
+ virtual QCString trReimplementedForInternalReasons()
+ { return "Reimplementado por razУes internas. A API nЦo foi modificada."; }
- /*! this text is generated when the \warning command is used. */
- QCString trWarning()
+ /*! this text is generated when the \\warning command is used. */
+ virtual QCString trWarning()
{ return "Aviso"; }
- /*! this text is generated when the \bug command is used. */
- QCString trBugsAndLimitations()
+ /*! this text is generated when the \\bug command is used. */
+ virtual QCString trBugsAndLimitations()
{ return "Bugs e limitaГУes"; }
- /*! this text is generated when the \version command is used. */
- QCString trVersion()
+ /*! this text is generated when the \\version command is used. */
+ virtual QCString trVersion()
{ return "VersЦo"; }
- /*! this text is generated when the \date command is used. */
- QCString trDate()
+ /*! this text is generated when the \\date command is used. */
+ virtual QCString trDate()
{ return "Data"; }
- /*! this text is generated when the \author command is used. */
- QCString trAuthors()
+ /*! this text is generated when the \\author command is used. */
+ virtual QCString trAuthors()
{ return "Autor(es)"; }
- /*! this text is generated when the \return command is used. */
- QCString trReturns()
+ /*! this text is generated when the \\return command is used. */
+ virtual QCString trReturns()
{ return "Retorna"; }
- /*! this text is generated when the \sa command is used. */
- QCString trSeeAlso()
+ /*! this text is generated when the \\sa command is used. */
+ virtual QCString trSeeAlso()
{ return "Veja tambИm"; }
- /*! this text is generated when the \param command is used. */
- QCString trParameters()
+ /*! this text is generated when the \\param command is used. */
+ virtual QCString trParameters()
{ return "ParБmetros"; }
- /*! this text is generated when the \exception command is used. */
- QCString trExceptions()
+ /*! this text is generated when the \\exception command is used. */
+ virtual QCString trExceptions()
{ return "ExceГУes"; }
/*! this text is used in the title page of a LaTeX document. */
- QCString trGeneratedBy()
- { return "Criado por"; }
+ virtual QCString trGeneratedBy()
+ { return "Gerado por"; }
- // new since 0.49-990307
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990307
+//////////////////////////////////////////////////////////////////////////
+ /*! used as the title of page containing all the index of all namespaces. */
virtual QCString trNamespaceList()
- { return "Lista de namespaces"; }
+ { return "Lista de Namespaces"; }
/*! used as an introduction to the namespace list */
virtual QCString trNamespaceListDescription(bool extractAll)
{
- QCString result="Lista ";
- if (!extractAll) result+="de toda a documentaГЦo ";
- result+="dos namespaces com uma breve descriГЦo:";
+ QCString result="Aqui esta a lista de todos os Namespaces ";
+ if (!extractAll) result+="documentados ";
+ result+="com suas respectivas descriГУes:";
return result;
}
@@ -485,7 +588,7 @@ class TranslatorBrazilianPortuguese : public Translator
* related classes
*/
virtual QCString trRelatedFunctionDocumentation()
- { return "FunГУes relacionadas e classes amigas"; }
+ { return "Amigos e FunГУes Relacionadas"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
@@ -496,19 +599,17 @@ class TranslatorBrazilianPortuguese : public Translator
ClassDef::CompoundType compType,
bool isTemplate)
{
- QCString result="Referencia ";
+ QCString result="ReferЙncia da";
+
+ if (isTemplate) result+=" Template de";
switch(compType)
{
- case ClassDef::Class: result+="Ю classe "; break;
- case ClassDef::Struct: result+="Ю estrutura "; break;
- case ClassDef::Union: result+="Ю uniЦo "; break;
- case ClassDef::Interface: result+="Ю interface "; break;
- case ClassDef::Exception: result+="Ю excepГЦo "; break;
+ case ClassDef::Class: result+=" Classe "; break;
+ case ClassDef::Struct: result+=" Estrutura "; break;
+ case ClassDef::Union: result+=" UniЦo "; break;
+ case ClassDef::Interface: result+=" Interface "; break;
+ case ClassDef::Exception: result+=" ExceГЦo "; break;
}
-
- if (isTemplate)
- result+="<template> ";
-
result+=(QCString)clName;
return result;
}
@@ -516,7 +617,7 @@ class TranslatorBrazilianPortuguese : public Translator
/*! used as the title of the HTML page of a file */
virtual QCString trFileReference(const char *fileName)
{
- QCString result= "Referencia ao arquivo ";
+ QCString result = "ReferЙncia do Arquivo ";
result += fileName;
return result;
}
@@ -524,7 +625,7 @@ class TranslatorBrazilianPortuguese : public Translator
/*! used as the title of the HTML page of a namespace */
virtual QCString trNamespaceReference(const char *namespaceName)
{
- QCString result= "Referencia ao namespace ";
+ QCString result ="RefЙncia do Namespace ";
result += namespaceName;
return result;
}
@@ -533,25 +634,25 @@ class TranslatorBrazilianPortuguese : public Translator
* these are for the member sections of a class, struct or union
*/
virtual QCString trPublicMembers()
- { return "Membros pЗblicos"; }
+ { return "MИtodos PЗblicos"; }
virtual QCString trPublicSlots()
- { return "Slots pЗblicos"; }
+ { return "Slots PЗblicos"; }
virtual QCString trSignals()
- { return "Sinais"; }
+ { return "Signals"; }
virtual QCString trStaticPublicMembers()
- { return "Membros pЗblicos estАticos"; }
+ { return "MИtodos PЗblicos EstАticos"; }
virtual QCString trProtectedMembers()
- { return "Membros protegidos"; }
+ { return "MИtodos Protegidos"; }
virtual QCString trProtectedSlots()
- { return "Slots protegidos"; }
+ { return "Slots Protegidos"; }
virtual QCString trStaticProtectedMembers()
- { return "Membros protegidos estАticos"; }
+ { return "MИtodos Protegidos EstАticos"; }
virtual QCString trPrivateMembers()
- { return "Membros privados"; }
+ { return "MИtodos Privados"; }
virtual QCString trPrivateSlots()
- { return "Slots privados"; }
+ { return "Slots Privados"; }
virtual QCString trStaticPrivateMembers()
- { return "Membros privados estАticos"; }
+ { return "MИtodos Privados EstАticos"; }
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
@@ -573,7 +674,7 @@ class TranslatorBrazilianPortuguese : public Translator
if (i<numEntries-2) // not the fore last entry
result+=", ";
else // the fore last entry
- result+=", e ";
+ result+=" e ";
}
}
return result;
@@ -584,7 +685,7 @@ class TranslatorBrazilianPortuguese : public Translator
*/
virtual QCString trInheritsList(int numEntries)
{
- return "Derivada de "+trWriteList(numEntries)+".";
+ return "Herdeiro de " + trWriteList(numEntries) + ".";
}
/*! used in class documentation to produce a list of super classes,
@@ -592,7 +693,7 @@ class TranslatorBrazilianPortuguese : public Translator
*/
virtual QCString trInheritedByList(int numEntries)
{
- return "Herdado por "+trWriteList(numEntries)+".";
+ return "Superclasse de "+trWriteList(numEntries)+".";
}
/*! used in member documentation blocks to produce a list of
@@ -613,25 +714,25 @@ class TranslatorBrazilianPortuguese : public Translator
/*! This is put above each page as a link to all members of namespaces. */
virtual QCString trNamespaceMembers()
- { return "Membros do namespace"; }
+ { return "Membros do Namespace"; }
/*! This is an introduction to the page with all namespace members */
virtual QCString trNamespaceMemberDescription(bool extractAll)
{
- QCString result="Lista ";
- if (extractAll) result+="de todos os ";
- else result+="de toda a documentaГЦo dos ";
- result+="membros do namespace com links para ";
- if (extractAll) result+="a documentaГЦo de cada membro:";
- else result+="o namespace correspondente:";
+ QCString result="Aqui estА a lista de todos os membros do Namespace ";
+ if (!extractAll) result+="documentados ";
+ result+="com links para ";
+ if (extractAll)
+ result+="a documentaГЦo de seus respectivos Namespaces:";
+ else
+ result+="os seus respectivos namespaces:";
return result;
}
-
- /*! This is used in LaTeX as the title of the chapter with the
+ /*! This is used in LaTeX as the title of the chapter with the
* index of all namespaces.
*/
virtual QCString trNamespaceIndex()
- { return "мndice dos namespaces"; }
+ { return "мndice de Namespaces"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces.
@@ -660,18 +761,17 @@ class TranslatorBrazilianPortuguese : public Translator
bool single)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
- QCString result=(QCString)"A documentaГЦo para ";
+ QCString result=(QCString)"A documentaГЦo para esta ";
switch(compType)
{
- case ClassDef::Class: result+="esta classe"; break;
- case ClassDef::Struct: result+="esta estrutura"; break;
- case ClassDef::Union: result+="esta uniЦo"; break;
- case ClassDef::Interface: result+="esta interface"; break;
- case ClassDef::Exception: result+="esta exceГЦo"; break;
+ case ClassDef::Class: result+="classe "; break;
+ case ClassDef::Struct: result+="estrura "; break;
+ case ClassDef::Union: result+="uniЦo "; break;
+ case ClassDef::Interface: result+="interface "; break;
+ case ClassDef::Exception: result+="exceГЦo "; break;
}
result+=" foi gerada a partir ";
- if (single) result+=" do seguinte arquivo:";
- else result+="dos seguintes arquivos:";
+ if (single) result+="do seguinte arquivo:"; else result+="dos seguintes arquivos:";
return result;
}
@@ -679,10 +779,7 @@ class TranslatorBrazilianPortuguese : public Translator
* list.
*/
virtual QCString trAlphabeticalList()
- {
- return "Lista em ordem alfabИtica";
- }
-
+ { return "Lista AlfabИtica"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
@@ -690,18 +787,18 @@ class TranslatorBrazilianPortuguese : public Translator
/*! This is used as the heading text for the retval command. */
virtual QCString trReturnValues()
- { return "Valores retornados"; }
+ { return "Valores Retornados"; }
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual QCString trMainPage()
- { return "PАgina principal"; }
+ { return "PАgina Principal"; }
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual QCString trPageAbbreviation()
- { return "p. "; }
+ { return "pag."; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991003
@@ -713,11 +810,11 @@ class TranslatorBrazilianPortuguese : public Translator
}
virtual QCString trDefinedAtLineInSourceFile()
{
- return "Definido na linha @0 do arquivo @1.";
+ return "DefiniГЦo na linha @0 do arquivo @1.";
}
virtual QCString trDefinedInSourceFile()
{
- return "Definido no arquivo @0.";
+ return "DefiniГЦo no arquivo @0.";
}
//////////////////////////////////////////////////////////////////////////
@@ -726,7 +823,10 @@ class TranslatorBrazilianPortuguese : public Translator
virtual QCString trDeprecated()
{
- return "Desaprovado";
+ /* This note is for brazilians.
+ Esta И uma boa traduГЦo para "deprecated"?
+ */
+ return "Descontinuada";
}
//////////////////////////////////////////////////////////////////////////
@@ -741,42 +841,42 @@ class TranslatorBrazilianPortuguese : public Translator
/*! this text is put before an include dependency graph */
virtual QCString trInclDepGraph(const char *fName)
{
- return (QCString)"Diagrama de dependЙncias de inclusЦo para "+fName+":";
+ return (QCString)"GrАfico de dependЙncia de inclusУes para "+fName+":";
}
/*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation()
{
- return "Construtores e Destrutores";
+ return "Construtores & Destrutores";
}
/*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode()
{
- return "Ir para o cСdigo fonte deste arquivo.";
+ return "VА para o cСdigo-fonte deste arquivo.";
}
/*! Used in the file sources to point to the corresponding documentation. */
virtual QCString trGotoDocumentation()
{
- return "Ir para a documentaГЦo deste arquivo.";
+ return "VА para a documentaГЦo deste arquivo.";
}
/*! Text for the \pre command */
virtual QCString trPrecondition()
{
- return "PrecondiГЦo";
+ return "PrИ-CondiГЦo";
}
/*! Text for the \post command */
virtual QCString trPostcondition()
{
- return "PoscondiГЦo";
+ return "PСs-CondiГЦo";
}
/*! Text for the \invariant command */
virtual QCString trInvariant()
{
- return "Invariante";
+ return "InvariАvel";
}
/*! Text shown before a multi-line variable/enum initialization */
virtual QCString trInitialValue()
{
- return "Valor inicial:";
+ return "Valor Inicial:";
}
/*! Text used the source code in the file index */
virtual QCString trCode()
@@ -785,25 +885,25 @@ class TranslatorBrazilianPortuguese : public Translator
}
virtual QCString trGraphicalHierarchy()
{
- return "RepresentaГЦo grАfica da hierarquia da classe";
+ return "GrАfico de Hierarquia de Classes";
}
virtual QCString trGotoGraphicalHierarchy()
{
- return "Ir para a representaГЦo grАfica da hierarquia da classe";
+ return "VА para o GrАfico de Hierarquia de Classes";
}
virtual QCString trGotoTextualHierarchy()
{
- return "Ir para a representaГЦo textual da hierarquia da classe";
+ return "VА para a Hierarquia de Classes (texto)";
}
virtual QCString trPageIndex()
{
- return "мndice da pАgina";
+ return "мndice de PАgina";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.0
//////////////////////////////////////////////////////////////////////////
-
+
virtual QCString trNote()
{
return "Nota";
@@ -814,7 +914,14 @@ class TranslatorBrazilianPortuguese : public Translator
}
virtual QCString trPublicAttribs()
{
- return "Atributos PЗblicos";
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Campos de Dados";
+ }
+ else
+ {
+ return "Atributos PЗblicos";
+ }
}
virtual QCString trStaticPublicAttribs()
{
@@ -852,12 +959,12 @@ class TranslatorBrazilianPortuguese : public Translator
/*! Used as a marker that is put before a todo item */
virtual QCString trTodo()
{
- return "Tarefa";
+ return "Tarefas Futuras";
}
/*! Used as the header of the todo list */
virtual QCString trTodoList()
{
- return "Lista de tarefas";
+ return "Lista de tarefas futuras";
}
//////////////////////////////////////////////////////////////////////////
@@ -870,7 +977,7 @@ class TranslatorBrazilianPortuguese : public Translator
}
virtual QCString trRemarks()
{
- return "ObservaГУes";
+ return "AnotaГУes";
}
virtual QCString trAttention()
{
@@ -878,12 +985,193 @@ class TranslatorBrazilianPortuguese : public Translator
}
virtual QCString trInclByDepGraph()
{
- return "Este grАfico mostra quais sЦo os arquivos que incluem diretamente ou indiretamente este arquivo:";
+ return "Este grafo mostra quais arquivos estЦo direta ou indiretamente "
+ "relacionados com este arquivo:";
}
virtual QCString trSince()
{
return "Desde";
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.5
+//////////////////////////////////////////////////////////////////////////
+
+ /*! title of the graph legend page */
+ virtual QCString trLegendTitle()
+ {
+ return "Legenda do Grafo";
+ }
+ /*! page explaining how the dot graph's should be interpreted */
+ virtual QCString trLegendDocs()
+ {
+ return
+ "Esta pАgina explica como interpretar os grafos gerados pelo doxygen.<p>\n"
+ "Considere o seguinte exemplo:\n"
+ "\\code\n"
+ "/*! Invisible class because of truncation */\n"
+ "class Invisible { };\n\n"
+ "/*! Truncated class, inheritance relation is hidden */\n"
+ "class Truncated : public Invisible { };\n\n"
+ "/* Class not documented with doxygen comments */\n"
+ "class Undocumented { };\n\n"
+ "/*! Class that is inherited using public inheritance */\n"
+ "class PublicBase : public Truncated { };\n\n"
+ "/*! Class that is inherited using protected inheritance */\n"
+ "class ProtectedBase { };\n\n"
+ "/*! Class that is inherited using private inheritance */\n"
+ "class PrivateBase { };\n\n"
+ "/*! Class that is used by the Inherited class */\n"
+ "class Used { };\n\n"
+ "/*! Super class that inherits a number of other classes */\n"
+ "class Inherited : public PublicBase,\n"
+ " protected ProtectedBase,\n"
+ " private PrivateBase,\n"
+ " public Undocumented\n"
+ "{\n"
+ " private:\n"
+ " Used *m_usedClass;\n"
+ "};\n"
+ "\\endcode\n"
+
+ "Se a tag \\c MAX_DOT_GRAPH_HEIGHT no arquivo de configuraГЦo tem o valor"
+ "200, o seguinte grАfo serА gerado:"
+ "<p><center><img src=\"graph_legend.gif\"></center>\n"
+ "<p>\n"
+ "As caixas no grafo acima tem as seguintes interpretaГУes:\n"
+ "<ul>\n"
+ "<li>Uma caixa inteiramente preta representa a estrutura ou a classe para qual "
+ "o grafo foi gerado.\n"
+ "<li>Uma caixa com bordas pretas denota uma estrutura ou classe documentada.\n"
+ "<li>Uma caixa com bordas cinzas denota uma estrutura ou classe nЦo documentada.\n"
+
+ "<li>Uma caixa com bordas vermelhas denota uma estrutura ou classe documentada para\n"
+ "a qual nem todas as heranГas ou componentes sЦo mostradas no grafo. Um grafo И "
+ "truncado quando este И maior que o tamanho especificado."
+ "</ul>\n"
+ "As setas tem os seguintes significados:\n"
+ "<ul>\n"
+ "<li>Uma seta azul escura И utilizada para denotar uma relaГЦo de heranГa "
+ "pЗblica entre duas classes.\n"
+ "<li>Uma seta verde escura И utilizada para denotar uma heranГa protegida.\n"
+ "<li>Uma seta vermelho escura И utilizada para denotar uma heranГa privada.\n"
+ "<li>Uma seta pЗrpura pontilhada И usada se uma classe estА contida ou И utilizada"
+ "por outra classe. A seta И marcada com a(s) variАvel(eis) "
+ "atravИs das quais a classe ou estrutura apontada estА acessМvel. \n"
+ "</ul>\n";
+ }
+ /*! text for the link to the legend page */
+ virtual QCString trLegend()
+ {
+ return "legenda";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.0
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a test item */
+ virtual QCString trTest()
+ {
+ return "Teste";
+ }
+ /*! Used as the header of the test list */
+ virtual QCString trTestList()
+ {
+ return "Lista de Teste";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.1
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a section header for KDE-2 IDL methods */
+ virtual QCString trDCOPMethods()
+ {
+ return "MИtodos DCOP";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.2
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a section header for IDL properties */
+ virtual QCString trProperties()
+ {
+ return "Propriedades";
+ }
+ /*! Used as a section header for IDL property documentation */
+ virtual QCString trPropertyDocumentation()
+ {
+ return "Propriedades";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.4
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used for Java interfaces in the summary section of Java packages */
+ virtual QCString trInterfaces()
+ {
+ return "Interfaces";
+ }
+ /*! Used for Java classes in the summary section of Java packages */
+ virtual QCString trClasses()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Estruturas de Dados";
+ }
+ else
+ {
+ return "Classes";
+ }
+ }
+ /*! Used as the title of a Java package */
+ virtual QCString trPackage(const char *name)
+ {
+ return (QCString)"Pacote "+name;
+ }
+ /*! Title of the package index page */
+ virtual QCString trPackageList()
+ {
+ return "Lista de Pacotes";
+ }
+ /*! The description of the package index page */
+ virtual QCString trPackageListDescription()
+ {
+ return "Aqui estА a lista de pacotes com suas respectivas descriГУes (se disponМveis):";
+ }
+ /*! The link name in the Quick links header for each page */
+ virtual QCString trPackages()
+ {
+ return "Pacotes";
+ }
+ /*! Used as a chapter title for Latex & RTF output */
+ virtual QCString trPackageDocumentation()
+ {
+ return "Pacotes";
+ }
+ /*! Text shown before a multi-line define */
+ virtual QCString trDefineValue()
+ {
+ return "Valor:";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.5
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a \\bug item */
+ virtual QCString trBug()
+ {
+ return "Bug";
+ }
+ /*! Used as the header of the bug list */
+ virtual QCString trBugList()
+ {
+ return "Lista de Bug";
+ }
+
};
#endif
diff --git a/src/translator_cz.h b/src/translator_cz.h
index 732d4e1..41187da 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -97,6 +97,11 @@
// - Minor correction of comments which copied the same
// corrections in translator.h (doubled backslash) just after
// 1.2.6 release.
+//
+// 2001/04/10 (Petr Prikryl)
+// - Update for OPTIMIZE_OUTPUT_FOR_C (1.2.6-20010408).
+// - Removed implementation of latexBabelPackage().
+// - Removed implementation of trVerbatimText().
//
// Notices:
// --------
@@ -113,7 +118,7 @@ class TranslatorCzech : public Translator
{
private:
/*! The Decode() inline assumes the source written in the
- Windows encoding (maintainer dependent).
+ Windows encoding (maintainer only dependent).
*/
inline QCString Decode(const QCString & sInput)
{
@@ -133,10 +138,6 @@ class TranslatorCzech : public Translator
virtual QCString latexLanguageSupportCommand()
{ return "\\usepackage{czech}\n"; }
- /*! returns the name of the package that is included by LaTeX */
- virtual QCString latexBabelPackage()
- { return ""; }
-
/*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset()
{
@@ -175,7 +176,16 @@ class TranslatorCzech : public Translator
/*! header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation()
- { return Decode("Dokumentace k datovЩm ХlenЫm"); }
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("Dokumentace k polo·kАm");
+ }
+ else
+ {
+ return Decode("Dokumentace k datovЩm ХlenЫm");
+ }
+ }
/*! this is the text of a link put after brief descriptions. */
virtual QCString trMore()
@@ -220,12 +230,6 @@ class TranslatorCzech : public Translator
virtual QCString trDefinedIn()
{ return Decode("definovАn v"); }
- /*! put as in introduction in the verbatim header file of a class.
- * parameter f is the name of the include file.
- */
- virtual QCString trVerbatimText(const char *f)
- { return Decode((QCString)"зplnЩ text vklАdanИho souboru "+f+"."); }
-
// quick reference sections
/*! This is put above each page as a link to the list of all groups of
@@ -240,8 +244,17 @@ class TranslatorCzech : public Translator
/*! This is put above each page as a link to the list of annotated classes */
virtual QCString trCompoundList()
- { return Decode("Seznam tЬМd"); }
-
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("DatovИ struktury");
+ }
+ else
+ {
+ 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Ы"); }
@@ -252,11 +265,29 @@ class TranslatorCzech : public Translator
/*! This is put above each page as a link to all members of compounds. */
virtual QCString trCompoundMembers()
- { return Decode("Seznam ХlenЫ tЬМd"); }
-
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("DatovИ polo·ky");
+ }
+ else
+ {
+ return Decode("Seznam ХlenЫ tЬМd");
+ }
+ }
+
/*! This is put above each page as a link to all members of files. */
virtual QCString trFileMembers()
- { return Decode("Symboly v souborech"); }
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("GlobАlnМ symboly");
+ }
+ else
+ {
+ return Decode("Symboly v souborech");
+ }
+ }
/*! This is put above each page as a link to all related pages. */
virtual QCString trRelatedPages()
@@ -287,22 +318,65 @@ class TranslatorCzech : public Translator
/*! This is an introduction to the annotated compound list. */
virtual QCString trCompoundListDescription()
- { return Decode("NАsledujМcМ seznam obsahuje pЬedev Мm identifikace tЬМd, "
- "ale nachАzМ se zde i dal М netriviАlnМ prvky, jako jsou "
- "struktury (struct), unie (union) a rozhranМ (interface). "
- "V seznamu jsou uvedeny jejich struХnИ popisy:");
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ 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 "
+ "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И "
+ "popisy:");
+ }
}
/*! This is an introduction to the page with all class members. */
virtual QCString trCompoundMembersDescription(bool extractAll)
{
- QCString result="Zde naleznete seznam v ech ";
- if (!extractAll) result+="dokumentovanЩch ";
- result+="ХlenЫ tЬМd s odkazy na ";
- if (extractAll)
- result+="dokumentaci tЬМd, ke kterЩm pЬМslu ejМ:";
- else
- result+="tЬМdy, ke kterЩm pЬМslu ejМ:";
+ QCString result= "Zde naleznete seznam v ech ";
+ if (!extractAll)
+ {
+ result += "dokumentovanЩch ";
+ }
+
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result += "polo·ek struktur (struct) a uniМ (union) ";
+ }
+ else
+ {
+ result += "ХlenЫ tЬМd ";
+ }
+
+ result += "s odkazy na ";
+
+ if (extractAll)
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result += "dokumentaci struktur/uniМ, ke kterЩm pЬМslu ejМ:";
+ }
+ else
+ {
+ result += "dokumentaci tЬМd, ke kterЩm pЬМslu ejМ:";
+ }
+ }
+ else
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result+="struktury/unie, ke kterЩm pЬМslu ejМ:";
+ }
+ else
+ {
+ result+="tЬМdy, ke kterЩm pЬМslu ejМ:";
+ }
+ }
+
return Decode(result);
}
@@ -311,18 +385,22 @@ class TranslatorCzech : public Translator
{
QCString result="Zde naleznete seznam v ech ";
if (!extractAll) result+="dokumentovanЩch ";
- result+="symbolЫ, kterИ jsou definovАny na Зrovni svЩch souborЫ. "
- "Pro ka·dЩ symbol je uveden odkaz na ";
+
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result+="funkcМ, promЛnnЩch, maker, vЩХtЫ a definic typЫ (typedef) "
+ "s odkazy na ";
+ }
+ else
+ {
+ result+="symbolЫ, kterИ jsou definovАny na Зrovni svЩch souborЫ. "
+ "Pro ka·dЩ symbol je uveden odkaz na ";
+ }
+
if (extractAll)
- result+="dokumentaci pЬМslu nИho souboru";
+ result+="soubory, ke kterЩm pЬМslu ejМ:";
else
- result+="soubor, ve kterИm je symbol definovАn";
- result+=". Podle zpЫsobu definice mЫ·e bЩt symbol globАlnМm symbolem "
- "nebo symbolem, kterЩ je viditelnЩ pouze z danИho souboru "
- "(to se tЩkА napЬМklad statickЩch promЛnnЩch v C++). "
- "Seznam neobsahuje symboly ХlenЫ tЬМd. "
- "Symbol mЫ·e oznaХovat makro, typ, instanci tЬМdy, "
- "promЛnnou, konstantu, funkci, vЩХet, hodnotu vЩХtu a podobnЛ:";
+ result+="dokumentaci:";
return Decode(result);
}
@@ -374,8 +452,17 @@ class TranslatorCzech : public Translator
* annotated compound index.
*/
virtual QCString trCompoundIndex()
- { return Decode("RejstЬМk tЬМd"); }
-
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("RejstЬМk datovЩch struktur");
+ }
+ else
+ {
+ return Decode("RejstЬМk tЬМd");
+ }
+ }
+
/*! This is used in LaTeX as the title of the chapter with the
* list of all files.
*/
@@ -508,8 +595,17 @@ class TranslatorCzech : public Translator
* the list of links to documented compounds
*/
virtual QCString trCompounds()
- { return Decode("TЬМdy"); }
-
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("DatovИ struktry");
+ }
+ else
+ {
+ return Decode("TЬМdy");
+ }
+ }
+
/*! This is used in the documentation of a group before the list of
* links to documented files
*/
@@ -954,7 +1050,14 @@ class TranslatorCzech : public Translator
}
virtual QCString trPublicAttribs()
{
- return Decode("VeЬejnИ atributy");
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("DatovИ polo·ky");
+ }
+ else
+ {
+ return Decode("VeЬejnИ atributy");
+ }
}
virtual QCString trStaticPublicAttribs()
{
diff --git a/src/translator_de.h b/src/translator_de.h
index 8f0f75a..3d157ff 100644
--- a/src/translator_de.h
+++ b/src/translator_de.h
@@ -22,25 +22,30 @@
// RK (who are you?)
// - Update for "new since 1.1.3" version
//
-// 2001/03/23 Jens Seidel (jens.seidel@mathematik.tu-chemnitz.de)
+// 2001/03/23 Jens Seidel (jensseidel@users.sourceforge.net)
// - fixed typos
// - changed trPageDocumentation() "Seitenbeschreibung" to
-// "Zus&auml;tzliche Informationen"
+// "ZusДtzliche Informationen"
// - removed old trGeneratedFrom()
-// - /*! ==> /* (documentation is inherited from translator.h;
-// INHERIT_DOCS = YES)
+// - changed "/*!" to "/*" (documentation is inherited from translator.h
+// (INHERIT_DOCS = YES), there's no need to make changes twice)
// - Update for "new since 1.2.4" version
//
+// 2001/04/17 Jens Seidel (jensseidel@users.sourceforge.net)
+// - fixed typos ("Vererbunsbeziehung", "gesch&uumltzter")
+// - use umlauts instead of html code ("&auml;",...)
+// this makes it easier to read and fixes three problems (two in
+// \code segment)
+//
// Todo:
// - translation of all Config_getBool("OPTIMIZE_OUTPUT_FOR_C")
// strings (see translator.h)
// - translation of "compound"
-// - see FIXME for further changes
-// - use "Д",... (instead of "&auml;") in \code segments (or is there a bug
-// in doxygen-1.2.6)?
+// - see FIXME
// - was ist richtig: "Liste aller dokumentierter Elemente" oder
// "Liste aller dokumentierten Elemente" (aktuell)
// (nach "aller" suchen)
+// "Mithilfe" oder "Mit Hilfe"
#ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H
@@ -67,7 +72,7 @@ class TranslatorGerman : public Translator
QCString trDetailedDescription()
// header that is put before the detailed description of files, classes and namespaces.
- { return "Ausf&uuml;hrliche Beschreibung"; }
+ { return "AusfЭhrliche Beschreibung"; }
QCString trMemberTypedefDocumentation()
// header that is put before the list of typedefs.
@@ -75,7 +80,7 @@ class TranslatorGerman : public Translator
QCString trMemberEnumerationDocumentation()
// header that is put before the list of enumerations.
- { return "Dokumentation der Aufz&auml;hlungstypen"; }
+ { return "Dokumentation der AufzДhlungstypen"; }
QCString trMemberFunctionDocumentation()
// header that is put before the list of member functions.
@@ -99,17 +104,17 @@ class TranslatorGerman : public Translator
QCString trThisIsTheListOfAllMembers()
// this is the first part of a sentence that is followed by a class name
- { return "Vollst&auml;ndige Aufstellung aller Elemente f&uuml;r "; }
+ { return "VollstДndige Aufstellung aller Elemente fЭr "; }
QCString trIncludingInheritedMembers()
// this is the remainder of the sentence after the class name
- { return " einschlie&szlig;lich aller geerbten Elemente."; }
+ { 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.
{ QCString result="Automatisch erzeugt von Doxygen";
- if (s) result+=(QCString)" f&uuml;r "+s;
+ if (s) result+=(QCString)" fЭr "+s;
result+=" aus dem Quellcode.";
return result;
}
@@ -129,7 +134,7 @@ class TranslatorGerman : public Translator
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&auml;nderte Text aus der "
+ { return (QCString)"Dieses ist der unverДnderte Text aus der "
"Include-Datei "+f+"."; }
// quick reference sections
@@ -145,7 +150,7 @@ class TranslatorGerman : public Translator
QCString trCompoundList()
// This is put above each page as a link to the list of annotated classes
- { return "&Uuml;bersicht"; }
+ { return "эbersicht"; }
QCString trFileList()
// This is put above each page as a link to the list of documented files
@@ -157,7 +162,7 @@ class TranslatorGerman : public Translator
QCString trCompoundMembers()
// This is put above each page as a link to all members of compounds.
- { return "Element&uuml;bersicht"; }
+ { return "ElementЭbersicht"; }
QCString trFileMembers()
// This is put above each page as a link to all members of files.
@@ -165,7 +170,7 @@ class TranslatorGerman : public Translator
QCString trRelatedPages()
// This is put above each page as a link to all related pages.
- { return "Zus&auml;tzliche Informationen"; }
+ { return "ZusДtzliche Informationen"; }
QCString trExamples()
// This is put above each page as a link to all examples.
@@ -177,14 +182,14 @@ class TranslatorGerman : public Translator
QCString trClassHierarchyDescription()
// This is an introduction to the class hierarchy.
- { return "Die Liste der Ableitungen ist -mit Einschr&auml;nkungen- "
+ { 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.
{
- QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ QCString result="Hier folgt die AufzДhlung aller ";
if (!extractAll) result+="dokumentierten ";
result+="Dateien mit einer Kurzbeschreibung:";
return result;
@@ -194,17 +199,17 @@ class TranslatorGerman : public Translator
// This is an introduction to the annotated compound list
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
- return "Hier folgt die Aufz&auml;hlung aller Datenstrukturen "
+ return "Hier folgt die AufzДhlung aller Datenstrukturen "
"mit einer Kurzbeschreibung:";
else
- return "Hier folgt die Aufz&auml;hlung aller Klassen, Strukturen "
+ return "Hier folgt die AufzДhlung aller Klassen, Strukturen "
"und Varianten mit einer Kurzbeschreibung:"; // FIXME: "interfaces" = ??
}
QCString trCompoundMembersDescription(bool extractAll)
// This is an introduction to the page with all class members
{
- QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ QCString result="Hier folgt die AufzДhlung aller ";
if (!extractAll) result+="dokumentierten ";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
result+="Strukturen und Varianten mit Verweisen auf ";
@@ -217,9 +222,9 @@ class TranslatorGerman : public Translator
result+="die Klassendokumentation zu jedem Element:";
} else {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
- result+="die zugeh&ouml;rigen Elemente:";
+ result+="die zugehЖrigen Elemente:";
else
- result+="die zugeh&ouml;rigen Klassen:";
+ result+="die zugehЖrigen Klassen:";
}
return result;
}
@@ -227,11 +232,11 @@ class TranslatorGerman : public Translator
QCString trFileMembersDescription(bool extractAll)
// This is an introduction to the page with all file members
{
- QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ QCString result="Hier folgt die AufzДhlung aller ";
if (!extractAll) result+="dokumentierten ";
result+="Dateielemente mit Verweisen auf ";
if (extractAll) result+="die Dateidokumentation zu jedem Element:";
- else result+="die zugeh&ouml;rigen Dateien:";
+ else result+="die zugehЖrigen Dateien:";
return result;
}
@@ -245,16 +250,16 @@ class TranslatorGerman : public Translator
QCString trRelatedPagesDescription()
// This is an introduction to the page with the list of related pages
- { return "Hier folgt eine Liste mit zusammengeh&ouml;rigen Themengebieten:"; }
+ { 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
- { return "Hier folgt die Aufz&auml;hlung aller Module:"; }
+ { 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.
- { return "Keine Beschreibung verf&uuml;gbar"; }
+ { return "Keine Beschreibung verfЭgbar"; }
// index titles (the project name is prepended for these)
@@ -310,7 +315,7 @@ class TranslatorGerman : public Translator
QCString trPageDocumentation()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all related pages.
- { return "Zus&auml;tzliche Informationen"; }
+ { return "ZusДtzliche Informationen"; }
QCString trReferenceManual()
// This is used in LaTeX as the title of the document
@@ -334,7 +339,7 @@ class TranslatorGerman : public Translator
QCString trEnumerations()
// This is used in the documentation of a file as a header before the
// list of enumerations
- { return "Aufz&auml;hlungen"; }
+ { return "AufzДhlungen"; }
QCString trFunctions()
// This is used in the documentation of a file as a header before the
@@ -349,7 +354,7 @@ class TranslatorGerman : public Translator
QCString trEnumerationValues()
// This is used in the documentation of a file as a header before the
// list of (global) variables
- { return "Aufz&auml;hlungswerte"; }
+ { return "AufzДhlungswerte"; }
QCString trAuthor()
// This is used in man pages as the author section.
@@ -373,12 +378,12 @@ class TranslatorGerman : public Translator
QCString trEnumerationTypeDocumentation()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for enumeration types
- { return "Dokumentation der Aufz&auml;hlungstypen"; }
+ { 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
- { return "Dokumentation des Wertebereiches der Aufz&auml;hlungstypen"; }
+ { return "Dokumentation des Wertebereiches der AufzДhlungstypen"; }
QCString trFunctionDocumentation()
// This is used in the documentation of a file/namespace before the list
@@ -393,7 +398,7 @@ class TranslatorGerman : public Translator
QCString trCompounds()
// This is used in the documentation of a file/namespace/group before
// the list of links to documented compounds
- { return "&Uuml;bersicht"; }
+ { return "эbersicht"; }
QCString trFiles()
// This is used in the documentation of a group before the list of
@@ -403,7 +408,7 @@ class TranslatorGerman : public Translator
QCString trGeneratedAt(const char *date,const char *projName)
{
QCString result=(QCString)"Erzeugt am "+date;
- if (projName) result+=(QCString)" f&uuml;r "+projName;
+ if (projName) result+=(QCString)" fЭr "+projName;
result+=(QCString)" von";
return result;
}
@@ -416,17 +421,17 @@ class TranslatorGerman : public Translator
QCString trClassDiagram(const char *clName)
// this text is put before a class diagram
{
- return (QCString)"Klassendiagramm f&uuml;r "+clName;
+ return (QCString)"Klassendiagramm fЭr "+clName;
}
QCString trForInternalUseOnly()
// this text is generated when the \internal command is used.
- { return "Nur f&uuml;r den internen Gebrauch."; }
+ { return "Nur fЭr den internen Gebrauch."; }
QCString trReimplementedForInternalReasons()
// this text is generated when the \reimp command is used.
- { return "Aus internen Gr&uuml;nden neu implementiert. "
- "Das API wird davon nicht ber&uuml;hrt."; }
+ { 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.
@@ -434,7 +439,7 @@ class TranslatorGerman : public Translator
QCString trBugsAndLimitations()
// this text is generated when the \bug command is used.
- { return "Fehler und Einschr&auml;nkungen"; }
+ { return "Fehler und EinschrДnkungen"; }
QCString trVersion()
// this text is generated when the \version command is used.
@@ -450,7 +455,7 @@ class TranslatorGerman : public Translator
QCString trReturns()
// this text is generated when the \return command is used.
- { return "R&uuml;ckgabe"; }
+ { return "RЭckgabe"; }
QCString trSeeAlso()
// this text is generated when the \sa command is used.
@@ -539,25 +544,25 @@ class TranslatorGerman : public Translator
// these are for the member sections of a class, struct or union
QCString trPublicMembers()
- { return "&Ouml;ffentliche Datenelemente"; }
+ { return "жffentliche Datenelemente"; }
QCString trPublicSlots()
- { return "&Ouml;ffentliche Slots"; }
+ { return "жffentliche Slots"; }
QCString trSignals()
{ return "Signale"; }
QCString trStaticPublicMembers()
- { return "&Ouml;ffentliche, statische Datenelemente"; }
+ { return "жffentliche, statische Datenelemente"; }
QCString trProtectedMembers()
- { return "Gesch&uuml;tzte Datenelemente"; }
+ { return "GeschЭtzte Datenelemente"; }
QCString trProtectedSlots()
- { return "Gesch&uuml;tzte Slots"; }
+ { return "GeschЭtzte Slots"; }
QCString trStaticProtectedMembers()
- { return "Gesch&uuml;tzte, statische Datenelemente"; }
+ { return "GeschЭtzte, statische Datenelemente"; }
QCString trPrivateMembers()
{ return "Private Datenelemente"; }
@@ -605,7 +610,7 @@ class TranslatorGerman : public Translator
// used in class documentation to produce a list of super classes,
// if class diagrams are disabled.
{
- return "Basisklasse f&uuml;r "+trWriteList(numEntries)+".";
+ return "Basisklasse fЭr "+trWriteList(numEntries)+".";
}
QCString trReimplementedFromList(int numEntries)
@@ -629,13 +634,13 @@ class TranslatorGerman : public Translator
QCString trNamespaceMemberDescription(bool extractAll)
// This is an introduction to the page with all namespace members
{
- QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ QCString result="Hier folgt die AufzДhlung aller ";
if (!extractAll) result+="dokumentierten ";
result+="Namensbereichselemente mit Verweisen auf ";
if (extractAll)
- result+="die Namensbereichsdokumentation f&uuml;r jedes Element:";
+ result+="die Namensbereichsdokumentation fЭr jedes Element:";
else
- result+="die zugeh&ouml;rigen Dateien:";
+ result+="die zugehЖrigen Dateien:";
return result;
}
@@ -670,7 +675,7 @@ class TranslatorGerman : public Translator
bool single)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
- QCString result=(QCString)"Die Dokumentation f&uuml;r diese";
+ QCString result=(QCString)"Die Dokumentation fЭr diese";
switch(compType)
{
case ClassDef::Class: result+=" Klasse"; break;
@@ -696,7 +701,7 @@ class TranslatorGerman : public Translator
/* This is used as the heading text for the retval command. */
virtual QCString trReturnValues()
- { return "R&uuml;ckgabewerte"; }
+ { return "RЭckgabewerte"; }
/* This is in the (quick) index as a link to the main page (index.html)
*/
@@ -744,14 +749,13 @@ class TranslatorGerman : public Translator
/* this text is put before a collaboration diagram */
virtual QCString trCollaborationDiagram(const char *clName)
{
- return (QCString)"Zusammengeh&ouml;rigkeiten von "+clName+":";
+ return (QCString)"ZusammengehЖrigkeiten von "+clName+":";
}
- //RK: Apparently Jens missed the Umlaut here. Corrected that.
/* this text is put before an include dependency graph */
virtual QCString trInclDepGraph(const char *fName)
{
- return (QCString)"Include-Abh&auml;ngigkeitsdiagramm f&uuml;r "+fName+":";
+ return (QCString)"Include-AbhДngigkeitsdiagramm fЭr "+fName+":";
}
/* header that is put before the list of constructor/destructors. */
@@ -834,32 +838,32 @@ class TranslatorGerman : public Translator
virtual QCString trPublicTypes()
{
- return "&Ouml;ffentliche Typen";
+ return "жffentliche Typen";
}
virtual QCString trPublicAttribs()
{
- return "&Ouml;ffentliche Attribute";
+ return "жffentliche Attribute";
}
virtual QCString trStaticPublicAttribs()
{
- return "Statische &ouml;ffentliche Attribute";
+ return "Statische Жffentliche Attribute";
}
virtual QCString trProtectedTypes()
{
- return "Gesch&uuml;tzte Typen";
+ return "GeschЭtzte Typen";
}
virtual QCString trProtectedAttribs()
{
- return "Gesch&uuml;tzte Attribute";
+ return "GeschЭtzte Attribute";
}
virtual QCString trStaticProtectedAttribs()
{
- return "Statische gesch&uuml;tzte Attribute";
+ return "Statische geschЭtzte Attribute";
}
virtual QCString trPrivateTypes()
@@ -881,7 +885,6 @@ class TranslatorGerman : public Translator
// new since 1.1.3
//////////////////////////////////////////////////////////////////////////
-//RK: Started from here
/* Used as a marker that is put before a \todo item */
virtual QCString trTodo()
{
@@ -916,7 +919,7 @@ class TranslatorGerman : public Translator
virtual QCString trInclByDepGraph()
{
return "Dieser Graph zeigt, welche Datei direkt oder "
- "indirekt diese Datei enth&auml;lt:";
+ "indirekt diese Datei enthДlt:";
}
virtual QCString trSince()
@@ -931,26 +934,26 @@ class TranslatorGerman : public Translator
/* title of the graph legend page */
virtual QCString trLegendTitle()
{
- return "Erkl&auml;rung des Graphen";
+ return "ErklДrung des Graphen";
}
/* page explaining how the dot graph's should be interpreted */
virtual QCString trLegendDocs()
{
return
- "Diese Seite erkl&auml;rt die Interpretation der von doxygen "
+ "Diese Seite erklДrt die Interpretation der von doxygen "
"erzeugten Graphen.<p>\n"
"Beispiel:\n"
"\\code\n"
- "/*! Wegen Verk&uuml;rzung unsichtbare Klasse */\n"
+ "/*! Wegen VerkЭrzung unsichtbare Klasse */\n"
"class Invisible { };\n\n"
- "/*! Klasse verk&uuml;rzt dargestellt, Vererbunsbeziehung ist versteckt */\n"
+ "/*! Klasse verkЭrzt dargestellt, Vererbungsbeziehung ist versteckt */\n"
"class Truncated : public Invisible { };\n\n"
"/* Nicht mit doxygen-Kommentaren dokumentierte Klasse */\n"
"class Undocumented { };\n\n"
- "/*! Mithilfe &ouml;ffentlicher Vererbung vererbte Klasse */\n"
+ "/*! Mithilfe Жffentlicher Vererbung vererbte Klasse */\n"
"class PublicBase : public Truncated { };\n\n"
- "/*! Mithilfe gesch&uumltzter Vererbung vererbte Klasse */\n"
+ "/*! Mithilfe geschЭtzter Vererbung vererbte Klasse */\n"
"class ProtectedBase { };\n\n"
"/*! Mithilfe privater Vererbung vererbte Klasse */\n"
"class PrivateBase { };\n\n"
@@ -972,22 +975,22 @@ class TranslatorGerman : public Translator
"<p>\n"
"Die Rechtecke in obigem Graphen bedeuten:\n"
"<ul>\n"
- "<li>Ein schwarz gef&uuml;lltes Rechteck stellt die Struktur oder "
- "Klasse dar, f&uuml;r die der Graph erzeugt wurde.\n"
+ "<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"
"<li>Ein Rechteck mit grauem Rahmen kennzeichnet eine undokumentierte "
" Struktur oder Klasse.\n"
"<li>Ein Rechteck mit rotem Rahmen kennzeichnet eine dokumentierte "
- " Struktur oder Klasse, f&uuml;r die nicht alle Vererbungs-/"
- "Enthaltenseinsbeziehungen dargestellt werden. Ein Graph wird gek&uuml;rzt, "
+ " 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"
"Die Pfeile bedeuten:\n"
"<ul>\n"
- "<li>Ein dunkelblauer Pfeil stellt eine &ouml;ffentliche Vererbungsbeziehung "
+ "<li>Ein dunkelblauer Pfeil stellt eine Жffentliche Vererbungsbeziehung "
"zwischen zwei Klassen dar.\n"
- "<li>Ein dunkelgr&uuml;ner Pfeil stellt gesch&uuml;tzte Vererbung dar.\n"
+ "<li>Ein dunkelgrЭner Pfeil stellt geschЭtzte Vererbung dar.\n"
"<li>Ein dunkelroter Pfeil stellt private Vererbung dar.\n"
"<li>Ein gestrichelter violetter Pfeil bedeutet, dass eine Klasse in einer "
"anderen enthalten ist oder von einer anderen benutzt wird. Am Pfeil "
diff --git a/src/translator_ru.h b/src/translator_ru.h
index e16596e..e13591c 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-1999 by Dimitri van Heesch.
+ * Copyright (C) 1997-2000 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -10,13 +10,39 @@
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
- * All output generated with Doxygen is not covered by this license.
- *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
*/
/*
- * Russian translation by Andrey V. Stolyarov <crocodil<AT>croco.net>
- * released Feb 14, 2001
+ *
+ * Nickolay Semyonov
+ * Andrey V. Stolyarov released Feb 14, 2001
+ * Alexandr V. Chelpanov <cav@cryptopro.ru> released Apr 21, 2001
+ *
+ * Доступны так же перевод примеров на русский язык по email (см. выше)
+ *
+ * При переводе заголовков слова list и documentation убраны.
+ *
+ * Modules переведено как группы, так как модули чаще всего в русском
+ * переводе встречается в контексте модуля как единицы трансляции, файла
+ * и др., что в данном случае не совсем подходит, тем более что
+ * соответствующая команда в doxygen именуется \group.
+ *
+ * Просьба не оптимизировать decode обрамляя результат, это может привести
+ * к перекодировке входа в том числе русских имен файлов.
+ *
+ * Отдано предпочтение при переводе related functions - "относящиеся к классу
+ * функции", а не "связанные функции", что верно до тех пор пока есть только
+ * related to class, и нет related to template, package и т.д. Последнее
+ * замечание касается большинства member.
+ *
+ * По возможности при переводе members указывается членом чего этот member
+ * является.
+ *
+ * Compounds переведено как классы, см Строустрап.
+ *
+ * Определения помеченные ?? являются спорными.
*/
#ifndef TRANSLATOR_RU_H
@@ -26,195 +52,343 @@
class TranslatorRussian : public Translator
{
- public:
- QCString idLanguage()
- { return "russian"; }
- QCString latexBabelPackage()
- { return "russian"; }
- QCString idLanguageCharset()
- {
- return "koi8-r";
- }
- QCString trRelatedFunctions()
- {
- return "Связанные функции";
- }
- QCString trRelatedSubscript()
- {
- return "(Обратите внимание, что эти функции - не члены класса)";
- }
- QCString trDetailedDescription()
- {
- return "Детальное описание";
- }
- QCString trMemberTypedefDocumentation()
- {
- // Need additional translation
- return "Описание typedef-членов";
- }
- QCString trMemberEnumerationDocumentation()
- {
- return "Описание членов перечислимого типа";
- }
- QCString trMemberFunctionDocumentation()
- {
- return "Описание функций-членов";
- }
- QCString trMemberDataDocumentation()
- {
- if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
- {
- return "Описание полей";
+ protected:
+ /*! Returns the string converted from koi8-r to windows-1251. */
+ /* The method was designed initially for translator_cz.h.
+ It is used for on-line encoding conversion related to conditional
+ compilation in Unix/MS Windows environments (both use different
+ encoding).
+ Encoding table got from QT:qtextcodec.cpp
+ */
+ QCString Koi8RToWindows1251( const QCString sInput )
+ {
+ static Q_UINT16 koi8_r[128] =
+ { 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524,
+ 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590,
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219/**/, 0x221A, 0x2248,
+ 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7,
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
+ 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E,
+ 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9,
+ 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E,
+ 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A,
+ 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E,
+ 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A
+ };
+
+ QString result;
+ int len = sInput.length();
+
+ result.setUnicode(0, len);
+ QChar* uc = (QChar*)result.unicode(); // const_cast
+ const unsigned char * c = (const unsigned char *)(const char*)sInput;
+ for( int i=0; i<len; i++ ) {
+ if ( c[i] > 127 )
+ uc[i] = koi8_r[c[i]-128];
+ else
+ uc[i] = c[i];
}
- else
- {
- return "Описание переменных-членов";
+ return result.local8Bit();
+ }
+ /*! returns the string converted from Windows-1251 to koi8-r */
+ /* See the comments of the Koi8RToWindows1251() method for details.
+ Encoding table got from QT:qtextcodec.cpp */
+ QCString Windows1251ToKoi8R( const QCString sInput )
+ {
+ static Q_UINT16 windows_1251[128] =
+ { 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
+ 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
+ 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+ 0xFFFD, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
+ 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,
+ 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
+ 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,
+ 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F
+ };
+
+ QString result;
+ int len = sInput.length();
+
+ result.setUnicode(0, len);
+ QChar* uc = (QChar*)result.unicode(); // const_cast
+ const unsigned char * c = (const unsigned char *)(const char*)sInput;
+ for( int i=0; i<len; i++ ) {
+ if ( c[i] > 127 )
+ uc[i] = windows_1251[c[i]-128];
+ else
+ uc[i] = c[i];
}
+ return result.local8Bit();
}
- QCString trMore()
- {
- return "Дальше...";
- }
- QCString trListOfAllMembers()
- {
- return "Cписок всех членов класса.";
- }
- QCString trMemberList()
- {
- return "Список членов";
- }
- QCString trThisIsTheListOfAllMembers()
- {
- return "Это полный список членов класса/структуры ";
- }
- QCString trIncludeIncludingInheritedMembers()
- {
- return ", включая все унаследованные члены.";
- }
- QCString trGeneratedAutomatically(const char *s)
- { QCString result="Автоматически создано системой Doxygen";
- if (s) result+=(QCString)" для "+s;
- result+=" по файлам исходного текста.";
- return result;
- }
- QCString trEnumName()
- {
- return "имя перечисления";
- }
- QCString trEnumValue()
- {
- return "значение перечисления";
- }
- QCString trDefinedIn()
- {
- return "определено в";
- }
- QCString trVerbatimText(const char* f)
- {
- return (QCString)"Это прямая вставка текста из включаемого файла"+f;
- }
- QCString trModules()
- {
- return "Модули";
- }
- QCString trClassHierarchy()
- {
- return "Иерархия классов";
+
+ private:
+ /*! The Decode() inline assumes the source written in the
+ Koi8-R encoding (maintainer dependent).
+ */
+ inline QCString decode(const QCString & sInput)
+ {
+#ifdef _WIN32
+ return Koi8RToWindows1251(sInput);
+#else
+ return sInput;
+#endif
}
- QCString trCompoundList()
+
+ public:
+ /*! Used for identification of the language. */
+ virtual QCString idLanguage()
+ { return "russian"; }
+
+ /* Used to get the command(s) for the language support. */
+ // virtual QCString latexLanguageSupportCommand()
+
+ /*! Used to get the command(s) for the language support. This method
+ * was designed for languages which do not prefer babel package.
+ * If this methods returns empty string, then the latexBabelPackage()
+ * method is used to generate the command for using the babel package.
+ */
+ virtual QCString latexBabelPackage()
+ { return "russianb"; }
+
+ /*! return the language charset. This will be used for the HTML output */
+ virtual QCString idLanguageCharset()
+#ifdef _WIN32
+ { return "Windows-1215"; }
+#else
+ { return "koi8-r"; }
+#endif
+
+ // --- Language translation methods -------------------
+
+ /*! used in the compound documentation before a list of related functions. */
+ virtual QCString trRelatedFunctions()
+ { return decode("Относящиеся к классу функции"); }
+
+ /*! subscript for the related functions. */
+ virtual QCString trRelatedSubscript()
+ { return decode("(не члены класса)"); }
+
+ /*! header that is put before the detailed description of files, classes and namespaces. */
+ virtual QCString trDetailedDescription()
+ { return decode("Подробное описание"); }
+
+ /*! header that is put before the list of typedefs. */
+ virtual QCString trMemberTypedefDocumentation()
+ { return decode("Определения типов"); }
+
+ /*! header that is put before the list of enumerations. */
+ virtual QCString trMemberEnumerationDocumentation()
+ { return decode("Перечисления"); }
+
+ /*! header that is put before the list of member functions. */
+ virtual QCString trMemberFunctionDocumentation()
+ { return decode("Методы"); }
+
+ /*! header that is put before the list of member attributes. */
+ virtual QCString trMemberDataDocumentation()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Структуры данных";
+ return decode( "Поля" );
}
else
{
- // doubtful translation; originally - "Compound List"
- return "Список составных объектов";
+ return decode( "Данные класса" );
}
}
- QCString trFileList()
+
+ /*! this is the text of a link put after brief descriptions. */
+ virtual QCString trMore()
+ { return decode("Подробнее..."); }
+
+ /*! put in the class documentation */
+ /* Dosn't use when optimization for C is on. */
+ virtual QCString trListOfAllMembers()
{
- return "Список файлов";
+ return decode( "Полный список членов класса" );
}
- QCString trHeaderFiles()
+
+ /*! used as the title of the "list of all members" page of a class */
+ /* Dosn't use when optimization for C is on. */
+ virtual QCString trMemberList()
{
- return "Заголовочные файлы";
+ return decode( "Cписок членов класса" );
}
- QCString trCompoundMembers()
+
+ /*! this is the first part of a sentence that is followed by a class name */
+ /* Dosn't use when optimization for C is on. */
+ virtual QCString trThisIsTheListOfAllMembers()
+ { return decode("Полный список членов класса"); }
+
+ /*! this is the remainder of the sentence after the class name */
+ /* Dosn't use when optimization for C is on. */
+ virtual QCString trIncludingInheritedMembers()
+ { return decode(", включая наследуемые из базового класса"); }
+
+ /*! 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=decode("Автоматически создано Doxygen");
+ if (s) result+=decode(" для ")+s;
+ result+=decode(" из исходного текста.");
+ return result;
+ }
+
+ /*! put after an enum name in the list of all members */
+ virtual QCString trEnumName()
+ { return decode("перечисление"); }
+
+ /*! put after an enum value in the list of all members */
+ virtual QCString trEnumValue()
+ { return decode("элементы перечисления"); }
+
+ /*! put after an undocumented member in the list of all members */
+ virtual QCString trDefinedIn()
+ { return decode("определено в"); }
+
+ // TODO: trVerbatimText is no longer used => remove!
+ /*! put as in introduction in the verbatim header file of a class.
+ * parameter f is the name of the include file.
+ */
+ virtual QCString trVerbatimText(const char *f)
+ { return decode( (QCString)"Это прямая вставка текста из включаемого файла")+f; }
+
+ // 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 decode("Группы"); }
+
+ /*! This is put above each page as a link to the class hierarchy */
+ virtual QCString trClassHierarchy()
+ { return decode("Иерархия классов"); }
+
+ /*! 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 "Поля структур";
+ return decode( "Структуры данных" );
}
else
{
- return "Члены-данные";
+ return decode( "Классы" );
}
}
- QCString trFileMembers()
+
+ /*! This is put above each page as a link to the list of documented files */
+ virtual QCString trFileList()
+ { return decode("Файлы"); }
+
+ /*! This is put above each page as a link to the list of all verbatim headers */
+ virtual QCString trHeaderFiles()
+ { return decode("Заголовочные файлы"); }
+
+ /*! 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 "Глобальные имена";
+ return decode( "Поля структур" );
}
else
{
- // doubtful translation
- // (originally - "File members", but not good for Russian)
- return "Члены файла";
+ return decode( "Члены классов" );
}
}
- QCString trRelatedPages()
- {
- // non-verbatim translation: originally "related pages"
- return "См. также: ";
- }
- QCString trExamples()
- {
- return "Примеры";
- }
- QCString trSearch()
- {
- return "Поиск";
- }
- QCString trClassHierarchyDescription()
+
+ /*! This is put above each page as a link to all members of files. */
+ /*??*/
+ virtual QCString trFileMembers()
{
- return "Это дерево наследования отсортировано приблизительно "
- "(но не совсем) по алфавиту";
+ return decode( "Члены файла" );
}
- QCString trFileListDescription(bool extractAll)
+
+ /*! This is put above each page as a link to all related pages. */
+ virtual QCString trRelatedPages()
+ /* ?? Вариант перевода "См. также: " более удачный, но не в заголовке,
+ как в данном случае. */
+ { return decode("Описания"); }
+
+ /*! This is put above each page as a link to all examples. */
+ virtual QCString trExamples()
+ { return decode("Примеры"); }
+
+ /*! This is put above each page as a link to the search engine. */
+ virtual QCString trSearch()
+ { return decode("Поиск"); }
+
+ /*! This is an introduction to the class hierarchy. */
+ virtual QCString trClassHierarchyDescription()
+ { return decode("Иерархия классов."); }
+
+ /*! This is an introduction to the list with all files. */
+ virtual QCString trFileListDescription(bool extractAll)
{
- QCString result="Список всех ";
- if(!extractAll) result+="документированных ";
- result+="файлов с кратким описанием:";
- return result;
+ QCString result="Полный список ";
+ if (!extractAll) result+="документированных ";
+ result+="файлов.";
+ return decode(result);
}
- QCString trCompoundListDescription()
+
+ /*! This is an introduction to the annotated compound list. */
+ virtual QCString trCompoundListDescription()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Структуры данных и их краткое описание: ";
+ return decode( "Структуры данных с их кратким описанием." );
}
else
{
- return "Классы, структуры, объединения и интерфейсы "
- "и их краткое описание: ";
+ return decode( "Классы с их кратким описанием." );
}
}
- QCString trCompoundMembersDescription(bool extractAll)
+
+ /*! This is an introduction to the page with all class members. */
+ virtual QCString trCompoundMembersDescription(bool extractAll)
{
- // Need additional translation
QCString result="Список всех ";
if(!extractAll) result+="документированных ";
- result+="членов классов со ссылками на ";
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ result+="членов структур данных со ссылками на ";
+ else
+ result+="членов классов со ссылками на ";
if(extractAll)
- result+="документацию по классу для каждого члена:";
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ result+="документацию по структуре для каждого члена.";
+ else
+ result+="документацию по классу для каждого члена.";
+ }
else
- result+="классы, к которым они принадлежат:";
- return result;
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ result += "структуры";
+ else
+ result += "классы";
+ result+=", к которым они принадлежат.";
+ }
+ return decode( result );
}
- QCString trFileMembersDescription(bool extractAll)
+
+ /*! This is an introduction to the page with all file members. */
+ virtual QCString trFileMembersDescription(bool extractAll)
{
QCString result="Список всех ";
if (!extractAll) result+="документированных ";
@@ -230,598 +404,781 @@ class TranslatorRussian : public Translator
}
result+=" со ссылками на ";
if (extractAll)
- result+="файлы, к которым они принадлежат:";
+ result+="файлы, к которым они принадлежат.";
else
- result+="документацию:";
- return result;
- }
- QCString trHeaderFilesDescription()
- {
- return "Список заголовочных файлов, составляющих API:";
- }
- QCString trExamplesDescription()
- {
- return "Список всех примеров:";
- }
- QCString trRelatedPagesDescription()
- {
- return "Список всех родственных страниц документации:";
+ result+="документацию.";
+ return decode( result );
}
- QCString trModulesDescription()
- {
- return "Список всех модулей:";
- }
- QCString trNoDescriptionAvailable()
- {
- return "Описание отсутствует";
- }
- QCString trDocumentation()
- {
- return "Документация";
- }
- QCString trModuleIndex()
- {
- return "Указатель модулей";
- }
- QCString trHierarchicalIndex()
- {
- return "Иерархический список";
- }
- QCString trCompoundIndex()
+
+ /*! This is an introduction to the page with the list of all header files. */
+ virtual QCString trHeaderFilesDescription()
+ { return decode("Полный список заголовочных файлов."); }
+
+ /*! This is an introduction to the page with the list of all examples */
+ virtual QCString trExamplesDescription()
+ { return decode("Полный список примеров."); }
+
+ /*! This is an introduction to the page with the list of related pages */
+ virtual QCString trRelatedPagesDescription()
+ { return decode("Полный список дополнительных описаний."); }
+
+ /*! This is an introduction to the page with the list of class/file groups */
+ virtual QCString trModulesDescription()
+ { return decode("Полный список групп."); }
+
+ /*! This sentences is used in the annotated class/file lists if no brief
+ * description is given.
+ */
+ virtual QCString trNoDescriptionAvailable()
+ { return decode("Описание отсутсвует"); }
+
+ // 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("Документация"); }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * index of all groups.
+ */
+ virtual QCString trModuleIndex()
+ { return decode("Алфавитный указатель групп"); }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * class hierarchy.
+ */
+ virtual QCString trHierarchicalIndex()
+ { return decode("Иерархический список классов"); }
+
+ /*! 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 "Список структур данных";
+ return decode( "Алфавитный указатель структур данных" );
}
else
{
- // originally "compound index"
- return "Список классов и структур";
+ return decode( "Алфавитный указатель классов" );
}
}
- QCString trFileIndex()
- {
- return "Список файлов";
- }
- QCString trModuleDocumentation()
- {
- return "Документация по модулям";
- }
- QCString trClassDocumentation()
- {
- return "Документация по классам";
- }
- QCString trFileDocumentation()
- {
- return "Документация по файлам";
- }
- QCString trExampleDocumentation()
- {
- return "Описания примеров";
- }
- QCString trPageDocumentation()
- {
- return "Документация по страницам";
- }
- QCString trReferenceManual()
- {
- // originally reference manual
- return "Краткий справочник";
- }
- QCString trDefines()
- {
- return "Определения";
- }
- QCString trFunctionPrototypes()
- {
- return "Прототипы функций";
- }
- QCString trTypedefs()
- {
- return "Определения типов";
- }
- QCString trEnumerations()
- {
- return "Перечисления";
- }
- QCString trFunctions()
- {
- return "Функции";
- }
- QCString trVariables()
- {
- return "Переменные";
- }
- QCString trEnumerationValues()
- {
- return "Значения перечислимого типа";
- }
- QCString trAuthor()
- {
- return "Автор";
- }
- QCString trDefineDocumentation()
- {
- return "Документация по определениям";
- }
- QCString trFunctionPrototypeDocumentation()
- {
- return "Документация по прототипам функций";
- }
- QCString trTypedefDocumentation()
- {
- return "Документация по определениям типов";
- }
- QCString trEnumerationTypeDocumentation()
- {
- return "Документация по перечислимым типам";
- }
- QCString trEnumerationValueDocumentation()
- {
- return "Документация по значениям перечислимых типов";
- }
- QCString trFunctionDocumentation()
- {
- return "Документация по функциям";
- }
- QCString trVariableDocumentation()
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * list of all files.
+ */
+ virtual QCString trFileIndex()
+ { return decode( "Список файлов" ); }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all groups.
+ */
+ virtual QCString trModuleDocumentation()
+ { return decode("Группы"); }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all classes, structs and unions.
+ */
+ virtual QCString trClassDocumentation()
{
- return "Документация по переменным";
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode( "Структуры данных" );
+ }
+ else
+ {
+ return decode( "Классы" );
+ }
}
- QCString trCompounds()
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all files.
+ */
+ virtual QCString trFileDocumentation()
+ { return decode("Файлы"); }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all examples.
+ */
+ virtual QCString trExampleDocumentation()
+ { return decode("Примеры"); }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all related pages.
+ */
+ virtual QCString trPageDocumentation()
+ { return decode("Тематические описания"); }
+
+ /*! This is used in LaTeX as the title of the document */
+ virtual QCString trReferenceManual()
+ { return decode("Оглавление"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of defines
+ */
+ virtual QCString trDefines()
+ { return decode("Макросы"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of function prototypes
+ */
+ virtual QCString trFuncProtos()
+ { return decode("Прототипы функций"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of typedefs
+ */
+ virtual QCString trTypedefs()
+ { return decode("Определения типов"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of enumerations
+ */
+ virtual QCString trEnumerations()
+ { return decode("Перечисления"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) functions
+ */
+ virtual QCString trFunctions()
+ { return decode("Функции"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) variables
+ */
+ virtual QCString trVariables()
+ { return decode("Переменные"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) variables
+ */
+ virtual QCString trEnumerationValues()
+ { return decode("Элементы перечислений"); }
+
+ /*! This is used in man pages as the author section. */
+ virtual QCString trAuthor()
+ { return decode("Автор"); }
+
+ /*! This is used in the documentation of a file before the list of
+ * documentation blocks for defines
+ */
+ virtual QCString trDefineDocumentation()
+ { return decode("Макросы"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for function prototypes
+ */
+ virtual QCString trFunctionPrototypeDocumentation()
+ { return decode("Прототипы функций"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for typedefs
+ */
+ virtual QCString trTypedefDocumentation()
+ { return decode("Типы"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for enumeration types
+ */
+ virtual QCString trEnumerationTypeDocumentation()
+ { return decode("Перечисления"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for enumeration values
+ */
+ virtual QCString trEnumerationValueDocumentation()
+ { return decode("Элементы перечислений"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for functions
+ */
+ virtual QCString trFunctionDocumentation()
+ { return decode("Функции"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for variables
+ */
+ virtual QCString trVariableDocumentation()
+ { return decode("Переменные"); }
+
+ /*! 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 "Структуры данных";
+ return decode( "Структуры данных" );
}
else
{
- // originally "compounds"
- return "Составные типы";
+ return decode( "Классы" );
}
}
- QCString trFiles()
- {
- return "Файлы";
- }
- QCString trGeneratedAt(const char* date,const char* projName)
- {
- QCString result=(QCString)"Создано "+date;
- if(projName) result+=(QCString)" для "+projName;
- result+=(QCString)" с помощью ";
- return result;
- }
- QCString trWrittenBy()
- {
- return "написанного";
- }
- QCString trClassDiagram(const char* clName)
- {
- return (QCString)"Диаграмма наследования для "+clName+":";
- }
- QCString trForInternalUseOnly()
- {
- return "Только для внутреннего использования.";
- }
- QCString trReimplementedForInternalREasons()
- {
- return "Реализация изменена по внутренним причинам;"
- " Интерфейсная часть не изменилась.";
- }
- QCString trWarning()
- {
- return "Предупреждение";
- }
- QCString trBugsAndLimitations()
- {
- return "Ошибки и ограничения";
- }
- QCString trVersion()
- {
- return "Версия";
- }
- QCString trDate()
- {
- return "Дата";
- }
- QCString trAuthors()
- {
- return "Автор(ы)";
- }
- QCString trReturns()
- {
- return "Возвращает";
- }
- QCString trSeeAlso()
- {
- return "См. также";
- }
- QCString trParameters()
- {
- return "Параметры";
- }
- QCString trExceptions()
- {
- return "Исключения";
- }
- QCString trGeneratedBy()
- {
- return "Создано при помощи";
+
+ /*! This is used in the documentation of a group before the list of
+ * links to documented files
+ */
+ virtual QCString trFiles()
+ { return decode("Файлы"); }
+
+ /*! 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=decode("Документация ");
+ if (projName) result+=decode("по ")+projName;
+ result+=decode(". Последние изменения: ")+date;
+ result+=decode(". Создано системой ");
+ return result;
}
- QCString trNamespaceList()
+ /*! This is part of the sentence used in the standard footer of each page.
+ */
+ virtual QCString trWrittenBy()
{
- return "Список пространств имен (namespaces)";
+ return decode("Автор:");
}
- QCString trNamespaceListDescription(bool extractAll)
+
+ /*! this text is put before a class diagram */
+ virtual QCString trClassDiagram(const char *clName)
{
- QCString result="Список всех ";
- if(!extractAll) result+="документированных ";
- result+="пространств имен с кратким описанием:";
- return result;
+ return decode("Граф наследования:")+clName+":";
}
- QCString trFriends()
- {
- return "Друзья";
+
+ /*! this text is generated when the \\internal command is used. */
+ virtual QCString trForInternalUseOnly()
+ { return decode("Только для внутреннего использования"); }
+
+ /*! this text is generated when the \\reimp command is used. */
+ virtual QCString trReimplementedForInternalReasons()
+ /*??*/
+ { return decode("Изменено по внутренним причинам");
}
- QCString trRelatedFunctionDocumentation()
+
+ /*! this text is generated when the \\warning command is used. */
+ virtual QCString trWarning()
+ { return decode("Предупреждения"); }
+
+ /*! this text is generated when the \\bug command is used. */
+ virtual QCString trBugsAndLimitations()
+ { return decode("Ошибки и ограничения"); }
+
+ /*! this text is generated when the \\version command is used. */
+ virtual QCString trVersion()
+ { return decode("Версия"); }
+
+ /*! this text is generated when the \\date command is used. */
+ virtual QCString trDate()
+ { return decode("Дата"); }
+
+ /*! this text is generated when the \\author command is used. */
+ virtual QCString trAuthors()
+ { return decode("Автор(ы)"); }
+
+ /*! this text is generated when the \\return command is used. */
+ virtual QCString trReturns()
+ { return decode("Возвращает"); }
+
+ /*! this text is generated when the \\sa command is used. */
+ virtual QCString trSeeAlso()
+ { return decode("См. также"); }
+
+ /*! this text is generated when the \\param command is used. */
+ virtual QCString trParameters()
+ { return decode("Аргументы"); }
+
+ /*! this text is generated when the \\exception command is used. */
+ virtual QCString trExceptions()
+ { return decode("Исключения"); }
+
+ /*! this text is used in the title page of a LaTeX document. */
+ virtual QCString trGeneratedBy()
+ { return decode("Создано системой"); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990307
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used as the title of page containing all the index of all namespaces. */
+ virtual QCString trNamespaceList()
+ { return decode("Пространства имен"); }
+
+ /*! used as an introduction to the namespace list */
+ virtual QCString trNamespaceListDescription(bool extractAll)
{
- // need translation
- return "Документация по друзьям класса и связанным функциям";
+ QCString result="Полный список ";
+ if (!extractAll) result+="документированных ";
+ result+="пространств имен.";
+ return decode(result);
}
- QCString trCompoundReference(const char* clName,
+
+ /*! used in the class documentation as a header before the list of all
+ * friends of a class
+ */
+ virtual QCString trFriends()
+ { return decode("Друзья"); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990405
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used in the class documentation as a header before the list of all
+ * related classes
+ */
+ virtual QCString trRelatedFunctionDocumentation()
+ { return decode("Документация по друзьям класса и функциям отноносящихся"
+ "к классу"); }
+
+//////////////////////////////////////////////////////////////////////////
+// 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)"Описание ";
- if (isTemplate){
- switch(compType)
- {
- case ClassDef::Struct: result+="шаблонной "; break;
- case ClassDef::Class:
- case ClassDef::Union:
- case ClassDef::Interface:
- case ClassDef::Exception:
- result+="шаблонного "; break;
- }
- }
+ QCString result;
+ if (isTemplate)
+ {
+ result="Шаблон ";
switch(compType)
{
- case ClassDef::Class: result+="класса "; break;
- case ClassDef::Struct: result+="структуры "; break;
- case ClassDef::Union: result+="объединения "; break;
- case ClassDef::Interface: result+="интерфейса "; break;
- case ClassDef::Exception: result+="исключения "; break;
+ case ClassDef::Class: result+="класса"; break;
+ case ClassDef::Struct: result+="структуры"; break;
+ case ClassDef::Union: result+="объединения"; break;
+ case ClassDef::Interface: result+="интерфейса"; break;
+ case ClassDef::Exception: result+="исключения"; break;
}
- result+=clName;
- return result;
- }
- QCString trFileReference(const char* fileName)
- {
- QCString result;
- result+=(QCString)"Описание файла "+fileName;
- return result;
- }
- QCString trNamespaceReference(const char* namespaceName)
- {
- QCString result=(QCString)"Описание пространства имен "+namespaceName;
- return result;
- }
- QCString trPublicMembers()
- {
- return "Открытые члены";
- }
- QCString trPublicSlots()
- {
- return "Открытые слоты";
- }
- QCString trSignals()
- {
- return "Сигналы";
- }
- QCString trStaticPublicMembers()
- {
- return "Статические открытые члены";
- }
- QCString trProtectedMembers()
- {
- return "Защищенные члены";
- }
- QCString trProtectedSlots()
- {
- return "Защищенные слоты";
- }
- QCString trStaticProtectedSlots()
- {
- return "Статические защищенные слоты";
- }
- QCString trPrivateMembers()
- {
- return "Закрытые члены";
- }
- QCString trPrivateSlots()
- {
- return "Закрытые слоты";
- }
- QCString trStaticPrivateMembers()
- {
- return "Закрытые статические члены";
- }
- QCString trWriteList(int numEntries)
- {
- QCString result;
- int i;
- for(i=0;i<numEntries;i++)
+ }
+ else
+ {
+ switch(compType)
{
- result+=generateMarker(i);
- if(i!=numEntries-1)
- {
- if(i<numEntries-2)
- result+=", ";
- else
- result+=" и ";
- }
+ case ClassDef::Class: result+="Класс"; break;
+ case ClassDef::Struct: result+="Структура"; break;
+ case ClassDef::Union: result+="Объединение"; break;
+ case ClassDef::Interface: result+="Интерфейс"; break;
+ case ClassDef::Exception: result+="Исключение"; break;
}
- return result;
- }
- QCString trInheritsList(int numEntries)
- {
- return "Унаследован от "+trWriteList(numEntries)+".";
- }
- QCString trInheritedByList(int numEntries)
- {
- return "Наследуется "+trWriteList(numEntries)+".";
+ }
+ result+=" ";
+ return decode(result)+clName;
}
- QCString trReimplementedFromList(int numEntries)
- {
- // Originally: "reimplemented from"
- // This translation assumes numEntries is always 1
- // which is true as of 1.2.5 and it's hard for me to
- // imagine a situation when it could be wrong.
- return "Переопределяет метод предка "+trWriteList(numEntries)+".";
- }
- QCString trReimplementedInList(int numEntries)
+ /*! used as the title of the HTML page of a file */
+ virtual QCString trFileReference(const char *fileName)
{
- return "Переопределяется в "+trWriteList(numEntries)+".";
+ return decode("Файл ")+fileName;
}
- QCString trNamespaceMembers()
- {
- return "Члены пространств имен";
- }
- QCString trNamespaceMemberDescription(bool extractAll)
- {
- QCString result="Список всех ";
- if(!extractAll) result+="документированных ";
- result+="членов пространств имен со ссылками на ";
- if(extractAll)
- result+="документацию по каждому члену:";
- else
- result+="пространства имен, к которым они принадлежат:";
- return result;
- }
- QCString trNamespaceIndex()
- {
- return "Индекс пространств имен";
- }
- QCString trNamespaceDocumentation()
- {
- return "Документация пространств имен";
+
+ /*! used as the title of the HTML page of a namespace */
+ virtual QCString trNamespaceReference(const char *namespaceName)
+ {
+ return decode("Пространство имен ")+namespaceName;
+ }
+
+ virtual QCString trPublicMembers()
+ { return decode("Публичные члены"); }
+ virtual QCString trPublicSlots()
+ { return decode("Публичные слоты"); }
+ virtual QCString trSignals()
+ { return decode("Сигналы"); }
+ virtual QCString trStaticPublicMembers()
+ { return decode("Публичные статические члены"); }
+ virtual QCString trProtectedMembers()
+ { return decode("Защищенные члены"); }
+ virtual QCString trProtectedSlots()
+ { return decode("Защищенные слоты"); }
+ virtual QCString trStaticProtectedMembers()
+ { return decode("Защищенные статические члены"); }
+ virtual QCString trPrivateMembers()
+ { return decode("Приватные члены"); }
+ virtual QCString trPrivateSlots()
+ { return decode("Приватные слоты"); }
+ virtual QCString trStaticPrivateMembers()
+ { return decode("Приватные статические члены"); }
+
+ /*! 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<numEntries;i++)
+ {
+ // use generateMarker to generate placeholders for the class links!
+ result+=generateMarker(i); // generate marker for entry i in the list
+ // (order is left to right)
+
+ if (i!=numEntries-1) // not the last entry, so we need a separator
+ {
+ if (i<numEntries-2) // not the fore last entry
+ result+=", ";
+ else // the fore last entry
+ result+=decode( " и " );
+ }
+ }
+ return result;
}
- QCString trNamespaces()
+
+ /*! used in class documentation to produce a list of base classes,
+ * if class diagrams are disabled.
+ */
+ virtual QCString trInheritsList(int numEntries)
{
- return "Пространства имен";
+ return decode("Базовые классы:")+trWriteList(numEntries)+".";
}
- QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single)
+
+ /*! used in class documentation to produce a list of super classes,
+ * if class diagrams are disabled.
+ */
+ virtual QCString trInheritedByList(int numEntries)
{
- QCString result=(QCString)"Документация для это";
- switch(compType)
- {
- case ClassDef::Class: result+="го класса"; break;
- case ClassDef::Struct: result+="й структуры"; break;
- case ClassDef::Union: result+="го объединения"; break;
- case ClassDef::Interface: result+="го интерфейса"; break;
- case ClassDef::Exception: result+="го исключения"; break;
- }
- result+=" была создана из файл";
- if(single)
- result+="а:";
- else
- result+="ов:";
- return result;
+ return decode("Производные классы:")+trWriteList(numEntries)+".";
}
- QCString trAlphabeticalList()
+
+ /*! used in member documentation blocks to produce a list of
+ * members that are hidden by this one.
+ */
+ virtual QCString trReimplementedFromList(int numEntries)
{
- return "Алфавитный список";
+ return decode("Переопределяет метод предка ")+trWriteList(numEntries)+".";
}
- QCString trReturnValues()
+
+ /*! used in member documentation blocks to produce a list of
+ * all member that overwrite the implementation of this member.
+ */
+ virtual QCString trReimplementedInList(int numEntries)
{
- return "Возвращаемые значения";
+ return decode("Переопределяется в ")+trWriteList(numEntries)+".";
}
- QCString trMainPage()
+
+ /*! This is put above each page as a link to all members of namespaces. */
+ virtual QCString trNamespaceMembers()
+ { return decode("Члены пространства имен"); }
+
+ /*! This is an introduction to the page with all namespace members */
+ virtual QCString trNamespaceMemberDescription(bool extractAll)
{
- return "Главная страница";
+ QCString result="Полный список ";
+ if (!extractAll) result+="документированных ";
+ result+="членов простанства имен.";
+ return decode(result);
}
- QCString trPageAbbreviation()
- {
- return "стр.";
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * index of all namespaces.
+ */
+ virtual QCString trNamespaceIndex()
+ { return decode("Алфавитный указатель пространства имен"); }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all namespaces.
+ */
+ virtual QCString trNamespaceDocumentation()
+ { return decode("Пространства имен"); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990522
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is used in the documentation before the list of all
+ * namespaces in a file.
+ */
+ virtual QCString trNamespaces()
+ { return decode( "Пространства имен" ); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990728
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is put at the bottom of a class documentation page and is
+ * followed by a list of files that were used to generate the page.
+ */
+ virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
+ bool single)
+ { // here s is one of " Class", " Struct" or " Union"
+ // single is true implies a single file
+ QCString result=(QCString)"Объявления и описания членов ";
+ switch(compType)
+ {
+ case ClassDef::Class: result+="класс";
+ if (single) result+='а'; else result+="ов";
+ break;
+ case ClassDef::Struct: result+="структур";
+ if (single) result+='ы';
+ break;
+ case ClassDef::Union: result+="объединени";
+ if (single) result+='я'; else result+='й';
+ break;
+ case ClassDef::Interface: result+="интерфейс";
+ if (single) result+='а'; else result+="ов";
+ break;
+ case ClassDef::Exception: result+="исключени";
+ if (single) result+='я'; else result+='й';
+ break;
+ }
+ result+=" находятся в файл";
+ if (single) result+="е:"; else result+="ах:";
+ return decode(result);
}
- QCString trSources()
+
+ /*! This is in the (quick) index as a link to the alphabetical compound
+ * list.
+ */
+ virtual QCString trAlphabeticalList()
+ { return decode("Алфавитный указатель"); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990901
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is used as the heading text for the retval command. */
+ virtual QCString trReturnValues()
+ { return decode("Возвращаемые значения"); }
+
+ /*! This is in the (quick) index as a link to the main page (index.html)
+ */
+ virtual QCString trMainPage()
+ { return decode("Титульная страница"); }
+
+ /*! 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("стр."); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-991106
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trSources()
{
- return "Исходные тексты";
+ return decode("Исходные тексты.");
}
- QCString trDefinedAtLineInSourceFile()
+ virtual QCString trDefinedAtLineInSourceFile()
{
- return "Определяется в строке @0 файла @1.";
+ return decode("См. определение в файле @1 строка @0");
}
- QCString trDefinedInSourceFile()
+ virtual QCString trDefinedInSourceFile()
{
- return "Определяется в файле @0.";
+ return decode("См. определение в файле @0");
}
- QCString trDeprecated()
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-991205
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trDeprecated()
{
- return "Устарело";
+ return decode("Уст.");
}
- QCString trCollaborationDiagram(const char* clName)
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.0.0
+//////////////////////////////////////////////////////////////////////////
+
+ /*! this text is put before a collaboration diagram */
+ virtual QCString trCollaborationDiagram(const char *clName)
{
- // originally "collaboration diagram"
- return (QCString)"Диаграмма использования для "+clName+":";
+ return (QCString)decode("Граф связей класса ")+clName+":";
}
- QCString trInclDepGraph(const char* fName)
+ /*! this text is put before an include dependency graph */
+ virtual QCString trInclDepGraph(const char *fName)
{
- return (QCString)"Граф зависимостей по включениям "
- "файлов для "+fName+":";
+ return decode("Граф включаемых заголовочных файлов для ")+fName+":";
}
- QCString trConstructorDocumentation()
+ /*! header that is put before the list of constructor/destructors. */
+ virtual QCString trConstructorDocumentation()
{
- return "Документация по конструктору и деструктору";
+ return decode("Конструктор(ы)");
}
- QCString trGotoSourceCode()
+ /*! Used in the file documentation to point to the corresponding sources. */
+ virtual QCString trGotoSourceCode()
{
- return "Перейти к исходному тексту этого файла.";
+ return decode("См. исходные тексты.");
}
- QCString trGotoDocumentation()
+ /*! Used in the file sources to point to the corresponding documentation. */
+ virtual QCString trGotoDocumentation()
{
- return "Перейти к документации на этот файл.";
+ return decode("См. документацию.");
}
- QCString trPrecondition()
+ /*! Text for the \pre command */
+ virtual QCString trPrecondition()
{
- return "Предусловие";
+ return decode("Предусловие");
}
- QCString trPostcondition()
+ /*! Text for the \post command */
+ virtual QCString trPostcondition()
{
- return "Постусловие";
+ return decode("Постусловие");
}
- QCString trInvariant()
+ /*! Text for the \invariant command */
+ virtual QCString trInvariant()
{
- return "Инвариант";
+ return decode("Инвариант");
}
- QCString trInitialValue()
+ /*! Text shown before a multi-line variable/enum initialization */
+ virtual QCString trInitialValue()
{
- return "Начальное значение:";
+ return decode("Инициализатор");
}
- QCString trCode()
+ /*! Text used the source code in the file index */
+ virtual QCString trCode()
{
- return "исходный текст";
+ return decode("Исходные тексты");
}
- QCString trGraphicalHierarchy()
+ virtual QCString trGraphicalHierarchy()
{
- return "Графическая иерархия класса(ов)";
+ return decode("Иерархия классов. Графический вид.");
}
- QCString trGotoGraphicalHierarchy()
+ virtual QCString trGotoGraphicalHierarchy()
{
- return "Перейти к графической иерархии";
+ return decode("см. графический вид.");
}
- QCString trGotoTextualHierarchy()
+ virtual QCString trGotoTextualHierarchy()
{
- return "Перейти к текстовой иерархии";
+ return decode("см. текстовый вид.");
}
- QCString trPageIndex()
+ virtual QCString trPageIndex()
{
- return "Индекс страниц";
+ return decode("Алфавитный указатель тематических описаний");
}
- QCString trNote()
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.0
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trNote()
{
- return "Примечание";
+ return decode("Заметки");
}
- QCString trPublicTypes()
+ virtual QCString trPublicTypes()
{
- return "Открытые типы";
+ return decode("Публичные типы");
}
- QCString trPublicAttribs()
+ virtual QCString trPublicAttribs()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Поля данных";
+ return decode( "Поля данных" );
}
else
{
- return "Открытые атрибуты";
+ return decode( "Открытые атрибуты" );
}
}
- QCString trStaticPublicAttribs()
+ virtual QCString trStaticPublicAttribs()
{
- return "Открытые статические атрибуты";
+ return decode("Статические публичные данные");
}
- QCString trProtectedTypes()
+ virtual QCString trProtectedTypes()
{
- return "Защищенные типы";
+ return decode("Защищенные типы");
}
- QCString trProtectedAttribs()
+ virtual QCString trProtectedAttribs()
{
- return "Защищенные атрибуты";
+ return decode("Защищенные данные");
}
- QCString trStaticProtectedAttribs()
+ virtual QCString trStaticProtectedAttribs()
{
- return "Статические защищенные атрибуты";
+ return decode("Статические защищенные данные");
}
- QCString trPrivateTypes()
+ virtual QCString trPrivateTypes()
{
- return "Закрытые типы";
+ return decode("Приватные типы");
}
- QCString trPrivateAttribs()
+ virtual QCString trPrivateAttribs()
{
- return "Закрытые атрибуты";
+ return decode("Приватные данные");
}
- QCString trStaticPrivateAttribs()
+ virtual QCString trStaticPrivateAttribs()
{
- return "Закрытые статические атрибуты";
+ return decode("Приватные статические данные");
}
- QCString trTodo()
+
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.3
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a todo item */
+ virtual QCString trTodo()
+ /*??*/
{
- return "Необходимо сделать:";
+ return decode("Необходимо сделать");
}
- QCString trTodoList()
+ /*! Used as the header of the todo list */
+ virtual QCString trTodoList()
+ /*??*/
{
- return "Список дел";
+ return decode("Список задач");
}
- QCString trReferencedBy()
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.4
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trReferencedBy()
{
- return "Упоминается в";
+ return decode("Используется в");
}
- QCString trRemarks()
+ virtual QCString trRemarks()
{
- return "Примечания";
+ return decode("Прим.");
}
- QCString trAttention()
+ virtual QCString trAttention()
{
- return "Внимание";
+ return decode("Внимание");
}
- QCString trInclByDepGraph()
+ virtual QCString trInclByDepGraph()
{
- return "Этот граф показывает, какие файлы прямо или "
- "косвенно включают данный файл:";
+ return decode("Граф файлов, в которые включеется этот файл:");
}
- QCString trSince()
+ virtual QCString trSince()
+ /*??*/
{
- return "Начиная с";
+ return decode("Начиная с");
}
- QCString trLegendTitle()
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.5
+//////////////////////////////////////////////////////////////////////////
+
+ /*! title of the graph legend page */
+ virtual QCString trLegendTitle()
{
- return "Условные обозначения";
+ return decode("Легенда");
}
- QCString trLegendDocs()
+ /*! page explaining how the dot graph's should be interpreted */
+ virtual QCString trLegendDocs()
{
- return
- //"Условные обозначения на графах, генерируемых программой "
- //"doxygen.<p>\n"
+ return decode(
+ "Обозначения, используемые в графах.<p>\n"
"Рассмотрим следующий пример:\n"
"\\code\n"
"/*! Невидимый класс из-за усечения */\n"
"class Invisible { };\n\n"
"/*! Усеченный класс, отношение наследования скрыто */\n"
"class Truncated : public Invisible { };\n\n"
- "/* Класс, не документированный комментариями doxygen */\n"
+ "/* Недокументированный класс */\n"
"class Undocumented { };\n\n"
- "/*! Класс, использующий открытое наследование */\n"
+ "/*! Публичное наследование */\n"
"class PublicBase : public Truncated { };\n\n"
- "/*! Класс, использующий защищенное наследование */\n"
+ "/*! Защищенное наследование */\n"
"class ProtectedBase { };\n\n"
- "/*! Класс, использующий закрытое наследование */\n"
+ "/*! Приватное наследование */\n"
"class PrivateBase { };\n\n"
- "/*! Класс, используемый в классе Inherited */\n"
+ "/*! Класс, используемый классом Inherited */\n"
"class Used { };\n\n"
- "/*! Суперкласс, унаследованный от нескольких классов */\n"
+ "/*! Класс, порожденный от других классов */\n"
"class Inherited : public PublicBase,\n"
" protected ProtectedBase,\n"
" private PrivateBase,\n"
@@ -831,92 +1188,140 @@ class TranslatorRussian : public Translator
" Used *m_usedClass;\n"
"};\n"
"\\endcode\n"
- "Если тэг \\c MAX_DOT_GRAPH_HEIGHT в конфигурационном файле "
- "имеет значение 200, получим следующий граф:"
+ "Если \\c MAX_DOT_GRAPH_HEIGHT в конфигурационном файле "
+ "установлен в 200, получится следующий граф:"
"<p><center><img src=\"graph_legend.gif\"></center>\n"
"<p>\n"
- "Прямоугольники в этом графе имеют следующие значения:\n"
+ "Прямоугольники в этом графе имеют следующее значение:\n"
"<ul>\n"
- "<li>Заполненный черный прямоугольник представляет структуру или класс, "
- "для которого создан данный граф.\n"
+ "<li>Заполненный чернный прямоугольник представляет структуру или класс, "
+ "для которого создан граф.\n"
"<li>Прямоугольник с черной границей обозначает документированную структуру или класс.\n"
"<li>Прямоугольник с серой границей обозначает недокументированную структуру или класс.\n"
"<li>Прямоугольник с красной границей обозначает документированную структуру или класс, для которого\n"
- " не все отношения наследования/содержания показаны. Граф усекается, "
- "если он не поместился в указанные границы."
+ " не все отношения наследования/содержания показаны. Граф усечен, "
+ "если он не поместился в указанных границах."
"</ul>\n"
- "Стрелки имеют следующие значения:\n"
+ "Стрелки имеют следующее значение:\n"
"<ul>\n"
- "<li>Темносиняя стрелка используется для изображения отношения открытого наследования "
+ "<li>Темносиняя стрелка используется для изображения отношения публичного наследования "
"между двумя классами.\n"
"<li>Темнозеленая стрелка используется при защищенном наследовании.\n"
- "<li>Темнокрасная стрелка используется при закрытом наследовании.\n"
- "<li>Фиолетовая пунктирная стрелка используется, если класс содержится "
- "в другом классе или используется другим классом. "
- "Стрелка маркируется именем переменной, "
+ "<li>Темнокрасная стрелка используется при приватном наследовании.\n"
+ "<li>Фиолетовая стрелка используется, если класс содержится в"
+ "другом класе или используется другим классом."
+ "Со стрелкой указывается переменная, "
"через которую доступен указываемый класс или структура. \n"
- "</ul>\n";
+ "</ul>\n");
}
- QCString trLegend()
+ /*! text for the link to the legend page */
+ virtual QCString trLegend()
{
- return "обозначения";
+ return decode("см. легенду");
}
- QCString trTest()
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.0
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a test item */
+ virtual QCString trTest()
{
- return "Тест";
+ return decode("Тест");
}
- QCString trTestList()
+ /*! Used as the header of the test list */
+ virtual QCString trTestList()
{
- return "Список тестов";
+ return decode("Список тестов");
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.1
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods()
{
- return "Методы DCOP";
+ return decode("DCOP Методы");
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.2
+//////////////////////////////////////////////////////////////////////////
+ /*! Used as a section header for IDL properties */
virtual QCString trProperties()
{
- return "Свойства";
+ return decode("Свойства");
}
+ /*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation()
{
- return "Документация свойств";
+ return decode("Полный список свойств");
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.4
+//////////////////////////////////////////////////////////////////////////
+ /*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
- return "Интерфейсы";
+ return decode("Интерфейсы");
}
+ /*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses()
{
- return "Классы";
+ return decode("Классы");
}
+ /*! Used as the title of a Java package */
virtual QCString trPackage(const char *name)
{
- return (QCString)"Пакет "+name;
+ return decode("Пакет ")+name;
}
+ /*! Title of the package index page */
virtual QCString trPackageList()
{
- return "Список пакетов";
+ return decode("Полный список пакетов ");
}
+ /*! The description of the package index page */
virtual QCString trPackageListDescription()
{
- return "Список пакетов с кратким описанием (если есть):";
+ return decode("Полный список документированных пакетов.");
}
+ /*! The link name in the Quick links header for each page */
virtual QCString trPackages()
{
- return "Пакеты";
+ return decode("Пакеты");
}
+ /*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
- return "Документация пакетов";
+ return decode("Пакеты");
}
+ /*! Text shown before a multi-line define */
virtual QCString trDefineValue()
{
- return "Значение:";
+ return decode("Макроопределение:");
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.?
+//////////////////////////////////////////////////////////////////////////
+ /*! Used as ansicpg for RTF file */
+ virtual QCString trRTFansicp()
+ {
+ return "1251";
+ }
+ /*! Used as ansicpg for RTF fcharset */
+ virtual QCString trRTFCharSet()
+ {
+ return "204";
+ }
+ /*! Used as header RTF general index */
+ virtual QCString trRTFGeneralIndex()
+ {
+ return decode("Алфавитный указатель");
}
};
diff --git a/src/util.cpp b/src/util.cpp
index bcbf077..0add74d 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -179,21 +179,6 @@ bool isId(char c)
return c=='_' || isalnum(c);
}
-// strip annonymous left hand side part of the scope
-//QCString stripAnnonymousScope(const QCString &s)
-//{
-// QCString result=s;
-// int i=0;
-// while (!result.isEmpty() && result.at(0)=='@' && (i=result.find("::"))!=-1)
-// {
-// result=result.right(result.length()-i-2);
-// }
-// //if (result.at(0)=='@')
-// //{
-// // result.resize(0);
-// //}
-// return result;
-//}
/*!
Removes all anoymous scopes from string s
@@ -256,7 +241,7 @@ QCString replaceAnonymousScopes(const QCString &s)
// strip annonymous left hand side part of the scope
-QCString stripAnnonymousNamespaceScope(const QCString &s)
+QCString stripAnonymousNamespaceScope(const QCString &s)
{
int oi=0,i=0,p=0;
if (s.isEmpty()) return s;
@@ -264,12 +249,12 @@ QCString stripAnnonymousNamespaceScope(const QCString &s)
Doxygen::namespaceDict[s.left(i)]!=0) { oi=i; p=i+2; }
if (oi==0)
{
- //printf("stripAnnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.data());
+ //printf("stripAnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.data());
return s;
}
else
{
- //printf("stripAnnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.right(s.length()-oi-2).data());
+ //printf("stripAnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.right(s.length()-oi-2).data());
return s.right(s.length()-oi-2);
}
}
@@ -2537,39 +2522,6 @@ bool hasVisibleRoot(BaseClassList *bcl)
//----------------------------------------------------------------------
-#if 0
-QCString convertFileName(const QCString &s)
-{
- if (Config_getBool("SHORT_NAMES"))
- {
- printf("convertFileName(%s)\n",s.data());
- return convertNameToFile(s,FALSE);
- }
- QCString result;
- int i,l=s.length();
- for (i=0;i<l;i++)
- {
- if (s.at(i)!='/' && s.at(i)!='.')
- {
- if (Config_getBool("CASE_SENSE_NAMES"))
- {
- result+=s[i];
- }
- else
- {
- result+=tolower(s[i]);
- }
- }
- else
- {
- result+="_";
- }
- }
- return result;
-}
-#endif
-
-
/*! This function determines the file name on disk of an item
* given its name, which could be a class name with templete
* arguments, so special characters need to be escaped.
@@ -2754,3 +2706,40 @@ const char *getOverloadDocs()
"function only in what argument(s) it accepts.";
}
+void addMembersToMemberGroup(MemberList *ml,MemberGroupDict *memberGroupDict,
+ MemberGroupList *memberGroupList)
+{
+ MemberListIterator mli(*ml);
+ MemberDef *md;
+ uint index;
+ for (index=0;(md=mli.current());)
+ {
+ int groupId=md->getMemberGroupId();
+ if (groupId!=-1)
+ {
+ QCString *pGrpHeader = Doxygen::memberHeaderDict[groupId];
+ QCString *pDocs = Doxygen::memberDocDict[groupId];
+ if (pGrpHeader)
+ {
+ MemberGroup *mg = memberGroupDict->find(groupId);
+ if (mg==0)
+ {
+ mg = new MemberGroup(groupId,*pGrpHeader,pDocs ? pDocs->data() : 0);
+ memberGroupDict->insert(groupId,mg);
+ memberGroupList->append(mg);
+ }
+ md = ml->take(index);
+ mg->insertMember(md);
+ md->setMemberGroup(mg);
+ }
+ else
+ {
+ ++mli;++index;
+ }
+ }
+ else
+ {
+ ++mli;++index;
+ }
+ }
+}
diff --git a/src/util.h b/src/util.h
index adf79de..65f5819 100644
--- a/src/util.h
+++ b/src/util.h
@@ -38,6 +38,8 @@ class ClassList;
class BaseClassList;
class GroupDef;
class NamespaceList;
+class MemberGroupList;
+class MemberGroupDict;
//--------------------------------------------------------------------
@@ -123,8 +125,7 @@ QCString generateMarker(int id);
void writeExample(OutputList &ol,ExampleList *el);
//void setFileNameForSections(QList<QCString> *anchorList,const char *fileName,
// PageInfo *pi=0);
-QCString stripAnnonymousScope(const QCString &s);
-QCString stripAnnonymousNamespaceScope(const QCString &s);
+QCString stripAnonymousNamespaceScope(const QCString &s);
QCString stripFromPath(const QCString &path);
bool rightScopeMatch(const QCString &scope, const QCString &name);
bool leftScopeMatch(const QCString &scope, const QCString &name);
@@ -144,6 +145,8 @@ int iSystem(const char *command,const char *args,bool isBatchFile=FALSE);
QCString convertToHtml(const char *s);
QCString convertToXML(const char *s);
const char * getOverloadDocs();
+void addMembersToMemberGroup(MemberList *ml,MemberGroupDict *memberGroupDict,
+ MemberGroupList *memberGroupList);
#endif