Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
doxverilog
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
doxverilog
Commits
9c04d0ff
Commit
9c04d0ff
authored
May 24, 2001
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.2.7-20010524
parent
9ca6896b
Changes
72
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
72 changed files
with
1866 additions
and
1054 deletions
+1866
-1054
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
xml.cpp
addon/xmlgen/xml.cpp
+2
-2
Makefile.in
doc/Makefile.in
+3
-1
Makefile.win_nmake.in
doc/Makefile.win_nmake.in
+6
-0
commands.doc
doc/commands.doc
+24
-7
config.doc
doc/config.doc
+18
-7
faq.doc
doc/faq.doc
+1
-1
grouping.doc
doc/grouping.doc
+65
-0
install.doc
doc/install.doc
+4
-0
language.tpl
doc/language.tpl
+4
-4
maintainers.txt
doc/maintainers.txt
+1
-1
translator.bat
doc/translator.bat
+1
-4
translator.pl
doc/translator.pl
+96
-25
doxygen.spec
packages/rpm/doxygen.spec
+7
-6
classdef.cpp
src/classdef.cpp
+7
-6
classdef.h
src/classdef.h
+1
-1
config.h
src/config.h
+120
-22
config.l
src/config.l
+22
-10
doc.l
src/doc.l
+3
-2
doxygen.cpp
src/doxygen.cpp
+46
-53
entry.cpp
src/entry.cpp
+16
-11
entry.h
src/entry.h
+91
-4
filedef.cpp
src/filedef.cpp
+3
-3
formula.cpp
src/formula.cpp
+2
-2
groupdef.cpp
src/groupdef.cpp
+173
-45
groupdef.h
src/groupdef.h
+5
-1
htmlgen.cpp
src/htmlgen.cpp
+3
-2
htmlgen.h
src/htmlgen.h
+2
-1
index.cpp
src/index.cpp
+20
-19
index.h
src/index.h
+2
-1
language.cpp
src/language.cpp
+2
-0
latexgen.cpp
src/latexgen.cpp
+1
-1
latexgen.h
src/latexgen.h
+2
-1
libdoxygen.pro.in
src/libdoxygen.pro.in
+2
-1
mangen.cpp
src/mangen.cpp
+53
-2
mangen.h
src/mangen.h
+3
-2
memberdef.cpp
src/memberdef.cpp
+6
-2
memberdef.h
src/memberdef.h
+13
-2
membergroup.cpp
src/membergroup.cpp
+1
-1
namespacedef.cpp
src/namespacedef.cpp
+2
-2
outputgen.h
src/outputgen.h
+2
-1
outputlist.cpp
src/outputlist.cpp
+1
-0
outputlist.h
src/outputlist.h
+4
-2
packagedef.cpp
src/packagedef.cpp
+1
-1
rtfgen.cpp
src/rtfgen.cpp
+2
-1
rtfgen.h
src/rtfgen.h
+2
-1
scanner.l
src/scanner.l
+72
-79
translator.h
src/translator.h
+14
-9
translator_adapter.h
src/translator_adapter.h
+172
-125
translator_br.h
src/translator_br.h
+5
-8
translator_cn.h
src/translator_cn.h
+3
-3
translator_cz.h
src/translator_cz.h
+207
-199
translator_de.h
src/translator_de.h
+432
-260
translator_dk.h
src/translator_dk.h
+4
-6
translator_en.h
src/translator_en.h
+50
-11
translator_es.h
src/translator_es.h
+4
-7
translator_fr.h
src/translator_fr.h
+4
-7
translator_hr.h
src/translator_hr.h
+3
-3
translator_hu.h
src/translator_hu.h
+5
-8
translator_it.h
src/translator_it.h
+5
-10
translator_jp.h
src/translator_jp.h
+4
-7
translator_kr.h
src/translator_kr.h
+4
-7
translator_nl.h
src/translator_nl.h
+3
-3
translator_no.h
src/translator_no.h
+3
-3
translator_pl.h
src/translator_pl.h
+5
-8
translator_pt.h
src/translator_pt.h
+4
-7
translator_ro.h
src/translator_ro.h
+5
-8
translator_ru.h
src/translator_ru.h
+4
-6
translator_si.h
src/translator_si.h
+3
-3
util.cpp
src/util.cpp
+1
-1
No files found.
INSTALL
View file @
9c04d0ff
DOXYGEN Version 1.2.7-200105
17
DOXYGEN Version 1.2.7-200105
24
Please read the installation section of the manual for instructions.
Please read the installation section of the manual for instructions.
--------
--------
Dimitri van Heesch (
17
May 2001)
Dimitri van Heesch (
24
May 2001)
README
View file @
9c04d0ff
DOXYGEN Version 1.2.7_200105
17
DOXYGEN Version 1.2.7_200105
24
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Enjoy,
Dimitri van Heesch (
17
May 2001)
Dimitri van Heesch (
24
May 2001)
VERSION
View file @
9c04d0ff
1.2.7-200105
17
1.2.7-200105
24
addon/xmlgen/xml.cpp
View file @
9c04d0ff
...
@@ -493,10 +493,10 @@ void generateXML()
...
@@ -493,10 +493,10 @@ void generateXML()
t
<<
"<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?>"
<<
endl
;
t
<<
"<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?>"
<<
endl
;
t
<<
"<!DOCTYPE doxygen SYSTEM
\"
doxygen.dtd
\"
>"
<<
endl
;
t
<<
"<!DOCTYPE doxygen SYSTEM
\"
doxygen.dtd
\"
>"
<<
endl
;
t
<<
"<doxygen>"
<<
endl
;
t
<<
"<doxygen>"
<<
endl
;
if
(
Doxygen
::
class
Lis
t
.
count
()
+
Doxygen
::
inputNameList
.
count
()
>
0
)
if
(
Doxygen
::
class
SDic
t
.
count
()
+
Doxygen
::
inputNameList
.
count
()
>
0
)
{
{
t
<<
" <compoundlist>"
<<
endl
;
t
<<
" <compoundlist>"
<<
endl
;
Class
ListIterator
cli
(
Doxygen
::
classLis
t
);
Class
SDict
::
Iterator
cli
(
Doxygen
::
classSDic
t
);
ClassDef
*
cd
;
ClassDef
*
cd
;
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
{
...
...
doc/Makefile.in
View file @
9c04d0ff
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
# Documents produced by Doxygen are derivative works derived from the
# Documents produced by Doxygen are derivative works derived from the
# input used in their production; they are not affected by this license.
# input used in their production; they are not affected by this license.
all
:
language.doc
FORCE
all
:
FORCE
DOXYGEN_DOCDIR
=
$(DOXYDOCS)
;
\
DOXYGEN_DOCDIR
=
$(DOXYDOCS)
;
\
export
DOXYGEN_DOCDIR
;
\
export
DOXYGEN_DOCDIR
;
\
VERSION
=
$(VERSION)
;
\
VERSION
=
$(VERSION)
;
\
...
@@ -28,6 +28,8 @@ all: language.doc FORCE
...
@@ -28,6 +28,8 @@ all: language.doc FORCE
clean
:
clean
:
rm
-rf
../html ../latex language.doc
rm
-rf
../html ../latex language.doc
language
:
language.doc language.tpl translator.pl
language.doc
:
language.tpl FORCE
language.doc
:
language.tpl FORCE
$(PERL)
translator.pl
$(PERL)
translator.pl
...
...
doc/Makefile.win_nmake.in
View file @
9c04d0ff
...
@@ -26,5 +26,11 @@ all: FORCE
...
@@ -26,5 +26,11 @@ all: FORCE
clean
:
clean
:
del /s /q ..
\h
tml ..
\l
atex
del /s /q ..
\h
tml ..
\l
atex
del translator_report.txt
*
.bak
language
:
language.doc language.tpl translator.pl
language.doc
:
language.tpl FORCE
$(PERL)
translator.pl
FORCE
:
FORCE
:
doc/commands.doc
View file @
9c04d0ff
...
@@ -127,6 +127,7 @@ documentation:
...
@@ -127,6 +127,7 @@ documentation:
<li> \refitem cmdverbinclude \verbinclude
<li> \refitem cmdverbinclude \verbinclude
<li> \refitem cmdversion \version
<li> \refitem cmdversion \version
<li> \refitem cmdwarning \warning
<li> \refitem cmdwarning \warning
<li> \refitem cmdweakgroup \weakgroup
<li> \refitem cmddollar \$
<li> \refitem cmddollar \$
<li> \refitem cmdat \@
<li> \refitem cmdat \@
<li> \refitem cmdbackslash \\
<li> \refitem cmdbackslash \\
...
@@ -150,10 +151,14 @@ Doxygen. Unrecognized commands are treated as normal text.
...
@@ -150,10 +151,14 @@ Doxygen. Unrecognized commands are treated as normal text.
Structural indicators
Structural indicators
\htmlonly --- </center>\endhtmlonly</h2>
\htmlonly --- </center>\endhtmlonly</h2>
\subsection cmdaddtogroup \addtogroup <name>
\subsection cmdaddtogroup \addtogroup <name>
[(title)]
\addindex \addtogroup
\addindex \addtogroup
Add extra documentation to a group \<name\> that was previously defined
Defines a group just like \ref cmddefgroup "\\defgroup", but in contrast to
using \\defgroup. This command can also be used to add a number of
that command using the same \<name\> more than once will not result in a warning,
but rather one group with a merged documentation and the first title found in
any of the commands.
The title is optional, so this command can also be used to add a number of
entities to an existing group using \@{ and \@} like this:
entities to an existing group using \@{ and \@} like this:
\verbatim
\verbatim
...
@@ -177,7 +182,8 @@ Doxygen. Unrecognized commands are treated as normal text.
...
@@ -177,7 +182,8 @@ Doxygen. Unrecognized commands are treated as normal text.
/*! @} */
/*! @} */
\endverbatim
\endverbatim
See also \ref cmddefgroup "\\defgroup" and \ref cmdingroup "\\ingroup".
\sa page \ref grouping "Grouping", sections \ref cmddefgroup "\\defgroup", \ref cmdingroup "\\ingroup" and
\ref cmdweakgroup "\\weakgroup".
\subsection cmdclass \class <name> [<header-file>] [<header-name>]
\subsection cmdclass \class <name> [<header-file>] [<header-name>]
...
@@ -225,9 +231,10 @@ Doxygen. Unrecognized commands are treated as normal text.
...
@@ -225,9 +231,10 @@ Doxygen. Unrecognized commands are treated as normal text.
categories. You can also use groups as members of other groups,
categories. You can also use groups as members of other groups,
thus building a hierarchy of groups.
thus building a hierarchy of groups.
The \<name\> argument should
an
single word identifier.
The \<name\> argument should
be a
single word identifier.
\sa section \ref cmdingroup "\\ingroup"
\sa page \ref grouping "Grouping", sections \ref cmdingroup "\\ingroup", \ref cmdaddtogroup "\\addtogroup",
\ref cmdweakgroup "\\weakgroup".
<hr>
<hr>
...
@@ -348,7 +355,8 @@ Doxygen. Unrecognized commands are treated as normal text.
...
@@ -348,7 +355,8 @@ Doxygen. Unrecognized commands are treated as normal text.
class, file or namespace, then it will be added to the group or
class, file or namespace, then it will be added to the group or
groups identified by \<groupname\>.
groups identified by \<groupname\>.
\sa section \ref cmddefgroup "\\defgroup".
\sa page \ref grouping "Grouping", sections \ref cmddefgroup "\\defgroup",
\ref cmdaddtogroup "\\addtogroup" and \ref cmdweakgroup "\\weakgroup"
<hr>
<hr>
\subsection cmdinterface \interface
\subsection cmdinterface \interface
...
@@ -555,6 +563,15 @@ Public/Protected/Private/... section.
...
@@ -555,6 +563,15 @@ Public/Protected/Private/... section.
\sa section \ref cmdfn "\\fn" and \ref cmdtypedef "\\typedef".
\sa section \ref cmdfn "\\fn" and \ref cmdtypedef "\\typedef".
<hr>
\subsection cmdweakgroup \weakgroup <name> [(title)]
\addindex \addtogroup
Can be used exactly like \ref cmdaddtogroup "\\addtogroup", but has
a lower priority when it comes to resolving conflicting grouping
definitions.
\sa page \ref grouping "Grouping" and \ref cmdaddtogroup "\\addtogroup".
<hr>
<hr>
<h2>\htmlonly <center> --- \endhtmlonly
<h2>\htmlonly <center> --- \endhtmlonly
...
...
doc/config.doc
View file @
9c04d0ff
...
@@ -142,6 +142,7 @@ followed by the descriptions of the tags grouped by category.
...
@@ -142,6 +142,7 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_latex_output
LATEX_OUTPUT
<
li
>
\
refitem
cfg_latex_output
LATEX_OUTPUT
<
li
>
\
refitem
cfg_macro_expansion
MACRO_EXPANSION
<
li
>
\
refitem
cfg_macro_expansion
MACRO_EXPANSION
<
li
>
\
refitem
cfg_man_extension
MAN_EXTENSION
<
li
>
\
refitem
cfg_man_extension
MAN_EXTENSION
<
li
>
\
refitem
cfg_man_links
MAN_LINKS
<
li
>
\
refitem
cfg_man_output
MAN_OUTPUT
<
li
>
\
refitem
cfg_man_output
MAN_OUTPUT
<
li
>
\
refitem
cfg_max_dot_graph_height
MAX_DOT_GRAPH_HEIGHT
<
li
>
\
refitem
cfg_max_dot_graph_height
MAX_DOT_GRAPH_HEIGHT
<
li
>
\
refitem
cfg_max_dot_graph_width
MAX_DOT_GRAPH_WIDTH
<
li
>
\
refitem
cfg_max_dot_graph_width
MAX_DOT_GRAPH_WIDTH
...
@@ -997,6 +998,16 @@ EXTRA_PACKAGES = times
...
@@ -997,6 +998,16 @@ EXTRA_PACKAGES = times
\addindex MAX_EXTENSION
\addindex MAX_EXTENSION
The \c MAN_EXTENSION tag determines the extension that is added to
The \c MAN_EXTENSION tag determines the extension that is added to
the generated man pages (default is the subroutine'
s
section
.3
)
the generated man pages (default is the subroutine'
s
section
.3
)
\
anchor
cfg_man_links
<
dt
>\
c
MAN_LINKS
<
dd
>
\
addindex
MAN_LINKS
If
the
\
c
MAN_LINKS
tag
is
set
to
\
c
YES
and
Doxygen
generates
man
output
,
then
it
will
generate
one
additional
man
file
for
each
entity
documented
in
the
real
man
page
(
s
).
These
additional
files
only
source
the
real
man
page
,
but
without
them
the
man
command
would
be
unable
to
find
the
correct
page
.
The
default
is
\
c
NO
.
</
dl
>
</
dl
>
\
subsection
config_prepro
Preprocessor
related
options
\
subsection
config_prepro
Preprocessor
related
options
...
@@ -1138,22 +1149,22 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
...
@@ -1138,22 +1149,22 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
\anchor cfg_include_graph
\anchor cfg_include_graph
<dt>\c INCLUDE_GRAPH <dd>
<dt>\c INCLUDE_GRAPH <dd>
\addindex INCLUDE_GRAPH
\addindex INCLUDE_GRAPH
If the \c ENABLE_PREPROCESSING, \c
INCLUDE_GRAPH, and \c HAVE_DOT tags are
If the \c ENABLE_PREPROCESSING, \c
SEARCH_INCLUDES, \c INCLUDE_GRAPH, and \c HAVE_DOT
set to \c YES then doxygen will generate a graph for each documented file
tags are set to \c YES then doxygen will generate a graph for each documented file
showing the direct and indirect include dependencies of the file with other
showing the direct and indirect include dependencies of the file with other
documented files.
documented files.
\anchor cfg_included_by_graph
\anchor cfg_included_by_graph
<dt>\c INCLUDED_BY_GRAPH <dd>
<dt>\c INCLUDED_BY_GRAPH <dd>
\addindex INCLUDED_BY_GRAPH
\addindex INCLUDED_BY_GRAPH
If the \c ENABLE_PREPROCESSING, \c
INCLUDED_BY_GRAPH, and \c HAVE_DOT tags are
If the \c ENABLE_PREPROCESSING, \c
SEARCH_INCLUDES, \c INCLUDED_BY_GRAPH, and
set to \c YES then doxygen will generate a graph for each documented header
\c HAVE_DOT tags are set to \c YES then doxygen will generate a graph for each
file showing the documented files that directly or indirectly include this
documented header file showing the documented files that directly or indirectly
file.
include this
file.
\anchor cfg_graphical_hierarchy
\anchor cfg_graphical_hierarchy
<dt>\c GRAPHICAL_HIERARCHY <dd>
<dt>\c GRAPHICAL_HIERARCHY <dd>
\addindex GRAPHICAL_HIERA
T
CHY
\addindex GRAPHICAL_HIERA
R
CHY
If the \c GRAPHICAL_HIERARCHY and \c HAVE_DOT tags are set to \c YES then
If the \c GRAPHICAL_HIERARCHY and \c HAVE_DOT tags are set to \c YES then
doxygen will graphical hierarchy of all classes instead of a textual one.
doxygen will graphical hierarchy of all classes instead of a textual one.
...
...
doc/faq.doc
View file @
9c04d0ff
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
/*! \page faq Frequently Asked Questions
/*! \page faq Frequently Asked Questions
<ol>
<ol>
<li><b>How
d
o get information on the index page in HTML?</b>
<li><b>How
t
o get information on the index page in HTML?</b>
<p>
<p>
You should use the \\mainpage command inside a comment block like this:
You should use the \\mainpage command inside a comment block like this:
\verbatim
\verbatim
...
...
doc/grouping.doc
View file @
9c04d0ff
...
@@ -34,6 +34,7 @@ command in a special comment block. The first argument of the command
...
@@ -34,6 +34,7 @@ command in a special comment block. The first argument of the command
is a label that should uniquely identify the group. You can make an
is a label that should uniquely identify the group. You can make an
entity a member of a specific group by putting
entity a member of a specific group by putting
a \ref cmdingroup "\\ingroup" command inside its documentation block.
a \ref cmdingroup "\\ingroup" command inside its documentation block.
The second argument is the title of the group.
To avoid putting \ref cmdingroup "\\ingroup" commands in the documentation
To avoid putting \ref cmdingroup "\\ingroup" commands in the documentation
of each member you can also group members together by the
of each member you can also group members together by the
...
@@ -44,11 +45,75 @@ documentation block.
...
@@ -44,11 +45,75 @@ documentation block.
Groups can also be nested using these grouping markers.
Groups can also be nested using these grouping markers.
You will get an error message when you use the same group label more than once.
If you don't want doxygen to enforce
unique labels, then you can use \ref cmdaddtogroup "\\addtogroup" instead of
\ref cmddefgroup "\\defgroup". It can be used exactly like \ref cmddefgroup "\\defgroup",
but when the group has been defined already, then it silently merges the existing documentation
with the new one.
The title of the group is optional for this command, so you can use
\verbatim
/** \addtogroup <label> */
/*\@{*/
/*\@}*/
\endverbatim
to add members to a group that is defined in more detail elsewhere.
Note that compound entities (like classes, files and namespaces) can
Note that compound entities (like classes, files and namespaces) can
be put into multiple groups, but members (like variable, functions, typedefs
be put into multiple groups, but members (like variable, functions, typedefs
and enums) can only be a member of one group
and enums) can only be a member of one group
(this restriction is to avoid ambiguous linking targets).
(this restriction is to avoid ambiguous linking targets).
Doxygen will put members into that group where the grouping definition had
the highest priority: f.i. \ref cmdingroup "\\ingroup" overrides any automatic
grouping definition via <code>\@{</code> <code>\@}</code>. Conflicting grouping
definitions with the same priority trigger a warning, unless one definition
was for a member without any explicit documentation. The following example
puts VarInA into group A and silently resolves the conflict for IntegerVariable by
putting it into group IntVariables, because the second instance of IntegerVariable
is undocumented:
\verbatim
/**
* \ingroup A
*/
extern int VarInA;
/**
* \defgroup IntVariables Global integer variables
*/
/*@{*/
/** an integer variable */
extern int IntegerVariable;
/*@}*/
....
/**
* \defgroup Variables Global variables
*/
/*@{*/
/** a variable in group A */
int VarInA;
int IntegerVariable;
/*@}*/
\endverbatim
The priorities of grouping definitions are (from highest to lowest):
\ref cmdingroup "\\ingroup", \ref cmddefgroup "\\defgroup",
\ref cmdaddtogroup "\\addtogroup", \ref cmdweakgroup "\\weakgroup".
The last command is exactly like \ref cmdaddtogroup "\\addtogroup"
with a lower priority. It was added to allow "lazy" grouping
definitions: you can use commands with a higher priority in your .h
files to define the hierarchy and \ref cmdweakgroup "\\weakgroup"
in .c files without having to duplicate the hierarchy exactly.
\par Example:
\par Example:
\verbinclude group.cpp
\verbinclude group.cpp
...
...
doc/install.doc
View file @
9c04d0ff
...
@@ -421,6 +421,10 @@ Here is what is required:
...
@@ -421,6 +421,10 @@ Here is what is required:
to produce PDF output instead of DVI, or the PDF can be produced
to produce PDF output instead of DVI, or the PDF can be produced
from PostScript using the utility <code>ps2pdf</code>.
from PostScript using the utility <code>ps2pdf</code>.
If you want to use MikTeX then you need to download the
fancyhdr package separately. You can find it at:
ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/supported/fancyhdr/
<li>If you want to generate compressed HTML help
<li>If you want to generate compressed HTML help
(see \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP") in the
(see \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP") in the
config file, then you need the Microsoft HTML help workshop.
config file, then you need the Microsoft HTML help workshop.
...
...
doc/language.tpl
View file @
9c04d0ff
/******************************************************************************
/******************************************************************************
*
<notice>
This is the template for generating language.doc.
Edit this file,
*
<notice>
This is the template for generating language.doc.
*
not the language.doc.
</notice>
*
Edit manually this file, not the language.doc!
</notice>
*
*
*
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
* Copyright (C) 1997-2001 by Dimitri van Heesch.
...
@@ -23,7 +23,8 @@ Doxygen has support for multiple languages. This means
...
@@ -23,7 +23,8 @@ Doxygen has support for multiple languages. This means
that the text fragments that doxygen generates can changed into languages
that the text fragments that doxygen generates can changed into languages
other than English (the default) at configuration time.
other than English (the default) at configuration time.
<p>
<p>
Currently, $numlang languages are supported (sorted alphabetically):
Currently (version $version), $numlang languages
are supported (sorted alphabetically):
$languages.
$languages.
The table of information related to the supported languages follows.
The table of information related to the supported languages follows.
...
@@ -33,7 +34,6 @@ when the translator was updated.
...
@@ -33,7 +34,6 @@ when the translator was updated.
<p>
<p>
$information_table
$information_table
Have a look at
<code>
doxygen/doc/translator.txt
</code>
for more details.
<p>
<p>
Most people on the list have indicated that they were also busy
Most people on the list have indicated that they were also busy
...
...
doc/maintainers.txt
View file @
9c04d0ff
...
@@ -15,7 +15,7 @@ Petr Přikryl: prikrylp@skil.cz
...
@@ -15,7 +15,7 @@ Petr Přikryl: prikrylp@skil.cz
Vlastimil Havran: havran@fel.cvut.cz
Vlastimil Havran: havran@fel.cvut.cz
Danish
Danish
Erik S
e S
rensen: erik@mail.nu
Erik S
øe Sø
rensen: erik@mail.nu
Dutch
Dutch
Dimitri van Heesch: dimitri@stack.nl
Dimitri van Heesch: dimitri@stack.nl
...
...
doc/translator.bat
View file @
9c04d0ff
:start
@call perl -w translator.pl
call perl -w translator.pl
pause
goto start
\ No newline at end of file
doc/translator.pl
View file @
9c04d0ff
...
@@ -4,6 +4,8 @@
...
@@ -4,6 +4,8 @@
# This is a Perl script for Doxygen developers.
# This is a Perl script for Doxygen developers.
# Its main purpose is to extract the information from sources
# Its main purpose is to extract the information from sources
# related to internationalization (the translator classes).
# related to internationalization (the translator classes).
# It uses the information to generate documentation (language.doc,
# translator_report.txt) from templates (language.tpl, maintainers.txt).
#
#
# Petr Prikryl (prikrylp@skil.cz)
# Petr Prikryl (prikrylp@skil.cz)
# History:
# History:
...
@@ -11,10 +13,26 @@
...
@@ -11,10 +13,26 @@
# 2001/04/27
# 2001/04/27
# - First version of the script.
# - First version of the script.
#
#
# 200
2
/05/02
# 200
1
/05/02
# - Update to accept updateNeededMessage() in the Translator class.
# - Update to accept updateNeededMessage() in the Translator class.
# - First version that generates doc/language.doc.
# - First version that generates doc/language.doc.
#
#
# 2001/05/07
# - Environment variable $doxygenrootdir now points to the
# Doxygen's root directory.
#
# 2001/05/11
# - Updated to reflect using TranslatorAdapterCVS as the base
# class for "almost up-to-date" translators.
# - $doxygenrootdir and other global variables for storing
# directories determined from DOXYGEN_DOCDIR environment
# variable. The change was done because the DOXYGEN_DOCDIR
# was already used before.
# - $version mark can be used in the language.tpl template.
#
# 2001/05/18
# - Character entity ø recognized in maintainers.txt.
#
################################################################
################################################################
require
5.005
;
require
5.005
;
...
@@ -23,14 +41,21 @@ use Carp;
...
@@ -23,14 +41,21 @@ use Carp;
# Global variables
# Global variables
#
#
my
$doxygenrootdir
=
".."
;
my
$doxygenrootdir
=
'directory set at the beginning of the body'
;
my
$srcdir
=
"$doxygenrootdir/src"
;
my
$srcdir
=
'directory set at the beginning of the body'
;
my
$docdir
=
"$doxygenrootdir/doc"
;
my
$docdir
=
'directory set at the beginning of the body'
;
my
$doxversion
=
'set at the beginning of the body'
;
# Names of the output files.
# Names of the output files.
#
#
my
$ftxt
=
"translator_report.txt"
;
my
$ftranslatortxt
=
"translator_report.txt"
;
my
$fdoc
=
"language.doc"
;
my
$flangdoc
=
"language.doc"
;
# Names of the template files and other intput files.
#
my
$flangtpl
=
"language.tpl"
;
# template for language.doc
my
$fmaintainers
=
"maintainers.txt"
;
# database of local lang. maintainers
################################################################
################################################################
...
@@ -199,7 +224,7 @@ sub GetInfoFrom ##{{{
...
@@ -199,7 +224,7 @@ sub GetInfoFrom ##{{{
################################################################
################################################################
# GenerateLanguageDoc takes document templates and code sources
# GenerateLanguageDoc takes document templates and code sources
# generates the content as expected in the
language.
doc file (the
# generates the content as expected in the
$flang
doc file (the
# part of the Doxygen documentation), and returns the result as a
# part of the Doxygen documentation), and returns the result as a
# string.
# string.
#
#
...
@@ -250,7 +275,8 @@ xxxTABLE_FOOTxxx
...
@@ -250,7 +275,8 @@ xxxTABLE_FOOTxxx
\latexonly
\latexonly
\begin{tabular}{|l|l|l|l|}
\begin{tabular}{|l|l|l|l|}
\hline
\hline
{\bf Language} & {\bf Maintainer} & {Contact address} & {Status} \\
{\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\
\hline
xxxTABLE_HEADxxx
xxxTABLE_HEADxxx
my
$latexTableRow
=
<<'xxxTABLE_ROWxxx';
my
$latexTableRow
=
<<'xxxTABLE_ROWxxx';
...
@@ -267,7 +293,7 @@ xxxTABLE_FOOTxxx
...
@@ -267,7 +293,7 @@ xxxTABLE_FOOTxxx
# Read the template of the documentation, and join the content
# Read the template of the documentation, and join the content
# to a single string. #{{{
# to a single string. #{{{
#
#
my
$fin
=
"$docdir/
language.
tpl"
;
my
$fin
=
"$docdir/
$flang
tpl"
;
open
(
FIN
,
"< $fin"
)
or
die
"\nError when open < $fin: $!"
;
open
(
FIN
,
"< $fin"
)
or
die
"\nError when open < $fin: $!"
;
my
@content
=
<
FIN
>
;
my
@content
=
<
FIN
>
;
close
FIN
;
close
FIN
;
...
@@ -304,7 +330,7 @@ xxxTABLE_FOOTxxx
...
@@ -304,7 +330,7 @@ xxxTABLE_FOOTxxx
# Read the information related to maintainers into the
# Read the information related to maintainers into the
# string using suitable separators -- one line, one language. #{{{
# string using suitable separators -- one line, one language. #{{{
#
#
$fin
=
"$docdir/
maintainers.txt
"
;
$fin
=
"$docdir/
$fmaintainers
"
;
open
(
FIN
,
"< $fin"
)
or
die
"\nError when open < $fin: $!"
;
open
(
FIN
,
"< $fin"
)
or
die
"\nError when open < $fin: $!"
;
my
@maintainers
=
<
FIN
>
;
my
@maintainers
=
<
FIN
>
;
close
FIN
;
close
FIN
;
...
@@ -374,13 +400,17 @@ xxxTABLE_FOOTxxx
...
@@ -374,13 +400,17 @@ xxxTABLE_FOOTxxx
foreach
my
$lang
(
sort
keys
%
language
)
{
foreach
my
$lang
(
sort
keys
%
language
)
{
# Read the line with info for the language and separate
# Read the line with info for the language and separate
# the
information of
status. #{{{
# the status. #{{{
#
#
my
@list
=
split
(
/<msep\/>/
,
$language
{
$lang
});
my
@list
=
split
(
/<msep\/>/
,
$language
{
$lang
});
my
$status
=
shift
@list
;
my
$status
=
shift
@list
;
my
$i
=
$status
=~
s{^Translator$}{up-to-date}
;
my
$i
=
$status
=~
s{^Translator$}{up-to-date}
;
if
(
$i
==
0
)
{
$i
=
$status
=~
s{^TranslatorAdapterCVS}{almost up-to-date}
;
}
if
(
$i
==
0
)
{
if
(
$i
==
0
)
{
$i
=
$status
=~
s{^TranslatorAdapter_(\d)_(\d)_(\d)}
$i
=
$status
=~
s{^TranslatorAdapter_(\d)_(\d)_(\d)}
{$1.$2.$3}x
;
{$1.$2.$3}x
;
...
@@ -479,9 +509,9 @@ xxxTABLE_FOOTxxx
...
@@ -479,9 +509,9 @@ xxxTABLE_FOOTxxx
##}}}
##}}}
# Finish the tables, and substitute the mark in the doc
# Finish the tables, and substitute the mark in the doc
# template by the contatenation of the tables
. Add NOSPAM to
# template by the contatenation of the tables
and the notice
#
email addresses in the HTML table. Replace the special
#
about $ftranslatortxt. Add NOSPAM to email addresses in the
# character sequences. #{{{
#
HTML table. Replace the special
character sequences. #{{{
#
#
$tableHTML
.=
$htmlTableFoot
;
$tableHTML
.=
$htmlTableFoot
;
$tableLATEX
.=
$latexTableFoot
;
$tableLATEX
.=
$latexTableFoot
;
...
@@ -493,16 +523,26 @@ xxxTABLE_FOOTxxx
...
@@ -493,16 +523,26 @@ xxxTABLE_FOOTxxx
$tableLATEX
=~
s/á/\\'{a}/sg
;
$tableLATEX
=~
s/á/\\'{a}/sg
;
$tableLATEX
=~
s/ä/\\"{a}/sg
;
$tableLATEX
=~
s/ä/\\"{a}/sg
;
$tableLATEX
=~
s/ö/\\"{o}/sg
;
$tableLATEX
=~
s/ö/\\"{o}/sg
;
$tableLATEX
=~
s/ø/\\o{}/sg
;
$tableLATEX
=~
s/_/\\_/sg
;
$tableLATEX
=~
s/_/\\_/sg
;
$output
=~
s{\$information_table}{$tableHTML$tableLATEX}
;
my
$notice
=
"\nHave a look at <a href=\"../doc/$ftranslatortxt\"\n>"
.
"<code>doxygen/doc/$ftranslatortxt</code></a> "
.
"for more details."
;
$output
=~
s{\$information_table}{$tableHTML$tableLATEX$notice}
;
$output
=~
s{\$version}{$doxversion}
;
##}}}
##}}}
# Replace the introduction notice in the output. #{{{
# Replace the introduction notice in the output. #{{{
#
#
$output
=~
s{<notice>.+?</notice>}
$output
=~
s{<notice>.+?</notice>}
{Warning: this file was generated from the language.tpl template
{Warning: this file was generated from the $flangtpl template
* Do not edit this file. Edit the template!}sx
;
* and the $fmaintainers files by the $0 script.
*
* Do not edit this file. Edit the above mentioned files!}sx
;
##}}}
##}}}
# Return the content of the generated output file.
# Return the content of the generated output file.
...
@@ -516,6 +556,24 @@ xxxTABLE_FOOTxxx
...
@@ -516,6 +556,24 @@ xxxTABLE_FOOTxxx
# Body
# Body
#
#
{
{
# Set the content of global variables using the environment
# variables. #{{{
#
$docdir
=
(
defined
$ENV
{
'DOXYGEN_DOCDIR'
})
?
$ENV
{
'DOXYGEN_DOCDIR'
}
:
'.'
;
$docdir
=~
s{\\}{/}g
;
$docdir
=~
s{/$}{}
;
$doxygenrootdir
=
(
$docdir
eq
'.'
)
?
'..'
:
$docdir
;
$doxygenrootdir
=~
s{/doc$}{}
;
$srcdir
=
"$doxygenrootdir/src"
;
$doxversion
=
(
defined
$ENV
{
'VERSION'
})
?
$ENV
{
'VERSION'
}
:
'unknown'
;
##}}}
# The translator base class must be present. Exit otherwise. #{{{
# The translator base class must be present. Exit otherwise. #{{{
#
#
if
(
!-
f
"$srcdir/translator.h"
)
if
(
!-
f
"$srcdir/translator.h"
)
...
@@ -635,7 +693,7 @@ xxxTABLE_FOOTxxx
...
@@ -635,7 +693,7 @@ xxxTABLE_FOOTxxx
# Generate the textual output file.
# Generate the textual output file.
#
#
my
$fout
=
"$docdir/$ftxt"
;
my
$fout
=
"$docdir/$ft
ranslatort
xt"
;
# Open it first.
# Open it first.
#
#
...
@@ -655,24 +713,37 @@ xxxTABLE_FOOTxxx
...
@@ -655,24 +713,37 @@ xxxTABLE_FOOTxxx
# If there are up-to-date translators, list them. #{{{
# If there are up-to-date translators, list them. #{{{
#
#
my
@list
=
sort
grep
{
$cb
{
$_
}
=~
m/^Translator$/
}
keys
%
cb
;
my
@list
=
sort
grep
{
$cb
{
$_
}
=~
m/^Translator
(AdapterCVS)?
$/
}
keys
%
cb
;
if
(
@list
)
{
if
(
@list
)
{
print
FOUT
"\n"
.
'-'
x
70
.
"\n"
;
print
FOUT
"\n"
.
'-'
x
70
.
"\n"
;
print
FOUT
"The following translator classes are up-to-date "
print
FOUT
"The following translator classes are up-to-date "
.
"(sorted alphabetically).\n"
.
"(sorted alphabetically).\n"
.
"This means that they derive from the Translator class. "
.
"This means that they derive from the Translator class. "
.
"However, there still\n"
.
"If the translator\n"
.
"may be some details listed below "
.
"derives from TranslatorAdapterCVS, it is considered "
.
"for them. Please, check it.\n\n"
;
.
"to be almost up-to-date.\n"
.
"In other words, it is newer than the last official "
.
"release. Anyway, there\n"
.
"still may be some details listed even for "
.
"the up-to-date translators.\n"
.
"Please, check the text below.\n\n"
;
foreach
(
@list
)
{
print
FOUT
" $_"
;
foreach
(
@list
)
{
print
FOUT
" $_\n"
;
}
# For almost up-to-date translators, show also the base class.
#
if
(
$cb
{
$_
}
ne
'Translator'
)
{
print
FOUT
"\t($cb{$_})"
;
}
print
FOUT
"\n"
;
}
}
}
##}}}
##}}}
# If there are obsolete translators, list them. #{{{
# If there are obsolete translators, list them. #{{{
#
#
@list
=
sort
grep
{
$cb
{
$_
}
=~
m/^TranslatorAdapter/
}
keys
%
cb
;
@list
=
sort
grep
{
$cb
{
$_
}
=~
m/^TranslatorAdapter
_
/
}
keys
%
cb
;
if
(
@list
)
{
if
(
@list
)
{
print
FOUT
"\n"
.
'-'
x
70
.
"\n"
;
print
FOUT
"\n"
.
'-'
x
70
.
"\n"
;
...
@@ -732,7 +803,7 @@ xxxTABLE_FOOTxxx
...
@@ -732,7 +803,7 @@ xxxTABLE_FOOTxxx
# Generate the language.doc file.
# Generate the language.doc file.
#
#
$fout
=
"$docdir/$fdoc"
;
$fout
=
"$docdir/$f
lang
doc"
;
# Open it first for the output.
# Open it first for the output.
#
#
...
...
packages/rpm/doxygen.spec
View file @
9c04d0ff
Name: doxygen
Name: doxygen
Version: 1.2.7_200105
17
Version: 1.2.7_200105
24
Summary: documentation system for C, C++ and IDL
Summary: documentation system for C, C++ and IDL
Release:
2
Release:
3
Source: doxygen
_
%{version}.src.tar.gz
Source: doxygen
-
%{version}.src.tar.gz
Copyright: GPL
Copyright: GPL
Group: unsorted
Group: unsorted
URL: http://www.stack.nl/~dimitri/doxygen
URL: http://www.stack.nl/~dimitri/doxygen
Packager: Matthias Andree <ma@dt.e-technik.uni-dortmund.de>
Packager: Matthias Andree <ma@dt.e-technik.uni-dortmund.de>
BuildRoot: /var/tmp/doxygen
_
%{version}.root
BuildRoot: /var/tmp/doxygen
-
%{version}.root
# requires Perl for tmake (Troll's make)
# requires Perl for tmake (Troll's make)
BuildPrereq: perl tetex
BuildPrereq: perl tetex
...
@@ -33,7 +33,7 @@ den Quellen extrahiert. Doxygen wird auf einer Linux-Plattform
...
@@ -33,7 +33,7 @@ den Quellen extrahiert. Doxygen wird auf einer Linux-Plattform
entwickelt, funktioniert aber genauso auf den meisten andern Unix
entwickelt, funktioniert aber genauso auf den meisten andern Unix
Dialekten. Das Programm ist auch fr Windows 95/NT erhltlich.
Dialekten. Das Programm ist auch fr Windows 95/NT erhltlich.
Aut
h
or:
Autor:
--------
--------
Dimitri van Heesch <dimitri@stack.nl>
Dimitri van Heesch <dimitri@stack.nl>
...
@@ -41,13 +41,14 @@ Author:
...
@@ -41,13 +41,14 @@ Author:
%setup -n doxygen-%{version}
%setup -n doxygen-%{version}
%build
%build
CFLAGS="$RPM_OPT_FLAGS" ./configure --
prefix /do_we_need_this_usr --
with-doxywizard
CFLAGS="$RPM_OPT_FLAGS" ./configure --with-doxywizard
make
make
%install
%install
rm -rf $RPM_BUILD_ROOT
rm -rf $RPM_BUILD_ROOT
make install INSTALL=$RPM_BUILD_ROOT/usr DOCDIR=$RPM_BUILD_ROOT%{_docdir}/doxygen
make install INSTALL=$RPM_BUILD_ROOT/usr DOCDIR=$RPM_BUILD_ROOT%{_docdir}/doxygen
install -m 644 LICENSE LANGUAGE.HOWTO PLATFORMS README VERSION $RPM_BUILD_ROOT%{_docdir}/doxygen
install -m 644 LICENSE LANGUAGE.HOWTO PLATFORMS README VERSION $RPM_BUILD_ROOT%{_docdir}/doxygen
find $RPM_BUILD_ROOT -name CVS -type d -depth -exec rm -r {} \;
%files
%files
%defattr(-,root,root)
%defattr(-,root,root)
...
...
src/classdef.cpp
View file @
9c04d0ff
...
@@ -626,7 +626,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -626,7 +626,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
pageType
+=
cType
;
pageType
+=
cType
;
pageTitle
+=
pageType
+
" Reference"
;
pageTitle
+=
pageType
+
" Reference"
;
if
(
outerTempArgList
)
pageTitle
.
prepend
(
" Template"
);
if
(
outerTempArgList
)
pageTitle
.
prepend
(
" Template"
);
startFile
(
ol
,
getOutputFileBase
(),
pageTitle
);
startFile
(
ol
,
getOutputFileBase
(),
name
(),
pageTitle
);
startTitle
(
ol
,
getOutputFileBase
());
startTitle
(
ol
,
getOutputFileBase
());
parseText
(
ol
,
theTranslator
->
trCompoundReference
(
name
(),
m_compType
,
outerTempArgList
!=
0
));
parseText
(
ol
,
theTranslator
->
trCompoundReference
(
name
(),
m_compType
,
outerTempArgList
!=
0
));
endTitle
(
ol
,
getOutputFileBase
(),
name
());
endTitle
(
ol
,
getOutputFileBase
(),
name
());
...
@@ -1096,7 +1096,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -1096,7 +1096,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
writeString
(
"
\n
"
);
ol
.
writeString
(
"
\n
"
);
ol
.
startGroupHeader
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trAuthor
());
parseText
(
ol
,
theTranslator
->
trAuthor
(
TRUE
,
TRUE
));
ol
.
endGroupHeader
();
ol
.
endGroupHeader
();
parseText
(
ol
,
theTranslator
->
trGeneratedAutomatically
(
Config_getString
(
"PROJECT_NAME"
)));
parseText
(
ol
,
theTranslator
->
trGeneratedAutomatically
(
Config_getString
(
"PROJECT_NAME"
)));
ol
.
popGeneratorState
();
ol
.
popGeneratorState
();
...
@@ -1121,7 +1121,8 @@ void ClassDef::writeMemberList(OutputList &ol)
...
@@ -1121,7 +1121,8 @@ void ClassDef::writeMemberList(OutputList &ol)
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
m_memListFileName
,
theTranslator
->
trMemberList
());
startFile
(
ol
,
m_memListFileName
,
m_memListFileName
,
theTranslator
->
trMemberList
());
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
parseText
(
ol
,
name
()
+
" "
+
theTranslator
->
trMemberList
());
parseText
(
ol
,
name
()
+
" "
+
theTranslator
->
trMemberList
());
endTitle
(
ol
,
0
,
0
);
endTitle
(
ol
,
0
,
0
);
...
@@ -1891,7 +1892,7 @@ QCString ClassDef::getSourceFileBase() const
...
@@ -1891,7 +1892,7 @@ QCString ClassDef::getSourceFileBase() const
return
convertNameToFile
(
m_fileName
+
"-source"
);
return
convertNameToFile
(
m_fileName
+
"-source"
);
}
}
void
ClassDef
::
setGroupDefForAllMembers
(
GroupDef
*
gd
)
void
ClassDef
::
setGroupDefForAllMembers
(
GroupDef
*
gd
,
Grouping
::
GroupPri_t
pri
,
const
QCString
&
fileName
,
int
startLine
,
bool
hasDocs
)
{
{
gd
->
addClass
(
this
);
gd
->
addClass
(
this
);
//printf("ClassDef::setGroupDefForAllMembers(%s)\n",gd->name().data());
//printf("ClassDef::setGroupDefForAllMembers(%s)\n",gd->name().data());
...
@@ -1904,10 +1905,10 @@ void ClassDef::setGroupDefForAllMembers(GroupDef *gd)
...
@@ -1904,10 +1905,10 @@ void ClassDef::setGroupDefForAllMembers(GroupDef *gd)
for
(
mnii
.
toFirst
();(
mi
=
mnii
.
current
());
++
mnii
)
for
(
mnii
.
toFirst
();(
mi
=
mnii
.
current
());
++
mnii
)
{
{
MemberDef
*
md
=
mi
->
memberDef
;
MemberDef
*
md
=
mi
->
memberDef
;
md
->
setGroupDef
(
gd
);
md
->
setGroupDef
(
gd
,
pri
,
fileName
,
startLine
,
hasDocs
);
gd
->
insertMember
(
md
,
TRUE
);
gd
->
insertMember
(
md
,
TRUE
);
ClassDef
*
innerClass
=
md
->
getClassDefOfAnonymousType
();
ClassDef
*
innerClass
=
md
->
getClassDefOfAnonymousType
();
if
(
innerClass
)
innerClass
->
setGroupDefForAllMembers
(
gd
);
if
(
innerClass
)
innerClass
->
setGroupDefForAllMembers
(
gd
,
pri
,
fileName
,
startLine
,
hasDocs
);
}
}
}
}
}
}
...
...
src/classdef.h
View file @
9c04d0ff
...
@@ -228,7 +228,7 @@ class ClassDef : public Definition
...
@@ -228,7 +228,7 @@ class ClassDef : public Definition
void
determineIntfUsageRelation
();
void
determineIntfUsageRelation
();
void
setSubGrouping
(
bool
enabled
)
{
m_subGrouping
=
enabled
;
}
void
setSubGrouping
(
bool
enabled
)
{
m_subGrouping
=
enabled
;
}
void
setProtection
(
Protection
p
)
{
m_prot
=
p
;
}
void
setProtection
(
Protection
p
)
{
m_prot
=
p
;
}
void
setGroupDefForAllMembers
(
GroupDef
*
g
);
void
setGroupDefForAllMembers
(
GroupDef
*
g
,
Grouping
::
GroupPri_t
pri
,
const
QCString
&
fileName
,
int
startLine
,
bool
hasDocs
);
void
addInnerCompound
(
Definition
*
d
);
void
addInnerCompound
(
Definition
*
d
);
void
setIsTemplateBaseClass
(
int
num
)
{
m_isTemplBaseClass
=
num
;
}
void
setIsTemplateBaseClass
(
int
num
)
{
m_isTemplBaseClass
=
num
;
}
void
initTemplateMapping
();
void
initTemplateMapping
();
...
...
src/config.h
View file @
9c04d0ff
...
@@ -8,16 +8,32 @@
...
@@ -8,16 +8,32 @@
#include <qlist.h>
#include <qlist.h>
#include <qtextstream.h>
#include <qtextstream.h>
/*! \brief Abstract base class for any configuration option.
/*! \brief Abstract base class for any configuration option.
*
*
*/
*/
class
ConfigOption
class
ConfigOption
{
{
friend
class
Config
;
public
:
public
:
enum
OptionType
{
O_Info
,
O_List
,
O_Enum
,
O_String
,
O_Int
,
O_Bool
};
/*! The type of option */
enum
{
MAX_OPTION_LENGTH
=
23
};
enum
OptionType
{
O_Info
,
//<! A section header
O_List
,
//<! A list of items
O_Enum
,
//<! A fixed set of items
O_String
,
//<! A single item
O_Int
,
//<! An integer value
O_Bool
//<! A boolean value
};
enum
{
/*! Maximum length of an option in the config file. Used for
* alignment purposes.
*/
MAX_OPTION_LENGTH
=
23
};
ConfigOption
(
OptionType
t
)
:
m_kind
(
t
)
ConfigOption
(
OptionType
t
)
:
m_kind
(
t
)
{
{
m_spaces
.
fill
(
' '
,
40
);
m_spaces
.
fill
(
' '
,
40
);
...
@@ -25,20 +41,23 @@ class ConfigOption
...
@@ -25,20 +41,23 @@ class ConfigOption
virtual
~
ConfigOption
()
virtual
~
ConfigOption
()
{
{
}
}
/*! returns the kind of option this is. */
OptionType
kind
()
const
{
return
m_kind
;
}
QCString
name
()
const
{
return
m_name
;
}
QCString
docs
()
const
{
return
m_doc
;
}
QCString
dependsOn
()
const
{
return
m_dependency
;
}
void
addDependency
(
const
char
*
dep
)
void
addDependency
(
const
char
*
dep
)
{
{
m_dependency
=
dep
;
m_dependency
=
dep
;
}
}
OptionType
kind
()
const
{
return
m_kind
;
}
protected
:
virtual
void
writeTemplate
(
QTextStream
&
t
,
bool
sl
)
=
0
;
virtual
void
writeTemplate
(
QTextStream
&
t
,
bool
sl
)
=
0
;
virtual
void
convertStrToVal
()
{}
virtual
void
convertStrToVal
()
{}
virtual
void
substEnvVars
()
{}
virtual
void
substEnvVars
()
{}
virtual
void
init
()
{}
virtual
void
init
()
{}
QCString
name
()
const
{
return
m_name
;
}
QCString
docs
()
const
{
return
m_doc
;
}
QCString
dependsOn
()
const
{
return
m_dependency
;
}
protected
:
QCString
convertToComment
(
const
QCString
&
s
)
QCString
convertToComment
(
const
QCString
&
s
)
{
{
...
@@ -340,48 +359,90 @@ class ConfigBool : public ConfigOption
...
@@ -340,48 +359,90 @@ class ConfigBool : public ConfigOption
* The static member instance() can be used to get
* The static member instance() can be used to get
* a pointer to the one and only instance.
* a pointer to the one and only instance.
*/
*/
struct
Config
class
Config
{
{
public
:
public
:
/////////////////////////////
// public API
/////////////////////////////
/*! Returns the one and only instance of this class */
static
Config
*
instance
()
static
Config
*
instance
()
{
{
if
(
m_instance
==
0
)
m_instance
=
new
Config
;
if
(
m_instance
==
0
)
m_instance
=
new
Config
;
return
m_instance
;
return
m_instance
;
}
}
void
writeTemplate
(
QFile
*
f
,
bool
shortIndex
);
/*! Returns an iterator that can by used to iterate over the
void
convertStrToVal
();
* configuration options.
void
substituteEnvironmentVars
();
*/
void
check
();
void
init
();
void
parse
(
const
QCString
&
config
,
const
char
*
fn
);
QListIterator
<
ConfigOption
>
iterator
()
QListIterator
<
ConfigOption
>
iterator
()
{
{
return
QListIterator
<
ConfigOption
>
(
*
m_options
);
return
QListIterator
<
ConfigOption
>
(
*
m_options
);
}
}
////////////////////////
/*!
// get functions
* @name Getting configuration values.
////////////////////////
* @{
*/
/*! Returns the value of the string option with name \a fileName.
* The arguments \a num and \a name are for debugging purposes only.
* There is a convenience function Config_getString() for this.
*/
QCString
&
getString
(
const
char
*
fileName
,
int
num
,
const
char
*
name
)
const
;
QCString
&
getString
(
const
char
*
fileName
,
int
num
,
const
char
*
name
)
const
;
/*! Returns the value of the list option with name \a fileName.
* The arguments \a num and \a name are for debugging purposes only.
* There is a convenience function Config_getList() for this.
*/
QStrList
&
getList
(
const
char
*
fileName
,
int
num
,
const
char
*
name
)
const
;
QStrList
&
getList
(
const
char
*
fileName
,
int
num
,
const
char
*
name
)
const
;
/*! Returns the value of the enum option with name \a fileName.
* The arguments \a num and \a name are for debugging purposes only.
* There is a convenience function Config_getEnum() for this.
*/
QCString
&
getEnum
(
const
char
*
fileName
,
int
num
,
const
char
*
name
)
const
;
QCString
&
getEnum
(
const
char
*
fileName
,
int
num
,
const
char
*
name
)
const
;
/*! Returns the value of the integer option with name \a fileName.
* The arguments \a num and \a name are for debugging purposes only.
* There is a convenience function Config_getInt() for this.
*/
int
&
getInt
(
const
char
*
fileName
,
int
num
,
const
char
*
name
)
const
;
int
&
getInt
(
const
char
*
fileName
,
int
num
,
const
char
*
name
)
const
;
/*! Returns the value of the boolean option with name \a fileName.
* The arguments \a num and \a name are for debugging purposes only.
* There is a convenience function Config_getBool() for this.
*/
bool
&
getBool
(
const
char
*
fileName
,
int
num
,
const
char
*
name
)
const
;
bool
&
getBool
(
const
char
*
fileName
,
int
num
,
const
char
*
name
)
const
;
/*! Returns the ConfigOption corresponding with \a name or 0 if
* the option is not supported.
*/
ConfigOption
*
get
(
const
char
*
name
)
const
ConfigOption
*
get
(
const
char
*
name
)
const
{
{
return
m_dict
->
find
(
name
);
return
m_dict
->
find
(
name
);
}
}
/* @} */
////////////////////////
/*!
// add functions
* @name Adding configuration options.
////////////////////////
* @{
*/
/*! Starts a new configuration section with \a name and description \a doc.
* \returns An object representing the option.
*/
ConfigInfo
*
addInfo
(
const
char
*
name
,
const
char
*
doc
)
ConfigInfo
*
addInfo
(
const
char
*
name
,
const
char
*
doc
)
{
{
ConfigInfo
*
result
=
new
ConfigInfo
(
name
,
doc
);
ConfigInfo
*
result
=
new
ConfigInfo
(
name
,
doc
);
m_options
->
append
(
result
);
m_options
->
append
(
result
);
return
result
;
return
result
;
}
}
/*! Adds a new string option with \a name and documentation \a doc.
* \returns An object representing the option.
*/
ConfigString
*
addString
(
const
char
*
name
,
ConfigString
*
addString
(
const
char
*
name
,
const
char
*
doc
)
const
char
*
doc
)
{
{
...
@@ -390,6 +451,11 @@ struct Config
...
@@ -390,6 +451,11 @@ struct Config
m_dict
->
insert
(
name
,
result
);
m_dict
->
insert
(
name
,
result
);
return
result
;
return
result
;
}
}
/*! Adds a new enumeration option with \a name and documentation \a doc
* and initial value \a defVal.
* \returns An object representing the option.
*/
ConfigEnum
*
addEnum
(
const
char
*
name
,
ConfigEnum
*
addEnum
(
const
char
*
name
,
const
char
*
doc
,
const
char
*
doc
,
const
char
*
defVal
)
const
char
*
defVal
)
...
@@ -399,6 +465,10 @@ struct Config
...
@@ -399,6 +465,10 @@ struct Config
m_dict
->
insert
(
name
,
result
);
m_dict
->
insert
(
name
,
result
);
return
result
;
return
result
;
}
}
/*! Adds a new string option with \a name and documentation \a doc.
* \returns An object representing the option.
*/
ConfigList
*
addList
(
const
char
*
name
,
ConfigList
*
addList
(
const
char
*
name
,
const
char
*
doc
)
const
char
*
doc
)
{
{
...
@@ -407,6 +477,12 @@ struct Config
...
@@ -407,6 +477,12 @@ struct Config
m_dict
->
insert
(
name
,
result
);
m_dict
->
insert
(
name
,
result
);
return
result
;
return
result
;
}
}
/*! Adds a new integer option with \a name and documentation \a doc.
* The integer has a range between \a minVal and \a maxVal and a
* default value of \a defVal.
* \returns An object representing the option.
*/
ConfigInt
*
addInt
(
const
char
*
name
,
ConfigInt
*
addInt
(
const
char
*
name
,
const
char
*
doc
,
const
char
*
doc
,
int
minVal
,
int
maxVal
,
int
defVal
)
int
minVal
,
int
maxVal
,
int
defVal
)
...
@@ -416,6 +492,11 @@ struct Config
...
@@ -416,6 +492,11 @@ struct Config
m_dict
->
insert
(
name
,
result
);
m_dict
->
insert
(
name
,
result
);
return
result
;
return
result
;
}
}
/*! Adds a new boolean option with \a name and documentation \a doc.
* The boolean has a default value of \a defVal.
* \returns An object representing the option.
*/
ConfigBool
*
addBool
(
const
char
*
name
,
ConfigBool
*
addBool
(
const
char
*
name
,
const
char
*
doc
,
const
char
*
doc
,
bool
defVal
)
bool
defVal
)
...
@@ -425,6 +506,23 @@ struct Config
...
@@ -425,6 +506,23 @@ struct Config
m_dict
->
insert
(
name
,
result
);
m_dict
->
insert
(
name
,
result
);
return
result
;
return
result
;
}
}
/*! @} */
/*! Writes a template configuration file to \a f. If \a shortIndex
* is \c TRUE the description of each configuration option will
* be omitted.
*/
void
writeTemplate
(
QFile
*
f
,
bool
shortIndex
);
/////////////////////////////
// internal API
/////////////////////////////
void
convertStrToVal
();
void
substituteEnvironmentVars
();
void
check
();
void
init
();
void
parse
(
const
QCString
&
config
,
const
char
*
fn
);
protected
:
protected
:
Config
()
Config
()
{
{
...
...
src/config.l
View file @
9c04d0ff
...
@@ -555,7 +555,8 @@ void Config::writeTemplate(QFile *f,bool sl)
...
@@ -555,7 +555,8 @@ void Config::writeTemplate(QFile *f,bool sl)
#endif
#endif
if (!sl)
if (!sl)
{
{
t << "# This file describes the settings to be used by doxygen for a project\n";
t << "# This file describes the settings to be used by the documentation system\n";
t << "# doxygen (www.doxygen.org) for a project\n";
t << "#\n";
t << "#\n";
t << "# All text after a hash (#) is considered a comment and will be ignored\n";
t << "# All text after a hash (#) is considered a comment and will be ignored\n";
t << "# The format is:\n";
t << "# The format is:\n";
...
@@ -1728,7 +1729,7 @@ void Config::create()
...
@@ -1728,7 +1729,7 @@ void Config::create()
"If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output \n"
"If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output \n"
"The RTF output is optimised for Word 97 and may not look very pretty with \n"
"The RTF output is optimised for Word 97 and may not look very pretty with \n"
"other RTF readers or editors.\n",
"other RTF readers or editors.\n",
TRU
E
FALS
E
);
);
cs = addString(
cs = addString(
"RTF_OUTPUT",
"RTF_OUTPUT",
...
@@ -1781,7 +1782,7 @@ void Config::create()
...
@@ -1781,7 +1782,7 @@ void Config::create()
"GENERATE_MAN",
"GENERATE_MAN",
"If the GENERATE_MAN tag is set to YES (the default) Doxygen will \n"
"If the GENERATE_MAN tag is set to YES (the default) Doxygen will \n"
"generate man pages \n",
"generate man pages \n",
TRU
E
FALS
E
);
);
cs = addString(
cs = addString(
"MAN_OUTPUT",
"MAN_OUTPUT",
...
@@ -1799,6 +1800,16 @@ void Config::create()
...
@@ -1799,6 +1800,16 @@ void Config::create()
);
);
cs->setDefaultValue(".3");
cs->setDefaultValue(".3");
cs->addDependency("GENERATE_MAN");
cs->addDependency("GENERATE_MAN");
cb = addBool(
"MAN_LINKS",
"If the MAN_LINKS tag is set to YES and Doxygen generates man output,\n"
"then it will generate one additional man file for each entity\n"
"documented in the real man page(s). These additional files\n"
"only source the real man page, but without them the man command\n"
"would be unable to find the correct page. The default is NO.\n",
FALSE
);
cb->addDependency("GENERATE_MAN");
//-----------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------
//addInfo( "XML","configuration options related to the XML output");
//addInfo( "XML","configuration options related to the XML output");
//-----------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------
...
@@ -1938,18 +1949,19 @@ void Config::create()
...
@@ -1938,18 +1949,19 @@ void Config::create()
cb->addDependency("HAVE_DOT");
cb->addDependency("HAVE_DOT");
cb = addBool(
cb = addBool(
"INCLUDE_GRAPH",
"INCLUDE_GRAPH",
"If the ENABLE_PREPROCESSING,
INCLUDE_GRAPH, and HAVE_DOT tags are set to
\n"
"If the ENABLE_PREPROCESSING,
SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
\n"
"
YES then doxygen will generate a graph for each documented file showing
\n"
"
tags are set to YES then doxygen will generate a graph for each documented
\n"
"
the direct and indirect include dependencies of the file with other
\n"
"
file showing the direct and indirect include dependencies of the file with
\n"
"documented files. \n",
"
other
documented files. \n",
TRUE
TRUE
);
);
cb->addDependency("HAVE_DOT");
cb->addDependency("HAVE_DOT");
cb = addBool(
cb = addBool(
"INCLUDED_BY_GRAPH",
"INCLUDED_BY_GRAPH",
"If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to \n"
"If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and \n"
"YES then doxygen will generate a graph for each documented header file showing \n"
"HAVE_DOT tags are set to YES then doxygen will generate a graph for each \n"
"the documented files that directly or indirectly include this file \n",
"documented header file showing the documented files that directly or \n"
"indirectly include this file. \n",
TRUE
TRUE
);
);
cb->addDependency("HAVE_DOT");
cb->addDependency("HAVE_DOT");
...
...
src/doc.l
View file @
9c04d0ff
...
@@ -1432,7 +1432,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
...
@@ -1432,7 +1432,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
outDoc->endDescList();
outDoc->endDescList();
currentListIndent.pop();
currentListIndent.pop();
}
}
<DocScan>{CMD}"author"{BN}+ {
<DocScan>{CMD}"author"
[s]?
{BN}+ {
endArgumentList();
endArgumentList();
if (!inAuthorBlock)
if (!inAuthorBlock)
{
{
...
@@ -1441,7 +1441,8 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
...
@@ -1441,7 +1441,8 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
currentListIndent.push("D");
currentListIndent.push("D");
outDoc->startDescList();
outDoc->startDescList();
outDoc->startBold();
outDoc->startBold();
scanString(theTranslator->trAuthors()+": ");
bool singular = ((QString)yytext).find('s')==-1;
scanString(theTranslator->trAuthor(TRUE,singular)+": ");
outDoc->endBold();
outDoc->endBold();
outDoc->endDescTitle();
outDoc->endDescTitle();
outDoc->writeDescItem();
outDoc->writeDescItem();
...
...
src/doxygen.cpp
View file @
9c04d0ff
...
@@ -270,11 +270,11 @@ static void addRelatedPage(const char *name,const QCString &ptitle,
...
@@ -270,11 +270,11 @@ static void addRelatedPage(const char *name,const QCString &ptitle,
static
void
addRelatedPage
(
Entry
*
root
)
static
void
addRelatedPage
(
Entry
*
root
)
{
{
GroupDef
*
gd
=
0
;
GroupDef
*
gd
=
0
;
QListIterator
<
QCString
>
s
li
(
*
root
->
groups
);
QListIterator
<
Grouping
>
g
li
(
*
root
->
groups
);
QCString
*
s
;
Grouping
*
g
;
for
(;(
s
=
sli
.
current
());
++
s
li
)
for
(;(
g
=
gli
.
current
());
++
g
li
)
{
{
if
(
!
s
->
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
*
s
]))
break
;
if
(
!
g
->
groupname
.
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
g
->
groupname
]))
break
;
}
}
addRelatedPage
(
root
->
name
,
root
->
args
,
root
->
doc
,
root
->
anchors
,
addRelatedPage
(
root
->
name
,
root
->
args
,
root
->
doc
,
root
->
anchors
,
root
->
fileName
,
root
->
startLine
,
root
->
todoId
,
root
->
fileName
,
root
->
startLine
,
root
->
todoId
,
...
@@ -392,6 +392,8 @@ static void buildGroupList(Entry *root)
...
@@ -392,6 +392,8 @@ static void buildGroupList(Entry *root)
GroupDef
*
gd
;
GroupDef
*
gd
;
if
((
gd
=
Doxygen
::
groupDict
[
root
->
name
]))
if
((
gd
=
Doxygen
::
groupDict
[
root
->
name
]))
{
if
(
root
->
groupdoctype
==
Entry
::
GROUPDOC_NORMAL
)
{
{
warn
(
root
->
fileName
,
root
->
startLine
,
warn
(
root
->
fileName
,
root
->
startLine
,
"Warning: group %s already documented. "
"Warning: group %s already documented. "
...
@@ -399,6 +401,24 @@ static void buildGroupList(Entry *root)
...
@@ -399,6 +401,24 @@ static void buildGroupList(Entry *root)
root
->
name
.
data
());
root
->
name
.
data
());
}
}
else
else
{
if
(
!
gd
->
hasGroupTitle
()
)
gd
->
setGroupTitle
(
root
->
type
);
else
if
(
root
->
type
.
length
()
>
0
&&
root
->
name
!=
root
->
type
&&
gd
->
groupTitle
()
!=
root
->
type
)
warn
(
root
->
fileName
,
root
->
startLine
,
"group %s: ignoring title
\"
%s
\"
that does not match old title
\"
%s
\"\n
"
,
root
->
name
.
data
(),
root
->
type
.
data
(),
gd
->
groupTitle
()
);
if
(
gd
->
briefDescription
().
isEmpty
()
)
gd
->
setBriefDescription
(
root
->
brief
);
if
(
!
root
->
doc
.
stripWhiteSpace
().
isEmpty
()
)
gd
->
setDocumentation
(
gd
->
documentation
().
isEmpty
()
?
root
->
doc
:
gd
->
documentation
()
+
"
\n\n
"
+
root
->
doc
);
gd
->
addSectionsToDefinition
(
root
->
anchors
);
gd
->
setRefItems
(
root
->
todoId
,
root
->
testId
,
root
->
bugId
);
addGroupToGroups
(
root
,
gd
);
}
}
else
{
{
gd
=
new
GroupDef
(
root
->
fileName
,
root
->
startLine
,
root
->
name
,
root
->
type
);
gd
=
new
GroupDef
(
root
->
fileName
,
root
->
startLine
,
root
->
name
,
root
->
type
);
if
(
root
->
tagInfo
)
if
(
root
->
tagInfo
)
...
@@ -440,30 +460,6 @@ static void organizeSubGroups(Entry *root)
...
@@ -440,30 +460,6 @@ static void organizeSubGroups(Entry *root)
}
}
}
}
static
void
addToGroupSections
(
Entry
*
root
)
{
if
(
root
->
section
==
Entry
::
ADDGRPDOC_SEC
&&
!
root
->
name
.
isEmpty
())
{
GroupDef
*
gd
=
Doxygen
::
groupDict
[
root
->
name
];
if
(
gd
)
{
gd
->
setDocumentation
(
gd
->
documentation
()
+
"<p>"
+
root
->
brief
+
root
->
doc
);
}
else
{
warn
(
root
->
fileName
,
root
->
startLine
,
"Warning: ignoring addtogroup command for undefined "
"group `%s'."
,
root
->
name
.
data
());
}
}
EntryListIterator
eli
(
*
root
->
sublist
);
Entry
*
e
;
for
(;(
e
=
eli
.
current
());
++
eli
)
{
addToGroupSections
(
e
);
}
}
//----------------------------------------------------------------------
//----------------------------------------------------------------------
static
void
buildFileList
(
Entry
*
root
)
static
void
buildFileList
(
Entry
*
root
)
...
@@ -496,12 +492,12 @@ static void buildFileList(Entry *root)
...
@@ -496,12 +492,12 @@ static void buildFileList(Entry *root)
fd
->
setBriefDescription
(
root
->
brief
);
fd
->
setBriefDescription
(
root
->
brief
);
fd
->
addSectionsToDefinition
(
root
->
anchors
);
fd
->
addSectionsToDefinition
(
root
->
anchors
);
fd
->
setRefItems
(
root
->
todoId
,
root
->
testId
,
root
->
bugId
);
fd
->
setRefItems
(
root
->
todoId
,
root
->
testId
,
root
->
bugId
);
QListIterator
<
QCString
>
s
li
(
*
root
->
groups
);
QListIterator
<
Grouping
>
g
li
(
*
root
->
groups
);
QCString
*
s
;
Grouping
*
g
;
for
(;(
s
=
sli
.
current
());
++
s
li
)
for
(;(
g
=
gli
.
current
());
++
g
li
)
{
{
GroupDef
*
gd
=
0
;
GroupDef
*
gd
=
0
;
if
(
!
s
->
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
*
s
]))
if
(
!
g
->
groupname
.
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
g
->
groupname
]))
{
{
gd
->
addFile
(
fd
);
gd
->
addFile
(
fd
);
//printf("File %s: in group %s\n",fd->name().data(),s->data());
//printf("File %s: in group %s\n",fd->name().data(),s->data());
...
@@ -709,7 +705,7 @@ static void buildClassList(Entry *root)
...
@@ -709,7 +705,7 @@ static void buildClassList(Entry *root)
!
root
->
name
.
isEmpty
()
!
root
->
name
.
isEmpty
()
)
)
{
{
QCString
fullName
=
r
oot
->
name
.
copy
(
);
QCString
fullName
=
r
emoveRedundantWhiteSpace
(
root
->
name
);
if
(
fullName
.
isEmpty
())
if
(
fullName
.
isEmpty
())
{
{
// this should not be called
// this should not be called
...
@@ -1103,12 +1099,12 @@ static void findUsingDirectives(Entry *root)
...
@@ -1103,12 +1099,12 @@ static void findUsingDirectives(Entry *root)
nd
->
setBriefDescription
(
root
->
brief
);
nd
->
setBriefDescription
(
root
->
brief
);
nd
->
addSectionsToDefinition
(
root
->
anchors
);
nd
->
addSectionsToDefinition
(
root
->
anchors
);
QListIterator
<
QCString
>
s
li
(
*
root
->
groups
);
QListIterator
<
Grouping
>
g
li
(
*
root
->
groups
);
QCString
*
s
;
Grouping
*
g
;
for
(;(
s
=
sli
.
current
());
++
s
li
)
for
(;(
g
=
gli
.
current
());
++
g
li
)
{
{
GroupDef
*
gd
=
0
;
GroupDef
*
gd
=
0
;
if
(
!
s
->
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
*
s
]))
if
(
!
g
->
groupname
.
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
g
->
groupname
]))
gd
->
addNamespace
(
nd
);
gd
->
addNamespace
(
nd
);
}
}
...
@@ -1448,12 +1444,12 @@ static MemberDef *addVariableToFile(
...
@@ -1448,12 +1444,12 @@ static MemberDef *addVariableToFile(
// merge ingroup specifiers
// merge ingroup specifiers
if
(
md
->
getGroupDef
()
==
0
&&
root
->
groups
->
first
())
if
(
md
->
getGroupDef
()
==
0
&&
root
->
groups
->
first
())
{
{
GroupDef
*
gd
=
Doxygen
::
groupDict
[
root
->
groups
->
first
()
->
data
()];
GroupDef
*
gd
=
Doxygen
::
groupDict
[
root
->
groups
->
first
()
->
groupname
.
data
()];
md
->
setGroupDef
(
gd
);
md
->
setGroupDef
(
gd
,
root
->
groups
->
first
()
->
pri
,
root
->
fileName
,
root
->
startLine
,
root
->
doc
.
length
()
!=
0
);
}
}
else
if
(
md
->
getGroupDef
()
!=
0
&&
root
->
groups
->
count
()
==
0
)
else
if
(
md
->
getGroupDef
()
!=
0
&&
root
->
groups
->
count
()
==
0
)
{
{
root
->
groups
->
append
(
new
QCString
(
md
->
getGroupDef
()
->
name
()));
root
->
groups
->
append
(
new
Grouping
(
md
->
getGroupDef
()
->
name
(),
md
->
getGroupPri
()));
}
}
}
}
}
}
...
@@ -1999,12 +1995,12 @@ static void buildMemberList(Entry *root)
...
@@ -1999,12 +1995,12 @@ static void buildMemberList(Entry *root)
// merge ingroup specifiers
// merge ingroup specifiers
if
(
md
->
getGroupDef
()
==
0
&&
root
->
groups
->
first
())
if
(
md
->
getGroupDef
()
==
0
&&
root
->
groups
->
first
())
{
{
GroupDef
*
gd
=
Doxygen
::
groupDict
[
root
->
groups
->
first
()
->
data
()];
GroupDef
*
gd
=
Doxygen
::
groupDict
[
root
->
groups
->
first
()
->
groupname
.
data
()];
md
->
setGroupDef
(
gd
);
md
->
setGroupDef
(
gd
,
root
->
groups
->
first
()
->
pri
,
root
->
fileName
,
root
->
startLine
,
root
->
doc
.
length
()
!=
0
);
}
}
else
if
(
md
->
getGroupDef
()
!=
0
&&
root
->
groups
->
count
()
==
0
)
else
if
(
md
->
getGroupDef
()
!=
0
&&
root
->
groups
->
count
()
==
0
)
{
{
root
->
groups
->
append
(
new
QCString
(
md
->
getGroupDef
()
->
name
()));
root
->
groups
->
append
(
new
Grouping
(
md
->
getGroupDef
()
->
name
(),
md
->
getGroupPri
()));
}
}
}
}
}
}
...
@@ -5103,9 +5099,7 @@ static void generatePageDocs()
...
@@ -5103,9 +5099,7 @@ static void generatePageDocs()
else
else
pageName
=
pi
->
name
.
lower
();
pageName
=
pi
->
name
.
lower
();
startFile
(
*
outputList
,
pageName
,
pi
->
title
);
startFile
(
*
outputList
,
pageName
,
pageName
,
pi
->
title
);
startFile
(
*
outputList
,
pageName
,
pi
->
title
);
// save old generator state and write title only to Man generator
// save old generator state and write title only to Man generator
outputList
->
pushGeneratorState
();
outputList
->
pushGeneratorState
();
...
@@ -5190,7 +5184,7 @@ static void generateExampleDocs()
...
@@ -5190,7 +5184,7 @@ static void generateExampleDocs()
{
{
msg
(
"Generating docs for example %s...
\n
"
,
pi
->
name
.
data
());
msg
(
"Generating docs for example %s...
\n
"
,
pi
->
name
.
data
());
QCString
n
=
convertNameToFile
(
pi
->
name
+
"-example"
);
QCString
n
=
convertNameToFile
(
pi
->
name
+
"-example"
);
startFile
(
*
outputList
,
n
,
"Example Documentation"
);
startFile
(
*
outputList
,
n
,
n
,
"Example Documentation"
);
startTitle
(
*
outputList
,
n
);
startTitle
(
*
outputList
,
n
);
outputList
->
docify
(
pi
->
name
);
outputList
->
docify
(
pi
->
name
);
endTitle
(
*
outputList
,
n
,
0
);
endTitle
(
*
outputList
,
n
,
0
);
...
@@ -5380,7 +5374,7 @@ static void generateSearchIndex()
...
@@ -5380,7 +5374,7 @@ static void generateSearchIndex()
//outputList->generateExternalIndex();
//outputList->generateExternalIndex();
outputList
->
pushGeneratorState
();
outputList
->
pushGeneratorState
();
outputList
->
disableAllBut
(
OutputGenerator
::
Html
);
outputList
->
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
*
outputList
,
"header.html"
,
"Search Engine"
,
TRUE
);
startFile
(
*
outputList
,
"header.html"
,
0
,
"Search Engine"
,
TRUE
);
outputList
->
endPlainFile
();
outputList
->
endPlainFile
();
outputList
->
startPlainFile
(
"footer.html"
);
outputList
->
startPlainFile
(
"footer.html"
);
endFile
(
*
outputList
,
TRUE
);
endFile
(
*
outputList
,
TRUE
);
...
@@ -6483,7 +6477,6 @@ void parseInput()
...
@@ -6483,7 +6477,6 @@ void parseInput()
msg
(
"Building group list...
\n
"
);
msg
(
"Building group list...
\n
"
);
buildGroupList
(
root
);
buildGroupList
(
root
);
organizeSubGroups
(
root
);
organizeSubGroups
(
root
);
addToGroupSections
(
root
);
msg
(
"Building namespace list...
\n
"
);
msg
(
"Building namespace list...
\n
"
);
buildNamespaceList
(
root
);
buildNamespaceList
(
root
);
...
...
src/entry.cpp
View file @
9c04d0ff
...
@@ -29,7 +29,7 @@ Entry::Entry()
...
@@ -29,7 +29,7 @@ Entry::Entry()
sublist
->
setAutoDelete
(
TRUE
);
sublist
->
setAutoDelete
(
TRUE
);
extends
=
new
QList
<
BaseInfo
>
;
extends
=
new
QList
<
BaseInfo
>
;
extends
->
setAutoDelete
(
TRUE
);
extends
->
setAutoDelete
(
TRUE
);
groups
=
new
QList
<
QCStr
ing
>
;
groups
=
new
QList
<
Group
ing
>
;
groups
->
setAutoDelete
(
TRUE
);
groups
->
setAutoDelete
(
TRUE
);
anchors
=
new
QList
<
QCString
>
;
anchors
=
new
QList
<
QCString
>
;
anchors
->
setAutoDelete
(
TRUE
);
anchors
->
setAutoDelete
(
TRUE
);
...
@@ -40,6 +40,7 @@ Entry::Entry()
...
@@ -40,6 +40,7 @@ Entry::Entry()
mtArgList
=
0
;
mtArgList
=
0
;
mGrpId
=
-
1
;
mGrpId
=
-
1
;
tagInfo
=
0
;
tagInfo
=
0
;
groupdoctype
=
GROUPDOC_NORMAL
;
reset
();
reset
();
}
}
...
@@ -82,7 +83,7 @@ Entry::Entry(const Entry &e)
...
@@ -82,7 +83,7 @@ Entry::Entry(const Entry &e)
sublist
->
setAutoDelete
(
TRUE
);
sublist
->
setAutoDelete
(
TRUE
);
extends
=
new
QList
<
BaseInfo
>
;
extends
=
new
QList
<
BaseInfo
>
;
extends
->
setAutoDelete
(
TRUE
);
extends
->
setAutoDelete
(
TRUE
);
groups
=
new
QList
<
QCStr
ing
>
;
groups
=
new
QList
<
Group
ing
>
;
groups
->
setAutoDelete
(
TRUE
);
groups
->
setAutoDelete
(
TRUE
);
anchors
=
new
QList
<
QCString
>
;
anchors
=
new
QList
<
QCString
>
;
anchors
->
setAutoDelete
(
TRUE
);
anchors
->
setAutoDelete
(
TRUE
);
...
@@ -91,6 +92,7 @@ Entry::Entry(const Entry &e)
...
@@ -91,6 +92,7 @@ Entry::Entry(const Entry &e)
//printf("Entry::Entry(copy) tArgList=0\n");
//printf("Entry::Entry(copy) tArgList=0\n");
tArgList
=
0
;
tArgList
=
0
;
mtArgList
=
0
;
mtArgList
=
0
;
groupdoctype
=
e
.
groupdoctype
;
// deep copy of the child entry list
// deep copy of the child entry list
QListIterator
<
Entry
>
eli
(
*
e
.
sublist
);
QListIterator
<
Entry
>
eli
(
*
e
.
sublist
);
...
@@ -109,14 +111,15 @@ Entry::Entry(const Entry &e)
...
@@ -109,14 +111,15 @@ Entry::Entry(const Entry &e)
}
}
// deep copy group list
// deep copy group list
QListIterator
<
QCString
>
s
li
(
*
e
.
groups
);
QListIterator
<
Grouping
>
g
li
(
*
e
.
groups
);
QCString
*
s
;
Grouping
*
g
;
for
(;(
s
=
sli
.
current
());
++
s
li
)
for
(;(
g
=
gli
.
current
());
++
g
li
)
{
{
groups
->
append
(
new
QCString
(
*
s
));
groups
->
append
(
new
Grouping
(
*
g
));
}
}
QListIterator
<
QCString
>
sli2
(
*
e
.
anchors
);
QListIterator
<
QCString
>
sli2
(
*
e
.
anchors
);
QCString
*
s
;
for
(;(
s
=
sli2
.
current
());
++
sli2
)
for
(;(
s
=
sli2
.
current
());
++
sli2
)
{
{
anchors
->
append
(
new
QCString
(
*
s
));
anchors
->
append
(
new
QCString
(
*
s
));
...
@@ -234,6 +237,7 @@ void Entry::reset()
...
@@ -234,6 +237,7 @@ void Entry::reset()
memSpec
=
0
;
memSpec
=
0
;
subGrouping
=
TRUE
;
subGrouping
=
TRUE
;
protection
=
Public
;
protection
=
Public
;
groupdoctype
=
GROUPDOC_NORMAL
;
sublist
->
clear
();
sublist
->
clear
();
extends
->
clear
();
extends
->
clear
();
groups
->
clear
();
groups
->
clear
();
...
@@ -270,14 +274,15 @@ int Entry::getSize()
...
@@ -270,14 +274,15 @@ int Entry::getSize()
size
+=
bi
->
name
.
length
()
+
1
+
sizeof
(
bi
->
prot
)
+
sizeof
(
bi
->
virt
);
size
+=
bi
->
name
.
length
()
+
1
+
sizeof
(
bi
->
prot
)
+
sizeof
(
bi
->
virt
);
bi
=
extends
->
next
();
bi
=
extends
->
next
();
}
}
QCString
*
s
=
groups
->
first
();
Grouping
*
g
=
groups
->
first
();
while
(
s
)
while
(
g
)
{
{
size
+=
sizeof
(
QLNode
);
size
+=
sizeof
(
QLNode
);
size
+=
s
->
length
()
+
1
;
size
+=
g
->
groupname
.
length
()
+
1
;
s
=
groups
->
next
();
size
+=
sizeof
(
g
->
pri
);
g
=
groups
->
next
();
}
}
s
=
anchors
->
first
();
QCString
*
s
=
anchors
->
first
();
while
(
s
)
while
(
s
)
{
{
size
+=
sizeof
(
QLNode
);
size
+=
sizeof
(
QLNode
);
...
...
src/entry.h
View file @
9c04d0ff
...
@@ -121,6 +121,53 @@ struct TagInfo
...
@@ -121,6 +121,53 @@ struct TagInfo
QCString
anchor
;
QCString
anchor
;
};
};
struct
Grouping
{
typedef
enum
{
GROUPING_LOWEST
,
GROUPING_AUTO_WEAK
=
GROUPING_LOWEST
,
//!< membership in group was defined via @weakgroup @{ @}
GROUPING_AUTO_ADD
,
//!< membership in group was defined via @add[to]group @{ @}
GROUPING_AUTO_DEF
,
//!< membership in group was defined via @defgroup @{ @}
GROUPING_AUTO_HIGHEST
=
GROUPING_AUTO_DEF
,
GROUPING_INGROUP
,
//!< membership in group was defined by @ingroup
GROUPING_HIGHEST
=
GROUPING_INGROUP
}
GroupPri_t
;
static
const
char
*
getGroupPriName
(
GroupPri_t
priority
)
{
switch
(
priority
)
{
case
GROUPING_AUTO_WEAK
:
return
"@weakgroup"
;
break
;
case
GROUPING_AUTO_ADD
:
return
"@addtogroup"
;
break
;
case
GROUPING_AUTO_DEF
:
return
"@defgroup"
;
break
;
case
GROUPING_INGROUP
:
return
"@ingroup"
;
break
;
default:
return
"???"
;
break
;
}
}
Grouping
(
const
char
*
gn
,
GroupPri_t
p
)
:
groupname
(
gn
),
pri
(
p
)
{}
Grouping
(
const
Grouping
&
g
)
:
groupname
(
g
.
groupname
),
pri
(
g
.
pri
)
{}
QCString
groupname
;
//!< name of the group
GroupPri_t
pri
;
//!< priority of this definition
};
/*! \brief Represents an unstructured piece of information, about an
/*! \brief Represents an unstructured piece of information, about an
* entity found in the sources.
* entity found in the sources.
*
*
...
@@ -176,8 +223,7 @@ class Entry
...
@@ -176,8 +223,7 @@ class Entry
MAINPAGEDOC_SEC
=
0x01200000
,
MAINPAGEDOC_SEC
=
0x01200000
,
MEMBERGRP_SEC
=
0x01300000
,
MEMBERGRP_SEC
=
0x01300000
,
USINGDECL_SEC
=
0x01400000
,
USINGDECL_SEC
=
0x01400000
,
PACKAGE_SEC
=
0x01500000
,
PACKAGE_SEC
=
0x01500000
ADDGRPDOC_SEC
=
0x01600000
};
};
enum
MemberSpecifier
enum
MemberSpecifier
{
{
...
@@ -232,7 +278,7 @@ class Entry
...
@@ -232,7 +278,7 @@ class Entry
int
mGrpId
;
//!< member group id
int
mGrpId
;
//!< member group id
QList
<
Entry
>
*
sublist
;
//!< entries that are children of this one
QList
<
Entry
>
*
sublist
;
//!< entries that are children of this one
QList
<
BaseInfo
>
*
extends
;
//!< list of base classes
QList
<
BaseInfo
>
*
extends
;
//!< list of base classes
QList
<
QCStr
ing
>
*
groups
;
//!< list of groups this entry belongs to
QList
<
Group
ing
>
*
groups
;
//!< list of groups this entry belongs to
QList
<
QCString
>
*
anchors
;
//!< list of anchors defined in this entry
QList
<
QCString
>
*
anchors
;
//!< list of anchors defined in this entry
QCString
fileName
;
//!< file this entry was extracted from
QCString
fileName
;
//!< file this entry was extracted from
int
startLine
;
//!< start line of entry in the source
int
startLine
;
//!< start line of entry in the source
...
@@ -241,6 +287,47 @@ class Entry
...
@@ -241,6 +287,47 @@ class Entry
int
bugId
;
//!< id of the bug list item of this entry
int
bugId
;
//!< id of the bug list item of this entry
TagInfo
*
tagInfo
;
//!< tag file info
TagInfo
*
tagInfo
;
//!< tag file info
static
int
num
;
//!< counts the total number of entries
static
int
num
;
//!< counts the total number of entries
enum
{
GROUPDOC_NORMAL
,
//<! @defgroup
GROUPDOC_ADD
,
//<! @addgroup
GROUPDOC_WEAK
//<! @weakgroup
}
groupdoctype
;
//!< kind of group
/// return the command name used to define GROUPDOC_SEC
const
char
*
groupdoccmd
()
const
{
switch
(
this
->
groupdoctype
)
{
case
GROUPDOC_NORMAL
:
return
"
\\
defgroup"
;
break
;
case
GROUPDOC_ADD
:
return
"
\\
addgroup"
;
break
;
case
GROUPDOC_WEAK
:
return
"
\\
weakgroup"
;
break
;
default:
return
"unknown group command"
;
}
}
Grouping
::
GroupPri_t
groupingpri
()
const
{
if
(
this
->
section
!=
GROUPDOC_SEC
)
{
return
Grouping
::
GROUPING_LOWEST
;
}
switch
(
this
->
groupdoctype
)
{
case
GROUPDOC_NORMAL
:
return
Grouping
::
GROUPING_AUTO_DEF
;
break
;
case
GROUPDOC_ADD
:
return
Grouping
::
GROUPING_AUTO_ADD
;
break
;
case
GROUPDOC_WEAK
:
return
Grouping
::
GROUPING_AUTO_WEAK
;
break
;
default
:
return
Grouping
::
GROUPING_LOWEST
;
}
}
private
:
private
:
Entry
&
operator
=
(
const
Entry
&
);
Entry
&
operator
=
(
const
Entry
&
);
}
;
}
;
...
...
src/filedef.cpp
View file @
9c04d0ff
...
@@ -117,7 +117,7 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -117,7 +117,7 @@ void FileDef::writeDocumentation(OutputList &ol)
//printf("WriteDocumentation diskname=%s\n",diskname.data());
//printf("WriteDocumentation diskname=%s\n",diskname.data());
QCString
pageTitle
=
name
()
+
" File Reference"
;
QCString
pageTitle
=
name
()
+
" File Reference"
;
startFile
(
ol
,
getOutputFileBase
(),
pageTitle
);
startFile
(
ol
,
getOutputFileBase
(),
name
(),
pageTitle
);
startTitle
(
ol
,
getOutputFileBase
());
startTitle
(
ol
,
getOutputFileBase
());
parseText
(
ol
,
theTranslator
->
trFileReference
(
docname
));
parseText
(
ol
,
theTranslator
->
trFileReference
(
docname
));
endTitle
(
ol
,
getOutputFileBase
(),
docName
());
endTitle
(
ol
,
getOutputFileBase
(),
docName
());
...
@@ -393,7 +393,7 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -393,7 +393,7 @@ void FileDef::writeDocumentation(OutputList &ol)
// write Author section (Man only)
// write Author section (Man only)
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
startGroupHeader
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trAuthor
());
parseText
(
ol
,
theTranslator
->
trAuthor
(
TRUE
,
TRUE
));
ol
.
endGroupHeader
();
ol
.
endGroupHeader
();
parseText
(
ol
,
theTranslator
->
trGeneratedAutomatically
(
Config_getString
(
"PROJECT_NAME"
)));
parseText
(
ol
,
theTranslator
->
trGeneratedAutomatically
(
Config_getString
(
"PROJECT_NAME"
)));
ol
.
enableAll
();
ol
.
enableAll
();
...
@@ -411,7 +411,7 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -411,7 +411,7 @@ void FileDef::writeDocumentation(OutputList &ol)
void
FileDef
::
writeSource
(
OutputList
&
ol
)
void
FileDef
::
writeSource
(
OutputList
&
ol
)
{
{
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
getSourceFileBase
(),
docname
+
" Source File"
);
startFile
(
ol
,
getSourceFileBase
(),
0
,
docname
+
" Source File"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
parseText
(
ol
,
docname
);
parseText
(
ol
,
docname
);
endTitle
(
ol
,
0
,
0
);
endTitle
(
ol
,
0
,
0
);
...
...
src/formula.cpp
View file @
9c04d0ff
...
@@ -174,7 +174,7 @@ void FormulaList::generateBitmaps(const char *path)
...
@@ -174,7 +174,7 @@ void FormulaList::generateBitmaps(const char *path)
#ifdef _WIN32
#ifdef _WIN32
char
gsArgs
[
256
];
char
gsArgs
[
256
];
sprintf
(
gsArgs
,
"-q -g%dx%d -r%dx%dx -sDEVICE=ppmraw "
sprintf
(
gsArgs
,
"-q -g%dx%d -r%dx%dx -sDEVICE=ppmraw "
"-sOutputFile=%s.pnm -
DNOPAUSE
-- %s.ps"
,
"-sOutputFile=%s.pnm -
dNOPAUSE -dBATCH
-- %s.ps"
,
gx
,
gy
,(
int
)(
scaleFactor
*
72
),(
int
)(
scaleFactor
*
72
),
gx
,
gy
,(
int
)(
scaleFactor
*
72
),(
int
)(
scaleFactor
*
72
),
formBase
.
data
(),
formBase
.
data
()
formBase
.
data
(),
formBase
.
data
()
);
);
...
@@ -210,7 +210,7 @@ void FormulaList::generateBitmaps(const char *path)
...
@@ -210,7 +210,7 @@ void FormulaList::generateBitmaps(const char *path)
#else
#else
char
gsArgs
[
4096
];
char
gsArgs
[
4096
];
sprintf
(
gsArgs
,
"-q -g%dx%d -r%dx%dx -sDEVICE=ppmraw "
sprintf
(
gsArgs
,
"-q -g%dx%d -r%dx%dx -sDEVICE=ppmraw "
"-sOutputFile=%s.pnm -
DNOPAUSE
-- %s.ps"
,
"-sOutputFile=%s.pnm -
dNOPAUSE -dBATCH
-- %s.ps"
,
gx
,
gy
,(
int
)(
scaleFactor
*
72
),(
int
)(
scaleFactor
*
72
),
gx
,
gy
,(
int
)(
scaleFactor
*
72
),(
int
)(
scaleFactor
*
72
),
formBase
.
data
(),
formBase
.
data
()
formBase
.
data
(),
formBase
.
data
()
);
);
...
...
src/groupdef.cpp
View file @
9c04d0ff
...
@@ -44,14 +44,8 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t) :
...
@@ -44,14 +44,8 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t) :
exampleDict
=
new
PageSDict
(
257
);
exampleDict
=
new
PageSDict
(
257
);
allMemberList
=
new
MemberList
;
allMemberList
=
new
MemberList
;
allMemberNameInfoDict
=
new
MemberNameInfoDict
(
1009
);
allMemberNameInfoDict
=
new
MemberNameInfoDict
(
1009
);
if
(
t
)
title
=
t
;
else
{
title
=
na
;
title
.
at
(
0
)
=
toupper
(
title
.
at
(
0
));
}
fileName
=
(
QCString
)
"group_"
+
na
;
fileName
=
(
QCString
)
"group_"
+
na
;
setGroupTitle
(
t
);
memberGroupList
=
new
MemberGroupList
;
memberGroupList
=
new
MemberGroupList
;
memberGroupList
->
setAutoDelete
(
TRUE
);
memberGroupList
->
setAutoDelete
(
TRUE
);
memberGroupDict
=
new
MemberGroupDict
(
1009
);
memberGroupDict
=
new
MemberGroupDict
(
1009
);
...
@@ -90,6 +84,22 @@ GroupDef::~GroupDef()
...
@@ -90,6 +84,22 @@ GroupDef::~GroupDef()
delete
memberGroupDict
;
delete
memberGroupDict
;
}
}
void
GroupDef
::
setGroupTitle
(
const
char
*
t
)
{
if
(
t
&&
strlen
(
t
)
)
{
title
=
t
;
titleSet
=
TRUE
;
}
else
{
title
=
name
();
title
.
at
(
0
)
=
toupper
(
title
.
at
(
0
));
titleSet
=
FALSE
;
}
}
void
GroupDef
::
distributeMemberGroupDocumentation
()
void
GroupDef
::
distributeMemberGroupDocumentation
()
{
{
MemberGroupListIterator
mgli
(
*
memberGroupList
);
MemberGroupListIterator
mgli
(
*
memberGroupList
);
...
@@ -158,7 +168,7 @@ void GroupDef::addMembersToMemberGroup()
...
@@ -158,7 +168,7 @@ void GroupDef::addMembersToMemberGroup()
void
GroupDef
::
insertMember
(
MemberDef
*
md
,
bool
docOnly
)
void
GroupDef
::
insertMember
(
MemberDef
*
md
,
bool
docOnly
)
{
{
//
printf("GroupDef::insertMember(%s)\n",
md->name().data());
//
fprintf(stderr, "GroupDef(%s)::insertMember(%s)\n", title.data(),
md->name().data());
MemberNameInfo
*
mni
=
0
;
MemberNameInfo
*
mni
=
0
;
if
((
mni
=
(
*
allMemberNameInfoDict
)[
md
->
name
()]))
if
((
mni
=
(
*
allMemberNameInfoDict
)[
md
->
name
()]))
{
// member with this name already found
{
// member with this name already found
...
@@ -237,6 +247,70 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly)
...
@@ -237,6 +247,70 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly)
//addMemberToGroup(md,groupId);
//addMemberToGroup(md,groupId);
}
}
void
GroupDef
::
removeMember
(
MemberDef
*
md
)
{
// fprintf(stderr, "GroupDef(%s)::removeMember( %s )\n", title.data(), md->name().data());
MemberNameInfo
*
mni
=
allMemberNameInfoDict
->
find
(
md
->
name
());
if
(
mni
)
{
MemberNameInfoIterator
mnii
(
*
mni
);
while
(
mnii
.
current
()
)
{
if
(
mnii
.
current
()
->
memberDef
==
md
)
{
mni
->
remove
(
mnii
.
current
());
break
;
}
++
mnii
;
}
if
(
mni
->
isEmpty
()
)
{
allMemberNameInfoDict
->
remove
(
md
->
name
());
delete
mni
;
}
allMemberList
->
remove
(
md
);
switch
(
md
->
memberType
())
{
case
MemberDef
:
:
Variable
:
decVarMembers
.
remove
(
md
);
docVarMembers
.
remove
(
md
);
break
;
case
MemberDef
:
:
Function
:
decFuncMembers
.
remove
(
md
);
docFuncMembers
.
remove
(
md
);
break
;
case
MemberDef
:
:
Typedef
:
decTypedefMembers
.
remove
(
md
);
docTypedefMembers
.
remove
(
md
);
break
;
case
MemberDef
:
:
Enumeration
:
decEnumMembers
.
remove
(
md
);
docEnumMembers
.
remove
(
md
);
break
;
case
MemberDef
:
:
EnumValue
:
decEnumValMembers
.
remove
(
md
);
docEnumValMembers
.
remove
(
md
);
break
;
case
MemberDef
:
:
Prototype
:
decProtoMembers
.
remove
(
md
);
docProtoMembers
.
remove
(
md
);
break
;
case
MemberDef
:
:
Define
:
decDefineMembers
.
remove
(
md
);
docDefineMembers
.
remove
(
md
);
break
;
default
:
err
(
"GroupDef::removeMember(): unexpected member remove in file!
\n
"
);
}
}
}
bool
GroupDef
::
containsGroup
(
const
GroupDef
*
def
)
{
return
groupList
->
find
(
def
)
>=
0
;
}
void
GroupDef
::
addGroup
(
const
GroupDef
*
def
)
void
GroupDef
::
addGroup
(
const
GroupDef
*
def
)
{
{
if
(
Config_getBool
(
"SORT_MEMBER_DOCS"
))
if
(
Config_getBool
(
"SORT_MEMBER_DOCS"
))
...
@@ -280,7 +354,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
...
@@ -280,7 +354,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
{
{
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
//ol.disable(OutputGenerator::Man);
//ol.disable(OutputGenerator::Man);
startFile
(
ol
,
getOutputFileBase
(),
title
);
startFile
(
ol
,
getOutputFileBase
(),
name
(),
title
);
startTitle
(
ol
,
getOutputFileBase
());
startTitle
(
ol
,
getOutputFileBase
());
ol
.
docify
(
title
);
ol
.
docify
(
title
);
endTitle
(
ol
,
getOutputFileBase
(),
title
);
endTitle
(
ol
,
getOutputFileBase
(),
title
);
...
@@ -510,12 +584,12 @@ void GroupDef::writeDocumentation(OutputList &ol)
...
@@ -510,12 +584,12 @@ void GroupDef::writeDocumentation(OutputList &ol)
void
addClassToGroups
(
Entry
*
root
,
ClassDef
*
cd
)
void
addClassToGroups
(
Entry
*
root
,
ClassDef
*
cd
)
{
{
QListIterator
<
QCString
>
s
li
(
*
root
->
groups
);
QListIterator
<
Grouping
>
g
li
(
*
root
->
groups
);
QCString
*
s
;
Grouping
*
g
;
for
(;(
s
=
sli
.
current
());
++
s
li
)
for
(;(
g
=
gli
.
current
());
++
g
li
)
{
{
GroupDef
*
gd
=
0
;
GroupDef
*
gd
=
0
;
if
(
!
s
->
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
*
s
]))
if
(
!
g
->
groupname
.
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
g
->
groupname
]))
{
{
gd
->
addClass
(
cd
);
gd
->
addClass
(
cd
);
//printf("Compound %s: in group %s\n",cd->name().data(),s->data());
//printf("Compound %s: in group %s\n",cd->name().data(),s->data());
...
@@ -526,13 +600,13 @@ void addClassToGroups(Entry *root,ClassDef *cd)
...
@@ -526,13 +600,13 @@ void addClassToGroups(Entry *root,ClassDef *cd)
void
addNamespaceToGroups
(
Entry
*
root
,
NamespaceDef
*
nd
)
void
addNamespaceToGroups
(
Entry
*
root
,
NamespaceDef
*
nd
)
{
{
//printf("root->groups->count()=%d\n",root->groups->count());
//printf("root->groups->count()=%d\n",root->groups->count());
QListIterator
<
QCString
>
s
li
(
*
root
->
groups
);
QListIterator
<
Grouping
>
g
li
(
*
root
->
groups
);
QCString
*
s
;
Grouping
*
g
;
for
(;(
s
=
sli
.
current
());
++
s
li
)
for
(;(
g
=
gli
.
current
());
++
g
li
)
{
{
GroupDef
*
gd
=
0
;
GroupDef
*
gd
=
0
;
//printf("group `%s'\n",s->data());
//printf("group `%s'\n",s->data());
if
(
!
s
->
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
*
s
]))
if
(
!
g
->
groupname
.
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
g
->
groupname
]))
{
{
gd
->
addNamespace
(
nd
);
gd
->
addNamespace
(
nd
);
//printf("Namespace %s: in group %s\n",nd->name().data(),s->data());
//printf("Namespace %s: in group %s\n",nd->name().data(),s->data());
...
@@ -542,12 +616,13 @@ void addNamespaceToGroups(Entry *root,NamespaceDef *nd)
...
@@ -542,12 +616,13 @@ void addNamespaceToGroups(Entry *root,NamespaceDef *nd)
void
addGroupToGroups
(
Entry
*
root
,
GroupDef
*
subGroup
)
void
addGroupToGroups
(
Entry
*
root
,
GroupDef
*
subGroup
)
{
{
QListIterator
<
QCString
>
s
li
(
*
root
->
groups
);
QListIterator
<
Grouping
>
g
li
(
*
root
->
groups
);
QCString
*
s
;
Grouping
*
g
;
for
(;(
s
=
sli
.
current
());
++
s
li
)
for
(;(
g
=
gli
.
current
());
++
g
li
)
{
{
GroupDef
*
gd
=
0
;
GroupDef
*
gd
=
0
;
if
(
!
s
->
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
*
s
]))
if
(
!
g
->
groupname
.
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
g
->
groupname
])
&&
!
gd
->
containsGroup
(
subGroup
)
)
{
{
gd
->
addGroup
(
subGroup
);
gd
->
addGroup
(
subGroup
);
subGroup
->
addParentGroup
(
gd
);
subGroup
->
addParentGroup
(
gd
);
...
@@ -555,34 +630,87 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup)
...
@@ -555,34 +630,87 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup)
}
}
}
}
/*! Add a member to
all groups it is contained in
*/
/*! Add a member to
the group with the highest priority
*/
void
addMemberToGroups
(
Entry
*
root
,
MemberDef
*
md
)
void
addMemberToGroups
(
Entry
*
root
,
MemberDef
*
md
)
{
{
QListIterator
<
QCString
>
sli
(
*
root
->
groups
);
//printf(" Root 0x%p = %s, md 0x%p %s\n", root, root->name.data(), md, md->name().data() );
QCString
*
s
;
QListIterator
<
Grouping
>
gli
(
*
root
->
groups
);
for
(;(
s
=
sli
.
current
());
++
sli
)
Grouping
*
g
;
{
//printf("addMemberToGroups(group=%s,member=%s)\n",s->data(),md->name().data());
// Search entry's group list for group with highest pri.
GroupDef
*
gd
=
0
;
Grouping
::
GroupPri_t
pri
=
Grouping
::
GROUPING_LOWEST
;
if
(
!
s
->
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
*
s
]))
GroupDef
*
fgd
=
0
;
for
(;(
g
=
gli
.
current
());
++
gli
)
{
GroupDef
*
gd
;
if
(
!
g
->
groupname
.
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
g
->
groupname
])
&&
g
->
pri
>=
pri
)
{
if
(
fgd
&&
g
->
pri
==
pri
)
{
warn
(
root
->
fileName
.
data
(),
root
->
startLine
,
"Warning: Member %s found in multiple %s groups! "
"The member will be put in group %s, and not in group %s"
,
md
->
name
().
data
(),
Grouping
::
getGroupPriName
(
pri
),
gd
->
name
().
data
(),
fgd
->
name
().
data
()
);
}
fgd
=
gd
;
pri
=
g
->
pri
;
}
}
// put member into group defined by this entry?
if
(
fgd
)
{
{
GroupDef
*
mgd
=
md
->
getGroupDef
();
GroupDef
*
mgd
=
md
->
getGroupDef
();
bool
insertit
=
FALSE
;
if
(
mgd
==
0
)
if
(
mgd
==
0
)
insertit
=
TRUE
;
else
if
(
mgd
!=
fgd
)
{
{
gd
->
insertMember
(
md
);
bool
moveit
=
FALSE
;
md
->
setGroupDef
(
gd
);
ClassDef
*
cd
=
md
->
getClassDefOfAnonymousType
();
// move member from one group to another if
if
(
cd
)
cd
->
setGroupDefForAllMembers
(
gd
);
// - the new one has a higher priority
}
// - the new entry has the same priority, but with docs where the old one had no docs
else
if
(
mgd
!=
gd
)
if
(
md
->
getGroupPri
()
<
pri
)
moveit
=
TRUE
;
else
{
{
warn
(
mgd
->
getDefFileName
(),
mgd
->
getDefLine
(),
if
(
md
->
getGroupPri
()
==
pri
)
"Warning: Member %s found in multiple groups.!
\n
"
{
"The member will be put in group %s, and not in group %s"
,
md
->
name
().
data
(),
mgd
->
name
().
data
(),
gd
->
name
().
data
()
if
(
root
->
doc
.
length
()
!=
0
&&
!
md
->
getGroupHasDocs
()
)
moveit
=
TRUE
;
else
if
(
root
->
doc
.
length
()
!=
0
&&
md
->
getGroupHasDocs
()
)
{
warn
(
md
->
getGroupFileName
(),
md
->
getGroupStartLine
(),
"Warning: Member documentation for %s found several times in %s groups!
\n
"
"%s:%d: The member will remain in group %s, and won't be put into group %s"
,
md
->
name
().
data
(),
Grouping
::
getGroupPriName
(
pri
),
root
->
fileName
.
data
(),
root
->
startLine
,
mgd
->
name
().
data
(),
fgd
->
name
().
data
()
);
);
}
}
//printf("Member %s: in group %s\n",md->name().data(),s->data());
}
}
if
(
moveit
)
{
mgd
->
removeMember
(
md
);
insertit
=
TRUE
;
}
}
if
(
insertit
)
{
fgd
->
insertMember
(
md
);
md
->
setGroupDef
(
fgd
,
pri
,
root
->
fileName
,
root
->
startLine
,
root
->
doc
.
length
()
!=
0
);
ClassDef
*
cd
=
md
->
getClassDefOfAnonymousType
();
if
(
cd
)
cd
->
setGroupDefForAllMembers
(
fgd
,
pri
,
root
->
fileName
,
root
->
startLine
,
root
->
doc
.
length
()
!=
0
);
}
}
}
}
}
}
...
@@ -590,12 +718,12 @@ void addMemberToGroups(Entry *root,MemberDef *md)
...
@@ -590,12 +718,12 @@ void addMemberToGroups(Entry *root,MemberDef *md)
void
addExampleToGroups
(
Entry
*
root
,
PageInfo
*
eg
)
void
addExampleToGroups
(
Entry
*
root
,
PageInfo
*
eg
)
{
{
QListIterator
<
QCString
>
s
li
(
*
root
->
groups
);
QListIterator
<
Grouping
>
g
li
(
*
root
->
groups
);
QCString
*
s
;
Grouping
*
g
;
for
(;(
s
=
sli
.
current
());
++
s
li
)
for
(;(
g
=
gli
.
current
());
++
g
li
)
{
{
GroupDef
*
gd
=
0
;
GroupDef
*
gd
=
0
;
if
(
!
s
->
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
*
s
]))
if
(
!
g
->
groupname
.
isEmpty
()
&&
(
gd
=
Doxygen
::
groupDict
[
g
->
groupname
]))
{
{
gd
->
addExample
(
eg
);
gd
->
addExample
(
eg
);
//printf("Example %s: in group %s\n",eg->name().data(),s->data());
//printf("Example %s: in group %s\n",eg->name().data(),s->data());
...
...
src/groupdef.h
View file @
9c04d0ff
...
@@ -48,6 +48,8 @@ class GroupDef : public Definition
...
@@ -48,6 +48,8 @@ class GroupDef : public Definition
DefType
definitionType
()
{
return
TypeGroup
;
}
DefType
definitionType
()
{
return
TypeGroup
;
}
QCString
getOutputFileBase
()
const
;
QCString
getOutputFileBase
()
const
;
const
char
*
groupTitle
()
const
{
return
title
;
}
const
char
*
groupTitle
()
const
{
return
title
;
}
void
setGroupTitle
(
const
char
*
newtitle
);
bool
hasGroupTitle
(
)
{
return
titleSet
;
}
void
addFile
(
const
FileDef
*
def
);
void
addFile
(
const
FileDef
*
def
);
void
addClass
(
const
ClassDef
*
def
);
void
addClass
(
const
ClassDef
*
def
);
void
addNamespace
(
const
NamespaceDef
*
def
);
void
addNamespace
(
const
NamespaceDef
*
def
);
...
@@ -56,6 +58,8 @@ class GroupDef : public Definition
...
@@ -56,6 +58,8 @@ class GroupDef : public Definition
void
addPage
(
PageInfo
*
def
);
// pages in this group
void
addPage
(
PageInfo
*
def
);
// pages in this group
void
addExample
(
const
PageInfo
*
def
);
// examples in this group
void
addExample
(
const
PageInfo
*
def
);
// examples in this group
void
insertMember
(
MemberDef
*
def
,
bool
docOnly
=
FALSE
);
void
insertMember
(
MemberDef
*
def
,
bool
docOnly
=
FALSE
);
void
removeMember
(
MemberDef
*
md
);
bool
containsGroup
(
const
GroupDef
*
def
);
// true if def is already a subgroup
void
writeDocumentation
(
OutputList
&
ol
);
void
writeDocumentation
(
OutputList
&
ol
);
int
countMembers
()
const
;
int
countMembers
()
const
;
bool
isLinkableInProject
()
bool
isLinkableInProject
()
...
@@ -82,6 +86,7 @@ class GroupDef : public Definition
...
@@ -82,6 +86,7 @@ class GroupDef : public Definition
private
:
private
:
QCString
title
;
// title of the group
QCString
title
;
// title of the group
bool
titleSet
;
// true if title is not the same as the name
QCString
fileName
;
// base name of the generated file
QCString
fileName
;
// base name of the generated file
FileList
*
fileList
;
// list of files in the group
FileList
*
fileList
;
// list of files in the group
ClassSDict
*
classSDict
;
// list of classes in the group
ClassSDict
*
classSDict
;
// list of classes in the group
...
@@ -115,7 +120,6 @@ class GroupDef : public Definition
...
@@ -115,7 +120,6 @@ class GroupDef : public Definition
/* user defined member groups */
/* user defined member groups */
MemberGroupList
*
memberGroupList
;
// list of member groups in this group
MemberGroupList
*
memberGroupList
;
// list of member groups in this group
MemberGroupDict
*
memberGroupDict
;
MemberGroupDict
*
memberGroupDict
;
};
};
class
GroupList
:
public
QList
<
GroupDef
>
class
GroupList
:
public
QList
<
GroupDef
>
...
...
src/htmlgen.cpp
View file @
9c04d0ff
...
@@ -101,7 +101,7 @@ static void writeDefaultHeaderFile(QTextStream &t,const char *title,
...
@@ -101,7 +101,7 @@ static void writeDefaultHeaderFile(QTextStream &t,const char *title,
bool
external
)
bool
external
)
{
{
t
<<
"<!DOCTYPE HTML PUBLIC
\"
-//W3C//DTD HTML 4.0 Transitional//EN
\"
>
\n
"
t
<<
"<!DOCTYPE HTML PUBLIC
\"
-//W3C//DTD HTML 4.0 Transitional//EN
\"
>
\n
"
"<html><head>
<meta name=
\"
robots
\"
content=
\"
noindex
\"
>
\n
"
"<html><head>
"
/*"<meta name=\"robots\" content=\"noindex\">\n"*/
"<meta http-equiv=
\"
Content-Type
\"
content=
\"
text/html;charset="
"<meta http-equiv=
\"
Content-Type
\"
content=
\"
text/html;charset="
<<
theTranslator
->
idLanguageCharset
()
<<
"
\"
>
\n
"
<<
theTranslator
->
idLanguageCharset
()
<<
"
\"
>
\n
"
"<title>"
<<
title
<<
"</title>
\n
"
;
"<title>"
<<
title
<<
"</title>
\n
"
;
...
@@ -151,7 +151,8 @@ void HtmlGenerator::writeFooterFile(QFile &file)
...
@@ -151,7 +151,8 @@ void HtmlGenerator::writeFooterFile(QFile &file)
}
}
void
HtmlGenerator
::
startFile
(
const
char
*
name
,
const
char
*
title
,
bool
external
)
void
HtmlGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
const
char
*
title
,
bool
external
)
{
{
QCString
fileName
=
name
;
QCString
fileName
=
name
;
lastTitle
=
title
;
lastTitle
=
title
;
...
...
src/htmlgen.h
View file @
9c04d0ff
...
@@ -45,7 +45,8 @@ class HtmlGenerator : public OutputGenerator
...
@@ -45,7 +45,8 @@ class HtmlGenerator : public OutputGenerator
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Html
)
?
this
:
0
;
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Html
)
?
this
:
0
;
}
//void generateExternalIndex();
//void generateExternalIndex();
void
startFile
(
const
char
*
name
,
const
char
*
title
,
bool
external
);
void
startFile
(
const
char
*
name
,
const
char
*
manName
,
const
char
*
title
,
bool
external
);
void
writeFooter
(
int
,
bool
);
void
writeFooter
(
int
,
bool
);
void
endFile
();
void
endFile
();
void
clearBuffer
();
void
clearBuffer
();
...
...
src/index.cpp
View file @
9c04d0ff
...
@@ -300,9 +300,10 @@ void endTitle(OutputList &ol,const char *fileName,const char *name)
...
@@ -300,9 +300,10 @@ void endTitle(OutputList &ol,const char *fileName,const char *name)
ol
.
endTitleHead
(
fileName
,
name
);
ol
.
endTitleHead
(
fileName
,
name
);
}
}
void
startFile
(
OutputList
&
ol
,
const
char
*
name
,
const
char
*
title
,
bool
external
)
void
startFile
(
OutputList
&
ol
,
const
char
*
name
,
const
char
*
manName
,
const
char
*
title
,
bool
external
)
{
{
ol
.
startFile
(
name
,
title
,
external
);
ol
.
startFile
(
name
,
manName
,
title
,
external
);
if
(
!
Config_getBool
(
"DISABLE_INDEX"
))
writeQuickLinks
(
ol
,
TRUE
,
external
);
if
(
!
Config_getBool
(
"DISABLE_INDEX"
))
writeQuickLinks
(
ol
,
TRUE
,
external
);
}
}
...
@@ -634,7 +635,7 @@ void writeHierarchicalIndex(OutputList &ol)
...
@@ -634,7 +635,7 @@ void writeHierarchicalIndex(OutputList &ol)
if
(
hierarchyClasses
==
0
)
return
;
if
(
hierarchyClasses
==
0
)
return
;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"hierarchy"
,
"Hierarchical Index"
);
startFile
(
ol
,
"hierarchy"
,
0
,
"Hierarchical Index"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
QCString
title
=
theTranslator
->
trClassHierarchy
();
QCString
title
=
theTranslator
->
trClassHierarchy
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
...
@@ -684,7 +685,7 @@ void writeGraphicalClassHierarchy(OutputList &ol)
...
@@ -684,7 +685,7 @@ void writeGraphicalClassHierarchy(OutputList &ol)
{
{
if
(
hierarchyClasses
==
0
)
return
;
if
(
hierarchyClasses
==
0
)
return
;
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
"inherits"
,
"Graphical Class Hierarchy"
);
startFile
(
ol
,
"inherits"
,
0
,
"Graphical Class Hierarchy"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
QCString
title
=
theTranslator
->
trGraphicalHierarchy
();
QCString
title
=
theTranslator
->
trGraphicalHierarchy
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
...
@@ -763,7 +764,7 @@ void writeFileIndex(OutputList &ol)
...
@@ -763,7 +764,7 @@ void writeFileIndex(OutputList &ol)
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
if
(
documentedFiles
==
0
)
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
if
(
documentedFiles
==
0
)
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
"files"
,
"File Index"
);
startFile
(
ol
,
"files"
,
0
,
"File Index"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
QCString
title
=
theTranslator
->
trFileList
();
QCString
title
=
theTranslator
->
trFileList
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
...
@@ -982,7 +983,7 @@ void writeNamespaceIndex(OutputList &ol)
...
@@ -982,7 +983,7 @@ void writeNamespaceIndex(OutputList &ol)
if
(
documentedNamespaces
==
0
)
return
;
if
(
documentedNamespaces
==
0
)
return
;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"namespaces"
,
"Namespace Index"
);
startFile
(
ol
,
"namespaces"
,
0
,
"Namespace Index"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
QCString
title
=
theTranslator
->
trNamespaceList
();
QCString
title
=
theTranslator
->
trNamespaceList
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
...
@@ -1324,7 +1325,7 @@ void writeAlphabeticalIndex(OutputList &ol)
...
@@ -1324,7 +1325,7 @@ void writeAlphabeticalIndex(OutputList &ol)
if
(
annotatedClasses
==
0
)
return
;
if
(
annotatedClasses
==
0
)
return
;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
"classes.html"
,
"Alphabetical index"
);
startFile
(
ol
,
"classes.html"
,
0
,
"Alphabetical index"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
parseText
(
ol
,
Config_getString
(
"PROJECT_NAME"
)
+
" "
+
theTranslator
->
trCompoundIndex
());
parseText
(
ol
,
Config_getString
(
"PROJECT_NAME"
)
+
" "
+
theTranslator
->
trCompoundIndex
());
endTitle
(
ol
,
0
,
0
);
endTitle
(
ol
,
0
,
0
);
...
@@ -1345,7 +1346,7 @@ void writeAnnotatedIndex(OutputList &ol)
...
@@ -1345,7 +1346,7 @@ void writeAnnotatedIndex(OutputList &ol)
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"annotated"
,
"Annotated Index"
);
startFile
(
ol
,
"annotated"
,
0
,
"Annotated Index"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
QCString
title
=
theTranslator
->
trCompoundList
();
QCString
title
=
theTranslator
->
trCompoundList
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
...
@@ -1396,7 +1397,7 @@ void writePackageIndex(OutputList &ol)
...
@@ -1396,7 +1397,7 @@ void writePackageIndex(OutputList &ol)
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"packages"
,
"Package Index"
);
startFile
(
ol
,
"packages"
,
0
,
"Package Index"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
QCString
title
=
theTranslator
->
trPackageList
();
QCString
title
=
theTranslator
->
trPackageList
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
...
@@ -1588,7 +1589,7 @@ void writeMemberIndex(OutputList &ol)
...
@@ -1588,7 +1589,7 @@ void writeMemberIndex(OutputList &ol)
if
(
documentedMembers
==
0
)
return
;
if
(
documentedMembers
==
0
)
return
;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
"functions"
,
"Compound Member Index"
);
startFile
(
ol
,
"functions"
,
0
,
"Compound Member Index"
);
QCString
title
=
theTranslator
->
trCompoundMembers
();
QCString
title
=
theTranslator
->
trCompoundMembers
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
QCString
ftvHelpTitle
=
title
;
QCString
ftvHelpTitle
=
title
;
...
@@ -1845,7 +1846,7 @@ void writeFileMemberIndex(OutputList &ol)
...
@@ -1845,7 +1846,7 @@ void writeFileMemberIndex(OutputList &ol)
if
(
documentedFunctions
==
0
)
return
;
if
(
documentedFunctions
==
0
)
return
;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
"globals"
,
"File Member Index"
);
startFile
(
ol
,
"globals"
,
0
,
"File Member Index"
);
QCString
title
=
theTranslator
->
trFileMembers
();
QCString
title
=
theTranslator
->
trFileMembers
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
QCString
ftvHelpTitle
=
title
;
QCString
ftvHelpTitle
=
title
;
...
@@ -1884,7 +1885,7 @@ void writeNamespaceMemberIndex(OutputList &ol)
...
@@ -1884,7 +1885,7 @@ void writeNamespaceMemberIndex(OutputList &ol)
if
(
documentedNamespaceMembers
==
0
)
return
;
if
(
documentedNamespaceMembers
==
0
)
return
;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
"namespacemembers"
,
"Namespace Member Index"
);
startFile
(
ol
,
"namespacemembers"
,
0
,
"Namespace Member Index"
);
QCString
title
=
theTranslator
->
trNamespaceMembers
();
QCString
title
=
theTranslator
->
trNamespaceMembers
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
QCString
ftvHelpTitle
=
title
;
QCString
ftvHelpTitle
=
title
;
...
@@ -1923,7 +1924,7 @@ void writeExampleIndex(OutputList &ol)
...
@@ -1923,7 +1924,7 @@ void writeExampleIndex(OutputList &ol)
if
(
Doxygen
::
exampleSDict
->
count
()
==
0
)
return
;
if
(
Doxygen
::
exampleSDict
->
count
()
==
0
)
return
;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"examples"
,
"Example Index"
);
startFile
(
ol
,
"examples"
,
0
,
"Example Index"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
QCString
title
=
theTranslator
->
trExamples
();
QCString
title
=
theTranslator
->
trExamples
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
...
@@ -2028,7 +2029,7 @@ void writePageIndex(OutputList &ol)
...
@@ -2028,7 +2029,7 @@ void writePageIndex(OutputList &ol)
if
(
indexedPages
==
0
)
return
;
if
(
indexedPages
==
0
)
return
;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"pages"
,
"Page Index"
);
startFile
(
ol
,
"pages"
,
0
,
"Page Index"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
QCString
title
=
theTranslator
->
trRelatedPages
();
QCString
title
=
theTranslator
->
trRelatedPages
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
...
@@ -2132,7 +2133,7 @@ void writeGraphInfo(OutputList &ol)
...
@@ -2132,7 +2133,7 @@ void writeGraphInfo(OutputList &ol)
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
generateGraphLegend
(
Config_getString
(
"HTML_OUTPUT"
));
generateGraphLegend
(
Config_getString
(
"HTML_OUTPUT"
));
startFile
(
ol
,
"graph_legend"
,
"Graph Legend"
);
startFile
(
ol
,
"graph_legend"
,
0
,
"Graph Legend"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
parseText
(
ol
,
theTranslator
->
trLegendTitle
());
parseText
(
ol
,
theTranslator
->
trLegendTitle
());
endTitle
(
ol
,
0
,
0
);
endTitle
(
ol
,
0
,
0
);
...
@@ -2523,7 +2524,7 @@ void writeGroupIndex(OutputList &ol)
...
@@ -2523,7 +2524,7 @@ void writeGroupIndex(OutputList &ol)
if
(
documentedGroups
==
0
)
return
;
if
(
documentedGroups
==
0
)
return
;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"modules"
,
"Module Index"
);
startFile
(
ol
,
"modules"
,
0
,
"Module Index"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
QCString
title
=
theTranslator
->
trModules
();
QCString
title
=
theTranslator
->
trModules
();
QCString
htmlHelpTitle
=
title
;
QCString
htmlHelpTitle
=
title
;
...
@@ -2607,7 +2608,7 @@ void writeIndex(OutputList &ol)
...
@@ -2607,7 +2608,7 @@ void writeIndex(OutputList &ol)
QCString
indexName
=
"index"
;
QCString
indexName
=
"index"
;
if
(
Config_getBool
(
"GENERATE_TREEVIEW"
))
indexName
=
"main"
;
if
(
Config_getBool
(
"GENERATE_TREEVIEW"
))
indexName
=
"main"
;
ol
.
startFile
(
indexName
,
title
,
FALSE
);
ol
.
startFile
(
indexName
,
0
,
title
,
FALSE
);
bool
&
generateHtml
=
Config_getBool
(
"GENERATE_HTML"
)
;
bool
&
generateHtml
=
Config_getBool
(
"GENERATE_HTML"
)
;
bool
hasHtmlHelp
=
generateHtml
&&
Config_getBool
(
"GENERATE_HTMLHELP"
);
bool
hasHtmlHelp
=
generateHtml
&&
Config_getBool
(
"GENERATE_HTMLHELP"
);
...
@@ -2655,7 +2656,7 @@ void writeIndex(OutputList &ol)
...
@@ -2655,7 +2656,7 @@ void writeIndex(OutputList &ol)
ol
.
enable
(
OutputGenerator
::
Latex
);
ol
.
enable
(
OutputGenerator
::
Latex
);
ol
.
enable
(
OutputGenerator
::
RTF
);
ol
.
enable
(
OutputGenerator
::
RTF
);
ol
.
startFile
(
"refman"
,
0
,
FALSE
);
ol
.
startFile
(
"refman"
,
0
,
0
,
FALSE
);
ol
.
startIndexSection
(
isTitlePageStart
);
ol
.
startIndexSection
(
isTitlePageStart
);
if
(
!
Config_getString
(
"LATEX_HEADER"
).
isEmpty
())
if
(
!
Config_getString
(
"LATEX_HEADER"
).
isEmpty
())
{
{
...
@@ -2780,7 +2781,7 @@ void writeIndex(OutputList &ol)
...
@@ -2780,7 +2781,7 @@ void writeIndex(OutputList &ol)
if
(
Doxygen
::
mainPage
)
if
(
Doxygen
::
mainPage
)
{
{
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
Doxygen
::
mainPage
->
name
,
Doxygen
::
mainPage
->
title
);
startFile
(
ol
,
Doxygen
::
mainPage
->
name
,
0
,
Doxygen
::
mainPage
->
title
);
//SectionInfo *si=0;
//SectionInfo *si=0;
//if (!Doxygen::mainPage->title.isEmpty() && !Doxygen::mainPage->name.isEmpty() &&
//if (!Doxygen::mainPage->title.isEmpty() && !Doxygen::mainPage->name.isEmpty() &&
// (si=Doxygen::sectionDict[Doxygen::mainPage->name])!=0)
// (si=Doxygen::sectionDict[Doxygen::mainPage->name])!=0)
...
...
src/index.h
View file @
9c04d0ff
...
@@ -86,7 +86,8 @@ extern int documentedPackages;
...
@@ -86,7 +86,8 @@ extern int documentedPackages;
void
startTitle
(
OutputList
&
ol
,
const
char
*
fileName
);
void
startTitle
(
OutputList
&
ol
,
const
char
*
fileName
);
void
endTitle
(
OutputList
&
ol
,
const
char
*
fileName
,
const
char
*
name
);
void
endTitle
(
OutputList
&
ol
,
const
char
*
fileName
,
const
char
*
name
);
void
startFile
(
OutputList
&
ol
,
const
char
*
name
,
const
char
*
title
,
bool
external
=
FALSE
);
void
startFile
(
OutputList
&
ol
,
const
char
*
name
,
const
char
*
manName
,
const
char
*
title
,
bool
external
=
FALSE
);
void
endFile
(
OutputList
&
ol
,
bool
external
=
FALSE
);
void
endFile
(
OutputList
&
ol
,
bool
external
=
FALSE
);
#endif
#endif
src/language.cpp
View file @
9c04d0ff
...
@@ -17,8 +17,10 @@
...
@@ -17,8 +17,10 @@
#include "message.h"
#include "message.h"
#include "language.h"
#include "language.h"
#include "translator.h"
#include "translator_en.h"
#include "translator_en.h"
#if !defined(ENGLISH_ONLY)
#if !defined(ENGLISH_ONLY)
#include "translator_adapter.h"
#include "translator_nl.h"
#include "translator_nl.h"
#include "translator_se.h"
#include "translator_se.h"
#include "translator_cz.h"
#include "translator_cz.h"
...
...
src/latexgen.cpp
View file @
9c04d0ff
...
@@ -408,7 +408,7 @@ void LatexGenerator::writeStyleSheetFile(QFile &f)
...
@@ -408,7 +408,7 @@ void LatexGenerator::writeStyleSheetFile(QFile &f)
writeDefaultStyleSheetPart3
(
t
);
writeDefaultStyleSheetPart3
(
t
);
}
}
void
LatexGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
bool
)
void
LatexGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
const
char
*
,
bool
)
{
{
QCString
fileName
=
name
;
QCString
fileName
=
name
;
if
(
fileName
.
right
(
4
)
!=
".tex"
&&
fileName
.
right
(
4
)
!=
".sty"
)
fileName
+=
".tex"
;
if
(
fileName
.
right
(
4
)
!=
".tex"
&&
fileName
.
right
(
4
)
!=
".sty"
)
fileName
+=
".tex"
;
...
...
src/latexgen.h
View file @
9c04d0ff
...
@@ -42,7 +42,8 @@ class LatexGenerator : public OutputGenerator
...
@@ -42,7 +42,8 @@ class LatexGenerator : public OutputGenerator
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
Latex
&&
active
);
}
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
Latex
&&
active
);
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Latex
)
?
this
:
0
;
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Latex
)
?
this
:
0
;
}
void
startFile
(
const
char
*
name
,
const
char
*
title
,
bool
external
);
void
startFile
(
const
char
*
name
,
const
char
*
manName
,
const
char
*
title
,
bool
external
);
void
writeFooter
(
int
,
bool
)
{}
void
writeFooter
(
int
,
bool
)
{}
void
endFile
();
void
endFile
();
void
clearBuffer
();
void
clearBuffer
();
...
...
src/libdoxygen.pro.in
View file @
9c04d0ff
...
@@ -142,9 +142,10 @@ SOURCES = ce_lex.cpp \
...
@@ -142,9 +142,10 @@ SOURCES = ce_lex.cpp \
util.cpp \
util.cpp \
version.cpp
version.cpp
win32:TMAKE_CXXFLAGS += -DQT_NODLL
win32:TMAKE_CXXFLAGS += -DQT_NODLL
-Zm200
INCLUDEPATH += ../qtools
INCLUDEPATH += ../qtools
win32:INCLUDEPATH += .
win32:INCLUDEPATH += .
DESTDIR = ../lib
DESTDIR = ../lib
TARGET = doxygen
TARGET = doxygen
OBJECTS_DIR = ../objects
OBJECTS_DIR = ../objects
src/mangen.cpp
View file @
9c04d0ff
...
@@ -27,6 +27,7 @@
...
@@ -27,6 +27,7 @@
#include "config.h"
#include "config.h"
#include "util.h"
#include "util.h"
#include "doxygen.h"
#include "doxygen.h"
#include <string.h>
static
QCString
getExtension
()
static
QCString
getExtension
()
{
{
...
@@ -94,10 +95,11 @@ void ManGenerator::init()
...
@@ -94,10 +95,11 @@ void ManGenerator::init()
}
}
}
}
void
ManGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
bool
)
static
QCString
buildFileName
(
const
char
*
name
)
{
{
QCString
fileName
=
name
;
QCString
fileName
=
name
;
#if 0
// TODO: do something sensible here.
// TODO: do something sensible here.
if (fileName.left(6)=="class_")
if (fileName.left(6)=="class_")
{
{
...
@@ -129,11 +131,20 @@ void ManGenerator::startFile(const char *name,const char *,bool)
...
@@ -129,11 +131,20 @@ void ManGenerator::startFile(const char *name,const char *,bool)
{
{
fileName=fileName.left(i);
fileName=fileName.left(i);
}
}
#endif
if
(
convertToQCString
(
fileName
.
right
(
2
))
!=
Config_getString
(
"MAN_EXTENSION"
))
if
(
convertToQCString
(
fileName
.
right
(
2
))
!=
Config_getString
(
"MAN_EXTENSION"
))
{
{
fileName
+=
Config_getString
(
"MAN_EXTENSION"
);
fileName
+=
Config_getString
(
"MAN_EXTENSION"
);
}
}
startPlainFile
(
fileName
);
return
fileName
;
}
void
ManGenerator
::
startFile
(
const
char
*
,
const
char
*
manName
,
const
char
*
,
bool
)
{
startPlainFile
(
buildFileName
(
manName
)
);
firstCol
=
TRUE
;
firstCol
=
TRUE
;
}
}
...
@@ -361,6 +372,46 @@ void ManGenerator::startMemberDoc(const char *,const char *,const char *,const c
...
@@ -361,6 +372,46 @@ void ManGenerator::startMemberDoc(const char *,const char *,const char *,const c
paragraph
=
FALSE
;
paragraph
=
FALSE
;
}
}
void
ManGenerator
::
startDoxyAnchor
(
const
char
*
fname
,
const
char
*
,
const
char
*
name
)
{
const
char
*
basename
;
// something to be done?
if
(
!
Config_getBool
(
"MAN_LINKS"
)
)
{
return
;
// no
}
// truncate after an (optional) ::
basename
=
strrchr
(
name
,
':'
);
if
(
!
basename
)
{
basename
=
name
;
}
else
{
basename
++
;
}
// only create file when it doesn't exist
QCString
fileName
=
dir
+
"/"
+
buildFileName
(
basename
);
QFile
linkfile
(
fileName
);
if
(
!
linkfile
.
open
(
IO_ReadOnly
)
)
{
if
(
linkfile
.
open
(
IO_WriteOnly
)
)
{
QTextStream
linkstream
;
linkstream
.
setDevice
(
&
linkfile
);
#if QT_VERSION >= 200
linkstream
.
setEncoding
(
QTextStream
::
Latin1
);
#endif
linkstream
<<
".so man"
<<
getExtension
()
<<
"/"
<<
buildFileName
(
fname
)
<<
endl
;
}
}
linkfile
.
close
();
}
void
ManGenerator
::
endMemberDoc
()
void
ManGenerator
::
endMemberDoc
()
{
{
t
<<
"
\"
"
;
t
<<
"
\"
"
;
...
...
src/mangen.h
View file @
9c04d0ff
...
@@ -40,7 +40,8 @@ class ManGenerator : public OutputGenerator
...
@@ -40,7 +40,8 @@ class ManGenerator : public OutputGenerator
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Man
)
?
this
:
0
;
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
Man
)
?
this
:
0
;
}
static
void
init
();
static
void
init
();
void
startFile
(
const
char
*
name
,
const
char
*
title
,
bool
external
);
void
startFile
(
const
char
*
name
,
const
char
*
manName
,
const
char
*
title
,
bool
external
);
void
writeFooter
(
int
,
bool
)
{}
void
writeFooter
(
int
,
bool
)
{}
void
endFile
();
void
endFile
();
void
clearBuffer
();
void
clearBuffer
();
...
@@ -125,7 +126,7 @@ class ManGenerator : public OutputGenerator
...
@@ -125,7 +126,7 @@ class ManGenerator : public OutputGenerator
void
writeChar
(
char
c
);
void
writeChar
(
char
c
);
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endMemberDoc
();
void
endMemberDoc
();
void
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
)
{}
void
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
)
;
void
endDoxyAnchor
(
const
char
*
,
const
char
*
)
{}
void
endDoxyAnchor
(
const
char
*
,
const
char
*
)
{}
void
startCodeAnchor
(
const
char
*
)
{}
void
startCodeAnchor
(
const
char
*
)
{}
void
endCodeAnchor
()
{}
void
endCodeAnchor
()
{}
...
...
src/memberdef.cpp
View file @
9c04d0ff
...
@@ -1468,8 +1468,12 @@ QCString MemberDef::anchor() const
...
@@ -1468,8 +1468,12 @@ QCString MemberDef::anchor() const
return
anc
;
return
anc
;
}
}
void
MemberDef
::
setGroupDef
(
GroupDef
*
gd
)
void
MemberDef
::
setGroupDef
(
GroupDef
*
gd
,
Grouping
::
GroupPri_t
pri
,
const
QCString
&
fileName
,
int
startLine
,
bool
hasDocs
)
{
{
printf
(
"%s MemberDef::setGroupDef(%s)
\n
"
,
name
().
data
(),
gd
->
name
().
data
());
//
printf("%s MemberDef::setGroupDef(%s)\n",name().data(),gd->name().data());
group
=
gd
;
group
=
gd
;
grouppri
=
pri
;
groupFileName
=
fileName
;
groupStartLine
=
startLine
;
groupHasDocs
=
hasDocs
;
}
}
src/memberdef.h
View file @
9c04d0ff
...
@@ -84,11 +84,17 @@ class MemberDef : public Definition
...
@@ -84,11 +84,17 @@ class MemberDef : public Definition
// scope query members
// scope query members
ClassDef
*
getClassDef
()
const
{
return
classDef
;
}
ClassDef
*
getClassDef
()
const
{
return
classDef
;
}
GroupDef
*
getGroupDef
()
const
{
return
group
;
}
FileDef
*
getFileDef
()
const
{
return
fileDef
;
}
FileDef
*
getFileDef
()
const
{
return
fileDef
;
}
NamespaceDef
*
getNamespaceDef
()
const
{
return
nspace
;
}
NamespaceDef
*
getNamespaceDef
()
const
{
return
nspace
;
}
//Definition *getCompoundDef() const;
//Definition *getCompoundDef() const;
// querying the grouping definition
GroupDef
*
getGroupDef
()
const
{
return
group
;
}
Grouping
::
GroupPri_t
getGroupPri
()
const
{
return
grouppri
;
}
const
char
*
getGroupFileName
()
const
{
return
groupFileName
;
}
int
getGroupStartLine
()
const
{
return
groupStartLine
;
}
bool
getGroupHasDocs
()
const
{
return
groupHasDocs
;
}
// direct kind info
// direct kind info
Protection
protection
()
const
{
return
prot
;
}
Protection
protection
()
const
{
return
prot
;
}
Specifier
virtualness
()
const
{
return
virt
;
}
Specifier
virtualness
()
const
{
return
virt
;
}
...
@@ -137,7 +143,7 @@ class MemberDef : public Definition
...
@@ -137,7 +143,7 @@ class MemberDef : public Definition
void
setMaxInitLines
(
int
lines
)
{
userInitLines
=
lines
;
}
void
setMaxInitLines
(
int
lines
)
{
userInitLines
=
lines
;
}
void
setMemberClass
(
ClassDef
*
cd
)
{
classDef
=
cd
;
}
void
setMemberClass
(
ClassDef
*
cd
)
{
classDef
=
cd
;
}
void
setSectionList
(
MemberList
*
sl
)
{
section
=
sl
;
}
void
setSectionList
(
MemberList
*
sl
)
{
section
=
sl
;
}
void
setGroupDef
(
GroupDef
*
gd
);
void
setGroupDef
(
GroupDef
*
gd
,
Grouping
::
GroupPri_t
pri
,
const
QCString
&
fileName
,
int
startLine
,
bool
hasDocs
);
void
setExplicitExternal
(
bool
b
)
{
explExt
=
b
;
}
void
setExplicitExternal
(
bool
b
)
{
explExt
=
b
;
}
void
makeRelated
()
{
related
=
TRUE
;
}
void
makeRelated
()
{
related
=
TRUE
;
}
...
@@ -274,6 +280,11 @@ class MemberDef : public Definition
...
@@ -274,6 +280,11 @@ class MemberDef : public Definition
// as its type then this is computed by
// as its type then this is computed by
// getClassDefOfAnonymousType() and
// getClassDefOfAnonymousType() and
// cached here.
// cached here.
Grouping
::
GroupPri_t
grouppri
;
// priority of this definition
QCString
groupFileName
;
// file where this grouping was defined
int
groupStartLine
;
// line " " " " "
bool
groupHasDocs
;
// true if the entry that caused the grouping was documented
// disable copying of member defs
// disable copying of member defs
...
...
src/membergroup.cpp
View file @
9c04d0ff
...
@@ -75,7 +75,7 @@ void MemberGroup::insertMember(MemberDef *md)
...
@@ -75,7 +75,7 @@ void MemberGroup::insertMember(MemberDef *md)
GroupDef
*
gd
;
GroupDef
*
gd
;
if
(
firstMd
&&
(
gd
=
firstMd
->
getGroupDef
()))
if
(
firstMd
&&
(
gd
=
firstMd
->
getGroupDef
()))
{
{
md
->
setGroupDef
(
gd
);
md
->
setGroupDef
(
gd
,
firstMd
->
getGroupPri
(),
firstMd
->
getGroupFileName
(),
firstMd
->
getGroupStartLine
(),
firstMd
->
getGroupHasDocs
()
);
gd
->
insertMember
(
md
);
gd
->
insertMember
(
md
);
}
}
}
}
...
...
src/namespacedef.cpp
View file @
9c04d0ff
...
@@ -210,7 +210,7 @@ void NamespaceDef::computeAnchors()
...
@@ -210,7 +210,7 @@ void NamespaceDef::computeAnchors()
void
NamespaceDef
::
writeDocumentation
(
OutputList
&
ol
)
void
NamespaceDef
::
writeDocumentation
(
OutputList
&
ol
)
{
{
QCString
pageTitle
=
name
()
+
" Namespace Reference"
;
QCString
pageTitle
=
name
()
+
" Namespace Reference"
;
startFile
(
ol
,
getOutputFileBase
(),
pageTitle
);
startFile
(
ol
,
getOutputFileBase
(),
name
(),
pageTitle
);
startTitle
(
ol
,
getOutputFileBase
());
startTitle
(
ol
,
getOutputFileBase
());
//ol.docify(pageTitle);
//ol.docify(pageTitle);
parseText
(
ol
,
theTranslator
->
trNamespaceReference
(
name
()));
parseText
(
ol
,
theTranslator
->
trNamespaceReference
(
name
()));
...
@@ -320,7 +320,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
...
@@ -320,7 +320,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
startGroupHeader
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trAuthor
());
parseText
(
ol
,
theTranslator
->
trAuthor
(
TRUE
,
TRUE
));
ol
.
endGroupHeader
();
ol
.
endGroupHeader
();
parseText
(
ol
,
theTranslator
->
trGeneratedAutomatically
(
Config_getString
(
"PROJECT_NAME"
)));
parseText
(
ol
,
theTranslator
->
trGeneratedAutomatically
(
Config_getString
(
"PROJECT_NAME"
)));
...
...
src/outputgen.h
View file @
9c04d0ff
...
@@ -289,7 +289,8 @@ class OutputGenerator : public BaseOutputDocInterface
...
@@ -289,7 +289,8 @@ class OutputGenerator : public BaseOutputDocInterface
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// structural output interface
// structural output interface
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
virtual
void
startFile
(
const
char
*
name
,
const
char
*
title
,
bool
ext
)
=
0
;
virtual
void
startFile
(
const
char
*
name
,
const
char
*
manName
,
const
char
*
title
,
bool
ext
)
=
0
;
virtual
void
writeFooter
(
int
,
bool
)
=
0
;
virtual
void
writeFooter
(
int
,
bool
)
=
0
;
virtual
void
endFile
()
=
0
;
virtual
void
endFile
()
=
0
;
virtual
void
startIndexSection
(
IndexSections
)
=
0
;
virtual
void
startIndexSection
(
IndexSections
)
=
0
;
...
...
src/outputlist.cpp
View file @
9c04d0ff
...
@@ -275,6 +275,7 @@ FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3)
...
@@ -275,6 +275,7 @@ FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3
(
const
char
*
a1
,
const
char
*
a2
,
bool
a3
,
a1
,
a2
,
a3
)
FORALL3
(
const
char
*
a1
,
const
char
*
a2
,
bool
a3
,
a1
,
a2
,
a3
)
FORALL3
(
uchar
a1
,
uchar
a2
,
uchar
a3
,
a1
,
a2
,
a3
)
FORALL3
(
uchar
a1
,
uchar
a2
,
uchar
a3
,
a1
,
a2
,
a3
)
FORALL4
(
const
char
*
a1
,
const
char
*
a2
,
const
char
*
a3
,
const
char
*
a4
,
a1
,
a2
,
a3
,
a4
)
FORALL4
(
const
char
*
a1
,
const
char
*
a2
,
const
char
*
a3
,
const
char
*
a4
,
a1
,
a2
,
a3
,
a4
)
FORALL4
(
const
char
*
a1
,
const
char
*
a2
,
const
char
*
a3
,
bool
a4
,
a1
,
a2
,
a3
,
a4
)
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
src/outputlist.h
View file @
9c04d0ff
...
@@ -82,8 +82,9 @@ class OutputList : public OutputDocInterface
...
@@ -82,8 +82,9 @@ class OutputList : public OutputDocInterface
{
forall
(
&
OutputGenerator
::
endProjectNumber
);
}
{
forall
(
&
OutputGenerator
::
endProjectNumber
);
}
void
writeStyleInfo
(
int
part
)
void
writeStyleInfo
(
int
part
)
{
forall
(
&
OutputGenerator
::
writeStyleInfo
,
part
);
}
{
forall
(
&
OutputGenerator
::
writeStyleInfo
,
part
);
}
void
startFile
(
const
char
*
name
,
const
char
*
title
,
bool
external
)
void
startFile
(
const
char
*
name
,
const
char
*
manName
,
{
forall
(
&
OutputGenerator
::
startFile
,
name
,
title
,
external
);
}
const
char
*
title
,
bool
external
)
{
forall
(
&
OutputGenerator
::
startFile
,
name
,
manName
,
title
,
external
);
}
void
writeFooter
(
int
fase
,
bool
external
)
void
writeFooter
(
int
fase
,
bool
external
)
{
forall
(
&
OutputGenerator
::
writeFooter
,
fase
,
external
);
}
{
forall
(
&
OutputGenerator
::
writeFooter
,
fase
,
external
);
}
void
endFile
()
void
endFile
()
...
@@ -458,6 +459,7 @@ class OutputList : public OutputDocInterface
...
@@ -458,6 +459,7 @@ class OutputList : public OutputDocInterface
FORALLPROTO3
(
const
char
*
,
const
char
*
,
const
char
*
);
FORALLPROTO3
(
const
char
*
,
const
char
*
,
const
char
*
);
FORALLPROTO3
(
ClassDiagram
&
,
const
char
*
,
const
char
*
);
FORALLPROTO3
(
ClassDiagram
&
,
const
char
*
,
const
char
*
);
FORALLPROTO4
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
FORALLPROTO4
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
FORALLPROTO4
(
const
char
*
,
const
char
*
,
const
char
*
,
bool
);
OutputList
(
const
OutputList
&
ol
);
OutputList
(
const
OutputList
&
ol
);
QList
<
OutputGenerator
>
*
outputs
;
QList
<
OutputGenerator
>
*
outputs
;
...
...
src/packagedef.cpp
View file @
9c04d0ff
...
@@ -53,7 +53,7 @@ void PackageDef::writeDocumentation(OutputList &ol)
...
@@ -53,7 +53,7 @@ void PackageDef::writeDocumentation(OutputList &ol)
QCString
title
=
theTranslator
->
trPackage
(
name
());
QCString
title
=
theTranslator
->
trPackage
(
name
());
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
getOutputFileBase
(),
title
);
startFile
(
ol
,
getOutputFileBase
(),
name
(),
title
);
startTitle
(
ol
,
getOutputFileBase
());
startTitle
(
ol
,
getOutputFileBase
());
ol
.
docify
(
title
);
ol
.
docify
(
title
);
endTitle
(
ol
,
getOutputFileBase
(),
title
);
endTitle
(
ol
,
getOutputFileBase
(),
title
);
...
...
src/rtfgen.cpp
View file @
9c04d0ff
...
@@ -857,7 +857,8 @@ void RTFGenerator::beginRTFSection()
...
@@ -857,7 +857,8 @@ void RTFGenerator::beginRTFSection()
t
<<
Rtf_Style
[
"Heading2"
]
->
reference
<<
"
\n
"
;
t
<<
Rtf_Style
[
"Heading2"
]
->
reference
<<
"
\n
"
;
}
}
void
RTFGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
bool
)
void
RTFGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
const
char
*
,
bool
)
{
{
QCString
fileName
=
name
;
QCString
fileName
=
name
;
...
...
src/rtfgen.h
View file @
9c04d0ff
...
@@ -42,7 +42,8 @@ class RTFGenerator : public OutputGenerator
...
@@ -42,7 +42,8 @@ class RTFGenerator : public OutputGenerator
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
RTF
&&
active
);
}
bool
isEnabled
(
OutputType
o
)
{
return
(
o
==
RTF
&&
active
);
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
RTF
)
?
this
:
0
;
}
OutputGenerator
*
get
(
OutputType
o
)
{
return
(
o
==
RTF
)
?
this
:
0
;
}
void
startFile
(
const
char
*
name
,
const
char
*
title
,
bool
external
);
void
startFile
(
const
char
*
name
,
const
char
*
manName
,
const
char
*
title
,
bool
external
);
void
writeFooter
(
int
,
bool
)
{}
void
writeFooter
(
int
,
bool
)
{}
void
endFile
();
void
endFile
();
void
clearBuffer
();
void
clearBuffer
();
...
...
src/scanner.l
View file @
9c04d0ff
...
@@ -142,8 +142,8 @@ static QCString *pCopyRoundString;
...
@@ -142,8 +142,8 @@ static QCString *pCopyRoundString;
static QCString *pCopyCurlyString;
static QCString *pCopyCurlyString;
static QCString *pCopyQuotedString;
static QCString *pCopyQuotedString;
static QCString *pSkipDoc;
static QCString *pSkipDoc;
static QStack<
QCString> autoGroupName
Stack;
static QStack<
Grouping> autoGroup
Stack;
static
QCString lastDefGroup
;
static
Grouping lastDefGroup( "", Grouping::GROUPING_LOWEST )
;
static bool insideFormula;
static bool insideFormula;
static bool insideTryBlock=FALSE;
static bool insideTryBlock=FALSE;
...
@@ -168,7 +168,7 @@ static void initParser()
...
@@ -168,7 +168,7 @@ static void initParser()
virt = Normal;
virt = Normal;
baseVirt = Normal;
baseVirt = Normal;
isTypedef = FALSE;
isTypedef = FALSE;
autoGroup
Name
Stack.clear();
autoGroupStack.clear();
insideTryBlock = FALSE;
insideTryBlock = FALSE;
insideIDL = FALSE;
insideIDL = FALSE;
}
}
...
@@ -180,38 +180,35 @@ static void initEntry()
...
@@ -180,38 +180,35 @@ static void initEntry()
current->virt = virt;
current->virt = virt;
current->stat = gstat;
current->stat = gstat;
current->mGrpId = memberGroupId;
current->mGrpId = memberGroupId;
if (!autoGroup
Name
Stack.isEmpty())
if (!autoGroupStack.isEmpty())
{
{
current->groups->append(new
QCString(*autoGroupName
Stack.top()));
current->groups->append(new
Grouping(*autoGroup
Stack.top()));
}
}
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
/// remove
old group name (if given)
and add new one (if given)
/// remove
any automatic grouping
and add new one (if given)
static void setCurrentGroup( QCString *
oldgroup, QCString *newgroup
)
static void setCurrentGroup( QCString *
newgroup, Grouping::GroupPri_t pri
)
{
{
if (oldgroup)
{
/* remove auto group name from current entry and discard it */
/* remove auto group name from current entry and discard it */
QCString *s
= current->groups->first();
Grouping *g
= current->groups->first();
int i=0;
int i=0;
while (s
)
while (g
)
{
{
if (*s==*oldgroup
)
if (g->pri <= Grouping::GROUPING_AUTO_DEF
)
{
{
current->groups->remove(i);
current->groups->remove(i);
break
;
i--
;
}
}
s
=current->groups->next();
g
=current->groups->next();
i++;
i++;
}
}
}
/* use new group name instead? */
/* use new group name instead? */
if ( newgroup )
if ( newgroup )
{
{
current->groups->append(new
QCString(*newgroup
));
current->groups->append(new
Grouping(*newgroup, pri
));
}
}
}
}
...
@@ -474,7 +471,6 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -474,7 +471,6 @@ TITLE [tT][iI][tT][lL][eE]
%x DocBaseClass
%x DocBaseClass
%x CppQuote
%x CppQuote
%x EndCppQuote
%x EndCppQuote
%x AddGroupDocArg1
%x GroupDocArg1
%x GroupDocArg1
%x GroupDocArg2
%x GroupDocArg2
%x GroupName
%x GroupName
...
@@ -1689,11 +1685,11 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -1689,11 +1685,11 @@ TITLE [tT][iI][tT][lL][eE]
varEntry->mGrpId = current->mGrpId;
varEntry->mGrpId = current->mGrpId;
// deep copy group list
// deep copy group list
QListIterator<
QCString> s
li(*current->groups);
QListIterator<
Grouping> g
li(*current->groups);
QCString *s
;
Grouping *g
;
for (;(
s=sli.current());++s
li)
for (;(
g=gli.current());++g
li)
{
{
varEntry->groups->append(new
QCString(*s
));
varEntry->groups->append(new
Grouping(*g
));
}
}
//printf("Add: type=`%s',name=`%s',args=`%s'\n",
//printf("Add: type=`%s',name=`%s',args=`%s'\n",
...
@@ -2684,13 +2680,22 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -2684,13 +2680,22 @@ TITLE [tT][iI][tT][lL][eE]
current->section = Entry::GROUPDOC_SEC;
current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->startLine = yyLineNr;
current->groupdoctype = Entry::GROUPDOC_NORMAL;
BEGIN( GroupDocArg1 );
BEGIN( GroupDocArg1 );
}
}
<Doc,JavaDoc>{B}*{CMD}"addtogroup"{B}+ {
<Doc,JavaDoc>{B}*{CMD}"addtogroup"{B}+ {
current->section = Entry::ADDGRPDOC_SEC;
current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->groupdoctype = Entry::GROUPDOC_ADD;
BEGIN( GroupDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"weakgroup"{B}+ {
current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->startLine = yyLineNr;
BEGIN( AddGroupDocArg1 );
current->groupdoctype = Entry::GROUPDOC_WEAK;
BEGIN( GroupDocArg1 );
}
}
<Doc,JavaDoc>{B}*{CMD}"namespace"{B}+ {
<Doc,JavaDoc>{B}*{CMD}"namespace"{B}+ {
current->section = Entry::NAMESPACEDOC_SEC;
current->section = Entry::NAMESPACEDOC_SEC;
...
@@ -2753,7 +2758,7 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -2753,7 +2758,7 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( ExampleDocArg1 );
BEGIN( ExampleDocArg1 );
}
}
<LineDoc>{CMD}"name"[^\n]*\n {
<LineDoc>{CMD}"name"[^\n]*\n {
lastDefGroup.resize(0);
lastDefGroup.
groupname.
resize(0);
memberGroupHeader=&yytext[5];
memberGroupHeader=&yytext[5];
memberGroupHeader=memberGroupHeader.stripWhiteSpace();
memberGroupHeader=memberGroupHeader.stripWhiteSpace();
current->section = Entry::MEMBERGRP_SEC;
current->section = Entry::MEMBERGRP_SEC;
...
@@ -2763,7 +2768,7 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -2763,7 +2768,7 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( lastDocContext );
BEGIN( lastDocContext );
}
}
<Doc,JavaDoc>{CMD}"name"{B}+ {
<Doc,JavaDoc>{CMD}"name"{B}+ {
lastDefGroup.resize(0);
lastDefGroup.
groupname.
resize(0);
current->section = Entry::MEMBERGRP_SEC;
current->section = Entry::MEMBERGRP_SEC;
current->fileName = yyFileName;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->startLine = yyLineNr;
...
@@ -2946,30 +2951,10 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -2946,30 +2951,10 @@ TITLE [tT][iI][tT][lL][eE]
yyLineNr++;
yyLineNr++;
}
}
<AddGroupDocArg1>{ID} {
current->name = yytext;
lastDefGroup = yytext;
newDocState();
}
<AddGroupDocArg1>"\n" {
warn(yyFileName,yyLineNr,
"Warning: missing argument after "
"\\addtogroup."
);
yyLineNr++;
BEGIN( Doc );
}
<GroupDocArg2>"*/" {
unput('/');unput('*');
warn(yyFileName,yyLineNr,
"Warning: missing argument after "
"\\addtogroup."
);
BEGIN( Doc );
}
<GroupDocArg1>{ID}(".html"?) {
<GroupDocArg1>{ID}(".html"?) {
current->name = yytext;
current->name = yytext;
lastDefGroup = yytext;
lastDefGroup.groupname = yytext;
lastDefGroup.pri = current->groupingpri();
// the .html stuff is for Qt compatibility
// the .html stuff is for Qt compatibility
if (current->name.right(5)==".html")
if (current->name.right(5)==".html")
current->name=current->name.left(current->name.length()-5);
current->name=current->name.left(current->name.length()-5);
...
@@ -2978,25 +2963,29 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -2978,25 +2963,29 @@ TITLE [tT][iI][tT][lL][eE]
<GroupDocArg1>"\\"{B}*"\n" { yyLineNr++; }
<GroupDocArg1>"\\"{B}*"\n" { yyLineNr++; }
<GroupDocArg1>"\n" {
<GroupDocArg1>"\n" {
warn(yyFileName,yyLineNr,
warn(yyFileName,yyLineNr,
"Warning: missing
argument after "
"Warning: missing
group name after %s",
"\\defgroup."
current->groupdoccmd()
);
);
yyLineNr++;
yyLineNr++;
BEGIN( Doc );
BEGIN( Doc );
}
}
<GroupDocArg2>{B}*"*/" {
// fake input for end of title rule
yyLineNr--;
unput('/');unput('*');unput('\n');
}
<GroupDocArg2>"\\"{B}*"\n" { yyLineNr++; }
<GroupDocArg2>[^\n\*]+ {
<GroupDocArg2>[^\n\*]+ {
current->type += yytext;
current->type += yytext;
current->type = current->type.stripWhiteSpace();
current->type = current->type.stripWhiteSpace();
}
}
<GroupDocArg2>. {
current->type += yytext;
}
<GroupDocArg2>"\\"{B}*"\n" { yyLineNr++; }
<GroupDocArg2>"*/" {
unput('/');unput('*');
newDocState();
}
<GroupDocArg2>"\n" {
<GroupDocArg2>"\n" {
if( current->groupdoctype == Entry::GROUPDOC_NORMAL &&
current->type.length() == 0 )
warn(yyFileName,yyLineNr,
"Warning: missing title after "
"\\defgroup %s", current->name.data()
);
yyLineNr++;
yyLineNr++;
newDocState();
newDocState();
}
}
...
@@ -3240,11 +3229,11 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -3240,11 +3229,11 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( GroupName );
BEGIN( GroupName );
}
}
<ClassDoc,Doc,JavaDoc>{CMD}"{" {
<ClassDoc,Doc,JavaDoc>{CMD}"{" {
if (current->section==Entry::GROUPDOC_SEC ||
if (current->section==Entry::GROUPDOC_SEC )
current->section==Entry::ADDGRPDOC_SEC
)
{
{
autoGroupNameStack.push(new QCString(current->name));
autoGroupStack.push(new Grouping(current->name,
current->groupingpri()
));
}
}
else if (current->section == Entry::MEMBERGRP_SEC)
else if (current->section == Entry::MEMBERGRP_SEC)
{
{
...
@@ -3392,7 +3381,7 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -3392,7 +3381,7 @@ TITLE [tT][iI][tT][lL][eE]
}
}
<GroupName>{ID} {
<GroupName>{ID} {
current->groups->append(
current->groups->append(
new
QCString(yytext
)
new
Grouping(yytext, Grouping::GROUPING_INGROUP
)
);
);
}
}
<GroupName>\n {
<GroupName>\n {
...
@@ -3745,18 +3734,17 @@ static void startGroup()
...
@@ -3745,18 +3734,17 @@ static void startGroup()
warn(yyFileName,yyLineNr,"Warning: ignoring nested member group. "
warn(yyFileName,yyLineNr,"Warning: ignoring nested member group. "
"Previous command was found at line %d.",lastMemberGroupLine);
"Previous command was found at line %d.",lastMemberGroupLine);
}
}
else if (!lastDefGroup.isEmpty())
else if (!lastDefGroup.
groupname.
isEmpty())
{
{
setCurrentGroup(
autoGroupNameStack.top(), &lastDefGroup
);
setCurrentGroup(
&lastDefGroup.groupname, lastDefGroup.pri
);
autoGroup
NameStack.push(new QCStr
ing(lastDefGroup));
autoGroup
Stack.push(new Group
ing(lastDefGroup));
lastDefGroup.resize(0);
lastDefGroup.
groupname.
resize(0);
}
}
else
else
{
{
if (memberGroupHeader.isEmpty())
if (memberGroupHeader.isEmpty())
{
{
//warn("Warning: member group does not have a header "
// warn( yyFileName, yyLineNr, "Warning: member group does not have a header" );
// "at line %d of %s.\n",yyLineNr,yyFileName);
memberGroupHeader="[NOHEADER]";
memberGroupHeader="[NOHEADER]";
}
}
memberGroupId = newMemberGroupId();
memberGroupId = newMemberGroupId();
...
@@ -3767,7 +3755,7 @@ static void startGroup()
...
@@ -3767,7 +3755,7 @@ static void startGroup()
static void endGroup()
static void endGroup()
{
{
if (memberGroupId==NOGROUP && autoGroup
Name
Stack.isEmpty())
if (memberGroupId==NOGROUP && autoGroupStack.isEmpty())
{
{
warn(yyFileName,yyLineNr,
warn(yyFileName,yyLineNr,
"Warning: end of group without matching begin.");
"Warning: end of group without matching begin.");
...
@@ -3788,11 +3776,16 @@ static void endGroup()
...
@@ -3788,11 +3776,16 @@ static void endGroup()
memberGroupHeader.resize(0);
memberGroupHeader.resize(0);
memberGroupDocs.resize(0);
memberGroupDocs.resize(0);
}
}
else if (!autoGroup
Name
Stack.isEmpty()) // end of group
else if (!autoGroupStack.isEmpty()) // end of group
{
{
QCString *oldName = autoGroupNameStack.pop();
Grouping *current = autoGroupStack.pop();
setCurrentGroup(oldName,autoGroupNameStack.top());
Grouping *parent = autoGroupStack.top();
delete oldName;
if( parent ) {
setCurrentGroup( &parent->groupname, parent->pri );
} else {
setCurrentGroup( NULL, Grouping::GROUPING_LOWEST );
}
delete current;
}
}
}
}
...
...
src/translator.h
View file @
9c04d0ff
...
@@ -431,9 +431,6 @@ class Translator
...
@@ -431,9 +431,6 @@ class Translator
*/
*/
virtual
QCString
trEnumerationValues
()
=
0
;
virtual
QCString
trEnumerationValues
()
=
0
;
/*! This is used in man pages as the author section. */
virtual
QCString
trAuthor
()
=
0
;
/*! This is used in the documentation of a file before the list of
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
* documentation blocks for defines
*/
*/
...
@@ -504,9 +501,6 @@ class Translator
...
@@ -504,9 +501,6 @@ class Translator
/*! this text is generated when the \\date command is used. */
/*! this text is generated when the \\date command is used. */
virtual
QCString
trDate
()
=
0
;
virtual
QCString
trDate
()
=
0
;
/*! this text is generated when the \\author command is used. */
virtual
QCString
trAuthors
()
=
0
;
/*! this text is generated when the \\return command is used. */
/*! this text is generated when the \\return command is used. */
virtual
QCString
trReturns
()
=
0
;
virtual
QCString
trReturns
()
=
0
;
...
@@ -688,13 +682,13 @@ class Translator
...
@@ -688,13 +682,13 @@ class Translator
/*! Used in the file sources to point to the corresponding documentation. */
/*! Used in the file sources to point to the corresponding documentation. */
virtual
QCString
trGotoDocumentation
()
=
0
;
virtual
QCString
trGotoDocumentation
()
=
0
;
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
virtual
QCString
trPrecondition
()
=
0
;
virtual
QCString
trPrecondition
()
=
0
;
/*! Text for the \post command */
/*! Text for the \
\
post command */
virtual
QCString
trPostcondition
()
=
0
;
virtual
QCString
trPostcondition
()
=
0
;
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
virtual
QCString
trInvariant
()
=
0
;
virtual
QCString
trInvariant
()
=
0
;
/*! Text shown before a multi-line variable/enum initialization */
/*! Text shown before a multi-line variable/enum initialization */
...
@@ -846,6 +840,17 @@ class Translator
...
@@ -846,6 +840,17 @@ class Translator
virtual
QCString
trMember
(
bool
first_capital
,
bool
singular
)
=
0
;
virtual
QCString
trMember
(
bool
first_capital
,
bool
singular
)
=
0
;
virtual
QCString
trField
(
bool
first_capital
,
bool
singular
)
=
0
;
virtual
QCString
trField
(
bool
first_capital
,
bool
singular
)
=
0
;
virtual
QCString
trGlobal
(
bool
first_capital
,
bool
singular
)
=
0
;
virtual
QCString
trGlobal
(
bool
first_capital
,
bool
singular
)
=
0
;
//////////////////////////////////////////////////////////////////////////
// new since 1.2.7
//////////////////////////////////////////////////////////////////////////
/*! This text is generated when the \\author command is used and
* for the author section in man pages.
*/
virtual
QCString
trAuthor
(
bool
first_capital
,
bool
singular
)
=
0
;
};
};
#endif
#endif
src/translator_adapter.h
View file @
9c04d0ff
This diff is collapsed.
Click to expand it.
src/translator_br.h
View file @
9c04d0ff
...
@@ -24,7 +24,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6
...
@@ -24,7 +24,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6
{
{
public
:
public
:
// --- Language contol methods -------------------
// --- Language cont
r
ol methods -------------------
/*! Used for identification of the language. May resemble
/*! Used for identification of the language. May resemble
* the string returned by latexBabelPackage(), but it is not used
* the string returned by latexBabelPackage(), but it is not used
...
@@ -630,9 +630,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6
...
@@ -630,9 +630,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6
return
result
;
return
result
;
}
}
/*! \mgroup Class sections
/* these are for the member sections of a class, struct or union */
* these are for the member sections of a class, struct or union
*/
virtual
QCString
trPublicMembers
()
virtual
QCString
trPublicMembers
()
{
return
"Métodos Públicos"
;
}
{
return
"Métodos Públicos"
;
}
virtual
QCString
trPublicSlots
()
virtual
QCString
trPublicSlots
()
...
@@ -653,7 +651,6 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6
...
@@ -653,7 +651,6 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6
{
return
"Slots Privados"
;
}
{
return
"Slots Privados"
;
}
virtual
QCString
trStaticPrivateMembers
()
virtual
QCString
trStaticPrivateMembers
()
{
return
"Métodos Privados Estáticos"
;
}
{
return
"Métodos Privados Estáticos"
;
}
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
* use generateMarker(i) to indicate where item i should be put.
...
@@ -858,17 +855,17 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6
...
@@ -858,17 +855,17 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_6
{
{
return
"Vá para a documentação deste arquivo."
;
return
"Vá para a documentação deste arquivo."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
virtual
QCString
trPrecondition
()
virtual
QCString
trPrecondition
()
{
{
return
"Pré-Condição"
;
return
"Pré-Condição"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
virtual
QCString
trPostcondition
()
virtual
QCString
trPostcondition
()
{
{
return
"Pós-Condição"
;
return
"Pós-Condição"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
virtual
QCString
trInvariant
()
virtual
QCString
trInvariant
()
{
{
return
"Invariável"
;
return
"Invariável"
;
...
...
src/translator_cn.h
View file @
9c04d0ff
...
@@ -504,17 +504,17 @@ class TranslatorChinese : public TranslatorAdapter_1_2_1
...
@@ -504,17 +504,17 @@ class TranslatorChinese : public TranslatorAdapter_1_2_1
{
{
return
"浏览该文件的文档。"
;
return
"浏览该文件的文档。"
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
QCString
trPrecondition
()
QCString
trPrecondition
()
{
{
return
"前置条件"
;
return
"前置条件"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
QCString
trPostcondition
()
QCString
trPostcondition
()
{
{
return
"后置条件"
;
return
"后置条件"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
QCString
trInvariant
()
QCString
trInvariant
()
{
{
return
"不变性"
;
return
"不变性"
;
...
...
src/translator_cz.h
View file @
9c04d0ff
This diff is collapsed.
Click to expand it.
src/translator_de.h
View file @
9c04d0ff
This diff is collapsed.
Click to expand it.
src/translator_dk.h
View file @
9c04d0ff
...
@@ -37,9 +37,7 @@
...
@@ -37,9 +37,7 @@
#ifndef TRANSLATOR_DK_H
#ifndef TRANSLATOR_DK_H
#define TRANSLATOR_DK_H
#define TRANSLATOR_DK_H
#include "translator.h"
class
TranslatorDanish
:
public
TranslatorAdapterCVS
class
TranslatorDanish
:
public
Translator
{
{
public
:
public
:
...
@@ -879,17 +877,17 @@ class TranslatorDanish : public Translator
...
@@ -879,17 +877,17 @@ class TranslatorDanish : public Translator
{
{
return
"Hop til denne fils dokumentation."
;
return
"Hop til denne fils dokumentation."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
virtual
QCString
trPrecondition
()
virtual
QCString
trPrecondition
()
{
{
return
"Precondition"
;
return
"Precondition"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
virtual
QCString
trPostcondition
()
virtual
QCString
trPostcondition
()
{
{
return
"Postcondition"
;
return
"Postcondition"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
virtual
QCString
trInvariant
()
virtual
QCString
trInvariant
()
{
{
return
"Invariant"
;
return
"Invariant"
;
...
...
src/translator_en.h
View file @
9c04d0ff
...
@@ -18,7 +18,26 @@
...
@@ -18,7 +18,26 @@
#ifndef TRANSLATOR_EN_H
#ifndef TRANSLATOR_EN_H
#define TRANSLATOR_EN_H
#define TRANSLATOR_EN_H
#include "translator.h"
// When defining a translator class for the new language, follow
// the description in the documentation. One of the steps says
// that you should copy the translator_en.h (this) file to your
// translator_xx.h new file. Your new language should use the
// Translator class as the base class. This means that you need to
// implement exactly the same (pure virtual) methods as the
// TranslatorEnglish does. Because of this, it is a good idea to
// start with the copy of TranslatorEnglish and replace the strings
// one by one.
//
// It is not necessary to include "translator.h" or
// "translator_adapter.h" here. The files are included in the
// language.cpp correctly. Not including any of the mentioned
// files frees the maintainer from thinking about whether the
// first, the second, or both files should be included or not, and
// why. This holds namely for localized translators because their
// base class is changed occasionaly to adapter classes when the
// Translator class changes the interface, or back to the
// Translator class (by the local maintainer) when the localized
// translator is made up-to-date again.
class
TranslatorEnglish
:
public
Translator
class
TranslatorEnglish
:
public
Translator
{
{
...
@@ -35,8 +54,19 @@ class TranslatorEnglish : public Translator
...
@@ -35,8 +54,19 @@ class TranslatorEnglish : public Translator
virtual
QCString
idLanguage
()
virtual
QCString
idLanguage
()
{
return
"english"
;
}
{
return
"english"
;
}
/*! Used to get the LaTeX command(s) for the language support. This method
/*! Used to get the LaTeX command(s) for the language support.
* was designed for languages which do wish to use a babel package.
* This method should return string with commands that switch
* LaTeX to the desired language. For example
* <pre>"\\usepackage[german]{babel}\n"
* </pre>
* or
* <pre>"\\usepackage{polski}\n"
* "\\usepackage[latin2]{inputenc}\n"
* "\\usepackage[T1]{fontenc}\n"
* </pre>
*
* The English LaTeX does not use such commands. Because of this
* the empty string is returned in this implementation.
*/
*/
virtual
QCString
latexLanguageSupportCommand
()
virtual
QCString
latexLanguageSupportCommand
()
{
{
...
@@ -434,9 +464,6 @@ class TranslatorEnglish : public Translator
...
@@ -434,9 +464,6 @@ class TranslatorEnglish : public Translator
{
return
"Enumeration values"
;
}
{
return
"Enumeration values"
;
}
/*! This is used in man pages as the author section. */
/*! This is used in man pages as the author section. */
virtual
QCString
trAuthor
()
{
return
"Author"
;
}
/*! This is used in the documentation of a file before the list of
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
* documentation blocks for defines
*/
*/
...
@@ -542,9 +569,6 @@ class TranslatorEnglish : public Translator
...
@@ -542,9 +569,6 @@ class TranslatorEnglish : public Translator
{
return
"Date"
;
}
{
return
"Date"
;
}
/*! this text is generated when the \\author command is used. */
/*! this text is generated when the \\author command is used. */
virtual
QCString
trAuthors
()
{
return
"Author(s)"
;
}
/*! this text is generated when the \\return command is used. */
/*! this text is generated when the \\return command is used. */
virtual
QCString
trReturns
()
virtual
QCString
trReturns
()
{
return
"Returns"
;
}
{
return
"Returns"
;
}
...
@@ -1179,6 +1203,7 @@ class TranslatorEnglish : public Translator
...
@@ -1179,6 +1203,7 @@ class TranslatorEnglish : public Translator
/*! Used as ansicpg for RTF file
/*! Used as ansicpg for RTF file
*
*
* The following table shows the correlation of Charset name, Charset Value and
* The following table shows the correlation of Charset name, Charset Value and
* <pre>
* Codepage number:
* Codepage number:
* Charset Name Charset Value(hex) Codepage number
* Charset Name Charset Value(hex) Codepage number
* ------------------------------------------------------
* ------------------------------------------------------
...
@@ -1197,6 +1222,7 @@ class TranslatorEnglish : public Translator
...
@@ -1197,6 +1222,7 @@ class TranslatorEnglish : public Translator
* HANGEUL_CHARSET 129 (x81) 949
* HANGEUL_CHARSET 129 (x81) 949
* GB2313_CHARSET 134 (x86) 936
* GB2313_CHARSET 134 (x86) 936
* CHINESEBIG5_CHARSET 136 (x88) 950
* CHINESEBIG5_CHARSET 136 (x88) 950
* </pre>
*
*
*/
*/
virtual
QCString
trRTFansicp
()
virtual
QCString
trRTFansicp
()
...
@@ -1204,6 +1230,7 @@ class TranslatorEnglish : public Translator
...
@@ -1204,6 +1230,7 @@ class TranslatorEnglish : public Translator
return
"1252"
;
return
"1252"
;
}
}
/*! Used as ansicpg for RTF fcharset
/*! Used as ansicpg for RTF fcharset
* \see trRTFansicp() for a table of possible values.
* \see trRTFansicp() for a table of possible values.
*/
*/
...
@@ -1225,7 +1252,6 @@ class TranslatorEnglish : public Translator
...
@@ -1225,7 +1252,6 @@ class TranslatorEnglish : public Translator
virtual
QCString
trClass
(
bool
first_capital
,
bool
singular
)
virtual
QCString
trClass
(
bool
first_capital
,
bool
singular
)
{
{
QCString
result
((
first_capital
?
"Class"
:
"class"
));
QCString
result
((
first_capital
?
"Class"
:
"class"
));
if
(
first_capital
)
toupper
(
result
.
at
(
0
));
if
(
!
singular
)
result
+=
"es"
;
if
(
!
singular
)
result
+=
"es"
;
return
result
;
return
result
;
}
}
...
@@ -1307,6 +1333,19 @@ class TranslatorEnglish : public Translator
...
@@ -1307,6 +1333,19 @@ class TranslatorEnglish : public Translator
return
result
;
return
result
;
}
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.7
//////////////////////////////////////////////////////////////////////////
/*! This text is generated when the \\author command is used and
* for the author section in man pages. */
virtual
QCString
trAuthor
(
bool
first_capital
,
bool
singular
)
{
QCString
result
((
first_capital
?
"Author"
:
"author"
));
if
(
!
singular
)
result
+=
"s"
;
return
result
;
}
};
};
#endif
#endif
src/translator_es.h
View file @
9c04d0ff
...
@@ -530,9 +530,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_1_5
...
@@ -530,9 +530,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_1_5
return
result
;
return
result
;
}
}
/*! \mgroup Class sections
/* these are for the member sections of a class, struct or union */
* these are for the member sections of a class, struct or union
*/
virtual
QCString
trPublicMembers
()
virtual
QCString
trPublicMembers
()
{
return
"Métodos públicos"
;
}
{
return
"Métodos públicos"
;
}
virtual
QCString
trPublicSlots
()
virtual
QCString
trPublicSlots
()
...
@@ -553,7 +551,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_1_5
...
@@ -553,7 +551,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_1_5
{
return
"Slots privados"
;
}
{
return
"Slots privados"
;
}
virtual
QCString
trStaticPrivateMembers
()
virtual
QCString
trStaticPrivateMembers
()
{
return
"Métodos privados estáticos"
;
}
{
return
"Métodos privados estáticos"
;
}
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
* use generateMarker(i) to indicate where item i should be put.
...
@@ -756,17 +753,17 @@ class TranslatorSpanish : public TranslatorAdapter_1_1_5
...
@@ -756,17 +753,17 @@ class TranslatorSpanish : public TranslatorAdapter_1_1_5
{
{
return
"Ir a la documentación de este archivo."
;
return
"Ir a la documentación de este archivo."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
virtual
QCString
trPrecondition
()
virtual
QCString
trPrecondition
()
{
{
return
"Precondición"
;
return
"Precondición"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
virtual
QCString
trPostcondition
()
virtual
QCString
trPostcondition
()
{
{
return
"Postcondicón"
;
return
"Postcondicón"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
virtual
QCString
trInvariant
()
virtual
QCString
trInvariant
()
{
{
return
"Invariante"
;
return
"Invariante"
;
...
...
src/translator_fr.h
View file @
9c04d0ff
...
@@ -532,9 +532,7 @@ class TranslatorFrench : public TranslatorAdapter_1_2_0
...
@@ -532,9 +532,7 @@ class TranslatorFrench : public TranslatorAdapter_1_2_0
return
result
;
return
result
;
}
}
/*! \mgroup Class sections
/* these are for the member sections of a class, struct or union */
* these are for the member sections of a class, struct or union
*/
virtual
QCString
trPublicMembers
()
virtual
QCString
trPublicMembers
()
{
return
"Membres publics"
;
}
{
return
"Membres publics"
;
}
virtual
QCString
trPublicSlots
()
virtual
QCString
trPublicSlots
()
...
@@ -555,7 +553,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_0
...
@@ -555,7 +553,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_0
{
return
"Connecteurs privés"
;
}
{
return
"Connecteurs privés"
;
}
virtual
QCString
trStaticPrivateMembers
()
virtual
QCString
trStaticPrivateMembers
()
{
return
"Membres privés statiques"
;
}
{
return
"Membres privés statiques"
;
}
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
* use generateMarker(i) to indicate where item i should be put.
...
@@ -760,17 +757,17 @@ class TranslatorFrench : public TranslatorAdapter_1_2_0
...
@@ -760,17 +757,17 @@ class TranslatorFrench : public TranslatorAdapter_1_2_0
{
{
return
"Aller à la documentation de ce fichier."
;
return
"Aller à la documentation de ce fichier."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
virtual
QCString
trPrecondition
()
virtual
QCString
trPrecondition
()
{
{
return
"Précondition"
;
return
"Précondition"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
virtual
QCString
trPostcondition
()
virtual
QCString
trPostcondition
()
{
{
return
"Postcondition"
;
return
"Postcondition"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
virtual
QCString
trInvariant
()
virtual
QCString
trInvariant
()
{
{
return
"Invariant"
;
return
"Invariant"
;
...
...
src/translator_hr.h
View file @
9c04d0ff
...
@@ -535,17 +535,17 @@ class TranslatorCroatian : public TranslatorAdapter_1_2_6
...
@@ -535,17 +535,17 @@ class TranslatorCroatian : public TranslatorAdapter_1_2_6
{
{
return
"Dokumenacija za ovu datoteku."
;
return
"Dokumenacija za ovu datoteku."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
QCString
trPrecondition
()
QCString
trPrecondition
()
{
{
return
"Preduvjeti"
;
return
"Preduvjeti"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
QCString
trPostcondition
()
QCString
trPostcondition
()
{
{
return
"Postuvjeti"
;
return
"Postuvjeti"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
QCString
trInvariant
()
QCString
trInvariant
()
{
{
return
"Invarijanta"
;
return
"Invarijanta"
;
...
...
src/translator_hu.h
View file @
9c04d0ff
...
@@ -24,7 +24,7 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1
...
@@ -24,7 +24,7 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1
{
{
public
:
public
:
// --- Language contol methods -------------------
// --- Language cont
r
ol methods -------------------
QCString
idLanguage
()
QCString
idLanguage
()
{
return
"hungarian"
;
}
{
return
"hungarian"
;
}
/*! Used to get the command(s) for the language support. This method
/*! Used to get the command(s) for the language support. This method
...
@@ -543,9 +543,7 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1
...
@@ -543,9 +543,7 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1
return
result
;
return
result
;
}
}
/*! \mgroup Class sections
/* these are for the member sections of a class, struct or union */
* these are for the member sections of a class, struct or union
*/
QCString
trPublicMembers
()
QCString
trPublicMembers
()
{
return
"Publikus metódusok"
;
}
{
return
"Publikus metódusok"
;
}
QCString
trPublicSlots
()
QCString
trPublicSlots
()
...
@@ -566,7 +564,6 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1
...
@@ -566,7 +564,6 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1
{
return
"Privát adatok"
;
}
{
return
"Privát adatok"
;
}
QCString
trStaticPrivateMembers
()
QCString
trStaticPrivateMembers
()
{
return
"Statikus privát metódusok"
;
}
{
return
"Statikus privát metódusok"
;
}
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
* use generateMarker(i) to indicate where item i should be put.
...
@@ -769,17 +766,17 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1
...
@@ -769,17 +766,17 @@ class TranslatorHungarian : public TranslatorAdapter_1_2_1
{
{
return
"Ugrás a fájl dokumentációjához."
;
return
"Ugrás a fájl dokumentációjához."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
QCString
trPrecondition
()
QCString
trPrecondition
()
{
{
return
"Elõfeltétel"
;
return
"Elõfeltétel"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
QCString
trPostcondition
()
QCString
trPostcondition
()
{
{
return
"Utófeltétel"
;
return
"Utófeltétel"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
QCString
trInvariant
()
QCString
trInvariant
()
{
{
return
"Invariáns"
;
return
"Invariáns"
;
...
...
src/translator_it.h
View file @
9c04d0ff
...
@@ -57,9 +57,7 @@
...
@@ -57,9 +57,7 @@
#ifndef TRANSLATOR_IT_H
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
#include "translator.h"
class
TranslatorItalian
:
public
TranslatorAdapterCVS
class
TranslatorItalian
:
public
Translator
{
{
public
:
public
:
...
@@ -676,9 +674,7 @@ class TranslatorItalian : public Translator
...
@@ -676,9 +674,7 @@ class TranslatorItalian : public Translator
return
result
;
return
result
;
}
}
/*! \mgroup Class sections
/* these are for the member sections of a class, struct or union */
* these are for the member sections of a class, struct or union
*/
QCString
trPublicMembers
()
QCString
trPublicMembers
()
{
return
"Membri pubblici"
;
}
{
return
"Membri pubblici"
;
}
QCString
trPublicSlots
()
QCString
trPublicSlots
()
...
@@ -699,7 +695,6 @@ class TranslatorItalian : public Translator
...
@@ -699,7 +695,6 @@ class TranslatorItalian : public Translator
{
return
"Slot privati"
;
}
{
return
"Slot privati"
;
}
QCString
trStaticPrivateMembers
()
QCString
trStaticPrivateMembers
()
{
return
"Membri privati statici"
;
}
{
return
"Membri privati statici"
;
}
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
* use generateMarker(i) to indicate where item i should be put.
...
@@ -903,17 +898,17 @@ class TranslatorItalian : public Translator
...
@@ -903,17 +898,17 @@ class TranslatorItalian : public Translator
{
{
return
"Vai alla documentazione di questo file."
;
return
"Vai alla documentazione di questo file."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
QCString
trPrecondition
()
QCString
trPrecondition
()
{
{
return
"Precondizione"
;
return
"Precondizione"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
QCString
trPostcondition
()
QCString
trPostcondition
()
{
{
return
"Postcondizione"
;
return
"Postcondizione"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
QCString
trInvariant
()
QCString
trInvariant
()
{
{
return
"Invariante"
;
return
"Invariante"
;
...
...
src/translator_jp.h
View file @
9c04d0ff
...
@@ -520,9 +520,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
...
@@ -520,9 +520,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
return
result
;
return
result
;
}
}
/*! \mgroup Class sections
/* these are for the member sections of a class, struct or union */
* these are for the member sections of a class, struct or union
*/
QCString
trPublicMembers
()
QCString
trPublicMembers
()
{
return
"公開メンバ"
;
}
{
return
"公開メンバ"
;
}
QCString
trPublicSlots
()
QCString
trPublicSlots
()
...
@@ -543,7 +541,6 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
...
@@ -543,7 +541,6 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
{
return
"非公開スロット"
;
}
{
return
"非公開スロット"
;
}
QCString
trStaticPrivateMembers
()
QCString
trStaticPrivateMembers
()
{
return
"静的非公開メンバ"
;
}
{
return
"静的非公開メンバ"
;
}
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
* use generateMarker(i) to indicate where item i should be put.
...
@@ -745,17 +742,17 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
...
@@ -745,17 +742,17 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
{
{
return
"このファイルの解説を見る。"
;
return
"このファイルの解説を見る。"
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
QCString
trPrecondition
()
QCString
trPrecondition
()
{
{
return
"事前条件"
;
return
"事前条件"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
QCString
trPostcondition
()
QCString
trPostcondition
()
{
{
return
"事後条件"
;
return
"事後条件"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
QCString
trInvariant
()
QCString
trInvariant
()
{
{
return
"Invariant"
;
return
"Invariant"
;
...
...
src/translator_kr.h
View file @
9c04d0ff
...
@@ -530,9 +530,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0
...
@@ -530,9 +530,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0
return
result
;
return
result
;
}
}
/*! \mgroup Class sections
/* these are for the member sections of a class, struct or union */
* these are for the member sections of a class, struct or union
*/
QCString
trPublicMembers
()
QCString
trPublicMembers
()
{
return
"공용 메소드"
;
}
{
return
"공용 메소드"
;
}
QCString
trPublicSlots
()
QCString
trPublicSlots
()
...
@@ -553,7 +551,6 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0
...
@@ -553,7 +551,6 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0
{
return
"Private Slots"
;
}
{
return
"Private Slots"
;
}
QCString
trStaticPrivateMembers
()
QCString
trStaticPrivateMembers
()
{
return
"정적 프라이베이트 메소드"
;
}
{
return
"정적 프라이베이트 메소드"
;
}
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
* use generateMarker(i) to indicate where item i should be put.
...
@@ -757,17 +754,17 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0
...
@@ -757,17 +754,17 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0
{
{
return
"이 파일의 문서화로 가시오"
;
return
"이 파일의 문서화로 가시오"
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
QCString
trPrecondition
()
QCString
trPrecondition
()
{
{
return
"전제 조건"
;
return
"전제 조건"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
QCString
trPostcondition
()
QCString
trPostcondition
()
{
{
return
"후미 조건"
;
// "후치조건"
return
"후미 조건"
;
// "후치조건"
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
QCString
trInvariant
()
QCString
trInvariant
()
{
{
return
"변하지 않는"
;
return
"변하지 않는"
;
...
...
src/translator_nl.h
View file @
9c04d0ff
...
@@ -501,17 +501,17 @@ class TranslatorDutch : public TranslatorAdapter_1_2_6
...
@@ -501,17 +501,17 @@ class TranslatorDutch : public TranslatorAdapter_1_2_6
{
{
return
"Ga naar de documentatie van deze file."
;
return
"Ga naar de documentatie van deze file."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
QCString
trPrecondition
()
QCString
trPrecondition
()
{
{
return
"Preconditie"
;
return
"Preconditie"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
QCString
trPostcondition
()
QCString
trPostcondition
()
{
{
return
"Postconditie"
;
return
"Postconditie"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
QCString
trInvariant
()
QCString
trInvariant
()
{
{
return
"Invariant"
;
return
"Invariant"
;
...
...
src/translator_no.h
View file @
9c04d0ff
...
@@ -571,17 +571,17 @@ class TranslatorNorwegian : public TranslatorAdapter_1_2_2
...
@@ -571,17 +571,17 @@ class TranslatorNorwegian : public TranslatorAdapter_1_2_2
{
{
return
"G til dokumentasjonen for denne filen."
;
return
"G til dokumentasjonen for denne filen."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
virtual
QCString
trPrecondition
()
virtual
QCString
trPrecondition
()
{
{
return
"Fr-kondisjon"
;
return
"Fr-kondisjon"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
virtual
QCString
trPostcondition
()
virtual
QCString
trPostcondition
()
{
{
return
"Etter-kondisjon"
;
return
"Etter-kondisjon"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
virtual
QCString
trInvariant
()
virtual
QCString
trInvariant
()
{
{
return
"Invariant"
;
return
"Invariant"
;
...
...
src/translator_pl.h
View file @
9c04d0ff
...
@@ -24,7 +24,7 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1
...
@@ -24,7 +24,7 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1
{
{
public
:
public
:
// --- Language contol methods -------------------
// --- Language cont
r
ol methods -------------------
/*! Used for identification of the language. May resemble
/*! Used for identification of the language. May resemble
* the string returned by latexBabelPackage(), but it is not used
* the string returned by latexBabelPackage(), but it is not used
...
@@ -545,9 +545,7 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1
...
@@ -545,9 +545,7 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1
return
result
;
return
result
;
}
}
/*! \mgroup Class sections
/* these are for the member sections of a class, struct or union */
* these are for the member sections of a class, struct or union
*/
QCString
trPublicMembers
()
QCString
trPublicMembers
()
{
return
"Metody Publiczne"
;
}
{
return
"Metody Publiczne"
;
}
QCString
trPublicSlots
()
QCString
trPublicSlots
()
...
@@ -568,7 +566,6 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1
...
@@ -568,7 +566,6 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1
{
return
"Sloty Prywatne"
;
}
{
return
"Sloty Prywatne"
;
}
QCString
trStaticPrivateMembers
()
QCString
trStaticPrivateMembers
()
{
return
"Statyczne Metody Prywatne"
;
}
{
return
"Statyczne Metody Prywatne"
;
}
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
* use generateMarker(i) to indicate where item i should be put.
...
@@ -770,17 +767,17 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1
...
@@ -770,17 +767,17 @@ class TranslatorPolish : public TranslatorAdapter_1_2_1
{
{
return
"Id¼ do dokumentacji tego pliku."
;
return
"Id¼ do dokumentacji tego pliku."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
QCString
trPrecondition
()
QCString
trPrecondition
()
{
{
return
"Warunek wstêpny"
;
return
"Warunek wstêpny"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
QCString
trPostcondition
()
QCString
trPostcondition
()
{
{
return
"Warunek koñcowy"
;
return
"Warunek koñcowy"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
QCString
trInvariant
()
QCString
trInvariant
()
{
{
return
"Inwariant"
;
return
"Inwariant"
;
...
...
src/translator_pt.h
View file @
9c04d0ff
...
@@ -524,9 +524,7 @@ class TranslatorPortuguese : public TranslatorAdapter_1_1_5
...
@@ -524,9 +524,7 @@ class TranslatorPortuguese : public TranslatorAdapter_1_1_5
return
result
;
return
result
;
}
}
/*! \mgroup Class sections
/* these are for the member sections of a class, struct or union */
* these are for the member sections of a class, struct or union
*/
virtual
QCString
trPublicMembers
()
virtual
QCString
trPublicMembers
()
{
return
"Membros públicos"
;
}
{
return
"Membros públicos"
;
}
virtual
QCString
trPublicSlots
()
virtual
QCString
trPublicSlots
()
...
@@ -547,7 +545,6 @@ class TranslatorPortuguese : public TranslatorAdapter_1_1_5
...
@@ -547,7 +545,6 @@ class TranslatorPortuguese : public TranslatorAdapter_1_1_5
{
return
"Slots privados"
;
}
{
return
"Slots privados"
;
}
virtual
QCString
trStaticPrivateMembers
()
virtual
QCString
trStaticPrivateMembers
()
{
return
"Membros privados estáticos"
;
}
{
return
"Membros privados estáticos"
;
}
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
* use generateMarker(i) to indicate where item i should be put.
...
@@ -753,17 +750,17 @@ class TranslatorPortuguese : public TranslatorAdapter_1_1_5
...
@@ -753,17 +750,17 @@ class TranslatorPortuguese : public TranslatorAdapter_1_1_5
{
{
return
"Ir para a documentação deste ficheiro."
;
return
"Ir para a documentação deste ficheiro."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
virtual
QCString
trPrecondition
()
virtual
QCString
trPrecondition
()
{
{
return
"Precondição"
;
return
"Precondição"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
virtual
QCString
trPostcondition
()
virtual
QCString
trPostcondition
()
{
{
return
"Poscondição"
;
return
"Poscondição"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
virtual
QCString
trInvariant
()
virtual
QCString
trInvariant
()
{
{
return
"Invariante"
;
return
"Invariante"
;
...
...
src/translator_ro.h
View file @
9c04d0ff
...
@@ -38,7 +38,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1
...
@@ -38,7 +38,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1
{
{
public
:
public
:
// --- Language contol methods -------------------
// --- Language cont
r
ol methods -------------------
/*! Used for identification of the language. May resemble
/*! Used for identification of the language. May resemble
* the string returned by latexBabelPackage(), but it is not used
* the string returned by latexBabelPackage(), but it is not used
...
@@ -571,9 +571,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1
...
@@ -571,9 +571,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1
return
result
;
return
result
;
}
}
/*! \mgroup Class sections
/* these are for the member sections of a class, struct or union */
* these are for the member sections of a class, struct or union
*/
virtual
QCString
trPublicMembers
()
virtual
QCString
trPublicMembers
()
{
return
"Metode Publice"
;
}
{
return
"Metode Publice"
;
}
virtual
QCString
trPublicSlots
()
virtual
QCString
trPublicSlots
()
...
@@ -594,7 +592,6 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1
...
@@ -594,7 +592,6 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1
{
return
"Sloturi Private"
;
}
{
return
"Sloturi Private"
;
}
virtual
QCString
trStaticPrivateMembers
()
virtual
QCString
trStaticPrivateMembers
()
{
return
"Metode Statice Private"
;
}
{
return
"Metode Statice Private"
;
}
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
* use generateMarker(i) to indicate where item i should be put.
...
@@ -797,17 +794,17 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1
...
@@ -797,17 +794,17 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_1
{
{
return
"Vezi documentaþia."
;
return
"Vezi documentaþia."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
virtual
QCString
trPrecondition
()
virtual
QCString
trPrecondition
()
{
{
return
"Precondiþie"
;
return
"Precondiþie"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
virtual
QCString
trPostcondition
()
virtual
QCString
trPostcondition
()
{
{
return
"Postcondiþie"
;
return
"Postcondiþie"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
virtual
QCString
trInvariant
()
virtual
QCString
trInvariant
()
{
{
return
"Invariant"
;
return
"Invariant"
;
...
...
src/translator_ru.h
View file @
9c04d0ff
...
@@ -48,9 +48,7 @@
...
@@ -48,9 +48,7 @@
#ifndef TRANSLATOR_RU_H
#ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H
#define TRANSLATOR_RU_H
#include "translator.h"
class
TranslatorRussian
:
public
TranslatorAdapterCVS
class
TranslatorRussian
:
public
Translator
{
{
private
:
private
:
/*! The Decode() inline assumes the source written in the
/*! The Decode() inline assumes the source written in the
...
@@ -921,17 +919,17 @@ class TranslatorRussian : public Translator
...
@@ -921,17 +919,17 @@ class TranslatorRussian : public Translator
{
{
return
decode
(
". ."
);
return
decode
(
". ."
);
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
virtual
QCString
trPrecondition
()
virtual
QCString
trPrecondition
()
{
{
return
decode
(
""
);
return
decode
(
""
);
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
virtual
QCString
trPostcondition
()
virtual
QCString
trPostcondition
()
{
{
return
decode
(
""
);
return
decode
(
""
);
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
virtual
QCString
trInvariant
()
virtual
QCString
trInvariant
()
{
{
return
decode
(
""
);
return
decode
(
""
);
...
...
src/translator_si.h
View file @
9c04d0ff
...
@@ -528,17 +528,17 @@ class TranslatorSlovene : public TranslatorAdapter_1_1_5
...
@@ -528,17 +528,17 @@ class TranslatorSlovene : public TranslatorAdapter_1_1_5
{
{
return
"dokumenacija tekoe datoteke."
;
return
"dokumenacija tekoe datoteke."
;
}
}
/*! Text for the \pre command */
/*! Text for the \
\
pre command */
QCString
trPrecondition
()
QCString
trPrecondition
()
{
{
return
"Predpogoji (preconditions)"
;
return
"Predpogoji (preconditions)"
;
}
}
/*! Text for the \post command */
/*! Text for the \
\
post command */
QCString
trPostcondition
()
QCString
trPostcondition
()
{
{
return
"Naknadni pogoji (posconditions)"
;
return
"Naknadni pogoji (posconditions)"
;
}
}
/*! Text for the \invariant command */
/*! Text for the \
\
invariant command */
QCString
trInvariant
()
QCString
trInvariant
()
{
{
return
"Invarianta"
;
return
"Invarianta"
;
...
...
src/util.cpp
View file @
9c04d0ff
...
@@ -460,7 +460,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
...
@@ -460,7 +460,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
result
+=
' '
;
result
+=
' '
;
result
+=
s
.
at
(
i
);
result
+=
s
.
at
(
i
);
}
}
else
if
(
c
!=
' '
||
else
if
(
!
isspace
(
c
)
||
(
i
!=
0
&&
i
!=
l
-
1
&&
(
i
!=
0
&&
i
!=
l
-
1
&&
(
isId
(
s
.
at
(
i
-
1
))
||
s
.
at
(
i
-
1
)
==
')'
||
s
.
at
(
i
-
1
)
==
','
||
s
.
at
(
i
-
1
)
==
'>'
||
s
.
at
(
i
-
1
)
==
']'
)
&&
(
isId
(
s
.
at
(
i
-
1
))
||
s
.
at
(
i
-
1
)
==
')'
||
s
.
at
(
i
-
1
)
==
','
||
s
.
at
(
i
-
1
)
==
'>'
||
s
.
at
(
i
-
1
)
==
']'
)
&&
isId
(
s
.
at
(
i
+
1
))
isId
(
s
.
at
(
i
+
1
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment