summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2008-07-27 14:59:10 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2008-07-27 14:59:10 (GMT)
commit6bf92c5d7efffb6a04c3ccbfc144ad944200fed2 (patch)
tree201e94696e0c1cb55ffa8fd45c97dfa1ac586f0f
parent956cf8647cb54a930d1d9c65fb01cc4d9498f2bd (diff)
downloadDoxygen-6bf92c5d7efffb6a04c3ccbfc144ad944200fed2.zip
Doxygen-6bf92c5d7efffb6a04c3ccbfc144ad944200fed2.tar.gz
Doxygen-6bf92c5d7efffb6a04c3ccbfc144ad944200fed2.tar.bz2
Release-1.5.6-20080727
-rw-r--r--Doxyfile6
-rw-r--r--INSTALL4
-rw-r--r--README4
-rwxr-xr-xconfigure2
-rw-r--r--doc/commands.doc70
-rw-r--r--doc/config.doc45
-rw-r--r--doc/docblocks.doc16
-rw-r--r--doc/language.doc8
-rw-r--r--doc/translator_report.txt82
-rw-r--r--examples/Makefile.in8
-rw-r--r--examples/Makefile.win.in8
-rw-r--r--examples/manual.c87
-rw-r--r--examples/manual.cfg15
-rw-r--r--src/classdef.cpp87
-rw-r--r--src/classdef.h2
-rw-r--r--src/commentscan.l61
-rw-r--r--src/config.l43
-rw-r--r--src/doxygen.cpp94
-rw-r--r--src/doxygen.css617
-rw-r--r--src/doxygen_css.h635
-rw-r--r--src/entry.cpp6
-rw-r--r--src/entry.h4
-rw-r--r--src/groupdef.cpp10
-rwxr-xr-xsrc/increasebuffer.pl1
-rw-r--r--src/index.cpp6
-rw-r--r--src/language.cpp2
-rw-r--r--src/marshal.cpp4
-rw-r--r--src/memberdef.cpp36
-rw-r--r--src/memberdef.h4
-rw-r--r--src/pagedef.cpp20
-rw-r--r--src/pre.l2
-rw-r--r--src/scanner.l5
-rw-r--r--src/translator_br.h6
-rw-r--r--src/translator_ca.h523
-rw-r--r--src/util.cpp3
-rw-r--r--src/vhdlcode.l2
-rw-r--r--src/vhdldocgen.cpp29
-rw-r--r--src/vhdldocgen.h1
-rw-r--r--src/vhdlscanner.l155
39 files changed, 1614 insertions, 1099 deletions
diff --git a/Doxyfile b/Doxyfile
index 0de2079..c9143e3 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -7,7 +7,7 @@ DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = Doxygen
PROJECT_NUMBER =
OUTPUT_DIRECTORY = doxygen_docs
-CREATE_SUBDIRS = YES
+CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
@@ -144,7 +144,7 @@ HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
-GENERATE_HTMLHELP = NO
+GENERATE_HTMLHELP = YES
GENERATE_DOCSET = YES
DOCSET_FEEDNAME = "Doxygen docs"
DOCSET_BUNDLE_ID = org.doxygen.Doxygen
@@ -161,7 +161,7 @@ TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
-GENERATE_LATEX = YES
+GENERATE_LATEX = NO
LATEX_OUTPUT =
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
diff --git a/INSTALL b/INSTALL
index a1e564d..abe6f0a 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,7 @@
-DOXYGEN Version 1.5.6-20080626
+DOXYGEN Version 1.5.6-20080727
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
-Dimitri van Heesch (26 June 2008)
+Dimitri van Heesch (27 July 2008)
diff --git a/README b/README
index 60f0b02..b2d8671 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-DOXYGEN Version 1.5.6_20080626
+DOXYGEN Version 1.5.6_20080727
Please read INSTALL for compilation instructions.
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
-Dimitri van Heesch (dimitri@stack.nl) (26 June 2008)
+Dimitri van Heesch (dimitri@stack.nl) (27 July 2008)
diff --git a/configure b/configure
index 0b1e2fa..efc8c8f 100755
--- a/configure
+++ b/configure
@@ -20,7 +20,7 @@ doxygen_version_minor=5
doxygen_version_revision=6
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
-doxygen_version_mmn=20080626
+doxygen_version_mmn=20080727
bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
diff --git a/doc/commands.doc b/doc/commands.doc
index f61022a..7450d91 100644
--- a/doc/commands.doc
+++ b/doc/commands.doc
@@ -83,6 +83,7 @@ documentation:
\refitem cmdenum \\enum
\refitem cmdexample \\example
\refitem cmdexception \\exception
+\refitem cmdextends \\extends
\refitem cmdfdollar \\f\$
\refitem cmdfbropen \\f[
\refitem cmdfbrclose \\f]
@@ -97,6 +98,7 @@ documentation:
\refitem cmdif \\if
\refitem cmdifnot \\ifnot
\refitem cmdimage \\image
+\refitem cmdimplements \\implements
\refitem cmdinclude \\include
\refitem cmdincludelineno \\includelineno
\refitem cmdingroup \\ingroup
@@ -109,6 +111,7 @@ documentation:
\refitem cmdlink \\link
\refitem cmdmainpage \\mainpage
\refitem cmdmanonly \\manonly
+\refitem cmdmemberof \\memberof
\refitem cmdmsc \\msc
\refitem cmdn \\n
\refitem cmdname \\name
@@ -372,6 +375,23 @@ doxygen. Unrecognized commands are treated as normal text.
\sa section \ref cmdinclude "\\include".
<hr>
+\section cmdextends \\extends <name>
+
+ \addindex \\extends
+ This command can be used to manually indicate an inheritance relation,
+ when the programming language does not support this concept natively
+ (e.g. C).
+
+ The file \c manual.c in the example directory shows how to use this command.
+ \htmlonly
+ Click <a href="$(DOXYGEN_DOCDIR)/examples/manual/html/index.html">here</a>
+ for the corresponding HTML documentation that is generated by doxygen.
+ \endhtmlonly
+
+ \sa section \ref cmdimplements "\\implements" and section
+ \ref cmdmemberof "\\memberof"
+
+<hr>
\section cmdfile \\file [<name>]
\addindex \\file
@@ -456,6 +476,23 @@ doxygen. Unrecognized commands are treated as normal text.
\sa section \ref cmdshowinitializer "\\showinitializer".
<hr>
+\section cmdimplements \\implements <name>
+
+ \addindex \\implements
+ This command can be used to manually indicate an inheritance relation,
+ when the programming language does not support this concept natively
+ (e.g. C).
+
+ The file \c manual.c in the example directory shows how to use this command.
+ \htmlonly
+ Click <a href="$(DOXYGEN_DOCDIR)/examples/manual/html/index.html">here</a>
+ for the corresponding HTML documentation that is generated by doxygen.
+ \endhtmlonly
+
+ \sa section \ref cmdextends "\\extends" and section
+ \ref cmdmemberof "\\memberof"
+
+<hr>
\section cmdingroup \\ingroup (<groupname> [<groupname> <groupname>])
\addindex \\ingroup
@@ -530,15 +567,36 @@ doxygen. Unrecognized commands are treated as normal text.
section \ref cmdpage "\\page".
<hr>
+\section cmdmemberof \\memberof <name>
+
+ \addindex \\memberof
+ This command make a function a member of a class in a similar way
+ as \ref cmdrelates "\\relates" does, only with this command the function
+ is represented as a real member of the class.
+ This can be useful when the programming language does not support
+ the concept of member functions natively (e.g. C).
+
+ The file \c manual.c in the example directory shows how to use this command.
+ \htmlonly
+ Click <a href="$(DOXYGEN_DOCDIR)/examples/manual/html/index.html">here</a>
+ for the corresponding HTML documentation that is generated by doxygen.
+ \endhtmlonly
+
+ \sa section \ref cmdextends "\\extends" and section
+ \ref cmdmemberof "\\memberof"
+
+<hr>
\section cmdname \\name (header)
-This command turns a comment block into a header
-definition of a member group. The
-comment block should be followed by a
-<code>//\@{ ... //\@}</code> block containing the
-members of the group.
+ \addindex \\name
+
+ This command turns a comment block into a header
+ definition of a member group. The
+ comment block should be followed by a
+ <code>//\@{ ... //\@}</code> block containing the
+ members of the group.
-See section \ref memgroup for an example.
+ See section \ref memgroup for an example.
<hr>
\section cmdnamespace \\namespace <name>
diff --git a/doc/config.doc b/doc/config.doc
index 1f3905a..31ff5a4 100644
--- a/doc/config.doc
+++ b/doc/config.doc
@@ -90,6 +90,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_dot_transparent DOT_TRANSPARENT
\refitem cfg_dotfile_dirs DOTFILE_DIRS
\refitem cfg_doxyfile_encoding DOXYFILE_ENCODING
+\refitem cfg_doxygen2qthelp_loc DOXYGEN2QTHELP_LOC
\refitem cfg_enable_preprocessing ENABLE_PREPROCESSING
\refitem cfg_enum_values_per_line ENUM_VALUES_PER_LINE
\refitem cfg_enabled_sections ENABLED_SECTIONS
@@ -192,6 +193,8 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_project_name PROJECT_NAME
\refitem cfg_project_number PROJECT_NUMBER
\refitem cfg_qt_autobrief QT_AUTOBRIEF
+\refitem cfg_qthelp_config QTHELP_CONFIG
+\refitem cfg_qthelp_file QTHELP_FILE
\refitem cfg_quiet QUIET
\refitem cfg_recursive RECURSIVE
\refitem cfg_referenced_by_relation REFERENCED_BY_RELATION
@@ -222,6 +225,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_strip_from_inc_path STRIP_FROM_INC_PATH
\refitem cfg_strip_from_path STRIP_FROM_PATH
\refitem cfg_subgrouping SUBGROUPING
+\refitem cfg_symbol_cache_size SYMBOL_CACHE_SIZE
\refitem cfg_tab_size TAB_SIZE
\refitem cfg_tagfiles TAGFILES
\refitem cfg_template_relations TEMPLATE_RELATIONS
@@ -569,6 +573,23 @@ sources. Doxygen will then generate output that is tailored for VHDL.
be useful for C code in case the coding convention dictates that all compound
types are typedef'ed and only the typedef is referenced, never the tag name.
+\anchor cfg_symbol_cache_size
+<dt>\c SYMBOL_CACHE_SIZE <dd>
+ \addindex SYMBOL_CACHE_SIZE
+ The \c SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+ determine which symbols to keep in memory and which to flush to disk.
+ When the cache is full, less often used symbols will be written to disk.
+ For small to medium size projects (<1000 input files) the default value is
+ probably good enough. For larger projects a too small cache size can cause
+ doxygen to be busy swapping symbols to and from disk most of the time
+ causing a significant performance penality.
+ If the system has enough physical memory increasing the cache will improve the
+ performance by keeping more symbols in memory. Note that the value works on
+ a logarithmic scale so increasing the size by one will rougly double the
+ memory usage. The cache size is given by this formula:
+ \f$2^{(16+\mbox{SYMBOL\_CACHE\_SIZE})}\f$. The valid range is 0..9, the default is 0,
+ corresponding to a cache size of \f$2^{16} = 65536\f$ symbols.
+
</dl>
\section config_build Build related options
@@ -1302,9 +1323,31 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
\addindex HHC_LOCATION
If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c HHC_LOCATION tag can
be used to specify the location (absolute path including file name) of
- the HTML help compiler (hhc.exe). If non empty doxygen will try to run
+ the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
the HTML help compiler on the generated index.hhp.
+\anchor cfg_qthelp_file
+<dt>\c QTHELP_FILE <dd>
+ \addindex QTHELP_FILE
+ If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c QTHELP_FILE tag can
+ be used to specify the file name of the resulting .(qch|qhp) file.
+ You can add a path in front of the file if the result should not be
+ written to the html output directory.
+
+\anchor cfg_qthelp_config
+<dt>\c QTHELP_CONFIG <dd>
+ \addindex QTHELP_CONFIG
+ If \c DOXYGEN2QTHELP_LOC is set, \c QTHELP_CONFIG must specify the file name
+ of a config file to pass to doxygen2qthelp.
+
+\anchor cfg_doxygen2qthelp_loc
+<dt>\c DOXYGEN2QTHELP_LOC <dd>
+ \addindex DOXYGEN2QTHELP_LOC
+ If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c DOXYGEN2QTHELP_LOC tag
+ can be used to specify the location (absolute path including file name) of
+ the doxygen2qthelp tool. If non-empty doxygen will try to run doxygen2qthelp
+ on the generated index.hhp.
+
\anchor cfg_generate_chi
<dt>\c GENERATE_CHI <dd>
\addindex GENERATE_CHI
diff --git a/doc/docblocks.doc b/doc/docblocks.doc
index 5ebdf7b..0e9f38e 100644
--- a/doc/docblocks.doc
+++ b/doc/docblocks.doc
@@ -166,23 +166,19 @@ for this case.
</ol>
-As you can see doxygen is quite flexible. The following however is
-not legal
+As you can see doxygen is quite flexible. If you have multiple
+detailed descriptions, like in the following example:
\verbatim
//! Brief description, which is
//! really a detailed description since it spans multiple lines.
-/*! Oops, another detailed description!
+/*! Another detailed description!
*/
\endverbatim
-because doxygen only allows one brief and one detailed description.
-
-Furthermore, if there is one brief description before a declaration
-and one before a definition of a code item, only the one before
-the \e declaration will be used. If 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.
+They will be joined. Note that this is also the case if the descriptions
+are at different places in the code! In this case the order will depend
+on the order in which doxygen parses the code.
Here is an example of a documented piece of C++ code using the Qt style:
\include qtstyle.cpp
diff --git a/doc/language.doc b/doc/language.doc
index d991d65..bb6caeb 100644
--- a/doc/language.doc
+++ b/doc/language.doc
@@ -73,7 +73,7 @@ when the translator was updated.
<td>Catalan</td>
<td>Maximiliano Pin<br>Albert Mora</td>
<td>max.pin at bitroit dot com<br>amora at iua dot upf dot es</td>
- <td>1.5.4</td>
+ <td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Chinese</td>
@@ -235,7 +235,7 @@ when the translator was updated.
<td>Serbian</td>
<td>Dejan Milosavljevic</td>
<td>dmilos at email dot com</td>
- <td>1.4.1</td>
+ <td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>SerbianCyrilic</td>
@@ -294,7 +294,7 @@ when the translator was updated.
\hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & up-to-date \\
\hline
- Catalan & Maximiliano Pin & {\tt\tiny max.pin@bitroit.com} & 1.5.4 \\
+ Catalan & Maximiliano Pin & {\tt\tiny max.pin@bitroit.com} & up-to-date \\
~ & Albert Mora & {\tt\tiny amora@iua.upf.es} & ~ \\
\hline
Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & up-to-date \\
@@ -360,7 +360,7 @@ when the translator was updated.
\hline
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & up-to-date \\
\hline
- Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.4.1 \\
+ Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & up-to-date \\
\hline
SerbianCyrilic & Nedeljko Stefanovic & {\tt\tiny stenedjo@yahoo.com} & up-to-date \\
\hline
diff --git a/doc/translator_report.txt b/doc/translator_report.txt
index 8598404..4c6b192 100644
--- a/doc/translator_report.txt
+++ b/doc/translator_report.txt
@@ -9,7 +9,7 @@ German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean
Romanian, Russian, Serbian, SerbianCyrilic, Slovak, Slovene, Spanish,
Swedish, and Ukrainian.
-Of them, 16 translators are up-to-date, 19 translators are based on
+Of them, 18 translators are up-to-date, 17 translators are based on
some adapter class, and 2 are English based.
----------------------------------------------------------------------
@@ -19,6 +19,7 @@ and they implement all 216 of the required methods. Anyway, there
still may be some details listed even for them:
TranslatorBrazilian
+ TranslatorCatalan
TranslatorChinesetraditional
TranslatorChinese
TranslatorCroatian
@@ -33,6 +34,7 @@ still may be some details listed even for them:
TranslatorPersian
TranslatorRussian
TranslatorSerbianCyrilic
+ TranslatorSerbian
TranslatorSpanish -- Change the base class to Translator.
----------------------------------------------------------------------
@@ -45,7 +47,6 @@ must be implemented to become up-to-date:
TranslatorGreek 1.5.4 22 methods to implement
TranslatorFrench 1.5.4 22 methods to implement
TranslatorDanish 1.5.4 22 methods to implement
- TranslatorCatalan 1.5.4 22 methods to implement
TranslatorSwedish 1.4.6 24 methods to implement
TranslatorSlovene 1.4.6 24 methods to implement
TranslatorPolish 1.4.6 23 methods to implement
@@ -56,7 +57,6 @@ must be implemented to become up-to-date:
TranslatorArabic 1.4.6 23 methods to implement
TranslatorAfrikaans 1.4.6 24 methods to implement
TranslatorUkrainian 1.4.1 24 methods to implement
- TranslatorSerbian 1.4.1 24 methods to implement
TranslatorRomanian 1.4.1 24 methods to implement
TranslatorPortuguese 1.3.3 35 methods to implement
TranslatorSlovak 1.2.18 44 methods to implement
@@ -152,37 +152,6 @@ TranslatorArabic (TranslatorAdapter_1_4_6) 23 methods to implement
virtual QCString trNoDescriptionAvailable()
-TranslatorCatalan (TranslatorAdapter_1_5_4) 22 methods to implement
------------------
-
- Implements 194 of the required methods.
-
- Missing methods (should be implemented):
-
- virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
- virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
- virtual QCString trSubprograms()
- virtual QCString trModulesListDescription(bool extractAll)
- virtual QCString trModulesList()
- virtual QCString trTypeConstraints()
- virtual QCString trMemberFunctionDocumentationFortran()
- virtual QCString trCompoundListDescriptionFortran()
- virtual QCString trTypeDocumentation()
- virtual QCString trModuleReference(const char * namespaceName)
- virtual QCString trModulesMemberDescription(bool extractAll)
- virtual QCString trModulesMembers()
- virtual QCString trModulesIndex()
- virtual QCString trCompoundListFortran()
- virtual QCString trDataTypes()
- virtual QCString trCompoundIndexFortran()
- virtual QCString trSubprogram(bool first_capital, bool singular)
- virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
- virtual QCString trType(bool first_capital, bool singular)
- virtual QCString trModule(bool first_capital, bool singular)
- virtual QCString trCompoundMembersFortran()
- virtual QCString trSubprogramDocumentation()
-
-
TranslatorDanish (TranslatorAdapter_1_5_4) 22 methods to implement
----------------
@@ -658,51 +627,6 @@ TranslatorRomanian (TranslatorAdapter_1_4_1) 24 methods to implement
virtual QCString trNoDescriptionAvailable()
-TranslatorSerbian (TranslatorAdapter_1_4_1) 24 methods to implement
------------------
-
- Implements 192 of the required methods.
-
- Missing methods (should be implemented):
-
- virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
- virtual QCString trOverloadText()
- virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
- virtual QCString trSubprograms()
- virtual QCString trModulesListDescription(bool extractAll)
- virtual QCString trModulesList()
- virtual QCString trTypeConstraints()
- virtual QCString trMemberFunctionDocumentationFortran()
- virtual QCString trCompoundListDescriptionFortran()
- virtual QCString trTypeDocumentation()
- virtual QCString trModuleReference(const char * namespaceName)
- virtual QCString trModulesMemberDescription(bool extractAll)
- virtual QCString trModulesMembers()
- virtual QCString trModulesIndex()
- virtual QCString trCompoundListFortran()
- virtual QCString trDataTypes()
- virtual QCString trCompoundIndexFortran()
- virtual QCString trSubprogram(bool first_capital, bool singular)
- virtual QCString trCallerGraph()
- virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
- virtual QCString trType(bool first_capital, bool singular)
- virtual QCString trModule(bool first_capital, bool singular)
- virtual QCString trCompoundMembersFortran()
- virtual QCString trSubprogramDocumentation()
-
- Obsolete methods (should be removed, never used):
-
- virtual QCString trHeaderFilesDescription()
- virtual QCString trField(bool first_capital, bool singular)
- virtual QCString trPackageDocumentation()
- virtual QCString trSources()
- virtual QCString trReimplementedForInternalReasons()
- virtual QCString trInterfaces()
- virtual QCString trHeaderFiles()
- virtual QCString trBugsAndLimitations()
- virtual QCString trNoDescriptionAvailable()
-
-
TranslatorSlovak (TranslatorAdapter_1_2_18) 44 methods to implement
----------------
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 1176e6d..6db4f01 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -24,13 +24,14 @@ all: class/html/index.html \
memgrp/html/index.html \
docstring/html/index.html \
pyexample/html/index.html \
- mux/html/index.html
+ mux/html/index.html \
+ manual/html/index.html
clean:
rm -rf class define enum file func page relates author \
par overload example include qtstyle jdstyle structcmd \
autolink tag restypedef afterdoc template tag group diagrams \
- memgrp docstring pyexample mux
+ memgrp docstring pyexample mux manual
class/html/index.html: class.h class.cfg
$(DOXYGEN)/bin/doxygen class.cfg
@@ -106,6 +107,9 @@ pyexample/html/index.html: pyexample.py pyexample.cfg
mux/html/index.html: mux.vhdl mux.cfg
$(DOXYGEN)/bin/doxygen mux.cfg
+manual/html/index.html: manual.c manual.cfg
+ $(DOXYGEN)/bin/doxygen manual.cfg
+
docstring/html/index.html: docstring.py docstring.cfg
$(DOXYGEN)/bin/doxygen docstring.cfg
diff --git a/examples/Makefile.win.in b/examples/Makefile.win.in
index a6c6956..0d5e64e 100644
--- a/examples/Makefile.win.in
+++ b/examples/Makefile.win.in
@@ -25,13 +25,14 @@ all: class/html/index.html \
memgrp/html/index.html \
docstring/html/index.html \
pyexample/html/index.html \
- mux/html/index.html
+ mux/html/index.html \
+ manual/html/index.html
clean:
del /s/y class define enum file pyexample docstring
del /s/y func page relates author
del /s/y par overload example include qtstyle
- del /s/y jdstyle structcmd autolink resdefine mux
+ del /s/y jdstyle structcmd autolink resdefine mux manual
del /s/y restypedef afterdoc template tag group diagrams memgrp
class/html/index.html: class.h class.cfg
@@ -106,6 +107,9 @@ pyexample/html/index.html: pyexample.py pyexample.cfg
mux/html/index.html: mux.vhdl mux.cfg
$(DOXYDIR)\doxygen mux.cfg
+manual/html/index.html: manual.c manual.cfg
+ $(DOXYDIR)\doxygen manual.cfg
+
docstring/html/index.html: docstring.py docstring.cfg
$(DOXYDIR)\doxygen docstring.cfg
diff --git a/examples/manual.c b/examples/manual.c
new file mode 100644
index 0000000..fac6832
--- /dev/null
+++ b/examples/manual.c
@@ -0,0 +1,87 @@
+/**
+ * \file manual.c
+ */
+
+typedef struct Object Object; //!< Object type
+typedef struct Vehicle Vehicle; //!< Vehicle type
+typedef struct Car Car; //!< Car type
+typedef struct Truck Truck; //!< Truck type
+
+/*!
+ * Base object class.
+ */
+struct Object
+{
+ int ref; //!< \private Reference count.
+};
+
+
+/*!
+ * Increments object reference count by one.
+ * \public \memberof Object
+ */
+static Object * objRef(Object *obj);
+
+
+/*!
+ * Decrements object reference count by one.
+ * \public \memberof Object
+ */
+static Object * objUnref(Object *obj);
+
+
+/*!
+ * Vehicle class.
+ * \extends Object
+ */
+struct Vehicle
+{
+ Object base; //!< \protected Base class.
+};
+
+
+/*!
+ * Starts the vehicle.
+ * \public \memberof Vehicle
+ */
+void vehicleStart(Vehicle *obj);
+
+
+/*!
+ * Stops the vehicle.
+ * \public \memberof Vehicle
+ */
+void vehicleStop(Vehicle *obj);
+
+
+/*!
+ * Car class.
+ * \extends Vehicle
+ */
+struct Car
+{
+ Vehicle base; //!< \protected Base class.
+};
+
+
+/*!
+ * Truck class.
+ * \extends Vehicle
+ */
+struct Truck
+{
+ Vehicle base; //!< \protected Base class.
+};
+
+
+/*!
+ * Main function.
+ *
+ * Ref vehicleStart(), objRef(), objUnref().
+ */
+int main(void)
+{
+ Car c;
+ vehicleStart((Vehicle*) &c);
+}
+
diff --git a/examples/manual.cfg b/examples/manual.cfg
new file mode 100644
index 0000000..0b9f798
--- /dev/null
+++ b/examples/manual.cfg
@@ -0,0 +1,15 @@
+PROJECT_NAME = "Manual inheritance and membership"
+OUTPUT_DIRECTORY = manual
+GENERATE_LATEX = NO
+GENERATE_MAN = NO
+GENERATE_RTF = NO
+CASE_SENSE_NAMES = NO
+INPUT = manual.c
+QUIET = YES
+JAVADOC_AUTOBRIEF = YES
+EXTRACT_PRIVATE = YES
+EXTRACT_STATIC = YES
+TYPEDEF_HIDES_STRUCT = YES
+INLINE_SOURCES = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION = YES
diff --git a/src/classdef.cpp b/src/classdef.cpp
index cf4b4be..d30ee62 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -374,40 +374,40 @@ void ClassDef::internalInsertMember(MemberDef *md,
/********************************************/
if (md->isRelated() && (extractPrivate || prot!=Private))
{
- addMemberToList(MemberList::related,md);
+ addMemberToList(MemberList::related,md,true);
}
else if (md->isFriend())
{
- addMemberToList(MemberList::friends,md);
+ addMemberToList(MemberList::friends,md,true);
}
else
{
switch (md->memberType())
{
case MemberDef::Signal: // Qt specific
- addMemberToList(MemberList::signals,md);
+ addMemberToList(MemberList::signals,md,true);
break;
case MemberDef::DCOP: // KDE2 specific
- addMemberToList(MemberList::dcopMethods,md);
+ addMemberToList(MemberList::dcopMethods,md,true);
break;
case MemberDef::Property:
- addMemberToList(MemberList::properties,md);
+ addMemberToList(MemberList::properties,md,true);
break;
case MemberDef::Event:
- addMemberToList(MemberList::events,md);
+ addMemberToList(MemberList::events,md,true);
break;
case MemberDef::Slot: // Qt specific
switch (prot)
{
case Protected:
case Package: // slots in packages are not possible!
- addMemberToList(MemberList::proSlots,md);
+ addMemberToList(MemberList::proSlots,md,true);
break;
case Public:
- addMemberToList(MemberList::pubSlots,md);
+ addMemberToList(MemberList::pubSlots,md,true);
break;
case Private:
- addMemberToList(MemberList::priSlots,md);
+ addMemberToList(MemberList::priSlots,md,true);
break;
}
break;
@@ -419,16 +419,16 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot)
{
case Protected:
- addMemberToList(MemberList::proStaticAttribs,md);
+ addMemberToList(MemberList::proStaticAttribs,md,true);
break;
case Package:
- addMemberToList(MemberList::pacStaticAttribs,md);
+ addMemberToList(MemberList::pacStaticAttribs,md,true);
break;
case Public:
- addMemberToList(MemberList::pubStaticAttribs,md);
+ addMemberToList(MemberList::pubStaticAttribs,md,true);
break;
case Private:
- addMemberToList(MemberList::priStaticAttribs,md);
+ addMemberToList(MemberList::priStaticAttribs,md,true);
break;
}
}
@@ -437,16 +437,16 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot)
{
case Protected:
- addMemberToList(MemberList::proStaticMethods,md);
+ addMemberToList(MemberList::proStaticMethods,md,true);
break;
case Package:
- addMemberToList(MemberList::pacStaticMethods,md);
+ addMemberToList(MemberList::pacStaticMethods,md,true);
break;
case Public:
- addMemberToList(MemberList::pubStaticMethods,md);
+ addMemberToList(MemberList::pubStaticMethods,md,true);
break;
case Private:
- addMemberToList(MemberList::priStaticMethods,md);
+ addMemberToList(MemberList::priStaticMethods,md,true);
break;
}
}
@@ -458,16 +458,16 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot)
{
case Protected:
- addMemberToList(MemberList::proAttribs,md);
+ addMemberToList(MemberList::proAttribs,md,true);
break;
case Package:
- addMemberToList(MemberList::pacAttribs,md);
+ addMemberToList(MemberList::pacAttribs,md,true);
break;
case Public:
- addMemberToList(MemberList::pubAttribs,md);
+ addMemberToList(MemberList::pubAttribs,md,true);
break;
case Private:
- addMemberToList(MemberList::priAttribs,md);
+ addMemberToList(MemberList::priAttribs,md,true);
break;
}
}
@@ -476,16 +476,16 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot)
{
case Protected:
- addMemberToList(MemberList::proTypes,md);
+ addMemberToList(MemberList::proTypes,md,true);
break;
case Package:
- addMemberToList(MemberList::pacTypes,md);
+ addMemberToList(MemberList::pacTypes,md,true);
break;
case Public:
- addMemberToList(MemberList::pubTypes,md);
+ addMemberToList(MemberList::pubTypes,md,true);
break;
case Private:
- addMemberToList(MemberList::priTypes,md);
+ addMemberToList(MemberList::priTypes,md,true);
break;
}
}
@@ -494,16 +494,16 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot)
{
case Protected:
- addMemberToList(MemberList::proMethods,md);
+ addMemberToList(MemberList::proMethods,md,true);
break;
case Package:
- addMemberToList(MemberList::pacMethods,md);
+ addMemberToList(MemberList::pacMethods,md,true);
break;
case Public:
- addMemberToList(MemberList::pubMethods,md);
+ addMemberToList(MemberList::pubMethods,md,true);
break;
case Private:
- addMemberToList(MemberList::priMethods,md);
+ addMemberToList(MemberList::priMethods,md,true);
break;
}
}
@@ -517,21 +517,21 @@ void ClassDef::internalInsertMember(MemberDef *md,
/*******************************************************/
if ((md->isRelated() && (extractPrivate || prot!=Private)) || md->isFriend())
{
- addMemberToList(MemberList::relatedMembers,md);
+ addMemberToList(MemberList::relatedMembers,md,false);
}
else
{
switch (md->memberType())
{
case MemberDef::Property:
- addMemberToList(MemberList::propertyMembers,md);
+ addMemberToList(MemberList::propertyMembers,md,false);
break;
case MemberDef::Event:
- addMemberToList(MemberList::eventMembers,md);
+ addMemberToList(MemberList::eventMembers,md,false);
break;
case MemberDef::Signal: // fall through
case MemberDef::DCOP:
- addMemberToList(MemberList::functionMembers,md);
+ addMemberToList(MemberList::functionMembers,md,false);
break;
case MemberDef::Slot:
switch (prot)
@@ -539,12 +539,12 @@ void ClassDef::internalInsertMember(MemberDef *md,
case Protected:
case Package:
case Public:
- addMemberToList(MemberList::functionMembers,md);
+ addMemberToList(MemberList::functionMembers,md,false);
break;
case Private:
if (extractPrivate)
{
- addMemberToList(MemberList::functionMembers,md);
+ addMemberToList(MemberList::functionMembers,md,false);
}
break;
}
@@ -555,13 +555,13 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (md->memberType())
{
case MemberDef::Typedef:
- addMemberToList(MemberList::typedefMembers,md);
+ addMemberToList(MemberList::typedefMembers,md,false);
break;
case MemberDef::Enumeration:
- addMemberToList(MemberList::enumMembers,md);
+ addMemberToList(MemberList::enumMembers,md,false);
break;
case MemberDef::EnumValue:
- addMemberToList(MemberList::enumValMembers,md);
+ addMemberToList(MemberList::enumValMembers,md,false);
break;
case MemberDef::Function:
if (md->isConstructor() || md->isDestructor())
@@ -571,11 +571,11 @@ void ClassDef::internalInsertMember(MemberDef *md,
}
else
{
- addMemberToList(MemberList::functionMembers,md);
+ addMemberToList(MemberList::functionMembers,md,false);
}
break;
case MemberDef::Variable:
- addMemberToList(MemberList::variableMembers,md);
+ addMemberToList(MemberList::variableMembers,md,false);
break;
default:
err("Unexpected member type %d found!\n",md->memberType());
@@ -3168,11 +3168,14 @@ MemberList *ClassDef::getMemberList(MemberList::ListType lt)
return 0;
}
-void ClassDef::addMemberToList(MemberList::ListType lt,MemberDef *md)
+void ClassDef::addMemberToList(MemberList::ListType lt,MemberDef *md,bool isBrief)
{
static bool sortBriefDocs = Config_getBool("SORT_BRIEF_DOCS");
+ static bool sortMemberDocs = Config_getBool("SORT_MEMBER_DOCS");
MemberList *ml = createMemberList(lt);
- if (sortBriefDocs)
+ if (( isBrief && sortBriefDocs ) ||
+ (!isBrief && sortMemberDocs)
+ )
ml->inSort(md);
else
ml->append(md);
diff --git a/src/classdef.h b/src/classdef.h
index 69e7368..8659449 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -327,7 +327,7 @@ class ClassDef : public Definition
private:
void internalInsertMember(MemberDef *md,Protection prot,bool addToAllList);
QCString getMemberListFileName() const;
- void addMemberToList(MemberList::ListType lt,MemberDef *md);
+ void addMemberToList(MemberList::ListType lt,MemberDef *md,bool isBrief);
MemberList *createMemberList(MemberList::ListType lt);
void writeMemberDeclarations(OutputList &ol,MemberList::ListType lt,const QCString &title,
const char *subTitle=0);
diff --git a/src/commentscan.l b/src/commentscan.l
index cfbc050..8351407 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -79,6 +79,7 @@ static bool handleDeprecated(const QCString &);
static bool handleXRefItem(const QCString &);
static bool handleRelated(const QCString &);
static bool handleRelatedAlso(const QCString &);
+static bool handleMemberOf(const QCString &);
static bool handleRefItem(const QCString &);
static bool handleSection(const QCString &);
static bool handleAnchor(const QCString &);
@@ -106,6 +107,7 @@ static bool handleProtectedSection(const QCString &);
static bool handlePublic(const QCString &s);
static bool handlePublicSection(const QCString &s);
static bool handleInherit(const QCString &);
+static bool handleExtends(const QCString &);
typedef bool (*DocCmdFunc)(const QCString &name);
@@ -197,6 +199,9 @@ static DocCmdMap docCmdMap[] =
{ "public", &handlePublic, FALSE },
{ "publicsection", &handlePublicSection, FALSE },
{ "inherit", &handleInherit, TRUE },
+ { "extends", &handleExtends, TRUE },
+ { "implements", &handleExtends, TRUE },
+ { "memberof", &handleMemberOf, TRUE },
{ "arg", 0, TRUE },
{ "attention", 0, TRUE },
{ "author", 0, TRUE },
@@ -840,6 +845,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
%x FnParam
%x OverloadParam
%x InheritParam
+%x ExtendsParam
%x ReadFormulaShort
%x ReadFormulaLong
%x AnchorLabel
@@ -920,7 +926,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
{
if (cmdPtr->endsBrief)
{
- briefEndsAtDot=FALSE;
+ briefEndsAtDot=FALSE;
// this command forces the end of brief description
setOutput(OutputDoc);
}
@@ -1366,7 +1372,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
}
- /* --------- handle arguments of the relates(also) command ------------ */
+ /* ----- handle arguments of the relates(also)/memberof command ------- */
<RelatesParam1>({ID}("::"|"."))*{ID} { // argument
current->relates = yytext;
@@ -1382,7 +1388,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
}
<RelatesParam1>{DOCNL} { // missing argument
warn(yyFileName,yyLineNr,
- "Warning: Missing argument of \\relates command"
+ "Warning: Missing argument of \\relates or \\memberof command"
);
if (*yytext=='\n') yyLineNr++;
addOutput('\n');
@@ -1800,6 +1806,25 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
BEGIN(Comment);
}
+ /* ----- handle argument of extends and implements commands ------- */
+
+<ExtendsParam>({ID}("::"|"."))*{ID} { // found argument
+ current->extends->append(
+ new BaseInfo(removeRedundantWhiteSpace(yytext),Public,Normal)
+ );
+ BEGIN( Comment );
+ }
+<ExtendsParam>{DOCNL} { // missing argument
+ warn(yyFileName,yyLineNr,
+ "Warning: \\extends or \\implements command has no argument"
+ );
+ if (*yytext=='\n') yyLineNr++;
+ addOutput('\n');
+ BEGIN( Comment );
+ }
+<ExtendsParam>. { // ignore other stuff
+ }
+
/* ----- handle language specific sections ------- */
<SkipLang>[\\@]"~"[a-zA-Z]* { /* language switch */
@@ -2060,7 +2085,14 @@ static bool handleRelated(const QCString &)
static bool handleRelatedAlso(const QCString &)
{
- current->relatesDup = TRUE;
+ current->relatesType = Duplicate;
+ BEGIN(RelatesParam1);
+ return FALSE;
+}
+
+static bool handleMemberOf(const QCString &)
+{
+ current->relatesType = MemberOf;
BEGIN(RelatesParam1);
return FALSE;
}
@@ -2257,53 +2289,52 @@ static bool handlePure(const QCString &)
static bool handlePrivate(const QCString &)
{
- endBrief();
- current->protection = Private;
+ current->protection = Private;
return FALSE;
}
static bool handlePrivateSection(const QCString &)
{
- endBrief();
- current->protection = protection = Private;
+ current->protection = protection = Private;
return FALSE;
}
static bool handleProtected(const QCString &)
{
- endBrief();
- current->protection = Protected;
+ current->protection = Protected;
return FALSE;
}
static bool handleProtectedSection(const QCString &)
{
- endBrief();
current->protection = protection = Protected ;
return FALSE;
}
static bool handlePublic(const QCString &)
{
- endBrief();
current->protection = Public;
return FALSE;
}
static bool handlePublicSection(const QCString &)
{
- endBrief();
- current->protection = protection = Public;
+ current->protection = protection = Public;
return FALSE;
}
static bool handleInherit(const QCString &)
{
- endBrief();
BEGIN(InheritParam);
return FALSE;
}
+static bool handleExtends(const QCString &)
+{
+ BEGIN(ExtendsParam);
+ return FALSE;
+}
+
//----------------------------------------------------------------------------
static void checkFormula()
diff --git a/src/config.l b/src/config.l
index ee1ebab..9fffc0b 100644
--- a/src/config.l
+++ b/src/config.l
@@ -1779,6 +1779,24 @@ void Config::create()
"types are typedef'ed and only the typedef is referenced, never the tag name.\n",
FALSE
);
+ ci = addInt(
+ "SYMBOL_CACHE_SIZE",
+ "The SYMBOL_CACHE_SIZE determines the size of the internal cache use to \n"
+ "determine which symbols to keep in memory and which to flush to disk.\n"
+ "When the cache is full, less often used symbols will be written to disk.\n"
+ "For small to medium size projects (<1000 input files) the default value is \n"
+ "probably good enough. For larger projects a too small cache size can cause \n"
+ "doxygen to be busy swapping symbols to and from disk most of the time \n"
+ "causing a significant performance penality. \n"
+ "If the system has enough physical memory increasing the cache will improve the \n"
+ "performance by keeping more symbols in memory. Note that the value works on \n"
+ "a logarithmic scale so increasing the size by one will rougly double the \n"
+ "memory usage. The cache size is given by this formula: \n"
+ "2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, \n"
+ "corresponding to a cache size of 2^16 = 65536 symbols\n",
+ 0,9,0
+ );
+
//-----------------------------------------------------------------------------------------------
addInfo("Build","Build related configuration options");
//-----------------------------------------------------------------------------------------------
@@ -2410,6 +2428,31 @@ void Config::create()
);
cs->setWidgetType(ConfigString::File);
cs->addDependency("GENERATE_HTML");
+ cs = addString(
+ "QTHELP_FILE",
+ "If the GENERATE_HTMLHELP tag is set to YES, the QTHELP_FILE tag can \n"
+ "be used to specify the file name of the resulting .(qch|qhp) file. \n"
+ "You can add a path in front of the file if the result should not be \n"
+ "written to the html output directory. \n"
+ );
+ cs->setWidgetType(ConfigString::File);
+ cs->addDependency("GENERATE_HTML");
+ cs = addString(
+ "QTHELP_CONFIG",
+ "If DOXYGEN2QTHELP_LOC is set, QTHELP_CONFIG must specify the file name \n"
+ "of a config file to pass to doxygen2qthelp. \n"
+ );
+ cs->setWidgetType(ConfigString::File);
+ cs->addDependency("GENERATE_HTML");
+ cs = addString(
+ "DOXYGEN2QTHELP_LOC",
+ "If the GENERATE_HTMLHELP tag is set to YES, the DOXYGEN2QTHELP_LOC tag \n"
+ "can be used to specify the location (absolute path including file name) of \n"
+ "the doxygen2qthelp tool. If non-empty doxygen will try to run doxygen2qthelp \n"
+ "on the generated index.hhp.\n"
+ );
+ cs->setWidgetType(ConfigString::File);
+ cs->addDependency("GENERATE_HTML");
cb = addBool(
"GENERATE_CHI",
"If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag \n"
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index c2cd624..826b86d 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -1794,7 +1794,7 @@ static void findUsingDeclImports(EntryNav *rootNav)
root->fileName,root->startLine,
md->typeString(),memName,md->argsString(),
md->excpString(),root->protection,root->virt,
- md->isStatic(),FALSE,md->memberType(),
+ md->isStatic(),Member,md->memberType(),
templAl.pointer(),al.pointer()
);
}
@@ -1880,7 +1880,7 @@ static MemberDef *addVariableToClass(
bool fromAnnScope,
MemberDef *fromAnnMemb,
Protection prot,
- bool related)
+ Relationship related)
{
Entry *root = rootNav->entry();
@@ -2145,7 +2145,7 @@ static MemberDef *addVariableToFile(
MemberDef *md=new MemberDef(
root->fileName,root->startLine,
root->type,name,root->args,0,
- Public, Normal,root->stat,FALSE,
+ Public, Normal,root->stat,Member,
mtype,0,0);
md->setTagInfo(rootNav->tagInfo());
md->setDocumentation(root->doc,root->docFile,root->docLine);
@@ -2427,6 +2427,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
QCString type=root->type.stripWhiteSpace();
ClassDef *cd=0;
bool isRelated=FALSE;
+ bool isMemberOf=FALSE;
QCString classScope=stripAnonymousNamespaceScope(scope);
classScope=stripTemplateSpecifiersFromScope(classScope,FALSE);
@@ -2447,7 +2448,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
FALSE, // from Anonymous scope
0, // anonymous member
Public, // protection
- FALSE // related to a class
+ Member // related to a class
);
}
}
@@ -2476,6 +2477,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
if (!root->relates.isEmpty()) // related variable
{
isRelated=TRUE;
+ isMemberOf=(root->relatesType == MemberOf);
if (getClass(root->relates)==0 && !scope.isEmpty())
scope=mergeScopes(scope,root->relates);
else
@@ -2517,7 +2519,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
TRUE, // from anonymous scope
0, // from anonymous member
root->protection,
- isRelated
+ isMemberOf ? Foreign : isRelated ? Related : Member
);
added=TRUE;
}
@@ -2541,7 +2543,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
FALSE, // from anonymous scope
md, // from anonymous member
root->protection,
- isRelated);
+ isMemberOf ? Foreign : isRelated ? Related : Member);
}
else if (!name.isEmpty()) // global variable
{
@@ -2662,7 +2664,10 @@ static void addMethodToClass(EntryNav *rootNav,ClassDef *cd,
MemberDef *md=new MemberDef(
root->fileName,root->startLine,
root->type,name,root->args,root->exception,
- root->protection,root->virt,root->stat,!root->relates.isEmpty(),
+ root->protection,root->virt,
+ root->stat && root->relatesType != MemberOf,
+ root->relates.isEmpty() ? Member :
+ root->relatesType == MemberOf ? Foreign : Related,
mtype,root->tArgLists ? root->tArgLists->last() : 0,root->argList);
md->setTagInfo(rootNav->tagInfo());
md->setMemberClass(cd);
@@ -2787,13 +2792,13 @@ static void buildFunctionList(EntryNav *rootNav)
Debug::print(Debug::Functions,0,
"FUNCTION_SEC:\n"
- " `%s' `%s'::`%s' `%s' relates=`%s' relatesDup=`%d' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d spec=%d proto=%d docFile=%s\n",
+ " `%s' `%s'::`%s' `%s' relates=`%s' relatesType=`%d' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d spec=%d proto=%d docFile=%s\n",
root->type.data(),
rootNav->parent()->name().data(),
root->name.data(),
root->args.data(),
root->relates.data(),
- root->relatesDup,
+ root->relatesType,
root->fileName.data(),
root->startLine,
root->bodyLine,
@@ -2870,7 +2875,7 @@ static void buildFunctionList(EntryNav *rootNav)
|| rootNav->parent()->section()==Entry::OBJCIMPL_SEC
) &&
!isMember &&
- (root->relates.isEmpty() || root->relatesDup) &&
+ (root->relates.isEmpty() || root->relatesType == Duplicate) &&
root->type.left(7)!="extern " && root->type.left(8)!="typedef "
)
// no member => unrelated function
@@ -3013,7 +3018,7 @@ static void buildFunctionList(EntryNav *rootNav)
md=new MemberDef(
root->fileName,root->startLine,
root->type,name,root->args,root->exception,
- root->protection,root->virt,root->stat,FALSE,
+ root->protection,root->virt,root->stat,Member,
MemberDef::Function,tArgList,root->argList);
md->setTagInfo(rootNav->tagInfo());
@@ -3127,8 +3132,8 @@ static void buildFunctionList(EntryNav *rootNav)
Doxygen::functionNameSDict->append(name,mn);
}
addMemberToGroups(root,md);
- if (!root->relatesDup) // if this is a relatesalso command, allow find
- // Member to pick it up
+ if (root->relatesType == Simple) // if this is a relatesalso command,
+ // allow find Member to pick it up
{
rootNav->changeSection(Entry::EMPTY_SEC); // Otherwise we have finished
// with this entry.
@@ -3551,7 +3556,7 @@ static void transferRelatedFunctionDocumentation()
LockingPtr<ArgumentList> mdAl = md->argumentList();
LockingPtr<ArgumentList> rmdAl = rmd->argumentList();
//printf(" Member found: related=`%d'\n",rmd->isRelated());
- if (rmd->isRelated() && // related function
+ if ((rmd->isRelated() || rmd->isForeign()) && // related function
matchArguments2( md->getOuterScope(), md->getFileDef(), mdAl.pointer(),
rmd->getOuterScope(),rmd->getFileDef(),rmdAl.pointer(),
TRUE
@@ -3561,6 +3566,8 @@ static void transferRelatedFunctionDocumentation()
//printf(" Found related member `%s'\n",md->name().data());
if (rmd->relatedAlso())
md->setRelatedAlso(rmd->relatedAlso());
+ else if (rmd->isForeign())
+ md->makeForeign();
else
md->makeRelated();
}
@@ -4928,7 +4935,7 @@ static bool findGlobalMember(EntryNav *rootNav,
}
}
}
- if (!found && !root->relatesDup) // no match
+ if (!found && root->relatesType != Duplicate) // no match
{
QCString fullFuncDecl=decl;
if (root->argList) fullFuncDecl+=argListToString(root->argList,TRUE);
@@ -5114,6 +5121,7 @@ static void findMember(EntryNav *rootNav,
QCString exceptions;
QCString funcSpec;
bool isRelated=FALSE;
+ bool isMemberOf=FALSE;
bool isFriend=FALSE;
bool done;
do
@@ -5195,6 +5203,7 @@ static void findMember(EntryNav *rootNav,
if (!root->relates.isEmpty())
{ // related member, prefix user specified scope
isRelated=TRUE;
+ isMemberOf=(root->relatesType == MemberOf);
if (getClass(root->relates)==0 && !scopeName.isEmpty())
scopeName= mergeScopes(scopeName,root->relates);
else
@@ -5375,11 +5384,12 @@ static void findMember(EntryNav *rootNav,
" related=`%s'\n"
" exceptions=`%s'\n"
" isRelated=%d\n"
+ " isMemberOf=%d\n"
" isFriend=%d\n"
" isFunc=%d\n\n",
namespaceName.data(),className.data(),
funcType.data(),funcSpec.data(),funcName.data(),funcArgs.data(),funcTempList.data(),
- funcDecl.data(),root->relates.data(),exceptions.data(),isRelated,isFriend,
+ funcDecl.data(),root->relates.data(),exceptions.data(),isRelated,isMemberOf,isFriend,
isFunc
);
@@ -5621,7 +5631,7 @@ static void findMember(EntryNav *rootNav,
MemberDef *md=new MemberDef(
root->fileName,root->startLine,
funcType,funcName,funcArgs,exceptions,
- root->protection,root->virt,root->stat,FALSE,
+ root->protection,root->virt,root->stat,Member,
mtype,tArgList,root->argList);
//printf("new specialized member %s args=`%s'\n",md->name().data(),funcArgs.data());
md->setTagInfo(rootNav->tagInfo());
@@ -5685,7 +5695,7 @@ static void findMember(EntryNav *rootNav,
MemberDef *md=new MemberDef(
root->fileName,root->startLine,
funcType,funcName,funcArgs,exceptions,
- root->protection,root->virt,root->stat,TRUE,
+ root->protection,root->virt,root->stat,Related,
mtype,tArgList,root->argList);
md->setTagInfo(rootNav->tagInfo());
md->setTypeConstraints(root->typeConstr);
@@ -5814,7 +5824,9 @@ static void findMember(EntryNav *rootNav,
MemberDef *md=new MemberDef(
root->fileName,root->startLine,
funcType,funcName,funcArgs,exceptions,
- root->protection,root->virt,root->stat,TRUE,
+ root->protection,root->virt,
+ root->stat && !isMemberOf,
+ isMemberOf ? Foreign : isRelated ? Related : Member,
mtype,
(root->tArgLists ? root->tArgLists->last() : 0),
funcArgs.isEmpty() ? 0 : root->argList);
@@ -5897,7 +5909,7 @@ static void findMember(EntryNav *rootNav,
cd->insertMember(md);
cd->insertUsedFile(root->fileName);
md->setRefItems(root->sli);
- if (root->relatesDup) md->setRelatedAlso(cd);
+ if (root->relatesType == Duplicate) md->setRelatedAlso(cd);
addMemberToGroups(root,md);
//printf("Adding member=%s\n",md->name().data());
if (newMemberName)
@@ -5907,7 +5919,7 @@ static void findMember(EntryNav *rootNav,
Doxygen::memberNameSDict->append(funcName,mn);
}
}
- if (root->relatesDup)
+ if (root->relatesType == Duplicate)
{
if (!findGlobalMember(rootNav,namespaceName,funcName,funcTempList,funcArgs,funcDecl))
{
@@ -5940,7 +5952,7 @@ localObjCMethod:
MemberDef *md=new MemberDef(
root->fileName,root->startLine,
funcType,funcName,funcArgs,exceptions,
- root->protection,root->virt,root->stat,FALSE,
+ root->protection,root->virt,root->stat,Member,
MemberDef::Function,0,root->argList);
md->setTagInfo(rootNav->tagInfo());
md->makeImplementationDetail();
@@ -6020,7 +6032,7 @@ static void filterMemberDocumentation(EntryNav *rootNav)
//printf("rootNav->parent()->name()=%s\n",rootNav->parent()->name().data());
bool isFunc=TRUE;
- if (root->relatesDup && !root->relates.isEmpty())
+ if (root->relatesType == Duplicate && !root->relates.isEmpty())
{
QCString tmp = root->relates;
root->relates.resize(0);
@@ -6205,6 +6217,7 @@ static void findEnums(EntryNav *rootNav)
MemberNameSDict *mnsd=0;
bool isGlobal;
bool isRelated=FALSE;
+ bool isMemberOf=FALSE;
//printf("Found enum with name `%s' relates=%s\n",root->name.data(),root->relates.data());
int i;
@@ -6232,6 +6245,7 @@ static void findEnums(EntryNav *rootNav)
if (!root->relates.isEmpty())
{ // related member, prefix user specified scope
isRelated=TRUE;
+ isMemberOf=(root->relatesType == MemberOf);
if (getClass(root->relates)==0 && !scope.isEmpty())
scope=mergeScopes(scope,root->relates);
else
@@ -6264,7 +6278,9 @@ static void findEnums(EntryNav *rootNav)
md = new MemberDef(
root->fileName,root->startLine,
0,name,0,0,
- root->protection,Normal,FALSE,isRelated,MemberDef::Enumeration,
+ root->protection,Normal,FALSE,
+ isMemberOf ? Foreign : isRelated ? Related : Member,
+ MemberDef::Enumeration,
0,0);
md->setTagInfo(rootNav->tagInfo());
if (!isGlobal) md->setMemberClass(cd); else md->setFileDef(fd);
@@ -7463,7 +7479,7 @@ static void findDefineDocumentation(EntryNav *rootNav)
{
MemberDef *md=new MemberDef("<tagfile>",1,
"#define",root->name,root->args,0,
- Public,Normal,FALSE,FALSE,MemberDef::Define,0,0);
+ Public,Normal,FALSE,Member,MemberDef::Define,0,0);
md->setTagInfo(rootNav->tagInfo());
//printf("Searching for `%s' fd=%p\n",filePathName.data(),fd);
md->setFileDef(rootNav->parent()->fileDef());
@@ -8925,10 +8941,9 @@ extern void commentScanTest();
void initDoxygen()
{
-#if QT_VERSION >= 200
setlocale(LC_ALL,"");
+ setlocale(LC_CTYPE,"C"); // to get isspace(0xA0)==0, needed for UTF-8
setlocale(LC_NUMERIC,"C");
-#endif
//Doxygen::symbolMap->setAutoDelete(TRUE);
@@ -9400,8 +9415,11 @@ void parseInput()
**************************************************************************/
Doxygen::symbolMap = new QDict<DefinitionIntf>(1000);
- Doxygen::symbolCache = new ObjCache(16); // 16 -> room for 65536 elements,
- // ~2.0 MByte "overhead"
+ int cacheSize = Config_getInt("SYMBOL_CACHE_SIZE");
+ if (cacheSize<0) cacheSize=0;
+ if (cacheSize>9) cacheSize=9;
+ Doxygen::symbolCache = new ObjCache(16+cacheSize); // 16 -> room for 65536 elements,
+ // ~2.0 MByte "overhead"
Doxygen::symbolStorage = new Store;
#ifdef HAS_SIGNALS
@@ -10196,6 +10214,24 @@ void generateOutput()
}
QDir::setCurrent(oldDir);
}
+ if ( Config_getBool("GENERATE_HTMLHELP") &&
+ !Config_getString("DOXYGEN2QTHELP_LOC").isEmpty() &&
+ !Config_getString("QTHELP_CONFIG").isEmpty())
+ {
+ msg("Running doxygen2qthelp...\n");
+ const QCString qtHelpFile = Config_getString("QTHELP_FILE");
+ const QCString args = QCString().sprintf("--config=%s index.hhp%s%s",
+ Config_getString("QTHELP_CONFIG").data(),
+ (qtHelpFile.isEmpty() ? "" : " "), (qtHelpFile.isEmpty() ? "" : qtHelpFile.data()));
+
+ const QString oldDir = QDir::currentDirPath();
+ QDir::setCurrent(Config_getString("HTML_OUTPUT"));
+ if (portable_system(Config_getString("DOXYGEN2QTHELP_LOC"), args.data(), FALSE))
+ {
+ err("Error: failed to run doxygen2qthelp on index.hhp\n");
+ }
+ QDir::setCurrent(oldDir);
+ }
if (Config_getBool("SEARCHENGINE"))
{
msg("Generating search index\n");
diff --git a/src/doxygen.css b/src/doxygen.css
index 74c22a2..c8356a2 100644
--- a/src/doxygen.css
+++ b/src/doxygen.css
@@ -1,363 +1,287 @@
-BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
- font-family: Geneva, Arial, Helvetica, sans-serif;
+body, table, div, p, dl {
+ font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+ font-size: 12px;
}
-BODY,TD {
- font-size: 90%;
-}
-H1 {
+
+/* @group Heading Levels */
+
+h1 {
text-align: center;
- font-size: 160%;
+ font-size: 150%;
}
-H2 {
+
+h2 {
font-size: 120%;
}
-H3 {
+
+h3 {
font-size: 100%;
}
-CAPTION {
- font-weight: bold
+
+/* @end */
+
+caption {
+ font-weight: bold;
}
-DIV.qindex {
- width: 100%;
+
+div.qindex, div.navpath, div.navtab{
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
- line-height: 140%;
}
-DIV.navpath {
+
+div.qindex, div.navpath {
width: 100%;
- background-color: #e8eef2;
- border: 1px solid #84b0c7;
- text-align: center;
- margin: 2px;
- padding: 2px;
line-height: 140%;
}
-DIV.navtab {
- background-color: #e8eef2;
- border: 1px solid #84b0c7;
- text-align: center;
- margin: 2px;
- margin-right: 15px;
- padding: 2px;
+
+div.navtab {
+ margin-right: 15px;
}
-TD.navtab {
- font-size: 70%;
+
+/* @group Link Styling */
+
+a {
+ color: #153788;
+ font-weight: normal;
+ text-decoration: none;
}
-A.qindex {
- text-decoration: none;
- font-weight: bold;
- color: #1A419D;
+
+.contents a:visited {
+ color: #1b77c5;
}
-A.qindex:visited {
- text-decoration: none;
- font-weight: bold;
- color: #1A419D
+
+a:hover {
+ text-decoration: underline;
}
-A.qindex:hover {
- text-decoration: none;
- background-color: #ddddff;
+
+a.qindex {
+ font-weight: bold;
}
-A.qindexHL {
- text-decoration: none;
+
+a.qindexHL {
font-weight: bold;
background-color: #6666cc;
color: #ffffff;
border: 1px double #9295C2;
}
-A.qindexHL:hover {
- text-decoration: none;
- background-color: #6666cc;
- color: #ffffff;
-}
-A.qindexHL:visited {
- text-decoration: none;
- background-color: #6666cc;
- color: #ffffff
+
+a.el {
+ font-weight: bold;
}
-A.el {
- text-decoration: none;
- font-weight: bold
+
+a.elRef {
}
-A.elRef {
- font-weight: bold
+
+a.code {
}
-A.code:link {
- text-decoration: none;
- font-weight: normal;
- color: #0000FF
+
+a.codeRef {
}
-A.code:visited {
- text-decoration: none;
- font-weight: normal;
- color: #0000FF
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
}
-A.codeRef:link {
- font-weight: normal;
- color: #0000FF
+
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 105%;
}
-A.codeRef:visited {
- font-weight: normal;
- color: #0000FF
+
+pre.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
}
-A:hover {
- text-decoration: none;
- background-color: #f2f2ff
+
+div.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
}
-DL.el {
- margin-left: -1cm
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
}
-.fragment {
- font-family: monospace, fixed;
- font-size: 95%;
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
}
-PRE.fragment {
- border: 1px solid #CCCCCC;
- background-color: #f5f5f5;
- margin-top: 4px;
- margin-bottom: 4px;
- margin-left: 2px;
- margin-right: 8px;
- padding-left: 6px;
- padding-right: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-DIV.ah {
- background-color: black;
- font-weight: bold;
- color: #ffffff;
- margin-bottom: 3px;
- margin-top: 3px
-}
-
-DIV.groupHeader {
- margin-left: 16px;
- margin-top: 12px;
- margin-bottom: 6px;
- font-weight: bold;
-}
-DIV.groupText {
- margin-left: 16px;
- font-style: italic;
- font-size: 90%
-}
-BODY {
+
+body {
background: white;
color: black;
margin-right: 20px;
margin-left: 20px;
}
-TD.indexkey {
+
+td.indexkey {
background-color: #e8eef2;
font-weight: bold;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px;
border: 1px solid #CCCCCC;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
}
-TD.indexvalue {
+
+td.indexvalue {
background-color: #e8eef2;
- font-style: italic;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px;
+// font-style: italic;
border: 1px solid #CCCCCC;
+ padding: 2px 10px;
+ margin: 2px 0px;
}
-TR.memlist {
- background-color: #f0f0f0;
+
+tr.memlist {
+ background-color: #f0f0f0;
}
-P.formulaDsp {
- text-align: center;
+
+p.formulaDsp {
+ text-align: center;
}
-IMG.formulaDsp {
+
+img.formulaDsp {
+
}
-IMG.formulaInl {
- vertical-align: middle;
+
+img.formulaInl {
+ vertical-align: middle;
}
-SPAN.keyword { color: #008000 }
-SPAN.keywordtype { color: #604020 }
-SPAN.keywordflow { color: #e08000 }
-SPAN.comment { color: #800000 }
-SPAN.preprocessor { color: #806020 }
-SPAN.stringliteral { color: #002080 }
-SPAN.charliteral { color: #008080 }
-SPAN.vhdldigit { color: #ff00ff }
-SPAN.vhdlchar { color: #000000 }
-SPAN.vhdlkeyword { color: #700070 }
-SPAN.vhdllogic { color: #ff0000 }
-.mdescLeft {
- padding: 0px 8px 4px 8px;
- font-size: 80%;
- font-style: italic;
- background-color: #FAFAFA;
- border-top: 1px none #E0E0E0;
- border-right: 1px none #E0E0E0;
- border-bottom: 1px none #E0E0E0;
- border-left: 1px none #E0E0E0;
- margin: 0px;
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
}
-.mdescRight {
- padding: 0px 8px 4px 8px;
- font-size: 80%;
- font-style: italic;
- background-color: #FAFAFA;
- border-top: 1px none #E0E0E0;
- border-right: 1px none #E0E0E0;
- border-bottom: 1px none #E0E0E0;
- border-left: 1px none #E0E0E0;
- margin: 0px;
+
+span.keywordtype {
+ color: #604020
}
-.memItemLeft {
- padding: 1px 0px 0px 8px;
- margin: 4px;
- border-top-width: 1px;
- border-right-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-top-color: #E0E0E0;
- border-right-color: #E0E0E0;
- border-bottom-color: #E0E0E0;
- border-left-color: #E0E0E0;
- border-top-style: solid;
- border-right-style: none;
- border-bottom-style: none;
- border-left-style: none;
- background-color: #FAFAFA;
- font-size: 80%;
+
+span.keywordflow {
+ color: #e08000
}
-.memItemRight {
- padding: 1px 8px 0px 8px;
- margin: 4px;
- border-top-width: 1px;
- border-right-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-top-color: #E0E0E0;
- border-right-color: #E0E0E0;
- border-bottom-color: #E0E0E0;
- border-left-color: #E0E0E0;
- border-top-style: solid;
- border-right-style: none;
- border-bottom-style: none;
- border-left-style: none;
- background-color: #FAFAFA;
- font-size: 80%;
+
+span.comment {
+ color: #800000
}
-.memTemplItemLeft {
- padding: 1px 0px 0px 8px;
- margin: 4px;
- border-top-width: 1px;
- border-right-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-top-color: #E0E0E0;
- border-right-color: #E0E0E0;
- border-bottom-color: #E0E0E0;
- border-left-color: #E0E0E0;
- border-top-style: none;
- border-right-style: none;
- border-bottom-style: none;
- border-left-style: none;
- background-color: #FAFAFA;
- font-size: 80%;
+
+span.preprocessor {
+ color: #806020
}
-.memTemplItemRight {
- padding: 1px 8px 0px 8px;
- margin: 4px;
- border-top-width: 1px;
- border-right-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-top-color: #E0E0E0;
- border-right-color: #E0E0E0;
- border-bottom-color: #E0E0E0;
- border-left-color: #E0E0E0;
- border-top-style: none;
- border-right-style: none;
- border-bottom-style: none;
- border-left-style: none;
- background-color: #FAFAFA;
- font-size: 80%;
+
+span.stringliteral {
+ color: #002080
}
-.memTemplParams {
- padding: 1px 0px 0px 8px;
- margin: 4px;
- border-top-width: 1px;
- border-right-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-top-color: #E0E0E0;
- border-right-color: #E0E0E0;
- border-bottom-color: #E0E0E0;
- border-left-color: #E0E0E0;
- border-top-style: solid;
- border-right-style: none;
- border-bottom-style: none;
- border-left-style: none;
- color: #606060;
- background-color: #FAFAFA;
- font-size: 80%;
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
}
-.search {
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+/* @end */
+
+.search {
color: #003399;
font-weight: bold;
}
-FORM.search {
+
+form.search {
margin-bottom: 0px;
margin-top: 0px;
}
-INPUT.search {
+
+input.search {
font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
-TD.tiny {
+
+td.tiny {
font-size: 75%;
}
-a {
- color: #1A41A8;
-}
-a:visited {
- color: #2A3798;
-}
-.dirtab {
+
+.dirtab {
padding: 4px;
border-collapse: collapse;
border: 1px solid #84b0c7;
}
-TH.dirtab {
+
+th.dirtab {
background: #e8eef2;
font-weight: bold;
}
-HR {
- height: 1px;
+
+hr {
+ height: 0;
border: none;
- border-top: 1px solid black;
+ border-top: 1px solid #666;
}
-/* Style for detailed member documentation */
+/* @group Member Descriptions */
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #FAFAFA;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+ border-top: 1px solid #ccc;
+}
+
+.memTemplParams {
+ color: #606060;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
.memtemplate {
font-size: 80%;
color: #606060;
font-weight: normal;
margin-left: 3px;
-}
-.memnav {
+}
+
+.memnav {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
@@ -365,69 +289,154 @@ HR {
margin-right: 15px;
padding: 2px;
}
+
.memitem {
- padding: 4px;
- background-color: #eef3f5;
- border-width: 1px;
- border-style: solid;
- border-color: #dedeee;
- -moz-border-radius: 8px 8px 8px 8px;
+ padding: 0;
}
+
.memname {
white-space: nowrap;
font-weight: bold;
}
-.memdoc{
- padding-left: 10px;
+
+.memproto, .memdoc {
+ border: 1px solid #84b0c7;
}
+
.memproto {
+ padding: 0;
background-color: #d5e1e8;
- width: 100%;
- border-width: 1px;
- border-style: solid;
- border-color: #84b0c7;
font-weight: bold;
- -moz-border-radius: 8px 8px 8px 8px;
+ -webkit-border-top-left-radius: 8px;
+ -webkit-border-top-right-radius: 8px;
+ -moz-border-radius-topleft: 8px;
+ -moz-border-radius-topright: 8px;
}
+
+.memdoc {
+ padding: 2px 5px;
+ background-color: #eef3f5;
+ border-top-width: 0;
+ -webkit-border-bottom-left-radius: 8px;
+ -webkit-border-bottom-right-radius: 8px;
+ -moz-border-radius-bottomleft: 8px;
+ -moz-border-radius-bottomright: 8px;
+}
+
+.memdoc p, .memdoc dl, .memdoc ul {
+ margin: 6px 0;
+}
+
.paramkey {
text-align: right;
}
+
.paramtype {
white-space: nowrap;
}
+
.paramname {
color: #602020;
- font-style: italic;
white-space: nowrap;
}
-/* End Styling for detailed member documentation */
+.paramname em {
+ font-style: normal;
+}
+
+/* @end */
+
+/* @group Directory (tree) */
/* for the tree view */
+
.ftvtree {
font-family: sans-serif;
- margin:0.5em;
+ margin: 0.5em;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice. Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+ height: 61px;
+ background-repeat: no-repeat;
+ background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+ display: none;
+}
+*/
+
+.directory > h3 {
+ margin-top: 0;
}
-.directory {
- font-size: 9pt;
- font-weight: bold;
+
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+
+.directory div {
+ display: none;
+ margin: 0px;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
}
-.directory h3 {
- margin: 0px;
- margin-top: 1em;
- font-size: 11pt;
+
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
}
-.directory > h3 {
- margin-top: 0;
+
+.directory-alt > h3 {
+ margin-top: 0;
}
-.directory p {
- margin: 0px;
- white-space: nowrap;
+
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
}
-.directory div {
- display: none;
- margin: 0px;
+
+.directory-alt div {
+ display: none;
+ margin: 0px;
}
-.directory img {
- vertical-align: -30%;
+
+.directory-alt img {
+ vertical-align: -30%;
}
+/* @end */
+
+address {
+ font-style: normal;
+ color: #333;
+}
diff --git a/src/doxygen_css.h b/src/doxygen_css.h
index 2c42fd5..d9d381e 100644
--- a/src/doxygen_css.h
+++ b/src/doxygen_css.h
@@ -1,363 +1,287 @@
-"BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {\n"
-" font-family: Geneva, Arial, Helvetica, sans-serif;\n"
+"body, table, div, p, dl {\n"
+" font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;\n"
+" font-size: 12px;\n"
"}\n"
-"BODY,TD {\n"
-" font-size: 90%;\n"
-"}\n"
-"H1 {\n"
+"\n"
+"/* @group Heading Levels */\n"
+"\n"
+"h1 {\n"
" text-align: center;\n"
-" font-size: 160%;\n"
+" font-size: 150%;\n"
"}\n"
-"H2 {\n"
+"\n"
+"h2 {\n"
" font-size: 120%;\n"
"}\n"
-"H3 {\n"
+"\n"
+"h3 {\n"
" font-size: 100%;\n"
"}\n"
-"CAPTION { \n"
-" font-weight: bold \n"
+"\n"
+"/* @end */\n"
+"\n"
+"caption {\n"
+" font-weight: bold;\n"
"}\n"
-"DIV.qindex {\n"
-" width: 100%;\n"
+"\n"
+"div.qindex, div.navpath, div.navtab{\n"
" background-color: #e8eef2;\n"
" border: 1px solid #84b0c7;\n"
" text-align: center;\n"
" margin: 2px;\n"
" padding: 2px;\n"
-" line-height: 140%;\n"
"}\n"
-"DIV.navpath {\n"
+"\n"
+"div.qindex, div.navpath {\n"
" width: 100%;\n"
-" background-color: #e8eef2;\n"
-" border: 1px solid #84b0c7;\n"
-" text-align: center;\n"
-" margin: 2px;\n"
-" padding: 2px;\n"
" line-height: 140%;\n"
"}\n"
-"DIV.navtab {\n"
-" background-color: #e8eef2;\n"
-" border: 1px solid #84b0c7;\n"
-" text-align: center;\n"
-" margin: 2px;\n"
-" margin-right: 15px;\n"
-" padding: 2px;\n"
+"\n"
+"div.navtab {\n"
+" margin-right: 15px;\n"
"}\n"
-"TD.navtab {\n"
-" font-size: 70%;\n"
+"\n"
+"/* @group Link Styling */\n"
+"\n"
+"a {\n"
+" color: #153788;\n"
+" font-weight: normal;\n"
+" text-decoration: none;\n"
"}\n"
-"A.qindex {\n"
-" text-decoration: none;\n"
-" font-weight: bold;\n"
-" color: #1A419D;\n"
+"\n"
+".contents a:visited {\n"
+" color: #1b77c5;\n"
"}\n"
-"A.qindex:visited {\n"
-" text-decoration: none;\n"
-" font-weight: bold;\n"
-" color: #1A419D\n"
+"\n"
+"a:hover {\n"
+" text-decoration: underline;\n"
"}\n"
-"A.qindex:hover {\n"
-" text-decoration: none;\n"
-" background-color: #ddddff;\n"
+"\n"
+"a.qindex {\n"
+" font-weight: bold;\n"
"}\n"
-"A.qindexHL {\n"
-" text-decoration: none;\n"
+"\n"
+"a.qindexHL {\n"
" font-weight: bold;\n"
" background-color: #6666cc;\n"
" color: #ffffff;\n"
" border: 1px double #9295C2;\n"
"}\n"
-"A.qindexHL:hover {\n"
-" text-decoration: none;\n"
-" background-color: #6666cc;\n"
-" color: #ffffff;\n"
-"}\n"
-"A.qindexHL:visited { \n"
-" text-decoration: none; \n"
-" background-color: #6666cc; \n"
-" color: #ffffff \n"
+"\n"
+"a.el {\n"
+" font-weight: bold;\n"
"}\n"
-"A.el { \n"
-" text-decoration: none; \n"
-" font-weight: bold \n"
+"\n"
+"a.elRef {\n"
"}\n"
-"A.elRef { \n"
-" font-weight: bold \n"
+"\n"
+"a.code {\n"
"}\n"
-"A.code:link { \n"
-" text-decoration: none; \n"
-" font-weight: normal; \n"
-" color: #0000FF\n"
+"\n"
+"a.codeRef {\n"
"}\n"
-"A.code:visited { \n"
-" text-decoration: none; \n"
-" font-weight: normal; \n"
-" color: #0000FF\n"
+"\n"
+"/* @end */\n"
+"\n"
+"dl.el {\n"
+" margin-left: -1cm;\n"
"}\n"
-"A.codeRef:link { \n"
-" font-weight: normal; \n"
-" color: #0000FF\n"
+"\n"
+".fragment {\n"
+" font-family: monospace, fixed;\n"
+" font-size: 105%;\n"
"}\n"
-"A.codeRef:visited { \n"
-" font-weight: normal; \n"
-" color: #0000FF\n"
+"\n"
+"pre.fragment {\n"
+" border: 1px solid #CCCCCC;\n"
+" background-color: #f5f5f5;\n"
+" padding: 4px 6px;\n"
+" margin: 4px 8px 4px 2px;\n"
"}\n"
-"A:hover { \n"
-" text-decoration: none; \n"
-" background-color: #f2f2ff \n"
+"\n"
+"div.ah {\n"
+" background-color: black;\n"
+" font-weight: bold;\n"
+" color: #ffffff;\n"
+" margin-bottom: 3px;\n"
+" margin-top: 3px\n"
"}\n"
-"DL.el { \n"
-" margin-left: -1cm \n"
+"\n"
+"div.groupHeader {\n"
+" margin-left: 16px;\n"
+" margin-top: 12px;\n"
+" margin-bottom: 6px;\n"
+" font-weight: bold;\n"
"}\n"
-".fragment {\n"
-" font-family: monospace, fixed;\n"
-" font-size: 95%;\n"
+"\n"
+"div.groupText {\n"
+" margin-left: 16px;\n"
+" font-style: italic;\n"
"}\n"
-"PRE.fragment {\n"
-" border: 1px solid #CCCCCC;\n"
-" background-color: #f5f5f5;\n"
-" margin-top: 4px;\n"
-" margin-bottom: 4px;\n"
-" margin-left: 2px;\n"
-" margin-right: 8px;\n"
-" padding-left: 6px;\n"
-" padding-right: 6px;\n"
-" padding-top: 4px;\n"
-" padding-bottom: 4px;\n"
-"}\n"
-"DIV.ah { \n"
-" background-color: black; \n"
-" font-weight: bold; \n"
-" color: #ffffff; \n"
-" margin-bottom: 3px; \n"
-" margin-top: 3px \n"
-"}\n"
-"\n"
-"DIV.groupHeader {\n"
-" margin-left: 16px;\n"
-" margin-top: 12px;\n"
-" margin-bottom: 6px;\n"
-" font-weight: bold;\n"
-"}\n"
-"DIV.groupText { \n"
-" margin-left: 16px; \n"
-" font-style: italic; \n"
-" font-size: 90% \n"
-"}\n"
-"BODY {\n"
+"\n"
+"body {\n"
" background: white;\n"
" color: black;\n"
" margin-right: 20px;\n"
" margin-left: 20px;\n"
"}\n"
-"TD.indexkey {\n"
+"\n"
+"td.indexkey {\n"
" background-color: #e8eef2;\n"
" font-weight: bold;\n"
-" padding-right : 10px;\n"
-" padding-top : 2px;\n"
-" padding-left : 10px;\n"
-" padding-bottom : 2px;\n"
-" margin-left : 0px;\n"
-" margin-right : 0px;\n"
-" margin-top : 2px;\n"
-" margin-bottom : 2px;\n"
" border: 1px solid #CCCCCC;\n"
+" margin: 2px 0px 2px 0;\n"
+" padding: 2px 10px;\n"
"}\n"
-"TD.indexvalue {\n"
+"\n"
+"td.indexvalue {\n"
" background-color: #e8eef2;\n"
-" font-style: italic;\n"
-" padding-right : 10px;\n"
-" padding-top : 2px;\n"
-" padding-left : 10px;\n"
-" padding-bottom : 2px;\n"
-" margin-left : 0px;\n"
-" margin-right : 0px;\n"
-" margin-top : 2px;\n"
-" margin-bottom : 2px;\n"
+"// font-style: italic;\n"
" border: 1px solid #CCCCCC;\n"
+" padding: 2px 10px;\n"
+" margin: 2px 0px;\n"
"}\n"
-"TR.memlist {\n"
-" background-color: #f0f0f0; \n"
+"\n"
+"tr.memlist {\n"
+" background-color: #f0f0f0;\n"
"}\n"
-"P.formulaDsp { \n"
-" text-align: center; \n"
+"\n"
+"p.formulaDsp {\n"
+" text-align: center;\n"
"}\n"
-"IMG.formulaDsp {\n"
+"\n"
+"img.formulaDsp {\n"
+" \n"
"}\n"
-"IMG.formulaInl { \n"
-" vertical-align: middle; \n"
+"\n"
+"img.formulaInl {\n"
+" vertical-align: middle;\n"
"}\n"
-"SPAN.keyword { color: #008000 }\n"
-"SPAN.keywordtype { color: #604020 }\n"
-"SPAN.keywordflow { color: #e08000 }\n"
-"SPAN.comment { color: #800000 }\n"
-"SPAN.preprocessor { color: #806020 }\n"
-"SPAN.stringliteral { color: #002080 }\n"
-"SPAN.charliteral { color: #008080 }\n"
-"SPAN.vhdldigit { color: #ff00ff }\n"
-"SPAN.vhdlchar { color: #000000 }\n"
-"SPAN.vhdlkeyword { color: #700070 }\n"
-"SPAN.vhdllogic { color: #ff0000 }\n"
"\n"
-".mdescLeft {\n"
-" padding: 0px 8px 4px 8px;\n"
-" font-size: 80%;\n"
-" font-style: italic;\n"
-" background-color: #FAFAFA;\n"
-" border-top: 1px none #E0E0E0;\n"
-" border-right: 1px none #E0E0E0;\n"
-" border-bottom: 1px none #E0E0E0;\n"
-" border-left: 1px none #E0E0E0;\n"
-" margin: 0px;\n"
+"/* @group Code Colorization */\n"
+"\n"
+"span.keyword {\n"
+" color: #008000\n"
"}\n"
-".mdescRight {\n"
-" padding: 0px 8px 4px 8px;\n"
-" font-size: 80%;\n"
-" font-style: italic;\n"
-" background-color: #FAFAFA;\n"
-" border-top: 1px none #E0E0E0;\n"
-" border-right: 1px none #E0E0E0;\n"
-" border-bottom: 1px none #E0E0E0;\n"
-" border-left: 1px none #E0E0E0;\n"
-" margin: 0px;\n"
+"\n"
+"span.keywordtype {\n"
+" color: #604020\n"
"}\n"
-".memItemLeft {\n"
-" padding: 1px 0px 0px 8px;\n"
-" margin: 4px;\n"
-" border-top-width: 1px;\n"
-" border-right-width: 1px;\n"
-" border-bottom-width: 1px;\n"
-" border-left-width: 1px;\n"
-" border-top-color: #E0E0E0;\n"
-" border-right-color: #E0E0E0;\n"
-" border-bottom-color: #E0E0E0;\n"
-" border-left-color: #E0E0E0;\n"
-" border-top-style: solid;\n"
-" border-right-style: none;\n"
-" border-bottom-style: none;\n"
-" border-left-style: none;\n"
-" background-color: #FAFAFA;\n"
-" font-size: 80%;\n"
+"\n"
+"span.keywordflow {\n"
+" color: #e08000\n"
"}\n"
-".memItemRight {\n"
-" padding: 1px 8px 0px 8px;\n"
-" margin: 4px;\n"
-" border-top-width: 1px;\n"
-" border-right-width: 1px;\n"
-" border-bottom-width: 1px;\n"
-" border-left-width: 1px;\n"
-" border-top-color: #E0E0E0;\n"
-" border-right-color: #E0E0E0;\n"
-" border-bottom-color: #E0E0E0;\n"
-" border-left-color: #E0E0E0;\n"
-" border-top-style: solid;\n"
-" border-right-style: none;\n"
-" border-bottom-style: none;\n"
-" border-left-style: none;\n"
-" background-color: #FAFAFA;\n"
-" font-size: 80%;\n"
+"\n"
+"span.comment {\n"
+" color: #800000\n"
"}\n"
-".memTemplItemLeft {\n"
-" padding: 1px 0px 0px 8px;\n"
-" margin: 4px;\n"
-" border-top-width: 1px;\n"
-" border-right-width: 1px;\n"
-" border-bottom-width: 1px;\n"
-" border-left-width: 1px;\n"
-" border-top-color: #E0E0E0;\n"
-" border-right-color: #E0E0E0;\n"
-" border-bottom-color: #E0E0E0;\n"
-" border-left-color: #E0E0E0;\n"
-" border-top-style: none;\n"
-" border-right-style: none;\n"
-" border-bottom-style: none;\n"
-" border-left-style: none;\n"
-" background-color: #FAFAFA;\n"
-" font-size: 80%;\n"
+"\n"
+"span.preprocessor {\n"
+" color: #806020\n"
"}\n"
-".memTemplItemRight {\n"
-" padding: 1px 8px 0px 8px;\n"
-" margin: 4px;\n"
-" border-top-width: 1px;\n"
-" border-right-width: 1px;\n"
-" border-bottom-width: 1px;\n"
-" border-left-width: 1px;\n"
-" border-top-color: #E0E0E0;\n"
-" border-right-color: #E0E0E0;\n"
-" border-bottom-color: #E0E0E0;\n"
-" border-left-color: #E0E0E0;\n"
-" border-top-style: none;\n"
-" border-right-style: none;\n"
-" border-bottom-style: none;\n"
-" border-left-style: none;\n"
-" background-color: #FAFAFA;\n"
-" font-size: 80%;\n"
+"\n"
+"span.stringliteral {\n"
+" color: #002080\n"
"}\n"
-".memTemplParams {\n"
-" padding: 1px 0px 0px 8px;\n"
-" margin: 4px;\n"
-" border-top-width: 1px;\n"
-" border-right-width: 1px;\n"
-" border-bottom-width: 1px;\n"
-" border-left-width: 1px;\n"
-" border-top-color: #E0E0E0;\n"
-" border-right-color: #E0E0E0;\n"
-" border-bottom-color: #E0E0E0;\n"
-" border-left-color: #E0E0E0;\n"
-" border-top-style: solid;\n"
-" border-right-style: none;\n"
-" border-bottom-style: none;\n"
-" border-left-style: none;\n"
-" color: #606060;\n"
-" background-color: #FAFAFA;\n"
-" font-size: 80%;\n"
+"\n"
+"span.charliteral {\n"
+" color: #008080\n"
+"}\n"
+"\n"
+"span.vhdldigit { \n"
+" color: #ff00ff \n"
+"}\n"
+"\n"
+"span.vhdlchar { \n"
+" color: #000000 \n"
+"}\n"
+"\n"
+"span.vhdlkeyword { \n"
+" color: #700070 \n"
"}\n"
-".search { \n"
+"\n"
+"span.vhdllogic { \n"
+" color: #ff0000 \n"
+"}\n"
+"\n"
+"/* @end */\n"
+"\n"
+".search {\n"
" color: #003399;\n"
" font-weight: bold;\n"
"}\n"
-"FORM.search {\n"
+"\n"
+"form.search {\n"
" margin-bottom: 0px;\n"
" margin-top: 0px;\n"
"}\n"
-"INPUT.search { \n"
+"\n"
+"input.search {\n"
" font-size: 75%;\n"
" color: #000080;\n"
" font-weight: normal;\n"
" background-color: #e8eef2;\n"
"}\n"
-"TD.tiny { \n"
+"\n"
+"td.tiny {\n"
" font-size: 75%;\n"
"}\n"
-"a {\n"
-" color: #1A41A8;\n"
-"}\n"
-"a:visited {\n"
-" color: #2A3798;\n"
-"}\n"
-".dirtab { \n"
+"\n"
+".dirtab {\n"
" padding: 4px;\n"
" border-collapse: collapse;\n"
" border: 1px solid #84b0c7;\n"
"}\n"
-"TH.dirtab { \n"
+"\n"
+"th.dirtab {\n"
" background: #e8eef2;\n"
" font-weight: bold;\n"
"}\n"
-"HR { \n"
-" height: 1px;\n"
+"\n"
+"hr {\n"
+" height: 0;\n"
+" border: none;\n"
+" border-top: 1px solid #666;\n"
+"}\n"
+"\n"
+"/* @group Member Descriptions */\n"
+"\n"
+".mdescLeft, .mdescRight,\n"
+".memItemLeft, .memItemRight,\n"
+".memTemplItemLeft, .memTemplItemRight, .memTemplParams {\n"
+" background-color: #FAFAFA;\n"
" border: none;\n"
-" border-top: 1px solid black;\n"
+" margin: 4px;\n"
+" padding: 1px 0 0 8px;\n"
+"}\n"
+"\n"
+".mdescLeft, .mdescRight {\n"
+" padding: 0px 8px 4px 8px;\n"
+" color: #555;\n"
+"}\n"
+"\n"
+".memItemLeft, .memItemRight, .memTemplParams {\n"
+" border-top: 1px solid #ccc;\n"
"}\n"
"\n"
-"/* Style for detailed member documentation */\n"
+".memTemplParams {\n"
+" color: #606060;\n"
+"}\n"
+"\n"
+"/* @end */\n"
+"\n"
+"/* @group Member Details */\n"
+"\n"
+"/* Styles for detailed member documentation */\n"
+"\n"
".memtemplate {\n"
" font-size: 80%;\n"
" color: #606060;\n"
" font-weight: normal;\n"
" margin-left: 3px;\n"
-"} \n"
-".memnav { \n"
+"}\n"
+"\n"
+".memnav {\n"
" background-color: #e8eef2;\n"
" border: 1px solid #84b0c7;\n"
" text-align: center;\n"
@@ -365,109 +289,154 @@
" margin-right: 15px;\n"
" padding: 2px;\n"
"}\n"
+"\n"
".memitem {\n"
-" padding: 4px;\n"
-" background-color: #eef3f5;\n"
-" border-width: 1px;\n"
-" border-style: solid;\n"
-" border-color: #dedeee;\n"
-" -moz-border-radius: 8px 8px 8px 8px;\n"
+" padding: 0;\n"
"}\n"
+"\n"
".memname {\n"
" white-space: nowrap;\n"
" font-weight: bold;\n"
"}\n"
-".memdoc{\n"
-" padding-left: 10px;\n"
+"\n"
+".memproto, .memdoc {\n"
+" border: 1px solid #84b0c7; \n"
"}\n"
+"\n"
".memproto {\n"
+" padding: 0;\n"
" background-color: #d5e1e8;\n"
-" width: 100%;\n"
-" border-width: 1px;\n"
-" border-style: solid;\n"
-" border-color: #84b0c7;\n"
" font-weight: bold;\n"
-" -moz-border-radius: 8px 8px 8px 8px;\n"
+" -webkit-border-top-left-radius: 8px;\n"
+" -webkit-border-top-right-radius: 8px;\n"
+" -moz-border-radius-topleft: 8px;\n"
+" -moz-border-radius-topright: 8px;\n"
+"}\n"
+"\n"
+".memdoc {\n"
+" padding: 2px 5px;\n"
+" background-color: #eef3f5;\n"
+" border-top-width: 0;\n"
+" -webkit-border-bottom-left-radius: 8px;\n"
+" -webkit-border-bottom-right-radius: 8px;\n"
+" -moz-border-radius-bottomleft: 8px;\n"
+" -moz-border-radius-bottomright: 8px;\n"
+"}\n"
+"\n"
+".memdoc p, .memdoc dl, .memdoc ul {\n"
+" margin: 6px 0;\n"
"}\n"
+"\n"
".paramkey {\n"
" text-align: right;\n"
"}\n"
+"\n"
".paramtype {\n"
" white-space: nowrap;\n"
"}\n"
+"\n"
".paramname {\n"
" color: #602020;\n"
-" font-style: italic;\n"
" white-space: nowrap;\n"
"}\n"
-"/* End Styling for detailed member documentation */\n"
+".paramname em {\n"
+" font-style: normal;\n"
+"}\n"
+"\n"
+"/* @end */\n"
+"\n"
+"/* @group Directory (tree) */\n"
"\n"
"/* for the tree view */\n"
+"\n"
".ftvtree {\n"
" font-family: sans-serif;\n"
-" margin:0.5em;\n"
+" margin: 0.5em;\n"
"}\n"
+"\n"
"/* these are for tree view when used as main index */\n"
-".directory { \n"
-" font-size: 9pt; \n"
-" font-weight: bold; \n"
+"\n"
+".directory {\n"
+" font-size: 9pt;\n"
+" font-weight: bold;\n"
"}\n"
-".directory h3 { \n"
-" margin: 0px; \n"
-" margin-top: 1em; \n"
-" font-size: 11pt; \n"
+"\n"
+".directory h3 {\n"
+" margin: 0px;\n"
+" margin-top: 1em;\n"
+" font-size: 11pt;\n"
"}\n"
"\n"
-"/* The following two styles can be used to replace the root node title */\n"
-"/* with an image of your choice. Simply uncomment the next two styles, */\n"
-"/* specify the name of your image and be sure to set \'height\' to the */\n"
-"/* proper pixel height of your image. */\n"
+"/*\n"
+"The following two styles can be used to replace the root node title\n"
+"with an image of your choice. Simply uncomment the next two styles,\n"
+"specify the name of your image and be sure to set 'height' to the\n"
+"proper pixel height of your image.\n"
+"*/\n"
"\n"
-"/* .directory h3.swap { */\n"
-"/* height: 61px; */\n"
-"/* background-repeat: no-repeat; */\n"
-"/* background-image: url(\"yourimage.gif\"); */\n"
-"/* } */\n"
-"/* .directory h3.swap span { */\n"
-"/* display: none; */\n"
-"/* } */\n"
+"/*\n"
+".directory h3.swap {\n"
+" height: 61px;\n"
+" background-repeat: no-repeat;\n"
+" background-image: url(\"yourimage.gif\");\n"
+"}\n"
+".directory h3.swap span {\n"
+" display: none;\n"
+"}\n"
+"*/\n"
"\n"
-".directory > h3 { \n"
-" margin-top: 0; \n"
+".directory > h3 {\n"
+" margin-top: 0;\n"
"}\n"
-".directory p { \n"
-" margin: 0px; \n"
-" white-space: nowrap; \n"
+"\n"
+".directory p {\n"
+" margin: 0px;\n"
+" white-space: nowrap;\n"
"}\n"
-".directory div { \n"
-" display: none; \n"
-" margin: 0px; \n"
+"\n"
+".directory div {\n"
+" display: none;\n"
+" margin: 0px;\n"
"}\n"
-".directory img { \n"
-" vertical-align: -30%; \n"
+"\n"
+".directory img {\n"
+" vertical-align: -30%;\n"
"}\n"
+"\n"
"/* these are for tree view when not used as main index */\n"
-".directory-alt { \n"
-" font-size: 100%; \n"
-" font-weight: bold; \n"
+"\n"
+".directory-alt {\n"
+" font-size: 100%;\n"
+" font-weight: bold;\n"
"}\n"
-".directory-alt h3 { \n"
-" margin: 0px; \n"
-" margin-top: 1em; \n"
-" font-size: 11pt; \n"
+"\n"
+".directory-alt h3 {\n"
+" margin: 0px;\n"
+" margin-top: 1em;\n"
+" font-size: 11pt;\n"
"}\n"
-".directory-alt > h3 { \n"
-" margin-top: 0; \n"
+"\n"
+".directory-alt > h3 {\n"
+" margin-top: 0;\n"
"}\n"
-".directory-alt p { \n"
-" margin: 0px; \n"
-" white-space: nowrap; \n"
+"\n"
+".directory-alt p {\n"
+" margin: 0px;\n"
+" white-space: nowrap;\n"
"}\n"
-".directory-alt div { \n"
-" display: none; \n"
-" margin: 0px; \n"
+"\n"
+".directory-alt div {\n"
+" display: none;\n"
+" margin: 0px;\n"
"}\n"
-".directory-alt img { \n"
-" vertical-align: -30%; \n"
+"\n"
+".directory-alt img {\n"
+" vertical-align: -30%;\n"
"}\n"
"\n"
+"/* @end */\n"
+"\n"
+"address {\n"
+" font-style: normal;\n"
+" color: #333;\n"
+"}\n"
diff --git a/src/entry.cpp b/src/entry.cpp
index d0ba5cb..fb45e5f 100644
--- a/src/entry.cpp
+++ b/src/entry.cpp
@@ -69,7 +69,7 @@ Entry::Entry()
mGrpId = -1;
tagInfo = 0;
sli = 0;
- relatesDup = FALSE;
+ relatesType = Simple;
hidden = FALSE;
groupDocType = GROUPDOC_NORMAL;
reset();
@@ -98,7 +98,7 @@ Entry::Entry(const Entry &e)
docLine = e.docLine;
docFile = e.docFile.copy();
relates = e.relates.copy();
- relatesDup = e.relatesDup;
+ relatesType = e.relatesType;
read = e.read.copy();
write = e.write.copy();
brief = e.brief.copy();
@@ -255,7 +255,7 @@ void Entry::reset()
docFile.resize(0);
docLine=-1;
relates.resize(0);
- relatesDup=FALSE;
+ relatesType=Simple;
brief.resize(0);
briefFile.resize(0);
briefLine=-1;
diff --git a/src/entry.h b/src/entry.h
index f87182c..10c3319 100644
--- a/src/entry.h
+++ b/src/entry.h
@@ -33,6 +33,8 @@ class StorageIntf;
enum Protection { Public, Protected, Private, Package } ;
enum Specifier { Normal, Virtual, Pure } ;
enum MethodTypes { Method, Signal, Slot, DCOP, Property, Event };
+enum RelatesType { Simple, Duplicate, MemberOf };
+enum Relationship { Member, Related, Foreign };
struct ListItemInfo
{
@@ -350,7 +352,7 @@ class Entry
int inbodyLine; //!< line number at which the body doc was found
QCString inbodyFile; //!< file in which the body doc was found
QCString relates; //!< related class (doc block)
- bool relatesDup; //!< keep duplicate doc in original file also
+ RelatesType relatesType; //!< how relates is handled
QCString read; //!< property read accessor
QCString write; //!< property write accessor
QCString inside; //!< name of the class in which documents are found
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index e193a17..984bb4f 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -1162,8 +1162,16 @@ MemberList *GroupDef::getMemberList(MemberList::ListType lt) const
void GroupDef::writeMemberDeclarations(OutputList &ol,MemberList::ListType lt,const QCString &title)
{
+ static bool optimizeVhdl = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
+
MemberList * ml = getMemberList(lt);
- if (ml) ml->writeDeclarations(ol,0,0,0,this,title,0);
+ if (optimizeVhdl && ml)
+ {
+ VhdlDocGen::writeVhdlDeclarations(ml,ol,this,0);
+ return;
+ }
+ if (ml)
+ ml->writeDeclarations(ol,0,0,0,this,title,0);
}
void GroupDef::writeMemberDocumentation(OutputList &ol,MemberList::ListType lt,const QCString &title)
diff --git a/src/increasebuffer.pl b/src/increasebuffer.pl
index 056a6b5..109f9ad 100755
--- a/src/increasebuffer.pl
+++ b/src/increasebuffer.pl
@@ -4,5 +4,6 @@
while (<>)
{
s/YY_BUF_SIZE 16384/YY_BUF_SIZE 262144/g;
+ s/YY_READ_BUF_SIZE 8192/YY_READ_BUF_SIZE 262144/g;
print $_;
}
diff --git a/src/index.cpp b/src/index.cpp
index 2b4c895..79240ce 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -1577,7 +1577,8 @@ void addClassMemberNameToIndex(MemberDef *md)
g_memberIndexLetterUsed[CMHL_Events][letter].append(md);
documentedClassMembers[CMHL_Events]++;
}
- else if (md->isRelated() || (md->isFriend() && !isFriendToHide))
+ else if (md->isRelated() || md->isForeign() ||
+ (md->isFriend() && !isFriendToHide))
{
g_memberIndexLetterUsed[CMHL_Related][letter].append(md);
documentedClassMembers[CMHL_Related]++;
@@ -2954,7 +2955,8 @@ void writeIndex(OutputList &ol)
for (pdi.toFirst();(pd=pdi.current());++pdi)
{
if (!pd->getGroupDef() && !pd->isReference() &&
- !pd->hasParentPage()
+ (!pd->hasParentPage() || // not inside other page
+ (Doxygen::mainPage==pd->getOuterScope())) // or inside main page
)
{
QCString title = pd->title();
diff --git a/src/language.cpp b/src/language.cpp
index ebe6c84..e1bd947 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -340,7 +340,7 @@ bool setTranslator(const char *langName)
#ifdef LANG_CA
else if (L_EQUAL("catalan"))
{
- theTranslator=new TranslatorDecoder(new TranslatorCatalan);
+ theTranslator=new TranslatorCatalan;
}
#endif
#ifdef LANG_LT
diff --git a/src/marshal.cpp b/src/marshal.cpp
index 8983e27..803c53b 100644
--- a/src/marshal.cpp
+++ b/src/marshal.cpp
@@ -395,7 +395,7 @@ void marshalEntry(StorageIntf *s,Entry *e)
marshalInt(s,e->inbodyLine);
marshalQCString(s,e->inbodyFile);
marshalQCString(s,e->relates);
- marshalBool(s,e->relatesDup);
+ marshalInt(s,e->relatesType);
marshalQCString(s,e->read);
marshalQCString(s,e->write);
marshalQCString(s,e->inside);
@@ -788,7 +788,7 @@ Entry * unmarshalEntry(StorageIntf *s)
e->inbodyLine = unmarshalInt(s);
e->inbodyFile = unmarshalQCString(s);
e->relates = unmarshalQCString(s);
- e->relatesDup = unmarshalBool(s);
+ e->relatesType = (RelatesType)unmarshalInt(s);
e->read = unmarshalQCString(s);
e->write = unmarshalQCString(s);
e->inside = unmarshalQCString(s);
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 824d8e9..a57238b 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -306,8 +306,9 @@ class MemberDefImpl
MemberDefImpl();
~MemberDefImpl();
void init(Definition *def,const char *t,const char *a,const char *e,
- Protection p,Specifier v,bool s,bool r,MemberDef::MemberType mt,
- const ArgumentList *tal,const ArgumentList *al
+ Protection p,Specifier v,bool s,Relationship r,
+ MemberDef::MemberType mt,const ArgumentList *tal,
+ const ArgumentList *al
);
ClassDef *classDef; // member of or related to
@@ -395,7 +396,7 @@ class MemberDefImpl
bool hasDocumentedParams;
bool hasDocumentedReturnType;
bool isDMember;
- bool related; // is this a member that is only related to a class
+ Relationship related; // relationship of this to the class
bool stat; // is it a static function?
bool proto; // is it a prototype;
bool docEnumValues; // is an enum with documented enum values.
@@ -439,8 +440,9 @@ MemberDefImpl::~MemberDefImpl()
void MemberDefImpl::init(Definition *def,
const char *t,const char *a,const char *e,
- Protection p,Specifier v,bool s,bool r,MemberDef::MemberType mt,
- const ArgumentList *tal,const ArgumentList *al
+ Protection p,Specifier v,bool s,Relationship r,
+ MemberDef::MemberType mt,const ArgumentList *tal,
+ const ArgumentList *al
)
{
classDef=0;
@@ -572,7 +574,7 @@ void MemberDefImpl::init(Definition *def,
* \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 iff the member is static.
- * \param r A boolean that is true iff the member is only related.
+ * \param r The relationship between the class and the member.
* \param mt The kind of member. See #MemberDef::MemberType for a list of
* all types.
* \param tal The template arguments of this member.
@@ -582,7 +584,7 @@ void MemberDefImpl::init(Definition *def,
MemberDef::MemberDef(const char *df,int dl,
const char *t,const char *na,const char *a,const char *e,
- Protection p,Specifier v,bool s,bool r,MemberType mt,
+ Protection p,Specifier v,bool s,Relationship r,MemberType mt,
const ArgumentList *tal,const ArgumentList *al
) : Definition(df,dl,removeRedundantWhiteSpace(na))
{
@@ -3201,7 +3203,13 @@ bool MemberDef::isEvent() const
bool MemberDef::isRelated() const
{
makeResident();
- return m_impl->related;
+ return m_impl->related == Related;
+}
+
+bool MemberDef::isForeign() const
+{
+ makeResident();
+ return m_impl->related == Foreign;
}
bool MemberDef::isStatic() const
@@ -3638,7 +3646,13 @@ void MemberDef::setTemplateSpecialization(bool b)
void MemberDef::makeRelated()
{
makeResident();
- m_impl->related=TRUE;
+ m_impl->related = Related;
+}
+
+void MemberDef::makeForeign()
+{
+ makeResident();
+ m_impl->related = Foreign;
}
void MemberDef::setHasDocumentedParams(bool b)
@@ -3838,7 +3852,7 @@ void MemberDef::flushToDisk() const
marshalBool (Doxygen::symbolStorage,m_impl->hasDocumentedParams);
marshalBool (Doxygen::symbolStorage,m_impl->hasDocumentedReturnType);
marshalBool (Doxygen::symbolStorage,m_impl->isDMember);
- marshalBool (Doxygen::symbolStorage,m_impl->related);
+ marshalInt (Doxygen::symbolStorage,(int)m_impl->related);
marshalBool (Doxygen::symbolStorage,m_impl->stat);
marshalBool (Doxygen::symbolStorage,m_impl->proto);
marshalBool (Doxygen::symbolStorage,m_impl->docEnumValues);
@@ -3938,7 +3952,7 @@ void MemberDef::loadFromDisk() const
m_impl->hasDocumentedParams = unmarshalBool (Doxygen::symbolStorage);
m_impl->hasDocumentedReturnType = unmarshalBool (Doxygen::symbolStorage);
m_impl->isDMember = unmarshalBool (Doxygen::symbolStorage);
- m_impl->related = unmarshalBool (Doxygen::symbolStorage);
+ m_impl->related = (Relationship)unmarshalInt(Doxygen::symbolStorage);
m_impl->stat = unmarshalBool (Doxygen::symbolStorage);
m_impl->proto = unmarshalBool (Doxygen::symbolStorage);
m_impl->docEnumValues = unmarshalBool (Doxygen::symbolStorage);
diff --git a/src/memberdef.h b/src/memberdef.h
index 6336269..8dbcf0e 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -69,7 +69,7 @@ class MemberDef : public Definition
MemberDef(const char *defFileName,int defLine,
const char *type,const char *name,const char *args,
const char *excp,Protection prot,Specifier virt,bool stat,
- bool related,MemberType t,const ArgumentList *tal,
+ Relationship related,MemberType t,const ArgumentList *tal,
const ArgumentList *al);
~MemberDef();
DefType definitionType() const { return TypeMember; }
@@ -133,6 +133,7 @@ class MemberDef : public Definition
bool isProperty() const;
bool isEvent() const;
bool isRelated() const;
+ bool isForeign() const;
bool isStatic() const;
bool isInline() const;
bool isExplicit() const;
@@ -257,6 +258,7 @@ class MemberDef : public Definition
void setTemplateSpecialization(bool b);
void makeRelated();
+ void makeForeign();
void setHasDocumentedParams(bool b);
void setHasDocumentedReturnType(bool b);
void setInheritsDocsFrom(MemberDef *md);
diff --git a/src/pagedef.cpp b/src/pagedef.cpp
index 9168d82..2f59f2a 100644
--- a/src/pagedef.cpp
+++ b/src/pagedef.cpp
@@ -49,7 +49,14 @@ void PageDef::addInnerCompound(Definition *def)
PageDef *pd = (PageDef*)def;
m_subPageDict->append(pd->name(),pd);
def->setOuterScope(this);
- pd->setNestingLevel(m_nestingLevel+1);
+ if (this==Doxygen::mainPage)
+ {
+ pd->setNestingLevel(m_nestingLevel);
+ }
+ else
+ {
+ pd->setNestingLevel(m_nestingLevel+1);
+ }
}
}
@@ -71,8 +78,12 @@ void PageDef::writeDocumentation(OutputList &ol)
startFile(ol,pageName,pageName,title(),HLI_None,TRUE);
ol.pushGeneratorState();
+ //1.{
- if (m_nestingLevel>0) // a sub page
+ if (m_nestingLevel>0
+ //&& // a sub page
+ //(Doxygen::mainPage==0 || getOuterScope()!=Doxygen::mainPage) // and not a subpage of the mainpage
+ )
{
// do not generate sub page output for RTF and LaTeX, as these are
// part of their parent page
@@ -91,13 +102,16 @@ void PageDef::writeDocumentation(OutputList &ol)
// save old generator state and write title only to Man generator
ol.pushGeneratorState();
+ //2.{
ol.disableAllBut(OutputGenerator::Man);
ol.startTitleHead(pageName);
ol.endTitleHead(pageName, pageName);
ol.popGeneratorState();
+ //2.}
// for Latex the section is already generated as a chapter in the index!
ol.pushGeneratorState();
+ //2.{
ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::RTF);
SectionInfo *si=0;
@@ -112,10 +126,12 @@ void PageDef::writeDocumentation(OutputList &ol)
ol.endSection(si->label,si->type);
}
ol.popGeneratorState();
+ //2.}
writePageDocumentation(ol);
ol.popGeneratorState();
+ //1.}
endFile(ol);
diff --git a/src/pre.l b/src/pre.l
index 8fd51e6..5d5a79c 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -1040,7 +1040,7 @@ void addDefine()
MemberDef *md=new MemberDef(
g_yyFileName,g_yyLineNr,
"#define",g_defName,g_defArgsStr,0,
- Public,Normal,FALSE,FALSE,MemberDef::Define,0,0);
+ Public,Normal,FALSE,Member,MemberDef::Define,0,0);
if (!g_defArgsStr.isEmpty())
{
ArgumentList *argList = new ArgumentList;
diff --git a/src/scanner.l b/src/scanner.l
index 4557ac1..b102853 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -1594,7 +1594,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
current->tArgLists->append(al);
currentArgumentList = al;
templateStr="<";
- fullArgString = templateStr.copy();
+ fullArgString = templateStr;
copyArgString = &templateStr;
currentArgumentContext = FindMembers;
BEGIN( ReadTempArgs );
@@ -4326,9 +4326,10 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
current->spec |= Entry::Template;
current->tArgLists->append(al);
currentArgumentList = al;
+ current->name+="<";
templateStr="<";
fullArgString = templateStr;
- copyArgString = &templateStr;
+ copyArgString = &current->name;
currentArgumentContext = CompoundName;
BEGIN( ReadTempArgs );
}
diff --git a/src/translator_br.h b/src/translator_br.h
index 56708cf..7012f40 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -15,6 +15,8 @@
* Thanks to Jorge Ramos and others for their contributions.
*
* History:
+ * 20080709:
+ * - References to MAX_DOT_GRAPH_HEIGHT removed from trLegendDocs().
* 20080206:
* - Method trTypeContraints() renamed to trTypeConstraints().
* 20071216:
@@ -1028,9 +1030,7 @@ class TranslatorBrazilian : public Translator
" 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:"
+ "Isto irá gerar o seguinte gráfo:"
"<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
"<p>\n"
"As caixas no grafo acima tem as seguintes interpretações:\n"
diff --git a/src/translator_ca.h b/src/translator_ca.h
index 38e5dcf..da3940e 100644
--- a/src/translator_ca.h
+++ b/src/translator_ca.h
@@ -18,28 +18,29 @@
#ifndef TRANSLATOR_CA_H
#define TRANSLATOR_CA_H
-// When defining a translator class for the new language, follow
-// the description in the documentation. One of the steps says
-// that you should copy the translator_en.h (this) file to your
-// translator_xx.h new file. Your new language should use the
-// Translator class as the base class. This means that you need to
-// implement exactly the same (pure virtual) methods as the
-// TranslatorEnglish does. Because of this, it is a good idea to
-// start with the copy of TranslatorEnglish and replace the strings
-// one by one.
-//
-// It is not necessary to include "translator.h" or
-// "translator_adapter.h" here. The files are included in the
-// language.cpp correctly. Not including any of the mentioned
-// files frees the maintainer from thinking about whether the
-// first, the second, or both files should be included or not, and
-// why. This holds namely for localized translators because their
-// base class is changed occasionaly to adapter classes when the
-// Translator class changes the interface, or back to the
-// Translator class (by the local maintainer) when the localized
-// translator is made up-to-date again.
-
-class TranslatorCatalan : public TranslatorAdapter_1_5_4
+/*!
+ When defining a translator class for the new language, follow
+ the description in the documentation. One of the steps says
+ that you should copy the translator_en.h (this) file to your
+ translator_xx.h new file. Your new language should use the
+ Translator class as the base class. This means that you need to
+ implement exactly the same (pure virtual) methods as the
+ TranslatorEnglish does. Because of this, it is a good idea to
+ start with the copy of TranslatorEnglish and replace the strings
+ one by one.
+
+ It is not necessary to include "translator.h" or
+ "translator_adapter.h" here. The files are included in the
+ language.cpp correctly. Not including any of the mentioned
+ files frees the maintainer from thinking about whether the
+ first, the second, or both files should be included or not, and
+ why. This holds namely for localized translators because their
+ base class is changed occasionaly to adapter classes when the
+ Translator class changes the interface, or back to the
+ Translator class (by the local maintainer) when the localized
+ translator is made up-to-date again.
+*/
+class TranslatorCatalan : public Translator
{
public:
@@ -77,7 +78,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset()
{
- return "iso-8859-1";
+ return "utf-8";
}
// --- Language translation methods -------------------
@@ -88,40 +89,40 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! subscript for the related functions. */
virtual QCString trRelatedSubscript()
- { return "(Remarcar que aquestes funcions no són funcions membre.)"; }
+ { return "(Remarcar que aquestes funcions no són funcions membre.)"; }
/*! header that is put before the detailed description of files, classes and namespaces. */
virtual QCString trDetailedDescription()
- { return "Descripció Detallada"; }
+ { return "Descripció Detallada"; }
/*! header that is put before the list of typedefs. */
virtual QCString trMemberTypedefDocumentation()
- { return "Documentació de les Definicions de Tipus Membre"; }
+ { return "Documentació de les Definicions de Tipus Membre"; }
/*! header that is put before the list of enumerations. */
virtual QCString trMemberEnumerationDocumentation()
- { return "Documentació de les Enumeracions Membre"; }
+ { return "Documentació de les Enumeracions Membre"; }
/*! header that is put before the list of member functions. */
virtual QCString trMemberFunctionDocumentation()
- { return "Documentació de les Funcions Membre"; }
+ { return "Documentació de les Funcions Membre"; }
/*! header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Documentació dels Camps";
+ return "Documentació dels Camps";
}
else
{
- return "Documentació de les Dades Membre";
+ return "Documentació de les Dades Membre";
}
}
/*! this is the text of a link put after brief descriptions. */
virtual QCString trMore()
- { return "Més..."; }
+ { return "Més..."; }
/*! put in the class documentation */
virtual QCString trListOfAllMembers()
@@ -133,7 +134,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! this is the first part of a sentence that is followed by a class name */
virtual QCString trThisIsTheListOfAllMembers()
- { return "Aquesta és la llista complerta dels membres de "; }
+ { return "Aquesta és la llista complerta dels membres de "; }
/*! this is the remainder of the sentence after the class name */
virtual QCString trIncludingInheritedMembers()
@@ -143,7 +144,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
* parameter s is name of the project name.
*/
virtual QCString trGeneratedAutomatically(const char *s)
- { QCString result="Generat automàticament per Doxygen";
+ { QCString result="Generat automàticament per Doxygen";
if (s) result+=(QCString)" per a "+s;
result+=" a partir del codi font.";
return result;
@@ -167,7 +168,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
* compounds or files (see the \\group command).
*/
virtual QCString trModules()
- { return "Mòduls"; }
+ { return "Mòduls"; }
/*! This is put above each page as a link to the class hierarchy */
virtual QCString trClassHierarchy()
@@ -218,7 +219,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! This is put above each page as a link to all related pages. */
virtual QCString trRelatedPages()
- { return "Pàgines Relacionades"; }
+ { return "Pàgines Relacionades"; }
/*! This is put above each page as a link to all examples. */
virtual QCString trExamples()
@@ -230,14 +231,14 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! This is an introduction to the class hierarchy. */
virtual QCString trClassHierarchyDescription()
- { return "Aquesta llista d'herència està ordenada toscament, "
- "però no completa, de forma alfabètica:";
+ { return "Aquesta llista d'herència està ordenada toscament, "
+ "però no completa, de forma alfabètica:";
}
/*! This is an introduction to the list with all files. */
virtual QCString trFileListDescription(bool extractAll)
{
- QCString result="Aquesta és la llista de tots els fitxers ";
+ QCString result="Aquesta és la llista de tots els fitxers ";
if (!extractAll) result+="documentats ";
result+="acompanyats amb breus descripcions:";
return result;
@@ -249,19 +250,19 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Aquestes són les estructures de dades acompanyades amb breus descripcions:";
+ return "Aquestes són les estructures de dades acompanyades amb breus descripcions:";
}
else
{
- return "Aquestes són les classes, estructures, "
- "unions i interfícies acompanyades amb breus descripcions:";
+ return "Aquestes són les classes, estructures, "
+ "unions i interfícies acompanyades amb breus descripcions:";
}
}
/*! This is an introduction to the page with all class members. */
virtual QCString trCompoundMembersDescription(bool extractAll)
{
- QCString result="Aquesta és la llista de tots els ";
+ QCString result="Aquesta és la llista de tots els ";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+="camps d'estructures i unions";
@@ -274,16 +275,16 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
{
result+=" documentats";
}
- result+=" amb enllaços a ";
+ result+=" amb enllaços a ";
if (!extractAll)
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- result+="la documentació de l'estructura/unió per a cada camp:";
+ result+="la documentació de l'estructura/unió per a cada camp:";
}
else
{
- result+="la documentació de la classe per a cada membre:";
+ result+="la documentació de la classe per a cada membre:";
}
}
else
@@ -302,7 +303,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! This is an introduction to the page with all file members. */
virtual QCString trFileMembersDescription(bool extractAll)
{
- QCString result="Aquesta és la llista de ";
+ QCString result="Aquesta és la llista de ";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+="totes les funcions, variables, definicions, enumeracions, i definicions de tipus";
@@ -313,44 +314,44 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
result+="tots els membres de fitxers";
if (!extractAll) result+=" documentats";
}
- result+=" amb enllaços ";
+ result+=" amb enllaços ";
if (extractAll)
result+="als fitxers als quals corresponen:";
else
- result+="a la documentació:";
+ result+="a la documentació:";
return result;
}
/*! This is an introduction to the page with the list of all examples */
virtual QCString trExamplesDescription()
- { return "Aquesta és la llista de tots els exemples:"; }
+ { return "Aquesta és la llista de tots els exemples:"; }
/*! This is an introduction to the page with the list of related pages */
virtual QCString trRelatedPagesDescription()
- { return "Aquesta és la llista de totes les pàgines de documentació associades:"; }
+ { return "Aquesta és la llista de totes les pàgines de documentació associades:"; }
/*! This is an introduction to the page with the list of class/file groups */
virtual QCString trModulesDescription()
- { return "Aquesta és la llista de mòduls:"; }
+ { return "Aquesta és la llista de mòduls:"; }
// index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */
virtual QCString trDocumentation()
- { return ": Documentació"; }
+ { return ": Documentació"; }
/*! This is used in LaTeX as the title of the chapter with the
* index of all groups.
*/
virtual QCString trModuleIndex()
- { return "Índex de Mòduls"; }
+ { return "Ãndex de Mòduls"; }
/*! This is used in LaTeX as the title of the chapter with the
* class hierarchy.
*/
virtual QCString trHierarchicalIndex()
- { return "Índex Jeràrquic"; }
+ { return "Ãndex Jeràrquic"; }
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index.
@@ -359,11 +360,11 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Índex d'Estructures de Dades";
+ return "Ãndex d'Estructures de Dades";
}
else
{
- return "Índex de Classes";
+ return "Ãndex de Classes";
}
}
@@ -371,13 +372,13 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
* list of all files.
*/
virtual QCString trFileIndex()
- { return "Índex de Fitxers"; }
+ { return "Ãndex de Fitxers"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all groups.
*/
virtual QCString trModuleDocumentation()
- { return "Documentació dels Mòduls"; }
+ { return "Documentació dels Mòduls"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions.
@@ -386,11 +387,11 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Documentació de les Estructures de Dades";
+ return "Documentació de les Estructures de Dades";
}
else
{
- return "Documentació de les Classes";
+ return "Documentació de les Classes";
}
}
@@ -398,23 +399,23 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
* the documentation of all files.
*/
virtual QCString trFileDocumentation()
- { return "Documentació dels Fitxers"; }
+ { return "Documentació dels Fitxers"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples.
*/
virtual QCString trExampleDocumentation()
- { return "Documentació dels Exemples"; }
+ { return "Documentació dels Exemples"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages.
*/
virtual QCString trPageDocumentation()
- { return "Documentació de les Pàgines"; }
+ { return "Documentació de les Pàgines"; }
/*! This is used in LaTeX as the title of the document */
virtual QCString trReferenceManual()
- { return "Manual de Referència"; }
+ { return "Manual de Referència"; }
/*! This is used in the documentation of a file as a header before the
* list of defines
@@ -462,37 +463,37 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
* documentation blocks for defines
*/
virtual QCString trDefineDocumentation()
- { return "Documentació de les Definicions"; }
+ { return "Documentació de les Definicions"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes
*/
virtual QCString trFunctionPrototypeDocumentation()
- { return "Documentació de les Funcions Prototipus"; }
+ { return "Documentació de les Funcions Prototipus"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs
*/
virtual QCString trTypedefDocumentation()
- { return "Documentació de les Definicions de Tipus"; }
+ { return "Documentació de les Definicions de Tipus"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types
*/
virtual QCString trEnumerationTypeDocumentation()
- { return "Documentació dels Tipus de les Enumeracions"; }
+ { return "Documentació dels Tipus de les Enumeracions"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
virtual QCString trFunctionDocumentation()
- { return "Documentació de les Funcions"; }
+ { return "Documentació de les Funcions"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables
*/
virtual QCString trVariableDocumentation()
- { return "Documentació de les Variables"; }
+ { return "Documentació de les Variables"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds
@@ -529,20 +530,20 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! this text is put before a class diagram */
virtual QCString trClassDiagram(const char *clName)
{
- return (QCString)"Diagrama d'Herència per a "+clName+":";
+ return (QCString)"Diagrama d'Herència per a "+clName+":";
}
/*! this text is generated when the \\internal command is used. */
virtual QCString trForInternalUseOnly()
- { return "Tan sols per a ús intern."; }
+ { return "Tan sols per a ús intern."; }
/*! this text is generated when the \\warning command is used. */
virtual QCString trWarning()
- { return "Atenció"; }
+ { return "Atenció"; }
/*! this text is generated when the \\version command is used. */
virtual QCString trVersion()
- { return "Versió"; }
+ { return "Versió"; }
/*! this text is generated when the \\date command is used. */
virtual QCString trDate()
@@ -554,11 +555,11 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! this text is generated when the \\sa command is used. */
virtual QCString trSeeAlso()
- { return "Mireu també"; }
+ { return "Mireu també"; }
/*! this text is generated when the \\param command is used. */
virtual QCString trParameters()
- { return "Paràmetres"; }
+ { return "Paràmetres"; }
/*! this text is generated when the \\exception command is used. */
virtual QCString trExceptions()
@@ -579,7 +580,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! used as an introduction to the namespace list */
virtual QCString trNamespaceListDescription(bool extractAll)
{
- QCString result="Aquests són tots els espais de noms ";
+ QCString result="Aquests són tots els espais de noms ";
if (!extractAll) result+="documentats ";
result+="amb breus descripcions:";
return result;
@@ -599,7 +600,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
* related classes
*/
virtual QCString trRelatedFunctionDocumentation()
- { return "Documentació de funcions amigues i relacionades"; }
+ { return "Documentació de funcions amigues i relacionades"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
@@ -610,16 +611,16 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
ClassDef::CompoundType compType,
bool isTemplate)
{
- QCString result="Referència de";
+ QCString result="Referència de";
switch(compType)
{
case ClassDef::Class: result+=" la Classe "; break;
case ClassDef::Struct: result+=" l'Estructura "; break;
- case ClassDef::Union: result+=" la Unió "; break;
- case ClassDef::Interface: result+=" la Interfície "; break;
+ case ClassDef::Union: result+=" la Unió "; break;
+ case ClassDef::Interface: result+=" la Interfície "; break;
case ClassDef::Protocol: result+="l Protocol "; break;
case ClassDef::Category: result+=" la Categoria "; break;
- case ClassDef::Exception: result+=" l'Excepció "; break;
+ case ClassDef::Exception: result+=" l'Excepció "; break;
}
if (isTemplate) result+="Template ";
result+=(QCString)clName;
@@ -629,7 +630,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! used as the title of the HTML page of a file */
virtual QCString trFileReference(const char *fileName)
{
- QCString result="Referència del Fitxer ";
+ QCString result="Referència del Fitxer ";
result+=fileName;
return result;
}
@@ -637,31 +638,31 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! used as the title of the HTML page of a namespace */
virtual QCString trNamespaceReference(const char *namespaceName)
{
- QCString result="Referència de l'Espai de Noms ";
+ QCString result="Referència de l'Espai de Noms ";
result+=namespaceName;
return result;
}
virtual QCString trPublicMembers()
- { return "Mètodes públics"; }
+ { return "Mètodes públics"; }
virtual QCString trPublicSlots()
- { return "Slots públics"; }
+ { return "Slots públics"; }
virtual QCString trSignals()
{ return "Senyals"; }
virtual QCString trStaticPublicMembers()
- { return "Mètodes Públics Estàtics"; }
+ { return "Mètodes Públics Estàtics"; }
virtual QCString trProtectedMembers()
- { return "Mètodes Protegits"; }
+ { return "Mètodes Protegits"; }
virtual QCString trProtectedSlots()
{ return "Slots Protegits"; }
virtual QCString trStaticProtectedMembers()
- { return "Mètodes Protegits Estàtics"; }
+ { return "Mètodes Protegits Estàtics"; }
virtual QCString trPrivateMembers()
- { return "Mètodes Privats"; }
+ { return "Mètodes Privats"; }
virtual QCString trPrivateSlots()
{ return "Slots Privats"; }
virtual QCString trStaticPrivateMembers()
- { return "Mètodes Privats Estàtics"; }
+ { return "Mètodes Privats Estàtics"; }
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
@@ -727,11 +728,11 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! This is an introduction to the page with all namespace members */
virtual QCString trNamespaceMemberDescription(bool extractAll)
{
- QCString result="Aquesta és la llista de tots els membres de l'espai de noms ";
+ QCString result="Aquesta és la llista de tots els membres de l'espai de noms ";
if (!extractAll) result+="documentats ";
- result+="amb enllaços a ";
+ result+="amb enllaços a ";
if (extractAll)
- result+="la documentació de l'espai de noms de cada membre:";
+ result+="la documentació de l'espai de noms de cada membre:";
else
result+="l'espai de noms al qual corresponen:";
return result;
@@ -740,13 +741,13 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
* index of all namespaces.
*/
virtual QCString trNamespaceIndex()
- { return "Índex d'Espais de Noms"; }
+ { return "Ãndex d'Espais de Noms"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces.
*/
virtual QCString trNamespaceDocumentation()
- { return "Documentació de l'Espai de Noms"; }
+ { return "Documentació de l'Espai de Noms"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990522
@@ -769,20 +770,20 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
bool single)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
- QCString result=(QCString)"La documentació d'aquest";
+ QCString result=(QCString)"La documentació d'aquest";
switch(compType)
{
case ClassDef::Class: result+="a classe"; break;
case ClassDef::Struct: result+="a estructura"; break;
- case ClassDef::Union: result+="a unió"; break;
- case ClassDef::Interface: result+="a interfície"; break;
+ case ClassDef::Union: result+="a unió"; break;
+ case ClassDef::Interface: result+="a interfície"; break;
case ClassDef::Protocol: result+=" protocol"; break;
case ClassDef::Category: result+="a categoria"; break;
- case ClassDef::Exception: result+="a excepció"; break;
+ case ClassDef::Exception: result+="a excepció"; break;
}
result+=" es va generar a partir del";
if (!single) result+="s";
- result+=" següent";
+ result+=" següent";
if (!single) result+="s";
result+=" fitxer";
if (!single) result+="s:"; else result+=":";
@@ -793,7 +794,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
* list.
*/
virtual QCString trAlphabeticalList()
- { return "Llista Alfabètica"; }
+ { return "Llista Alfabètica"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
@@ -806,7 +807,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! 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.
@@ -820,11 +821,11 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
virtual QCString trDefinedAtLineInSourceFile()
{
- return "Definició a la línia @0 del fitxer @1.";
+ return "Definició a la línia @0 del fitxer @1.";
}
virtual QCString trDefinedInSourceFile()
{
- return "Definició al fitxer @0.";
+ return "Definició al fitxer @0.";
}
//////////////////////////////////////////////////////////////////////////
@@ -843,17 +844,17 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! this text is put before a collaboration diagram */
virtual QCString trCollaborationDiagram(const char *clName)
{
- return (QCString)"Diagrama de col·laboració per a "+clName+":";
+ return (QCString)"Diagrama de col·laboració per a "+clName+":";
}
/*! this text is put before an include dependency graph */
virtual QCString trInclDepGraph(const char *fName)
{
- return (QCString)"Inclou el graf de dependències per a "+fName+":";
+ return (QCString)"Inclou el graf de dependències per a "+fName+":";
}
/*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation()
{
- return "Documentació del Constructor i el Destructor";
+ return "Documentació del Constructor i el Destructor";
}
/*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode()
@@ -863,17 +864,17 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! Used in the file sources to point to the corresponding documentation. */
virtual QCString trGotoDocumentation()
{
- return "Veure la documentació d'aquest fitxer.";
+ return "Veure la documentació d'aquest fitxer.";
}
/*! Text for the \\pre command */
virtual QCString trPrecondition()
{
- return "Precondició";
+ return "Precondició";
}
/*! Text for the \\post command */
virtual QCString trPostcondition()
{
- return "Postcondició";
+ return "Postcondició";
}
/*! Text for the \\invariant command */
virtual QCString trInvariant()
@@ -892,11 +893,11 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
}
virtual QCString trGraphicalHierarchy()
{
- return "Jerarquia Gràfica de la Classe";
+ return "Jerarquia Gràfica de la Classe";
}
virtual QCString trGotoGraphicalHierarchy()
{
- return "Veure la jerarquia gràfica de la classe";
+ return "Veure la jerarquia gràfica de la classe";
}
virtual QCString trGotoTextualHierarchy()
{
@@ -904,7 +905,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
}
virtual QCString trPageIndex()
{
- return "Índex de Pàgines";
+ return "Ãndex de Pàgines";
}
//////////////////////////////////////////////////////////////////////////
@@ -917,7 +918,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
}
virtual QCString trPublicTypes()
{
- return "Tipus Públics";
+ return "Tipus Públics";
}
virtual QCString trPublicAttribs()
{
@@ -927,12 +928,12 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
}
else
{
- return "Atributs Públics";
+ return "Atributs Públics";
}
}
virtual QCString trStaticPublicAttribs()
{
- return "Atributs Públics Estàtics";
+ return "Atributs Públics Estàtics";
}
virtual QCString trProtectedTypes()
{
@@ -944,7 +945,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
}
virtual QCString trStaticProtectedAttribs()
{
- return "Atributs Protegits Estàtics";
+ return "Atributs Protegits Estàtics";
}
virtual QCString trPrivateTypes()
{
@@ -956,7 +957,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
}
virtual QCString trStaticPrivateAttribs()
{
- return "Atributs Privats Estàtics";
+ return "Atributs Privats Estàtics";
}
//////////////////////////////////////////////////////////////////////////
@@ -988,11 +989,11 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
}
virtual QCString trAttention()
{
- return "Atenció";
+ return "Atenció";
}
virtual QCString trInclByDepGraph()
{
- return "Aquest gràfic mostra quins fitxers inclouen, "
+ return "Aquest gràfic mostra quins fitxers inclouen, "
"de forma directa o indirecta, aquest fitxer:";
}
virtual QCString trSince()
@@ -1007,7 +1008,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! title of the graph legend page */
virtual QCString trLegendTitle()
{
- return "Llegenda del Gràfic";
+ return "Llegenda del Gràfic";
}
/*! page explaining how the dot graph's should be interpreted
* The %A in the text below are to prevent link to classes called "A".
@@ -1015,22 +1016,22 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
virtual QCString trLegendDocs()
{
return
- "Aquesta pàgina explica com s'interpreten els gràfics generats per doxygen.<p>\n"
+ "Aquesta pàgina explica com s'interpreten els gràfics generats per doxygen.<p>\n"
"Considera aquest exemple:\n"
"\\code\n"
"/*! Classe invisible per culpa del retall */\n"
"class Invisible { };\n\n"
- "/*! Classe truncada, l'herència està amagada */\n"
+ "/*! Classe truncada, l'herència està amagada */\n"
"class Truncated : public Invisible { };\n\n"
"/* Classe no documentada amb comentaris doxygen */\n"
"class Undocumented { };\n\n"
- "/*! Classe heredada amb herència pública */\n"
+ "/*! Classe heredada amb herència pública */\n"
"class PublicBase : public Truncated { };\n\n"
"/*! Una classe Template */\n"
"template<class T> class Templ { };\n\n"
- "/*! Classe heredada utilitzant herència protegida */\n"
+ "/*! Classe heredada utilitzant herència protegida */\n"
"class ProtectedBase { };\n\n"
- "/*! Classe heredada utiltzant herència privada */\n"
+ "/*! Classe heredada utiltzant herència privada */\n"
"class PrivateBase { };\n\n"
"/*! Classe usada per la classe heretada */\n"
"class Used { };\n\n"
@@ -1045,26 +1046,26 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
" Used *m_usedClass;\n"
"};\n"
"\\endcode\n"
- "Si l'etiqueta \\c MAX_DOT_GRAPH_HEIGHT està igualada a 24a0 al fitxer de configuració, resultarà el gràfic següent:"
+ "Resultarà el gràfic següent:"
"<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
"<p>\n"
- "Les caixes del gràfic superior tenen aquesta interpretació:\n"
+ "Les caixes del gràfic superior tenen aquesta interpretació:\n"
"<ul>\n"
- "<li>Una caixa negra plena represent l'estructura o classe per la qual el gràfic s'ha generat.\n"
+ "<li>Una caixa negra plena represent l'estructura o classe per la qual el gràfic s'ha generat.\n"
"<li>Una caixa de vora negra representa una estructura o classe documentada.\n"
"<li>Una caixa de vora verda representa una estructura o classe indocumentada.\n"
"<li>Una caixa de vora vermalla representa una estructura o classe documentada de la qual "
- "no es mostren totes les relacions d'herència/inclusió. Un gràfic és truncat si no s'ajusta als límits.\n"
+ "no es mostren totes les relacions d'herència/inclusió. Un gràfic és truncat si no s'ajusta als límits.\n"
"</ul>\n"
"Les sagetes tenen aquest significat:\n"
"<ul>\n"
- "<li>Una sageta blau fosc remarca una relació d'herència de tipus pública entre dues classes.\n"
- "<li>Una sageta verd fosc remarca una relació d'herència de tipus protegida entre dues classes.\n"
- "<li>Una sageta roig fosc remarca una relació d'herència de tipus privada entre dues classes.\n"
- "<li>Una sageta puntejada de color porpra indica que una classe és continguda o usada per una altra classe."
- " La sageta s'etiqueta amb la variable o variables a través de les quals la classe o estructura apuntada és accessible.\n"
- "<li>Una sageta puntejada de color groc indica la relació entre una instància template i la classe template de què ha set instanciada."
- " La sageta s'etiqueta amb els paràmetres template de la instància.\n"
+ "<li>Una sageta blau fosc remarca una relació d'herència de tipus pública entre dues classes.\n"
+ "<li>Una sageta verd fosc remarca una relació d'herència de tipus protegida entre dues classes.\n"
+ "<li>Una sageta roig fosc remarca una relació d'herència de tipus privada entre dues classes.\n"
+ "<li>Una sageta puntejada de color porpra indica que una classe és continguda o usada per una altra classe."
+ " La sageta s'etiqueta amb la variable o variables a través de les quals la classe o estructura apuntada és accessible.\n"
+ "<li>Una sageta puntejada de color groc indica la relació entre una instància template i la classe template de què ha set instanciada."
+ " La sageta s'etiqueta amb els paràmetres template de la instància.\n"
"</ul>\n";
}
/*! text for the link to the legend page */
@@ -1095,7 +1096,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods()
{
- return "Mètodes DCOP";
+ return "Mètodes DCOP";
}
//////////////////////////////////////////////////////////////////////////
@@ -1110,7 +1111,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation()
{
- return "Documentació de les Propietats";
+ return "Documentació de les Propietats";
}
//////////////////////////////////////////////////////////////////////////
@@ -1142,7 +1143,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! The description of the package index page */
virtual QCString trPackageListDescription()
{
- return "Aquesta és la llista de paquets, amb una breu descripció (si se'n disposa):";
+ return "Aquesta és la llista de paquets, amb una breu descripció (si se'n disposa):";
}
/*! The link name in the Quick links header for each page */
virtual QCString trPackages()
@@ -1216,7 +1217,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! Used as header RTF general index */
virtual QCString trRTFGeneralIndex()
{
- return "Índex";
+ return "Ãndex";
}
/*! This is used for translation of the word that will possibly
@@ -1269,7 +1270,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
*/
virtual QCString trPage(bool first_capital, bool singular)
{
- QCString result((first_capital ? "Pàgin" : "pàgin"));
+ QCString result((first_capital ? "Pàgin" : "pàgin"));
if (!singular) result+="es"; else result+="a";
return result;
}
@@ -1317,7 +1318,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
*/
virtual QCString trReferences()
{
- return "Referències";
+ return "Referències";
}
//////////////////////////////////////////////////////////////////////////
@@ -1378,7 +1379,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! Header used for the documentation section of a class' events. */
virtual QCString trEventDocumentation()
{
- return "Documentació dels Esdeveniments";
+ return "Documentació dels Esdeveniments";
}
//////////////////////////////////////////////////////////////////////////
@@ -1403,7 +1404,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
*/
virtual QCString trStaticPackageMembers()
{
- return "Funcions Estàtiques de Paquet";
+ return "Funcions Estàtiques de Paquet";
}
/*! Used as a heading for a list of Java class variables with package
* scope.
@@ -1417,7 +1418,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
*/
virtual QCString trStaticPackageAttribs()
{
- return "Atributs Estàtics de Paquet";
+ return "Atributs Estàtics de Paquet";
}
//////////////////////////////////////////////////////////////////////////
@@ -1434,7 +1435,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! Put in front of the call graph for a function. */
virtual QCString trCallGraph()
{
- return "Gràfic de crides d'aquesta funció:";
+ return "Gràfic de crides d'aquesta funció:";
}
//////////////////////////////////////////////////////////////////////////
@@ -1454,7 +1455,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
*/
virtual QCString trSearchResultsTitle()
{
- return "Resultats de la Búsqueda";
+ return "Resultats de la Búsqueda";
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
@@ -1513,7 +1514,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
* of the directories.
*/
virtual QCString trDirDocumentation()
- { return "Documentació dels Directoris"; }
+ { return "Documentació dels Directoris"; }
/*! This is used as the title of the directory index and also in the
* Quick links of a HTML page, to link to the directory hierarchy.
@@ -1525,15 +1526,15 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
* and the fact that it is sorted alphabetically per level
*/
virtual QCString trDirDescription()
- { return "Aquesta jerarquia de directoris està ordenada toscament, "
- "però no completa, de forma alfabètica:";
+ { return "Aquesta jerarquia de directoris està ordenada toscament, "
+ "però no completa, de forma alfabètica:";
}
/*! This returns the title of a directory page. The name of the
* directory is passed via \a dirName.
*/
virtual QCString trDirReference(const char *dirName)
- { QCString result="Referència del Directori "; result+=dirName; return result; }
+ { QCString result="Referència del Directori "; result+=dirName; return result; }
/*! This returns the word directory with or without starting capital
* (\a first_capital) and in sigular or plural form (\a singular).
@@ -1554,9 +1555,9 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
*/
virtual QCString trOverloadText()
{
- return "Aquesta és una funció membre sobrecarregada, "
- "proveïda per conveniència. Es diferencia de la funció "
- "anterior només en els arguments que accepta.";
+ return "Aquesta és una funció membre sobrecarregada, "
+ "proveïda per conveniència. Es diferencia de la funció "
+ "anterior només en els arguments que accepta.";
}
//////////////////////////////////////////////////////////////////////////
@@ -1566,15 +1567,221 @@ class TranslatorCatalan : public TranslatorAdapter_1_5_4
/*! This is used to introduce a caller (or called-by) graph */
virtual QCString trCallerGraph()
{
- return "Gràfic de crides a aquesta funció:";
+ return "Gràfic de crides a aquesta funció:";
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
virtual QCString trEnumerationValueDocumentation()
- { return "Documentació de les Enumeracions"; }
+ { return "Documentació de les Enumeracions"; }
+//////////////////////////////////////////////////////////////////////////
+// new since 1.5.4 (mainly for Fortran)
+//////////////////////////////////////////////////////////////////////////
+
+ /*! header that is put before the list of member subprograms (Fortran). */
+ virtual QCString trMemberFunctionDocumentationFortran()
+ { return "Documentació de les Funcions/Subrutines Membre"; }
+
+ /*! This is put above each page as a link to the list of annotated data types (Fortran). */
+ virtual QCString trCompoundListFortran()
+ { return "Llista de Tipus de Dades"; }
+
+ /*! This is put above each page as a link to all members of compounds (Fortran). */
+ virtual QCString trCompoundMembersFortran()
+ { return "Camps de Dades"; }
+
+ /*! This is an introduction to the annotated compound list (Fortran). */
+ virtual QCString trCompoundListDescriptionFortran()
+ { return "Aquests són els tipus de dades acompanyats amb breus descripcions:"; }
+
+ /*! This is an introduction to the page with all data types (Fortran). */
+ virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
+ {
+ QCString result="Aquesta és la llista de tots els membres de tipus de dades";
+ if (!extractAll)
+ {
+ result+=" documentats";
+ }
+ result+=" amb enllaços a ";
+ if (!extractAll)
+ {
+ result+="la documentació del tipus de dades per a cada membre:";
+ }
+ else
+ {
+ result+="els tipus de dades a que pertanyen:";
+ }
+ return result;
+ }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * annotated compound index (Fortran).
+ */
+ virtual QCString trCompoundIndexFortran()
+ { return "Ãndex de Tipus de Dades"; }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all data types (Fortran).
+ */
+ virtual QCString trTypeDocumentation()
+ { return "Documentació dels Tipus de Dades"; }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) subprograms (Fortran).
+ */
+ virtual QCString trSubprograms()
+ { return "Funcions/Subrutines"; }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for subprograms (Fortran)
+ */
+ virtual QCString trSubprogramDocumentation()
+ { return "Documentació de les Funcions/Subrutines"; }
+
+ /*! This is used in the documentation of a file/namespace/group before
+ * the list of links to documented compounds (Fortran)
+ */
+ virtual QCString trDataTypes()
+ { return "Tipus de Dades"; }
+
+ /*! used as the title of page containing all the index of all modules (Fortran). */
+ virtual QCString trModulesList()
+ { return "Llista de Mòduls"; }
+
+ /*! used as an introduction to the modules list (Fortran) */
+ virtual QCString trModulesListDescription(bool extractAll)
+ {
+ QCString result="Aquesta és la llista de tots els mòduls ";
+ if (!extractAll) result+="documentats ";
+ result+="amb breus descripcions:";
+ return result;
+ }
+
+ /*! used as the title of the HTML page of a module/type (Fortran) */
+ virtual QCString trCompoundReferenceFortran(const char *clName,
+ ClassDef::CompoundType compType,
+ bool isTemplate)
+ {
+ QCString result="Referència de";
+ switch(compType)
+ {
+ case ClassDef::Class: result+=" el Mòdul "; break;
+ case ClassDef::Struct: result+=" el Tipus "; break;
+ case ClassDef::Union: result+=" la Unió "; break;
+ case ClassDef::Interface: result+=" la Interfície "; break;
+ case ClassDef::Protocol: result+="l Protocol "; break;
+ case ClassDef::Category: result+=" la Categoria "; break;
+ case ClassDef::Exception: result+=" l'Excepció "; break;
+ }
+ if (isTemplate) result+="Template ";
+ result+=(QCString)clName;
+ return result;
+ }
+
+ /*! used as the title of the HTML page of a module (Fortran) */
+ virtual QCString trModuleReference(const char *namespaceName)
+ {
+ QCString result="Referència del Mòdul ";
+ result+=namespaceName;
+ return result;
+ }
+
+ /*! This is put above each page as a link to all members of modules. (Fortran) */
+ virtual QCString trModulesMembers()
+ { return "Membres del Mòdul"; }
+
+ /*! This is an introduction to the page with all modules members (Fortran) */
+ virtual QCString trModulesMemberDescription(bool extractAll)
+ {
+ QCString result="Aquesta és la llista de tots els membres del mòdul";
+ if (!extractAll)
+ {
+ result+=" documentats";
+ }
+ result+=" amb enllaços a ";
+ if (!extractAll)
+ {
+ result+="la documentació del mòdul per a cada membre:";
+ }
+ else
+ {
+ result+="els mòduls a que pertanyen:";
+ }
+ return result;
+ }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * index of all modules (Fortran).
+ */
+ virtual QCString trModulesIndex()
+ { return "Ãndex de Mòduls"; }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trModule(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Mòdul" : "mòdul"));
+ if (!singular) result+="s";
+ return result;
+ }
+ /*! This is put at the bottom of a module documentation page and is
+ * followed by a list of files that were used to generate the page.
+ */
+ virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
+ bool single)
+ { // here s is one of " Module", " Struct" or " Union"
+ // single is true implies a single file
+ QCString result=(QCString)"La documentació d'aquest";
+ switch(compType)
+ {
+ case ClassDef::Class: result+=" mòdul"; break;
+ case ClassDef::Struct: result+=" tipus"; break;
+ case ClassDef::Union: result+="a unió"; break;
+ case ClassDef::Interface: result+="a interfície"; break;
+ case ClassDef::Protocol: result+=" protocol"; break;
+ case ClassDef::Category: result+="a categoria"; break;
+ case ClassDef::Exception: result+="a excepció"; break;
+ }
+ result+=" es va generar a partir del";
+ if (!single) result+="s";
+ result+=" següent";
+ if (!single) result+="s";
+ result+=" fitxer";
+ if (!single) result+="s:"; else result+=":";
+ return result;
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trType(bool first_capital, bool)
+ {
+ QCString result((first_capital ? "Tipus" : "tipus"));
+ //if (!singular) result+="s";
+ return result;
+ }
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trSubprogram(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Subprogram" : "subprogram"));
+ if (!singular) result+="es";
+ else result+="a";
+ return result;
+ }
+
+ /*! C# Type Constraint list */
+ virtual QCString trTypeConstraints()
+ {
+ return "Restriccions de Tipus";
+ }
};
diff --git a/src/util.cpp b/src/util.cpp
index 500b1af..4c2e628 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -3715,7 +3715,8 @@ bool getDefs(const QCString &scName,const QCString &memberName,
for (mmli.toFirst(); (mmd = mmli.current()); ++mmli)
{
- if (!mmd->isLinkable() || !mmd->isRelated() || !mmd->getClassDef())
+ if (!mmd->isLinkable() || (!mmd->isRelated() && !mmd->isForeign()) ||
+ !mmd->getClassDef())
continue;
if (!args) break;
diff --git a/src/vhdlcode.l b/src/vhdlcode.l
index 7e72d84..bbce4e9 100644
--- a/src/vhdlcode.l
+++ b/src/vhdlcode.l
@@ -974,7 +974,7 @@ MAPPORT {BN}*("port"|"generic"){BN}*("map"){BN}*("("){1}
}
}
-<ParseType>[_a-zA_Z"]["_a-zA-Z0-9]* {
+<ParseType>["_a-zA-Z0-9]* {
QCString val(yytext);
g_FuncProto.append(yytext);
appStringLower(g_PrevString,yytext);
diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp
index 4e027e0..5535a90 100644
--- a/src/vhdldocgen.cpp
+++ b/src/vhdldocgen.cpp
@@ -160,24 +160,6 @@ QCString* VhdlDocGen::findKeyWord(const QCString& word)
* returns the parsed entry at line xxx
*/
-Entry* VhdlDocGen::getEntryAtLine(const Entry* ce,int line)
-{
- EntryListIterator eli(*ce->children());
- Entry *found=0;
- Entry *rt;
- for (;(rt=eli.current());++eli)
- {
- if (rt->bodyLine==line)
- {
- found=rt;
- } // if
- if (!found)
- {
- found=getEntryAtLine(rt,line);
- }
- }
- return found;
-}// getEntryAtLine
void VhdlDocGen::debugClassName(ClassSDict* mDict)
{
@@ -1360,7 +1342,7 @@ void VhdlDocGen::formatString(QCString & qcs, OutputList& ol,const MemberDef* md
{
temp+=" ";
}
- temp+=QCString(&c,1);
+ temp+=c;
temp+=" ";
}
else if (c=='=')
@@ -1373,13 +1355,13 @@ void VhdlDocGen::formatString(QCString & qcs, OutputList& ol,const MemberDef* md
else // = operator
{
temp+=" ";
- temp+=QCString(&c,1);
+ temp+=c;
temp+=" ";
}
}
else
{
- temp+=QCString(&c,1);
+ temp+=c;
}
index=temp.length();
@@ -1670,19 +1652,20 @@ void VhdlDocGen::writeVhdlDeclarations(MemberList* ml,
OutputList& ol,GroupDef* gd,ClassDef* cd)
{
static ClassDef *cdef;
- static GroupDef* gdef;
+ //static GroupDef* gdef;
if (cd && cdef!=cd)
{ // only one inline link
VhdlDocGen::writeInlineClassLink(cd,ol);
cdef=cd;
}
+ /*
if (gd && gdef==gd) return;
if (gd && gdef!=gd)
{
gdef=gd;
}
-
+*/
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,0,0,gd,theTranslator_vhdlType(VhdlDocGen::LIBRARY,FALSE),0,FALSE,VhdlDocGen::LIBRARY);
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,0,0,gd,theTranslator_vhdlType(VhdlDocGen::USE,FALSE),0,FALSE,VhdlDocGen::USE);
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,0,0,gd,theTranslator_vhdlType(VhdlDocGen::FUNCTION,FALSE),0,FALSE,VhdlDocGen::FUNCTION);
diff --git a/src/vhdldocgen.h b/src/vhdldocgen.h
index 2c530a4..f8952a7 100644
--- a/src/vhdldocgen.h
+++ b/src/vhdldocgen.h
@@ -80,7 +80,6 @@ class VhdlDocGen
static void init();
// --- used by vhdlscanner.l -----------
- static Entry* getEntryAtLine(const Entry* e,int line);
static QCString getIndexWord(const char* ,int index);
static bool foundInsertedComponent(const QCString& name,Entry* root);
static bool deleteCharRev(QCString &s,char c);
diff --git a/src/vhdlscanner.l b/src/vhdlscanner.l
index 0eeb426..1fd68d4 100644
--- a/src/vhdlscanner.l
+++ b/src/vhdlscanner.l
@@ -141,7 +141,7 @@ static void getBufText(QCString& qc,int start)
static void lineCount()
{
- for ( const char* c = vhdlscanYYtext ; *c ; ++c )
+ for ( const char* c = yytext ; *c ; ++c )
{
yyLineNr += (*c == '\n') ;
}
@@ -446,6 +446,24 @@ static void parseFunctionProto()
bufferClear();
}//parseFunctionProto
+static Entry* getEntryAtLine(const Entry* ce,int line)
+{
+ EntryListIterator eli(*ce->children());
+ Entry *found=0;
+ Entry *rt;
+ for (;(rt=eli.current());++eli)
+ {
+ if (rt->bodyLine==line)
+ {
+ found=rt;
+ } // if
+ if (!found)
+ {
+ found=getEntryAtLine(rt,line);
+ }
+ }
+ return found;
+}// getEntryAtLine
//-------------------------------------------------------------------------
@@ -534,7 +552,7 @@ static void addOneTextLine(QCString& ss )
//else if (pEntry && pEntry->bodyLine==yyLineNr)
// pTemp=pEntry;
else
- pTemp=VhdlDocGen::getEntryAtLine(current_root,yyLineNr) ;
+ pTemp=getEntryAtLine(current_root,yyLineNr) ;
if (pTemp)
{
@@ -622,7 +640,7 @@ ALLID [^;()\t ]
bufferClear();
//pEntry=current;
- getType(current,vhdlscanYYtext);
+ getType(current,yytext);
current->bodyLine=yyLineNr;
if (current->spec==VhdlDocGen::UNITS)
{
@@ -645,7 +663,7 @@ ALLID [^;()\t ]
bufferClear();
isBody=0;
lastCompound = current;
- QCString curName=VhdlDocGen::getIndexWord(vhdlscanYYtext,1);
+ QCString curName=VhdlDocGen::getIndexWord(yytext,1);
current->section=Entry::CLASS_SEC; //Entry::CLASS_SEC;
current->spec=VhdlDocGen::ARCHITECTURE;
current->protection=Private;
@@ -684,7 +702,7 @@ ALLID [^;()\t ]
bropen=0;
bufferClear();
isBody=0;
- QCString qcs=QCString(vhdlscanYYtext);
+ QCString qcs=QCString(yytext);
// lowerString(qcs);
qcs=qcs.stripWhiteSpace();
if (stricmp(qcs.data(),"use")==0)
@@ -709,7 +727,7 @@ ALLID [^;()\t ]
bropen=0;
bufferClear();
isFunc=1;
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
BEGIN(FindFuncName);
}
@@ -719,7 +737,7 @@ ALLID [^;()\t ]
bropen=0;
bufferClear();
- QCString word(vhdlscanYYtext);
+ QCString word(yytext);
word=word.lower();
word=word.stripWhiteSpace();
@@ -764,7 +782,7 @@ ALLID [^;()\t ]
lineCount();
QCString type;
- QCString tt(vhdlscanYYtext);
+ QCString tt(yytext);
tt = tt.stripWhiteSpace();
//printf(" tt=%s\n",tt.data());
//VhdlDocGen::deleteAllChars(tt,'\n');
@@ -821,7 +839,7 @@ ALLID [^;()\t ]
<Start>{CR}* {
lineCount();
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
BEGIN(Start);
}
@@ -855,7 +873,7 @@ ALLID [^;()\t ]
<ParseUnits>{B}*[a-z_][^\n;]* { // parse record|unit body
lineCount();
- QCString zz(vhdlscanYYtext);
+ QCString zz(yytext);
addSignals(zz.data(),yyLineNr,current);
BEGIN(ParseUnits);
}
@@ -863,8 +881,8 @@ ALLID [^;()\t ]
<FindName>{NAME} { // found entity|architecture|component name
lineCount();
- QCString qcs(vhdlscanYYtext);
- QCString qreal=QCString(vhdlscanYYtext);
+ QCString qcs(yytext);
+ QCString qreal=QCString(yytext);
qcs=qcs.stripWhiteSpace();
if (current->spec==VhdlDocGen::USE)
{
@@ -910,13 +928,13 @@ ALLID [^;()\t ]
<FindFuncName>{FUNCNAME} { // found name of a process|function|procedure
lineCount();
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
BEGIN(ParseType);
}
<FindTypeName>{NAME}{BR}* {
lineCount();
- current->name=QCString(vhdlscanYYtext);
+ current->name=QCString(yytext);
BEGIN(ParseType);
}
@@ -930,7 +948,7 @@ ALLID [^;()\t ]
genPort=2;
current->section=Entry::VARIABLE_SEC;
current->spec=VhdlDocGen::RECORD;
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
newEntry(); // adds the record to the last compound
BEGIN(ParseRecord);
}
@@ -949,21 +967,26 @@ ALLID [^;()\t ]
<ParseRecord>[a-z_A-Z0-9][^\n;]*";"({B}*{COMMENT})* { // parse record body
lineCount();
QCString comment;
- QCString zz(vhdlscanYYtext);
+ QCString zz(yytext);
if (zz.contains("--!"))
{
QStringList ql=QStringList::split("--!",zz,FALSE);
comment = ql[1];
zz = ql[0];
}
+ else if (zz.contains("--"))
+ {
+ QStringList ql=QStringList::split("--",zz,FALSE);
+ zz = ql[0];
+ }
initEntry(current);
addSignals(zz,yyLineNr,current,comment);
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
BEGIN(ParseRecord);
}
<ParseType>{B}+("is"){B}*{CR}|{B}+("is"){B}*"--" { // found a new function in an architecture ?
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
lineCount();
QCString ttt;
bool bb=TRUE;
@@ -1024,21 +1047,21 @@ ALLID [^;()\t ]
<ParseType>[^;()\t ] {
lineCount();
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
BEGIN(ParseType);
}
<ParseType>{BRACEOPEN} {
lineCount();
bropen++;
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
BEGIN(ParseType);
}
<ParseType>{BRACECLOSE} {
lineCount();
bropen--;
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
if (bropen==0 && scantype==2) // process
{
::parseProcessProto();
@@ -1072,7 +1095,7 @@ ALLID [^;()\t ]
<ParseType>{ENDE3} {
lineCount();
- QCString tt(vhdlscanYYtext);
+ QCString tt(yytext);
tt=tt.lower();
VhdlDocGen::deleteAllChars(tt,';');
tt.stripWhiteSpace();
@@ -1101,7 +1124,7 @@ ALLID [^;()\t ]
<ParseType>";" {
lineCount();
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
if (bropen==0 && !(isFunc==1 && isBody==1) )
{
if (isFunc)
@@ -1194,13 +1217,13 @@ ALLID [^;()\t ]
<ParseType>{BR}* {
lineCount();
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
BEGIN(ParseType);
}
<FindEntityName>{NAME} { // found name of an entity/architecture/package
lineCount();
- QCString qcs(vhdlscanYYtext);
+ QCString qcs(yytext);
qcs=qcs.stripWhiteSpace();
qcs=qcs.lower();
if (strcmp(qcs.data(),"body")==0) // found package body
@@ -1214,7 +1237,7 @@ ALLID [^;()\t ]
}
else if (scantype==1) // found a component
{
- QCString qq(vhdlscanYYtext);
+ QCString qq(yytext);
qq=qq.stripWhiteSpace();
//qq=qq.lower();
@@ -1242,18 +1265,18 @@ ALLID [^;()\t ]
}
else
{
- QCString qq(vhdlscanYYtext);
+ QCString qq(yytext);
qq=qq.stripWhiteSpace();
current->name=qq;
newEntry();
- //QCString qreal=QCString(vhdlscanYYtext);
+ //QCString qreal=QCString(yytext);
BEGIN(Start);
}
}
<Start>{B}*("generic"|"port"){BR}*[(]+ { // found generic|port in entity
- QCString genp(vhdlscanYYleng+1);
- deleteSpecChars(vhdlscanYYtext,genp.data());
+ QCString genp(yyleng+1);
+ deleteSpecChars(yytext,genp.data());
VhdlDocGen::deleteCharRev(genp,'(');
if (stricmp(genp.data(),"port" )==0)
@@ -1274,7 +1297,7 @@ ALLID [^;()\t ]
<FindSigName>{BRACECLOSE} {
lineCount();
bropen--;
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
if (bropen==0)
{
bufferClear();
@@ -1287,7 +1310,7 @@ ALLID [^;()\t ]
}
<FindSigName>{LABELID} { // found signals in entity
- QCString line(vhdlscanYYtext);
+ QCString line(yytext);
// note that line can be something like:
// "var1, var2, var3 : in std_logic_vector(8 downto 0); --! Some comment"
@@ -1307,9 +1330,14 @@ ALLID [^;()\t ]
int openCount=line.contains('(');
int closeCount=line.contains(')');
int semi = line.find(';');
- int pos;
+ int pos = line.find("--");
+ int pos1 = line.find("--!");
+ if (pos!=-1 && pos<pos1) // strip normal comment before special one
+ {
+ line = line.remove(pos,pos1-pos);
+ }
//printf("=> signal: line='%s'\n",line.data());
- if (semi!=-1 && (pos=line.find("--"))!=-1)
+ if (semi!=-1 && pos!=-1)
{
int eol = line.findRev('\n');
//printf("pos=%d eol=%d\n",pos,eol);
@@ -1348,7 +1376,7 @@ ALLID [^;()\t ]
if (scantype!=1) // not a component
{
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
addSignals(line,yyLineNr,lastEntity,comment);
}
@@ -1365,24 +1393,24 @@ ALLID [^;()\t ]
<FindSigName>{BRACEOPEN} {
lineCount();
bropen++;
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
}
<FindSigName>{CR} {
lineCount();
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
//BEGIN(FindSigName);
}
<*>^{B}*("for ")[^;]* {
- //printf("\n found for[%s] [%d]",vhdlscanYYtext,yyLineNr);
+ //printf("\n found for[%s] [%d]",yytext,yyLineNr);
lineCount();
}
<*>{DIGITS} { // found digit
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
lineCount();
}
@@ -1412,20 +1440,39 @@ ALLID [^;()\t ]
<*>{BR}*"--!"[^{}\n][^\n]*\n/{B}*"--!" { // multi line comment
if (iDocLine==-1) iDocLine=yyLineNr;
+ // signal clk :in std_logic; --!@brief global clock
+ // --!@brief global reset
+ // signal reset:in std_logic;
+ // these two comments are detected as a multi line comment
+ QCString qc(yytext);
+ int len=qc.contains('\n')+yyLineNr-1;
+
if (YY_START!=Comment) // Start of the comment block
{
- iTextCounter=iCounter;
+ bufferClear();
+ iTextCounter=0;
startComment=yyLineNr;
g_lastCommentContext=YY_START;
}
- addText(vhdlscanYYtext,vhdlscanYYleng);
+
+ Entry* pTemp=getEntryAtLine(current_root,len);
+ if (pTemp)
+ { // found one line comment, add it to the entry on this line
+ pTemp->briefLine=yyLineNr;
+ pTemp->brief+=yytext;
+ VhdlDocGen::prepareComment(pTemp->brief);
+ }
+ else
+ {
+ addText(yytext,yyleng);
+ }
lineCount();
BEGIN(Comment);
}
<Comment>^{B}*"--!"[^\n]* {
if (iDocLine==-1) iDocLine=yyLineNr;
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
lineCount();
}
@@ -1436,17 +1483,27 @@ ALLID [^;()\t ]
VhdlDocGen::prepareComment(qcs);
handleCommentBlock(qcs,FALSE);
bufferClear();
- unput(*vhdlscanYYtext);
+ unput(*yytext);
BEGIN(g_lastCommentContext);
}
-<*>^{B}*"--!"[^\n]* { // one line comment
+<*>"--!"[^\n]* { // one line comment
if (iDocLine==-1) iDocLine=yyLineNr;
QCString qcs(yytext);
int j=qcs.find("--!");
qcs=qcs.right(qcs.length()-3-j);
//printf("--> handleCommentBlock line %d\n",yyLineNr);
- handleCommentBlock(qcs,TRUE);
+ Entry* pTemp=getEntryAtLine(current_root,yyLineNr);
+ if (pTemp)
+ {
+ pTemp->briefLine=yyLineNr;
+ pTemp->brief+=qcs;
+ iDocLine=-1;
+ }
+ else
+ {
+ handleCommentBlock(qcs,TRUE);
+ }
//printf("--> end: handleCommentBlock line %d\n",yyLineNr);
bufferClear();
}
@@ -1456,23 +1513,23 @@ ALLID [^;()\t ]
<*>\n {
lineCount();
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
// printf("\n new-line [%d]",yyLineNr);
BEGIN(Start);
}
<*>{NAME} {
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
lineCount();
}
<*>{B}* {
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
lineCount();
}
<*>. {
- addText(vhdlscanYYtext,vhdlscanYYleng);
+ addText(yytext,yyleng);
lineCount();
}