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