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
e04496cb
Commit
e04496cb
authored
Dec 15, 1999
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mods for doxygen-0.49-990522
parent
322885a8
Changes
52
Show whitespace changes
Inline
Side-by-side
Showing
52 changed files
with
2325 additions
and
887 deletions
+2325
-887
INSTALL
INSTALL
+13
-4
Makefile.config
Makefile.config
+1
-1
README
README
+2
-2
autolink.doc
doc/autolink.doc
+2
-15
commands.doc
doc/commands.doc
+122
-89
config.doc
doc/config.doc
+7
-2
index.doc
doc/index.doc
+3
-2
trouble.doc
doc/trouble.doc
+5
-0
classdef.cpp
src/classdef.cpp
+177
-69
classdef.h
src/classdef.h
+6
-5
code.l
src/code.l
+19
-9
config.h
src/config.h
+2
-0
config.l
src/config.l
+54
-26
definition.cpp
src/definition.cpp
+30
-0
definition.h
src/definition.h
+9
-3
diagram.cpp
src/diagram.cpp
+2
-2
doxygen.cpp
src/doxygen.cpp
+219
-40
doxygen.h
src/doxygen.h
+3
-11
doxygen.pro
src/doxygen.pro
+1
-1
doxytag.l
src/doxytag.l
+2
-1
entry.cpp
src/entry.cpp
+19
-0
entry.h
src/entry.h
+1
-0
filedef.cpp
src/filedef.cpp
+22
-16
filedef.h
src/filedef.h
+2
-1
groupdef.cpp
src/groupdef.cpp
+11
-8
groupdef.h
src/groupdef.h
+2
-1
htmlgen.cpp
src/htmlgen.cpp
+140
-160
htmlgen.h
src/htmlgen.h
+15
-9
index.cpp
src/index.cpp
+174
-56
index.h
src/index.h
+10
-6
latexgen.cpp
src/latexgen.cpp
+67
-11
latexgen.h
src/latexgen.h
+9
-4
mangen.cpp
src/mangen.cpp
+1
-1
mangen.h
src/mangen.h
+5
-0
memberdef.cpp
src/memberdef.cpp
+25
-1
memberdef.h
src/memberdef.h
+4
-1
memberlist.cpp
src/memberlist.cpp
+4
-1
namespacedef.cpp
src/namespacedef.cpp
+38
-21
namespacedef.h
src/namespacedef.h
+6
-2
outputgen.h
src/outputgen.h
+5
-0
outputlist.h
src/outputlist.h
+10
-0
pre.l
src/pre.l
+2
-2
scanner.h
src/scanner.h
+1
-0
scanner.l
src/scanner.l
+138
-29
section.h
src/section.h
+49
-0
tag.l
src/tag.l
+43
-9
translator.h
src/translator.h
+296
-21
translator_fr.h
src/translator_fr.h
+6
-1
translator_nl.h
src/translator_nl.h
+140
-18
translator_se.h
src/translator_se.h
+52
-44
util.cpp
src/util.cpp
+344
-181
util.h
src/util.h
+5
-1
No files found.
INSTALL
View file @
e04496cb
DOXYGEN Version 0.49-990
425
DOXYGEN Version 0.49-990
522
INSTALLATION INSTRUCTIONS FOR UNIX:
-----------------------------------
1. Unpack the archive, unless you already have:
gunzip doxygen-0.49-990
425
.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-990
425
.src.tar # unpack it
gunzip doxygen-0.49-990
522
.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-990
522
.src.tar # unpack it
2. Make sure Qt is installed properly (check the environment variable $QTDIR)
...
...
@@ -80,6 +80,10 @@ You will need to install the windows/dos versions of following tools:
X-windows version as well!)
- Microsoft Visual C++ version 5.0, use the vcvars32.bat to set the environment
variables.
- If you used WinZip to extract the tar archive it will (apparently) not
create empty folders, so you have to add the folders
`objects' and `bin' manually in the root of the distribution before
compiling.
Make sure all tools are accessible from the command-line.
...
...
@@ -97,6 +101,11 @@ nmake -f Makefile.windows examples
-----------------------------------------------------------------------------
KNOWN CONFIGURATION PROBLEMS
HTML RELATED PROBLEMS:
- the indent continuously increases.
This seems to be a problem that can be observed with Netscape 4.01.
It is not present in many later and earlier versions.
LATEX RELATED PROBLEMS:
- the LaTeX translation of HTML tables doesn't seem to work for all
...
...
@@ -129,4 +138,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (2
5 April
1999)
Dimitri van Heesch (2
2 May
1999)
Makefile.config
View file @
e04496cb
...
...
@@ -9,4 +9,4 @@ PERL = perl
# The values below should probably be left unmodified
TAR
=
tar
# name of the GNU tar tool
TMAKE
= ../
tmake
/
bin
/
tmake
VERSION
=
0
.
49
-
990
425
VERSION
=
0
.
49
-
990
522
README
View file @
e04496cb
DOXYGEN Version 0.49-990
425
DOXYGEN Version 0.49-990
522
Please read INSTALL for compilation instructions.
...
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (2
5 April
1999)
Dimitri van Heesch (2
2 May
1999)
doc/autolink.doc
View file @
e04496cb
...
...
@@ -18,7 +18,7 @@
Most documentation systems have special `see also' sections where links
to other pieces of documentation can be inserted.
Although doxygen also has a command to start such a section (See section
\ref cmdsa), it does allow you to put these kind of links anywhere in the
\ref cmdsa
"\\sa"
), it does allow you to put these kind of links anywhere in the
documentation.
For \f$\mbox{\LaTeX}\f$ documentation a reference to the page number
is written instead of a link. Furthermore, the index at the end of the
...
...
@@ -93,20 +93,7 @@
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\subsection resolving Resolving of defines and typedefs.
Macro definitions of the form:
\verbatim
#define TypeName ClassName
\endverbatim
will be resolved inside documentation blocks.
\par Example:
\verbinclude resdefine.cpp
\htmlonly
Click <a href="$(DOXYGEN_DOCDIR)/examples/resdefine/html/exportedname.html">here</a>
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\subsection resolving typedefs.
Typedefs that involve classes, structs and unions, like
\verbatim
...
...
doc/commands.doc
View file @
e04496cb
...
...
@@ -42,6 +42,7 @@ documentation:
\endlatexonly
<li> \refitem cmda \a
<li> \refitem cmdaddindex \addindex
<li> \refitem cmdanchor \anchor
<li> \refitem cmdarg \arg
<li> \refitem cmdauthor \author
<li> \refitem cmdb \b
...
...
@@ -148,7 +149,7 @@ Doxygen. Unrecognized commands are treated as normal text.
classes and members that are documented are automatically replaced by
links to the documentation.
\sa section \ref cmdendcode
, section \ref cmdverbatim
\sa section \ref cmdendcode
"\\endcode", section \ref cmdverbatim "\\verbatim"
<hr>
\subsection cmddef \def <name>
...
...
@@ -172,14 +173,14 @@ Doxygen. Unrecognized commands are treated as normal text.
group of classes, files or namespaces. This can be used to
categorize classes, files or namespaces, and document those
categories.
\sa section \ref cmdingroup
\sa section \ref cmdingroup
"\\ingroup"
<hr>
\subsection cmdendcode \endcode
\addindex \endcode
Ends a block of code.
\sa section \ref cmdcode
\sa section \ref cmdcode
"\\code"
<hr>
\subsection cmdenum \enum <name>
...
...
@@ -226,7 +227,7 @@ Doxygen. Unrecognized commands are treated as normal text.
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\sa section \ref cmdinclude.
\sa section \ref cmdinclude
"\\include"
.
<hr>
\subsection cmdfile \file [<name>]
...
...
@@ -266,7 +267,7 @@ Doxygen. Unrecognized commands are treated as normal text.
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\sa section \ref cmdvar
and \ref cmdtypedef
\sa section \ref cmdvar
"\\var" and \ref cmdtypedef "\\typedef".
<hr>
\subsection cmdingroup \ingroup <groupname>
...
...
@@ -275,7 +276,7 @@ Doxygen. Unrecognized commands are treated as normal text.
If the \\ingroup command is placed in a comment block of a
class, file or namespace, then it will be added to the group.
\sa section \ref cmddefgroup
\sa section \ref cmddefgroup
"\\defgroup".
<hr>
\subsection cmdinternal \internal
...
...
@@ -337,8 +338,9 @@ Doxygen. Unrecognized commands are treated as normal text.
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\sa section \ref cmdsection, section \ref cmdsubsection, and
section \ref cmdref
\sa section \ref cmdsection "\\section", section
\ref cmdsubsection "\\subsection", and section
\ref cmdref "\\ref".
<hr>
\subsection cmdrelates \relates <name>
...
...
@@ -366,7 +368,7 @@ Doxygen. Unrecognized commands are treated as normal text.
struct with name \<name\>. The arguments are equal to the \\class
command.
\sa section \ref cmdclass.
\sa section \ref cmdclass
"\\class"
.
<hr>
\subsection cmdtypedef \typedef (typedef declaration)
...
...
@@ -376,7 +378,7 @@ Doxygen. Unrecognized commands are treated as normal text.
typedef (either global or as a member of a class).
This command is equivalent to \\var and \\fn.
\sa section \ref cmdfn
and \ref cmdvar
\sa section \ref cmdfn
"\\fn" and \ref cmdvar "\\var".
<hr>
\subsection cmdunion \union <name> [<header-file>] [<header-name>]
...
...
@@ -386,7 +388,7 @@ Doxygen. Unrecognized commands are treated as normal text.
union with name \<name\>. The arguments are equal to the \\class
command.
\sa section \ref cmdclass.
\sa section \ref cmdclass
"\\class"
.
<hr>
\subsection cmdvar \var (variable declaration)
...
...
@@ -396,7 +398,7 @@ Doxygen. Unrecognized commands are treated as normal text.
enum value (either global or as a member of a class).
This command is equivalent to \\typedef and \\fn.
\sa section \ref cmdfn
and \cmdtypedef
\sa section \ref cmdfn
"\\fn" and \ref cmdtypedef "\\typedef".
<hr>
...
...
@@ -423,7 +425,7 @@ Doxygen. Unrecognized commands are treated as normal text.
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\sa Section \ref cmdjdauthor.
\sa Section \ref cmdjdauthor
"@author"
.
<hr>
\subsection cmdbrief \brief {brief description}
...
...
@@ -437,9 +439,9 @@ Doxygen. Unrecognized commands are treated as normal text.
it is advised to keep it brief!). A brief description ends when a
blank line or another sectioning command is encountered. If multiple
\\brief commands are present they will be joined. See section
\ref cmdauthor for an example.
\ref cmdauthor
"\\author"
for an example.
\sa Section \ref cmdjdshort
\sa Section \ref cmdjdshort
"@short".
<hr>
\subsection cmdbug \bug { bug description }
...
...
@@ -453,8 +455,8 @@ Doxygen. Unrecognized commands are treated as normal text.
Each bug description will start on a new line.
Alternatively, one \\bug command may mention
several bugs. The \\bug command ends when a blank line or some other
sectioning command is encountered. See section \ref cmdauthor
for an
example.
sectioning command is encountered. See section \ref cmdauthor
"\\author"
for an
example.
<hr>
\subsection cmddate \date { date description }
...
...
@@ -468,10 +470,10 @@ Doxygen. Unrecognized commands are treated as normal text.
Each date description will start on a new line.
Alternatively, one \\date command may mention
several dates. The \\date command ends when a blank line or some other
sectioning command is encountered. See section \ref cmdauthor
for an
example.
sectioning command is encountered. See section \ref cmdauthor
"\\author"
for an
example.
\sa Section \ref cmdjddate.
\sa Section \ref cmdjddate
"@date"
.
<hr>
\subsection cmdpar \par (paragraph title) { paragraph }
...
...
@@ -504,10 +506,10 @@ Doxygen. Unrecognized commands are treated as normal text.
Multiple adjacent \\param commands will be joined into a single paragraph.
Each parameter description will start on a new line.
The \\param description ends when a blank line or some other
sectioning command is encountered. See section \ref cmdfn for an
sectioning command is encountered. See section \ref cmdfn
"\\fn"
for an
example.
\sa Section \ref cmdjdparam.
\sa Section \ref cmdjdparam
"@param"
.
<hr>
\subsection cmdexception \exception <exception-object> { exception description }
...
...
@@ -521,10 +523,10 @@ Doxygen. Unrecognized commands are treated as normal text.
Multiple adjacent \\exception commands will be joined into a single paragraph.
Each parameter description will start on a new line.
The \\exception description ends when a blank line or some other
sectioning command is encountered. See section \ref cmdfn for an
sectioning command is encountered. See section \ref cmdfn
"\\fn"
for an
example.
\sa Section \ref cmdjdexception.
\sa Section \ref cmdjdexception
"@exception"
.
<hr>
\subsection cmdreturn \return { description of the return value }
...
...
@@ -535,10 +537,10 @@ Doxygen. Unrecognized commands are treated as normal text.
enhancement commands may be used inside the paragraph.
Multiple adjacent \\return commands will be joined into a single paragraph.
The \\return description ends when a blank line or some other
sectioning command is encountered. See section \ref cmdfn for an
sectioning command is encountered. See section \ref cmdfn
"\\fn"
for an
example.
\sa Section \ref cmdjdreturn.
\sa Section \ref cmdjdreturn
"@return"
.
<hr>
\subsection cmdsa \sa { references }
...
...
@@ -551,8 +553,8 @@ Doxygen. Unrecognized commands are treated as normal text.
may be selected by including a parenthesized list of argument types after
the method.
\sa section \ref autolink for information on how to create links to objects
and section \ref cmdjdsee for the JavaDoc version of this command.
\sa section \ref autolink
"\\autolink"
for information on how to create links to objects
and section \ref cmdjdsee
"@see"
for the JavaDoc version of this command.
<hr>
\subsection cmdversion \version { version number }
...
...
@@ -566,10 +568,10 @@ Doxygen. Unrecognized commands are treated as normal text.
Each version description will start on a new line.
Alternatively, one \\version command may mention
several dates. The \\version command ends when a blank line or some other
sectioning command is encountered. See section \ref cmdauthor
for an
example.
sectioning command is encountered. See section \ref cmdauthor
"\\author"
for an
example.
\sa Section \ref cmdjdversion.
\sa Section \ref cmdjdversion
"@version"
.
<hr>
\subsection cmdwarning \warning { warning message }
...
...
@@ -583,25 +585,35 @@ Doxygen. Unrecognized commands are treated as normal text.
Each warning description will start on a new line.
Alternatively, one \\warning command may mention
several warnings. The \\warning command ends when a blank line or some other
sectioning command is encountered. See section \ref cmdauthor
for an
example.
sectioning command is encountered. See section \ref cmdauthor
"\\author"
for an
example.
<hr>
<h2>\htmlonly <center> --- \endhtmlonly
Commands to create links
\htmlonly --- </center>\endhtmlonly</h2>
\subsection cmdaddindex \addindex
<word>
\subsection cmdaddindex \addindex
(text)
\addindex \addindex
This command adds \<word\> to the \htmlonly LaTeX\endhtmlonly
\latexonly\LaTeX\ \endlatexonly index.
This command adds (text) to the \f$\mbox{\LaTeX}\f$ index.
<hr>
\subsection cmdanchor \anchor <word>
\addindex \anchor
This command places an invisble, named anchor into to documentation
to which you can refer with the \\ref command.
\sa section \ref cmdref "\\ref".
<hr>
\subsection cmdendlink \endlink
\addindex \endlink
This command ends a link that is started with the \\link command.
\sa section \ref cmdlink.
\sa section \ref cmdlink
"\\link"
.
<hr>
\subsection cmdlink \link <link-object>
...
...
@@ -616,25 +628,28 @@ Doxygen. Unrecognized commands are treated as normal text.
the \\link and \\endlink commands serves as text for a link to
the \<link-object\> specified as the first argument of \\link.
See section \ref autolink for more information on automatically
See section \ref autolink
"\\autolink"
for more information on automatically
generated links and valid link-objects.
\b Notice:
Keep in mind that links are only meaningful in HTML text;
in \htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly
text, the link text is just written to the output.
in \f$\mbox{\LaTeX}\f$ text, the link text is just written to the output.
<hr>
\subsection cmdref \ref <
section-name>
\subsection cmdref \ref <
name> ["(text)"]
\addindex \ref
Creates a reference to a named section, subsection,
or page
.
Creates a reference to a named section, subsection,
page or anchor
.
For HTML documentation the reference command will generate a link to
the section, the title of the section will be used as the link text.
For \htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly documentation the reference command will generate a section
number.
the section. For a sections or subsections the title of the section will be
used as the text of the link. For anchor the optional text between quotes
will be used or \<name\> if no text is specified.
For \f$\mbox{\LaTeX}\f$ documentation the reference command will
generate a section number for sections or the text followed by a
page number if \<name\> refers to an anchor.
See section \ref cmdpage for an example of the \\ref command.
\sa
Section \ref cmdpage "\\page" for an example of the \\ref command.
<hr>
\subsection cmdsection \section <section-name> (section title)
...
...
@@ -644,7 +659,11 @@ Doxygen. Unrecognized commands are treated as normal text.
section should be specified as the second argument of the \\section
command.
See section \ref cmdpage for an example of the \\cmdsection command.
\warning This command only works inside related page documentation and
\e not in other documentation blocks!
\sa
Section \ref cmdpage "\\page" for an example of the \\cmdsection command.
<hr>
\subsection cmdsubsection \subsection <subsection-name> (subsection title)
...
...
@@ -653,7 +672,11 @@ Doxygen. Unrecognized commands are treated as normal text.
subsection should be specified as the second argument of the \\subsection
command.
See section \ref cmdpage for an example of the \\cmdsubsection command.
\warning This command only works inside related page documentation and
\e not in other documentation blocks!
\sa
Section \ref cmdpage "\\page" for an example of the \\cmdsubsection command.
<hr>
<h2>\htmlonly <center> --- \endhtmlonly
...
...
@@ -682,7 +705,8 @@ Doxygen. Unrecognized commands are treated as normal text.
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\sa sections \ref cmdline, \ref cmdskip, \ref cmdskipline, and \ref cmduntil.
\sa sections \ref cmdline "\\line", \ref cmdskip "\\skip",
\ref cmdskipline "\\skipline", and \ref cmduntil "\\until".
<hr>
\subsection cmdinclude \include <file-name>
...
...
@@ -706,7 +730,7 @@ Doxygen. Unrecognized commands are treated as normal text.
\\until commands. An internal pointer is used for these command. The
\\include command sets the pointer to the first line of the example.
\sa section \ref cmdexample
and \ref cmddontinclude
.
\sa section \ref cmdexample
"\\example" and \ref cmddontinclude "\\dontinclude"
.
<hr>
\subsection cmdline \line ( pattern )
...
...
@@ -722,7 +746,7 @@ Doxygen. Unrecognized commands are treated as normal text.
line that was found (or to the end of the example if no such line could
be found).
See section \ref cmddontinclude for an example.
See section \ref cmddontinclude
"\\dontinclude"
for an example.
<hr>
\subsection cmdskip \skip ( pattern )
...
...
@@ -736,7 +760,7 @@ Doxygen. Unrecognized commands are treated as normal text.
the example, is set to the start of the line that contains the specified
pattern (or to the end of the example if the pattern could not be found).
See section \ref cmddontinclude for an example.
See section \ref cmddontinclude
"\\dontinclude"
for an example.
<hr>
\subsection cmdskipline \skipline ( pattern )
...
...
@@ -758,7 +782,7 @@ Doxygen. Unrecognized commands are treated as normal text.
\skip pattern
\line pattern\endverbatim
See section \ref cmddontinclude for an example.
See section \ref cmddontinclude
"\\dontinclude"
for an example.
<hr>
\subsection cmduntil \until ( pattern )
...
...
@@ -773,7 +797,7 @@ Doxygen. Unrecognized commands are treated as normal text.
the example, is set to the start of the line following last written
line (or to the end of the example if the pattern could not be found).
See section \ref cmddontinclude for an example.
See section \ref cmddontinclude
"\\dontinclude"
for an example.
<hr>
\subsection cmdverbinclude \verbinclude <file-name>
...
...
@@ -875,7 +899,7 @@ Doxygen. Unrecognized commands are treated as normal text.
\addindex \endhtmlonly
Ends a block of text that was started with a \\htmlonly command.
\sa section \ref cmdhtmlonly.
\sa section \ref cmdhtmlonly
"\\htmlonly"
.
<hr>
\subsection cmdendlatexonly \endlatexonly
...
...
@@ -883,7 +907,7 @@ Doxygen. Unrecognized commands are treated as normal text.
\addindex \endlatexonly
Ends a block of text that was started with a \\latexonly command.
\sa section \ref cmdlatexonly.
\sa section \ref cmdlatexonly
"\\latexonly"
.
<hr>
\subsection cmdendverbatim \endverbatim
...
...
@@ -891,7 +915,7 @@ Doxygen. Unrecognized commands are treated as normal text.
\addindex \endverbatim
Ends a block of text that was started with a \\verbatim command.
\sa section \ref cmdverbatim.
\sa section \ref cmdverbatim
"\\verbatim"
.
<hr>
\subsection cmdfdollar \f$
...
...
@@ -899,7 +923,7 @@ Doxygen. Unrecognized commands are treated as normal text.
\addindex \\f$
Marks the start and end of an in-text formula.
\sa section \ref formulas for an example.
\sa section \ref formulas
"formulas"
for an example.
<hr>
\subsection cmdfbropen \f[
...
...
@@ -908,7 +932,7 @@ Doxygen. Unrecognized commands are treated as normal text.
Marks the start of a long formula that is displayed
centered on a separate line.
\sa section \ref cmdfbrclose
and section \ref formulas
.
\sa section \ref cmdfbrclose
"\\f]" and section \ref formulas "formulas"
.
<hr>
\subsection cmdfbrclose \f]
...
...
@@ -917,7 +941,7 @@ Doxygen. Unrecognized commands are treated as normal text.
Marks the end of a long formula that is displayed
centered on a separate line.
\sa section \ref cmdfbropen
and section \ref formulas
.
\sa section \ref cmdfbropen
""\\f[" and section \ref formulas "formulas"
.
<hr>
\subsection cmdhtmlonly \htmlonly
...
...
@@ -930,38 +954,42 @@ Doxygen. Unrecognized commands are treated as normal text.
This command can be used to include HTML code that is too complex
for Doxygen (i.e. images, applets, java-scripts, and HTML tags that
require attributes). You can use the \\latexonly and \\endlatexonly
pair to provide a proper \
htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly
alternative.
pair to provide a proper \
f$\mbox{\LaTeX}\f$
alternative.
\b Notice:
environment variables (like \$(HOME) ) are resolved inside a
HTML-only block.
\sa section \ref cmdhtmlonly and section \ref cmdlatexonly.
\sa section \ref cmdhtmlonly "\\htmlonly" and section
\ref cmdlatexonly "\\latexonly".
<hr>
\subsection cmdlatexonly \latexonly
\addindex \latexonly
Starts a block of text that will be verbatim included in the
generated \
htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly
documentation only. The block ends with a
generated \
f$\mbox{\LaTeX}\f$
documentation only. The block ends with a
endlatexonly command.
This command can be used to include \htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly code that is too complex
for Doxygen (i.e. images, formulas, special characters). You can use the
\\htmlonly and \\endhtmlonly pair to provide a proper HTML alternative.
This command can be used to include \f$\mbox{\LaTeX}\f$ code that is too
complex for Doxygen (i.e. images, formulas, special characters). You can
use the \\htmlonly and \\endhtmlonly pair to provide a proper HTML
alternative.
\b Notice:
environment variables (like \$(HOME) ) are resolved inside a
\
htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\endlatexonly
-only block.
\
f$\mbox{\LaTeX}\f$
-only block.
\sa section \ref cmdlatexonly and section \ref cmdhtmlonly.
\sa section \ref cmdlatexonly "\\latexonly"
and section \ref cmdhtmlonly "\\htmlonly".
<hr>
\subsection cmdverbatim \verbatim
\addindex \verbatim
Starts a block of text that will be verbatim included in both the
HTML and the \htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly documentation. The block should end with a
HTML and the
\f$\mbox{\LaTeX}\f$ documentation. The block should end with a
\\endverbatim block. All commands are disabled in a verbatim block.
\warning Make sure you include a \\endverbatim command for each
...
...
@@ -971,30 +999,32 @@ Doxygen. Unrecognized commands are treated as normal text.
\subsection cmdbackslash \\
\addindex \\
This command writes a backslash character (\\) to the HTML and
\htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly output.
The backslash has to be escaped in some cases because Doxygen uses it to
detect commands.
This command writes a backslash character (\\) to the HTML and
\f$\mbox{\LaTeX}\f$ output. The backslash has to be escaped in some
cases because Doxygen uses it to
detect commands.
<hr>
\subsection cmdat \@
\addindex \@
This command writes an at-sign (@) to the HTML and
\htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly output.
The at-sign has to be escaped in some cases because Doxygen uses it to
detect JavaDoc commands.
This command writes an at-sign (@) to the HTML and
\f$\mbox{\LaTeX}\f$ output. The at-sign has to be escaped in some cases
because Doxygen uses it to
detect JavaDoc commands.
<hr>
\subsection cmdamp \&
\addindex \&
This command writes the \& character to the HTML and \htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly output. This
character has to be escaped because it has a special meaning in HTML.
This command writes the \& character to the HTML and
\f$\mbox{\LaTeX}\f$ output. This character has to be escaped because
it has a special meaning in HTML.
<hr>
\subsection cmddollar \$
\addindex \$
This command writes the \$ character to the HTML and \htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly output. This
This command writes the \$ character to the HTML and
\f$\mbox{\LaTeX}\f$ output. This
character has to be escaped in some cases, because it is used to expand
environment variables.
...
...
@@ -1002,7 +1032,8 @@ Doxygen. Unrecognized commands are treated as normal text.
\subsection cmdhash \#
\addindex \#
This command writes the \# character to the HTML and \htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly output. This
This command writes the \# character to the HTML and
\f$\mbox{\LaTeX}\f$ output. This
character has to be escaped in some cases, because it is used to refer
to documented entities.
...
...
@@ -1010,14 +1041,16 @@ Doxygen. Unrecognized commands are treated as normal text.
\subsection cmdlt \\<
\addindex \\<
This command writes the \< character to the HTML and \htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly output. This
This command writes the \< character to the HTML and
\f$\mbox{\LaTeX}\f$ output. This
character has to be escaped because it has a special meaning in HTML.
<hr>
\subsection cmdgt \\>
\addindex \\>
This command writes the \> character to the HTML and \htmlonly LaTeX\endhtmlonly\latexonly\LaTeX\ \endlatexonly output. This
This command writes the \> character to the HTML and
\f$\mbox{\LaTeX}\f$ output. This
character has to be escaped because it has a special meaning in HTML.
<hr>
...
...
@@ -1030,28 +1063,28 @@ The following command JavaDoc command are support.
\subsection cmdjdauthor @author { list of authors }
\addindex @author
Equivalent to \\author (see section \ref cmdauthor).
Equivalent to \\author (see section \ref cmdauthor
"\\author"
).
\subsection cmdjddate @date { date description }
\addindex @date
Equivalent to \\date (see section \ref cmddate).
Equivalent to \\date (see section \ref cmddate
"\\date"
).
\subsection cmdjdparam @param <parameter-name> { parameter-description }
\addindex @param
Equivalent to \\param (see section \ref cmdparam).
Equivalent to \\param (see section \ref cmdparam
"\\param"
).
\subsection cmdjdexception @exception <exception-object> { exception-description }
\addindex @exception
Equivalent to \\exception (see section \ref cmdexception).
Equivalent to \\exception (see section \ref cmdexception
"\\exception"
).
\subsection cmdjdreturn @return { description of the return value }
\addindex @return
Equivalent to \\return (see section \ref cmdreturn).
Equivalent to \\return (see section \ref cmdreturn
"\\return"
).
\subsection cmdjdsee @see { references }
\addindex @see
Equivalent to \\sa (see section \ref cmdsa).
Equivalent to \\sa (see section \ref cmdsa
"\\sa"
).
\subsection cmdjdshort @short { brief description }
\addindex @short
Equivalent to \\brief (see section \ref cmdbrief).
Equivalent to \\brief (see section \ref cmdbrief
"\\brief"
).
\subsection cmdjdversion @version { version number }
\addindex @version
Equivalent to \\version (see section \ref cmdversion).
Equivalent to \\version (see section \ref cmdversion
"\\version"
).
<h2>\htmlonly <center> --- \endhtmlonly
Commands included for Qt compatibility
...
...
doc/config.doc
View file @
e04496cb
...
...
@@ -169,7 +169,7 @@ Below is a list of tags that are recognized for each category.
If
the
VERBATIM_HEADERS
tag
is
set
the
YES
(
the
default
)
then
Doxygen
\
n
";
will generate a verbatim copy of the header file for each class for
\n
"
;
which
an
include
is
specified
.
Set
to
NO
to
disable
this
.\
n
";
\sa Section
\r
ef cmdclass.
\sa Section
\r
ef cmdclass
"
\\
class
"
.
</dl>
...
...
@@ -216,7 +216,7 @@ Below is a list of tags that are recognized for each category.
\a
ddindex EXAMPLE_PATH
The \c EXAMPLE_PATH tag can be used to specify one or more files or
directories that contain example code fragments that are included (see
the
\\
include command in section
\r
ef cmdinclude).
the
\\
include command in section
\r
ef cmdinclude
"
\\
include
"
).
<dt>\c INCLUDE_PATH <dd>
\a
ddindex INCLUDE_PATH
...
...
@@ -262,6 +262,7 @@ Below is a list of tags that are recognized for each category.
<HTML>
<HEAD>
<TITLE>My title</TITLE>
<LINK HREF="
doxygen
.
css
" REL="
stylesheet
" TYPE="
text
/
css
">
</HEAD>
<BODY BGCOLOR="
#
FFFFFF
">
\endverbatim
...
...
@@ -341,6 +342,10 @@ EXTRA_PACKAGES = times
A directory man3 will be created inside the directory specified by
\c MAN_OUTPUT.
<dt>\c MAN_EXTENSION <dd>
\a
ddindex MAX_EXTENSION
The MAN_EXTENSION tag determines the extension that is added to
the generated man pages (default is the subroutine's section .3)
</dl>
\subsection config_prepro Preprocessor related options
...
...
doc/index.doc
View file @
e04496cb
...
...
@@ -155,8 +155,9 @@ Ole Gerden,
Olaf Meeuwissen,
Feiyi Wang,
Robert J. Clark,
Matthias Baas and
Walter Mueller
Matthias Baas,
Walter Mueller, and
William van Dieten
for suggestions, patches and bug reports.
</ul>
*/
...
...
doc/trouble.doc
View file @
e04496cb
...
...
@@ -62,6 +62,11 @@ Furthermore, I would appreciate a mail if you have found
a bug, or if you have ideas (or even better some code or a patch)
how to fix existing bugs and limitations.
The easiest way for me to solve bugs is if you can send me a small example
demonstrating the problem you have (make sure the example compiles!). It is
usually a good idea to send along the configuation file as well, but please
use doxygen with the <code>-s</code> flag while generating it.
My email address: <a href="mailto:dimitri@stack.nl">dimitri@stack.nl</a>
*/
src/classdef.cpp
View file @
e04496cb
...
...
@@ -37,7 +37,7 @@ static QString stripExtension(const char *fName)
}
// constructs a new class definition
ClassDef
::
ClassDef
(
const
char
*
nm
,
int
ct
,
const
char
*
ref
,
const
char
*
fName
)
ClassDef
::
ClassDef
(
const
char
*
nm
,
CompoundType
ct
,
const
char
*
ref
,
const
char
*
fName
)
:
Definition
(
removeRedundantWhiteSpace
(
nm
))
{
//name=n;
...
...
@@ -155,7 +155,7 @@ void ClassDef::insertMember(const MemberDef *md)
if
(
md
->
isFriend
()
||
md
->
protection
()
!=
Private
||
extractPrivateFlag
)
{
MemberInfo
*
mi
=
new
MemberInfo
((
MemberDef
*
)
md
,
Public
,
Normal
);
MemberNameInfo
*
mni
;
MemberNameInfo
*
mni
=
0
;
if
((
mni
=
(
*
allMemberNameInfoDict
)[
md
->
name
()]))
{
mni
->
append
(
mi
);
...
...
@@ -232,8 +232,9 @@ void ClassDef::writeDocumentation(OutputList &ol)
pageTitle
+=
pageType
+
" Reference"
;
startFile
(
ol
,
fileName
,
pageTitle
);
startTitle
(
ol
);
ol
.
docify
(
name
()
+
" "
+
pageType
.
right
(
pageType
.
length
()
-
1
)
+
" "
);
parseDoc
(
ol
,
0
,
0
,
theTranslator
->
trReference
());
//ol.docify(name()+" "+pageType.right(pageType.length()-1)+" ");
//parseText(ol,theTranslator->trReference());
parseText
(
ol
,
theTranslator
->
trCompoundReference
(
name
(),
compType
));
endTitle
(
ol
,
name
());
// write brief description
...
...
@@ -244,8 +245,8 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol
+=
briefOutput
;
ol
.
writeString
(
"
\n
"
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
startTextLink
(
0
,
"details"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trMore
());
ol
.
startTextLink
(
0
,
"
_
details"
);
parse
Text
(
ol
,
theTranslator
->
trMore
());
ol
.
endTextLink
();
ol
.
enableAll
();
}
...
...
@@ -286,7 +287,41 @@ void ClassDef::writeDocumentation(OutputList &ol)
int
count
;
if
((
count
=
inherits
->
count
())
>
0
)
{
parseDoc
(
ol
,
0
,
0
,
theTranslator
->
trInherits
()
+
" "
);
//parseText(ol,theTranslator->trInherits()+" ");
QString
inheritLine
=
theTranslator
->
trInheritsList
(
inherits
->
count
());
QRegExp
marker
(
"@[0-9]+"
);
int
index
=
0
,
newIndex
,
matchLen
;
// now replace all markers in inheritLine with links to the classes
while
((
newIndex
=
marker
.
match
(
inheritLine
,
index
,
&
matchLen
))
!=-
1
)
{
parseText
(
ol
,
inheritLine
.
mid
(
index
,
newIndex
-
index
));
bool
ok
;
uint
entryIndex
=
inheritLine
.
mid
(
newIndex
+
1
,
matchLen
-
1
).
toUInt
(
&
ok
);
BaseClassDef
*
bcd
=
inherits
->
at
(
entryIndex
);
if
(
ok
&&
bcd
)
{
ClassDef
*
cd
=
bcd
->
classDef
;
if
(
cd
->
hasDocumentation
()
||
cd
->
isReference
())
{
if
(
genTagFile
.
length
()
>
0
)
tagFile
<<
cd
->
getOutputFileBase
()
<<
"?"
;
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
name
()
+
bcd
->
templSpecifiers
);
}
else
{
ol
.
docify
(
cd
->
name
());
}
}
else
{
err
(
"Error: invalid marker %d in inherits list!
\n
"
,
entryIndex
);
}
index
=
newIndex
+
matchLen
;
}
parseText
(
ol
,
inheritLine
.
right
(
inheritLine
.
length
()
-
index
));
ol
.
newParagraph
();
#if 0
BaseClassDef *bcd=inherits->first();
while (bcd)
{
...
...
@@ -305,13 +340,13 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (bcd)
{
if (inherits->at()==count-1)
parse
Doc
(
ol
,
0
,
0
,
" "
+
theTranslator
->
trAnd
()
+
" "
);
parse
Text(ol
," "+theTranslator->trAnd()+" ");
else
ol.writeString(", ");
}
}
ol.writeString(".");
ol
.
newParagraph
();
#endif
}
if
(
genTagFile
.
length
()
>
0
)
tagFile
<<
"
\"
"
<<
fileName
<<
".html
\"\n
"
;
...
...
@@ -319,7 +354,36 @@ void ClassDef::writeDocumentation(OutputList &ol)
// write subclasses
if
((
count
=
inheritedBy
->
count
())
>
0
)
{
parseDoc
(
ol
,
0
,
0
,
theTranslator
->
trInheritedBy
()
+
" "
);
QString
inheritLine
=
theTranslator
->
trInheritedByList
(
inheritedBy
->
count
());
QRegExp
marker
(
"@[0-9]+"
);
int
index
=
0
,
newIndex
,
matchLen
;
// now replace all markers in inheritLine with links to the classes
while
((
newIndex
=
marker
.
match
(
inheritLine
,
index
,
&
matchLen
))
!=-
1
)
{
parseText
(
ol
,
inheritLine
.
mid
(
index
,
newIndex
-
index
));
bool
ok
;
uint
entryIndex
=
inheritLine
.
mid
(
newIndex
+
1
,
matchLen
-
1
).
toUInt
(
&
ok
);
BaseClassDef
*
bcd
=
inheritedBy
->
at
(
entryIndex
);
if
(
ok
&&
bcd
)
{
ClassDef
*
cd
=
bcd
->
classDef
;
if
(
cd
->
hasDocumentation
()
||
cd
->
isReference
())
{
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
name
());
}
else
{
ol
.
docify
(
cd
->
name
());
}
writeInheritanceSpecifier
(
ol
,
bcd
);
}
index
=
newIndex
+
matchLen
;
}
parseText
(
ol
,
inheritLine
.
right
(
inheritLine
.
length
()
-
index
));
ol
.
newParagraph
();
#if 0
parseText(ol,theTranslator->trInheritedBy()+" ");
BaseClassDef *bcd=inheritedBy->first();
while (bcd)
{
...
...
@@ -337,13 +401,14 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (bcd)
{
if (inheritedBy->at()==count-1)
parse
Doc
(
ol
,
0
,
0
,
" "
+
theTranslator
->
trAnd
()
+
" "
);
parse
Text(ol
," "+theTranslator->trAnd()+" ");
else
ol.writeString(", ");
}
}
ol.writeString(".");
ol.newParagraph();
#endif
}
if
(
classDiagramFlag
)
ol
.
enableAll
();
...
...
@@ -376,7 +441,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ClassDiagram
diagram
(
this
);
// create a diagram of this class.
ol
.
startClassDiagram
();
ol
.
disable
(
OutputGenerator
::
Man
);
parse
Doc
(
ol
,
name
(),
0
,
theTranslator
->
trClassDiagram
(
name
()));
parse
Text
(
ol
,
theTranslator
->
trClassDiagram
(
name
()));
ol
.
enable
(
OutputGenerator
::
Man
);
ol
.
endClassDiagram
(
diagram
,
fileName
,
name
());
}
...
...
@@ -386,40 +451,45 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
startTextLink
(
memListFileName
,
0
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trListOfAllMembers
());
parse
Text
(
ol
,
theTranslator
->
trListOfAllMembers
());
ol
.
endTextLink
();
ol
.
enableAll
();
}
// write member groups
writeMemberDecs
(
ol
,
this
,
0
,
0
,
"Public Members"
,
0
,
&
pubMembers
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
"Public Slots"
,
0
,
&
pubSlots
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
"Signals"
,
0
,
&
signals
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
"Static Public Members"
,
0
,
&
pubStaticMembers
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
"Protected Members"
,
0
,
&
proMembers
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
"Protected Slots"
,
0
,
&
proSlots
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
"Static Protected Members"
,
0
,
&
proStaticMembers
);
ol
.
startMemberSections
();
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trPublicMembers
(),
0
,
&
pubMembers
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trPublicSlots
(),
0
,
&
pubSlots
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trSignals
(),
0
,
&
signals
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trStaticPublicMembers
(),
0
,
&
pubStaticMembers
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trProtectedMembers
(),
0
,
&
proMembers
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trProtectedSlots
(),
0
,
&
proSlots
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trStaticProtectedMembers
(),
0
,
&
proStaticMembers
);
if
(
extractPrivateFlag
)
{
writeMemberDecs
(
ol
,
this
,
0
,
0
,
"Private Members"
,
0
,
&
priMembers
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
"Private Slots"
,
0
,
&
priSlots
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
"Static Private Members"
,
0
,
&
priStaticMembers
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trPrivateMembers
()
,
0
,
&
priMembers
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trPrivateSlots
()
,
0
,
&
priSlots
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trStaticPrivateMembers
()
,
0
,
&
priStaticMembers
);
}
writeMemberDecs
(
ol
,
this
,
0
,
0
,
"Friends"
,
0
,
&
friends
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trFriends
()
,
0
,
&
friends
);
writeMemberDecs
(
ol
,
this
,
0
,
0
,
theTranslator
->
trRelatedFunctions
(),
theTranslator
->
trRelatedSubscript
(),
&
related
);
ol
.
endMemberSections
();
// write detailed description
bool
exampleFlag
=
hasExamples
();
if
(
!
briefDescription
().
isEmpty
()
||
!
documentation
().
isEmpty
()
||
exampleFlag
)
{
ol
.
writeRuler
();
ol
.
writeAnchor
(
"details"
);
bool
latexOn
=
ol
.
isEnabled
(
OutputGenerator
::
Latex
);
if
(
latexOn
)
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
writeAnchor
(
"_details"
);
if
(
latexOn
)
ol
.
enable
(
OutputGenerator
::
Latex
);
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trDetailedDescription
());
parse
Text
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
if
(
tempArgs
)
// class is a template
{
...
...
@@ -460,11 +530,11 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
ol
.
startDescList
();
ol
.
startBold
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trExamples
()
+
": "
);
parse
Text
(
ol
,
theTranslator
->
trExamples
()
+
": "
);
ol
.
endBold
();
ol
.
endDescTitle
();
ol
.
writeDescItem
();
writeExample
(
ol
);
writeExample
(
ol
,
exampleList
);
//ol.endDescItem();
ol
.
endDescList
();
}
...
...
@@ -489,7 +559,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trMemberTypedefDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trMemberTypedefDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
&
pubMembers
,
name
(),
MemberDef
::
Typedef
);
...
...
@@ -507,7 +577,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trMemberEnumerationDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trMemberEnumerationDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
&
pubMembers
,
name
(),
MemberDef
::
Enumeration
);
...
...
@@ -525,7 +595,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trEnumerationValueDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trEnumerationValueDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
&
pubMembers
,
name
(),
MemberDef
::
EnumValue
);
...
...
@@ -548,7 +618,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trMemberFunctionDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trMemberFunctionDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
&
pubMembers
,
name
(),
MemberDef
::
Function
);
...
...
@@ -570,7 +640,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trRelatedFunctionDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trRelatedFunctionDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
&
friends
,
name
(),
MemberDef
::
Friend
);
writeMemberDocs
(
ol
,
&
related
,
name
(),
MemberDef
::
Function
);
...
...
@@ -586,7 +656,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trMemberDataDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trMemberDataDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
&
pubMembers
,
name
(),
MemberDef
::
Variable
);
...
...
@@ -603,41 +673,57 @@ void ClassDef::writeDocumentation(OutputList &ol)
// write the list of used files (Html and LaTeX only)
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
writeRuler
();
parseDoc
(
ol
,
0
,
0
,
theTranslator
->
trGeneratedFrom
(
pageType
.
lower
(),
parseText
(
ol
,
theTranslator
->
trGeneratedFrom
(
pageType
.
lower
(),
files
.
count
()
==
1
));
ol
.
startItemList
();
bool
first
=
TRUE
;
const
char
*
file
=
files
.
first
();
while
(
file
)
{
QFileInfo
fi
(
file
);
ol
.
writeListItem
();
FileDef
*
fd
;
bool
ambig
;
if
((
fd
=
findFileDef
(
&
inputNameDict
,
fi
.
absFilePath
(),
ambig
))
&&
fd
->
hasDocumentation
())
FileDef
*
fd
=
findFileDef
(
&
inputNameDict
,
file
,
ambig
);
if
(
fd
)
{
if
(
first
)
{
first
=
FALSE
;
ol
.
startItemList
();
}
ol
.
writeListItem
();
QString
path
=
fd
->
getPath
().
copy
();
if
(
fullPathNameFlag
)
{
// strip part of the path
if
(
path
.
left
(
stripFromPath
.
length
())
==
stripFromPath
)
{
path
=
path
.
right
(
path
.
length
()
-
stripFromPath
.
length
());
}
ol
.
docify
(
path
);
}
if
(
fd
->
hasDocumentation
())
{
ol
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
diskNam
e
(),
0
,
fi
.
fileN
ame
());
ol
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
getOutputFileBas
e
(),
0
,
fd
->
n
ame
());
}
else
{
ol
.
docify
(
fi
.
fileName
());
ol
.
docify
(
fd
->
name
());
}
}
file
=
files
.
next
();
}
ol
.
endItemList
();
ol
.
enable
(
OutputGenerator
::
Man
);
if
(
!
first
)
ol
.
endItemList
();
// write Author section (Man only)
ol
.
enable
(
OutputGenerator
::
Man
);
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
writeString
(
"
\n
"
);
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trAuthor
());
parse
Text
(
ol
,
theTranslator
->
trAuthor
());
ol
.
endGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trGeneratedAutomatically
(
projectName
));
parse
Text
(
ol
,
theTranslator
->
trGeneratedAutomatically
(
projectName
));
ol
.
enableAll
();
endFile
(
ol
);
...
...
@@ -651,13 +737,11 @@ void ClassDef::writeMemberList(OutputList &ol)
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
memListFileName
,
theTranslator
->
trMemberList
());
startTitle
(
ol
);
parse
Doc
(
ol
,
name
(),
0
,
name
()
+
" "
+
theTranslator
->
trMemberList
());
parse
Text
(
ol
,
name
()
+
" "
+
theTranslator
->
trMemberList
());
endTitle
(
ol
,
0
);
parseDoc
(
ol
,
0
,
0
,
theTranslator
->
trThisIsTheListOfAllMembers
());
ol
.
writeString
(
" "
);
parseText
(
ol
,
theTranslator
->
trThisIsTheListOfAllMembers
());
ol
.
writeObjectLink
(
reference
,
fileName
,
0
,
name
());
ol
.
writeString
(
", "
);
parseDoc
(
ol
,
0
,
0
,
theTranslator
->
trIncludingInheritedMembers
());
parseText
(
ol
,
theTranslator
->
trIncludingInheritedMembers
());
ol
.
startItemList
();
...
...
@@ -702,14 +786,14 @@ void ClassDef::writeMemberList(OutputList &ol)
{
QString
name
=
mi
->
ambiguityResolutionScope
+
md
->
name
();
ol
.
writeListItem
();
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
classFil
e
(),
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBas
e
(),
md
->
anchor
(),
name
);
if
(
md
->
isFunction
()
||
md
->
isSignal
()
||
md
->
isSlot
()
)
ol
.
docify
(
md
->
argsString
());
else
if
(
md
->
isEnumerate
())
parse
Doc
(
ol
,
0
,
0
,
" "
+
theTranslator
->
trEnumName
());
parse
Text
(
ol
,
" "
+
theTranslator
->
trEnumName
());
else
if
(
md
->
isEnumValue
())
parse
Doc
(
ol
,
0
,
0
,
" "
+
theTranslator
->
trEnumValue
());
parse
Text
(
ol
,
" "
+
theTranslator
->
trEnumValue
());
else
if
(
md
->
isTypedef
())
ol
.
docify
(
" typedef"
);
else
if
(
md
->
isFriend
()
&&
!
strcmp
(
md
->
typeString
(),
"friend class"
))
...
...
@@ -725,16 +809,16 @@ void ClassDef::writeMemberList(OutputList &ol)
if
(
md
->
isFunction
()
||
md
->
isSignal
()
||
md
->
isSlot
()
)
ol
.
docify
(
md
->
argsString
());
else
if
(
md
->
isEnumerate
())
parse
Doc
(
ol
,
0
,
0
,
" "
+
theTranslator
->
trEnumName
());
parse
Text
(
ol
,
" "
+
theTranslator
->
trEnumName
());
else
if
(
md
->
isEnumValue
())
parse
Doc
(
ol
,
0
,
0
,
" "
+
theTranslator
->
trEnumValue
());
parse
Text
(
ol
,
" "
+
theTranslator
->
trEnumValue
());
else
if
(
md
->
isTypedef
())
ol
.
docify
(
" typedef"
);
ol
.
writeString
(
" ("
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trDefinedIn
()
+
" "
);
parse
Text
(
ol
,
theTranslator
->
trDefinedIn
()
+
" "
);
if
(
cd
->
isVisible
())
{
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
classFil
e
(),
0
,
cd
->
name
());
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBas
e
(),
0
,
cd
->
name
());
}
else
{
...
...
@@ -792,9 +876,9 @@ void ClassDef::writeIncludeFile(OutputList &ol)
startTitle
(
ol
);
QString
n
=
incName
.
copy
();
if
(
incName
.
isNull
())
n
=
incFile
->
name
();
parse
Doc
(
ol
,
0
,
0
,
n
);
parse
Text
(
ol
,
n
);
endTitle
(
ol
,
0
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trVerbatimText
(
incFile
->
name
()));
parse
Text
(
ol
,
theTranslator
->
trVerbatimText
(
incFile
->
name
()));
ol
.
writeRuler
();
ol
.
startCodeFragment
();
parseCode
(
ol
,
n
,
fileToString
(
incFile
->
absFilePath
()),
FALSE
,
0
);
...
...
@@ -829,9 +913,31 @@ bool ClassDef::hasExamples()
return
exampleList
->
count
()
>
0
;
}
#if 0
// write the list of all examples that are use this class.
void ClassDef::writeExample(OutputList &ol)
{
QString exampleLine=theTranslator->trWriteList(exampleList->count());
QRegExp marker("@[0-9]+");
int index=0,newIndex,matchLen;
// now replace all markers in inheritLine with links to the classes
while ((newIndex=marker.match(exampleLine,index,&matchLen))!=-1)
{
bool ok;
parseText(ol,exampleLine.mid(index,newIndex-index));
uint entryIndex = exampleLine.mid(newIndex+1,matchLen-1).toUInt(&ok);
Example *e=exampleList->at(entryIndex);
if (ok && e)
{
ol.writeObjectLink(0,e->file,e->anchor,e->name);
}
index=newIndex+matchLen;
}
parseText(ol,exampleLine.right(exampleLine.length()-index));
ol.writeString(".");
#if 0
Example *e=exampleList->first();
while (e)
{
...
...
@@ -840,13 +946,15 @@ void ClassDef::writeExample(OutputList &ol)
if (e)
{
if (exampleList->at()==(int)exampleList->count()-1)
parse
Doc
(
ol
,
0
,
0
,
" "
+
theTranslator
->
trAnd
()
+
" "
);
parse
Text(ol
," "+theTranslator->trAnd()+" ");
else
ol.writeString(", ");
}
}
ol.writeString(".");
#endif
}
#endif
void
ClassDef
::
setTemplateArguments
(
ArgumentList
*
al
)
{
...
...
src/classdef.h
View file @
e04496cb
...
...
@@ -49,10 +49,11 @@ class ClassDef : public Definition
Union
=
Entry
::
UNION_SEC
};
ClassDef
(
const
char
*
name
,
int
ct
,
const
char
*
ref
=
0
,
const
char
*
fName
=
0
);
ClassDef
(
const
char
*
name
,
CompoundType
ct
,
const
char
*
ref
=
0
,
const
char
*
fName
=
0
);
~
ClassDef
();
QString
classFile
()
const
{
return
fileName
;
}
int
compoundType
()
const
{
return
compType
;
}
//QString classFile() const { return fileName; }
QString
getOutputFileBase
()
const
{
return
fileName
;
}
CompoundType
compoundType
()
const
{
return
compType
;
}
const
char
*
memberListFileName
()
const
{
return
memListFileName
;
}
void
insertBaseClass
(
ClassDef
*
,
Protection
p
,
Specifier
s
,
const
char
*
t
=
0
);
BaseClassList
*
baseClasses
()
{
return
inherits
;
}
...
...
@@ -75,7 +76,7 @@ class ClassDef : public Definition
void
writeIncludeFile
(
OutputList
&
ol
);
bool
addExample
(
const
char
*
anchor
,
const
char
*
name
,
const
char
*
file
);
bool
hasExamples
();
void
writeExample
(
OutputList
&
ol
);
//
void writeExample(OutputList &ol);
void
setProtection
(
Protection
p
)
{
prot
=
p
;
}
Protection
protection
()
const
{
return
prot
;
}
bool
isVisible
()
...
...
@@ -130,7 +131,7 @@ class ClassDef : public Definition
QString
reference
;
ExampleList
*
exampleList
;
ExampleDict
*
exampleDict
;
int
compType
;
CompoundType
compType
;
Protection
prot
;
};
...
...
src/code.l
View file @
e04496cb
...
...
@@ -173,16 +173,19 @@ static void generateClassLink(OutputList &ol,const char *clName)
if (exampleBlock)
{
QString anchor;
anchor.sprintf("a%d",anchorCount);
anchor.sprintf("
_
a%d",anchorCount);
//printf("addExampleClass(%s,%s,%s)\n",anchor.data(),exampleName.data(),
// exampleFile.data());
if (cd->addExample(anchor,exampleName,exampleFile))
{
bool latexOn = ol.isEnabled(OutputGenerator::Latex);
if (latexOn) ol.disable(OutputGenerator::Latex);
ol.writeAnchor(anchor);
if (latexOn) ol.enable(OutputGenerator::Latex);
anchorCount++;
}
}
ol.writeCodeLink(cd->getReference(),cd->
classFil
e(),0,className);
ol.writeCodeLink(cd->getReference(),cd->
getOutputFileBas
e(),0,className);
}
else
{
...
...
@@ -196,10 +199,11 @@ static bool getLink(const char *className,
MemberDef *md;
ClassDef *cd;
FileDef *fd;
NamespaceDef *nd;
QString m=memberName;
QString c=className;
//printf("Trying `%s'::`%s'\n",c.data(),m.data());
if (getDefs(m,c,"()",md,cd,fd) &&
if (getDefs(m,c,"()",md,cd,fd
,nd
) &&
(md->hasDocumentation() || md->isReference()))
{
//printf("Found!\n");
...
...
@@ -217,13 +221,19 @@ static bool getLink(const char *className,
}
if (cd)
{
result.writeCodeLink(cd->getReference(),cd->classFile(),
result.writeCodeLink(cd->getReference(),cd->getOutputFileBase(),
md->anchor(),memberName);
return TRUE;
}
else if (nd)
{
result.writeCodeLink(nd->getReference(),nd->getOutputFileBase(),
md->anchor(),memberName);
return TRUE;
}
else if (fd)
{
result.writeCodeLink(fd->getReference(),fd->
diskNam
e(),
result.writeCodeLink(fd->getReference(),fd->
getOutputFileBas
e(),
md->anchor(),memberName);
return TRUE;
}
...
...
@@ -363,7 +373,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
if ((fd=findFileDef(&inputNameDict,yytext,ambig)) &&
fd->hasDocumentation())
{
code->writeCodeLink(0,fd->
diskNam
e(),0,yytext);
code->writeCodeLink(0,fd->
getOutputFileBas
e(),0,yytext);
}
else
{
...
...
src/config.h
View file @
e04496cb
...
...
@@ -41,6 +41,7 @@ extern QString genTagFile; // the tag file to generate
extern
QString
inputFilter
;
// a filter command that is applied to input files
extern
QString
paperType
;
// the page type to generate docs for
extern
QString
stripFromPath
;
// the string to strip from the file path
extern
QString
manExtension
;
// extension the man page files
extern
QStrList
includePath
;
// list of include paths
extern
QStrList
examplePath
;
// list of example paths
extern
QStrList
inputSources
;
// list of input files
...
...
@@ -76,5 +77,6 @@ extern bool repeatBriefFlag; // repeat brief descriptions.
extern
bool
internalDocsFlag
;
// determines what happens to internal docs.
extern
bool
caseSensitiveNames
;
// determines if output can be mixed case.
extern
bool
verbatimHeaderFlag
;
// enable/disable generation of verb headers.
extern
bool
htmlAlignMemberFlag
;
// align members in HTML using tables.
#endif
src/config.l
View file @
e04496cb
...
...
@@ -62,6 +62,7 @@ QString inputFilter;
QString paperType;
QString outputLanguage;
QString stripFromPath;
QString manExtension;
QStrList includePath;
QStrList examplePath;
QStrList inputSources;
...
...
@@ -97,6 +98,7 @@ bool searchIncludeFlag = TRUE;
bool classDiagramFlag = TRUE;
bool repeatBriefFlag = TRUE;
bool verbatimHeaderFlag = TRUE;
bool htmlAlignMemberFlag = TRUE;
/* -----------------------------------------------------------------
*
...
...
@@ -163,6 +165,7 @@ static int yyread(char *buf,int max_size)
<Start>"PAPER_TYPE"[ \t]*"=" { BEGIN(GetString); s=&paperType; }
<Start>"OUTPUT_LANGUAGE"[ \t]*"=" { BEGIN(GetString); s=&outputLanguage; }
<Start>"STRIP_FROM_PATH"[ \t]*"=" { BEGIN(GetString); s=&stripFromPath; }
<Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&manExtension; }
<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&includePath; elemStr=""; }
<Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&examplePath; elemStr=""; }
<Start>"INPUT"[ \t]*"=" { BEGIN(GetStrList); l=&inputSources; elemStr=""; }
...
...
@@ -198,6 +201,7 @@ static int yyread(char *buf,int max_size)
<Start>"INTERNAL_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&internalDocsFlag; }
<Start>"CASE_SENSE_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&caseSensitiveNames; }
<Start>"VERBATIM_HEADERS"[ \t]*"=" { BEGIN(GetBool); b=&verbatimHeaderFlag; }
<Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&htmlAlignMemberFlag; }
<Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); }
<GetString,GetBool>\n { yyLineNr++; BEGIN(Start); }
<GetStrList>\n {
...
...
@@ -634,6 +638,15 @@ void writeTemplateConfig(QFile *f,bool sl)
}
t << "HTML_FOOTER =\n";
if (!sl)
{
t << "\n";
t << "# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,\n";
t << "# files or namespaces will be aligned in HTML using tables. If set to\n";
t << "# NO a bullet list will be used.\n";
t << "\n";
}
t << "HTML_ALIGN_MEMBERS = YES\n";
if (!sl)
{
t << "\n";
t << "#---------------------------------------------------------------------------\n";
...
...
@@ -701,6 +714,15 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "\n";
}
t << "MAN_OUTPUT =\n";
if (!sl)
{
t << "\n";
t << "# The MAN_EXTENSION tag determines the extension that is added to\n";
t << "# the generated man pages (default is the subroutine's section .3)\n";
t << "\n";
}
t << "MAN_EXTENSION = .3\n";
if (!sl)
{
t << "\n";
...
...
@@ -870,6 +892,12 @@ void checkConfig()
// projectName[0]=toupper(projectName[0]);
//}
// set default man page extension if non is given by the user
if (manExtension.isEmpty())
{
manExtension=".3";
}
paperType = paperType.lower().stripWhiteSpace();
if (paperType.isEmpty())
{
...
...
src/definition.cpp
View file @
e04496cb
...
...
@@ -16,6 +16,17 @@
#include <ctype.h>
#include "definition.h"
#include "doxygen.h"
Definition
::
Definition
(
const
char
*
name
,
const
char
*
b
,
const
char
*
d
)
{
n
=
name
;
brief
=
b
;
doc
=
d
;
sectionList
=
0
;
}
Definition
::~
Definition
()
{
delete
sectionList
;
}
QString
Definition
::
nameToFile
(
const
char
*
name
)
{
...
...
@@ -42,3 +53,22 @@ QString Definition::nameToFile(const char *name)
}
return
result
;
}
void
Definition
::
addSectionsToDefinition
(
QList
<
QString
>
*
anchorList
)
{
if
(
!
anchorList
)
return
;
QString
*
s
=
anchorList
->
first
();
while
(
s
)
{
SectionInfo
*
si
=
0
;
if
(
!
s
->
isEmpty
()
&&
(
si
=
sectionDict
[
*
s
]))
{
//printf("Add section `%s' to definition `%s'\n",
// si->label.data(),n.data());
if
(
sectionList
==
0
)
sectionList
=
new
SectionList
;
sectionList
->
append
(
si
);
si
->
definition
=
this
;
}
s
=
anchorList
->
next
();
}
}
src/definition.h
View file @
e04496cb
...
...
@@ -18,19 +18,22 @@
#define DEFINITION_H
#include <qstring.h>
#include <qlist.h>
#include "config.h"
#include "section.h"
/*! The common base class of all definitions. */
class
Definition
{
public
:
//! create a new definition
Definition
(
const
char
*
name
,
const
char
*
b
=
0
,
const
char
*
d
=
0
)
{
n
=
name
;
brief
=
b
;
doc
=
d
;
}
Definition
(
const
char
*
name
,
const
char
*
b
=
0
,
const
char
*
d
=
0
);
//! destroys the definition
virtual
~
Definition
()
{}
virtual
~
Definition
()
;
//! returns the name of the definition
QString
name
()
const
{
return
n
;
}
//! returns the base name of the output file that contains this definition.
virtual
QString
getOutputFileBase
()
const
=
0
;
//! returns the detailed description of this definition
QString
documentation
()
const
{
return
doc
;
}
//! returns the brief description of this definition
...
...
@@ -55,10 +58,13 @@ class Definition
{
return
!
doc
.
isNull
()
||
!
brief
.
isNull
()
||
extractAllFlag
;
}
QString
nameToFile
(
const
char
*
name
);
void
addSectionsToDefinition
(
QList
<
QString
>
*
anchorList
);
private
:
QString
n
;
// name of the definition
QString
brief
;
// brief description
QString
doc
;
// detailed description
SectionList
*
sectionList
;
// list of all sections
};
#endif
src/diagram.cpp
View file @
e04496cb
...
...
@@ -152,7 +152,7 @@ static void writeMapArea(QTextStream &t,ClassDef *cd,int x,int y,int w,int h)
{
t
<<
"<area "
;
if
(
cd
->
getReference
())
t
<<
"doxygen=
\"
"
<<
cd
->
getReference
()
<<
":
\"
"
;
t
<<
"href=
\"
"
<<
cd
->
classFil
e
()
<<
".html
\"
"
;
t
<<
"href=
\"
"
<<
cd
->
getOutputFileBas
e
()
<<
".html
\"
"
;
t
<<
"ALT=
\"
"
<<
cd
->
name
();
t
<<
"
\"
shape=
\"
rect
\"
coords=
\"
"
<<
x
<<
","
<<
y
<<
","
;
t
<<
x
+
w
<<
","
<<
y
+
h
<<
"
\"
>"
<<
endl
;
...
...
@@ -187,7 +187,7 @@ QString DiagramItem::label() const
QString
DiagramItem
::
fileName
()
const
{
return
classDef
->
classFil
e
();
return
classDef
->
getOutputFileBas
e
();
}
int
DiagramItem
::
avgChildPos
()
const
...
...
src/doxygen.cpp
View file @
e04496cb
...
...
@@ -60,6 +60,7 @@ PageList exampleList; // list of all example files
PageList
pageList
;
// list of all related documentation pages
MemberNameList
memberNameList
;
// list of class member + related functions
MemberNameList
functionNameList
;
// list of all unrelated functions
//MemberNameList namespaceNameList; // list of namespace members;
FileNameList
inputNameList
;
// list of all input files
StringList
inputFiles
;
FileList
includeFiles
;
...
...
@@ -71,8 +72,9 @@ PageDict pageDict(1009); // dictionary of all doc pages
PageDict
exampleDict
(
1009
);
// dictionary of all examples
ClassDict
classDict
(
1009
);
// dictionary of all documented classes
NamespaceDict
namespaceDict
(
257
);
// dictionary of all documented namespaces
MemberNameDict
memberNameDict
(
10007
);
// dictionary of all member names
MemberNameDict
memberNameDict
(
10007
);
// dictionary of all
class
member names
MemberNameDict
functionNameDict
(
10007
);
// dictionary of all functions
//MemberNameDict namespaceNameDict(10007);// dictionaty of all namespace member names
StringDict
substituteDict
(
1009
);
// dictionary of class name substitutes
SectionDict
sectionDict
(
257
);
// dictionary of all page sections
FileNameDict
inputNameDict
(
1009
);
// dictionary of sections
...
...
@@ -100,6 +102,7 @@ int documentedMembers;
int
documentedFiles
;
int
documentedGroups
;
int
documentedNamespaces
;
int
documentedNamespaceMembers
;
QTextStream
tagFile
;
...
...
@@ -140,6 +143,7 @@ void buildGroupList(Entry *root)
gd
=
new
GroupDef
(
root
->
name
,
root
->
type
);
gd
->
setBriefDescription
(
root
->
brief
);
gd
->
setDocumentation
(
root
->
doc
);
gd
->
addSectionsToDefinition
(
root
->
anchors
);
groupList
.
inSort
(
gd
);
groupDict
.
insert
(
root
->
name
,
gd
);
}
...
...
@@ -207,6 +211,7 @@ void buildFileList(Entry *root)
{
fd
->
setDocumentation
(
root
->
doc
);
fd
->
setBriefDescription
(
root
->
brief
);
fd
->
addSectionsToDefinition
(
root
->
anchors
);
QListIterator
<
QString
>
sli
(
*
root
->
groups
);
QString
*
s
;
for
(;(
s
=
sli
.
current
());
++
sli
)
...
...
@@ -290,7 +295,7 @@ void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
cd
->
setIncludeFile
(
fd
);
// set include supplied name
cd
->
setIncludeName
(
root
->
includeName
);
fd
->
setIncludeName
(
(
QString
)
cd
->
classFil
e
()
+
"-include"
);
fd
->
setIncludeName
(
cd
->
getOutputFileBas
e
()
+
"-include"
);
if
(
includeDict
[
fd
->
absFilePath
()]
==
0
)
// include not inserted earlier
{
includeFiles
.
inSort
(
fd
);
...
...
@@ -409,6 +414,7 @@ void buildClassList(Entry *root)
{
cd
->
setDocumentation
(
root
->
doc
);
cd
->
setBriefDescription
(
root
->
brief
);
cd
->
addSectionsToDefinition
(
root
->
anchors
);
cd
->
setName
(
fullName
);
// change name to match docs
}
}
...
...
@@ -429,7 +435,7 @@ void buildClassList(Entry *root)
)
// new class
{
int
sec
=
ClassDef
::
Class
;
ClassDef
::
CompoundType
sec
=
ClassDef
::
Class
;
switch
(
root
->
section
)
{
case
Entry
:
:
UNION_SEC
:
...
...
@@ -445,6 +451,7 @@ void buildClassList(Entry *root)
//printf("new ClassDef tempArgList=%p\n",root->tArgList);
cd
->
setTemplateArguments
(
root
->
tArgList
);
cd
->
setProtection
(
root
->
protection
);
cd
->
addSectionsToDefinition
(
root
->
anchors
);
QListIterator
<
QString
>
sli
(
*
root
->
groups
);
QString
*
s
;
...
...
@@ -519,6 +526,7 @@ void buildNamespaceList(Entry *root)
{
nd
->
setDocumentation
(
root
->
doc
);
nd
->
setName
(
fullName
);
// change name to match docs
nd
->
addSectionsToDefinition
(
root
->
anchors
);
}
else
if
(
!
nd
->
documentation
().
isEmpty
()
&&
root
->
doc
.
length
()
>
0
)
{
...
...
@@ -539,14 +547,16 @@ void buildNamespaceList(Entry *root)
}
}
}
else
if
(
root
->
doc
.
length
()
>
0
||
else
/*
if (root->doc.length()>0 ||
root->brief.length()>0 ||
extractAllFlag
)
*/
{
NamespaceDef
*
nd
=
new
NamespaceDef
(
fullName
);
nd
->
setDocumentation
(
root
->
doc
);
// copy docs to definition
nd
->
setBriefDescription
(
root
->
brief
);
nd
->
addSectionsToDefinition
(
root
->
anchors
);
QListIterator
<
QString
>
sli
(
*
root
->
groups
);
QString
*
s
;
...
...
@@ -639,12 +649,14 @@ void buildVarList(Entry *root)
bool
stat
=
root
->
stat
;
ClassDef
*
cd
=
0
;
Entry
*
p
=
root
->
parent
;
while
((
p
->
section
&
Entry
::
COMPOUND_MASK
))
while
((
p
->
section
&
Entry
::
COMPOUND_MASK
)
||
p
->
section
==
Entry
::
NAMESPACE_SEC
)
{
if
(
p
->
name
.
length
()
>
0
&&
p
->
name
[
0
]
!=
'@'
)
{
if
(
!
scope
.
isEmpty
())
scope
.
prepend
(
"::"
);
scope
.
prepend
(
p
->
name
);
break
;
}
p
=
p
->
parent
;
}
...
...
@@ -652,6 +664,7 @@ void buildVarList(Entry *root)
//printf("scope=%s\n",scope.data());
int
ni
;
#if 0
if ((ni=root->name.findRev("::"))!=-1)
{
if (scope.length()>0) scope+="::";
...
...
@@ -659,8 +672,18 @@ void buildVarList(Entry *root)
name=root->name.right(root->name.length()-ni-2);
stat=TRUE;
}
#endif
if
((
ni
=
root
->
name
.
findRev
(
"::"
))
!=-
1
)
goto
nextMember
;
/* skip this member, because it is a
* static variable definition (always?), which will be
* found in a class scope as well, but then we know the
* correct protection level, so only then it will be
* inserted in the correct list!
*/
MemberDef
::
MemberType
mtype
;
// NamespaceDef *nd = 0;
QString
type
=
root
->
type
.
stripWhiteSpace
();
if
(
type
==
"@"
)
mtype
=
MemberDef
::
EnumValue
;
...
...
@@ -715,11 +738,28 @@ void buildVarList(Entry *root)
if
(
mn
)
{
MemberDef
*
md
=
mn
->
first
();
while
(
md
)
while
(
md
&&
!
found
)
{
if
(
md
->
memberClass
()
==
cd
)
// member already in the scope
{
addMemberDocs
(
root
,
md
,
def
,
FALSE
);
#if 0
// always trust the most protected scope, so adjust if needed
// This is needed to properly place static private variables,
// which are defined in a `public' scope.
printf("Checking protection level\n");
if (root->protection==Private || md->protection()!=Private)
{
printf("Set to private\n");
md->setProtection(Private);
}
else if (root->protection==Protected && md->protection()==Public)
{
printf("Set to protected\n");
md->setProtection(Protected);
}
#endif
found
=
TRUE
;
}
md
=
mn
->
next
();
...
...
@@ -737,6 +777,7 @@ void buildVarList(Entry *root)
md
->
setDocumentation
(
root
->
doc
);
md
->
setBriefDescription
(
root
->
brief
);
md
->
setDefinition
(
def
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
// add the member to the global list
if
(
mn
)
...
...
@@ -761,6 +802,56 @@ void buildVarList(Entry *root)
cd
->
insertUsedFile
(
root
->
fileName
);
}
}
#if 0
else if (scope.length()>0 && name.length()>0 && (nd=namespaceDict[scope]))
{
Debug::print(Debug::Variables,0,
" namespace variable:\n"
" type=`%s' scope=`%s' name=`%s' args=`%s' prot=`%d\n",
root->type.data(),
scope.data(),
name.data(),
root->args.data(),
root->protection
);
// new global variable, enum value or typedef
MemberDef *md=new MemberDef(root->type,name,root->args,0,
Public, Normal,root->stat,FALSE,
mtype,0,0);
md->setDefFile(root->fileName);
md->setDefLine(root->startLine);
md->setDocumentation(root->doc);
md->setBriefDescription(root->brief);
md->addSectionsToDefinition(root->anchors);
QString def;
nd->insertMember(md);
md->setNamespace(nd);
if (root->type.length()>0)
{
def=root->type+" "+nd->name()+"::"+name+root->args;
}
else
{
def=nd->name()+"::"+name+root->args;
}
if (def.left(7)=="static ") def=def.right(def.length()-7);
md->setDefinition(def);
MemberName *mn;
// add member definition to the list of globals
if ((mn=namespaceNameDict[name]))
{
mn->inSort(md);
}
else
{
mn = new MemberName(name);
mn->inSort(md);
namespaceNameDict.insert(name,mn);
namespaceNameList.inSort(mn);
}
}
#endif
else
if
(
name
.
length
()
>
0
)
// global variable
{
Debug
::
print
(
Debug
::
Variables
,
0
,
...
...
@@ -781,6 +872,7 @@ void buildVarList(Entry *root)
md
->
setDefLine
(
root
->
startLine
);
md
->
setDocumentation
(
root
->
doc
);
md
->
setBriefDescription
(
root
->
brief
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
QString
def
;
// see if the function is inside a namespace
...
...
@@ -850,6 +942,7 @@ void buildVarList(Entry *root)
}
}
}
nextMember:
EntryListIterator
eli
(
*
root
->
sublist
);
Entry
*
e
;
for
(;(
e
=
eli
.
current
());
++
eli
)
...
...
@@ -925,6 +1018,7 @@ void buildMemberList(Entry *root)
md
->
setDefLine
(
root
->
startLine
);
md
->
setDocumentation
(
root
->
doc
);
md
->
setBriefDescription
(
root
->
brief
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
QString
def
;
if
(
root
->
relates
.
length
()
>
0
||
isFriend
)
{
...
...
@@ -1048,6 +1142,7 @@ void buildMemberList(Entry *root)
{
md
->
setBriefDescription
(
root
->
brief
);
}
md
->
addSectionsToDefinition
(
root
->
anchors
);
}
md
=
mn
->
next
();
}
...
...
@@ -1067,6 +1162,7 @@ void buildMemberList(Entry *root)
md
->
setDocumentation
(
root
->
doc
);
md
->
setBriefDescription
(
root
->
brief
);
md
->
setPrototype
(
root
->
proto
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
QString
def
;
if
(
root
->
type
.
length
()
>
0
)
{
...
...
@@ -1357,8 +1453,9 @@ void computeClassRelations(Entry *root)
}
else
// base class not documented
{
//printf("Found undocumented base class %s\n",bi->name.data());
NamespaceDef
*
nd
=
cd
->
getNamespace
();
//printf("Found undocumented base class `%s' namespace scope=`%s'\n",
// bi->name.data(),nd ? nd->name().data() : "<none>");
if
(
nd
&&
(
baseClass
=
getClass
(
nd
->
name
()
+
"::"
+
baseClassName
)))
// class is defined inside namespace
{
...
...
@@ -1369,7 +1466,7 @@ void computeClassRelations(Entry *root)
}
else
// undocumented base class
{
baseClass
=
new
ClassDef
(
bi
->
name
,
Entry
::
CLASS_SEC
);
baseClass
=
new
ClassDef
(
bi
->
name
,
ClassDef
::
Class
);
// add base class to this class
cd
->
insertBaseClass
(
baseClass
,
bi
->
prot
,
bi
->
virt
,
templSpec
);
// add this class as super class to the base class
...
...
@@ -1523,6 +1620,7 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
}
md
->
setDefFile
(
root
->
fileName
);
md
->
setDefLine
(
root
->
startLine
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
if
(
cd
)
cd
->
insertUsedFile
(
root
->
fileName
);
}
...
...
@@ -1676,21 +1774,23 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
else
scopeName
=
related
.
copy
();
}
else
if
(
scopeName
.
isEmpty
()
&&
related
.
isEmpty
()
&&
root
->
parent
&&
else
if
(
/*scopeName.isEmpty() &&*/
related
.
isEmpty
()
&&
root
->
parent
&&
!
root
->
parent
->
name
.
isNull
())
{
Entry
*
p
=
root
->
parent
;
while
(
p
)
// get full scope as class name
{
//printf("++++++ scope=`%s'\n",p->name.data());
if
(((
p
->
section
&
Entry
::
COMPOUND_MASK
)
||
p
->
section
==
Entry
::
NAMESPACE_SEC
)
&&
!
p
->
name
.
isEmpty
()
&&
p
->
name
[
0
]
!=
'@'
)
{
if
(
scopeName
.
left
(
p
->
name
.
length
())
==
p
->
name
)
break
;
// scope already present, so stop now
// prepend name to scope
if
(
!
scopeName
.
isEmpty
())
scopeName
.
prepend
(
"::"
);
scopeName
.
prepend
(
p
->
name
);
break
;
// stop here because the class name already contains
// the whole scope!
}
p
=
p
->
parent
;
}
...
...
@@ -1906,6 +2006,7 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
md
->
setDefFile
(
root
->
fileName
);
md
->
setDefLine
(
root
->
startLine
);
md
->
setPrototype
(
root
->
proto
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
mn
->
inSort
(
md
);
cd
->
insertMember
(
md
);
cd
->
insertUsedFile
(
root
->
fileName
);
...
...
@@ -1970,6 +2071,7 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
md
->
setDefFile
(
root
->
fileName
);
md
->
setDefLine
(
root
->
startLine
);
md
->
setPrototype
(
root
->
proto
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
mn
->
inSort
(
md
);
cd
->
insertMember
(
md
);
cd
->
insertUsedFile
(
root
->
fileName
);
...
...
@@ -2014,7 +2116,7 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
void
findMemberDocumentation
(
Entry
*
root
)
{
int
i
,
l
;
QRegExp
re
(
"([a-zA-Z0-9: ]*
[ *]+[
]*"
);
QRegExp
re
(
"([a-zA-Z0-9: ]*
\\
*+[
\\
*
]*"
);
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"root->type=`%s' root->name=`%s' root->args=`%s'
\n
"
,
root
->
type
.
data
(),
root
->
name
.
data
(),
root
->
args
.
data
()
...
...
@@ -2026,7 +2128,7 @@ void findMemberDocumentation(Entry *root)
root
->
type
=
root
->
type
.
left
(
i
+
l
);
isFunc
=
FALSE
;
}
else
if
(
root
->
name
.
find
(
re
)
!=-
1
&&
root
->
name
.
find
(
"operator"
)
!
=-
1
)
else
if
(
root
->
name
.
find
(
re
)
!=-
1
&&
root
->
name
.
find
(
"operator"
)
=
=-
1
)
// func ptr entered with \fn, \var or \typedef
{
isFunc
=
FALSE
;
...
...
@@ -2151,6 +2253,7 @@ void findEnums(Entry *root)
if
(
!
isGlobal
)
md
->
setMemberClass
(
cd
);
else
md
->
setFileDef
(
fd
);
md
->
setDefFile
(
root
->
fileName
);
md
->
setDefLine
(
root
->
startLine
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
if
(
nd
)
{
md
->
setDefinition
(
nd
->
name
()
+
"::"
+
name
);
...
...
@@ -2301,6 +2404,7 @@ void findEnumDocumentation(Entry *root)
{
md
->
setBriefDescription
(
root
->
brief
);
}
md
->
addSectionsToDefinition
(
root
->
anchors
);
found
=
TRUE
;
}
md
=
mn
->
next
();
...
...
@@ -2319,6 +2423,7 @@ void findEnumDocumentation(Entry *root)
{
md
->
setDocumentation
(
root
->
doc
);
md
->
setBriefDescription
(
root
->
brief
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
found
=
TRUE
;
}
}
...
...
@@ -2338,6 +2443,49 @@ void findEnumDocumentation(Entry *root)
}
}
// seach for each enum (member or function) in mnl if it has documented
// enum values.
static
void
findDEV
(
const
MemberNameList
&
mnl
)
{
MemberName
*
mn
;
MemberNameListIterator
mnli
(
mnl
);
// for each member name
for
(
mnli
.
toFirst
();(
mn
=
mnli
.
current
());
++
mnli
)
{
MemberDef
*
md
;
MemberNameIterator
mni
(
*
mn
);
// for each member definition
for
(
mni
.
toFirst
();(
md
=
mni
.
current
());
++
mni
)
{
if
(
md
->
isEnumerate
())
// member is an enum
{
QList
<
MemberDef
>
*
fmdl
=
md
->
enumFieldList
();
int
documentedEnumValues
=
0
;
if
(
fmdl
)
// enum has values
{
MemberDef
*
fmd
=
fmdl
->
first
();
// for each enum value
while
(
fmd
)
{
if
(
fmd
->
hasDocumentation
())
documentedEnumValues
++
;
fmd
=
fmdl
->
next
();
}
}
// at least one enum value is documented
if
(
documentedEnumValues
>
0
)
md
->
setDocumentedEnumValues
(
TRUE
);
}
}
}
}
// seach for each enum (member or function) if it has documented enum
// values.
void
findDocumentedEnumValues
()
{
findDEV
(
memberNameList
);
findDEV
(
functionNameList
);
}
//----------------------------------------------------------------------
// recursive function:
// returns TRUE iff class definition `bcd' represents an (in)direct base
...
...
@@ -2695,6 +2843,7 @@ void findDefineDocumentation(Entry *root)
md
->
setDocumentation
(
root
->
doc
);
if
(
md
->
briefDescription
().
isEmpty
())
md
->
setBriefDescription
(
root
->
brief
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
}
md
=
mn
->
next
();
}
...
...
@@ -2715,6 +2864,7 @@ void findDefineDocumentation(Entry *root)
md
->
setDocumentation
(
root
->
doc
);
if
(
md
->
briefDescription
().
isEmpty
())
md
->
setBriefDescription
(
root
->
brief
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
}
}
md
=
mn
->
next
();
...
...
@@ -2769,6 +2919,7 @@ void buildPageList(Entry *root)
baseName
=
baseName
.
left
(
baseName
.
length
()
-
5
);
pi
=
new
PageInfo
(
baseName
,
root
->
doc
,
root
->
args
.
stripWhiteSpace
());
setFileNameForSections
(
root
->
anchors
,
root
->
name
);
pageList
.
append
(
pi
);
pageDict
.
insert
(
baseName
,
pi
);
if
(
pi
->
title
.
length
()
>
0
)
...
...
@@ -2779,8 +2930,11 @@ void buildPageList(Entry *root)
else
pageName
=
pi
->
name
.
lower
();
//outputList->writeTitle(pi->name,pi->title);
SectionInfo
*
si
=
new
SectionInfo
(
pageName
+
".html"
,
pi
->
name
,
pi
->
title
,
FALSE
);
// a page name is a label as well!
SectionInfo
*
si
=
new
SectionInfo
(
pi
->
name
,
pi
->
title
,
SectionInfo
::
Section
);
si
->
fileName
=
pageName
+
".html"
;
//printf("Adding section info %s\n",pi->name.data());
sectionDict
.
insert
(
pi
->
name
,
si
);
}
...
...
@@ -2795,6 +2949,26 @@ void buildPageList(Entry *root)
}
}
//----------------------------------------------------------------------------
void
resolveUserReferences
()
{
QDictIterator
<
SectionInfo
>
sdi
(
sectionDict
);
SectionInfo
*
si
;
for
(;(
si
=
sdi
.
current
());
++
sdi
)
{
if
(
si
->
definition
)
{
//printf("si=`%s' def=`%s' file=`%s'\n",
// si->label.data(),
// si->definition->name().data(),
// si->definition->getOutputFileBase().data());
si
->
fileName
=
si
->
definition
->
getOutputFileBase
().
copy
();
}
}
}
//----------------------------------------------------------------------------
// generate all separate documentation pages
...
...
@@ -2802,15 +2976,8 @@ void generatePageDocs()
{
PageInfo
*
pi
=
pageList
.
first
();
while
(
pi
)
{
if
(
!
pi
->
title
.
isEmpty
())
{
msg
(
"Generating docs for page %s...
\n
"
,
pi
->
title
.
data
());
}
else
{
msg
(
"Generating docs for page %s...
\n
"
,
pi
->
name
.
data
());
}
outputList
->
disable
(
OutputGenerator
::
Man
);
QString
pageName
;
if
(
caseSensitiveNames
)
...
...
@@ -2850,6 +3017,7 @@ void buildExampleList(Entry *root)
else
{
PageInfo
*
pi
=
new
PageInfo
(
root
->
name
,
root
->
doc
,
root
->
args
);
setFileNameForSections
(
root
->
anchors
,
root
->
name
);
exampleList
.
inSort
(
pi
);
exampleDict
.
insert
(
root
->
name
,
pi
);
}
...
...
@@ -3166,6 +3334,7 @@ void readFiles(BufStr &output)
s
=
inputFiles
.
next
();
}
// *p++='\0';
output
.
addChar
(
'\n'
);
/* to prevent problems under Windows ? */
output
.
addChar
(
0
);
//printf("Output after preprocessing:\n---------\n%s\n----------\n",output.data());
//printf("Final length = %d\n",p-output.data());
...
...
@@ -3206,7 +3375,7 @@ int readDir(QFileInfo *fi,
else
if
(
cfi
->
isFile
()
&&
patternMatch
(
cfi
,
patList
)
&&
!
patternMatch
(
cfi
,
exclPatList
))
{
totalSize
+=
cfi
->
size
()
+
cfi
->
absFilePath
().
length
()
+
3
;
totalSize
+=
cfi
->
size
()
+
cfi
->
absFilePath
().
length
()
+
4
;
QString
name
=
cfi
->
fileName
();
if
(
fnDict
)
{
...
...
@@ -3306,7 +3475,7 @@ int readFileOrDirectory(const char *s,
}
else
if
(
fi
.
isFile
())
{
totalSize
+=
fi
.
size
()
+
fi
.
absFilePath
().
length
()
+
3
;
//readFile(&fi,fiList,input);
totalSize
+=
fi
.
size
()
+
fi
.
absFilePath
().
length
()
+
4
;
//readFile(&fi,fiList,input);
//fiList->inSort(new FileInfo(fi));
QString
name
=
fi
.
fileName
();
if
(
fnDict
)
...
...
@@ -3646,16 +3815,19 @@ int main(int argc,char **argv)
msg
(
"Searching for enumerations...
\n
"
);
findEnums
(
root
);
findEnumDocumentation
(
root
);
// msg("Searching for function prototypes...\n");
// findPrototypes(root); // may introduce new members !
msg
(
"Searching for member function documentation...
\n
"
);
findMemberDocumentation
(
root
);
// may introduce new members !
msg
(
"Freeing entry tree
\n
"
);
delete
root
;
msg
(
"Determining which enums are documented
\n
"
);
findDocumentedEnumValues
();
msg
(
"Computing member references...
\n
"
);
computeMemberReferences
();
...
...
@@ -3680,17 +3852,21 @@ int main(int argc,char **argv)
msg
(
"Counting data structures...
\n
"
);
annotatedClasses
=
countAnnotatedClasses
();
hierarchyClasses
=
countClassHierarchy
();
documentedMembers
=
countMemberList
();
documentedFunctions
=
countFunctionList
();
documentedFiles
=
countFileList
();
documentedGroups
=
countGroupList
();
documentedNamespaces
=
countNamespaceList
();
documentedMembers
=
countClassMembers
();
documentedFunctions
=
countFileMembers
();
documentedFiles
=
countFiles
();
documentedGroups
=
countGroups
();
documentedNamespaces
=
countNamespaces
();
documentedNamespaceMembers
=
countNamespaceMembers
();
// compute the shortest possible names of all files
// without loosing the uniqueness of the file names.
msg
(
"Generating disk names...
\n
"
);
inputNameList
.
generateDiskNames
();
msg
(
"Resolving user defined references...
\n
"
);
resolveUserReferences
();
msg
(
"Generating example documentation...
\n
"
);
generateExampleDocs
();
...
...
@@ -3715,8 +3891,11 @@ int main(int argc,char **argv)
msg
(
"Generating example index...
\n
"
);
writeExampleIndex
(
*
outputList
);
msg
(
"Generating function index...
\n
"
);
writeFunctionIndex
(
*
outputList
);
msg
(
"Generating file member index...
\n
"
);
writeFileMemberIndex
(
*
outputList
);
msg
(
"Generating namespace member index...
\n
"
);
writeNamespaceMemberIndex
(
*
outputList
);
// msg("Generating define index...\n");
// writeDefineIndex(*outputList);
...
...
@@ -3730,17 +3909,17 @@ int main(int argc,char **argv)
msg
(
"Generating style sheet...
\n
"
);
outputList
->
writeStyleInfo
(
0
);
// write first part
outputList
->
disableAllBut
(
OutputGenerator
::
Latex
);
parse
Doc
(
*
outputList
,
0
,
0
,
parse
Text
(
*
outputList
,
theTranslator
->
trGeneratedAt
(
dateToString
(
TRUE
),
projectName
)
);
outputList
->
writeStyleInfo
(
1
);
// write second part
parse
Doc
(
*
outputList
,
0
,
0
,
theTranslator
->
trWrittenBy
());
parse
Text
(
*
outputList
,
theTranslator
->
trWrittenBy
());
outputList
->
writeStyleInfo
(
2
);
// write third part
parse
Doc
(
*
outputList
,
0
,
0
,
parse
Text
(
*
outputList
,
theTranslator
->
trGeneratedAt
(
dateToString
(
TRUE
),
projectName
)
);
outputList
->
writeStyleInfo
(
3
);
// write fourth part
parse
Doc
(
*
outputList
,
0
,
0
,
theTranslator
->
trWrittenBy
());
parse
Text
(
*
outputList
,
theTranslator
->
trWrittenBy
());
outputList
->
writeStyleInfo
(
4
);
// write last part
outputList
->
enableAll
();
...
...
src/doxygen.h
View file @
e04496cb
...
...
@@ -28,6 +28,7 @@
#include "define.h"
#include "namespacedef.h"
#include "formula.h"
#include "section.h"
struct
PageInfo
{
...
...
@@ -72,23 +73,12 @@ class BufStr : public QString
const
int
spareRoom
;
// 10Kb extra room to avoid frequent resizing
};
struct
SectionInfo
{
SectionInfo
(
const
char
*
n
,
const
char
*
l
,
const
char
*
t
,
bool
sub
)
{
pageName
=
n
;
label
=
l
;
title
=
t
;
isSubsection
=
sub
;
}
QString
pageName
;
QString
label
;
QString
title
;
bool
isSubsection
;
};
typedef
QList
<
QString
>
StringList
;
typedef
QDict
<
MemberDef
>
MemberDict
;
typedef
QDict
<
ClassDef
>
ClassDict
;
typedef
QDict
<
FileDef
>
FileDict
;
typedef
QDict
<
QString
>
StringDict
;
typedef
QDict
<
PageInfo
>
PageDict
;
typedef
QDict
<
SectionInfo
>
SectionDict
;
typedef
QDict
<
GroupDef
>
GroupDict
;
extern
const
char
*
getOverloadDocs
();
...
...
@@ -118,6 +108,7 @@ extern FileList includeFiles;
extern
StringDict
typedefDict
;
extern
GroupList
groupList
;
extern
NamespaceList
namespaceList
;
extern
NamespaceDict
namespaceDict
;
extern
FormulaList
formulaList
;
extern
FormulaDict
formulaDict
;
extern
FormulaDict
formulaNameDict
;
...
...
@@ -130,5 +121,6 @@ extern int documentedDefines;
extern
int
documentedFiles
;
extern
int
documentedGroups
;
extern
int
documentedNamespaces
;
extern
int
documentedNamespaceMembers
;
#endif
src/doxygen.pro
View file @
e04496cb
src/doxytag.l
View file @
e04496cb
...
...
@@ -251,7 +251,8 @@ QString unhtmlify(const char *str)
}
<SearchWords>[a-z_A-Z0-9]+ {
docAnchor = yytext;
if (docAnchor=="details")
if (docAnchor=="details" ||
docAnchor=="_details")
{
docRefName=className.copy();
addReference();
...
...
src/entry.cpp
View file @
e04496cb
...
...
@@ -29,6 +29,8 @@ Entry::Entry()
extends
->
setAutoDelete
(
TRUE
);
groups
=
new
QList
<
QString
>
;
groups
->
setAutoDelete
(
TRUE
);
anchors
=
new
QList
<
QString
>
;
anchors
->
setAutoDelete
(
TRUE
);
argList
=
new
ArgumentList
;
argList
->
setAutoDelete
(
TRUE
);
//printf("Entry::Entry() tArgList=0\n");
...
...
@@ -66,6 +68,8 @@ Entry::Entry(const Entry &e)
extends
->
setAutoDelete
(
TRUE
);
groups
=
new
QList
<
QString
>
;
groups
->
setAutoDelete
(
TRUE
);
anchors
=
new
QList
<
QString
>
;
anchors
->
setAutoDelete
(
TRUE
);
argList
=
new
ArgumentList
;
argList
->
setAutoDelete
(
TRUE
);
//printf("Entry::Entry(copy) tArgList=0\n");
...
...
@@ -95,6 +99,12 @@ Entry::Entry(const Entry &e)
groups
->
append
(
new
QString
(
*
s
));
}
QListIterator
<
QString
>
sli2
(
*
e
.
anchors
);
for
(;(
s
=
sli2
.
current
());
++
sli2
)
{
anchors
->
append
(
new
QString
(
*
s
));
}
// deep copy argument list
QListIterator
<
Argument
>
ali
(
*
e
.
argList
);
Argument
*
a
;
...
...
@@ -128,6 +138,7 @@ Entry::~Entry()
delete
sublist
;
delete
extends
;
delete
groups
;
delete
anchors
;
delete
argList
;
//printf("Entry::~Entry() tArgList=%p\n",tArgList);
delete
tArgList
;
...
...
@@ -177,6 +188,7 @@ void Entry::reset()
sublist
->
clear
();
extends
->
clear
();
groups
->
clear
();
anchors
->
clear
();
argList
->
clear
();
if
(
tArgList
)
{
delete
tArgList
;
tArgList
=
0
;
}
}
...
...
@@ -211,6 +223,13 @@ int Entry::getSize()
size
+=
s
->
length
()
+
1
;
s
=
groups
->
next
();
}
s
=
anchors
->
first
();
while
(
s
)
{
size
+=
sizeof
(
QLNode
);
size
+=
s
->
length
()
+
1
;
s
=
anchors
->
next
();
}
Entry
*
e
=
sublist
->
first
();
while
(
e
)
{
...
...
src/entry.h
View file @
e04496cb
...
...
@@ -140,6 +140,7 @@ class Entry
QList
<
Entry
>
*
sublist
;
// entries that are children of this one
QList
<
BaseInfo
>
*
extends
;
// list of base classes
QList
<
QString
>
*
groups
;
// list of groups this entry belongs to
QList
<
QString
>
*
anchors
;
// list of anchors defined in this entry
QString
fileName
;
// file this entry was extracted from
int
startLine
;
// start line of entry in the source
int
num
;
...
...
src/filedef.cpp
View file @
e04496cb
...
...
@@ -69,7 +69,7 @@ void FileDef::writeDocumentation(OutputList &ol)
QString
pageTitle
=
name
()
+
" File Reference"
;
startFile
(
ol
,
diskname
,
pageTitle
);
startTitle
(
ol
);
ol
.
docify
(
pageTitle
);
parseText
(
ol
,
theTranslator
->
trFileReference
(
name
())
);
endTitle
(
ol
,
name
());
//ol.newParagraph();
...
...
@@ -86,8 +86,8 @@ void FileDef::writeDocumentation(OutputList &ol)
ol
+=
briefOutput
;
ol
.
writeString
(
"
\n
"
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
startTextLink
(
0
,
"details"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trMore
());
ol
.
startTextLink
(
0
,
"
_
details"
);
parse
Text
(
ol
,
theTranslator
->
trMore
());
ol
.
endTextLink
();
ol
.
enableAll
();
}
...
...
@@ -96,6 +96,7 @@ void FileDef::writeDocumentation(OutputList &ol)
ol
.
enable
(
OutputGenerator
::
Man
);
ol
.
writeSynopsis
();
ol
.
startMemberSections
();
if
(
classList
->
count
()
>
0
)
{
ClassDef
*
cd
=
classList
->
first
();
...
...
@@ -111,7 +112,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if
(
!
found
)
{
ol
.
startMemberHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trCompounds
());
parse
Text
(
ol
,
theTranslator
->
trCompounds
());
ol
.
endMemberHeader
();
ol
.
startMemberList
();
found
=
TRUE
;
...
...
@@ -124,10 +125,11 @@ void FileDef::writeDocumentation(OutputList &ol)
case
ClassDef
:
:
Union
:
ol
.
writeString
(
"union"
);
break
;
}
ol
.
writeString
(
" "
);
ol
.
insertMemberAlign
();
if
(
cd
->
hasDocumentation
())
{
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
classFil
e
(),
cd
->
getOutputFileBas
e
(),
0
,
cd
->
name
()
);
...
...
@@ -146,6 +148,7 @@ void FileDef::writeDocumentation(OutputList &ol)
}
writeMemberDecs
(
ol
,
0
,
0
,
this
,
0
,
0
,
memList
);
ol
.
endMemberSections
();
//doc=doc.stripWhiteSpace();
//int bl=brief.length();
...
...
@@ -153,9 +156,12 @@ void FileDef::writeDocumentation(OutputList &ol)
if
(
!
briefDescription
().
isEmpty
()
||
!
documentation
().
isEmpty
())
{
ol
.
writeRuler
();
ol
.
writeAnchor
(
"details"
);
bool
latexOn
=
ol
.
isEnabled
(
OutputGenerator
::
Latex
);
if
(
latexOn
)
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
writeAnchor
(
"_details"
);
if
(
latexOn
)
ol
.
enable
(
OutputGenerator
::
Latex
);
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trDetailedDescription
());
parse
Text
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
if
(
!
briefDescription
().
isEmpty
())
{
...
...
@@ -177,7 +183,7 @@ void FileDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trDefineDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trDefineDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
Define
);
}
...
...
@@ -186,7 +192,7 @@ void FileDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trFunctionPrototypeDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trFunctionPrototypeDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
Prototype
);
}
...
...
@@ -195,7 +201,7 @@ void FileDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trTypedefDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trTypedefDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
Typedef
);
}
...
...
@@ -204,7 +210,7 @@ void FileDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trEnumerationTypeDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trEnumerationTypeDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
Enumeration
);
}
...
...
@@ -213,7 +219,7 @@ void FileDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trEnumerationValueDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trEnumerationValueDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
EnumValue
);
}
...
...
@@ -222,7 +228,7 @@ void FileDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trFunctionDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trFunctionDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
Function
);
}
...
...
@@ -231,7 +237,7 @@ void FileDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trVariableDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trVariableDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
Variable
);
}
...
...
@@ -239,9 +245,9 @@ void FileDef::writeDocumentation(OutputList &ol)
// write Author section (Man only)
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trAuthor
());
parse
Text
(
ol
,
theTranslator
->
trAuthor
());
ol
.
endGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trGeneratedAutomatically
(
projectName
));
parse
Text
(
ol
,
theTranslator
->
trGeneratedAutomatically
(
projectName
));
ol
.
enableAll
();
endFile
(
ol
);
}
...
...
src/filedef.h
View file @
e04496cb
...
...
@@ -62,7 +62,8 @@ class FileDef : public Definition
}
/*! Returns nameString with all slashes replaced by underscores. */
const
char
*
diskName
()
const
{
return
diskname
;
}
//const char *diskName() const { return diskname; }
QString
getOutputFileBase
()
const
{
return
diskname
;
}
/*! Returns the absolute path including the file name. */
QString
absFilePath
()
const
{
return
filepath
;
}
...
...
src/groupdef.cpp
View file @
e04496cb
...
...
@@ -90,20 +90,20 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol
+=
briefOutput
;
ol
.
writeString
(
"
\n
"
);
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
startTextLink
(
0
,
"details"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trMore
());
ol
.
startTextLink
(
0
,
"
_
details"
);
parse
Text
(
ol
,
theTranslator
->
trMore
());
ol
.
enable
(
OutputGenerator
::
Latex
);
}
if
(
fileList
->
count
()
>
0
)
{
ol
.
startMemberHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trFiles
());
parse
Text
(
ol
,
theTranslator
->
trFiles
());
ol
.
endMemberHeader
();
ol
.
startIndexList
();
FileDef
*
fd
=
fileList
->
first
();
while
(
fd
)
{
ol
.
writeStartAnnoItem
(
"file "
,
fd
->
diskNam
e
(),
0
,
fd
->
name
());
ol
.
writeStartAnnoItem
(
"file "
,
fd
->
getOutputFileBas
e
(),
0
,
fd
->
name
());
ol
.
writeEndAnnoItem
(
fd
->
name
());
fd
=
fileList
->
next
();
}
...
...
@@ -112,7 +112,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
if
(
classList
->
count
()
>
0
)
{
ol
.
startMemberHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trCompounds
());
parse
Text
(
ol
,
theTranslator
->
trCompounds
());
ol
.
endMemberHeader
();
ol
.
startIndexList
();
ClassDef
*
cd
=
classList
->
first
();
...
...
@@ -125,7 +125,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
case
ClassDef
:
:
Struct
:
type
=
"struct"
;
break
;
case
ClassDef
:
:
Union
:
type
=
"union"
;
break
;
}
ol
.
writeStartAnnoItem
(
type
,
cd
->
classFil
e
(),
0
,
cd
->
name
());
ol
.
writeStartAnnoItem
(
type
,
cd
->
getOutputFileBas
e
(),
0
,
cd
->
name
());
ol
.
writeEndAnnoItem
(
cd
->
name
());
cd
=
classList
->
next
();
}
...
...
@@ -136,9 +136,12 @@ void GroupDef::writeDocumentation(OutputList &ol)
if
(
!
briefDescription
().
isEmpty
()
||
!
documentation
().
isEmpty
())
{
ol
.
writeRuler
();
ol
.
writeAnchor
(
"details"
);
bool
latexOn
=
ol
.
isEnabled
(
OutputGenerator
::
Latex
);
if
(
latexOn
)
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
writeAnchor
(
"_details"
);
if
(
latexOn
)
ol
.
enable
(
OutputGenerator
::
Latex
);
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trDetailedDescription
());
parse
Text
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
// repeat brief description
if
(
!
briefDescription
().
isEmpty
())
...
...
src/groupdef.h
View file @
e04496cb
...
...
@@ -35,7 +35,8 @@ class GroupDef : public Definition
public
:
GroupDef
(
const
char
*
name
,
const
char
*
title
);
~
GroupDef
();
const
char
*
groupFile
()
const
{
return
fileName
;
}
//const char *groupFile() const { return fileName; }
QString
getOutputFileBase
()
const
{
return
fileName
;
}
const
char
*
groupTitle
()
const
{
return
title
;
}
void
addFile
(
const
FileDef
*
def
);
void
addClass
(
const
ClassDef
*
def
);
...
...
src/htmlgen.cpp
View file @
e04496cb
...
...
@@ -51,77 +51,10 @@ void HtmlGenerator::init()
writeLogo
(
htmlOutputDir
);
}
//void HtmlGenerator::generateExternalIndex()
//{
// //printf("Generating external index...\n");
// QFile f;
// f.setName(htmlOutputDir+"/header.html");
// if (f.open(IO_WriteOnly))
// {
// QTextStream tt(&f);
// if (header.length()==0)
// {
// tt << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n"
// "<html><head><meta name=\"robots\" content=\"noindex\">\n"
// "<title>Doxysearch</title>\n"
// "</head><body bgcolor=\"#ffffff\">\n";
// }
// else
// {
// tt << header;
// }
// if (!noIndexFlag)
// {
// tt << "<center>";
// if (documentedGroups>0)
// tt << "<a doxygen=\"_doc:\" href=\"/modules.html\">Modules</a> ";
// if (hierarchyClasses>0)
// tt << "<a doxygen=\"_doc:\" href=\"/hierarchy.html\">Class hierarchy</a> ";
// if (annotatedClasses>0)
// tt << "<a doxygen=\"_doc:\" href=\"/annotated.html\">Compound list</a> ";
// if (documentedFiles>0)
// tt << "<a doxygen=\"_doc:\" href=\"/files.html\">File list</a> ";
// if (includeFiles.count()>0)
// tt << "<a doxygen=\"_doc:\" href=\"/headers.html\">Header files</a> ";
// if (documentedMembers>0)
// tt << "<a doxygen=\"_doc:\" href=\"/functions.html\">Compound Members</a> ";
// if (documentedFunctions>0)
// tt << "<a doxygen=\"_doc:\" href=\"/globals.html\">File Members</a> ";
// if (pageList.count()>0)
// tt << "<a doxygen=\"_doc:\" href=\"/pages.html\">Related Pages</a> ";
// if (exampleList.count()>0)
// tt << "<a doxygen=\"_doc:\" href=\"/examples.html\">Examples</a> ";
// if (searchEngineFlag)
// tt << "<a doxygen=\"_cgi:\" href=\"\">Search</a>";
// tt << endl << "</center><hr>" << endl;
// }
// }
// f.close();
//
// f.setName(htmlOutputDir+"/footer.html");
// if (f.open(IO_WriteOnly))
// {
// QTextStream tt(&f);
// if (footer.length()==0)
// {
// tt << "<hr><address><small>Generated at " << dateToString(TRUE);
// if (projectName.length()>0) tt << " for " << projectName;
// tt << " by <a href=\"http://www.stack.nl/~dimitri/doxygen/index.html\">"
// "doxygen</a> written by <a href="
// "\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>, © "
// "1997-1999</small></address>\n</body>\n</html>\n";
// }
// else
// {
// tt << footer;
// }
// }
// f.close();
//}
void
HtmlGenerator
::
startFile
(
const
char
*
name
,
const
char
*
title
,
bool
external
)
{
QString
fileName
=
name
;
lastTitle
=
title
;
if
(
fileName
.
right
(
5
)
!=
".html"
)
fileName
+=
".html"
;
startPlainFile
(
fileName
);
if
(
header
.
length
()
==
0
)
...
...
@@ -139,34 +72,14 @@ void HtmlGenerator::startFile(const char *name,const char *title,bool external)
}
else
{
t
<<
header
;
}
// if (!noIndexFlag)
// {
// t << "<center>";
// if (documentedGroups>0)
// t << "<a href=\"modules.html\">Modules</a> ";
// if (hierarchyClasses>0)
// t << "<a href=\"hierarchy.html\">Class hierarchy</a> ";
// if (annotatedClasses>0)
// t << "<a href=\"annotated.html\">Compound list</a> ";
// if (documentedFiles>0)
// t << "<a href=\"files.html\">File list</a> ";
// if (includeFiles.count()>0)
// t << "<a href=\"headers.html\">Header files</a> ";
// if (documentedMembers>0)
// t << "<a href=\"functions.html\">Compound Members</a> ";
// if (documentedFunctions>0)
// t << "<a href=\"globals.html\">File Members</a> ";
// if (pageList.count()>0)
// t << "<a href=\"pages.html\">Related Pages</a> ";
// if (exampleList.count()>0)
// t << "<a href=\"examples.html\">Examples</a> ";
// if (searchEngineFlag)
// t << "<a doxygen=\"_cgi:\" href=\"\">Search</a>";
// t << endl << "</center><hr>" << endl;
// }
t
<<
substitute
(
substitute
(
substitute
(
header
,
"$title"
,
lastTitle
),
"$datetime"
,
dateToString
(
TRUE
)
),
"$date"
,
dateToString
(
FALSE
)
);
}
}
void
HtmlGenerator
::
startQuickIndexItem
(
const
char
*
s
,
const
char
*
l
)
...
...
@@ -189,7 +102,13 @@ void HtmlGenerator::writeFooter(int part,bool external)
if
(
footer
.
length
()
==
0
)
t
<<
"<hr><address><small>"
;
else
t
<<
footer
;
t
<<
substitute
(
substitute
(
substitute
(
footer
,
"$title"
,
lastTitle
),
"$datetime"
,
dateToString
(
TRUE
)
),
"$date"
,
dateToString
(
FALSE
)
);
break
;
case
1
:
if
(
footer
.
length
()
==
0
)
...
...
@@ -219,24 +138,6 @@ void HtmlGenerator::writeFooter(int part,bool external)
void
HtmlGenerator
::
endFile
()
{
// if (footer.length()==0)
// {
// t << "<hr><address><small>Generated at " << dateToString(TRUE);
// if (projectName.length()>0)
// {
// t << " for ";
// docify(projectName);
// }
// t << " by <a href=\"http://www.stack.nl/~dimitri/doxygen/index.html\">"
// "<img src=\"doxygen.gif\" alt=\"doxygen\" align=center border=0 "
// "width=118 height=53></a> written by <a href="
// "\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>, © "
// "1997-1999</small></address>\n</body>\n</html>\n";
// }
// else
// {
// t << footer;
// }
endPlainFile
();
}
...
...
@@ -250,45 +151,6 @@ void HtmlGenerator::endProjectNumber()
t
<<
"</h3>"
;
}
//void HtmlGenerator::writeIndex()
//{
// startFile("index.html","Main Index");
// t << "<h1 align=center>";
// docify(projectName);
// t << " Documentation</h1>"
// << "<p>" << endl << "<p>" << endl;
// if (!projectNumber.isEmpty())
// {
// t << "<h3 align=center>";
// docify(projectNumber);
// t << "</h3>\n<p>\n<p>\n";
// }
// if (noIndexFlag)
// {
// t << "<ul>" << endl;
// if (hierarchyClasses>0)
// t << "<li><a href=\"hierarchy.html\">Class hierarchy</a>" << endl;
// if (annotatedClasses>0)
// t << "<li><a href=\"annotated.html\">Compound list</a>" << endl;
// if (documentedFiles>0)
// t << "<li><a href=\"files.html\">File list</a>" << endl;
// if (includeFiles.count()>0)
// t << "<li><a href=\"headers.html\">Header files</a>" << endl;
// if (documentedMembers>0)
// t << "<li><a href=\"functions.html\">Compound Members</a>" << endl;
// if (documentedFunctions>0)
// t << "<li><a href=\"globals.html\">File Members</a>" << endl;
// if (pageList.count()>0)
// t << "<li><a href=\"pageList.html\">Related Pages</a>" << endl;
// if (exampleList.count()>0)
// t << "<li><a href=\"examples.html\">Examples</a>" << endl;
// if (searchEngineFlag)
// t << "<li><a doxygen=\"_cgi:\" href=\"\">Search</a>" << endl;
// t << "</ul>" << endl;
// }
// endFile();
//}
void
HtmlGenerator
::
writeStyleInfo
(
int
part
)
{
if
(
part
==
0
)
...
...
@@ -414,9 +276,9 @@ void HtmlGenerator::writeSectionRef(const char *name,const char *lab,
{
QString
refName
=
name
;
if
(
refName
.
right
(
5
)
!=
".html"
)
refName
+=
".html"
;
t
<<
"
"
<a href=
\"
"
<<
refName
<<
"#"
<<
lab
<<
"
\"
>"
;
t
<<
"<a href=
\"
"
<<
refName
<<
"#"
<<
lab
<<
"
\"
>"
;
docify
(
title
);
t
<<
"</a>
"
"
;
t
<<
"</a>"
;
}
void
HtmlGenerator
::
writeSectionRefItem
(
const
char
*
name
,
const
char
*
lab
,
...
...
@@ -429,12 +291,12 @@ void HtmlGenerator::writeSectionRefItem(const char *name,const char *lab,
t
<<
"</a>"
;
}
//void HtmlGenerator::docify(const char *str)
//{
// docifyStatic(t,str);
//}
void
HtmlGenerator
::
writeSectionRefAnchor
(
const
char
*
name
,
const
char
*
lab
,
const
char
*
title
)
{
writeSectionRef
(
name
,
lab
,
title
);
}
//void HtmlGenerator::docifyStatic(QTextStream &t,const char *str)
void
HtmlGenerator
::
docify
(
const
char
*
str
)
{
if
(
str
)
...
...
@@ -510,3 +372,121 @@ void HtmlGenerator::writeFormula(const char *n,const char *text)
t
<<
"<img align=
\"
top
\"
src=
\"
"
<<
n
<<
"
\"
>"
<<
endl
;
if
(
text
&&
text
[
0
]
==
'\\'
)
t
<<
"</center></p>"
<<
endl
;
}
void
HtmlGenerator
::
startMemberList
()
{
if
(
htmlAlignMemberFlag
)
{
//t << endl << "<p><table border=0 cellspacing=2 cellpadding=0>" << endl;
}
else
{
t
<<
"<ul>"
<<
endl
;
}
}
void
HtmlGenerator
::
endMemberList
()
{
if
(
htmlAlignMemberFlag
)
{
//t << "</table>" << endl;
}
else
{
t
<<
"</ul>"
<<
endl
;
}
}
void
HtmlGenerator
::
startMemberItem
()
{
if
(
htmlAlignMemberFlag
)
{
t
<<
"<tr><td align=right valign=top>"
;
}
else
{
t
<<
"<li>"
;
}
}
void
HtmlGenerator
::
insertMemberAlign
()
{
if
(
htmlAlignMemberFlag
)
{
t
<<
"</td><td valign=top>"
;
}
}
void
HtmlGenerator
::
endMemberItem
()
{
if
(
htmlAlignMemberFlag
)
{
t
<<
"</td></tr>"
;
}
t
<<
endl
;
}
void
HtmlGenerator
::
startMemberDescription
()
{
if
(
htmlAlignMemberFlag
)
{
t
<<
"<tr><td></td><td><font size=-1><em>"
;
}
else
{
t
<<
"<dl class=
\"
el
\"
><dd><font size=-1><em>"
;
}
}
void
HtmlGenerator
::
endMemberDescription
()
{
if
(
htmlAlignMemberFlag
)
{
t
<<
"</em></font><br><br></td></tr>"
<<
endl
;
}
else
{
t
<<
"</em></font></dl>"
;
}
}
void
HtmlGenerator
::
startMemberSections
()
{
if
(
htmlAlignMemberFlag
)
{
t
<<
"<table border=0 cellpadding=0 cellspacing=1>"
<<
endl
;
}
}
void
HtmlGenerator
::
endMemberSections
()
{
if
(
htmlAlignMemberFlag
)
{
t
<<
"</table>"
<<
endl
;
}
}
void
HtmlGenerator
::
startMemberHeader
()
{
if
(
htmlAlignMemberFlag
)
{
t
<<
"<tr><td colspan=2><br><h2>"
;
}
else
{
startGroupHeader
();
}
}
void
HtmlGenerator
::
endMemberHeader
()
{
if
(
htmlAlignMemberFlag
)
{
t
<<
"</h2></td></tr>"
<<
endl
;
}
else
{
endGroupHeader
();
}
}
src/htmlgen.h
View file @
e04496cb
...
...
@@ -81,18 +81,23 @@ class HtmlGenerator : public OutputGenerator
void
endGroupHeader
();
void
writeListItem
()
{
t
<<
"<li>"
;
}
void
startMemberHeader
()
{
startGroupHeader
();
}
void
endMemberHeader
()
{
endGroupHeader
();
}
void
startMemberList
()
{
t
<<
"<ul>"
<<
endl
;
}
void
endMemberList
()
{
t
<<
"</ul>"
<<
endl
;
}
void
startMemberItem
()
{
t
<<
"<li>"
;
}
void
endMemberItem
()
{
t
<<
endl
;
}
void
startMemberSections
();
void
endMemberSections
();
void
startMemberHeader
();
void
endMemberHeader
();
void
startMemberList
();
void
endMemberList
();
void
startMemberItem
();
void
insertMemberAlign
();
void
endMemberItem
();
void
startMemberDescription
();
void
endMemberDescription
();
void
writeRuler
()
{
t
<<
"<hr>"
;
}
void
writeAnchor
(
const
char
*
name
)
{
t
<<
"<a name=
\"
"
<<
name
<<
"
\"
></a>"
;
}
void
startCodeFragment
()
{
t
<<
"<div class=
\"
fragment
\"
><pre>"
;
}
void
endCodeFragment
()
{
t
<<
"</
div></pre
>"
;
}
void
endCodeFragment
()
{
t
<<
"</
pre></div
>"
;
}
void
writeBoldString
(
const
char
*
text
)
{
t
<<
"<b>"
;
docify
(
text
);
t
<<
"</b>"
;
}
void
startEmphasis
()
{
t
<<
"<em>"
;
}
...
...
@@ -111,6 +116,7 @@ class HtmlGenerator : public OutputGenerator
void
writeDoxyAnchor
(
const
char
*
clName
,
const
char
*
anchor
,
const
char
*
name
);
void
writeLatexSpacing
()
{}
void
writeLatexLabel
(
const
char
*
,
const
char
*
)
{}
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
const
char
*
path
,
const
char
*
name
);
void
writeEndAnnoItem
(
const
char
*
)
{
t
<<
endl
;
}
...
...
@@ -139,8 +145,6 @@ class HtmlGenerator : public OutputGenerator
void
writeGrave
(
char
c
)
{
t
<<
"&"
<<
c
<<
"grave;"
;
}
void
writeCirc
(
char
c
)
{
t
<<
"&"
<<
c
<<
"circ;"
;
}
void
writeTilde
(
char
c
)
{
t
<<
"&"
<<
c
<<
"tilde;"
;
}
void
startMemberDescription
()
{
t
<<
"<dl class=
\"
el
\"
><dd><font size=-1><em>"
;
}
void
endMemberDescription
()
{
t
<<
"</em></font></dl>"
;
}
void
startDescList
()
{
t
<<
"<dl compact><dt>"
<<
endl
;
}
void
endDescTitle
()
{}
void
writeDescItem
()
{
t
<<
"<dd>"
<<
endl
;
}
...
...
@@ -148,6 +152,7 @@ class HtmlGenerator : public OutputGenerator
void
writeSection
(
const
char
*
,
const
char
*
,
bool
);
void
writeSectionRef
(
const
char
*
,
const
char
*
,
const
char
*
);
void
writeSectionRefItem
(
const
char
*
,
const
char
*
,
const
char
*
);
void
writeSectionRefAnchor
(
const
char
*
,
const
char
*
,
const
char
*
);
void
addToIndex
(
const
char
*
,
const
char
*
)
{}
void
startIndent
()
{
t
<<
"<div class=
\"
in
\"
>"
<<
endl
;
}
void
endIndent
()
{
t
<<
"</div>"
<<
endl
;
}
...
...
@@ -166,6 +171,7 @@ class HtmlGenerator : public OutputGenerator
private
:
QString
header
;
QString
footer
;
QString
lastTitle
;
HtmlGenerator
&
operator
=
(
const
HtmlGenerator
&
g
);
HtmlGenerator
(
const
HtmlGenerator
&
g
);
...
...
src/index.cpp
View file @
e04496cb
...
...
@@ -147,7 +147,7 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper)
//printf("Passed...\n");
if
(
cd
->
hasDocumentation
()
||
cd
->
isReference
())
{
ol
.
writeIndexItem
(
cd
->
getReference
(),
cd
->
classFil
e
(),
cd
->
name
());
ol
.
writeIndexItem
(
cd
->
getReference
(),
cd
->
getOutputFileBas
e
(),
cd
->
name
());
if
(
cd
->
isReference
())
{
ol
.
startTypewriter
();
...
...
@@ -191,7 +191,7 @@ void writeClassHierarchy(OutputList &ol)
}
if
(
cd
->
hasDocumentation
()
||
cd
->
isReference
())
{
ol
.
writeIndexItem
(
cd
->
getReference
(),
cd
->
classFil
e
(),
cd
->
name
());
ol
.
writeIndexItem
(
cd
->
getReference
(),
cd
->
getOutputFileBas
e
(),
cd
->
name
());
if
(
cd
->
isReference
())
{
ol
.
startTypewriter
();
...
...
@@ -236,9 +236,9 @@ void writeHierarchicalIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"hierarchy"
,
"Hierarchical Index"
);
startTitle
(
ol
);
parse
Doc
(
ol
,
0
,
0
,
projectName
+
" "
+
theTranslator
->
trClassHierarchy
());
parse
Text
(
ol
,
projectName
+
" "
+
theTranslator
->
trClassHierarchy
());
endTitle
(
ol
,
0
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trClassHierarchyDescription
());
parse
Text
(
ol
,
theTranslator
->
trClassHierarchyDescription
());
ol
.
newParagraph
();
writeClassHierarchy
(
ol
);
endFile
(
ol
);
...
...
@@ -247,7 +247,7 @@ void writeHierarchicalIndex(OutputList &ol)
//----------------------------------------------------------------------------
int
countFile
List
()
int
countFile
s
()
{
int
count
=
0
;
FileNameListIterator
fnli
(
inputNameList
);
...
...
@@ -272,10 +272,10 @@ void writeFileIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"files"
,
"File Index"
);
startTitle
(
ol
);
parse
Doc
(
ol
,
0
,
0
,
projectName
+
" "
+
theTranslator
->
trFileList
());
parse
Text
(
ol
,
projectName
+
" "
+
theTranslator
->
trFileList
());
endTitle
(
ol
,
0
);
ol
.
newParagraph
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trFileListDescription
(
extractAllFlag
));
parse
Text
(
ol
,
theTranslator
->
trFileListDescription
(
extractAllFlag
));
ol
.
newParagraph
();
ol
.
startIndexList
();
...
...
@@ -299,7 +299,7 @@ void writeFileIndex(OutputList &ol)
}
ol
.
writeStartAnnoItem
(
"file"
,
fd
->
diskNam
e
(),
fd
->
getOutputFileBas
e
(),
path
,
fd
->
name
()
);
...
...
@@ -314,7 +314,7 @@ void writeFileIndex(OutputList &ol)
else
{
ol
.
startEmphasis
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trNoDescriptionAvailable
());
parse
Text
(
ol
,
theTranslator
->
trNoDescriptionAvailable
());
ol
.
endEmphasis
();
}
ol
.
docify
(
")"
);
...
...
@@ -330,15 +330,14 @@ void writeFileIndex(OutputList &ol)
}
//----------------------------------------------------------------------------
int
countNamespaceList
()
int
countNamespaces
()
{
int
count
=
0
;
NamespaceListIterator
nli
(
namespaceList
);
NamespaceDef
*
nd
;
for
(;(
nd
=
nli
.
current
());
++
nli
)
{
if
(
nd
->
hasDocumentation
())
count
++
;
if
(
!
nd
->
getReference
()
&&
nd
->
hasDocumentation
())
count
++
;
}
return
count
;
}
...
...
@@ -351,19 +350,19 @@ void writeNamespaceIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"namespaces"
,
"Namespace Index"
);
startTitle
(
ol
);
parse
Doc
(
ol
,
0
,
0
,
projectName
+
" "
+
theTranslator
->
trNamespaceList
());
parse
Text
(
ol
,
projectName
+
" "
+
theTranslator
->
trNamespaceList
());
endTitle
(
ol
,
0
);
ol
.
newParagraph
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trNamespaceListDescription
(
extractAllFlag
));
parse
Text
(
ol
,
theTranslator
->
trNamespaceListDescription
(
extractAllFlag
));
ol
.
newParagraph
();
ol
.
startIndexList
();
NamespaceDef
*
nd
=
namespaceList
.
first
();
while
(
nd
)
{
if
(
nd
->
hasDocumentation
())
if
(
!
nd
->
getReference
()
&&
nd
->
hasDocumentation
())
{
ol
.
writeStartAnnoItem
(
"namespace"
,
nd
->
namespaceFil
e
(),
0
,
nd
->
name
());
ol
.
writeStartAnnoItem
(
"namespace"
,
nd
->
getOutputFileBas
e
(),
0
,
nd
->
name
());
ol
.
docify
(
" ("
);
if
(
nd
->
briefDescription
())
{
...
...
@@ -375,7 +374,7 @@ void writeNamespaceIndex(OutputList &ol)
else
{
ol
.
startEmphasis
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trNoDescriptionAvailable
());
parse
Text
(
ol
,
theTranslator
->
trNoDescriptionAvailable
());
ol
.
endEmphasis
();
}
ol
.
docify
(
")"
);
...
...
@@ -433,7 +432,7 @@ void writeAnnotatedClassList(OutputList &ol)
case
ClassDef
:
:
Union
:
type
=
"union"
;
break
;
default:
type
=
"unknown"
;
break
;
// an error
}
ol
.
writeStartAnnoItem
(
type
,
cd
->
classFil
e
(),
0
,
cd
->
name
());
ol
.
writeStartAnnoItem
(
type
,
cd
->
getOutputFileBas
e
(),
0
,
cd
->
name
());
ol
.
docify
(
" ("
);
if
(
cd
->
briefDescription
())
{
...
...
@@ -445,7 +444,7 @@ void writeAnnotatedClassList(OutputList &ol)
else
{
ol
.
startEmphasis
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trNoDescriptionAvailable
());
parse
Text
(
ol
,
theTranslator
->
trNoDescriptionAvailable
());
ol
.
endEmphasis
();
}
ol
.
docify
(
")"
);
...
...
@@ -466,9 +465,9 @@ void writeAnnotatedIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"annotated"
,
"Annotated Index"
);
startTitle
(
ol
);
parse
Doc
(
ol
,
0
,
0
,
projectName
+
" "
+
theTranslator
->
trCompoundList
());
parse
Text
(
ol
,
projectName
+
" "
+
theTranslator
->
trCompoundList
());
endTitle
(
ol
,
0
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trCompoundListDescription
());
parse
Text
(
ol
,
theTranslator
->
trCompoundListDescription
());
writeAnnotatedClassList
(
ol
);
endFile
(
ol
);
ol
.
enable
(
OutputGenerator
::
Man
);
...
...
@@ -522,7 +521,7 @@ void writeMemberList(OutputList &ol)
ol
.
docify
(
": "
);
else
ol
.
docify
(
", "
);
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
classFil
e
(),
md
->
anchor
(),
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBas
e
(),
md
->
anchor
(),
cd
->
name
());
count
++
;
prevName
=
cd
->
name
();
...
...
@@ -537,7 +536,7 @@ void writeMemberList(OutputList &ol)
//----------------------------------------------------------------------------
int
count
MemberList
()
int
count
ClassMembers
()
{
int
count
=
0
;
MemberName
*
mn
=
memberNameList
.
first
();
...
...
@@ -575,9 +574,9 @@ void writeMemberIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Latex
);
startFile
(
ol
,
"functions"
,
"Compound Member Index"
);
startTitle
(
ol
);
parse
Doc
(
ol
,
0
,
0
,
projectName
+
" "
+
theTranslator
->
trCompoundMembers
());
parse
Text
(
ol
,
projectName
+
" "
+
theTranslator
->
trCompoundMembers
());
endTitle
(
ol
,
0
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trCompoundMembersDescription
(
extractAllFlag
));
parse
Text
(
ol
,
theTranslator
->
trCompoundMembersDescription
(
extractAllFlag
));
writeMemberList
(
ol
);
endFile
(
ol
);
ol
.
enable
(
OutputGenerator
::
Latex
);
...
...
@@ -586,7 +585,7 @@ void writeMemberIndex(OutputList &ol)
//----------------------------------------------------------------------------
void
writeF
unction
List
(
OutputList
&
ol
)
void
writeF
ileMember
List
(
OutputList
&
ol
)
{
ol
.
startItemList
();
MemberName
*
mn
=
functionNameList
.
first
();
...
...
@@ -639,7 +638,7 @@ void writeFunctionList(OutputList &ol)
//if ((s=baseName.findRev("/"))!=-1)
// baseName=baseName.right(baseName.length()-s-1);
ol
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
diskNam
e
(),
md
->
anchor
(),
baseName
);
fd
->
getOutputFileBas
e
(),
md
->
anchor
(),
baseName
);
count
++
;
prevName
=
fd
->
name
();
}
...
...
@@ -653,7 +652,89 @@ void writeFunctionList(OutputList &ol)
//----------------------------------------------------------------------------
int
countFunctionList
()
void
writeNamespaceMemberList
(
OutputList
&
ol
)
{
ol
.
startItemList
();
MemberName
*
mn
=
functionNameList
.
first
();
while
(
mn
)
{
MemberDef
*
md
=
mn
->
first
();
bool
found
=
FALSE
;
while
(
md
&&
!
found
)
{
NamespaceDef
*
nd
=
md
->
getNamespace
();
if
(
nd
&&
nd
->
hasDocumentation
()
&&
!
md
->
isReference
()
&&
md
->
hasDocumentation
()
&&
!
md
->
name
().
isEmpty
()
&&
md
->
name
()[
0
]
!=
'@'
)
found
=
TRUE
;
else
md
=
mn
->
next
();
}
if
(
found
)
// member is documented and in a documented namespace
{
ol
.
writeListItem
();
ol
.
docify
(
md
->
name
());
if
(
md
->
isFunction
())
ol
.
docify
(
"()"
);
ol
.
writeString
(
"
\n
"
);
int
count
=
0
;
md
=
mn
->
first
();
QString
prevName
;
while
(
md
)
{
NamespaceDef
*
nd
=
md
->
getNamespace
();
if
(
nd
&&
nd
->
hasDocumentation
()
&&
!
md
->
isReference
()
&&
md
->
hasDocumentation
()
&&
!
md
->
name
().
isEmpty
()
&&
md
->
name
()[
0
]
!=
'@'
)
{
if
(
count
==
0
)
ol
.
docify
(
": "
);
else
ol
.
docify
(
", "
);
ol
.
writeObjectLink
(
nd
->
getReference
(),
nd
->
getOutputFileBase
(),
md
->
anchor
(),
nd
->
name
());
count
++
;
}
md
=
mn
->
next
();
}
}
mn
=
functionNameList
.
next
();
}
ol
.
endItemList
();
}
//----------------------------------------------------------------------------
int
countNamespaceMembers
()
{
int
count
=
0
;
MemberName
*
mn
=
functionNameList
.
first
();
while
(
mn
)
{
MemberDef
*
md
=
mn
->
first
();
bool
found
=
FALSE
;
while
(
md
&&
!
found
)
{
if
(
md
->
getNamespace
()
&&
!
md
->
isReference
()
&&
md
->
hasDocumentation
()
&&
!
md
->
name
().
isEmpty
()
&&
md
->
name
()[
0
]
!=
'@'
)
found
=
TRUE
;
else
md
=
mn
->
next
();
}
if
(
found
)
count
++
;
mn
=
functionNameList
.
next
();
}
return
count
;
}
//----------------------------------------------------------------------------
int
countFileMembers
()
{
int
count
=
0
;
MemberName
*
mn
=
functionNameList
.
first
();
...
...
@@ -665,7 +746,7 @@ int countFunctionList()
while
(
md
&&
!
found
)
{
if
(
!
md
->
isReference
()
&&
md
->
hasDocumentation
()
&&
md
->
name
()[
0
]
!=
'@'
&&
!
md
->
name
().
isEmpty
()
&&
md
->
name
()[
0
]
!=
'@'
&&
(((
fd
=
md
->
getFileDef
())
&&
fd
->
hasDocumentation
())
||
((
fd
=
md
->
getFileDec
())
&&
fd
->
hasDocumentation
())
...
...
@@ -683,17 +764,35 @@ int countFunctionList()
//----------------------------------------------------------------------------
void
writeF
unction
Index
(
OutputList
&
ol
)
void
writeF
ileMember
Index
(
OutputList
&
ol
)
{
if
(
documentedFunctions
==
0
)
return
;
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Latex
);
startFile
(
ol
,
"globals"
,
"File Member Index"
);
startTitle
(
ol
);
parseDoc
(
ol
,
0
,
0
,
projectName
+
" "
+
theTranslator
->
trFileMembers
());
parseText
(
ol
,
projectName
+
" "
+
theTranslator
->
trFileMembers
());
endTitle
(
ol
,
0
);
parseText
(
ol
,
theTranslator
->
trFileMembersDescription
(
extractAllFlag
));
writeFileMemberList
(
ol
);
endFile
(
ol
);
ol
.
enable
(
OutputGenerator
::
Latex
);
ol
.
enable
(
OutputGenerator
::
Man
);
}
//----------------------------------------------------------------------------
void
writeNamespaceMemberIndex
(
OutputList
&
ol
)
{
if
(
documentedNamespaceMembers
==
0
)
return
;
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Latex
);
startFile
(
ol
,
"namespacemembers"
,
"Namespace Member Index"
);
startTitle
(
ol
);
parseText
(
ol
,
projectName
+
" "
+
theTranslator
->
trNamespaceMembers
());
endTitle
(
ol
,
0
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trFileMembers
Description
(
extractAllFlag
));
write
Function
List
(
ol
);
parse
Text
(
ol
,
theTranslator
->
trNamespaceMember
Description
(
extractAllFlag
));
write
NamespaceMember
List
(
ol
);
endFile
(
ol
);
ol
.
enable
(
OutputGenerator
::
Latex
);
ol
.
enable
(
OutputGenerator
::
Man
);
...
...
@@ -736,9 +835,9 @@ void writeHeaderIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Latex
);
startFile
(
ol
,
"headers"
,
"Header File Index"
);
startTitle
(
ol
);
parse
Doc
(
ol
,
0
,
0
,
projectName
+
" "
+
theTranslator
->
trHeaderFiles
());
parse
Text
(
ol
,
projectName
+
" "
+
theTranslator
->
trHeaderFiles
());
endTitle
(
ol
,
0
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trHeaderFilesDescription
());
parse
Text
(
ol
,
theTranslator
->
trHeaderFilesDescription
());
writeHeaderFileList
(
ol
);
endFile
(
ol
);
ol
.
enable
(
OutputGenerator
::
Latex
);
...
...
@@ -753,9 +852,9 @@ void writeExampleIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"examples"
,
"Example Index"
);
startTitle
(
ol
);
parse
Doc
(
ol
,
0
,
0
,
projectName
+
" "
+
theTranslator
->
trExamples
());
parse
Text
(
ol
,
projectName
+
" "
+
theTranslator
->
trExamples
());
endTitle
(
ol
,
0
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trExamplesDescription
());
parse
Text
(
ol
,
theTranslator
->
trExamplesDescription
());
ol
.
startIndexList
();
PageInfo
*
pi
=
exampleList
.
first
();
while
(
pi
)
...
...
@@ -788,18 +887,25 @@ void writePageIndex(OutputList &ol)
startTitle
(
ol
);
ol
.
docify
(
projectName
+
" "
+
theTranslator
->
trRelatedPages
());
endTitle
(
ol
,
0
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trRelatedPagesDescription
());
parse
Text
(
ol
,
theTranslator
->
trRelatedPagesDescription
());
ol
.
startIndexList
();
PageInfo
*
pi
=
pageList
.
first
();
while
(
pi
)
{
QString
pageName
;
QString
pageName
,
pageTitle
;
if
(
caseSensitiveNames
)
pageName
=
pi
->
name
.
copy
();
else
pageName
=
pi
->
name
.
lower
();
if
(
pi
->
title
.
isEmpty
())
pageTitle
=
pi
->
name
;
else
pageTitle
=
pi
->
title
;
ol
.
writeListItem
();
ol
.
writeObjectLink
(
0
,
pageName
,
0
,
p
i
->
nam
e
);
ol
.
writeObjectLink
(
0
,
pageName
,
0
,
p
ageTitl
e
);
ol
.
writeString
(
"
\n
"
);
pi
=
pageList
.
next
();
}
...
...
@@ -810,7 +916,7 @@ void writePageIndex(OutputList &ol)
//----------------------------------------------------------------------------
int
countGroup
List
()
int
countGroup
s
()
{
int
count
=
0
;
GroupListIterator
gli
(
groupList
);
...
...
@@ -835,7 +941,7 @@ void writeGroupList(OutputList &ol)
if
(
gd
->
countMembers
()
>
0
)
{
ol
.
startDescItem
();
ol
.
startTextLink
(
gd
->
g
roupFil
e
(),
0
);
ol
.
startTextLink
(
gd
->
g
etOutputFileBas
e
(),
0
);
parseDoc
(
ol
,
0
,
0
,
gd
->
groupTitle
());
ol
.
endTextLink
();
ol
.
endDescItem
();
...
...
@@ -854,9 +960,9 @@ void writeGroupIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"modules"
,
"Module Index"
);
startTitle
(
ol
);
parse
Doc
(
ol
,
0
,
0
,
projectName
+
" "
+
theTranslator
->
trModules
());
parse
Text
(
ol
,
projectName
+
" "
+
theTranslator
->
trModules
());
endTitle
(
ol
,
0
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trModulesDescription
());
parse
Text
(
ol
,
theTranslator
->
trModulesDescription
());
writeGroupList
(
ol
);
endFile
(
ol
);
ol
.
enable
(
OutputGenerator
::
Man
);
...
...
@@ -880,7 +986,7 @@ void writeIndex(OutputList &ol)
ol
.
startFile
(
"index"
,
"Main Index"
,
FALSE
);
if
(
!
noIndexFlag
)
writeQuickLinks
(
ol
,
TRUE
);
ol
.
startTitleHead
();
parse
Doc
(
ol
,
0
,
0
,
projPrefix
+
theTranslator
->
trDocumentation
());
parse
Text
(
ol
,
projPrefix
+
theTranslator
->
trDocumentation
());
ol
.
endTitleHead
(
0
);
ol
.
newParagraph
();
if
(
!
projectNumber
.
isEmpty
())
...
...
@@ -897,7 +1003,7 @@ void writeIndex(OutputList &ol)
ol
.
enable
(
OutputGenerator
::
Latex
);
ol
.
startFile
(
"refman"
,
0
,
FALSE
);
ol
.
startIndexSection
(
isTitlePageStart
);
parse
Doc
(
ol
,
0
,
0
,
projPrefix
+
theTranslator
->
trReferenceManual
());
parse
Text
(
ol
,
projPrefix
+
theTranslator
->
trReferenceManual
());
if
(
!
projectNumber
.
isEmpty
())
{
ol
.
startProjectNumber
();
...
...
@@ -906,60 +1012,72 @@ void writeIndex(OutputList &ol)
}
ol
.
endIndexSection
(
isTitlePageStart
);
ol
.
startIndexSection
(
isTitlePageAuthor
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trGeneratedBy
());
parse
Text
(
ol
,
theTranslator
->
trGeneratedBy
());
ol
.
endIndexSection
(
isTitlePageAuthor
);
if
(
documentedGroups
>
0
)
{
ol
.
startIndexSection
(
isModuleIndex
);
parse
Doc
(
ol
,
0
,
0
,
projPrefix
+
theTranslator
->
trModuleIndex
());
parse
Text
(
ol
,
projPrefix
+
theTranslator
->
trModuleIndex
());
ol
.
endIndexSection
(
isModuleIndex
);
}
if
(
documentedNamespaces
>
0
)
{
ol
.
startIndexSection
(
isNamespaceIndex
);
parseText
(
ol
,
projPrefix
+
theTranslator
->
trNamespaceIndex
());
ol
.
endIndexSection
(
isNamespaceIndex
);
}
if
(
hierarchyClasses
>
0
)
{
ol
.
startIndexSection
(
isClassHierarchyIndex
);
parse
Doc
(
ol
,
0
,
0
,
projPrefix
+
theTranslator
->
trHierarchicalIndex
());
parse
Text
(
ol
,
projPrefix
+
theTranslator
->
trHierarchicalIndex
());
ol
.
endIndexSection
(
isClassHierarchyIndex
);
}
if
(
annotatedClasses
>
0
)
{
ol
.
startIndexSection
(
isCompoundIndex
);
parse
Doc
(
ol
,
0
,
0
,
projPrefix
+
theTranslator
->
trCompoundIndex
());
parse
Text
(
ol
,
projPrefix
+
theTranslator
->
trCompoundIndex
());
ol
.
endIndexSection
(
isCompoundIndex
);
}
if
(
documentedFiles
>
0
)
{
ol
.
startIndexSection
(
isFileIndex
);
parse
Doc
(
ol
,
0
,
0
,
projPrefix
+
theTranslator
->
trFileIndex
());
parse
Text
(
ol
,
projPrefix
+
theTranslator
->
trFileIndex
());
ol
.
endIndexSection
(
isFileIndex
);
}
if
(
documentedGroups
>
0
)
{
ol
.
startIndexSection
(
isModuleDocumentation
);
parse
Doc
(
ol
,
0
,
0
,
projPrefix
+
theTranslator
->
trModuleDocumentation
());
parse
Text
(
ol
,
projPrefix
+
theTranslator
->
trModuleDocumentation
());
ol
.
endIndexSection
(
isModuleDocumentation
);
}
if
(
documentedNamespaces
>
0
)
{
ol
.
startIndexSection
(
isNamespaceDocumentation
);
parseText
(
ol
,
projPrefix
+
theTranslator
->
trNamespaceDocumentation
());
ol
.
endIndexSection
(
isNamespaceDocumentation
);
}
if
(
annotatedClasses
>
0
)
{
ol
.
startIndexSection
(
isClassDocumentation
);
parse
Doc
(
ol
,
0
,
0
,
projPrefix
+
theTranslator
->
trClassDocumentation
());
parse
Text
(
ol
,
projPrefix
+
theTranslator
->
trClassDocumentation
());
ol
.
endIndexSection
(
isClassDocumentation
);
}
if
(
documentedFiles
>
0
)
{
ol
.
startIndexSection
(
isFileDocumentation
);
parse
Doc
(
ol
,
0
,
0
,
projPrefix
+
theTranslator
->
trFileDocumentation
());
parse
Text
(
ol
,
projPrefix
+
theTranslator
->
trFileDocumentation
());
ol
.
endIndexSection
(
isFileDocumentation
);
}
if
(
exampleList
.
count
()
>
0
)
{
ol
.
startIndexSection
(
isExampleDocumentation
);
parse
Doc
(
ol
,
0
,
0
,
projPrefix
+
theTranslator
->
trExampleDocumentation
());
parse
Text
(
ol
,
projPrefix
+
theTranslator
->
trExampleDocumentation
());
ol
.
endIndexSection
(
isExampleDocumentation
);
}
if
(
pageList
.
count
()
>
0
)
{
ol
.
startIndexSection
(
isPageDocumentation
);
parse
Doc
(
ol
,
0
,
0
,
projPrefix
+
theTranslator
->
trPageDocumentation
());
parse
Text
(
ol
,
projPrefix
+
theTranslator
->
trPageDocumentation
());
ol
.
endIndexSection
(
isPageDocumentation
);
}
ol
.
endIndexSection
(
isEndIndex
);
...
...
src/index.h
View file @
e04496cb
...
...
@@ -25,10 +25,12 @@ enum IndexSections
isTitlePageStart
,
isTitlePageAuthor
,
isModuleIndex
,
isNamespaceIndex
,
isClassHierarchyIndex
,
isCompoundIndex
,
isFileIndex
,
isModuleDocumentation
,
isNamespaceDocumentation
,
isClassDocumentation
,
isFileDocumentation
,
isExampleDocumentation
,
...
...
@@ -50,16 +52,18 @@ void writeHeaderIndex(OutputList &ol);
void
writeHeaderFileList
(
OutputList
&
ol
);
void
writeExampleIndex
(
OutputList
&
ol
);
void
writePageIndex
(
OutputList
&
ol
);
void
writeF
unction
Index
(
OutputList
&
ol
);
void
writeF
ileMember
Index
(
OutputList
&
ol
);
void
writeGroupIndex
(
OutputList
&
ol
);
void
writeNamespaceIndex
(
OutputList
&
ol
);
void
writeNamespaceMemberIndex
(
OutputList
&
ol
);
int
countClassHierarchy
();
int
count
MemberList
();
int
countF
unctionList
();
int
countFile
List
();
int
countGroup
List
();
int
countNamespace
List
();
int
count
ClassMembers
();
int
countF
ileMembers
();
int
countFile
s
();
int
countGroup
s
();
int
countNamespace
s
();
int
countAnnotatedClasses
();
int
countNamespaceMembers
();
#endif
src/latexgen.cpp
View file @
e04496cb
...
...
@@ -172,6 +172,10 @@ void LatexGenerator::startIndexSection(IndexSections is)
if
(
compactLatexFlag
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
t
<<
"{"
;
//Module Index}\n"
break
;
case
isNamespaceIndex
:
if
(
compactLatexFlag
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
t
<<
"{"
;
//Namespace Index}\"
break
;
case
isClassHierarchyIndex
:
if
(
compactLatexFlag
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
t
<<
"{"
;
//Hierarchical Index}\n"
...
...
@@ -200,17 +204,28 @@ void LatexGenerator::startIndexSection(IndexSections is)
}
}
break
;
case
isNamespaceDocumentation
:
{
NamespaceDef
*
nd
=
namespaceList
.
first
();
bool
found
=
FALSE
;
while
(
nd
&&
!
found
)
{
if
(
nd
->
hasDocumentation
())
{
if
(
compactLatexFlag
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
t
<<
"{"
;
// Namespace Documentation}\n":
found
=
TRUE
;
}
nd
=
namespaceList
.
next
();
}
}
break
;
case
isClassDocumentation
:
{
ClassDef
*
cd
=
classList
.
first
();
bool
found
=
FALSE
;
while
(
cd
&&
!
found
)
{
//if (cd->classFile()[0]!='@' && !cd->getReference() &&
// (cd->hasDocumentation() || !hideClassFlag) &&
// (cd->protection()!=Private || extractPrivateFlag)
// )
if
(
!
cd
->
isReference
()
&&
cd
->
isVisible
())
{
if
(
compactLatexFlag
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
...
...
@@ -282,6 +297,9 @@ void LatexGenerator::endIndexSection(IndexSections is)
case
isModuleIndex
:
t
<<
"}
\n\\
input{modules}
\n
"
;
break
;
case
isNamespaceIndex
:
t
<<
"}
\n\\
input{namespaces}
\n
"
;
break
;
case
isClassHierarchyIndex
:
t
<<
"}
\n\\
input{hierarchy}
\n
"
;
break
;
...
...
@@ -299,7 +317,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
{
if
(
gd
->
hasDocumentation
()
||
gd
->
countMembers
()
>
0
)
{
t
<<
"}
\n\\
input{"
<<
gd
->
g
roupFil
e
()
<<
"}
\n
"
;
t
<<
"}
\n\\
input{"
<<
gd
->
g
etOutputFileBas
e
()
<<
"}
\n
"
;
found
=
TRUE
;
}
gd
=
groupList
.
next
();
...
...
@@ -309,12 +327,36 @@ void LatexGenerator::endIndexSection(IndexSections is)
if
(
gd
->
hasDocumentation
()
||
gd
->
countMembers
()
>
0
)
{
if
(
compactLatexFlag
)
t
<<
"
\\
input"
;
else
t
<<
"
\\
include"
;
t
<<
"{"
<<
gd
->
g
roupFil
e
()
<<
"}
\n
"
;
t
<<
"{"
<<
gd
->
g
etOutputFileBas
e
()
<<
"}
\n
"
;
}
gd
=
groupList
.
next
();
}
}
break
;
case
isNamespaceDocumentation
:
{
NamespaceDef
*
nd
=
namespaceList
.
first
();
bool
found
=
FALSE
;
while
(
nd
&&
!
found
)
{
if
(
nd
->
hasDocumentation
()
||
nd
->
countMembers
()
>
0
)
{
t
<<
"}
\n\\
input{"
<<
nd
->
getOutputFileBase
()
<<
"}
\n
"
;
found
=
TRUE
;
}
nd
=
namespaceList
.
next
();
}
while
(
nd
)
{
if
(
nd
->
hasDocumentation
()
||
nd
->
countMembers
()
>
0
)
{
if
(
compactLatexFlag
)
t
<<
"
\\
input"
;
else
t
<<
"
\\
include"
;
t
<<
"{"
<<
nd
->
getOutputFileBase
()
<<
"}
\n
"
;
}
nd
=
namespaceList
.
next
();
}
}
break
;
case
isClassDocumentation
:
{
ClassDef
*
cd
=
classList
.
first
();
...
...
@@ -327,7 +369,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
// )
if
(
!
cd
->
isReference
()
&&
cd
->
isVisible
())
{
t
<<
"}
\n\\
input{"
<<
cd
->
classFil
e
()
<<
"}
\n
"
;
t
<<
"}
\n\\
input{"
<<
cd
->
getOutputFileBas
e
()
<<
"}
\n
"
;
found
=
TRUE
;
}
cd
=
classList
.
next
();
...
...
@@ -341,7 +383,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
if
(
!
cd
->
isReference
()
&&
cd
->
isVisible
())
{
if
(
compactLatexFlag
)
t
<<
"
\\
input"
;
else
t
<<
"
\\
include"
;
t
<<
"{"
<<
cd
->
classFil
e
()
<<
"}
\n
"
;
t
<<
"{"
<<
cd
->
getOutputFileBas
e
()
<<
"}
\n
"
;
}
cd
=
classList
.
next
();
}
...
...
@@ -360,13 +402,13 @@ void LatexGenerator::endIndexSection(IndexSections is)
{
if
(
isFirst
)
{
t
<<
"}
\n\\
input{"
<<
fd
->
diskNam
e
()
<<
"}
\n
"
;
t
<<
"}
\n\\
input{"
<<
fd
->
getOutputFileBas
e
()
<<
"}
\n
"
;
isFirst
=
FALSE
;
}
else
{
if
(
compactLatexFlag
)
t
<<
"
\\
input"
;
else
t
<<
"
\\
include"
;
t
<<
"{"
<<
fd
->
diskNam
e
()
<<
"}
\n
"
;
t
<<
"{"
<<
fd
->
getOutputFileBas
e
()
<<
"}
\n
"
;
}
}
fd
=
fn
->
next
();
...
...
@@ -670,6 +712,11 @@ void LatexGenerator::writeDoxyAnchor(const char *clname,const char *anchor,const
t
<<
"}"
<<
endl
;
}
void
LatexGenerator
::
writeLatexLabel
(
const
char
*
clName
,
const
char
*
anchor
)
{
writeDoxyAnchor
(
clName
,
anchor
,
0
);
}
void
LatexGenerator
::
addToIndex
(
const
char
*
s1
,
const
char
*
s2
)
{
if
(
s1
)
...
...
@@ -709,6 +756,15 @@ void LatexGenerator::writeSectionRefItem(const char *,const char *lab,
t
<<
"}{
\\
ref{"
<<
lab
<<
"}}"
<<
endl
;
}
void
LatexGenerator
::
writeSectionRefAnchor
(
const
char
*
,
const
char
*
lab
,
const
char
*
title
)
{
startBold
();
docify
(
title
);
endBold
();
t
<<
" (p.
\\
pageref{"
<<
lab
<<
"})"
<<
endl
;
}
//void LatexGenerator::docify(const char *str)
//{
// docifyStatic(t,str);
...
...
src/latexgen.h
View file @
e04496cb
...
...
@@ -79,17 +79,20 @@ class LatexGenerator : public OutputGenerator
void
endGroupHeader
();
void
writeListItem
()
{
t
<<
"
\\
item "
<<
endl
;
}
void
startMemberSections
()
{}
void
endMemberSections
()
{}
void
startMemberHeader
()
{
startGroupHeader
();
}
void
endMemberHeader
()
{
endGroupHeader
();
}
void
startMemberList
()
{
t
<<
"
\\
begin{CompactItemize}"
<<
endl
;
}
void
endMemberList
()
{
t
<<
"
\\
end{CompactItemize}"
<<
endl
;
}
void
startMemberItem
()
{
t
<<
"
\\
item "
<<
endl
;
}
void
endMemberItem
()
{
t
<<
endl
;
}
void
insertMemberAlign
()
{}
void
writeRuler
()
{
t
<<
"
\\
vspace{0.4cm}
\\
hrule
\\
vspace{0.2cm}"
;
}
void
writeAnchor
(
const
char
*
)
{
}
void
writeAnchor
(
const
char
*
name
)
{
t
<<
"
\\
label{"
<<
name
<<
"}"
<<
endl
;
}
void
startCodeFragment
()
{
t
<<
"
\\
small
\\
begin{verbatim}"
;
}
void
endCodeFragment
()
{
t
<<
"
\\
end{verbatim}
\\
normalsize "
;
}
void
endCodeFragment
()
{
t
<<
"
\\
end{verbatim}
\\
normalsize "
<<
endl
;
}
void
writeBoldString
(
const
char
*
text
)
{
t
<<
"{
\\
bf "
;
docify
(
text
);
t
<<
"}"
;
}
void
startEmphasis
()
{
t
<<
"{
\\
em "
;
}
...
...
@@ -99,13 +102,14 @@ class LatexGenerator : public OutputGenerator
void
startDescription
()
{
t
<<
"
\\
begin{description}"
<<
endl
;
}
void
endDescription
()
{
t
<<
"
\\
end{description}"
<<
endl
;
}
void
startDescItem
()
{
t
<<
"
\\
item["
;
}
void
endDescItem
()
{
t
<<
"]"
;
}
void
endDescItem
()
{
t
<<
"]"
<<
endl
;
}
void
lineBreak
()
{
t
<<
"
\\
par
\n
"
;
}
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
);
void
endMemberDoc
()
{
t
<<
"}"
;
}
void
writeDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
);
void
writeChar
(
char
c
);
void
writeLatexSpacing
()
{
t
<<
"
\\
hspace{0.3cm}"
;
}
void
writeLatexLabel
(
const
char
*
scope
,
const
char
*
anchor
);
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
const
char
*
path
,
const
char
*
name
);
void
writeEndAnnoItem
(
const
char
*
name
);
...
...
@@ -148,11 +152,12 @@ class LatexGenerator : public OutputGenerator
void
endMemberDescription
()
{
t
<<
"
\\
item
\\
end{CompactList}"
;
}
void
startDescList
()
{
t
<<
"
\\
begin{Desc}
\\
item["
;
}
void
endDescTitle
()
{
t
<<
"]"
;
}
void
writeDescItem
()
{
t
<<
"
\\
par
"
;
}
void
writeDescItem
()
{
t
<<
"
\\
par
"
<<
endl
;
}
void
endDescList
()
{
t
<<
"
\\
end{Desc}"
;
}
void
writeSection
(
const
char
*
,
const
char
*
,
bool
);
void
writeSectionRef
(
const
char
*
,
const
char
*
,
const
char
*
);
void
writeSectionRefItem
(
const
char
*
,
const
char
*
,
const
char
*
);
void
writeSectionRefAnchor
(
const
char
*
,
const
char
*
,
const
char
*
);
void
addToIndex
(
const
char
*
,
const
char
*
);
void
startIndent
()
{}
void
endIndent
()
{}
...
...
src/mangen.cpp
View file @
e04496cb
...
...
@@ -78,7 +78,7 @@ void ManGenerator::startFile(const char *name,const char *,bool)
{
fileName
=
fileName
.
left
(
i
);
}
if
(
fileName
.
right
(
2
)
!=
".3"
)
fileName
+=
".3"
;
if
(
fileName
.
right
(
2
)
!=
manExtension
)
fileName
+=
manExtension
;
startPlainFile
(
fileName
);
firstCol
=
TRUE
;
}
...
...
src/mangen.h
View file @
e04496cb
...
...
@@ -77,8 +77,11 @@ class ManGenerator : public OutputGenerator
void
endTypewriter
()
{
t
<<
"
\\
fR"
;
firstCol
=
FALSE
;
}
void
startGroupHeader
();
void
endGroupHeader
();
void
startMemberSections
()
{}
void
endMemberSections
()
{}
void
startMemberHeader
();
void
endMemberHeader
();
void
insertMemberAlign
()
{}
void
writeListItem
();
void
startMemberList
()
{
t
<<
"
\n
.in +1c"
;
firstCol
=
FALSE
;
}
void
endMemberList
()
{
t
<<
"
\n
.in -1c"
;
firstCol
=
FALSE
;
}
...
...
@@ -107,6 +110,7 @@ class ManGenerator : public OutputGenerator
void
endMemberDoc
()
{}
void
writeDoxyAnchor
(
const
char
*
clName
,
const
char
*
anchor
,
const
char
*
name
);
void
writeLatexSpacing
()
{}
void
writeLatexLabel
(
const
char
*
,
const
char
*
)
{}
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
const
char
*
path
,
const
char
*
name
);
void
writeEndAnnoItem
(
const
char
*
)
{
t
<<
endl
;
firstCol
=
TRUE
;
}
...
...
@@ -144,6 +148,7 @@ class ManGenerator : public OutputGenerator
void
writeSection
(
const
char
*
,
const
char
*
,
bool
)
{}
void
writeSectionRef
(
const
char
*
,
const
char
*
,
const
char
*
)
{}
void
writeSectionRefItem
(
const
char
*
,
const
char
*
,
const
char
*
)
{}
void
writeSectionRefAnchor
(
const
char
*
,
const
char
*
,
const
char
*
)
{}
void
addToIndex
(
const
char
*
,
const
char
*
)
{}
void
startIndent
()
{}
void
endIndent
()
{}
...
...
src/memberdef.cpp
View file @
e04496cb
...
...
@@ -20,6 +20,7 @@
#include "membername.h"
#include "doxygen.h"
#include "util.h"
#include "message.h"
/*! Creates a new member definition.
* Members can be function/variables/enums/etc. inside a class or inside a
...
...
@@ -159,7 +160,7 @@ bool MemberDef::hasExamples()
return
exampleList
->
count
()
>
0
;
}
#if 0
void MemberDef::writeExample(OutputList &ol)
{
Example *e=exampleList->first();
...
...
@@ -177,4 +178,27 @@ void MemberDef::writeExample(OutputList &ol)
}
ol.writeString(".");
}
#endif
QString
MemberDef
::
getOutputFileBase
()
const
{
if
(
classDef
)
{
return
classDef
->
getOutputFileBase
();
}
else
if
(
fileDef
)
{
return
fileDef
->
getOutputFileBase
();
}
else
if
(
fileDec
)
{
return
fileDec
->
getOutputFileBase
();
}
else
if
(
nspace
)
{
return
nspace
->
getOutputFileBase
();
}
warn
(
"Warning: Internal inconsistency: member %s does not belong to any
\n
"
" container!
\n
"
,
name
().
data
());
return
"dummy"
;
}
src/memberdef.h
View file @
e04496cb
...
...
@@ -55,6 +55,7 @@ class MemberDef : public Definition
const
ArgumentList
*
al
);
~
MemberDef
();
QString
getOutputFileBase
()
const
;
const
char
*
declaration
()
const
{
return
decl
;
}
const
char
*
definition
()
const
{
return
def
;
}
const
char
*
typeString
()
const
{
return
type
;
}
...
...
@@ -72,6 +73,7 @@ class MemberDef : public Definition
void
setFileDef
(
FileDef
*
fd
)
{
fileDef
=
fd
;
}
void
setFileDec
(
FileDef
*
fd
)
{
fileDec
=
fd
;
}
void
setAnchor
(
const
char
*
a
)
{
ref
=
a
;
}
void
setProtection
(
Protection
p
)
{
prot
=
p
;
}
FileDef
*
getFileDef
()
{
return
fileDef
;
}
FileDef
*
getFileDec
()
{
return
fileDec
;
}
void
setMemberClass
(
ClassDef
*
cd
)
{
classDef
=
cd
;
}
...
...
@@ -105,8 +107,9 @@ class MemberDef : public Definition
// example related members
bool
addExample
(
const
char
*
anchor
,
const
char
*
name
,
const
char
*
file
);
void
writeExample
(
OutputList
&
ol
);
//
void writeExample(OutputList &ol);
bool
hasExamples
();
ExampleList
*
getExampleList
()
const
{
return
exampleList
;
}
// prototype related members
const
char
*
getDefFile
()
{
return
defFile
;
}
...
...
src/memberlist.cpp
View file @
e04496cb
...
...
@@ -43,7 +43,10 @@ void MemberList::countDecMembers()
if
((
!
hideMemberFlag
||
md
->
hasDocumentation
())
&&
(
!
hideMemberFlag
||
!
md
->
documentation
().
isEmpty
()
||
briefMemDescFlag
||
repeatBriefFlag
)
||
extractAllFlag
)
||
extractAllFlag
||
(
md
->
isEnumerate
()
&&
md
->
hasDocumentedEnumValues
()
)
)
{
switch
(
md
->
memberType
())
...
...
src/namespacedef.cpp
View file @
e04496cb
...
...
@@ -22,12 +22,14 @@
#include "classdef.h"
#include "classlist.h"
#include "memberlist.h"
#include "doxygen.h"
NamespaceDef
::
NamespaceDef
(
const
char
*
name
)
:
Definition
(
name
)
NamespaceDef
::
NamespaceDef
(
const
char
*
name
,
const
char
*
ref
)
:
Definition
(
name
)
{
fileName
=
"namespace_"
+
nameToFile
(
name
);
classList
=
new
ClassList
;
memList
=
new
MemberList
;
reference
=
ref
;
}
NamespaceDef
::~
NamespaceDef
()
...
...
@@ -61,18 +63,21 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
QString
pageTitle
=
name
()
+
" Namespace Reference"
;
startFile
(
ol
,
fileName
,
pageTitle
);
startTitle
(
ol
);
ol
.
docify
(
pageTitle
);
//ol.docify(pageTitle);
parseText
(
ol
,
theTranslator
->
trNamespaceReference
(
name
()));
endTitle
(
ol
,
name
());
if
(
genTagFile
.
length
()
>
0
)
tagFile
<<
"%"
<<
name
()
<<
":
\n
"
;
OutputList
briefOutput
(
&
ol
);
if
(
briefDescription
())
{
parseDoc
(
briefOutput
,
0
,
0
,
briefDescription
());
parseDoc
(
briefOutput
,
name
()
,
0
,
briefDescription
());
ol
+=
briefOutput
;
ol
.
writeString
(
"
\n
"
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
startTextLink
(
0
,
"details"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trMore
());
ol
.
startTextLink
(
0
,
"
_
details"
);
parse
Text
(
ol
,
theTranslator
->
trMore
());
ol
.
endTextLink
();
ol
.
enableAll
();
}
...
...
@@ -81,6 +86,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
ol
.
enable
(
OutputGenerator
::
Man
);
ol
.
writeSynopsis
();
ol
.
startMemberSections
();
if
(
classList
->
count
()
>
0
)
{
ClassDef
*
cd
=
classList
->
first
();
...
...
@@ -92,7 +98,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
if
(
!
found
)
{
ol
.
startMemberHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trCompounds
());
parse
Text
(
ol
,
theTranslator
->
trCompounds
());
ol
.
endMemberHeader
();
ol
.
startMemberList
();
found
=
TRUE
;
...
...
@@ -111,10 +117,11 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
case
ClassDef
:
:
Union
:
ol
.
writeString
(
"union"
);
break
;
}
ol
.
writeString
(
" "
);
ol
.
insertMemberAlign
();
if
(
cd
->
hasDocumentation
())
{
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
classFil
e
(),
cd
->
getOutputFileBas
e
(),
0
,
clName
);
...
...
@@ -133,13 +140,17 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
}
writeMemberDecs
(
ol
,
0
,
this
,
0
,
0
,
0
,
memList
);
ol
.
endMemberSections
();
if
(
!
briefDescription
().
isEmpty
()
||
!
documentation
().
isEmpty
())
{
ol
.
writeRuler
();
ol
.
writeAnchor
(
"details"
);
bool
latexOn
=
ol
.
isEnabled
(
OutputGenerator
::
Latex
);
if
(
latexOn
)
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
writeAnchor
(
"_details"
);
if
(
latexOn
)
ol
.
enable
(
OutputGenerator
::
Latex
);
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trDetailedDescription
());
parse
Text
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
if
(
!
briefDescription
().
isEmpty
())
{
...
...
@@ -148,7 +159,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
}
if
(
!
documentation
().
isEmpty
())
{
parseDoc
(
ol
,
0
,
0
,
documentation
()
+
"
\n
"
);
parseDoc
(
ol
,
name
()
,
0
,
documentation
()
+
"
\n
"
);
ol
.
newParagraph
();
}
}
...
...
@@ -159,7 +170,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trFunctionPrototypeDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trFunctionPrototypeDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
Prototype
);
}
...
...
@@ -168,7 +179,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trTypedefDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trTypedefDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
Typedef
);
}
...
...
@@ -177,7 +188,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trEnumerationTypeDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trEnumerationTypeDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
Enumeration
);
}
...
...
@@ -186,7 +197,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trEnumerationValueDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trEnumerationValueDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
EnumValue
);
}
...
...
@@ -195,7 +206,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trFunctionDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trFunctionDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
Function
);
}
...
...
@@ -204,7 +215,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
{
ol
.
writeRuler
();
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trVariableDocumentation
());
parse
Text
(
ol
,
theTranslator
->
trVariableDocumentation
());
ol
.
endGroupHeader
();
writeMemberDocs
(
ol
,
memList
,
name
(),
MemberDef
::
Variable
);
}
...
...
@@ -212,9 +223,15 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
// write Author section (Man only)
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
startGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trAuthor
());
parse
Text
(
ol
,
theTranslator
->
trAuthor
());
ol
.
endGroupHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trGeneratedAutomatically
(
projectName
));
parse
Text
(
ol
,
theTranslator
->
trGeneratedAutomatically
(
projectName
));
ol
.
enableAll
();
endFile
(
ol
);
}
int
NamespaceDef
::
countMembers
()
{
memList
->
countDocMembers
();
return
memList
->
totalCount
()
+
classList
->
count
();
}
src/namespacedef.h
View file @
e04496cb
...
...
@@ -31,16 +31,20 @@ class MemberDef;
class
NamespaceDef
:
public
Definition
{
public
:
NamespaceDef
(
const
char
*
name
);
NamespaceDef
(
const
char
*
name
,
const
char
*
ref
=
0
);
~
NamespaceDef
();
QString
namespaceFile
()
const
{
return
fileName
;
}
//QString namespaceFile() const { return fileName; }
QString
getOutputFileBase
()
const
{
return
fileName
;
}
void
insertUsedFile
(
const
char
*
fname
);
void
writeDocumentation
(
OutputList
&
ol
);
void
insertClass
(
ClassDef
*
cd
);
void
insertMember
(
MemberDef
*
md
);
void
computeAnchors
();
int
countMembers
();
const
char
*
getReference
()
{
return
reference
;
}
private
:
QString
reference
;
QString
fileName
;
QStrList
files
;
ClassList
*
classList
;
...
...
src/outputgen.h
View file @
e04496cb
...
...
@@ -84,12 +84,15 @@ class OutputGenerator
virtual
void
endGroupHeader
()
=
0
;
virtual
void
writeListItem
()
=
0
;
virtual
void
startMemberSections
()
=
0
;
virtual
void
endMemberSections
()
=
0
;
virtual
void
startMemberHeader
()
=
0
;
virtual
void
endMemberHeader
()
=
0
;
virtual
void
startMemberList
()
=
0
;
virtual
void
endMemberList
()
=
0
;
virtual
void
startMemberItem
()
=
0
;
virtual
void
endMemberItem
()
=
0
;
virtual
void
insertMemberAlign
()
=
0
;
virtual
void
writeRuler
()
=
0
;
virtual
void
writeAnchor
(
const
char
*
name
)
=
0
;
...
...
@@ -103,6 +106,7 @@ class OutputGenerator
virtual
void
endMemberDoc
()
=
0
;
virtual
void
writeDoxyAnchor
(
const
char
*
clName
,
const
char
*
anchor
,
const
char
*
name
)
=
0
;
virtual
void
writeLatexSpacing
()
=
0
;
virtual
void
writeLatexLabel
(
const
char
*
clName
,
const
char
*
anchor
)
=
0
;
virtual
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
const
char
*
path
,
const
char
*
name
)
=
0
;
virtual
void
writeEndAnnoItem
(
const
char
*
name
)
=
0
;
...
...
@@ -144,6 +148,7 @@ class OutputGenerator
virtual
void
writeSection
(
const
char
*
,
const
char
*
,
bool
)
=
0
;
virtual
void
writeSectionRef
(
const
char
*
,
const
char
*
,
const
char
*
)
=
0
;
virtual
void
writeSectionRefItem
(
const
char
*
,
const
char
*
,
const
char
*
)
=
0
;
virtual
void
writeSectionRefAnchor
(
const
char
*
,
const
char
*
,
const
char
*
)
=
0
;
virtual
void
lineBreak
()
=
0
;
virtual
void
addToIndex
(
const
char
*
s1
,
const
char
*
s2
)
=
0
;
virtual
void
startIndent
()
=
0
;
...
...
src/outputlist.h
View file @
e04496cb
...
...
@@ -129,6 +129,10 @@ class OutputList
{
forall
(
&
OutputGenerator
::
endGroupHeader
);
}
void
writeListItem
()
{
forall
(
&
OutputGenerator
::
writeListItem
);
}
void
startMemberSections
()
{
forall
(
&
OutputGenerator
::
startMemberSections
);
}
void
endMemberSections
()
{
forall
(
&
OutputGenerator
::
endMemberSections
);
}
void
startMemberHeader
()
{
forall
(
&
OutputGenerator
::
startMemberHeader
);
}
void
endMemberHeader
()
...
...
@@ -141,6 +145,8 @@ class OutputList
{
forall
(
&
OutputGenerator
::
startMemberItem
);
}
void
endMemberItem
()
{
forall
(
&
OutputGenerator
::
endMemberItem
);
}
void
insertMemberAlign
()
{
forall
(
&
OutputGenerator
::
insertMemberAlign
);
}
void
writeRuler
()
{
forall
(
&
OutputGenerator
::
writeRuler
);
}
void
writeAnchor
(
const
char
*
name
)
...
...
@@ -165,6 +171,8 @@ class OutputList
{
forall
(
&
OutputGenerator
::
writeDoxyAnchor
,
clName
,
anchor
,
name
);
}
void
writeLatexSpacing
()
{
forall
(
&
OutputGenerator
::
writeLatexSpacing
);
}
void
writeLatexLabel
(
const
char
*
scope
,
const
char
*
anchor
)
{
forall
(
&
OutputGenerator
::
writeLatexLabel
,
scope
,
anchor
);
}
void
startDescription
()
{
forall
(
&
OutputGenerator
::
startDescription
);
}
void
endDescription
()
...
...
@@ -251,6 +259,8 @@ class OutputList
{
forall
(
&
OutputGenerator
::
writeSectionRef
,
page
,
lab
,
title
);
}
void
writeSectionRefItem
(
const
char
*
page
,
const
char
*
lab
,
const
char
*
title
)
{
forall
(
&
OutputGenerator
::
writeSectionRefItem
,
page
,
lab
,
title
);
}
void
writeSectionRefAnchor
(
const
char
*
page
,
const
char
*
lab
,
const
char
*
title
)
{
forall
(
&
OutputGenerator
::
writeSectionRefAnchor
,
page
,
lab
,
title
);
}
void
addToIndex
(
const
char
*
s1
,
const
char
*
s2
)
{
forall
(
&
OutputGenerator
::
addToIndex
,
s1
,
s2
);
}
void
writeSynopsis
()
...
...
src/pre.l
View file @
e04496cb
...
...
@@ -1160,11 +1160,11 @@ BN [ \t\r\n]
<SkipCommand>.
<SkipLine>[^/\n]+
<SkipLine>.
<SkipLine
>"//"
{
<SkipLine
,SkipCommand,SkipCPPBlock>"//"
{
lastCPPContext=YY_START;
BEGIN(RemoveCPPComment);
}
<SkipLine
>"/*"
{
<SkipLine
,SkipCommand,SkipCPPBlock>"/*"
{
lastCContext=YY_START;
BEGIN(RemoveCComment);
}
...
...
src/scanner.h
View file @
e04496cb
...
...
@@ -31,4 +31,5 @@ extern void parseDoc(OutputList &ol,const char *clName, const char *memName,
const
QString
&
docString
);
extern
void
parseExample
(
OutputList
&
ol
,
const
QString
&
docString
,
const
char
*
fileName
);
extern
void
parseText
(
OutputList
&
ol
,
const
QString
&
txtString
);
#endif
src/scanner.l
View file @
e04496cb
...
...
@@ -76,6 +76,7 @@ static int lastCodeState;
static int lastAfterDocContext;
static int lastGroupContext;
static int lastFormulaContext;
static int lastAnchorContext;
static int nextDefContext;
static Protection protection;
static Protection baseProt;
...
...
@@ -120,7 +121,8 @@ static char afterDocTerminator;
static int tmpDocType;
static QString sectionLabel;
static QString sectionTitle;
static bool isSubsection;
static SectionInfo::SectionType
sectionType;
static QString funcPtrType;
static QString templateStr;
static QString baseName;
...
...
@@ -184,7 +186,6 @@ static void initParser()
inParBlock = FALSE;
firstSeeArg = FALSE;
javaDocSee = FALSE;
isSubsection = FALSE;
}
//-----------------------------------------------------------------------------
...
...
@@ -532,12 +533,19 @@ static void addSection()
{
//printf("New section pageName=%s label=%s title=%s\n",
// current->name.data(),sectionLabel.data(),sectionTitle.data());
SectionInfo *si=new SectionInfo(current->name,
sectionLabel,sectionTitle,isSubsection);
if (sectionLabel.isEmpty()) return;
if (sectionDict[sectionLabel]==0)
{
SectionInfo *si=new SectionInfo(sectionLabel,sectionTitle,sectionType);
sectionDict.insert(sectionLabel,si);
current->anchors->append(new QString(sectionLabel));
}
else
{
warn("Warning: Duplicate label %s found!\n",sectionLabel.data());
}
}
// Adds a formula text to the list/dictionary of formulas if it was
// not already added. Returns the label of the formula.
static QString addFormula()
...
...
@@ -710,6 +718,7 @@ VAR [vV][aA][rR]
%x MemberSpec
%x MemberSpecSkip
%x SkipVerbatim
%x Text
%x DocScan
%x DocParam
%x DocException
...
...
@@ -742,6 +751,8 @@ VAR [vV][aA][rR]
%x DocVerbInc
%x DocIndexWord
%x DocRef
%x DocRefArg
%x DocRefArgStart
%x DocRefItem
%x DocRefItemName
%x SectionLabel
...
...
@@ -756,6 +767,7 @@ VAR [vV][aA][rR]
%x DocSkipHtmlComment
%x ReadFormulaShort
%x ReadFormulaLong
%x AnchorLabel
%%
...
...
@@ -798,13 +810,13 @@ VAR [vV][aA][rR]
<DocScan>"<!--" { BEGIN(DocSkipHtmlComment); }
<DocSkipHtmlComment>"--"[!]?">" { BEGIN(DocScan); }
<DocSkipHtmlComment>.
<DocScan>"©" { outDoc->writeCopyright(); }
<DocScan>""" { outDoc->writeQuote(); }
<DocScan>"&"[AEIOUYaeiouy]"uml;" { outDoc->writeUmlaut(yytext[1]); }
<DocScan>"&"[AEIOUYaeiouy]"acute;" { outDoc->writeAcute(yytext[1]); }
<DocScan>"&"[AEIOUaeiou]"grave;" { outDoc->writeGrave(yytext[1]); }
<DocScan
>"&"[AEIOUaeiou]"circ;"
{ outDoc->writeCirc(yytext[1]); }
<DocScan
>"&"[ANOano]"tilde;"
{ outDoc->writeTilde(yytext[1]); }
<DocScan
,Text
>"©" { outDoc->writeCopyright(); }
<DocScan
,Text
>""" { outDoc->writeQuote(); }
<DocScan
,Text
>"&"[AEIOUYaeiouy]"uml;" { outDoc->writeUmlaut(yytext[1]); }
<DocScan
,Text
>"&"[AEIOUYaeiouy]"acute;" { outDoc->writeAcute(yytext[1]); }
<DocScan
,Text
>"&"[AEIOUaeiou]"grave;" { outDoc->writeGrave(yytext[1]); }
<DocScan
,Text>"&"[AEIOUaeiou]"circ;"
{ outDoc->writeCirc(yytext[1]); }
<DocScan
,Text>"&"[ANOano]"tilde;"
{ outDoc->writeTilde(yytext[1]); }
<DocScan,DocHtmlScan,DocLatexScan>"$("[a-z_A-Z]+")" {
QString envvar=&yytext[2];
envvar=envvar.left(envvar.length()-1);
...
...
@@ -914,7 +926,7 @@ VAR [vV][aA][rR]
outDoc->writeFormula(formName,formula->getFormulaText());
}
}
<DocIndexWord>[^\n
\t
]+ {
<DocIndexWord>[^\n]+ {
//printf("Adding %s to index\n",yytext);
outDoc->addToIndex(yytext,0);
BEGIN(DocScan);
...
...
@@ -1124,7 +1136,7 @@ VAR [vV][aA][rR]
outDoc->docify(" - ");
BEGIN(DocScan);
}
<DocScan>
("\\"|"@")"section "{ID}"\n"
{
<DocScan>
"\\section "{ID}"\n"
{
QString secName=&yytext[9]; // skip "\section "
secName=secName.left(secName.length()-1); // remove \n
//printf("SectionName %s found\n",secName.data());
...
...
@@ -1132,7 +1144,17 @@ VAR [vV][aA][rR]
if ((sec=sectionDict[secName]))
{
//printf("Title %s\n",sec->title.data());
outDoc->writeSection(sec->label,sec->title,sec->isSubsection);
outDoc->writeSection(sec->label,sec->title,
sec->type==SectionInfo::Subsection);
}
}
<DocScan>"\\anchor "{ID}"\n" {
QString secName=&yytext[8];
secName=secName.left(secName.length()-1);
SectionInfo *sec;
if ((sec=sectionDict[secName]))
{
outDoc->writeAnchor(sec->label);
}
}
<DocScan>"\\ref" {
...
...
@@ -1146,7 +1168,19 @@ VAR [vV][aA][rR]
SectionInfo *sec;
if ((sec=sectionDict[ref]))
{
outDoc->writeSectionRef(sec->pageName,sec->label,sec->title);
QString text;
if (sec->title.isEmpty())
text=sec->label;
else
text=sec->title;
if (sec->type==SectionInfo::Anchor)
{
outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text);
}
else
{
outDoc->writeSectionRef(sec->fileName,sec->label,text);
}
}
else
{
...
...
@@ -1155,6 +1189,35 @@ VAR [vV][aA][rR]
}
BEGIN(DocScan);
}
<DocRefName>{ID}/{B}+"\"" {
sectionRef=yytext;
BEGIN(DocRefArgStart);
}
<DocRefArgStart>"\"" {
BEGIN(DocRefArg);
}
<DocRefArg>[^\"\n]+[\n\"] {
yytext[yyleng-1]='\0';
QString text=substitute(yytext,"\\\\","\\");
SectionInfo *sec;
if ((sec=sectionDict[sectionRef]))
{
if (sec->type==SectionInfo::Anchor)
{
outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text);
}
else
{
outDoc->writeSectionRef(sec->fileName,sec->label,text);
}
}
else
{
warn("Warning: reference to unknown section %s!\n",sectionRef.data());
outDoc->writeBoldString("unknown reference!");
}
BEGIN(DocScan);
}
<DocRefItem>{ID} {
sectionRef=yytext;
BEGIN(DocRefItemName);
...
...
@@ -1163,7 +1226,7 @@ VAR [vV][aA][rR]
SectionInfo *sec;
if ((sec=sectionDict[sectionRef]))
{
outDoc->writeSectionRefItem(sec->
pag
eName,sec->label,yytext);
outDoc->writeSectionRefItem(sec->
fil
eName,sec->label,yytext);
}
else
{
...
...
@@ -1271,6 +1334,10 @@ VAR [vV][aA][rR]
<DocKeyEnd>("\\"|"@")"until"{BN}+ { BEGIN(DocUntilKey); }
<DocKeyEnd>("\\"|"@")"skipline"{BN}+ { BEGIN(DocSkiplineKey); }
<DocKeyEnd>\n
<DocKeyEnd><<EOF>> {
if (!firstLine) outDoc->endCodeFragment();
yyterminate();
}
<DocKeyEnd>. {
unput(*yytext);
if (!firstLine) outDoc->endCodeFragment();
...
...
@@ -1462,7 +1529,7 @@ VAR [vV][aA][rR]
<DocScan>{BN}+ {
outDoc->writeChar(' ');
}
<DocCode,DocEmphasis,DocBold,DocScan>. {
<DocCode,DocEmphasis,DocBold,DocScan
,Text
>. {
outDoc->writeChar(*yytext);
}
<NextSemi>"{" { BEGIN(SkipBlock); }
...
...
@@ -1472,6 +1539,9 @@ VAR [vV][aA][rR]
else
BEGIN( NextSemi ) ;
}
<NextSemi>"'"\\[0-7]{1,3}"'"
<NextSemi>"'"\\."'"
<NextSemi>"'"."'"
<NextSemi>\" {
lastStringContext=NextSemi;
BEGIN(SkipString);
...
...
@@ -1556,6 +1626,9 @@ VAR [vV][aA][rR]
/*
<FindMembers>"inline"
*/
<FindMembers>{BN}+ {
lineCount();
}
<FindMembers>{B}*"static"{BN}+ { //current->type += " static ";
current->stat = TRUE;
lineCount();
...
...
@@ -2081,8 +2154,8 @@ VAR [vV][aA][rR]
}
<MemberSpecSkip>"," { BEGIN(MemberSpec); }
<MemberSpecSkip>";" { unput(';'); BEGIN(MemberSpec); }
<Curly>
\n
{ current->program += yytext ;
yyLineNr++
;
<Curly>
{BN}+
{ current->program += yytext ;
lineCount()
;
}
<Curly>. { current->program += yytext ; }
...
...
@@ -2404,7 +2477,9 @@ VAR [vV][aA][rR]
//BEGIN( FindMembers ) ;
BEGIN( lastCurlyContext ) ;
}
<SkipCurly>\'.\'
<SkipCurly>"'"\\[0-7]{1,3}"'"
<SkipCurly>"'"\\."'"
<SkipCurly>"'"."'"
<SkipCurly>\" {
lastStringContext=SkipCurly;
BEGIN( SkipString );
...
...
@@ -2538,15 +2613,16 @@ VAR [vV][aA][rR]
);
BEGIN( Curly ) ;
}
<Comment>
\n
{ current->program += yytext ;
yyLineNr++
;
<Comment>
{BN}+
{ current->program += yytext ;
lineCount()
;
}
<Comment>"/*" { current->program += yytext ; }
<Comment>"//" { current->program += yytext ; }
<Comment>
. { current->program += *
yytext ; }
<Comment>
[^\n\*]+ { current->program +=
yytext ; }
<Comment>.*"*/" { current->program += yytext ;
BEGIN( Curly ) ;
}
<Comment>. { current->program += *yytext ; }
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator>("//"{B}*)?"/*!" {
removeSlashes=(yytext[1]=='/');
...
...
@@ -2596,7 +2672,7 @@ VAR [vV][aA][rR]
current->inside = current_root->name+"::";
BEGIN( LineDoc );
}
<FindMembers>"extern"{BN}+"\"C"("++")?"\""{BN}
+
("{")?
<FindMembers>"extern"{BN}+"\"C"("++")?"\""{BN}
*
("{")?
<FindMembers>"{" {
current->type.resize(0);
current->name.resize(0);
...
...
@@ -2846,13 +2922,18 @@ VAR [vV][aA][rR]
current->doc+=yytext;
}
<PageDoc>("\\"|"@")"section"{B}+ {
isSubsection=FALSE
;
sectionType=SectionInfo::Section
;
BEGIN(SectionLabel);
}
<PageDoc>("\\"|"@")"subsection"{B}+ {
isSubsection=TRUE
;
sectionType=SectionInfo::Subsection
;
BEGIN(SectionLabel);
}
<Doc,PageDoc,JavaDoc,ClassDoc>("\\"|"@")anchor{B}+ {
lastAnchorContext = YY_START;
sectionType=SectionInfo::Anchor;
BEGIN(AnchorLabel);
}
<Doc,PageDoc,JavaDoc,ClassDoc>"\\\\verbatim"/[^a-z_A-Z0-9] {
current->doc+="\\\\verbatim";
}
...
...
@@ -2861,6 +2942,9 @@ VAR [vV][aA][rR]
current->doc+="\\verbatim";
BEGIN(SkipVerbatim);
}
<Doc,PageDoc,JavaDoc,ClassDoc>"\\addindex"{B}+[^\n]+ {
current->doc+=yytext;
}
<Doc,PageDoc,JavaDoc,ClassDoc>"\\\\code"/[^a-z_A-Z0-9] {
current->doc+="\\\\code";
}
...
...
@@ -2928,7 +3012,13 @@ VAR [vV][aA][rR]
<SkipCode>. {
current->doc+=*yytext;
}
<SectionLabel>[a-z_A-Z0-9]+ {
<AnchorLabel>{ID} {
sectionLabel=yytext;
addSection();
current->doc += "\\anchor "+sectionLabel+"\n";
BEGIN(lastAnchorContext);
}
<SectionLabel>{ID} {
sectionLabel=yytext;
sectionTitle.resize(0);
BEGIN(SectionTitle);
...
...
@@ -3220,15 +3310,18 @@ void scanString(const char *s)
{
const char *oldInputString = inputString;
int oldInputPosition = inputPosition;
int oldRule = YY_START;
YY_BUFFER_STATE oldBuffer = YY_CURRENT_BUFFER;
yy_switch_to_buffer(yy_create_buffer(scanYYin, YY_BUF_SIZE));
inputString = s;
inputPosition = 0;
BEGIN( Text );
scanYYlex();
yy_delete_buffer(YY_CURRENT_BUFFER);
yy_switch_to_buffer(oldBuffer);
inputString = oldInputString;
inputPosition = oldInputPosition;
BEGIN( oldRule );
}
//----------------------------------------------------------------------------
...
...
@@ -3308,6 +3401,7 @@ void parseMain(Entry *rt)
global_root = rt;
current = new Entry;
inputString = rt->program;
//printf("parseDoc=`%s'\n",inputString);
inputPosition = 0;
ifCount=0;
scanYYrestart( scanYYin );
...
...
@@ -3367,6 +3461,21 @@ void parseDoc(OutputList &ol,const char *clName,
//----------------------------------------------------------------------------
void parseText(OutputList &ol,const QString &txtString)
{
inputString = txtString;
outDoc = new OutputList(&ol);
inputPosition = 0;
scanYYrestart( scanYYin );
BEGIN( Text );
scanYYlex();
ol+=*outDoc;
delete outDoc;
return;
}
//----------------------------------------------------------------------------
void parseExample(OutputList &ol,const QString &docString,
const char *fileName)
{
...
...
src/section.h
0 → 100644
View file @
e04496cb
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-1999 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* All output generated with Doxygen is not covered by this license.
*
*/
#ifndef SECTION_H
#define SECTION_H
#include <qlist.h>
#include <qdict.h>
#include <qstring.h>
class
Definition
;
struct
SectionInfo
{
enum
SectionType
{
Section
,
Subsection
,
Anchor
};
SectionInfo
(
const
char
*
l
,
const
char
*
t
,
SectionType
st
)
{
label
=
l
;
title
=
t
;
type
=
st
;
definition
=
0
;
}
QString
fileName
;
QString
label
;
QString
title
;
SectionType
type
;
Definition
*
definition
;
};
class
SectionList
:
public
QList
<
SectionInfo
>
{
};
class
SectionDict
:
public
QDict
<
SectionInfo
>
{
public
:
SectionDict
(
int
size
)
:
QDict
<
SectionInfo
>
(
size
)
{}
};
#endif
src/tag.l
View file @
e04496cb
...
...
@@ -25,6 +25,7 @@
#include "classdef.h"
#include "filedef.h"
#include "namespacedef.h"
#include "memberdef.h"
#include "doxygen.h"
#include "util.h"
...
...
@@ -36,12 +37,14 @@
static int yyLineNr;
static QString className;
static QString fileName;
static QString namespaceName;
static QString tagName;
static QString memberName;
static QString anchorName;
static QString argString;
static ClassDef *cd;
static FileDef *fd;
static NamespaceDef *nd;
static void addClass(const char *name,const char *fileName)
{
...
...
@@ -50,6 +53,7 @@ static void addClass(const char *name,const char *fileName)
{
cd = new ClassDef(name,ClassDef::Class,tagName,fileName);
fd = 0;
nd = 0;
classList.inSort(cd);
classDict.insert(className,cd);
}
...
...
@@ -72,10 +76,27 @@ static void addFile(const char *name)
inputNameDict.insert(name,mn);
}
cd = 0;
nd = 0;
//fileList.inSort(fd);
//fileDict.insert(fileName,fd);
}
static void addNamespace(const char *name)
{
if ((nd=namespaceDict[name])==0)
{
// TODO: we assume that each namespace is limited to a single tagfile.
// since namespace are open, this need not to be the case. As a result
// namespace may contain members that are located in
// different namespaces!
nd = new NamespaceDef(name,tagName);
namespaceList.inSort(nd);
namespaceDict.insert(name,nd);
}
cd = 0;
fd = 0;
}
static void addMember(const char *name,const char *anchor,const char *args)
{
//printf("adding member %s\n",name);
...
...
@@ -87,21 +108,24 @@ static void addMember(const char *name,const char *anchor,const char *args)
md=new MemberDef(0,name,args,0,Public,Normal,FALSE,FALSE,
MemberDef::Function,0,0);
md->setReference(anchor);
if (cd)
if (cd)
// member of a class
{
//md=new MemberDef(cd,name,args,anchor,tagName);
md->setMemberClass(cd);
cd->insertMember(md);
//printf("Adding member %s %s to class\n",name,args);
mnd=&memberNameDict;
mnl=&memberNameList;
}
else
else if (nd) // member of a namespace
{
md->setNamespace(nd);
nd->insertMember(md);
mnd=&functionNameDict;
mnl=&functionNameList;
}
else // member of a file
{
//md=new MemberDef(&unrelatedClass,name,args,anchor,tagName);
md->setFileDef(fd);
fd->insertMember(md);
//printf("Adding global member %s %s\n",name,args);
mnd=&functionNameDict;
mnl=&functionNameList;
}
...
...
@@ -130,6 +154,7 @@ static void addMember(const char *name,const char *anchor,const char *args)
ID [a-z_A-Z][a-z_A-Z0-9]*
FILE [a-z_A-Z0-9\.\-\+\:\\\/]+
SCOPE ({ID}"::")*{ID}
%x Pass1
%x Pass2
...
...
@@ -139,18 +164,22 @@ FILE [a-z_A-Z0-9\.\-\+\:\\\/]+
%x ClassName1
%x ClassName2
%x FileName
%x NamespaceName
%x BaseClasses
%x ClassFile1
%x ClassFile2
%%
<Pass1>^">" {
<Pass1>^">" {
// start of a class
BEGIN(ClassName1);
}
<Pass1>^"&" {
<Pass1>^"&" {
// start of a file
BEGIN(FileName);
}
<Pass1>^"%" { // start of a namespace
BEGIN(NamespaceName);
}
<Pass1>^[~a-z_A-Z][^ \n]*/" " {
memberName=yytext;
BEGIN(AnchorName);
...
...
@@ -175,7 +204,12 @@ FILE [a-z_A-Z0-9\.\-\+\:\\\/]+
addFile(yytext);
BEGIN(Pass1);
}
<ClassName1>{ID}/":" {
<NamespaceName>{SCOPE}/":" {
namespaceName=yytext;
addNamespace(yytext);
BEGIN(Pass1);
}
<ClassName1>{SCOPE}/":" {
className=yytext;
BEGIN(ClassFile1);
}
...
...
src/translator.h
View file @
e04496cb
...
...
@@ -18,32 +18,67 @@
#define TRANSLATOR_H
#include <qstring.h>
#include "classdef.h"
#include "util.h"
class
Translator
{
public
:
virtual
QString
latexBabelPackage
()
{
return
""
;
}
//--------------------------------------------------------------------
// NOTICE:
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
virtual
QString
trInherits
()
{
return
"Inherits"
;
}
virtual
QString
trAnd
()
{
return
"and"
;
}
virtual
QString
trInheritedBy
()
{
return
"Inherited By"
;
}
virtual
QString
trReference
()
{
return
"Reference"
;
}
virtual
QString
trReimplementedFrom
()
{
return
"Reimplemented from"
;
}
virtual
QString
trReimplementedIn
()
{
return
"Reimplemented in"
;
}
virtual
QString
trIncludeFile
()
{
return
"Include File"
;
}
virtual
QString
trNamespaces
()
{
return
"Namespace List"
;
}
// end of obsolete functions
//--------------------------------------------------------------------
virtual
QString
latexBabelPackage
()
// returns the name of the package that is included by LaTeX
{
return
""
;
}
virtual
QString
trRelatedFunctions
()
// used in the compound documentation before a list of related functions.
{
return
"Related Functions"
;
}
virtual
QString
trRelatedSubscript
()
// subscript for the related functions.
{
return
"(Note that these are not member functions.)"
;
}
virtual
QString
trDetailedDescription
()
// header that is put before the detailed description of files, classes and namespaces.
{
return
"Detailed Description"
;
}
virtual
QString
trMemberTypedefDocumentation
()
// header that is put before the list of typedefs.
{
return
"Member Typedef Documentation"
;
}
virtual
QString
trMemberEnumerationDocumentation
()
// header that is put before the list of enumerations.
{
return
"Member Enumeration Documentation"
;
}
virtual
QString
trMemberFunctionDocumentation
()
// header that is put before the list of member functions.
{
return
"Member Function Documentation"
;
}
virtual
QString
trMemberDataDocumentation
()
// header that is put before the list of member attributes.
{
return
"Member Data Documentation"
;
}
virtual
QString
trGeneratedFrom
(
const
char
*
s
,
bool
single
)
{
// here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
...
...
@@ -52,62 +87,92 @@ class Translator
if
(
single
)
result
+=
":"
;
else
result
+=
"s:"
;
return
result
;
}
virtual
QString
trMore
()
// this is the text of a link put after brief descriptions.
{
return
"More..."
;
}
virtual
QString
trReference
()
{
return
"Reference"
;
}
virtual
QString
trListOfAllMembers
()
// put in the class documentation
{
return
"List of all members."
;
}
virtual
QString
trMemberList
()
// used as the title of the "list of all members" page of a class
{
return
"Member List"
;
}
virtual
QString
trThisIsTheListOfAllMembers
()
{
return
"This is the complete list of members for"
;
}
// this is the first part of a sentence that is followed by a class name
{
return
"This is the complete list of members for "
;
}
virtual
QString
trIncludingInheritedMembers
()
{
return
"including all inherited members."
;
}
// this is the remainder of the sentence after the class name
{
return
", including all inherited members."
;
}
virtual
QString
trGeneratedAutomatically
(
const
char
*
s
)
// this is put at the author sections at the bottom of man pages.
// parameter s is name of the project name.
{
QString
result
=
"Generated automatically by Doxygen"
;
if
(
s
)
result
+=
(
QString
)
" for "
+
s
;
result
+=
" from the source code."
;
return
result
;
}
virtual
QString
trEnumName
()
// put after an enum name in the list of all members
{
return
"enum name"
;
}
virtual
QString
trEnumValue
()
// put after an enum value in the list of all members
{
return
"enum value"
;
}
virtual
QString
trDefinedIn
()
// put after an undocumented member in the list of all members
{
return
"defined in"
;
}
virtual
QString
trIncludeFile
()
{
return
"Include File"
;
}
virtual
QString
trVerbatimText
(
const
char
*
f
)
// put as in introduction in the verbatim header file of a class.
// parameter f is the name of the include file.
{
return
(
QString
)
"This is the verbatim text of the "
+
f
+
" include file."
;
}
// quick reference sections
virtual
QString
trModules
()
// This is put above each page as a link to the list of all groups of
// compounds or files (see the \group command).
{
return
"Modules"
;
}
virtual
QString
trClassHierarchy
()
// This is put above each page as a link to the class hierarchy
{
return
"Class Hierarchy"
;
}
virtual
QString
trCompoundList
()
// This is put above each page as a link to the list of annotated classes
{
return
"Compound List"
;
}
virtual
QString
trFileList
()
// This is put above each page as a link to the list of documented files
{
return
"File List"
;
}
virtual
QString
trHeaderFiles
()
// This is put above each page as a link to the list of all verbatim headers
{
return
"Header Files"
;
}
virtual
QString
trCompoundMembers
()
// This is put above each page as a link to all members of compounds.
{
return
"Compound Members"
;
}
virtual
QString
trFileMembers
()
// This is put above each page as a link to all members of files.
{
return
"File Members"
;
}
virtual
QString
trRelatedPages
()
// This is put above each page as a link to all related pages.
{
return
"Related Pages"
;
}
virtual
QString
trExamples
()
// This is put above each page as a link to all examples.
{
return
"Examples"
;
}
virtual
QString
trSearch
()
// This is put above each page as a link to the search engine.
{
return
"Search"
;
}
virtual
QString
trClassHierarchyDescription
()
// This is an introduction to the class hierarchy.
{
return
"This inheritance list is sorted roughly, "
"but not completely, alphabetically:"
;
}
virtual
QString
trFileListDescription
(
bool
extractAll
)
// This is an introduction to the list with all files.
{
QString
result
=
"Here is a list of all "
;
if
(
!
extractAll
)
result
+=
"documented "
;
...
...
@@ -115,10 +180,12 @@ class Translator
return
result
;
}
virtual
QString
trCompoundListDescription
()
// This is an introduction to the annotated compound list
{
return
"Here are the classes, structs and "
"unions with brief descriptions:"
;
}
virtual
QString
trCompoundMembersDescription
(
bool
extractAll
)
// This is an introduction to the page with all class members
{
QString
result
=
"Here is a list of all "
;
if
(
!
extractAll
)
result
+=
"documented "
;
...
...
@@ -130,6 +197,7 @@ class Translator
return
result
;
}
virtual
QString
trFileMembersDescription
(
bool
extractAll
)
// This is an introduction to the page with all file members
{
QString
result
=
"Here is a list of all "
;
if
(
!
extractAll
)
result
+=
"documented "
;
...
...
@@ -141,76 +209,134 @@ class Translator
return
result
;
}
virtual
QString
trHeaderFilesDescription
()
// This is an introduction to the page with the list of all header files
{
return
"Here are the header files that make up the API:"
;
}
virtual
QString
trExamplesDescription
()
// This is an introduction to the page with the list of all examples
{
return
"Here is a list of all examples:"
;
}
virtual
QString
trRelatedPagesDescription
()
// This is an introduction to the page with the list of related pages
{
return
"Here is a list of all related documentation pages:"
;
}
virtual
QString
trModulesDescription
()
// This is an introduction to the page with the list of class/file groups
{
return
"Here is a list of all modules:"
;
}
virtual
QString
trNoDescriptionAvailable
()
// This sentences is used in the annotated class/file lists if no brief
// description is given.
{
return
"No description available"
;
}
// index titles (the project name is prepended for these)
virtual
QString
trDocumentation
()
// This is used in HTML as the title of index.html.
{
return
"Documentation"
;
}
virtual
QString
trModuleIndex
()
// This is used in LaTeX as the title of the chapter with the
// index of all groups.
{
return
"Module Index"
;
}
virtual
QString
trHierarchicalIndex
()
// This is used in LaTeX as the title of the chapter with the
// class hierarchy.
{
return
"Hierarchical Index"
;
}
virtual
QString
trCompoundIndex
()
// This is used in LaTeX as the title of the chapter with the
// annotated compound index
{
return
"Compound Index"
;
}
virtual
QString
trFileIndex
()
// This is used in LaTeX as the title of the chapter with the
// list of all files.
{
return
"File Index"
;
}
virtual
QString
trModuleDocumentation
()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all groups.
{
return
"Module Documentation"
;
}
virtual
QString
trClassDocumentation
()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all classes, structs and unions.
{
return
"Class Documentation"
;
}
virtual
QString
trFileDocumentation
()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all files.
{
return
"File Documentation"
;
}
virtual
QString
trExampleDocumentation
()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all examples.
{
return
"Example Documentation"
;
}
virtual
QString
trPageDocumentation
()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all related pages.
{
return
"Page Documentation"
;
}
virtual
QString
trReferenceManual
()
// This is used in LaTeX as the title of the document
{
return
"Reference Manual"
;
}
virtual
QString
trDefines
()
// This is used in the documentation of a file as a header before the
// list of defines
{
return
"Defines"
;
}
virtual
QString
trFuncProtos
()
// This is used in the documentation of a file as a header before the
// list of function prototypes
{
return
"Function Prototypes"
;
}
virtual
QString
trTypedefs
()
// This is used in the documentation of a file as a header before the
// list of typedefs
{
return
"Typedefs"
;
}
virtual
QString
trEnumerations
()
// This is used in the documentation of a file as a header before the
// list of enumerations
{
return
"Enumerations"
;
}
virtual
QString
trFunctions
()
// This is used in the documentation of a file as a header before the
// list of (global) functions
{
return
"Functions"
;
}
virtual
QString
trVariables
()
// This is used in the documentation of a file as a header before the
// list of (global) variables
{
return
"Variables"
;
}
virtual
QString
trEnumerationValues
()
// This is used in the documentation of a file as a header before the
// list of (global) variables
{
return
"Enumeration values"
;
}
virtual
QString
trReimplementedFrom
()
{
return
"Reimplemented from"
;
}
virtual
QString
trReimplementedIn
()
{
return
"Reimplemented in"
;
}
virtual
QString
trAuthor
()
// This is used in man pages as the author section.
{
return
"Author"
;
}
virtual
QString
trDefineDocumentation
()
// This is used in the documentation of a file before the list of
// documentation blocks for defines
{
return
"Define Documentation"
;
}
virtual
QString
trFunctionPrototypeDocumentation
()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for function prototypes
{
return
"Function Prototype Documentation"
;
}
virtual
QString
trTypedefDocumentation
()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for typedefs
{
return
"Typedef Documentation"
;
}
virtual
QString
trEnumerationTypeDocumentation
()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for enumeration types
{
return
"Enumeration Type Documentation"
;
}
virtual
QString
trEnumerationValueDocumentation
()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for enumeration values
{
return
"Enumeration Value Documentation"
;
}
virtual
QString
trFunctionDocumentation
()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for functions
{
return
"Function Documentation"
;
}
virtual
QString
trVariableDocumentation
()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for variables
{
return
"Variable Documentation"
;
}
virtual
QString
trCompounds
()
// This is used in the documentation of a file/namespace/group before
// the list of links to documented compounds
{
return
"Compounds"
;
}
virtual
QString
trFiles
()
// This is used in the documentation of a group before the list of
// links to documented files
{
return
"Files"
;
}
virtual
QString
trGeneratedAt
(
const
char
*
date
,
const
char
*
projName
)
...
...
@@ -226,42 +352,56 @@ class Translator
}
virtual
QString
trClassDiagram
(
const
char
*
clName
)
// this text is put before a class diagram
{
return
(
QString
)
"Class diagram for "
+
clName
;
}
virtual
QString
trForInternalUseOnly
()
// this text is generated when the \internal command is used.
{
return
"For internal use only."
;
}
virtual
QString
trReimplementedForInternalReasons
()
// this text is generated when the \reimp command is used.
{
return
"Reimplemented for internal reasons; the API is not affected."
;
}
virtual
QString
trWarning
()
// this text is generated when the \warning command is used.
{
return
"Warning"
;
}
virtual
QString
trBugsAndLimitations
()
// this text is generated when the \bug command is used.
{
return
"Bugs and limitations"
;
}
virtual
QString
trVersion
()
// this text is generated when the \version command is used.
{
return
"Version"
;
}
virtual
QString
trDate
()
// this text is generated when the \date command is used.
{
return
"Date"
;
}
virtual
QString
trAuthors
()
// this text is generated when the \author command is used.
{
return
"Author(s)"
;
}
virtual
QString
trReturns
()
// this text is generated when the \return command is used.
{
return
"Returns"
;
}
virtual
QString
trSeeAlso
()
// this text is generated when the \sa command is used.
{
return
"See also"
;
}
virtual
QString
trParameters
()
// this text is generated when the \param command is used.
{
return
"Parameters"
;
}
virtual
QString
trExceptions
()
// this text is generated when the \exception command is used.
{
return
"Exceptions"
;
}
virtual
QString
trGeneratedBy
()
// this text is used in the title page of a LaTeX document.
{
return
"Generated by"
;
}
// new since 0.49-990307
virtual
QString
trNamespaces
()
{
return
"Namespaces"
;
}
virtual
QString
trNamespaceList
()
// used as the title of page containing all the index of all namespaces.
{
return
"Namespace List"
;
}
virtual
QString
trNamespaceListDescription
(
bool
extractAll
)
// used as an introduction to the namespace list
{
QString
result
=
"Here is a list of all "
;
if
(
!
extractAll
)
result
+=
"documented "
;
...
...
@@ -269,12 +409,147 @@ class Translator
return
result
;
}
virtual
QString
trFriends
()
// used in the class documentation as a header before the list of all
// friends of a class
{
return
"Friends"
;
}
// new since 0.49-990405
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990405
//////////////////////////////////////////////////////////////////////////
virtual
QString
trRelatedFunctionDocumentation
()
// used in the class documentation as a header before the list of all
// related classes
{
return
"Friends And Related Function Documentation"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
//////////////////////////////////////////////////////////////////////////
virtual
QString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
// used as the title of the HTML page of a class/struct/union
{
QString
result
=
(
QString
)
clName
+
" "
;
switch
(
compType
)
{
case
ClassDef
:
:
Class
:
result
+=
" Class"
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
" Struct"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
" Union"
;
break
;
}
result
+=
" Reference"
;
return
result
;
}
virtual
QString
trFileReference
(
const
char
*
fileName
)
// used as the title of the HTML page of a file
{
QString
result
=
fileName
;
result
+=
" File Reference"
;
return
result
;
}
virtual
QString
trNamespaceReference
(
const
char
*
namespaceName
)
// used as the title of the HTML page of a namespace
{
QString
result
=
namespaceName
;
result
+=
" Namespace Reference"
;
return
result
;
}
// these are for the member sections of a class, struct or union
virtual
QString
trPublicMembers
()
{
return
"Public Members"
;
}
virtual
QString
trPublicSlots
()
{
return
"Public Slots"
;
}
virtual
QString
trSignals
()
{
return
"Signals"
;
}
virtual
QString
trStaticPublicMembers
()
{
return
"Static Public Members"
;
}
virtual
QString
trProtectedMembers
()
{
return
"Protected Members"
;
}
virtual
QString
trProtectedSlots
()
{
return
"Protected Slots"
;
}
virtual
QString
trStaticProtectedMembers
()
{
return
"Static Protected Members"
;
}
virtual
QString
trPrivateMembers
()
{
return
"Private Members"
;
}
virtual
QString
trPrivateSlots
()
{
return
"Private Slots"
;
}
virtual
QString
trStaticPrivateMembers
()
{
return
"Static Private Members"
;
}
// end of member sections
virtual
QString
trWriteList
(
int
numEntries
)
{
// this function is used to produce a comma-separated list of items.
// use generateMarker(i) to indicate where item i should be put.
QString
result
;
int
i
;
// the inherits list contain `numEntries' classes
for
(
i
=
0
;
i
<
numEntries
;
i
++
)
{
// use generateMarker to generate placeholders for the class links!
result
+=
generateMarker
(
i
);
// generate marker for entry i in the list
// (order is left to right)
if
(
i
!=
numEntries
-
1
)
// not the last entry, so we need a separator
{
if
(
i
<
numEntries
-
2
)
// not the fore last entry
result
+=
", "
;
else
// the fore last entry
result
+=
", and "
;
}
}
return
result
;
}
virtual
QString
trInheritsList
(
int
numEntries
)
// used in class documentation to produce a list of base classes,
// if class diagrams are disabled.
{
return
"Inherits "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QString
trInheritedByList
(
int
numEntries
)
// used in class documentation to produce a list of super classes,
// if class diagrams are disabled.
{
return
"Inherited by "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QString
trReimplementedFromList
(
int
numEntries
)
// used in member documentation blocks to produce a list of
// members that are hidden by this one.
{
return
"Reimplemented from "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QString
trReimplementedInList
(
int
numEntries
)
{
// used in member documentation blocks to produce a list of
// all member that overwrite the implementation of this member.
return
"Reimplemented in "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QString
trNamespaceMembers
()
// This is put above each page as a link to all members of namespaces.
{
return
"Namespace Members"
;
}
virtual
QString
trNamespaceMemberDescription
(
bool
extractAll
)
// This is an introduction to the page with all namespace members
{
QString
result
=
"Here is a list of all "
;
if
(
!
extractAll
)
result
+=
"documented "
;
result
+=
"namespace members with links to "
;
if
(
extractAll
)
result
+=
"the namespace documentation for each member:"
;
else
result
+=
"the namespaces they belong to:"
;
return
result
;
}
virtual
QString
trNamespaceIndex
()
// This is used in LaTeX as the title of the chapter with the
// index of all namespaces.
{
return
"Namespace Index"
;
}
virtual
QString
trNamespaceDocumentation
()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all namespaces.
{
return
"Namespace Documentation"
;
}
};
#endif
src/translator_fr.h
View file @
e04496cb
...
...
@@ -255,7 +255,7 @@ class TranslatorFrench : public Translator
virtual
QString
trNamespaces
()
{
return
"Namespaces"
;
}
virtual
QString
trNamespaceList
()
{
return
"List des Namespaces"
;
}
{
return
"List
e
des Namespaces"
;
}
virtual
QString
trNamespaceListDescription
(
bool
extractAll
)
{
QString
result
=
"Liste de tous les namespaces "
;
...
...
@@ -265,6 +265,11 @@ class TranslatorFrench : public Translator
}
virtual
QString
trFriends
()
{
return
"Friends"
;
}
// new since 0.49-990405
virtual
QString
trRelatedFunctionDocumentation
()
{
return
"Documentation des fonctions amies et associées"
;
}
};
#endif
src/translator_nl.h
View file @
e04496cb
...
...
@@ -24,12 +24,6 @@ class TranslatorDutch : public Translator
public
:
QString
latexBabelPackage
()
{
return
"dutch"
;
}
QString
trInherits
()
{
return
"Erft over van"
;
}
QString
trAnd
()
{
return
"en"
;
}
QString
trInheritedBy
()
{
return
"Wordt overgeërfd door"
;
}
QString
trRelatedFunctions
()
{
return
"Gerelateerde functies"
;
}
QString
trRelatedSubscript
()
...
...
@@ -55,8 +49,6 @@ class TranslatorDutch : public Translator
}
QString
trMore
()
{
return
"Meer..."
;
}
QString
trReference
()
{
return
"Referentie"
;
}
QString
trListOfAllMembers
()
{
return
"Lijst van alle members."
;
}
QString
trMemberList
()
...
...
@@ -64,7 +56,7 @@ class TranslatorDutch : public Translator
QString
trThisIsTheListOfAllMembers
()
{
return
"Dit is de complete lijst van alle members voor"
;
}
QString
trIncludingInheritedMembers
()
{
return
"inclusief alle overgeërfde members."
;
}
{
return
"
,
inclusief alle overgeërfde members."
;
}
QString
trGeneratedAutomatically
(
const
char
*
s
)
{
QString
result
=
"Automatisch gegenereerd door Doxygen"
;
if
(
s
)
result
+=
(
QString
)
" voor "
+
s
;
...
...
@@ -77,8 +69,6 @@ class TranslatorDutch : public Translator
{
return
"enum waarde"
;
}
QString
trDefinedIn
()
{
return
"gedefinieerd in"
;
}
QString
trIncludeFile
()
{
return
"Include File"
;
}
QString
trVerbatimText
(
const
char
*
f
)
{
return
(
QString
)
"Dit is de letterlijke tekst van de include file "
+
f
+
"."
;
}
QString
trModules
()
...
...
@@ -182,10 +172,6 @@ class TranslatorDutch : public Translator
{
return
"Variabelen"
;
}
QString
trEnumerationValues
()
{
return
"Enumeratie waarden"
;
}
QString
trReimplementedFrom
()
{
return
"Nieuwe implementatie van"
;
}
QString
trReimplementedIn
()
{
return
"Opnieuw geïmplementeerd in"
;
}
QString
trAuthor
()
{
return
"auteur"
;
}
QString
trDefineDocumentation
()
...
...
@@ -246,10 +232,10 @@ class TranslatorDutch : public Translator
QString
trGeneratedBy
()
{
return
"Gegenereerd door"
;
}
// new since 0.49-990307
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990307
//////////////////////////////////////////////////////////////////////////
QString
trNamespaces
()
{
return
"Namespaces"
;
}
QString
trNamespaceList
()
{
return
"Namespace Lijst"
;
}
QString
trNamespaceListDescription
(
bool
extractAll
)
...
...
@@ -261,6 +247,142 @@ class TranslatorDutch : public Translator
}
QString
trFriends
()
{
return
"Friends"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990405
//////////////////////////////////////////////////////////////////////////
QString
trRelatedFunctionDocumentation
()
{
return
"Documentatie van friends en gerelateerde functies"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
//////////////////////////////////////////////////////////////////////////
virtual
QString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
// used as the title of the HTML page of a class/struct/union
{
QString
result
=
(
QString
)
clName
+
" "
;
switch
(
compType
)
{
case
ClassDef
:
:
Class
:
result
+=
" Class"
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
" Struct"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
" Union"
;
break
;
}
result
+=
" Referentie"
;
return
result
;
}
virtual
QString
trFileReference
(
const
char
*
fileName
)
// used as the title of the HTML page of a file
{
QString
result
=
fileName
;
result
+=
" File Referentie"
;
return
result
;
}
virtual
QString
trNamespaceReference
(
const
char
*
namespaceName
)
// used as the title of the HTML page of a namespace
{
QString
result
=
namespaceName
;
result
+=
" Namespace Referentie"
;
return
result
;
}
// these are for the member sections of a class, struct or union
virtual
QString
trPublicMembers
()
{
return
"Public Members"
;
}
virtual
QString
trPublicSlots
()
{
return
"Public Slots"
;
}
virtual
QString
trSignals
()
{
return
"Signals"
;
}
virtual
QString
trStaticPublicMembers
()
{
return
"Static Public Members"
;
}
virtual
QString
trProtectedMembers
()
{
return
"Protected Members"
;
}
virtual
QString
trProtectedSlots
()
{
return
"Protected Slots"
;
}
virtual
QString
trStaticProtectedMembers
()
{
return
"Static Protected Members"
;
}
virtual
QString
trPrivateMembers
()
{
return
"Private Members"
;
}
virtual
QString
trPrivateSlots
()
{
return
"Private Slots"
;
}
virtual
QString
trStaticPrivateMembers
()
{
return
"Static Private Members"
;
}
// end of member sections
virtual
QString
trWriteList
(
int
numEntries
)
{
// this function is used to produce a comma-separated list of items.
// use generateMarker(i) to indicate where item i should be put.
QString
result
;
int
i
;
// the inherits list contain `numEntries' classes
for
(
i
=
0
;
i
<
numEntries
;
i
++
)
{
// use generateMarker to generate placeholders for the class links!
result
+=
generateMarker
(
i
);
// generate marker for entry i in the list
// (order is left to right)
if
(
i
!=
numEntries
-
1
)
// not the last entry, so we need a separator
{
if
(
i
<
numEntries
-
2
)
// not the fore last entry
result
+=
", "
;
else
// the fore last entry
result
+=
" en "
;
}
}
return
result
;
}
virtual
QString
trInheritsList
(
int
numEntries
)
// used in class documentation to produce a list of base classes,
// if class diagrams are disabled.
{
return
"Erft over van "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QString
trInheritedByList
(
int
numEntries
)
// used in class documentation to produce a list of super classes,
// if class diagrams are disabled.
{
return
"Wordt overgeërfd door "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QString
trReimplementedFromList
(
int
numEntries
)
// used in member documentation blocks to produce a list of
// members that are hidden by this one.
{
return
"Nieuwe implementatie van "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QString
trReimplementedInList
(
int
numEntries
)
{
// used in member documentation blocks to produce a list of
// all member that overwrite the implementation of this member.
return
"Opnieuw geïmplementeerd in "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QString
trNamespaceMembers
()
// This is put above each page as a link to all members of namespaces.
{
return
"Namespace Members"
;
}
virtual
QString
trNamespaceMemberDescription
(
bool
extractAll
)
// This is an introduction to the page with all namespace members
{
QString
result
=
"Hier is een lijst van alle "
;
if
(
!
extractAll
)
result
+=
"gedocumenteerde "
;
result
+=
"namespace members met links naar "
;
if
(
extractAll
)
result
+=
"de namespace documentatie voor iedere member:"
;
else
result
+=
"de namespaces waartoe ze behoren:"
;
return
result
;
}
virtual
QString
trNamespaceIndex
()
// This is used in LaTeX as the title of the chapter with the
// index of all namespaces.
{
return
"Namespace Index"
;
}
virtual
QString
trNamespaceDocumentation
()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all namespaces.
{
return
"Namespace Documentatie"
;
}
};
#endif
src/translator_se.h
View file @
e04496cb
...
...
@@ -14,6 +14,14 @@
*
*/
/*-------------------------------------------------------------------------
Svensk versttning av:
Samuel Hgglund <sahag96@ite.mh.se>
Xet Erixon <xet@xeqt.com>
Skicka grna synpunkter.
--------------------------------------------------------------------------*/
#ifndef TRANSLATOR_SE_H
#define TRANSLATOR_SE_H
...
...
@@ -35,34 +43,32 @@ class TranslatorSwedish : public Translator
QString
trRelatedSubscript
()
{
return
"(Observera att dessa inte r medlemsfunktioner)"
;
}
QString
trDetailedDescription
()
{
return
"
Utk
ad beskrivning"
;
}
{
return
"
Detaljer
ad beskrivning"
;
}
QString
trMemberTypedefDocumentation
()
{
return
"
Har inte en aning...
"
;
}
{
return
"
Dokumentation ver typdefinierade medlemmar
"
;
}
QString
trMemberEnumerationDocumentation
()
{
return
"Upprknad dokumentation???"
;
}
QString
trEnumerationValueDocumentation
()
{
return
"Documentatie van enumeratie waarden"
;
}
{
return
"Dokumentation ver egenupprknande medlemmar"
;
}
QString
trMemberFunctionDocumentation
()
{
return
"Dokumentation
av
medlemsfunktioner"
;
}
{
return
"Dokumentation
ver
medlemsfunktioner"
;
}
QString
trMemberDataDocumentation
()
{
return
"Dokumentation
av
datamedlemmar"
;
}
{
return
"Dokumentation
ver
datamedlemmar"
;
}
QString
trGeneratedFrom
(
const
char
*
s
,
bool
single
)
{
QString
result
=
(
QString
)
"Dokumentationen fr de
tt
a"
+
s
+
" r skapad u
r
fljande fil"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"
s
:"
;
QString
result
=
(
QString
)
"Dokumentationen fr de
nn
a"
+
s
+
" r skapad u
tifrn
fljande fil"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"
er
:"
;
return
result
;
}
QString
trMore
()
{
return
"
Fl
er..."
;
}
{
return
"
M
er..."
;
}
QString
trReference
()
{
return
"
Hnvisning?
"
;
}
{
return
"
Referens
"
;
}
QString
trListOfAllMembers
()
{
return
"Lista ver alla medlemmar."
;
}
QString
trMemberList
()
{
return
"Medlemslista"
;
}
QString
trThisIsTheListOfAllMembers
()
{
return
"Det hr r en fullstndig lista
av medlemmar fr?
"
;
}
{
return
"Det hr r en fullstndig lista
ver medlemmar fr
"
;
}
QString
trIncludingInheritedMembers
()
{
return
"med alla rvda medlemmar."
;
}
QString
trGeneratedAutomatically
(
const
char
*
s
)
...
...
@@ -72,29 +78,29 @@ class TranslatorSwedish : public Translator
return
result
;
}
QString
trEnumName
()
{
return
"enum namn
?
"
;
}
{
return
"enum namn"
;
}
QString
trEnumValue
()
{
return
"enum vrde
?
"
;
}
{
return
"enum vrde"
;
}
QString
trDefinedIn
()
{
return
"deklarerad i"
;
}
QString
trIncludeFile
()
{
return
"In
clude F
il"
;
}
{
return
"In
kluderingsf
il"
;
}
QString
trVerbatimText
(
const
char
*
f
)
{
return
(
QString
)
"Detta r den ordagranna texten
av "
+
f
+
" include fil."
;
}
{
return
(
QString
)
"Detta r den ordagranna texten
frn inkluderingsfilen"
+
f
;
}
QString
trModules
()
{
return
"Moduler
?
"
;
}
{
return
"Moduler"
;
}
QString
trClassHierarchy
()
{
return
"Klasshierarki
?
"
;
}
{
return
"Klasshierarki"
;
}
QString
trCompoundList
()
{
return
"
Inhgnad lista???
"
;
}
{
return
"
Sammansatt klasslista
"
;
}
QString
trFileList
()
{
return
"Fillista"
;
}
QString
trHeaderFiles
()
{
return
"Headerfiler"
;
}
QString
trCompoundMembers
()
{
return
"
Inhgnade medlemmar??
"
;
}
{
return
"
Sammansatta klassmedlemmar
"
;
}
QString
trFileMembers
()
{
return
"Filmedlemmar
???
"
;
}
{
return
"Filmedlemmar"
;
}
QString
trRelatedPages
()
{
return
"Beslktade sidor"
;
}
QString
trExamples
()
...
...
@@ -102,8 +108,8 @@ class TranslatorSwedish : public Translator
QString
trSearch
()
{
return
"Sk"
;
}
QString
trClassHierarchyDescription
()
{
return
"Denna lista ver arv r grov
sorterad, men inte helt
"
"i alfabetisk ordning:"
;
{
return
"Denna lista ver arv r grov
t, men inte helt,
"
"
sorterad
i alfabetisk ordning:"
;
}
QString
trFileListDescription
(
bool
extractAll
)
{
...
...
@@ -113,8 +119,8 @@ class TranslatorSwedish : public Translator
return
result
;
}
QString
trCompoundListDescription
()
{
return
"Hr fljer klasserna, struct
s
och "
"union
s?
med en kort beskrivning:"
;
{
return
"Hr fljer klasserna, struct
erna
och "
"union
erna
med en kort beskrivning:"
;
}
QString
trCompoundMembersDescription
(
bool
extractAll
)
{
...
...
@@ -129,18 +135,18 @@ class TranslatorSwedish : public Translator
{
QString
result
=
"Hr fljer en lista ver alla "
;
if
(
!
extractAll
)
result
+=
"dokumenterade "
;
result
+=
"filmedlemmar
?
med lnkar till "
;
result
+=
"filmedlemmar med lnkar till "
;
if
(
extractAll
)
result
+=
"dokumentationsfilen fr varje medlem:"
;
else
result
+=
"filerna som de tillhr:"
;
return
result
;
}
QString
trHeaderFilesDescription
()
{
return
"Hr fljer headerfilerna som API:n bestr av
???
:"
;
}
{
return
"Hr fljer headerfilerna som API:n bestr av:"
;
}
QString
trExamplesDescription
()
{
return
"Hr fljer en lista med alla exempel:"
;
}
QString
trRelatedPagesDescription
()
{
return
"Hr fljer en lista
med alla relevanta? dokumentationssidor:"
;
}
QString
trModulesDescription
()
{
return
"Hr fljer en lista
ver alla relaterade dokumentationssidor:"
;
}
QString
trModulesDescription
()
{
return
"Hr fljer en lista ver alla moduler:"
;
}
QString
trNoDescriptionAvailable
()
{
return
"Beskrivning saknas"
;
}
...
...
@@ -148,11 +154,11 @@ class TranslatorSwedish : public Translator
QString
trDocumentation
()
{
return
"Dokumentation"
;
}
QString
trModuleIndex
()
{
return
"Modul
e
Index"
;
}
{
return
"Modul Index"
;
}
QString
trHierarchicalIndex
()
{
return
"Hierarkiskt Index"
;
}
QString
trCompoundIndex
()
{
return
"
Compound
Index"
;
}
{
return
"
Sammansatt
Index"
;
}
QString
trFileIndex
()
{
return
"Fil Index"
;
}
QString
trModuleDocumentation
()
...
...
@@ -169,39 +175,41 @@ class TranslatorSwedish : public Translator
{
return
"Uppslagsbok"
;
}
QString
trDefines
()
{
return
"Defin
era
r"
;
}
{
return
"Defin
itione
r"
;
}
QString
trFuncProtos
()
{
return
"Funktionsprototyper"
;
}
QString
trTypedefs
()
{
return
"Typ
edefs
"
;
}
{
return
"Typ
definitioner
"
;
}
QString
trEnumerations
()
{
return
"
Upprkning???
"
;
}
{
return
"
Egenupprknande typer
"
;
}
QString
trFunctions
()
{
return
"Funktioner"
;
}
QString
trVariables
()
{
return
"Variabler"
;
}
QString
trEnumerationValues
()
{
return
"E
num vrden??
"
;
}
{
return
"E
genupprknade vrden
"
;
}
QString
trReimplementedFrom
()
{
return
"teranvnd frn
???
"
;
}
{
return
"teranvnd frn"
;
}
QString
trReimplementedIn
()
{
return
"teranvnd i
??
"
;
}
{
return
"teranvnd i"
;
}
QString
trAuthor
()
{
return
"Frfattare"
;
}
QString
trDefineDocumentation
()
{
return
"D
efiniera dokumentation
"
;
}
{
return
"D
okumentation ver definitioner
"
;
}
QString
trFunctionPrototypeDocumentation
()
{
return
"Dokumentation ver funktionsprototyper"
;
}
QString
trTypedefDocumentation
()
{
return
"Dokumentation ver typ
edefs
"
;
}
{
return
"Dokumentation ver typ
definitioner
"
;
}
QString
trEnumerationTypeDocumentation
()
{
return
"Dokumentation ver enum typer"
;
}
{
return
"Dokumentation ver egenupprknande typer (enum)"
;
}
QString
trEnumerationValueDocumentation
()
{
return
"Dokumentation ver egenupprknande typers vrden"
;
}
QString
trFunctionDocumentation
()
{
return
"Dokumentation ver funktioner"
;
}
QString
trVariableDocumentation
()
{
return
"Dokumentation ver variabler"
;
}
QString
trCompounds
()
{
return
"
Compounds??
"
;
}
{
return
"
Sammansttning
"
;
}
QString
trFiles
()
{
return
"Filer"
;
}
QString
trGeneratedAt
(
const
char
*
date
,
const
char
*
projName
)
...
...
@@ -217,12 +225,12 @@ class TranslatorSwedish : public Translator
}
QString
trClassDiagram
(
const
char
*
clName
)
{
return
(
QString
)
"Klass
diagram fr "
+
clName
;
return
(
QString
)
"Klass
-
diagram fr "
+
clName
;
}
QString
trForInternalUseOnly
()
{
return
"Endast fr internt bruk."
;
}
QString
trReimplementedForInternalReasons
()
{
return
"Omskriven av intern
a orsaker???
; "
{
return
"Omskriven av intern
anledning
; "
"API:n pverkas inte."
;
}
QString
trWarning
()
...
...
src/util.cpp
View file @
e04496cb
...
...
@@ -37,6 +37,12 @@ bool isId(char c)
return
c
==
'_'
||
isalnum
(
c
);
}
QString
generateMarker
(
int
id
)
{
QString
result
;
result
.
sprintf
(
"@%d
\n
"
,
id
);
return
result
;
}
// try to determine if this files is a source or a header file by looking
// at the extension (5 variations are allowed in both upper and lower case)
...
...
@@ -197,6 +203,7 @@ static void linkifyText(OutputList &ol,const char *clName,const char *name,const
ClassDef
*
cd
=
0
;
FileDef
*
fd
=
0
;
MemberDef
*
md
=
0
;
NamespaceDef
*
nd
=
0
;
// check if `word' is a documented class name
if
(
word
.
length
()
>
0
&&
word
!=
name
&&
word
!=
clName
)
...
...
@@ -206,24 +213,29 @@ static void linkifyText(OutputList &ol,const char *clName,const char *name,const
// add link to the result
if
(
cd
->
isVisible
())
{
result
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
classFil
e
(),
0
,
word
);
result
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBas
e
(),
0
,
word
);
}
else
{
result
.
docify
(
word
);
}
}
else
if
(
getDefs
(
word
,
clName
,
0
,
md
,
cd
,
fd
)
&&
md
->
hasDocumentation
())
else
if
(
getDefs
(
word
,
clName
,
0
,
md
,
cd
,
fd
,
nd
)
&&
md
->
hasDocumentation
())
{
if
(
cd
&&
cd
->
isVisible
()
&&
!
md
->
isFunction
())
// word is a member of cd
{
result
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
classFile
(),
md
->
anchor
(),
word
);
cd
->
getOutputFileBase
(),
md
->
anchor
(),
word
);
}
else
if
(
nd
&&
nd
->
hasDocumentation
())
{
result
.
writeObjectLink
(
nd
->
getReference
(),
nd
->
getOutputFileBase
(),
md
->
anchor
(),
word
);
}
else
if
(
fd
&&
fd
->
hasDocumentation
())
// word is a global in file fd
{
result
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
diskNam
e
(),
md
->
anchor
(),
word
);
fd
->
getOutputFileBas
e
(),
md
->
anchor
(),
word
);
}
else
// add word to the result
{
...
...
@@ -313,6 +325,28 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
}
}
void
writeExample
(
OutputList
&
ol
,
ExampleList
*
el
)
{
QString
exampleLine
=
theTranslator
->
trWriteList
(
el
->
count
());
QRegExp
marker
(
"@[0-9]+"
);
int
index
=
0
,
newIndex
,
matchLen
;
// now replace all markers in inheritLine with links to the classes
while
((
newIndex
=
marker
.
match
(
exampleLine
,
index
,
&
matchLen
))
!=-
1
)
{
bool
ok
;
parseText
(
ol
,
exampleLine
.
mid
(
index
,
newIndex
-
index
));
uint
entryIndex
=
exampleLine
.
mid
(
newIndex
+
1
,
matchLen
-
1
).
toUInt
(
&
ok
);
Example
*
e
=
el
->
at
(
entryIndex
);
if
(
ok
&&
e
)
ol
.
writeObjectLink
(
0
,
e
->
file
,
e
->
anchor
,
e
->
name
);
index
=
newIndex
+
matchLen
;
}
parseText
(
ol
,
exampleLine
.
right
(
exampleLine
.
length
()
-
index
));
ol
.
writeString
(
"."
);
}
QString
argListToString
(
ArgumentList
*
al
)
{
QString
result
;
...
...
@@ -335,11 +369,14 @@ static void writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd,
FileDef
*
fd
,
MemberDef
*
md
,
const
char
*
name
)
{
if
(
nd
)
ol
.
writeObjectLink
(
0
/*TODO: references */
,
nd
->
namespaceFile
(),
md
->
anchor
(),
name
);
ol
.
writeObjectLink
(
nd
->
getReference
(),
nd
->
getOutputFileBase
(),
md
->
anchor
(),
name
);
else
if
(
fd
)
ol
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
diskName
(),
md
->
anchor
(),
name
);
ol
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
getOutputFileBase
(),
md
->
anchor
(),
name
);
else
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
classFile
(),
md
->
anchor
(),
name
);
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
md
->
anchor
(),
name
);
}
static
void
warnForUndocumentedMember
(
MemberDef
*
md
)
...
...
@@ -388,77 +425,84 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"modules.html"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trModules
());
parse
Text
(
ol
,
theTranslator
->
trModules
());
ol
.
endQuickIndexItem
();
}
if
(
documentedNamespaces
>
0
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"namespaces.html"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trNamespaces
());
parse
Text
(
ol
,
theTranslator
->
trNamespaceList
());
ol
.
endQuickIndexItem
();
}
if
(
hierarchyClasses
>
0
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"hierarchy.html"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trClassHierarchy
());
parse
Text
(
ol
,
theTranslator
->
trClassHierarchy
());
ol
.
endQuickIndexItem
();
}
if
(
annotatedClasses
>
0
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"annotated.html"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trCompoundList
());
parse
Text
(
ol
,
theTranslator
->
trCompoundList
());
ol
.
endQuickIndexItem
();
}
if
(
documentedFiles
>
0
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"files.html"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trFileList
());
parse
Text
(
ol
,
theTranslator
->
trFileList
());
ol
.
endQuickIndexItem
();
}
if
(
includeFiles
.
count
()
>
0
&&
verbatimHeaderFlag
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"headers.html"
);
parseDoc
(
ol
,
0
,
0
,
theTranslator
->
trHeaderFiles
());
parseText
(
ol
,
theTranslator
->
trHeaderFiles
());
ol
.
endQuickIndexItem
();
}
if
(
documentedNamespaceMembers
>
0
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"namespacemembers.html"
);
parseText
(
ol
,
theTranslator
->
trNamespaceMembers
());
ol
.
endQuickIndexItem
();
}
if
(
documentedMembers
>
0
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"functions.html"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trCompoundMembers
());
parse
Text
(
ol
,
theTranslator
->
trCompoundMembers
());
ol
.
endQuickIndexItem
();
}
if
(
documentedFunctions
>
0
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"globals.html"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trFileMembers
());
parse
Text
(
ol
,
theTranslator
->
trFileMembers
());
ol
.
endQuickIndexItem
();
}
if
(
pageList
.
count
()
>
0
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"pages.html"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trRelatedPages
());
parse
Text
(
ol
,
theTranslator
->
trRelatedPages
());
ol
.
endQuickIndexItem
();
}
if
(
exampleList
.
count
()
>
0
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"examples.html"
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trExamples
());
parse
Text
(
ol
,
theTranslator
->
trExamples
());
ol
.
endQuickIndexItem
();
}
if
(
searchEngineFlag
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
"_cgi:"
,
""
);
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trSearch
());
parse
Text
(
ol
,
theTranslator
->
trSearch
());
ol
.
endQuickIndexItem
();
}
if
(
compact
)
...
...
@@ -489,7 +533,7 @@ void endFile(OutputList &ol,bool external)
ol
.
writeFooter
(
0
,
external
);
// write the footer
if
(
footerFile
.
length
()
==
0
)
{
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trGeneratedAt
(
parse
Text
(
ol
,
theTranslator
->
trGeneratedAt
(
dateToString
(
TRUE
),
projectName
));
...
...
@@ -497,7 +541,7 @@ void endFile(OutputList &ol,bool external)
ol
.
writeFooter
(
1
,
external
);
// write the link to the picture
if
(
footerFile
.
length
()
==
0
)
{
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trWrittenBy
());
parse
Text
(
ol
,
theTranslator
->
trWrittenBy
());
}
ol
.
writeFooter
(
2
,
external
);
// end the footer
if
(
latexEnabled
)
ol
.
enable
(
OutputGenerator
::
Latex
);
...
...
@@ -539,14 +583,24 @@ static void writeMemberDef(OutputList &ol, ClassDef *cd, NamespaceDef *nd,
else
if
(
fd
)
cname
=
fd
->
name
();
// If there is no detailed description we need to write the anchor here.
if
(
!
md
->
detailsAreVisible
()
&&
!
extractAllFlag
)
bool
detailsVisible
=
md
->
detailsAreVisible
();
if
(
!
detailsVisible
&&
!
extractAllFlag
)
{
ol
.
writeDoxyAnchor
(
cname
,
md
->
anchor
(),
md
->
name
());
QString
doxyName
=
md
->
name
().
copy
();
if
(
!
cname
.
isEmpty
())
doxyName
.
prepend
(
cname
+
"::"
);
ol
.
writeDoxyAnchor
(
cname
,
md
->
anchor
(),
doxyName
);
ol
.
addToIndex
(
md
->
name
(),
cname
);
ol
.
addToIndex
(
cname
,
md
->
name
());
ol
.
docify
(
"
\n
"
);
}
else
if
(
!
detailsVisible
)
// when extractAll it true we have to write
// a index reference and label in LaTeX because
// detailed section not shown in LaTeX
{
ol
.
addToIndex
(
md
->
name
(),
cname
);
ol
.
addToIndex
(
cname
,
md
->
name
());
ol
.
writeLatexLabel
(
cname
,
md
->
anchor
());
}
ol
.
startMemberItem
();
// write type
...
...
@@ -564,6 +618,8 @@ static void writeMemberDef(OutputList &ol, ClassDef *cd, NamespaceDef *nd,
QString
name
=
md
->
name
().
copy
();
if
(
type
.
length
()
>
0
)
ol
.
writeString
(
" "
);
ol
.
insertMemberAlign
();
// write name
if
(
extractAllFlag
||
(
md
->
briefDescription
().
isEmpty
()
||
!
briefMemDescFlag
)
&&
...
...
@@ -610,7 +666,7 @@ static void writeMemberDef(OutputList &ol, ClassDef *cd, NamespaceDef *nd,
ol
.
docify
(
" "
);
ol
.
startTextLink
(
0
,
md
->
anchor
());
//ol.writeObjectLink(0,0,md->anchor()," More...");
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trMore
());
parse
Text
(
ol
,
theTranslator
->
trMore
());
ol
.
endTextLink
();
ol
.
startEmphasis
();
ol
.
enableAll
();
...
...
@@ -634,11 +690,13 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
if
(
title
)
{
ol
.
startMemberHeader
();
parse
Doc
(
ol
,
0
,
0
,
title
);
parse
Text
(
ol
,
title
);
ol
.
endMemberHeader
();
}
if
(
subtitle
)
ol
.
writeString
(
subtitle
);
if
(
subtitle
)
{
parseText
(
ol
,
subtitle
);
}
if
(
!
fd
&&
!
nd
)
ol
.
startMemberList
();
MemberDef
*
md
;
...
...
@@ -646,7 +704,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
if
(
fd
&&
ml
->
defineCount
()
>
0
)
{
ol
.
startMemberHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trDefines
());
parse
Text
(
ol
,
theTranslator
->
trDefines
());
ol
.
endMemberHeader
();
ol
.
startMemberList
();
MemberListIterator
mli
(
*
ml
);
...
...
@@ -663,7 +721,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
if
((
fd
||
nd
)
&&
ml
->
protoCount
()
>
0
)
{
ol
.
startMemberHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trFuncProtos
());
parse
Text
(
ol
,
theTranslator
->
trFuncProtos
());
ol
.
startMemberList
();
MemberListIterator
mli
(
*
ml
);
for
(
;
(
md
=
mli
.
current
());
++
mli
)
...
...
@@ -678,7 +736,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
if
(
fd
||
nd
)
{
ol
.
startMemberHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trTypedefs
());
parse
Text
(
ol
,
theTranslator
->
trTypedefs
());
ol
.
endMemberHeader
();
//ol.writeMemberHeader("Typedefs");
ol
.
startMemberList
();
...
...
@@ -697,36 +755,21 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
if
(
fd
||
nd
)
{
ol
.
startMemberHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trEnumerations
());
parse
Text
(
ol
,
theTranslator
->
trEnumerations
());
ol
.
endMemberHeader
();
ol
.
startMemberList
();
}
MemberListIterator
mli
(
*
ml
);
for
(
;
(
md
=
mli
.
current
())
;
++
mli
)
{
bool
hasDocs
=
md
->
hasDocumentation
();
/*bool hasDocs=md->hasDocumentation();*/
QString
type
=
md
->
typeString
();
type
=
type
.
stripWhiteSpace
();
if
(
md
->
isEnumerate
()
&&
(
hasDocs
||
!
hideMemberFlag
))
{
// see if there are any documented enum values
// we need this info to decide if we need to generate a link.
QList
<
MemberDef
>
*
fmdl
=
md
->
enumFieldList
();
int
documentedEnumValues
=
0
;
if
(
fmdl
)
if
(
md
->
isEnumerate
()
/*&& (hasDocs || !hideMemberFlag)*/
)
{
MemberDef
*
fmd
=
fmdl
->
first
();
while
(
fmd
)
{
if
(
fmd
->
hasDocumentation
())
documentedEnumValues
++
;
fmd
=
fmdl
->
next
();
}
}
if
(
documentedEnumValues
>
0
)
md
->
setDocumentedEnumValues
(
TRUE
);
if
(
!
hideMemberFlag
||
// do not hide undocumented members or
!
md
->
documentation
().
isEmpty
()
||
// member has detailed descr. or
documentedEnumValues
>
0
||
// member has documented enum vales.
md
->
hasDocumentedEnumValues
()
||
// member has documented enum vales.
briefMemDescFlag
||
// brief descr. is shown or
repeatBriefFlag
// brief descr. is repeated.
)
...
...
@@ -739,7 +782,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
{
if
(
extractAllFlag
||
(
md
->
briefDescription
().
isEmpty
()
||
!
briefMemDescFlag
)
&&
(
!
md
->
documentation
().
isEmpty
()
||
documentedEnumValues
>
0
||
(
!
md
->
documentation
().
isEmpty
()
||
md
->
hasDocumentedEnumValues
()
||
(
!
md
->
briefDescription
().
isEmpty
()
&&
!
briefMemDescFlag
&&
repeatBriefFlag
...
...
@@ -760,6 +803,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
}
typeDecl
.
docify
(
"{ "
);
QList
<
MemberDef
>
*
fmdl
=
md
->
enumFieldList
();
if
(
fmdl
)
{
MemberDef
*
fmd
=
fmdl
->
first
();
...
...
@@ -798,6 +842,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
{
ol
.
startMemberItem
();
ol
.
writeString
(
"enum "
);
ol
.
insertMemberAlign
();
ol
+=
typeDecl
;
ol
.
endMemberItem
();
//QString brief=md->briefDescription();
...
...
@@ -807,14 +852,14 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
ol
.
startMemberDescription
();
parseDoc
(
ol
,
cd
?
cd
->
name
().
data
()
:
0
,
md
->
name
().
data
(),
md
->
briefDescription
());
if
(
!
md
->
documentation
().
isEmpty
()
||
documentedEnumValues
>
0
)
if
(
!
md
->
documentation
().
isEmpty
()
||
md
->
hasDocumentedEnumValues
()
)
{
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
endEmphasis
();
ol
.
docify
(
" "
);
ol
.
startTextLink
(
0
,
md
->
anchor
());
//ol.writeObjectLink(0,0,md->anchor()," More...");
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trMore
());
parse
Text
(
ol
,
theTranslator
->
trMore
());
ol
.
endTextLink
();
ol
.
startEmphasis
();
ol
.
enableAll
();
...
...
@@ -838,7 +883,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
if
(
fd
||
nd
)
{
ol
.
startMemberHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trFunctions
());
parse
Text
(
ol
,
theTranslator
->
trFunctions
());
ol
.
endMemberHeader
();
ol
.
startMemberList
();
}
...
...
@@ -873,6 +918,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
{
ol
.
startMemberItem
();
ol
.
docify
(
"class "
);
ol
.
insertMemberAlign
();
ol
.
writeObjectLink
(
0
,
0
,
md
->
anchor
(),
md
->
name
());
ol
.
endMemberItem
();
}
...
...
@@ -880,13 +926,15 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
{
ol
.
startMemberItem
();
ol
.
docify
(
"class "
);
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
classFile
(),
0
,
cd
->
name
());
ol
.
insertMemberAlign
();
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
name
());
ol
.
endMemberItem
();
}
else
if
(
!
hideMemberFlag
)
// no documentation
{
ol
.
startMemberItem
();
ol
.
docify
(
"class "
);
ol
.
insertMemberAlign
();
ol
.
writeBoldString
(
md
->
name
());
ol
.
endMemberItem
();
}
...
...
@@ -901,7 +949,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
if
(
fd
||
nd
)
{
ol
.
startMemberHeader
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trVariables
());
parse
Text
(
ol
,
theTranslator
->
trVariables
());
ol
.
endMemberHeader
();
ol
.
startMemberList
();
}
...
...
@@ -1109,11 +1157,11 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
{
ol
.
newParagraph
();
ol
.
startBold
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trEnumerationValues
());
parse
Text
(
ol
,
theTranslator
->
trEnumerationValues
());
//ol.writeBoldString("Enumeration values:");
ol
.
docify
(
":"
);
ol
.
endBold
();
ol
.
start
Member
List
();
ol
.
start
Item
List
();
}
ol
.
writeDoxyAnchor
(
cname
,
fmd
->
anchor
(),
fmd
->
name
());
ol
.
addToIndex
(
fmd
->
name
(),
cname
);
...
...
@@ -1141,7 +1189,7 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
fmd
=
fmdl
->
next
();
}
}
if
(
!
first
)
{
ol
.
end
Member
List
();
ol
.
writeChar
(
'\n'
);
}
if
(
!
first
)
{
ol
.
end
Item
List
();
ol
.
writeChar
(
'\n'
);
}
}
MemberDef
*
bmd
=
md
->
reimplements
();
...
...
@@ -1159,12 +1207,19 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
// write class that contains a member that is reimplemented by this one
ClassDef
*
bcd
=
bmd
->
memberClass
();
ol
.
newParagraph
();
parseDoc
(
ol
,
0
,
0
,
theTranslator
->
trReimplementedFrom
());
//ol.writeString("Reimplemented from ");
ol
.
docify
(
" "
);
if
(
bmd
->
hasDocumentation
())
//parseText(ol,theTranslator->trReimplementedFrom());
//ol.docify(" ");
QString
reimplFromLine
=
theTranslator
->
trReimplementedFromList
(
1
);
int
markerPos
=
reimplFromLine
.
find
(
"@0"
);
if
(
markerPos
!=-
1
)
// should always pass this.
{
parseText
(
ol
,
reimplFromLine
.
left
(
markerPos
));
//text left from marker
if
(
bmd
->
hasDocumentation
()
&&
(
bmd
->
protection
()
!=
Private
||
extractPrivateFlag
)
)
// replace marker with link
{
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
classFil
e
(),
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBas
e
(),
bmd
->
anchor
(),
bcd
->
name
());
if
(
!
bcd
->
isReference
()
&&
...
...
@@ -1176,7 +1231,7 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
}
else
{
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
classFil
e
(),
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBas
e
(),
0
,
bcd
->
name
());
if
(
!
bcd
->
isReference
()
&&
...
...
@@ -1185,7 +1240,16 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
bcd
->
isVisible
()
)
ol
.
writePageRef
(
bcd
->
name
(),
0
);
}
ol
.
writeString
(
"."
);
parseText
(
ol
,
reimplFromLine
.
right
(
reimplFromLine
.
length
()
-
markerPos
-
2
));
// text right from marker
}
else
{
err
(
"Error: translation error: no marker in trReimplementsFromList()
\n
"
);
}
//ol.writeString(".");
}
MemberList
*
bml
=
md
->
reimplementedBy
();
int
count
;
...
...
@@ -1193,16 +1257,53 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
{
// write the list of classes that overwrite this member
ol
.
newParagraph
();
parseDoc
(
ol
,
0
,
0
,
theTranslator
->
trReimplementedIn
());
//parseText(ol
,theTranslator->trReimplementedIn());
//ol.writeString("Reimplemented in ");
ol
.
docify
(
" "
);
//ol.docify(" ");
QString
reimplInLine
=
theTranslator
->
trReimplementedInList
(
bml
->
count
());
QRegExp
marker
(
"@[0-9]+"
);
int
index
=
0
,
newIndex
,
matchLen
;
// now replace all markers in reimplInLine with links to the classes
while
((
newIndex
=
marker
.
match
(
reimplInLine
,
index
,
&
matchLen
))
!=-
1
)
{
parseText
(
ol
,
reimplInLine
.
mid
(
index
,
newIndex
-
index
));
bool
ok
;
uint
entryIndex
=
reimplInLine
.
mid
(
newIndex
+
1
,
matchLen
-
1
).
toUInt
(
&
ok
);
bmd
=
bml
->
at
(
entryIndex
);
if
(
ok
&&
bmd
)
// write link for marker
{
ClassDef
*
bcd
=
bmd
->
memberClass
();
if
(
bmd
->
hasDocumentation
()
&&
(
bmd
->
protection
()
!=
Private
||
extractPrivateFlag
)
)
{
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBase
(),
bmd
->
anchor
(),
bcd
->
name
());
if
(
!
bcd
->
isReference
()
&&
bcd
->
isVisible
())
ol
.
writePageRef
(
bcd
->
name
(),
bmd
->
anchor
());
}
else
{
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBase
(),
0
,
bcd
->
name
());
if
(
!
bcd
->
isReference
()
&&
bcd
->
isVisible
())
ol
.
writePageRef
(
bcd
->
name
(),
0
);
}
}
index
=
newIndex
+
matchLen
;
}
parseText
(
ol
,
reimplInLine
.
right
(
reimplInLine
.
length
()
-
index
));
#if 0
bmd=bml->first();
while (bmd)
{
ClassDef *bcd = bmd->memberClass();
if (bmd->hasDocumentation())
{
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
classFil
e
(),
ol.writeObjectLink(bcd->getReference(),bcd->
getOutputFileBas
e(),
bmd->anchor(),bcd->name());
if (
!bcd->isReference() &&
...
...
@@ -1214,7 +1315,7 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
}
else
{
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
classFil
e
(),
ol.writeObjectLink(bcd->getReference(),bcd->
getOutputFileBas
e(),
0,bcd->name());
if (
!bcd->isReference() &&
...
...
@@ -1228,24 +1329,25 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
{
if (bml->at()==count-1)
//ol.writeString(" and ");
parse
Doc
(
ol
,
0
,
0
,
" "
+
theTranslator
->
trAnd
()
+
" "
);
parse
Text(ol
," "+theTranslator->trAnd()+" ");
else
ol.writeString(", ");
}
}
ol.writeString(".");
#endif
}
// write the list of examples that use this member
if
(
md
->
hasExamples
())
{
ol
.
startDescList
();
ol
.
startBold
();
parse
Doc
(
ol
,
0
,
0
,
theTranslator
->
trExamples
()
+
": "
);
parse
Text
(
ol
,
theTranslator
->
trExamples
()
+
": "
);
//ol.writeBoldString("Examples: ");
ol
.
endBold
();
ol
.
endDescTitle
();
ol
.
writeDescItem
();
md
->
writeExample
(
ol
);
writeExample
(
ol
,
md
->
getExampleList
()
);
//ol.endDescItem();
ol
.
endDescList
();
}
...
...
@@ -1388,8 +1490,7 @@ static QString trimTemplateSpecifiers(const QString &className,const QString &s)
// removes the (one and only) occurrence of name:: from s.
static
QString
trimScope
(
const
QString
&
name
,
const
QString
&
s
)
{
int
spos
;
spos
=
s
.
find
(
name
+
"::"
);
int
spos
=
s
.
find
(
name
+
"::"
);
if
(
spos
!=-
1
)
{
return
s
.
left
(
spos
)
+
s
.
right
(
s
.
length
()
-
spos
-
name
.
length
()
-
2
);
...
...
@@ -1486,8 +1587,12 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
{
srcAType
=
trimScope
(
className
,
srcAType
);
dstAType
=
trimScope
(
className
,
dstAType
);
ClassDef
*
cd
=
getClass
(
className
);
if
(
cd
->
baseClasses
()
->
count
()
>
0
)
ClassDef
*
cd
;
if
(
!
namespaceName
.
isEmpty
())
cd
=
getClass
(
namespaceName
+
"::"
+
className
);
else
cd
=
getClass
(
className
);
if
(
cd
&&
cd
->
baseClasses
()
->
count
()
>
0
)
{
srcAType
=
trimBaseClassScope
(
cd
->
baseClasses
(),
srcAType
);
dstAType
=
trimBaseClassScope
(
cd
->
baseClasses
(),
dstAType
);
...
...
@@ -1703,17 +1808,19 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl)
// returns TRUE if the class and member both could be found
bool
getDefs
(
const
QString
&
memberName
,
const
QString
&
className
,
const
char
*
args
,
MemberDef
*&
md
,
ClassDef
*&
cd
,
FileDef
*&
fd
)
const
char
*
args
,
MemberDef
*&
md
,
ClassDef
*&
cd
,
FileDef
*&
fd
,
NamespaceDef
*&
nd
)
{
//printf("Search for %s::%s %s\n",className.data(),memberName.data(),args);
fd
=
0
;
md
=
0
;
c
d
=
0
;
fd
=
0
,
md
=
0
,
cd
=
0
,
n
d
=
0
;
if
(
memberName
.
length
()
==
0
)
return
FALSE
;
MemberName
*
mn
;
if
((
mn
=
memberNameDict
[
memberName
])
&&
className
.
length
()
>
0
)
{
//printf(" >member name found\n");
ClassDef
*
fcd
=
0
;
if
((
fcd
=
getClass
(
className
)))
//printf("className=%s\n",className.data());
if
((
fcd
=
getClass
(
className
))
&&
fcd
->
hasDocumentation
())
{
//printf(" >member class found\n");
MemberDef
*
mmd
=
mn
->
first
();
...
...
@@ -1744,7 +1851,6 @@ bool getDefs(const QString &memberName,const QString &className,
mdist
=
m
;
cd
=
mcd
;
md
=
mmd
;
fd
=
0
;
}
}
if
(
argList
)
...
...
@@ -1778,7 +1884,6 @@ bool getDefs(const QString &memberName,const QString &className,
mdist
=
m
;
cd
=
mcd
;
md
=
mmd
;
fd
=
0
;
}
}
mmd
=
mn
->
next
();
...
...
@@ -1788,11 +1893,28 @@ bool getDefs(const QString &memberName,const QString &className,
return
mdist
<
maxInheritanceDepth
;
}
}
else
// maybe an
unrelated
member ?
else
// maybe an
namespace or file
member ?
{
MemberName
*
mn
;
if
((
mn
=
functionNameDict
[
memberName
]))
if
((
mn
=
functionNameDict
[
memberName
]))
// name is known
{
NamespaceDef
*
fnd
=
0
;
if
(
className
.
length
()
>
0
&&
(
fnd
=
namespaceDict
[
className
])
&&
fnd
->
hasDocumentation
())
{
// inside a namespace
MemberDef
*
mmd
=
mn
->
first
();
while
(
mmd
)
{
if
(
mmd
->
getNamespace
()
==
fnd
&&
mmd
->
hasDocumentation
())
{
// namespace is found
nd
=
fnd
;
md
=
mmd
;
return
TRUE
;
}
mmd
=
mn
->
next
();
}
}
// maybe a file member (e.g. global function or variable)
md
=
mn
->
first
();
while
(
md
)
{
...
...
@@ -1801,7 +1923,6 @@ bool getDefs(const QString &memberName,const QString &className,
fd
=
md
->
getFileDef
();
if
(
fd
&&
fd
->
hasDocumentation
())
{
cd
=
0
;
return
TRUE
;
}
}
...
...
@@ -1828,12 +1949,18 @@ void generateClassRef(OutputList &ol,const char *clName,const char *linkTxt)
ol
.
docify
(
linkText
);
return
;
}
ClassDef
*
cd
;
ClassDef
*
cd
=
0
;
NamespaceDef
*
nd
=
0
;
if
((
cd
=
getClass
(
className
))
&&
cd
->
isVisible
())
{
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
classFil
e
(),
0
,
linkText
);
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBas
e
(),
0
,
linkText
);
if
(
!
cd
->
isReference
())
ol
.
writePageRef
(
cd
->
name
(),
0
);
}
else
if
((
nd
=
namespaceDict
[
className
])
&&
nd
->
hasDocumentation
())
{
ol
.
writeObjectLink
(
nd
->
getReference
(),
nd
->
getOutputFileBase
(),
0
,
linkText
);
ol
.
writePageRef
(
nd
->
name
(),
0
);
}
else
ol
.
docify
(
linkText
);
}
...
...
@@ -1887,8 +2014,11 @@ void generateRef(OutputList &ol,const char *clName,
}
// extract scope
QString
scopeStr
;
if
(
scopePos
>
0
)
scopeStr
=
tmpName
.
left
(
scopePos
);
else
scopeStr
=
clName
;
QString
scopeContext
=
clName
;
QString
scopeUser
;
if
(
scopePos
>
0
)
scopeUser
=
tmpName
.
left
(
scopePos
);
//printf("scopeContext=%s scopeUser=%s\n",scopeContext.data(),scopeUser.data());
// extract name
int
startNamePos
=
scopePos
!=-
1
?
scopePos
+
2
:
0
;
...
...
@@ -1899,43 +2029,59 @@ void generateRef(OutputList &ol,const char *clName,
QString
argsStr
;
if
(
bracePos
!=-
1
)
argsStr
=
tmpName
.
right
(
tmpName
.
length
()
-
bracePos
);
bool
explicitLink
=
TRUE
;
// create a default link text if none was explicitly given
bool
explicitLink
=
TRUE
;
if
(
linkText
.
isNull
())
{
if
(
!
scope
Str
.
isNull
()
&&
scopePos
>
0
)
linkText
=
scopeSt
r
+
"::"
;
if
(
!
scope
User
.
isEmpty
())
linkText
=
scopeUse
r
+
"::"
;
linkText
+=
nameStr
;
explicitLink
=
FALSE
;
}
//printf("scope=`%s' name=`%s' arg=`%s' linkText=`%s'\n",
// scopeStr.data(),nameStr.data(),argsStr.data(),linkText.data());
//Define *d=0;
MemberDef
*
md
;
ClassDef
*
cd
;
FileDef
*
fd
;
MemberDef
*
md
=
0
;
ClassDef
*
cd
=
0
;
FileDef
*
fd
=
0
;
NamespaceDef
*
nd
=
0
;
int
scopeOffset
=
scopeContext
.
length
();
do
{
QString
totalScope
=
scopeUser
.
copy
();
if
(
scopeOffset
>
0
)
{
if
(
!
totalScope
.
isEmpty
())
totalScope
.
prepend
(
"::"
);
totalScope
.
prepend
(
scopeContext
.
left
(
scopeOffset
));
}
//printf("Try with totalScope=`%s'\n",totalScope.data());
// check if nameStr is a member or global.
if
(
getDefs
(
nameStr
,
scopeStr
,
argsStr
,
md
,
cd
,
f
d
))
if
(
getDefs
(
nameStr
,
totalScope
,
argsStr
,
md
,
cd
,
fd
,
n
d
))
{
QString
anchor
=
md
->
hasDocumentation
()
?
md
->
anchor
()
:
0
;
QString
cName
,
aName
;
if
(
cd
)
// nameStr is a member of cd
{
//printf("addObjectLink(%s,%s,%s,%s)\n",cd->getReference(),
// cd->classFile(),anchor.data(),resultName.stripWhiteSpace().data());
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
classFile
(),
anchor
,
linkText
.
stripWhiteSpace
());
// cd->getOutputFileBase(),anchor.data(),resultName.stripWhiteSpace().data());
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
anchor
,
linkText
.
stripWhiteSpace
());
cName
=
cd
->
name
();
aName
=
md
->
anchor
();
}
else
if
(
nd
)
// nameStr is a member of nd
{
ol
.
writeObjectLink
(
nd
->
getReference
(),
nd
->
getOutputFileBase
(),
anchor
,
linkText
.
stripWhiteSpace
());
cName
=
nd
->
name
();
aName
=
md
->
anchor
();
}
else
if
(
fd
)
// nameStr is a global in file fd
{
//printf("addFileLink(%s,%s,%s)\n",fd->diskNam
e(),anchor.data(),
//printf("addFileLink(%s,%s,%s)\n",fd->getOutputFileBas
e(),anchor.data(),
// resultName.stripWhiteSpace().data());
ol
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
diskNam
e
(),
anchor
,
linkText
.
stripWhiteSpace
());
ol
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
getOutputFileBas
e
(),
anchor
,
linkText
.
stripWhiteSpace
());
cName
=
fd
->
name
();
aName
=
md
->
anchor
();
}
...
...
@@ -1957,30 +2103,34 @@ void generateRef(OutputList &ol,const char *clName,
// generate the page reference (for LaTeX)
if
(
cName
.
length
()
>
0
||
aName
.
length
()
>
0
)
{
if
(
/*md->detailsAreVisible() &&*/
(
(
cd
&&
!
cd
->
isReference
()
&&
// (cd->hasDocumentation() || !hideClassFlag) &&
// (cd->protection()!=Private || extractPrivateFlag)
cd
->
isVisible
()
)
||
(
fd
&&
!
fd
->
isReference
())
if
(
(
cd
&&
!
cd
->
isReference
()
&&
cd
->
isVisible
())
||
(
fd
&&
!
fd
->
isReference
())
||
(
nd
/* TODO: && !nd->isReference() */
)
)
)
ol
.
writePageRef
(
cName
,
aName
);
{
ol
.
writePageRef
(
cName
,
aName
);
}
}
// else if (!nameStr.isNull() && (d=defineDict[nameStr]))
// // check if nameStr is perhaps a define
// {
// if (d->hasDocumentation() && d->fileDef)
// {
// ol.writeObjectLink(0,d->fileDef->diskName(),d->anchor,
// linkText.stripWhiteSpace());
// if (!explicitLink) ol.docify(argsStr);
// }
// }
else
// nameStr is a false alarm or a typo.
{
return
;
}
// else if (!nameStr.isNull() && (d=defineDict[nameStr]))
// // check if nameStr is perhaps a define
// {
// if (d->hasDocumentation() && d->fileDef)
// {
// ol.writeObjectLink(0,d->fileDef->getOutputFileBase(),d->anchor,
// linkText.stripWhiteSpace());
// if (!explicitLink) ol.docify(argsStr);
// }
// }
if
(
scopeOffset
==
0
)
scopeOffset
=-
1
;
else
if
((
scopeOffset
=
scopeContext
.
findRev
(
"::"
,
scopeOffset
-
1
))
==-
1
)
scopeOffset
=
0
;
}
while
(
scopeOffset
>=
0
);
// nothing found
if
(
rt
)
ol
.
docify
(
rt
);
else
...
...
@@ -1988,7 +2138,6 @@ void generateRef(OutputList &ol,const char *clName,
ol
.
docify
(
linkText
);
if
(
!
argsStr
.
isNull
())
ol
.
docify
(
argsStr
);
}
}
return
;
}
...
...
@@ -2016,7 +2165,7 @@ void generateLink(OutputList &ol,const char *clName,
else
if
((
fd
=
findFileDef
(
&
inputNameDict
,
linkRef
,
ambig
))
&&
fd
->
hasDocumentation
())
// link to documented input file
ol
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
diskNam
e
(),
0
,
lt
);
ol
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
getOutputFileBas
e
(),
0
,
lt
);
else
// probably a class or member reference
generateRef
(
ol
,
clName
,
lr
,
inSeeBlock
,
lt
);
}
...
...
@@ -2030,7 +2179,7 @@ void generateFileRef(OutputList &ol,const char *name,const char *text)
if
((
fd
=
findFileDef
(
&
inputNameDict
,
name
,
ambig
))
&&
fd
->
hasDocumentation
())
// link to documented input file
ol
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
diskNam
e
(),
0
,
linkText
);
ol
.
writeObjectLink
(
fd
->
getReference
(),
fd
->
getOutputFileBas
e
(),
0
,
linkText
);
else
ol
.
docify
(
linkText
);
}
...
...
@@ -2172,3 +2321,17 @@ void showFileDefMatches(const FileNameDict *fnDict,const char *n)
}
}
//----------------------------------------------------------------------
void
setFileNameForSections
(
QList
<
QString
>
*
anchorList
,
const
char
*
fileName
)
{
if
(
!
anchorList
)
return
;
QString
*
s
=
anchorList
->
first
();
while
(
s
)
{
SectionInfo
*
si
;
if
(
!
s
->
isEmpty
()
&&
(
si
=
sectionDict
[
*
s
]))
si
->
fileName
=
fileName
;
s
=
anchorList
->
next
();
}
}
src/util.h
View file @
e04496cb
...
...
@@ -46,7 +46,8 @@ extern QString dateToString(bool);
//extern OutputList linkifyText(const char *clName,const char *name,
// const char *text);
extern
bool
getDefs
(
const
QString
&
memberName
,
const
QString
&
className
,
const
char
*
,
MemberDef
*&
md
,
ClassDef
*&
cd
,
FileDef
*&
fd
);
const
char
*
,
MemberDef
*&
md
,
ClassDef
*&
cd
,
FileDef
*&
fd
,
NamespaceDef
*&
nd
);
extern
void
generateRef
(
OutputList
&
ol
,
const
char
*
,
const
char
*
,
bool
inSeeBlock
,
const
char
*
=
0
);
extern
void
generateLink
(
OutputList
&
ol
,
const
char
*
,
...
...
@@ -78,5 +79,8 @@ void startFile(OutputList &ol,const char *name,
void
endFile
(
OutputList
&
ol
,
bool
external
=
FALSE
);
void
writeQuickLinks
(
OutputList
&
ol
,
bool
compact
,
bool
external
=
FALSE
);
QString
argListToString
(
ArgumentList
*
al
);
QString
generateMarker
(
int
id
);
void
writeExample
(
OutputList
&
ol
,
ExampleList
*
el
);
void
setFileNameForSections
(
QList
<
QString
>
*
anchorList
,
const
char
*
fileName
);
#endif
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