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
d4bdeb54
Commit
d4bdeb54
authored
Dec 15, 1999
by
mueller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mods for doxygen-0.49-991003
parent
79bf453d
Changes
68
Show whitespace changes
Inline
Side-by-side
Showing
68 changed files
with
2516 additions
and
630 deletions
+2516
-630
INSTALL
INSTALL
+52
-18
Makefile.in
Makefile.in
+16
-12
README
README
+2
-2
VERSION
VERSION
+1
-1
configure
configure
+40
-26
Doxyfile
doc/Doxyfile
+15
-1
Makefile.in
doc/Makefile.in
+12
-0
Makefile.latex
doc/Makefile.latex
+17
-1
Makefile.win.in
doc/Makefile.win.in
+13
-0
commands.doc
doc/commands.doc
+116
-8
config.doc
doc/config.doc
+203
-12
doxygen.sty
doc/doxygen.sty
+13
-0
doxygen_manual.tex
doc/doxygen_manual.tex
+21
-1
doxygen_usage.doc
doc/doxygen_usage.doc
+5
-1
faq.doc
doc/faq.doc
+16
-4
index.doc
doc/index.doc
+6
-1
language.doc
doc/language.doc
+29
-0
output.doc
doc/output.doc
+48
-0
starting.doc
doc/starting.doc
+6
-6
trouble.doc
doc/trouble.doc
+2
-2
Makefile.in
examples/Makefile.in
+1
-1
classdef.cpp
src/classdef.cpp
+26
-12
classdef.h
src/classdef.h
+6
-4
code.l
src/code.l
+5
-1
config.h
src/config.h
+4
-0
config.l
src/config.l
+61
-1
declinfo.l
src/declinfo.l
+2
-2
definition.cpp
src/definition.cpp
+14
-0
definition.h
src/definition.h
+1
-13
doxygen.cpp
src/doxygen.cpp
+279
-123
doxygen.h
src/doxygen.h
+1
-0
entry.cpp
src/entry.cpp
+2
-0
entry.h
src/entry.h
+3
-0
filedef.cpp
src/filedef.cpp
+6
-8
filename.h
src/filename.h
+1
-0
formula.h
src/formula.h
+1
-0
groupdef.cpp
src/groupdef.cpp
+11
-6
htmlgen.cpp
src/htmlgen.cpp
+38
-7
htmlgen.h
src/htmlgen.h
+16
-12
index.cpp
src/index.cpp
+161
-40
index.h
src/index.h
+1
-0
language.cpp
src/language.cpp
+4
-0
latexgen.cpp
src/latexgen.cpp
+201
-71
latexgen.h
src/latexgen.h
+15
-12
mangen.cpp
src/mangen.cpp
+2
-6
mangen.h
src/mangen.h
+12
-8
memberdef.cpp
src/memberdef.cpp
+112
-59
memberdef.h
src/memberdef.h
+5
-1
membergroup.cpp
src/membergroup.cpp
+2
-2
memberlist.cpp
src/memberlist.cpp
+2
-2
membername.h
src/membername.h
+2
-0
namespacedef.cpp
src/namespacedef.cpp
+4
-4
namespacedef.h
src/namespacedef.h
+2
-0
outputgen.h
src/outputgen.h
+13
-8
outputlist.cpp
src/outputlist.cpp
+5
-3
outputlist.h
src/outputlist.h
+29
-19
pre.l
src/pre.l
+2
-2
scanner.l
src/scanner.l
+159
-32
section.h
src/section.h
+1
-0
tag.l
src/tag.l
+1
-1
translator.h
src/translator.h
+21
-4
translator_es.h
src/translator_es.h
+1
-1
translator_fr.h
src/translator_fr.h
+427
-25
translator_it.h
src/translator_it.h
+43
-6
translator_nl.h
src/translator_nl.h
+49
-0
translator_se.h
src/translator_se.h
+59
-14
util.cpp
src/util.cpp
+66
-22
util.h
src/util.h
+4
-2
No files found.
INSTALL
View file @
d4bdeb54
DOXYGEN Version 0.49-99
0901
DOXYGEN Version 0.49-99
1003
CONTENTS
CONTENTS
--------
--------
...
@@ -8,14 +8,15 @@ CONTENTS
...
@@ -8,14 +8,15 @@ CONTENTS
* HTML related problems
* HTML related problems
* LaTeX related problems
* LaTeX related problems
* HP-UX / Digital UNIX problems
* HP-UX / Digital UNIX problems
* gcc 2.7.2.x related problems
INSTALLATION INSTRUCTIONS FOR UNIX:
INSTALLATION INSTRUCTIONS FOR UNIX:
-----------------------------------
-----------------------------------
1. Unpack the archive, unless you already have:
1. Unpack the archive, unless you already have:
gunzip doxygen-0.49-99
0901
.src.tar.gz # uncompress the archive
gunzip doxygen-0.49-99
1003
.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-99
0901
.src.tar # unpack it
tar xf doxygen-0.49-99
1003
.src.tar # unpack it
2. Run the configure script:
2. Run the configure script:
...
@@ -26,6 +27,9 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
...
@@ -26,6 +27,9 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
interpreter. It will report what it finds. Use configure --help
interpreter. It will report what it finds. Use configure --help
to see how to override or change the default or detected settings.
to see how to override or change the default or detected settings.
If you have downloaded the binary distribution, you can proceed
with step 6 now.
3. Compile the program by running make:
3. Compile the program by running make:
make
make
...
@@ -34,14 +38,14 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
...
@@ -34,14 +38,14 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
doxytag, and doxysearch) should be available in the bin directory of the
doxytag, and doxysearch) should be available in the bin directory of the
distribution.
distribution.
5
. Generate the user manual (optional, will also be done in step 6).
4
. Generate the user manual (optional, will also be done in step 6).
make docs
make docs
t
o let doxygen generate the HTML and LaTeX documentation.
T
o let doxygen generate the HTML and LaTeX documentation.
(you will need the stream editor `sed' for this)
(you will need the stream editor `sed' for this)
make ps
5.
make ps
to generate a postscript version of the manual.
to generate a postscript version of the manual.
(you will need latex and dvips for this)
(you will need latex and dvips for this)
...
@@ -58,14 +62,17 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
...
@@ -58,14 +62,17 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
make install
make install
Binaries are install to the directory <prefix>/bin
Binaries are installed in the directory <prefix>/bin
Documentation and examples to the directory <prefix>/share/doxygen
Documentation and examples in the directory <prefix>/doc/doxygen
<prefix> defaults to /usr but can be changed with the --prefix
option of the configure script.
INSTALLATION INSTRUCTIONS FOR WINDOWS:
INSTALLATION INSTRUCTIONS FOR WINDOWS:
--------------------------------------
--------------------------------------
Currently, only Microsoft Visual C++ (version 5.0) is supported.
Currently, only Microsoft Visual C++ (version 5.0) is supported.
(For other
platform
s you may need to edit the perl script in wintools/make.pl
(For other
compiler
s you may need to edit the perl script in wintools/make.pl
a bit). Let me know what you had to change if you got Doxygen working with
a bit). Let me know what you had to change if you got Doxygen working with
another windows compiler.
another windows compiler.
...
@@ -80,9 +87,10 @@ You will need to install the windows/dos versions of following tools:
...
@@ -80,9 +87,10 @@ You will need to install the windows/dos versions of following tools:
- Qt-1.xx (Qt-2.xx should also work, but I didn't test it for Windows)
- Qt-1.xx (Qt-2.xx should also work, but I didn't test it for Windows)
(Hint: only the tools section is required, so you can use the free
(Hint: only the tools section is required, so you can use the free
X-windows version as well!)
X-windows version as well!)
You can get it at http://www.troll.no
- Microsoft Visual C++ (I only tested with version 5.0).
- Microsoft Visual C++ (I only tested with version 5.0).
Use the vcvars32.bat to set the environment variables
Use the vcvars32.bat to set the environment variables
(if
not selected
to do this automatically during installation).
(if
you did not select
to do this automatically during installation).
- To generate LaTeX documentation or formulas in HTML you need the tools:
- To generate LaTeX documentation or formulas in HTML you need the tools:
latex, dvips and gswin32
latex, dvips and gswin32
To get these working under Windows install the fpTeX distribution
To get these working under Windows install the fpTeX distribution
...
@@ -96,15 +104,17 @@ You will need to install the windows/dos versions of following tools:
...
@@ -96,15 +104,17 @@ You will need to install the windows/dos versions of following tools:
`objects' and `bin' manually in the root of the distribution before
`objects' and `bin' manually in the root of the distribution before
compiling.
compiling.
Make sure all tools are accessible from the command-line (add them to the
Open a dos box.
PATH environment if needed).
Make sure all tools (i.e. nmake, latex, gswin32, dvips, sed, flex, bison,
cl, rm and perl), are accessible from the command-line (add them to the
PATH environment variable if needed).
Open a dos box,
goto the doxygen root dir and type:
goto the doxygen root dir and type:
make.bat
make.bat
This should build the executables doxygen.exe, doxytag.exe, and doxysearch.exe
This should build the executables doxygen.exe, doxytag.exe, and doxysearch.exe
(The compiler should not produce any warnings or errors).
(The compiler should not produce any
serious
warnings or errors).
To build the examples type:
To build the examples type:
...
@@ -125,8 +135,8 @@ The manual should now be here latex/doxygen_manual.ps
...
@@ -125,8 +135,8 @@ The manual should now be here latex/doxygen_manual.ps
KNOWN CONFIGURATION PROBLEMS
KNOWN CONFIGURATION PROBLEMS
QT RELATED PROBLEMS:
QT RELATED PROBLEMS:
- Qt-2.01 contains a bug that
- Qt-2.01 contains a bug that
makes some special characters appear as
question marks (?) in the HTML output.
HTML RELATED PROBLEMS:
HTML RELATED PROBLEMS:
- the indent continuously increases.
- the indent continuously increases.
...
@@ -168,7 +178,31 @@ HP-UX / DIGITAL UNIX PROBLEMS:
...
@@ -168,7 +178,31 @@ HP-UX / DIGITAL UNIX PROBLEMS:
defined (__sparc) || defined (__sgi) || defined (__osf__)
defined (__sparc) || defined (__sgi) || defined (__osf__)
#include <alloca.h>
#include <alloca.h>
This seems to be a problem with bison, but I don't know how to fix it.
Alternatively, one could fix the problem at the bison side.
Here is patch for bison.simple (provided by Andre Johansen):
------------------------------------------------------------------------------
--- bison.simple~ Tue Nov 18 11:45:53 1997
+++ bison.simple Mon Jan 26 15:10:26 1998
@@ -27,7 +27,7 @@
#ifdef __GNUC__
#define alloca __builtin_alloca
#else /* not GNU C. */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || defined (__alpha)
#include <alloca.h>
#else /* not sparc */
#if defined (MSDOS) && !defined (__TURBOC__)
------------------------------------------------------------------------------
GCC 2.7.2.X PROBLEMS
Old versions of the GNU compiler have problems with constant strings
containing characters with ascii codes >127. Therefore the compiler will
fail to compile some of the translator_xx.h files.
A workaround, if you are planning to use the English translation only,
is to configure doxygen with the --english-only option.
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
That's it!
That's it!
...
@@ -180,4 +214,4 @@ The latest version of doxygen can be obtained at
...
@@ -180,4 +214,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Enjoy,
Dimitri van Heesch (0
1 Septem
ber 1999)
Dimitri van Heesch (0
3 Octo
ber 1999)
Makefile.in
View file @
d4bdeb54
...
@@ -19,17 +19,18 @@ distclean: clean
...
@@ -19,17 +19,18 @@ distclean: clean
install
:
install
:
$(INSTTOOL)
-d
$(INSTALL)
/bin
$(INSTTOOL)
-d
$(INSTALL)
/bin
$(INSTTOOL)
-d
$(INSTALL)
/
share/doxygen/doc
$(INSTTOOL)
-d
$(INSTALL)
/
doc/doxygen
$(INSTTOOL)
-d
$(INSTALL)
/
share/doxygen/examples
$(INSTTOOL)
-d
$(INSTALL)
/
doc/doxygen
$(INSTTOOL)
-m
755 bin/doxy
*
$(INSTALL)
/bin
$(INSTTOOL)
-m
755 bin/doxy
*
$(INSTALL)
/bin
cp
-r
doc
$(INSTALL)
/share/doxygen
cp
-r
doc
$(INSTALL)
/doc/doxygen
cp
-r
examples
$(INSTALL)
/share/doxygen
cp
-r
examples
$(INSTALL)
/doc/doxygen
echo
"DOXYGEN =
$(INSTALL)
"
>
$(INSTALL)
/share/doxygen/doc/Makefile
echo
"DOXYGEN =
$(INSTALL)
"
>
$(INSTALL)
/doc/doxygen/doc/Makefile
echo
"DOXYDOCS =
$(INSTALL)
/share/doxygen"
>>
$(INSTALL)
/share/doxygen/doc/Makefile
echo
"DOXYDOCS = .."
>>
$(INSTALL)
/doc/doxygen/doc/Makefile
echo
"VERSION =
$(VERSION)
"
>>
$(INSTALL)
/share/doxygen/doc/Makefile
echo
"VERSION =
$(VERSION)
"
>>
$(INSTALL)
/doc/doxygen/doc/Makefile
cat
doc/Makefile.in
>>
$(INSTALL)
/share/doxygen/doc/Makefile
cat
doc/Makefile.in
>>
$(INSTALL)
/doc/doxygen/doc/Makefile
cd
$(INSTALL)
/share/doxygen/examples
;
$(MAKE)
cd
$(INSTALL)
/doc/doxygen/examples
;
$(MAKE)
cd
$(INSTALL)
/share/doxygen/doc
;
$(MAKE)
cd
$(INSTALL)
/doc/doxygen/doc
;
$(MAKE)
rm
-rf
$(INSTALL)
/doc/doxygen/doc
docs
:
FORCE
docs
:
FORCE
cd
examples
;
$(MAKE)
cd
examples
;
$(MAKE)
...
@@ -38,10 +39,13 @@ docs: FORCE
...
@@ -38,10 +39,13 @@ docs: FORCE
ps
:
docs
ps
:
docs
cd
latex
;
$(MAKE)
cd
latex
;
$(MAKE)
pdf
:
docs
cd
latex
;
$(MAKE)
archive
:
distclean
archive
:
distclean
tar
zcvf dx
`
date
+%y%m%d
`
.tgz tmake doc wintools examples bin objects
\
tar
zcvf dx
`
date
+%y%m%d
`
.tgz tmake doc wintools examples bin objects
\
src configure
Makefile.in Makefile.win.in INSTALL make.bat
\
src configure
configure.bin Makefile.in Makefile.win.in INSTALL
\
LANGUAGE.HOWTO LICENSE PLATFORMS VERSION
make.bat
LANGUAGE.HOWTO LICENSE PLATFORMS VERSION
src/version.cpp
:
Makefile
src/version.cpp
:
Makefile
echo
"char versionString[]=
\"
$(VERSION)
\"
;"
>
src/version.cpp
echo
"char versionString[]=
\"
$(VERSION)
\"
;"
>
src/version.cpp
...
...
README
View file @
d4bdeb54
DOXYGEN Version 0.49-99
0901
DOXYGEN Version 0.49-99
1003
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Enjoy,
Dimitri van Heesch (0
1 Septem
ber 1999)
Dimitri van Heesch (0
3 Octo
ber 1999)
VERSION
View file @
d4bdeb54
0.49-99
0901
0.49-99
1003
configure
View file @
d4bdeb54
...
@@ -21,8 +21,9 @@ f_shared=YES
...
@@ -21,8 +21,9 @@ f_shared=YES
f_make
=
NO
f_make
=
NO
f_perl
=
NO
f_perl
=
NO
f_plf_auto
=
NO
f_plf_auto
=
NO
f_prefix
=
/usr
/local
f_prefix
=
/usr
f_insttool
=
install
f_insttool
=
install
f_english
=
NO
while
test
-n
"
$1
"
;
do
while
test
-n
"
$1
"
;
do
case
$1
in
case
$1
in
...
@@ -41,6 +42,9 @@ while test -n "$1"; do
...
@@ -41,6 +42,9 @@ while test -n "$1"; do
--debug
)
--debug
)
f_debug
=
YES
f_debug
=
YES
;;
;;
--english-only
)
f_english
=
YES
;;
--platform
)
--platform
)
shift
;
f_platform
=
$1
shift
;
f_platform
=
$1
;;
;;
...
@@ -68,12 +72,12 @@ done
...
@@ -68,12 +72,12 @@ done
if
test
"
$f_help
"
=
y
;
then
if
test
"
$f_help
"
=
y
;
then
cat
<<
EOF
cat
<<
EOF
Usage:
$0
[--help] [--shared] [--static] [--release] [--debug]
Usage:
$0
[--help] [--shared] [--static] [--release] [--debug]
[--perl name] [--make name] [--platform target] [--prefix]
[--perl name] [--make name] [--platform target] [--prefix
dir
]
[--install]
[--install
name] [--english-only
]
Options:
Options:
ll
--help
Print this message
--help
Print this help
--shared | --static Build using shared or static linking
--shared | --static Build using shared or static linking
[default: shared]
[default: shared]
...
@@ -91,11 +95,13 @@ Options:
...
@@ -91,11 +95,13 @@ Options:
See PLATFORMS for a list of possibilities
See PLATFORMS for a list of possibilities
--prefix dir Installation prefix directory
--prefix dir Installation prefix directory
[default: /usr/local
]
[default: /usr
]
--install name name of the GNU install tool
--install name
Use \`name' as the
name of the GNU install tool
[default: install]
[default: install]
--english-only Include support for English only.
EOF
EOF
test
"
$f_error
"
=
y
&&
exit
1
test
"
$f_error
"
=
y
&&
exit
1
exit
0
;
exit
0
;
...
@@ -196,11 +202,11 @@ if test -z "$QTDIR"; then
...
@@ -196,11 +202,11 @@ if test -z "$QTDIR"; then
echo
"check your Qt installation!"
echo
"check your Qt installation!"
exit
2
exit
2
else
else
if
!
test
-d
"
$QTDIR
/lib"
;
then
if
test
!
-d
"
$QTDIR
/lib"
;
then
echo
"QTDIR is set, but library directory does not exist!"
echo
"QTDIR is set, but library directory does not exist!"
exit
2
exit
2
fi
fi
if
!
test
-d
"
$QTDIR
/include"
;
then
if
test
!
-d
"
$QTDIR
/include"
;
then
echo
"QTDIR is set, but include directory does not exist!"
echo
"QTDIR is set, but include directory does not exist!"
exit
2
exit
2
fi
fi
...
@@ -218,9 +224,11 @@ if test "$f_make" = NO; then
...
@@ -218,9 +224,11 @@ if test "$f_make" = NO; then
for
i
in
$make_names
;
do
for
i
in
$make_names
;
do
for
j
in
$make_dirs
;
do
for
j
in
$make_dirs
;
do
if
test
-x
"
$j
/
$i
"
;
then
if
test
-x
"
$j
/
$i
"
;
then
if
test
-n
"
`
$j
/
$i
--version
2>/dev/null |
grep
GNU
`
"
;
then
make_prog
=
"
$j
/
$i
"
make_prog
=
"
$j
/
$i
"
break
2
break
2
fi
fi
fi
done
done
done
done
f_make
=
"
$make_prog
"
f_make
=
"
$make_prog
"
...
@@ -281,18 +289,24 @@ RM = rm -f
...
@@ -281,18 +289,24 @@ RM = rm -f
VERSION = `cat VERSION`
VERSION = `cat VERSION`
INSTALL =
$f_prefix
INSTALL =
$f_prefix
INSTTOOL =
$f_insttool
INSTTOOL =
$f_insttool
DOXYDOCS =
$PWD
DOXYDOCS =
..
export TMAKEPATH
export TMAKEPATH
EOF
EOF
touch
.tmakeconfig
touch
.tmakeconfig
if
test
"
$f_shared
"
=
NO
;
then
if
test
"
$f_shared
"
=
NO
;
then
cat
>
.tmakeconfig
<<
EOF
cat
>
>
.tmakeconfig
<<
EOF
TMAKE_LFLAGS = -static
TMAKE_LFLAGS = -static
EOF
EOF
fi
fi
if
test
"
$f_english
"
=
YES
;
then
cat
>>
.tmakeconfig
<<
EOF
TMAKE_CXXFLAGS = -DENGLISH_ONLY
EOF
fi
for
i
in
Makefile.in src/Makefile.in examples/Makefile.in doc/Makefile.in
;
do
for
i
in
Makefile.in src/Makefile.in examples/Makefile.in doc/Makefile.in
;
do
SRC
=
$i
SRC
=
$i
DST
=
`
echo
$i
|sed
's%\(.*\).in$%\1%'
`
DST
=
`
echo
$i
|sed
's%\(.*\).in$%\1%'
`
...
...
doc/Doxyfile
View file @
d4bdeb54
#
# $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.
PROJECT_NAME =
PROJECT_NAME =
OUTPUT_DIRECTORY = ..
OUTPUT_DIRECTORY = ..
HTML_HEADER =
HTML_HEADER =
...
@@ -14,7 +27,7 @@ ENABLE_PREPROCESSING = NO
...
@@ -14,7 +27,7 @@ ENABLE_PREPROCESSING = NO
INPUT = index.doc install.doc starting.doc faq.doc trouble.doc \
INPUT = index.doc install.doc starting.doc faq.doc trouble.doc \
history.doc features.doc \
history.doc features.doc \
doxygen_usage.doc doxytag_usage.doc doxysearch_usage.doc \
doxygen_usage.doc doxytag_usage.doc doxysearch_usage.doc \
installdox_usage.doc autolink.doc \
installdox_usage.doc
output.doc
autolink.doc \
config.doc commands.doc htmlcmds.doc language.doc
config.doc commands.doc htmlcmds.doc language.doc
FILE_PATTERNS = *.cpp *.h *.doc
FILE_PATTERNS = *.cpp *.h *.doc
EXAMPLE_PATH = ../examples
EXAMPLE_PATH = ../examples
...
@@ -29,3 +42,4 @@ DOC_URL =
...
@@ -29,3 +42,4 @@ DOC_URL =
DOC_ABSPATH =
DOC_ABSPATH =
BIN_ABSPATH = /usr/local/bin/
BIN_ABSPATH = /usr/local/bin/
EXT_DOC_PATHS =
EXT_DOC_PATHS =
PDF_HYPERLINKS = YES
doc/Makefile.in
View file @
d4bdeb54
#
# $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.
all
:
FORCE
all
:
FORCE
DOXYGEN_DOCDIR
=
$(DOXYDOCS)
;
\
DOXYGEN_DOCDIR
=
$(DOXYDOCS)
;
\
...
...
doc/Makefile.latex
View file @
d4bdeb54
all
:
doxygen_manual.ps
#
# $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.
all
:
doxygen_manual.pdf
doxygen_manual.pdf
:
doxygen_manual.ps
ps2pdf doxygen_manual.ps doxygen_manual.pdf
doxygen_manual.ps
:
doxygen_manual.dvi
doxygen_manual.ps
:
doxygen_manual.dvi
dvips
-o
doxygen_manual.ps doxygen_manual.dvi
dvips
-o
doxygen_manual.ps doxygen_manual.dvi
...
...
doc/Makefile.win.in
View file @
d4bdeb54
#
# $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.
all
:
FORCE
all
:
FORCE
set
DOXYGEN_DOCDIR
=
file:///
$(DOXYGEN)
set
DOXYGEN_DOCDIR
=
file:///
$(DOXYGEN)
set
VERSION
=
$(VERSION)
set
VERSION
=
$(VERSION)
...
...
doc/commands.doc
View file @
d4bdeb54
...
@@ -70,12 +70,14 @@ documentation:
...
@@ -70,12 +70,14 @@ documentation:
<li> \refitem cmdfile \file
<li> \refitem cmdfile \file
<li> \refitem cmdfn \fn
<li> \refitem cmdfn \fn
<li> \refitem cmdhtmlonly \htmlonly
<li> \refitem cmdhtmlonly \htmlonly
<li> \refitem cmdimage \image
<li> \refitem cmdinclude \include
<li> \refitem cmdinclude \include
<li> \refitem cmdingroup \ingroup
<li> \refitem cmdingroup \ingroup
<li> \refitem cmdinternal \internal
<li> \refitem cmdinternal \internal
<li> \refitem cmdlatexonly \latexonly
<li> \refitem cmdlatexonly \latexonly
<li> \refitem cmdline \line
<li> \refitem cmdline \line
<li> \refitem cmdlink \link
<li> \refitem cmdlink \link
<li> \refitem cmdmainpage \mainpage
<li> \refitem cmdnamespace \namespace
<li> \refitem cmdnamespace \namespace
<li> \refitem cmdoverload \overload
<li> \refitem cmdoverload \overload
<li> \refitem cmdpage \page
<li> \refitem cmdpage \page
...
@@ -84,6 +86,7 @@ documentation:
...
@@ -84,6 +86,7 @@ documentation:
<li> \refitem cmdref \ref
<li> \refitem cmdref \ref
<li> \refitem cmdrelates \relates
<li> \refitem cmdrelates \relates
<li> \refitem cmdreturn \return
<li> \refitem cmdreturn \return
<li> \refitem cmdretval \retval
<li> \refitem cmdsa \sa
<li> \refitem cmdsa \sa
<li> \refitem cmdsection \section
<li> \refitem cmdsection \section
<li> \refitem cmdskip \skip
<li> \refitem cmdskip \skip
...
@@ -286,6 +289,38 @@ Doxygen. Unrecognized commands are treated as normal text.
...
@@ -286,6 +289,38 @@ Doxygen. Unrecognized commands are treated as normal text.
This command writes the message `For internal use only' to the output.
This command writes the message `For internal use only' to the output.
All text after a \c \internal command is ignored.
All text after a \c \internal command is ignored.
<hr>
\subsection cmdmainpage \mainpage [(title)]
\addindex \mainpage
If the \\mainpage command is placed in a comment block the
block is used to customize the index page (in HTML) or
the first chapter (in \f$\mbox{\LaTeX}\f$).
The title argument is optional and replaces the default title that
doxygen normally generates.
Here is an example:
\verbatim
/*! \mainpage My Personal Index Page
*
* \section intro Introduction
*
* This is the introduction.
*
* \section install Installation
*
* \subsection step1 Step 1: Opening the box
*
* etc...
*/
\endverbatim
\sa section \ref cmdsection "\\section",
section \ref cmdsubsection "\\subsection" and
section \ref cmdpage "\\page".
<hr>
<hr>
\subsection cmdnamespace \namespace <name>
\subsection cmdnamespace \namespace <name>
...
@@ -339,6 +374,15 @@ Doxygen. Unrecognized commands are treated as normal text.
...
@@ -339,6 +374,15 @@ Doxygen. Unrecognized commands are treated as normal text.
for the corresponding HTML documentation that is generated by Doxygen.
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\endhtmlonly
\par notice:
The \<name\> argument consists of a combination of letters and number
digits. If you wish to use upper case letters (e.g. \c MYPAGE1), or
mixed case letters (e.g. \c MyPage1) in the \<name\> argument, you
should set \c CASE_SENSE_NAMES to \c YES. However, this is advisable
only if your file system is case sensitive. Otherwise (and for better
portability) you should use all lower case letters (e.g. \c mypage1)
for \<name\> in all references to the page.
\sa section \ref cmdsection "\\section", section
\sa section \ref cmdsection "\\section", section
\ref cmdsubsection "\\subsection", and section
\ref cmdsubsection "\\subsection", and section
\ref cmdref "\\ref".
\ref cmdref "\\ref".
...
@@ -543,6 +587,23 @@ Doxygen. Unrecognized commands are treated as normal text.
...
@@ -543,6 +587,23 @@ Doxygen. Unrecognized commands are treated as normal text.
\sa Section \ref cmdjdreturn "@return".
\sa Section \ref cmdjdreturn "@return".
<hr>
\subsection cmdretval \retval <return value> { description }
\addindex \retval
Starts a return value for a function with name
\<return value\>. Followed by a description of the return value.
The text of the paragraph that forms the description has no special
internal structure. All visual enhancement commands may be used inside the
paragraph.
Multiple adjacent \\retval commands will be joined into a single paragraph.
Each return value description will start on a new line.
The \\retval description ends when a blank line or some other
sectioning command is encountered.
\sa Section \ref cmdjdretval "@retval".
<hr>
<hr>
\subsection cmdsa \sa { references }
\subsection cmdsa \sa { references }
...
@@ -690,11 +751,17 @@ Doxygen. Unrecognized commands are treated as normal text.
...
@@ -690,11 +751,17 @@ Doxygen. Unrecognized commands are treated as normal text.
\addindex \dontinclude
\addindex \dontinclude
This command can be used to parse a source file without actually
This command can be used to parse a source file without actually
including it. Any class and member declarations inside the code
verbatim including it in the documentation (as the \\include command does).
This is useful if you want to divide the source file into smaller pieces and
add documentation between the pieces.
Source files or directories can be specified using the \c EXAMPLE_PATH tag
of Doxygen's configuration file.
The class and member declarations and definitions inside the code fragment
are `remembered' during the parsing of the comment block that contained
are `remembered' during the parsing of the comment block that contained
the \\dontinclude command.
the \\dontinclude command.
For line by line description of source files, one or more lines
For line by line description
s
of source files, one or more lines
of the example can be displayed using the \\line, \\skip, \\skipline, and
of the example can be displayed using the \\line, \\skip, \\skipline, and
\\until commands. An internal pointer is used for these commands. The
\\until commands. An internal pointer is used for these commands. The
\\dontinclude command sets the pointer to the first line of the example.
\\dontinclude command sets the pointer to the first line of the example.
...
@@ -717,8 +784,8 @@ Doxygen. Unrecognized commands are treated as normal text.
...
@@ -717,8 +784,8 @@ Doxygen. Unrecognized commands are treated as normal text.
\addindex \include
\addindex \include
This command can be used to include a source file as a block of code.
This command can be used to include a source file as a block of code.
The command takes the name of an include file as an argument.
The command takes the name of an include file as an argument.
Includ
e files or directories can be specified using the
Sourc
e files or directories can be specified using the
\c
INCLUD
E_PATH tag of Doxygen's configuration file.
\c
EXAMPL
E_PATH tag of Doxygen's configuration file.
Using the \\include command is equivalent to inserting the file into
Using the \\include command is equivalent to inserting the file into
the documentation block and surrounding it
the documentation block and surrounding it
...
@@ -728,10 +795,9 @@ Doxygen. Unrecognized commands are treated as normal text.
...
@@ -728,10 +795,9 @@ Doxygen. Unrecognized commands are treated as normal text.
duplication in case of example blocks that consist of multiple
duplication in case of example blocks that consist of multiple
source and header files.
source and header files.
For line by line description of source files, one or more lines
For a line by line description of a source files use the
of the example can be displayed using the \\line, \\skip, \\skipline, and
\\dontinclude command in combination with the \\line, \\skip, \\skipline,
\\until commands. An internal pointer is used for these command. The
and \\until commands.
\\include command sets the pointer to the first line of the example.
\sa section \ref cmdexample "\\example" and \ref cmddontinclude "\\dontinclude".
\sa section \ref cmdexample "\\example" and \ref cmddontinclude "\\dontinclude".
...
@@ -966,6 +1032,45 @@ Doxygen. Unrecognized commands are treated as normal text.
...
@@ -966,6 +1032,45 @@ Doxygen. Unrecognized commands are treated as normal text.
\sa section \ref cmdhtmlonly "\\htmlonly" and section
\sa section \ref cmdhtmlonly "\\htmlonly" and section
\ref cmdlatexonly "\\latexonly".
\ref cmdlatexonly "\\latexonly".
<hr>
\subsection cmdimage \image <format> <file> [<sizeindication>=<size>]
\addindex \image
Inserts an image into the documentation. This command is format
specific, so if you want to insert an image for more than one
format you'll have to repeat this command for each format.
The first argument specifies the output format. Currently, the
following values are supported: \c html and \c latex.
The second argument specifies the path and file name of the image.
If a relative path is used, this will be relative to the directory to
which the output of the particular format is written.
For the html format you may also
specify an URL. If the name contains spaces you'll have to put
quotes (") around it.
The third argument can be used to specify the width or height of the
image. This is only useful for \f$\mbox{\LaTeX}\f$ output
(i.e. format=latex). \c sizeindication can be either
\c width or \c height. The size should be a valid
size specifier in \f$\mbox{\LaTeX}\f$ (for example <code>10cm</code> or
<code>6in</code>).
\verbatim
/*! Here is a snapshot of my new application:
* \image html ../images/application.jpg
* \image latex ../images/application.eps width=10cm
*/
\endverbatim
\warning The image format for HTML is limited to what your
browser supports. For \f$\mbox{\LaTeX}\f$ the image format
must be an encapsulated postscipt (eps).
<br><br>
Doxygen does not check if an image exists or if it is in
the correct format. So \e you have to make sure this is the case!
<hr>
<hr>
\subsection cmdlatexonly \latexonly
\subsection cmdlatexonly \latexonly
...
@@ -1078,6 +1183,9 @@ The following command JavaDoc command are support.
...
@@ -1078,6 +1183,9 @@ The following command JavaDoc command are support.
\subsection cmdjdreturn @return { description of the return value }
\subsection cmdjdreturn @return { description of the return value }
\addindex @return
\addindex @return
Equivalent to \\return (see section \ref cmdreturn "\\return").
Equivalent to \\return (see section \ref cmdreturn "\\return").
\subsection cmdjdretval @retval <return value name> { return value description }
\addindex @retval
Equivalent to \\retval (see section \ref cmdretval "\\retval").
\subsection cmdjdsee @see { references }
\subsection cmdjdsee @see { references }
\addindex @see
\addindex @see
Equivalent to \\sa (see section \ref cmdsa "\\sa").
Equivalent to \\sa (see section \ref cmdsa "\\sa").
...
...
doc/config.doc
View file @
d4bdeb54
...
@@ -25,7 +25,7 @@ recursive-descent parser that is built into \c doxygen.
...
@@ -25,7 +25,7 @@ recursive-descent parser that is built into \c doxygen.
The
file
may
contain
tabs
and
newlines
for
formatting
purposes
.
The
file
may
contain
tabs
and
newlines
for
formatting
purposes
.
The
statements
in
the
file
are
case
-
sensitive
.
The
statements
in
the
file
are
case
-
sensitive
.
Comments
may
be
placed
anywhere
within
the
file
(
except
within
quotes
).
Comments
may
be
placed
anywhere
within
the
file
(
except
within
quotes
).
Comments
begin
with
the
\
c
#
character
and
end
at
the
end
of
the
Comments
begin
with
the
\#
character
and
end
at
the
end
of
the
line
.
line
.
The
file
essentially
consists
of
a
list
of
assignment
statements
.
The
file
essentially
consists
of
a
list
of
assignment
statements
.
...
@@ -38,11 +38,95 @@ as the last character of a line.
...
@@ -38,11 +38,95 @@ as the last character of a line.
Environment
variables
can
expanded
using
the
pattern
\
c
$(
ENV_VARIABLE_NAME
).
Environment
variables
can
expanded
using
the
pattern
\
c
$(
ENV_VARIABLE_NAME
).
The
configuration
options
can
be
divided
into
several
categories
.
The
configuration
options
can
be
divided
into
several
categories
.
Below
is
a
list
of
tags
that
are
recognized
for
each
category
.
Below
is
an
alphabetical
index
of
the
tags
that
are
recognized
followed
by
the
descriptions
of
the
tags
grouped
by
category
.
\
htmlonly
<
multicol
cols
=
3
>
<
ul
>
\
endhtmlonly
\
latexonly
\
footnotesize
\
begin
{
multicols
}{
3
}
\
begin
{
CompactList
}
\
endlatexonly
<
li
>
\
refitem
cfg_allexternals
ALLEXTERNALS
<
li
>
\
refitem
cfg_alphabetical_index
ALPHABETICAL_INDEX
<
li
>
\
refitem
cfg_bin_abspath
BIN_ABSPATH
<
li
>
\
refitem
cfg_brief_member_desc
BRIEF_MEMBER_DESC
<
li
>
\
refitem
cfg_case_sense_names
CASE_SENSE_NAMES
<
li
>
\
refitem
cfg_cgi_name
CGI_NAME
<
li
>
\
refitem
cfg_cgi_url
CGI_URL
<
li
>
\
refitem
cfg_class_diagrams
CLASS_DIAGRAMS
<
li
>
\
refitem
cfg_compact_latex
COMPACT_LATEX
<
li
>
\
refitem
cfg_disable_index
DISABLE_INDEX
<
li
>
\
refitem
cfg_doc_abspath
DOC_ABSPATH
<
li
>
\
refitem
cfg_doc_url
DOC_URL
<
li
>
\
refitem
cfg_enable_preprocessing
ENABLE_PREPROCESSING
<
li
>
\
refitem
cfg_example_path
EXAMPLE_PATH
<
li
>
\
refitem
cfg_exclude
EXCLUDE
<
li
>
\
refitem
cfg_exclude_patterns
EXCLUDE_PATTERNS
<
li
>
\
refitem
cfg_expand_only_predef
EXPAND_ONLY_PREDEF
<
li
>
\
refitem
cfg_ext_doc_paths
EXT_DOC_PATHS
<
li
>
\
refitem
cfg_extra_packages
EXTRA_PACKAGES
<
li
>
\
refitem
cfg_extract_all
EXTRACT_ALL
<
li
>
\
refitem
cfg_extract_private
EXTRACT_PRIVATE
<
li
>
\
refitem
cfg_file_patterns
FILE_PATTERNS
<
li
>
\
refitem
cfg_full_path_names
FULL_PATH_NAMES
<
li
>
\
refitem
cfg_generate_html
GENERATE_HTML
<
li
>
\
refitem
cfg_generate_htmlhelp
GENERATE_HTMLHELP
<
li
>
\
refitem
cfg_generate_latex
GENERATE_LATEX
<
li
>
\
refitem
cfg_generate_man
GENERATE_MAN
<
li
>
\
refitem
cfg_generate_tagfile
GENERATE_TAGFILE
<
li
>
\
refitem
cfg_hide_undoc_classes
HIDE_UNDOC_CLASSES
<
li
>
\
refitem
cfg_hide_undoc_members
HIDE_UNDOC_MEMBERS
<
li
>
\
refitem
cfg_html_align_members
HTML_ALIGN_MEMBERS
<
li
>
\
refitem
cfg_html_footer
HTML_FOOTER
<
li
>
\
refitem
cfg_html_header
HTML_HEADER
<
li
>
\
refitem
cfg_html_output
HTML_OUTPUT
<
li
>
\
refitem
cfg_include_path
INCLUDE_PATH
<
li
>
\
refitem
cfg_inherit_docs
INHERIT_DOCS
<
li
>
\
refitem
cfg_inline_info
INLINE_INFO
<
li
>
\
refitem
cfg_input
INPUT
<
li
>
\
refitem
cfg_input_filter
INPUT_FILTER
<
li
>
\
refitem
cfg_internal_docs
INTERNAL_DOCS
<
li
>
\
refitem
cfg_javadoc_autobrief
JAVADOC_AUTOBRIEF
<
li
>
\
refitem
cfg_latex_header
LATEX_HEADER
<
li
>
\
refitem
cfg_latex_output
LATEX_OUTPUT
<
li
>
\
refitem
cfg_macro_expansion
MACRO_EXPANSION
<
li
>
\
refitem
cfg_man_extension
MAN_EXTENSION
<
li
>
\
refitem
cfg_man_output
MAN_OUTPUT
<
li
>
\
refitem
cfg_output_directory
OUTPUT_DIRECTORY
<
li
>
\
refitem
cfg_output_language
OUTPUT_LANGUAGE
<
li
>
\
refitem
cfg_paper_type
PAPER_TYPE
<
li
>
\
refitem
cfg_perl_path
PERL_PATH
<
li
>
\
refitem
cfg_predefined
PREDEFINED
<
li
>
\
refitem
cfg_project_name
PROJECT_NAME
<
li
>
\
refitem
cfg_project_number
PROJECT_NUMBER
<
li
>
\
refitem
cfg_quiet
QUIET
<
li
>
\
refitem
cfg_recursive
RECURSIVE
<
li
>
\
refitem
cfg_repeat_brief
REPEAT_BRIEF
<
li
>
\
refitem
cfg_search_includes
SEARCH_INCLUDES
<
li
>
\
refitem
cfg_searchengine
SEARCHENGINE
<
li
>
\
refitem
cfg_source_browser
SOURCE_BROWSER
<
li
>
\
refitem
cfg_strip_from_path
STRIP_FROM_PATH
<
li
>
\
refitem
cfg_tagfiles
TAGFILES
<
li
>
\
refitem
cfg_verbatim_headers
VERBATIM_HEADERS
<
li
>
\
refitem
cfg_warnings
WARNINGS
\
htmlonly
</
ul
>
</
multicol
>
\
endhtmlonly
\
latexonly
\
end
{
CompactList
}
\
end
{
multicols
}
\
normalsize
\
endlatexonly
\
subsection
config_general
General
options
\
subsection
config_general
General
options
<
dl
>
<
dl
>
\
anchor
cfg_project_name
<
dt
>\
c
PROJECT_NAME
<
dd
>
<
dt
>\
c
PROJECT_NAME
<
dd
>
\
addindex
PROJECT_NAME
\
addindex
PROJECT_NAME
The
\
c
PROJECT_NAME
tag
is
a
single
word
(
or
a
sequence
of
words
The
\
c
PROJECT_NAME
tag
is
a
single
word
(
or
a
sequence
of
words
...
@@ -50,12 +134,14 @@ Below is a list of tags that are recognized for each category.
...
@@ -50,12 +134,14 @@ Below is a list of tags that are recognized for each category.
documentation
is
generated
.
This
name
is
used
in
the
title
of
most
documentation
is
generated
.
This
name
is
used
in
the
title
of
most
generated
pages
and
in
a
few
other
places
.
generated
pages
and
in
a
few
other
places
.
\
anchor
cfg_project_number
<
dt
>\
c
PROJECT_NUMBER
<
dd
>
<
dt
>\
c
PROJECT_NUMBER
<
dd
>
\
addindex
PROJECT_NUMBER
\
addindex
PROJECT_NUMBER
The
\
c
PROJECT_NUMBER
tag
can
be
used
to
enter
a
project
or
revision
number
.
The
\
c
PROJECT_NUMBER
tag
can
be
used
to
enter
a
project
or
revision
number
.
This
could
be
handy
for
archiving
the
generated
documentation
or
This
could
be
handy
for
archiving
the
generated
documentation
or
if
some
version
control
system
is
used
.
if
some
version
control
system
is
used
.
\
anchor
cfg_output_directory
<
dt
>\
c
OUTPUT_DIRECTORY
<
dd
>
<
dt
>\
c
OUTPUT_DIRECTORY
<
dd
>
\
addindex
OUTPUT_DIRECTORY
\
addindex
OUTPUT_DIRECTORY
The
\
c
OUTPUT_DIRECTORY
tag
is
used
to
specify
the
(
relative
or
absolute
)
The
\
c
OUTPUT_DIRECTORY
tag
is
used
to
specify
the
(
relative
or
absolute
)
...
@@ -63,6 +149,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -63,6 +149,7 @@ Below is a list of tags that are recognized for each category.
If
a
relative
path
is
entered
,
it
will
be
relative
to
the
location
If
a
relative
path
is
entered
,
it
will
be
relative
to
the
location
where
doxygen
was
started
.
If
left
blank
the
current
directory
will
be
used
.
where
doxygen
was
started
.
If
left
blank
the
current
directory
will
be
used
.
\
anchor
cfg_output_language
<
dt
>\
c
OUTPUT_LANGUAGE
<
dd
>
<
dt
>\
c
OUTPUT_LANGUAGE
<
dd
>
\
addindex
OUTPUT_LANGUAGE
\
addindex
OUTPUT_LANGUAGE
The
\
c
OUTPUT_LANGUAGE
tag
is
used
to
specify
the
language
in
which
all
The
\
c
OUTPUT_LANGUAGE
tag
is
used
to
specify
the
language
in
which
all
...
@@ -71,6 +158,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -71,6 +158,7 @@ Below is a list of tags that are recognized for each category.
The
default
language
is
English
,
other
supported
languages
are
:
The
default
language
is
English
,
other
supported
languages
are
:
Dutch
,
French
,
Italian
,
Czech
,
Swedish
,
German
and
Japanese
.
Dutch
,
French
,
Italian
,
Czech
,
Swedish
,
German
and
Japanese
.
\
anchor
cfg_quiet
<
dt
>\
c
QUIET
<
dd
>
<
dt
>\
c
QUIET
<
dd
>
\
addindex
QUIET
\
addindex
QUIET
The
\
c
QUIET
tag
can
be
used
to
turn
on
/
off
the
messages
that
are
generated
The
\
c
QUIET
tag
can
be
used
to
turn
on
/
off
the
messages
that
are
generated
...
@@ -78,6 +166,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -78,6 +166,7 @@ Below is a list of tags that are recognized for each category.
where
\
c
YES
implies
that
the
messages
are
off
.
where
\
c
YES
implies
that
the
messages
are
off
.
If
left
blank
\
c
NO
is
used
.
If
left
blank
\
c
NO
is
used
.
\
anchor
cfg_warnings
<
dt
>\
c
WARNINGS
<
dd
>
<
dt
>\
c
WARNINGS
<
dd
>
\
addindex
WARNINGS
\
addindex
WARNINGS
The
\
c
WARNINGS
tag
can
be
used
to
turn
on
/
off
the
warning
messages
that
are
The
\
c
WARNINGS
tag
can
be
used
to
turn
on
/
off
the
warning
messages
that
are
...
@@ -86,6 +175,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -86,6 +175,7 @@ Below is a list of tags that are recognized for each category.
\
b
Tip
:
Turn
warnings
on
while
writing
the
documentation
.
\
b
Tip
:
Turn
warnings
on
while
writing
the
documentation
.
\
anchor
cfg_disable_index
<
dt
>\
c
DISABLE_INDEX
<
dd
>
<
dt
>\
c
DISABLE_INDEX
<
dd
>
\
addindex
DISABLE_INDEX
\
addindex
DISABLE_INDEX
If
you
want
full
control
over
the
layout
of
the
generated
HTML
pages
it
If
you
want
full
control
over
the
layout
of
the
generated
HTML
pages
it
...
@@ -94,6 +184,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -94,6 +184,7 @@ Below is a list of tags that are recognized for each category.
top
of
each
page
.
A
value
of
NO
(
the
default
)
enables
the
index
and
the
top
of
each
page
.
A
value
of
NO
(
the
default
)
enables
the
index
and
the
value
YES
disables
it
.
value
YES
disables
it
.
\
anchor
cfg_extract_all
<
dt
>\
c
EXTRACT_ALL
<
dd
>
<
dt
>\
c
EXTRACT_ALL
<
dd
>
\
addindex
EXTRACT_ALL
\
addindex
EXTRACT_ALL
If
the
\
c
EXTRACT_ALL
tag
is
set
to
\
c
YES
all
classes
and
functions
will
be
If
the
\
c
EXTRACT_ALL
tag
is
set
to
\
c
YES
all
classes
and
functions
will
be
...
@@ -102,11 +193,13 @@ Below is a list of tags that are recognized for each category.
...
@@ -102,11 +193,13 @@ Below is a list of tags that are recognized for each category.
\
b
Notice
:
This
will
also
disable
the
warnings
about
undocumented
members
\
b
Notice
:
This
will
also
disable
the
warnings
about
undocumented
members
that
are
normally
produced
when
\
c
WARNINGS
is
set
to
\
c
YES
that
are
normally
produced
when
\
c
WARNINGS
is
set
to
\
c
YES
\
anchor
cfg_extract_private
<
dt
>\
c
EXTRACT_PRIVATE
<
dd
>
<
dt
>\
c
EXTRACT_PRIVATE
<
dd
>
\
addindex
EXTRACT_PRIVATE
\
addindex
EXTRACT_PRIVATE
If
the
\
c
EXTRACT_PRIVATE
tag
is
set
to
\
c
YES
all
If
the
\
c
EXTRACT_PRIVATE
tag
is
set
to
\
c
YES
all
documentation
for
private
members
will
be
extracted
as
well
.
documentation
for
private
members
will
be
extracted
as
well
.
\
anchor
cfg_hide_undoc_members
<
dt
>\
c
HIDE_UNDOC_MEMBERS
<
dd
>
<
dt
>\
c
HIDE_UNDOC_MEMBERS
<
dd
>
\
addindex
HIDE_UNDOC_MEMBERS
\
addindex
HIDE_UNDOC_MEMBERS
If
the
\
c
HIDE_UNDOC_MEMBERS
tag
is
set
to
\
c
YES
,
Doxygen
will
hide
all
If
the
\
c
HIDE_UNDOC_MEMBERS
tag
is
set
to
\
c
YES
,
Doxygen
will
hide
all
...
@@ -114,6 +207,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -114,6 +207,7 @@ Below is a list of tags that are recognized for each category.
If
set
to
\
c
NO
(
the
default
)
these
members
will
be
included
in
the
If
set
to
\
c
NO
(
the
default
)
these
members
will
be
included
in
the
various
overviews
,
but
no
documentation
section
is
generated
.
various
overviews
,
but
no
documentation
section
is
generated
.
\
anchor
cfg_hide_undoc_classes
<
dt
>\
c
HIDE_UNDOC_CLASSES
<
dd
>
<
dt
>\
c
HIDE_UNDOC_CLASSES
<
dd
>
\
addindex
HIDE_UNDOC_CLASSES
\
addindex
HIDE_UNDOC_CLASSES
If
the
\
c
HIDE_UNDOC_CLASSESS
tag
is
set
to
\
c
YES
,
Doxygen
will
hide
all
If
the
\
c
HIDE_UNDOC_CLASSESS
tag
is
set
to
\
c
YES
,
Doxygen
will
hide
all
...
@@ -121,6 +215,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -121,6 +215,7 @@ Below is a list of tags that are recognized for each category.
If
set
to
\
c
NO
(
the
default
)
these
classes
will
be
included
in
the
If
set
to
\
c
NO
(
the
default
)
these
classes
will
be
included
in
the
various
overviews
.
various
overviews
.
\
anchor
cfg_brief_member_desc
<
dt
>\
c
BRIEF_MEMBER_DESC
<
dd
>
<
dt
>\
c
BRIEF_MEMBER_DESC
<
dd
>
\
addindex
BRIEF_MEMBER_DESC
\
addindex
BRIEF_MEMBER_DESC
If
the
\
c
BRIEF_MEMBER_DESC
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
If
the
\
c
BRIEF_MEMBER_DESC
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
...
@@ -128,6 +223,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -128,6 +223,7 @@ Below is a list of tags that are recognized for each category.
the
file
and
class
documentation
(
similar
to
JavaDoc
).
the
file
and
class
documentation
(
similar
to
JavaDoc
).
Set
to
NO
to
disable
this
.
Set
to
NO
to
disable
this
.
\
anchor
cfg_internal_docs
<
dt
>\
c
INTERNAL_DOCS
<
dd
>
<
dt
>\
c
INTERNAL_DOCS
<
dd
>
\
addindex
INTERNAL_DOCS
\
addindex
INTERNAL_DOCS
The
\
c
INTERNAL_DOCS
tag
determines
if
documentation
The
\
c
INTERNAL_DOCS
tag
determines
if
documentation
...
@@ -135,6 +231,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -135,6 +231,7 @@ Below is a list of tags that are recognized for each category.
to
\
c
NO
(
the
default
)
then
the
documentation
will
be
excluded
.
to
\
c
NO
(
the
default
)
then
the
documentation
will
be
excluded
.
Set
it
to
\
c
YES
to
include
the
internal
documentation
.
Set
it
to
\
c
YES
to
include
the
internal
documentation
.
\
anchor
cfg_repeat_brief
<
dt
>\
c
REPEAT_BRIEF
<
dd
>
<
dt
>\
c
REPEAT_BRIEF
<
dd
>
\
addindex
REPEAT_BRIEF
\
addindex
REPEAT_BRIEF
If
the
\
c
REPEAT_BRIEF
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
If
the
\
c
REPEAT_BRIEF
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
...
@@ -145,12 +242,14 @@ Below is a list of tags that are recognized for each category.
...
@@ -145,12 +242,14 @@ Below is a list of tags that are recognized for each category.
If
both
\
c
HIDE_UNDOC_MEMBERS
and
\
c
BRIEF_MEMBER_DESC
are
set
to
\
c
NO
,
the
If
both
\
c
HIDE_UNDOC_MEMBERS
and
\
c
BRIEF_MEMBER_DESC
are
set
to
\
c
NO
,
the
brief
descriptions
will
be
completely
suppressed
.
brief
descriptions
will
be
completely
suppressed
.
\
anchor
cfg_full_path_names
<
dt
>\
c
FULL_PATH_NAMES
<
dd
>
<
dt
>\
c
FULL_PATH_NAMES
<
dd
>
\
addindex
FULL_PATH_NAMES
\
addindex
FULL_PATH_NAMES
If
the
\
c
FULL_PATH_NAMES
tag
is
set
to
\
c
YES
Doxygen
will
prepend
the
full
If
the
\
c
FULL_PATH_NAMES
tag
is
set
to
\
c
YES
Doxygen
will
prepend
the
full
path
before
files
name
in
the
file
list
and
in
the
header
files
.
If
set
path
before
files
name
in
the
file
list
and
in
the
header
files
.
If
set
to
NO
the
shortest
path
that
makes
the
file
name
unique
will
be
used
to
NO
the
shortest
path
that
makes
the
file
name
unique
will
be
used
\
anchor
cfg_strip_from_path
<
dt
>\
c
STRIP_FROM_PATH
<
dd
>
<
dt
>\
c
STRIP_FROM_PATH
<
dd
>
\
addindex
STRIP_FROM_PATH
\
addindex
STRIP_FROM_PATH
If
the
\
c
FULL_PATH_NAMES
tag
is
set
to
\
c
YES
then
the
\
c
STRIP_FROM_PATH
tag
If
the
\
c
FULL_PATH_NAMES
tag
is
set
to
\
c
YES
then
the
\
c
STRIP_FROM_PATH
tag
...
@@ -158,18 +257,21 @@ Below is a list of tags that are recognized for each category.
...
@@ -158,18 +257,21 @@ Below is a list of tags that are recognized for each category.
only
done
if
one
of
the
specified
strings
matches
the
left
-
hand
part
of
the
only
done
if
one
of
the
specified
strings
matches
the
left
-
hand
part
of
the
path
.
path
.
\
anchor
cfg_class_diagrams
<
dt
>\
c
CLASS_DIAGRAMS
<
dd
>
<
dt
>\
c
CLASS_DIAGRAMS
<
dd
>
\
addindex
CLASS_DIAGRAMS
\
addindex
CLASS_DIAGRAMS
If
the
\
c
CLASS_DIAGRAMS
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
If
the
\
c
CLASS_DIAGRAMS
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
generate
a
class
diagram
(
in
Html
and
LaTeX
)
for
classes
with
base
or
generate
a
class
diagram
(
in
Html
and
\
f
$\
mbox
{\
LaTeX
}\
f
$
)
for
classes
with
base
or
super
classes
.
Setting
the
tag
to
\
c
NO
turns
the
diagrams
off
.
super
classes
.
Setting
the
tag
to
\
c
NO
turns
the
diagrams
off
.
\
anchor
cfg_source_browser
<
dt
>\
c
SOURCE_BROWSER
<
dd
>
<
dt
>\
c
SOURCE_BROWSER
<
dd
>
\
addindex
SOURCE_BROWSER
\
addindex
SOURCE_BROWSER
If
the
\
c
SOURCE_BROWSER
tag
is
set
to
\
c
YES
than
the
body
of
a
member
or
If
the
\
c
SOURCE_BROWSER
tag
is
set
to
\
c
YES
than
the
body
of
a
member
or
function
will
be
appended
as
a
block
of
code
to
the
documentation
of
.
function
will
be
appended
as
a
block
of
code
to
the
documentation
of
.
that
member
or
function
.
that
member
or
function
.
\
anchor
cfg_case_sense_names
<
dt
>\
c
CASE_SENSE_NAMES
<
dd
>
<
dt
>\
c
CASE_SENSE_NAMES
<
dd
>
\
addindex
CASE_SENSE_NAMES
\
addindex
CASE_SENSE_NAMES
If
the
\
c
CASE_SENSE_NAMES
tag
is
set
to
\
c
NO
(
the
default
)
then
Doxygen
If
the
\
c
CASE_SENSE_NAMES
tag
is
set
to
\
c
NO
(
the
default
)
then
Doxygen
...
@@ -178,25 +280,40 @@ Below is a list of tags that are recognized for each category.
...
@@ -178,25 +280,40 @@ Below is a list of tags that are recognized for each category.
classes
or
files
whose
names
only
differ
in
case
and
if
your
file
system
classes
or
files
whose
names
only
differ
in
case
and
if
your
file
system
supports
case
sensitive
file
names
.
supports
case
sensitive
file
names
.
\
anchor
cfg_verbatim_headers
<
dt
>\
c
VERBATIM_HEADERS
<
dd
>
<
dt
>\
c
VERBATIM_HEADERS
<
dd
>
\
addindex
VERBATIM_HEADERS
\
addindex
VERBATIM_HEADERS
If
the
VERBATIM_HEADERS
tag
is
set
the
YES
(
the
default
)
then
Doxygen
\
n
";
If
the
\
c
VERBATIM_HEADERS
tag
is
set
the
\
c
YES
(
the
default
)
then
Doxygen
will generate a verbatim copy of the header file for each class for
\n
"
;
will
generate
a
verbatim
copy
of
the
header
file
for
each
class
for
which
an
include
is
specified
.
Set
to
NO
to
disable
this
.
\
n
";
which
an
include
is
specified
.
Set
to
NO
to
disable
this
.
\
sa
Section
\
ref
cmdclass
"
\\
class"
.
\
sa
Section
\
ref
cmdclass
"
\\
class"
.
\
anchor
cfg_javadoc_autobrief
<
dt
>\
c
JAVADOC_AUTOBRIEF
<
dd
>
<
dt
>\
c
JAVADOC_AUTOBRIEF
<
dd
>
\
addinex
JAVADOC_AUTOBRIEF
\
addinex
JAVADOC_AUTOBRIEF
If the
JAVADOC_NO_AUTOBRIEF is set to
YES (the default) then Doxygen
If
the
\
c
JAVADOC_NO_AUTOBRIEF
is
set
to
\
c
YES
(
the
default
)
then
Doxygen
will
interpret
the
first
line
(
until
the
first
dot
)
of
a
JavaDoc
-
style
will
interpret
the
first
line
(
until
the
first
dot
)
of
a
JavaDoc
-
style
comment
as
the
brief
description
.
If
set
to
NO
,
the
Javadoc
-
style
will
comment
as
the
brief
description
.
If
set
to
NO
,
the
Javadoc
-
style
will
behave
just
like
the
Qt
-
style
comments
.
behave
just
like
the
Qt
-
style
comments
.
\
anchor
cfg_inherit_docs
<
dt
>\
c
INHERIT_DOCS
<
dd
>
\
addindex
INHERIT_DOCS
If
the
\
c
INHERIT_DOCS
tag
is
set
to
\
c
YES
(
the
default
)
then
an
undocumented
member
inherits
the
documentation
from
any
documented
member
that
it
reimplements
.
\
anchor
cfg_inline_info
<
dt
>
INLINE_INFO
<
dd
>
If
the
\
c
INLINE_INFO
tag
is
set
to
\
c
YES
(
the
default
)
then
a
tag
[
inline
]
is
inserted
in
the
documentation
for
inline
members
.
</
dl
>
</
dl
>
\
subsection
config_input
Input
related
options
\
subsection
config_input
Input
related
options
<
dl
>
<
dl
>
\
anchor
cfg_input
<
dt
>\
c
INPUT
<
dd
>
<
dt
>\
c
INPUT
<
dd
>
\
addindex
INPUT
\
addindex
INPUT
The
\
c
INPUT
tag
is
used
to
specify
the
files
and
/
or
directories
that
contain
The
\
c
INPUT
tag
is
used
to
specify
the
files
and
/
or
directories
that
contain
...
@@ -206,6 +323,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -206,6 +323,7 @@ Below is a list of tags that are recognized for each category.
\
b
Notice
:
This
tag
(
and
only
this
tag
)
is
\
e
required
.
\
b
Notice
:
This
tag
(
and
only
this
tag
)
is
\
e
required
.
\
anchor
cfg_file_patterns
<
dt
>\
c
FILE_PATTERNS
<
dd
>
<
dt
>\
c
FILE_PATTERNS
<
dd
>
\
addindex
FILE_PATTERNS
\
addindex
FILE_PATTERNS
If
the
value
of
the
\
c
INPUT
tag
contains
directories
,
you
can
use
the
If
the
value
of
the
\
c
INPUT
tag
contains
directories
,
you
can
use
the
...
@@ -214,31 +332,35 @@ Below is a list of tags that are recognized for each category.
...
@@ -214,31 +332,35 @@ Below is a list of tags that are recognized for each category.
in
the
directories
.
If
left
blank
all
files
are
included
in
the
directories
.
If
left
blank
all
files
are
included
(
i
.
e
.
wildcard
<
tt
>*</
tt
>).
(
i
.
e
.
wildcard
<
tt
>*</
tt
>).
\
anchor
cfg_recursive
<
dt
>\
c
RECURSIVE
<
dd
>
<
dt
>\
c
RECURSIVE
<
dd
>
\
addindex
RECURSIVE
\
addindex
RECURSIVE
The
\
c
RECURSIVE
tag
can
be
used
to
specify
whether
or
not
subdirectories
The
\
c
RECURSIVE
tag
can
be
used
to
specify
whether
or
not
subdirectories
should
be
searched
for
input
files
as
well
.
Possible
values
are
\
c
YES
should
be
searched
for
input
files
as
well
.
Possible
values
are
\
c
YES
and
\
c
NO
.
If
left
blank
\
c
NO
is
used
.
and
\
c
NO
.
If
left
blank
\
c
NO
is
used
.
\
anchor
cfg_exclude
<
dt
>\
c
EXCLUDE
<
dd
>
<
dt
>\
c
EXCLUDE
<
dd
>
\
addindex
EXCLUDE
\
addindex
EXCLUDE
The
\
c
EXCLUDE
tag
can
be
used
to
specify
files
and
/
or
directories
that
should
The
\
c
EXCLUDE
tag
can
be
used
to
specify
files
and
/
or
directories
that
should
excluded
from
the
\
c
INPUT
source
files
.
This
way
you
can
easily
exclude
a
excluded
from
the
\
c
INPUT
source
files
.
This
way
you
can
easily
exclude
a
subdirectory
from
a
directory
tree
whose
root
is
specified
with
the
\
c
INPUT
tag
.
subdirectory
from
a
directory
tree
whose
root
is
specified
with
the
\
c
INPUT
tag
.
\
anchor
cfg_exclude_patterns
<
dt
>\
c
EXCLUDE_PATTERNS
<
dd
>
<
dt
>\
c
EXCLUDE_PATTERNS
<
dd
>
\
addindex
EXCLUDE_PATTERNS
\
addindex
EXCLUDE_PATTERNS
If
the
value
of
the
INPUT
tag
contains
directories
,
you
can
use
the
If
the
value
of
the
INPUT
tag
contains
directories
,
you
can
use
the
\
c
EXCLUDE_PATTERNS
tag
to
specify
one
or
more
wildcard
patterns
to
exclude
\
c
EXCLUDE_PATTERNS
tag
to
specify
one
or
more
wildcard
patterns
to
exclude
certain
files
from
those
directories
.
certain
files
from
those
directories
.
\
anchor
cfg_example_path
<
dt
>\
c
EXAMPLE_PATH
<
dd
>
<
dt
>\
c
EXAMPLE_PATH
<
dd
>
\
addindex
EXAMPLE_PATH
\
addindex
EXAMPLE_PATH
The
\
c
EXAMPLE_PATH
tag
can
be
used
to
specify
one
or
more
files
or
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
directories
that
contain
example
code
fragments
that
are
included
(
see
the
\\
include
command
in
section
\
ref
cmdinclude
"
\\
include"
).
the
\\
include
command
in
section
\
ref
cmdinclude
"
\\
include"
).
\
anchor
cfg_input_filter
<
dt
>\
c
INPUT_FILTER
<
dd
>
<
dt
>\
c
INPUT_FILTER
<
dd
>
\
addindex
INPUT_FILTER
\
addindex
INPUT_FILTER
The
\
c
INPUT_FILTER
tag
can
be
used
to
specify
a
program
that
doxygen
should
The
\
c
INPUT_FILTER
tag
can
be
used
to
specify
a
program
that
doxygen
should
...
@@ -257,17 +379,20 @@ Below is a list of tags that are recognized for each category.
...
@@ -257,17 +379,20 @@ Below is a list of tags that are recognized for each category.
\
subsection
html_output
HTML
related
options
\
subsection
html_output
HTML
related
options
<
dl
>
<
dl
>
\
anchor
cfg_generate_html
<
dt
>\
c
GENERATE_HTML
<
dd
>
<
dt
>\
c
GENERATE_HTML
<
dd
>
\
addindex
GENERATE_HTML
\
addindex
GENERATE_HTML
If
the
\
c
GENERATE_HTML
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
If
the
\
c
GENERATE_HTML
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
generate
HTML
output
generate
HTML
output
\
anchor
cfg_html_output
<
dt
>\
c
HTML_OUTPUT
<
dd
>
<
dt
>\
c
HTML_OUTPUT
<
dd
>
\
addindex
HTML_OUTPUT
\
addindex
HTML_OUTPUT
The
\
c
HTML_OUTPUT
tag
is
used
to
specify
where
the
HTML
docs
will
be
put
.
The
\
c
HTML_OUTPUT
tag
is
used
to
specify
where
the
HTML
docs
will
be
put
.
If
a
relative
path
is
entered
the
value
of
\
c
OUTPUT_DIRECTORY
will
be
If
a
relative
path
is
entered
the
value
of
\
c
OUTPUT_DIRECTORY
will
be
put
in
front
of
it
.
If
left
blank
`
html
' will be used as the default path.
put
in
front
of
it
.
If
left
blank
`
html
' will be used as the default path.
\anchor cfg_html_header
<dt>\c HTML_HEADER <dd>
<dt>\c HTML_HEADER <dd>
\addindex HTML_HEADER
\addindex HTML_HEADER
The \c HTML_HEADER tag can be used to specify a user defined HTML
The \c HTML_HEADER tag can be used to specify a user defined HTML
...
@@ -289,6 +414,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -289,6 +414,7 @@ Below is a list of tags that are recognized for each category.
Doxygen will replace them by respectively
Doxygen will replace them by respectively
the title of the page, the current date and time, or only the current date.
the title of the page, the current date and time, or only the current date.
\anchor cfg_html_footer
<dt>\c HTML_FOOTER <dd>
<dt>\c HTML_FOOTER <dd>
\addindex HTML_FOOTER
\addindex HTML_FOOTER
The \c HTML_FOOTER tag can be used to specify a user defined HTML footer for
The \c HTML_FOOTER tag can be used to specify a user defined HTML footer for
...
@@ -305,6 +431,7 @@ Below is a list of tags that are recognized for each category.
...
@@ -305,6 +431,7 @@ Below is a list of tags that are recognized for each category.
Doxygen will replace them by respectively
Doxygen will replace them by respectively
the title of the page, the current date and time, or only the current date.
the title of the page, the current date and time, or only the current date.
\anchor cfg_html_align_members
<dt>\c HTML_ALIGN_MEMBERS <dd>
<dt>\c HTML_ALIGN_MEMBERS <dd>
If the \c HTML_ALIGN_MEMBERS tag is set to \c YES, the members of classes,
If the \c HTML_ALIGN_MEMBERS tag is set to \c YES, the members of classes,
...
@@ -315,6 +442,7 @@ NO a bullet list will be used.
...
@@ -315,6 +442,7 @@ NO a bullet list will be used.
Setting this tag to NO will become obsolete in the future, since I only
Setting this tag to NO will become obsolete in the future, since I only
intent to support and test the aligned representation.
intent to support and test the aligned representation.
\anchor cfg_generate_htmlhelp
<dt>\c GENERATE_HTMLHELP <dd>
<dt>\c GENERATE_HTMLHELP <dd>
If the \c GENERATE_HTMLHELP tag is set to \c YES,
If the \c GENERATE_HTMLHELP tag is set to \c YES,
...
@@ -337,6 +465,7 @@ and you can search for words in the documentation
...
@@ -337,6 +465,7 @@ and you can search for words in the documentation
(which basically renders \c doxysearch obsolete on Windows).
(which basically renders \c doxysearch obsolete on Windows).
The HTML workshop also contains a viewer for compressed HTML files.
The HTML workshop also contains a viewer for compressed HTML files.
\anchor cfg_alphabetical_index
<dt>\c ALPHABETICAL_INDEX <dd>
<dt>\c ALPHABETICAL_INDEX <dd>
If the \c ALPHABETICAL_INDEX tag is set to \c YES, an alphabetical index
If the \c ALPHABETICAL_INDEX tag is set to \c YES, an alphabetical index
...
@@ -348,23 +477,28 @@ a lot of classes, structs, unions or interfaces.
...
@@ -348,23 +477,28 @@ a lot of classes, structs, unions or interfaces.
\subsection latex_output LaTeX related options
\subsection latex_output LaTeX related options
<dl>
<dl>
\anchor cfg_generate_latex
<dt>\c GENERATE_LATEX <dd>
<dt>\c GENERATE_LATEX <dd>
\addindex GENERATE_LATEX
\addindex GENERATE_LATEX
If the \c GENERATE_LATEX tag is set to \c YES (the default) Doxygen will
If the \c GENERATE_LATEX tag is set to \c YES (the default) Doxygen will
generate Latex output.
generate Latex output.
\anchor cfg_latex_output
<dt>\c LATEX_OUTPUT <dd>
<dt>\c LATEX_OUTPUT <dd>
\addindex LATEX_OUTPUT
\addindex LATEX_OUTPUT
The \c LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
The \c LATEX_OUTPUT tag is used to specify where the \f$\mbox{\LaTeX}\f$
docs will be put.
If a relative path is entered the value of \c OUTPUT_DIRECTORY will be
If a relative path is entered the value of \c OUTPUT_DIRECTORY will be
put in front of it. If left blank `latex'
will
be
used
as
the
default
path
.
put in front of it. If left blank `latex'
will
be
used
as
the
default
path
.
\
anchor
cfg_compact_latex
<
dt
>\
c
COMPACT_LATEX
<
dd
>
<
dt
>\
c
COMPACT_LATEX
<
dd
>
\
addindex
COMPACT_LATEX
\
addindex
COMPACT_LATEX
If
the
\
c
COMPACT_LATEX
tag
is
set
to
\
c
YES
Doxygen
generates
more
compact
If
the
\
c
COMPACT_LATEX
tag
is
set
to
\
c
YES
Doxygen
generates
more
compact
LaTeX
documents. This may be useful for small projects and may help to
\
f
$\
mbox
{\
LaTeX
}\
f
$
documents
.
This
may
be
useful
for
small
projects
and
may
help
to
save
some
trees
in
general
.
save
some
trees
in
general
.
\
anchor
cfg_paper_type
<
dt
>\
c
PAPER_TYPE
<
dd
>
<
dt
>\
c
PAPER_TYPE
<
dd
>
\
addindex
PAPER_TYPE
\
addindex
PAPER_TYPE
The
PAPER_TYPE
tag
can
be
used
to
set
the
paper
type
that
is
used
The
PAPER_TYPE
tag
can
be
used
to
set
the
paper
type
that
is
used
...
@@ -378,25 +512,64 @@ a lot of classes, structs, unions or interfaces.
...
@@ -378,25 +512,64 @@ a lot of classes, structs, unions or interfaces.
</
ul
>
</
ul
>
If
left
blank
a4wide
will
be
used
.
If
left
blank
a4wide
will
be
used
.
\
anchor
cfg_extra_packages
<
dt
>\
c
EXTRA_PACKAGES
<
dd
>
<
dt
>\
c
EXTRA_PACKAGES
<
dd
>
\
addindex
EXTRA_PACKAGES
\
addindex
EXTRA_PACKAGES
The EXTRA_PACKAGES tag can be used to specify one or more
LaTeX
The
EXTRA_PACKAGES
tag
can
be
used
to
specify
one
or
more
\
f
$\
mbox
{\
LaTeX
}\
f
$
package names that should be included in the
LaTeX
output.
package
names
that
should
be
included
in
the
\
f
$\
mbox
{\
LaTeX
}\
f
$
output
.
To
get
the
times
font
for
instance
you
can
specify
To
get
the
times
font
for
instance
you
can
specify
\
verbatim
\
verbatim
EXTRA_PACKAGES
=
times
EXTRA_PACKAGES
=
times
\
endverbatim
\
endverbatim
If
left
blank
no
extra
packages
will
be
included
.
If
left
blank
no
extra
packages
will
be
included
.
\
anchor
cfg_latex_header
<
dt
>\
c
LATEX_HEADER
<
dd
>
\
addindex
LATEX_HEADER
The
\
c
LATEX_HEADER
tag
can
be
used
to
specify
a
personal
\
f
$\
mbox
{\
LaTeX
}\
f
$
header
for
the
generated
latex
document
.
The
header
should
contain
everything
until
the
first
chapter
.
If
it
is
left
blank
doxygen
will
generate
a
standard
header
,
which
looks
as
follows
for
the
default
configuration
settings
:
\
verbatim
\
documentclass
[
a4paper
]{
book
}
\
usepackage
{
a4wide
}
\
usepackage
{
makeidx
}
\
usepackage
{
fancyheadings
}
\
usepackage
{
epsfig
}
\
usepackage
{
float
}
\
usepackage
{
doxygen
}
\
makeindex
\
setcounter
{
tocdepth
}{
1
}
\
setlength
{\
footrulewidth
}{
0.4
pt
}
\
begin
{
document
}
\
title
{
Reference
Manual
}
\
author
{
Generated
by
Doxygen
}
\
date
{
Thu
Sep
30
19
:
58
:
32
1999
}
\
maketitle
\
pagenumbering
{
roman
}
\
clearemptydoublepage
\
tableofcontents
\
clearemptydoublepage
\
pagenumbering
{
arabic
}
\
endverbatim
\
par
Notice
:
Only
use
a
user
defined
header
if
you
know
what
you
are
doing
!
</
dl
>
</
dl
>
\
subsection
man_output
Man
page
related
options
\
subsection
man_output
Man
page
related
options
<
dl
>
<
dl
>
\
anchor
cfg_generate_man
<
dt
>\
c
GENERATE_MAN
<
dd
>
<
dt
>\
c
GENERATE_MAN
<
dd
>
\
addindex
GENERATE_MAN
\
addindex
GENERATE_MAN
If
the
\
c
GENERATE_MAN
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
If
the
\
c
GENERATE_MAN
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
generate
man
pages
for
classes
and
files
.
generate
man
pages
for
classes
and
files
.
\
anchor
cfg_man_output
<
dt
>\
c
MAN_OUTPUT
<
dd
>
<
dt
>\
c
MAN_OUTPUT
<
dd
>
\
addindex
MAN_OUTPUT
\
addindex
MAN_OUTPUT
The
\
c
MAN_OUTPUT
tag
is
used
to
specify
where
the
man
pages
will
be
put
.
The
\
c
MAN_OUTPUT
tag
is
used
to
specify
where
the
man
pages
will
be
put
.
...
@@ -405,6 +578,7 @@ EXTRA_PACKAGES = times
...
@@ -405,6 +578,7 @@ EXTRA_PACKAGES = times
A directory man3 will be created inside the directory specified by
A directory man3 will be created inside the directory specified by
\c MAN_OUTPUT.
\c MAN_OUTPUT.
\anchor cfg_man_extension
<dt>\c MAN_EXTENSION <dd>
<dt>\c MAN_EXTENSION <dd>
\addindex MAX_EXTENSION
\addindex MAX_EXTENSION
The MAN_EXTENSION tag determines the extension that is added to
The MAN_EXTENSION tag determines the extension that is added to
...
@@ -414,29 +588,34 @@ EXTRA_PACKAGES = times
...
@@ -414,29 +588,34 @@ EXTRA_PACKAGES = times
\
subsection
config_prepro
Preprocessor
related
options
\
subsection
config_prepro
Preprocessor
related
options
<
dl
>
<
dl
>
\
anchor
cfg_enable_preprocessing
<
dt
>\
c
ENABLE_PREPROCESSING
<
dd
>
<
dt
>\
c
ENABLE_PREPROCESSING
<
dd
>
\
addindex
ENABLE_PREPROCESSING
\
addindex
ENABLE_PREPROCESSING
If
the
\
c
ENABLE_PREPROCESSING
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
If
the
\
c
ENABLE_PREPROCESSING
tag
is
set
to
\
c
YES
(
the
default
)
Doxygen
will
evaluate
all
C
-
preprocessor
directives
found
in
the
sources
and
include
evaluate
all
C
-
preprocessor
directives
found
in
the
sources
and
include
files
.
files
.
\
anchor
cfg_macro_expansion
<
dt
>\
c
MACRO_EXPANSION
<
dd
>
<
dt
>\
c
MACRO_EXPANSION
<
dd
>
\
addindex
MACRO_EXPANSION
\
addindex
MACRO_EXPANSION
If
the
\
c
MACRO_EXPANSION
tag
is
set
to
\
c
YES
Doxygen
will
expand
all
macro
If
the
\
c
MACRO_EXPANSION
tag
is
set
to
\
c
YES
Doxygen
will
expand
all
macro
names
in
the
source
code
.
If
set
to
\
c
NO
(
the
default
)
only
conditional
names
in
the
source
code
.
If
set
to
\
c
NO
(
the
default
)
only
conditional
compilation
will
be
performed
.
compilation
will
be
performed
.
\
anchor
cfg_search_includes
<
dt
>\
c
SEARCH_INCLUDES
<
dd
>
<
dt
>\
c
SEARCH_INCLUDES
<
dd
>
\
addindex
SEARCH_INCLUDES
\
addindex
SEARCH_INCLUDES
If
the
\
c
SEARCH_INCLUDES
tag
is
set
to
\
c
YES
(
the
default
)
the
includes
files
If
the
\
c
SEARCH_INCLUDES
tag
is
set
to
\
c
YES
(
the
default
)
the
includes
files
in
the
\
c
INCLUDE_PATH
(
see
below
)
will
be
search
if
a
\#
include
is
found
.
in
the
\
c
INCLUDE_PATH
(
see
below
)
will
be
search
if
a
\#
include
is
found
.
\
anchor
cfg_include_path
<
dt
>\
c
INCLUDE_PATH
<
dd
>
<
dt
>\
c
INCLUDE_PATH
<
dd
>
\
addindex
INCLUDE_PATH
\
addindex
INCLUDE_PATH
The
\
c
INCLUDE_PATH
tag
can
be
used
to
specify
one
or
more
directories
that
The
\
c
INCLUDE_PATH
tag
can
be
used
to
specify
one
or
more
directories
that
contain
include
files
that
are
not
input
files
but
should
be
processed
by
contain
include
files
that
are
not
input
files
but
should
be
processed
by
the
preprocessor
.
the
preprocessor
.
\
anchor
cfg_predefined
<
dt
>\
c
PREDEFINED
<
dd
>
<
dt
>\
c
PREDEFINED
<
dd
>
\
addindex
PREDEFINED
\
addindex
PREDEFINED
The
\
c
PREDEFINED
tag
can
be
used
to
specify
one
or
more
macro
names
that
The
\
c
PREDEFINED
tag
can
be
used
to
specify
one
or
more
macro
names
that
...
@@ -445,6 +624,7 @@ EXTRA_PACKAGES = times
...
@@ -445,6 +624,7 @@ EXTRA_PACKAGES = times
<
code
>
name
</
code
>
or
<
code
>
name
=
definition
</
code
>
(
no
spaces
).
<
code
>
name
</
code
>
or
<
code
>
name
=
definition
</
code
>
(
no
spaces
).
If
the
definition
and
the
=
are
omitted
=
1
is
assumed
.
If
the
definition
and
the
=
are
omitted
=
1
is
assumed
.
\
anchor
cfg_expand_only_predef
<
dt
>\
c
EXPAND_ONLY_PREDEF
<
dd
>
<
dt
>\
c
EXPAND_ONLY_PREDEF
<
dd
>
\
addindex
EXPAND_ONLY_PREDEF
\
addindex
EXPAND_ONLY_PREDEF
If
the
\
c
EXPAND_ONLY_PREDEF
and
\
c
MACRO_EXPANSION
tags
are
both
set
to
YES
If
the
\
c
EXPAND_ONLY_PREDEF
and
\
c
MACRO_EXPANSION
tags
are
both
set
to
YES
...
@@ -456,6 +636,7 @@ EXTRA_PACKAGES = times
...
@@ -456,6 +636,7 @@ EXTRA_PACKAGES = times
\
subsection
config_extref
External
reference
options
\
subsection
config_extref
External
reference
options
<
dl
>
<
dl
>
\
anchor
cfg_tagfiles
<
dt
>\
c
TAGFILES
<
dd
>
<
dt
>\
c
TAGFILES
<
dd
>
\
addindex
TAGFILES
\
addindex
TAGFILES
The
\
c
TAGFILES
tag
can
be
used
to
specify
one
or
more
tagfiles
.
The
\
c
TAGFILES
tag
can
be
used
to
specify
one
or
more
tagfiles
.
...
@@ -467,6 +648,7 @@ EXTRA_PACKAGES = times
...
@@ -467,6 +648,7 @@ EXTRA_PACKAGES = times
in
the
directory
in
which
doxygen
is
run
,
you
must
also
specify
the
in
the
directory
in
which
doxygen
is
run
,
you
must
also
specify
the
path
to
the
tagfile
here
.
path
to
the
tagfile
here
.
\
anchor
cfg_generate_tagfile
<
dt
>\
c
GENERATE_TAGFILE
<
dd
>
<
dt
>\
c
GENERATE_TAGFILE
<
dd
>
\
addindex
GENERATE_TAGFILE
\
addindex
GENERATE_TAGFILE
When
a
file
name
is
specified
after
\
c
GENERATE_TAGFILE
,
doxygen
will
create
When
a
file
name
is
specified
after
\
c
GENERATE_TAGFILE
,
doxygen
will
create
...
@@ -474,12 +656,14 @@ EXTRA_PACKAGES = times
...
@@ -474,12 +656,14 @@ EXTRA_PACKAGES = times
See
section
\
ref
doxytag_usage
for
more
information
about
the
usage
of
See
section
\
ref
doxytag_usage
for
more
information
about
the
usage
of
tag
files
.
tag
files
.
\
anchor
cfg_allexternals
<
dt
>\
c
ALLEXTERNALS
<
dd
>
<
dt
>\
c
ALLEXTERNALS
<
dd
>
\
addindex
ALLEXTERNALS
\
addindex
ALLEXTERNALS
if
the
\
c
ALLEXTERNALS
tag
is
set
to
\
c
YES
all
external
class
will
be
listed
if
the
\
c
ALLEXTERNALS
tag
is
set
to
\
c
YES
all
external
class
will
be
listed
in
the
class
index
.
If
set
to
\
c
NO
only
the
inherited
external
classes
in
the
class
index
.
If
set
to
\
c
NO
only
the
inherited
external
classes
will
be
listed
.
will
be
listed
.
\
anchor
cfg_perl_path
<
dt
>\
c
PERL_PATH
<
dd
>
<
dt
>\
c
PERL_PATH
<
dd
>
\
addindex
PERL_PATH
\
addindex
PERL_PATH
The
\
c
PERL_PATH
should
be
the
absolute
path
and
name
of
the
perl
script
The
\
c
PERL_PATH
should
be
the
absolute
path
and
name
of
the
perl
script
...
@@ -489,6 +673,7 @@ EXTRA_PACKAGES = times
...
@@ -489,6 +673,7 @@ EXTRA_PACKAGES = times
\subsection config_search Search engine options
\subsection config_search Search engine options
<dl>
<dl>
\anchor cfg_searchengine
<dt>\c SEARCHENGINE <dd>
<dt>\c SEARCHENGINE <dd>
\addindex SEARCHENGINE
\addindex SEARCHENGINE
The \c SEARCHENGINE tag specifies whether or not a
The \c SEARCHENGINE tag specifies whether or not a
...
@@ -496,18 +681,21 @@ EXTRA_PACKAGES = times
...
@@ -496,18 +681,21 @@ EXTRA_PACKAGES = times
If set to \c NO or left blank, the values of all other tags in this section
If set to \c NO or left blank, the values of all other tags in this section
will be ignored.
will be ignored.
\anchor cfg_cgi_name
<dt>\c CGI_NAME <dd>
<dt>\c CGI_NAME <dd>
\addindex CGI_NAME
\addindex CGI_NAME
The \c CGI_NAME tag should be the name of the CGI script that
The \c CGI_NAME tag should be the name of the CGI script that
starts the search engine (<tt>doxysearch</tt>) with the correct parameters.
starts the search engine (<tt>doxysearch</tt>) with the correct parameters.
A script with this name will be generated by doxygen.
A script with this name will be generated by doxygen.
\anchor cfg_cgi_url
<dt>\c CGI_URL <dd>
<dt>\c CGI_URL <dd>
\addindex CGI_URL
\addindex CGI_URL
The \c CGI_URL tag should be the absolute URL to the directory where the
The \c CGI_URL tag should be the absolute URL to the directory where the
cgi binaries are located. See the documentation of your http daemon for
cgi binaries are located. See the documentation of your http daemon for
details.
details.
\anchor cfg_doc_url
<dt>\c DOC_URL <dd>
<dt>\c DOC_URL <dd>
\addindex DOC_URL
\addindex DOC_URL
The \c DOC_URL tag should be the absolute URL to the directory where the
The \c DOC_URL tag should be the absolute URL to the directory where the
...
@@ -515,17 +703,20 @@ EXTRA_PACKAGES = times
...
@@ -515,17 +703,20 @@ EXTRA_PACKAGES = times
documentation, with <tt>file://</tt> prepended to it, will be used.
documentation, with <tt>file://</tt> prepended to it, will be used.
This is correct for local viewing only.
This is correct for local viewing only.
\anchor cfg_doc_abspath
<dt>\c DOC_ABSPATH <dd>
<dt>\c DOC_ABSPATH <dd>
\addindex DOC_ABSPATH
\addindex DOC_ABSPATH
The \c DOC_ABSPATH tag should be the absolute path to the directory where the
The \c DOC_ABSPATH tag should be the absolute path to the directory where the
documentation is located. If left blank the directory on the local machine
documentation is located. If left blank the directory on the local machine
will be used.
will be used.
\anchor cfg_bin_abspath
<dt>\c BIN_ABSPATH <dd>
<dt>\c BIN_ABSPATH <dd>
\addindex BIN_ABSPATH
\addindex BIN_ABSPATH
The \c BIN_ABSPATH tag must point to the directory where the doxysearch binary
The \c BIN_ABSPATH tag must point to the directory where the doxysearch binary
is installed.
is installed.
\anchor cfg_ext_doc_paths
<dt>\c EXT_DOC_PATHS <dd>
<dt>\c EXT_DOC_PATHS <dd>
\addindex EXT_DOC_PATHS
\addindex EXT_DOC_PATHS
The \c EXT_DOC_PATHS tag can be used to specify one or more paths to
The \c EXT_DOC_PATHS tag can be used to specify one or more paths to
...
...
doc/doxygen.sty
View file @
d4bdeb54
%
% $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.
\NeedsTeXFormat
{
LaTeX2e
}
\NeedsTeXFormat
{
LaTeX2e
}
\ProvidesPackage
{
doxygen
}
\ProvidesPackage
{
doxygen
}
\RequirePackage
{
calc
}
\RequirePackage
{
calc
}
...
...
doc/doxygen_manual.tex
View file @
d4bdeb54
\documentclass
[a4paper]
{
article
}
%
% $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.
\documentclass
[a4paper,ps2pdf]
{
article
}
\usepackage
{
a4wide
}
\usepackage
{
a4wide
}
\usepackage
{
makeidx
}
\usepackage
{
makeidx
}
\usepackage
{
fancyheadings
}
\usepackage
{
fancyheadings
}
\usepackage
{
epsf
}
\usepackage
{
epsf
}
\usepackage
{
doxygen
}
\usepackage
{
doxygen
}
\usepackage
{
multicol
}
\usepackage
{
multicol
}
\usepackage
{
times
}
\usepackage
[backref=true,
pagebackref=true,
colorlinks=true,
linkcolor=blue
]
{
hyperref
}
\makeindex
\makeindex
\setcounter
{
tocdepth
}{
1
}
\setcounter
{
tocdepth
}{
1
}
\setlength
{
\footrulewidth
}{
0.4pt
}
\setlength
{
\footrulewidth
}{
0.4pt
}
...
@@ -35,6 +54,7 @@ Written by Dimitri van Heesch\\[2ex]
...
@@ -35,6 +54,7 @@ Written by Dimitri van Heesch\\[2ex]
\input
{
doxytag
_
usage
}
\input
{
doxytag
_
usage
}
\input
{
doxysearch
_
usage
}
\input
{
doxysearch
_
usage
}
\input
{
installdox
_
usage
}
\input
{
installdox
_
usage
}
\input
{
output
}
\input
{
autolink
}
\input
{
autolink
}
\input
{
config
}
\input
{
config
}
\input
{
commands
}
\input
{
commands
}
...
...
doc/doxygen_usage.doc
View file @
d4bdeb54
...
@@ -41,7 +41,11 @@ doxygen <config_file>
...
@@ -41,7 +41,11 @@ doxygen <config_file>
\endverbatim
\endverbatim
</ol>
</ol>
If you also want a search engine to be generated, you should look
The \c -s option is optional and can be used suppress the description that
doxygen normally generates for each tag. Try to use this option if you send
me configuration files!
If you also want to use the search engine, you should look
at section \ref doxysearch_usage.
at section \ref doxysearch_usage.
*/
*/
doc/faq.doc
View file @
d4bdeb54
...
@@ -18,12 +18,19 @@
...
@@ -18,12 +18,19 @@
<ol>
<ol>
<li><b>How do get information on the index page in HTML?</b>
<li><b>How do get information on the index page in HTML?</b>
<p>
<p>
There is no real support for title pages at the moment. But you can
You should use the \\mainpage command inside a comment block like this:
override the default index page, by using the following comment block:
\verbatim
\verbatim
/*! \
page index
My Personal Index Page
/*! \
mainpage
My Personal Index Page
*
*
* This is my index personal index page.
* \section intro Introduction
*
* This is the introduction.
*
* \section install Installation
*
* \subsection step1 Step 1: Opening the box
*
* etc...
*/
*/
\endverbatim
\endverbatim
...
@@ -44,6 +51,11 @@ around the blocks that should be hidden and put:
...
@@ -44,6 +51,11 @@ around the blocks that should be hidden and put:
\endverbatim
\endverbatim
in the config file then all blocks should be skipped by Doxygen as long
in the config file then all blocks should be skipped by Doxygen as long
as <code>PREPROCESSING = YES</code>.
as <code>PREPROCESSING = YES</code>.
<li><b>How can I make doxygen ignore nasty macro's? </b>
Look at section \ref preprocessing for the answer.
</ol>
</ol>
*/
*/
doc/index.doc
View file @
d4bdeb54
...
@@ -41,7 +41,8 @@ All output generated by Doxygen is not covered by this license.
...
@@ -41,7 +41,8 @@ All output generated by Doxygen is not covered by this license.
Doxygen is a documentation system for C and C++. It can generate an on-line
Doxygen is a documentation system for C and C++. It can generate an on-line
class browser (in HTML) and/or an off-line reference manual
class browser (in HTML) and/or an off-line reference manual
(in \f$\mbox{\LaTeX}\f$) from a set
(in \f$\mbox{\LaTeX}\f$) from a set
of documented source files. The documentation is extracted directly from the
of documented source files. There is also some support for generating
man pages. The documentation is extracted directly from the
sources. Doxygen is developed on a <a href="http://www.linux.org">Linux</a>
sources. Doxygen is developed on a <a href="http://www.linux.org">Linux</a>
platform, but it runs on most other UNIX flavors as well.
platform, but it runs on most other UNIX flavors as well.
An executable for Windows 95/NT is also available.
An executable for Windows 95/NT is also available.
...
@@ -78,6 +79,8 @@ The second part forms a reference manual:
...
@@ -78,6 +79,8 @@ The second part forms a reference manual:
<li>Section \ref doxysearch_usage shows how to use the \c doxysearch program.
<li>Section \ref doxysearch_usage shows how to use the \c doxysearch program.
<li>Section \ref installdox_usage shows how to use the \c installdox
<li>Section \ref installdox_usage shows how to use the \c installdox
script that is generated by Doxygen if you use tag files.
script that is generated by Doxygen if you use tag files.
<li>Section \ref output shows how to generate the various output formats
supported by Doxygen.
<li>Section \ref autolink shows how to put links to files, classes,
<li>Section \ref autolink shows how to put links to files, classes,
and members in the documentation.
and members in the documentation.
<li>Section \ref config shows how to fine-tune doxygen, so it
<li>Section \ref config shows how to fine-tune doxygen, so it
...
@@ -177,6 +180,8 @@ Matthias Baas,
...
@@ -177,6 +180,8 @@ Matthias Baas,
Walter Mueller,
Walter Mueller,
William van Dieten,
William van Dieten,
Joshua Jensen,
Joshua Jensen,
Patrick Aberts,
Jacques Tremblay,
and many others for suggestions, patches and bug reports.
and many others for suggestions, patches and bug reports.
</ul>
</ul>
*/
*/
...
...
doc/language.doc
View file @
d4bdeb54
...
@@ -150,6 +150,31 @@ Here is a list of the languages and their current maintainers:
...
@@ -150,6 +150,31 @@ Here is a list of the languages and their current maintainers:
foltra@puc.cl</a>
foltra@puc.cl</a>
</TD>
</TD>
</TR>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Finnish
</TD>
<TD>
Olli Korhonen
</TD>
<TD>
<a href="mailto:Olli.Korhonen@ccc.fi">
Olli.Korhonen@ccc.fi</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Russian
</TD>
<TD>
Vladimir Vodolazkiy
</TD>
<TD>
<a href="mailto:voldemarus@geocities.com">
voldemarus@geocities.com</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TR BGCOLOR="#ffffff">
<TD>
<TD>
Dutch
Dutch
...
@@ -192,6 +217,10 @@ Here is a list of the languages and their current maintainers:
...
@@ -192,6 +217,10 @@ Here is a list of the languages and their current maintainers:
\hline
\hline
Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} \\
Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} \\
\hline
\hline
Finish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} \\
\hline
Russian & Vladimir Vodolazkiy & {\tt voldemarus@geocities.com} \\
\hline
Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} \\
Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} \\
\hline
\hline
\end{tabular}
\end{tabular}
...
...
doc/output.doc
0 → 100644
View file @
d4bdeb54
/******************************************************************************
*
* $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.
*
*/
/*! \page output.html
\section output Output Formats
\addindex output formats
The following output formats are \e directly supported by doxygen:
<dl>
<dt><b>HTML</b>
<dd>Generated if GENERATE_HTML is set to YES in the configuration file.
<dt>\f$\mbox{\LaTeX}\f$
<dd>Generated if GENERATE_LATEX is set to YES in the configuration file.
<dt><b>Man pages</b>
<dd>Generated if GENERATE_MAN is set to YES in the configuration file.
</dl>
The following output formats are \e indirectly supported by doxygen:
<dl>
<dt><b>Compressed HTML</b> (a.k.a. Windows 98 help)
<dd>Generated by Microsoft's HTML Help workshop from the HTML output if
\c GENERATE_HTMLHELP is set to \c YES.
<dt><b>Postscript</b>
<dd>Generated from the \f$\mbox{\LaTeX}\f$ output by
running <code>make ps</code> in the output directory.
For the best results \c PDF_HYPERLINKS should be set to \c NO.
<dt><b>PDF</b>\htmlonly \endhtmlonly
<dd>Generated from the \f$\mbox{\LaTeX}\f$ output by
running <code>make pdf</code> in the output directory.
In order to get hyperlinks in the pdf file,
\c PDF_HYPERLINKS should be set to \c YES.
</dl>
*/
doc/starting.doc
View file @
d4bdeb54
...
@@ -203,7 +203,7 @@ The one-line comments should contain a brief description,
...
@@ -203,7 +203,7 @@ The one-line comments should contain a brief description,
whereas the multi-line comment blocks contain a more detailed description.
whereas the multi-line comment blocks contain a more detailed description.
The brief descriptions are included in the member overview of a class,
The brief descriptions are included in the member overview of a class,
namespace or file and are printed using a small italic font
namespace or file and are printed using a small italic font
(this description can be omitted by setting \c BRIEF_
MEMBER
_DESC to \c NO in
(this description can be omitted by setting \c BRIEF_
STDMETHOD
_DESC to \c NO in
the config file). By default the brief descriptions are also the first
the config file). By default the brief descriptions are also the first
sentence of the detailed description
sentence of the detailed description
(this can be changed by setting the \c REPEAT_BRIEF tag to \c NO).
(this can be changed by setting the \c REPEAT_BRIEF tag to \c NO).
...
@@ -443,7 +443,7 @@ after preprocessing becomes:
...
@@ -443,7 +443,7 @@ after preprocessing becomes:
\endverbatim
\endverbatim
Notice that doxygen will now expand \e all macro definitions
Notice that doxygen will now expand \e all macro definitions
(recursively if needed). This is often too much
, therefore
doxygen also
(recursively if needed). This is often too much
. Therefore,
doxygen also
allows you to expand only those defines that you explicitly
allows you to expand only those defines that you explicitly
specify. For this you have to set the \c EXPAND_ONLY_PREDEF tag to \c YES
specify. For this you have to set the \c EXPAND_ONLY_PREDEF tag to \c YES
and specify the macro definitions after the \c PREDEFINED tag.
and specify the macro definitions after the \c PREDEFINED tag.
...
@@ -462,9 +462,9 @@ of an abstract base class called \c IUnknown:
...
@@ -462,9 +462,9 @@ of an abstract base class called \c IUnknown:
/*! The IUnknown interface */
/*! The IUnknown interface */
DECLARE_INTERFACE(IUnknown)
DECLARE_INTERFACE(IUnknown)
{
{
MEMBER
(HRESULT,QueryInterface) (THIS_ REFIID iid, void **ppv) PURE;
STDMETHOD
(HRESULT,QueryInterface) (THIS_ REFIID iid, void **ppv) PURE;
MEMBER
(ULONG,AddRef) (THIS) PURE;
STDMETHOD
(ULONG,AddRef) (THIS) PURE;
MEMBER
(ULONG,Release) (THIS) PURE;
STDMETHOD
(ULONG,Release) (THIS) PURE;
};
};
\endverbatim
\endverbatim
...
@@ -479,7 +479,7 @@ ENABLE_PREPROCESSING = YES
...
@@ -479,7 +479,7 @@ ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
EXPAND_ONLY_PREDEF = YES
PREDEFINED = "DECLARE_INTERFACE(name)=class name" \
PREDEFINED = "DECLARE_INTERFACE(name)=class name" \
"
MEMBER
(result,name)=virtual result name" \
"
STDMETHOD
(result,name)=virtual result name" \
"PURE= = 0" \
"PURE= = 0" \
THIS_= \
THIS_= \
THIS= \
THIS= \
...
...
doc/trouble.doc
View file @
d4bdeb54
...
@@ -48,8 +48,8 @@
...
@@ -48,8 +48,8 @@
int *(a[20]);
int *(a[20]);
\endverbatim
\endverbatim
then doxygen will remove the braces and correctly parse the result.
then doxygen will remove the braces and correctly parse the result.
<li>Not all names in code fragments that are include in the documentation
<li>Not all names in code fragments that are include
d
in the documentation
are replaced by links (for instance when using
SOURCE_BROWSER =
YES).
are replaced by links (for instance when using
\c SOURCE_BROWSER = \c
YES).
For a part this is because the code parser isn't smart enough at the
For a part this is because the code parser isn't smart enough at the
moment. I'll try to improve this in the future. But even with these
moment. I'll try to improve this in the future. But even with these
improvements not everthing can be properly linked to the corresponding
improvements not everthing can be properly linked to the corresponding
...
...
examples/Makefile.in
View file @
d4bdeb54
...
@@ -75,7 +75,7 @@ autolink/html/index.html: autolink.cpp autolink.cfg
...
@@ -75,7 +75,7 @@ autolink/html/index.html: autolink.cpp autolink.cfg
tag/html/index.html
:
tag.cpp tag.cfg
tag/html/index.html
:
tag.cpp tag.cfg
$(DOXYGEN)
/bin/doxygen tag.cfg
$(DOXYGEN)
/bin/doxygen tag.cfg
sed
-e
"1,1s
.perl.
$(PERL)
.
g"
tag/html/installdox
>
tag/html/installdox.perl
sed
-e
"1,1s
#perl#
$(PERL)
#
g"
tag/html/installdox
>
tag/html/installdox.perl
cd
tag/html
;
$(PERL)
installdox.perl
-lexample
.tag@../../example/html
cd
tag/html
;
$(PERL)
installdox.perl
-lexample
.tag@../../example/html
restypedef/html/index.html
:
restypedef.cpp restypedef.cfg
restypedef/html/index.html
:
restypedef.cpp restypedef.cfg
...
...
src/classdef.cpp
View file @
d4bdeb54
...
@@ -232,11 +232,11 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -232,11 +232,11 @@ void ClassDef::writeDocumentation(OutputList &ol)
}
}
pageTitle
+=
pageType
+
" Reference"
;
pageTitle
+=
pageType
+
" Reference"
;
startFile
(
ol
,
fileName
,
pageTitle
);
startFile
(
ol
,
fileName
,
pageTitle
);
startTitle
(
ol
);
startTitle
(
ol
,
getOutputFileBase
()
);
//ol.docify(name()+" "+pageType.right(pageType.length()-1)+" ");
//ol.docify(name()+" "+pageType.right(pageType.length()-1)+" ");
//parseText(ol,theTranslator->trReference());
//parseText(ol,theTranslator->trReference());
parseText
(
ol
,
theTranslator
->
trCompoundReference
(
name
(),
compType
));
parseText
(
ol
,
theTranslator
->
trCompoundReference
(
name
(),
compType
));
endTitle
(
ol
,
name
());
endTitle
(
ol
,
getOutputFileBase
(),
name
());
// write brief description
// write brief description
OutputList
briefOutput
(
&
ol
);
OutputList
briefOutput
(
&
ol
);
...
@@ -694,9 +694,9 @@ void ClassDef::writeMemberList(OutputList &ol)
...
@@ -694,9 +694,9 @@ void ClassDef::writeMemberList(OutputList &ol)
// do not generate Latex output
// do not generate Latex output
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
memListFileName
,
theTranslator
->
trMemberList
());
startFile
(
ol
,
memListFileName
,
theTranslator
->
trMemberList
());
startTitle
(
ol
);
startTitle
(
ol
,
0
);
parseText
(
ol
,
name
()
+
" "
+
theTranslator
->
trMemberList
());
parseText
(
ol
,
name
()
+
" "
+
theTranslator
->
trMemberList
());
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
parseText
(
ol
,
theTranslator
->
trThisIsTheListOfAllMembers
());
parseText
(
ol
,
theTranslator
->
trThisIsTheListOfAllMembers
());
ol
.
writeObjectLink
(
getReference
(),
fileName
,
0
,
name
());
ol
.
writeObjectLink
(
getReference
(),
fileName
,
0
,
name
());
parseText
(
ol
,
theTranslator
->
trIncludingInheritedMembers
());
parseText
(
ol
,
theTranslator
->
trIncludingInheritedMembers
());
...
@@ -746,7 +746,8 @@ void ClassDef::writeMemberList(OutputList &ol)
...
@@ -746,7 +746,8 @@ void ClassDef::writeMemberList(OutputList &ol)
ol
.
writeListItem
();
ol
.
writeListItem
();
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
md
->
anchor
(),
name
);
md
->
anchor
(),
name
);
if
(
md
->
isFunction
()
||
md
->
isSignal
()
||
md
->
isSlot
()
)
if
(
md
->
isFunction
()
||
md
->
isSignal
()
||
md
->
isSlot
()
||
(
md
->
isFriend
()
&&
md
->
argsString
()))
ol
.
docify
(
md
->
argsString
());
ol
.
docify
(
md
->
argsString
());
else
if
(
md
->
isEnumerate
())
else
if
(
md
->
isEnumerate
())
parseText
(
ol
,
" "
+
theTranslator
->
trEnumName
());
parseText
(
ol
,
" "
+
theTranslator
->
trEnumName
());
...
@@ -786,7 +787,8 @@ void ClassDef::writeMemberList(OutputList &ol)
...
@@ -786,7 +787,8 @@ void ClassDef::writeMemberList(OutputList &ol)
memberWritten
=
TRUE
;
memberWritten
=
TRUE
;
}
}
if
((
protect
!=
Public
||
md
->
isStatic
()
||
virt
!=
Normal
||
if
((
protect
!=
Public
||
md
->
isStatic
()
||
virt
!=
Normal
||
md
->
isFriend
()
||
md
->
isRelated
()
md
->
isFriend
()
||
md
->
isRelated
()
||
(
md
->
isInline
()
&&
Config
::
inlineInfoFlag
)
)
)
&&
memberWritten
)
&&
memberWritten
)
{
{
...
@@ -797,6 +799,8 @@ void ClassDef::writeMemberList(OutputList &ol)
...
@@ -797,6 +799,8 @@ void ClassDef::writeMemberList(OutputList &ol)
else
if
(
md
->
isRelated
())
sl
.
append
(
"related"
);
else
if
(
md
->
isRelated
())
sl
.
append
(
"related"
);
else
else
{
{
if
(
Config
::
inlineInfoFlag
&&
md
->
isInline
())
sl
.
append
(
"inline"
);
if
(
protect
==
Protected
)
sl
.
append
(
"protected"
);
if
(
protect
==
Protected
)
sl
.
append
(
"protected"
);
else
if
(
protect
==
Private
)
sl
.
append
(
"private"
);
else
if
(
protect
==
Private
)
sl
.
append
(
"private"
);
if
(
virt
==
Virtual
)
sl
.
append
(
"virtual"
);
if
(
virt
==
Virtual
)
sl
.
append
(
"virtual"
);
...
@@ -831,11 +835,11 @@ void ClassDef::writeIncludeFile(OutputList &ol)
...
@@ -831,11 +835,11 @@ void ClassDef::writeIncludeFile(OutputList &ol)
//printf("incFile=%s\n",incFile->absFilePath().data());
//printf("incFile=%s\n",incFile->absFilePath().data());
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
fileName
+
"-include"
,
name
()
+
" Include File"
);
startFile
(
ol
,
fileName
+
"-include"
,
name
()
+
" Include File"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
QCString
n
=
incName
.
copy
();
QCString
n
=
incName
.
copy
();
if
(
incName
.
isNull
())
n
=
incFile
->
name
();
if
(
incName
.
isNull
())
n
=
incFile
->
name
();
parseText
(
ol
,
n
);
parseText
(
ol
,
n
);
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
parseText
(
ol
,
theTranslator
->
trVerbatimText
(
incFile
->
name
()));
parseText
(
ol
,
theTranslator
->
trVerbatimText
(
incFile
->
name
()));
ol
.
writeRuler
();
ol
.
writeRuler
();
ol
.
startCodeFragment
();
ol
.
startCodeFragment
();
...
@@ -992,15 +996,25 @@ bool ClassDef::hasNonReferenceSuperClass()
...
@@ -992,15 +996,25 @@ bool ClassDef::hasNonReferenceSuperClass()
// htmlHelp->decContentsDepth();
// htmlHelp->decContentsDepth();
//}
//}
void
ClassDef
::
writeDeclaration
(
OutputList
&
ol
)
void
ClassDef
::
writeDeclaration
(
OutputList
&
ol
,
MemberDef
*
md
)
{
{
//ol.insertMemberAlign();
//ol.insertMemberAlign();
//printf("ClassName=`%s'\n",name().data());
switch
(
compType
)
switch
(
compType
)
{
{
case
Class
:
ol
.
docify
(
"class {"
);
break
;
case
Class
:
ol
.
docify
(
"class"
);
break
;
case
Struct
:
ol
.
docify
(
"struct {"
);
break
;
case
Struct
:
ol
.
docify
(
"struct"
);
break
;
default
:
ol
.
docify
(
"union {"
);
break
;
default
:
ol
.
docify
(
"union"
);
break
;
}
int
ri
=
name
().
findRev
(
"::"
);
if
(
ri
==-
1
)
ri
=
name
().
length
();
QCString
cn
=
name
().
right
(
name
().
length
()
-
ri
-
2
);
if
(
!
cn
.
isEmpty
()
&&
cn
.
at
(
0
)
!=
'@'
&&
md
)
{
ol
.
docify
(
" "
);
ol
.
writeObjectLink
(
0
,
0
,
md
->
anchor
(),
cn
);
}
}
ol
.
docify
(
" {"
);
ol
.
endMemberItem
(
FALSE
,
0
,
0
,
FALSE
);
// TODO: pass correct group parameters
ol
.
endMemberItem
(
FALSE
,
0
,
0
,
FALSE
);
// TODO: pass correct group parameters
// insert members of this class
// insert members of this class
...
...
src/classdef.h
View file @
d4bdeb54
...
@@ -39,6 +39,7 @@ class BaseClassList;
...
@@ -39,6 +39,7 @@ class BaseClassList;
class
MemberInfoList
;
class
MemberInfoList
;
class
MemberInfoDict
;
class
MemberInfoDict
;
class
NamespaceDef
;
class
NamespaceDef
;
class
MemberDef
;
class
ClassDef
:
public
Definition
class
ClassDef
:
public
Definition
{
{
...
@@ -76,7 +77,7 @@ class ClassDef : public Definition
...
@@ -76,7 +77,7 @@ class ClassDef : public Definition
void
writeMemberList
(
OutputList
&
ol
);
void
writeMemberList
(
OutputList
&
ol
);
void
writeIncludeFile
(
OutputList
&
ol
);
void
writeIncludeFile
(
OutputList
&
ol
);
//void writeMembersToContents();
//void writeMembersToContents();
void
writeDeclaration
(
OutputList
&
ol
);
void
writeDeclaration
(
OutputList
&
ol
,
MemberDef
*
md
);
bool
addExample
(
const
char
*
anchor
,
const
char
*
name
,
const
char
*
file
);
bool
addExample
(
const
char
*
anchor
,
const
char
*
name
,
const
char
*
file
);
bool
hasExamples
();
bool
hasExamples
();
//void writeExample(OutputList &ol);
//void writeExample(OutputList &ol);
...
@@ -84,9 +85,9 @@ class ClassDef : public Definition
...
@@ -84,9 +85,9 @@ class ClassDef : public Definition
Protection
protection
()
const
{
return
prot
;
}
Protection
protection
()
const
{
return
prot
;
}
/*! a link to this class is possible within this project */
/*! a link to this class is possible within this project */
bool
isLinkableInProject
()
bool
isLinkableInProject
()
{
int
i
=
name
().
findRev
(
"::"
);
{
//
int i = name().findRev("::");
if
(
i
==-
1
)
i
=
0
;
else
i
+=
2
;
//
if (i==-1) i=0; else i+=2;
return
!
name
().
isEmpty
()
&&
name
().
at
(
i
)
!=
'@'
&&
return
!
name
().
isEmpty
()
&&
name
().
find
(
'@'
)
==-
1
&&
(
prot
!=
Private
||
Config
::
extractPrivateFlag
)
&&
(
prot
!=
Private
||
Config
::
extractPrivateFlag
)
&&
hasDocumentation
()
&&
!
isReference
();
hasDocumentation
()
&&
!
isReference
();
}
}
...
@@ -167,6 +168,7 @@ struct BaseClassDef
...
@@ -167,6 +168,7 @@ struct BaseClassDef
class
BaseClassList
:
public
QList
<
BaseClassDef
>
class
BaseClassList
:
public
QList
<
BaseClassDef
>
{
{
public
:
public
:
~
BaseClassList
()
{}
int
compareItems
(
GCI
item1
,
GCI
item2
)
int
compareItems
(
GCI
item1
,
GCI
item2
)
{
{
ClassDef
*
c1
=
((
BaseClassDef
*
)
item1
)
->
classDef
;
ClassDef
*
c1
=
((
BaseClassDef
*
)
item1
)
->
classDef
;
...
...
src/code.l
View file @
d4bdeb54
...
@@ -213,7 +213,10 @@ static bool getLink(const char *className,
...
@@ -213,7 +213,10 @@ static bool getLink(const char *className,
// exampleFile.data());
// exampleFile.data());
if (md->addExample(anchor,exampleName,exampleFile))
if (md->addExample(anchor,exampleName,exampleFile))
{
{
bool latexEnabled = result.isEnabled(OutputGenerator::Latex);
if (latexEnabled) result.disable(OutputGenerator::Latex);
result.writeAnchor(anchor);
result.writeAnchor(anchor);
if (latexEnabled) result.enable(OutputGenerator::Latex);
anchorCount++;
anchorCount++;
}
}
}
}
...
@@ -222,6 +225,7 @@ static bool getLink(const char *className,
...
@@ -222,6 +225,7 @@ static bool getLink(const char *className,
if (d)
if (d)
{
{
//printf("d->getOutputBase()=`%s' name=`%s'\n",d->getOutputFileBase().data(),md->name().data());
result.writeCodeLink(d->getReference(),d->getOutputFileBase(),
result.writeCodeLink(d->getReference(),d->getOutputFileBase(),
md->anchor(),memberName);
md->anchor(),memberName);
return TRUE;
return TRUE;
...
@@ -384,7 +388,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
...
@@ -384,7 +388,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
if ((fd=findFileDef(&inputNameDict,yytext,ambig)) &&
if ((fd=findFileDef(&inputNameDict,yytext,ambig)) &&
fd->isLinkable())
fd->isLinkable())
{
{
code->writeCodeLink(
0
,fd->getOutputFileBase(),0,yytext);
code->writeCodeLink(
fd->getReference()
,fd->getOutputFileBase(),0,yytext);
}
}
else
else
{
{
...
...
src/config.h
View file @
d4bdeb54
...
@@ -39,6 +39,7 @@ struct Config
...
@@ -39,6 +39,7 @@ struct Config
static
QCString
manOutputDir
;
// the directory to put the man pages
static
QCString
manOutputDir
;
// the directory to put the man pages
static
QCString
outputLanguage
;
// the output language
static
QCString
outputLanguage
;
// the output language
static
QCString
headerFile
;
// the name of the personal HTML header
static
QCString
headerFile
;
// the name of the personal HTML header
static
QCString
latexHeaderFile
;
// the name of the personal LaTeX header
static
QCString
footerFile
;
// the name of the personal HTML footer
static
QCString
footerFile
;
// the name of the personal HTML footer
static
QCString
cgiName
;
// the name of the CGI binary
static
QCString
cgiName
;
// the name of the CGI binary
static
QCString
cgiURL
;
// the absolute URL to the CGI binary
static
QCString
cgiURL
;
// the absolute URL to the CGI binary
...
@@ -91,6 +92,9 @@ struct Config
...
@@ -91,6 +92,9 @@ struct Config
static
bool
autoBriefFlag
;
// javadoc comments behaves as Qt comments.
static
bool
autoBriefFlag
;
// javadoc comments behaves as Qt comments.
static
bool
htmlHelpFlag
;
// should html help files be generated?
static
bool
htmlHelpFlag
;
// should html help files be generated?
static
bool
alphaIndexFlag
;
// should an alphabetical index be generated?
static
bool
alphaIndexFlag
;
// should an alphabetical index be generated?
static
bool
pdfHyperFlag
;
// generate latex prepared creating hyperlinked pdfs.
static
bool
inheritDocsFlag
;
// inheritance of documentation enabled?
static
bool
inlineInfoFlag
;
// show info about inline members?
};
};
#endif
#endif
src/config.l
View file @
d4bdeb54
...
@@ -71,6 +71,7 @@ QCString Config::latexOutputDir;
...
@@ -71,6 +71,7 @@ QCString Config::latexOutputDir;
QCString Config::manOutputDir;
QCString Config::manOutputDir;
QCString Config::outputLanguage;
QCString Config::outputLanguage;
QCString Config::headerFile;
QCString Config::headerFile;
QCString Config::latexHeaderFile;
QCString Config::footerFile;
QCString Config::footerFile;
QCString Config::cgiName;
QCString Config::cgiName;
QCString Config::cgiURL;
QCString Config::cgiURL;
...
@@ -111,6 +112,7 @@ bool Config::caseSensitiveNames = FALSE;
...
@@ -111,6 +112,7 @@ bool Config::caseSensitiveNames = FALSE;
bool Config::includeSourceFlag = FALSE;
bool Config::includeSourceFlag = FALSE;
bool Config::htmlHelpFlag = FALSE;
bool Config::htmlHelpFlag = FALSE;
bool Config::alphaIndexFlag = FALSE;
bool Config::alphaIndexFlag = FALSE;
bool Config::pdfHyperFlag = FALSE;
bool Config::autoBriefFlag = TRUE;
bool Config::autoBriefFlag = TRUE;
bool Config::warningFlag = TRUE;
bool Config::warningFlag = TRUE;
bool Config::generateHtml = TRUE;
bool Config::generateHtml = TRUE;
...
@@ -123,6 +125,8 @@ bool Config::classDiagramFlag = TRUE;
...
@@ -123,6 +125,8 @@ bool Config::classDiagramFlag = TRUE;
bool Config::repeatBriefFlag = TRUE;
bool Config::repeatBriefFlag = TRUE;
bool Config::verbatimHeaderFlag = TRUE;
bool Config::verbatimHeaderFlag = TRUE;
bool Config::htmlAlignMemberFlag = TRUE;
bool Config::htmlAlignMemberFlag = TRUE;
bool Config::inheritDocsFlag = TRUE;
bool Config::inlineInfoFlag = TRUE;
/* -----------------------------------------------------------------
/* -----------------------------------------------------------------
*
*
...
@@ -180,6 +184,7 @@ static int yyread(char *buf,int max_size)
...
@@ -180,6 +184,7 @@ static int yyread(char *buf,int max_size)
<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; }
<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; }
<Start>"HTML_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::headerFile; }
<Start>"HTML_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::headerFile; }
<Start>"HTML_FOOTER"[ \t]*"=" { BEGIN(GetString); s=&Config::footerFile; }
<Start>"HTML_FOOTER"[ \t]*"=" { BEGIN(GetString); s=&Config::footerFile; }
<Start>"LATEX_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::latexHeaderFile; }
<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiName; }
<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiName; }
<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiURL; }
<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiURL; }
<Start>"DOC_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::docURL; }
<Start>"DOC_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::docURL; }
...
@@ -232,6 +237,9 @@ static int yyread(char *buf,int max_size)
...
@@ -232,6 +237,9 @@ static int yyread(char *buf,int max_size)
<Start>"JAVADOC_AUTOBRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::autoBriefFlag; }
<Start>"JAVADOC_AUTOBRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::autoBriefFlag; }
<Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; }
<Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; }
<Start>"ALPHABETICAL_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::alphaIndexFlag; }
<Start>"ALPHABETICAL_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::alphaIndexFlag; }
<Start>"PDF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::pdfHyperFlag; }
<Start>"INHERIT_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::inheritDocsFlag; }
<Start>"INLINE_INFO"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineInfoFlag; }
<Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); }
<Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); }
<GetString,GetBool>\n { yyLineNr++; BEGIN(Start); }
<GetString,GetBool>\n { yyLineNr++; BEGIN(Start); }
<GetStrList>\n {
<GetStrList>\n {
...
@@ -375,6 +383,7 @@ void Config::init()
...
@@ -375,6 +383,7 @@ void Config::init()
Config::manOutputDir ="man";
Config::manOutputDir ="man";
Config::outputLanguage = "English";
Config::outputLanguage = "English";
Config::headerFile.resize(0);
Config::headerFile.resize(0);
Config::latexHeaderFile.resize(0);
Config::footerFile.resize(0);
Config::footerFile.resize(0);
Config::cgiName = "search.cgi";
Config::cgiName = "search.cgi";
Config::cgiURL.resize(0);
Config::cgiURL.resize(0);
...
@@ -415,6 +424,7 @@ void Config::init()
...
@@ -415,6 +424,7 @@ void Config::init()
Config::includeSourceFlag = FALSE;
Config::includeSourceFlag = FALSE;
Config::htmlHelpFlag = FALSE;
Config::htmlHelpFlag = FALSE;
Config::alphaIndexFlag = FALSE;
Config::alphaIndexFlag = FALSE;
Config::pdfHyperFlag = FALSE;
Config::warningFlag = TRUE;
Config::warningFlag = TRUE;
Config::generateHtml = TRUE;
Config::generateHtml = TRUE;
Config::generateLatex = TRUE;
Config::generateLatex = TRUE;
...
@@ -427,6 +437,8 @@ void Config::init()
...
@@ -427,6 +437,8 @@ void Config::init()
Config::verbatimHeaderFlag = TRUE;
Config::verbatimHeaderFlag = TRUE;
Config::htmlAlignMemberFlag = TRUE;
Config::htmlAlignMemberFlag = TRUE;
Config::autoBriefFlag = TRUE;
Config::autoBriefFlag = TRUE;
Config::inheritDocsFlag = TRUE;
Config::inlineInfoFlag = TRUE;
}
}
void writeTemplateConfig(QFile *f,bool sl)
void writeTemplateConfig(QFile *f,bool sl)
...
@@ -636,7 +648,7 @@ void writeTemplateConfig(QFile *f,bool sl)
...
@@ -636,7 +648,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
if (!sl)
{
{
t << "\n";
t << "\n";
t << "# If the JAVADOC_
NO_AUTOBRIEF
is set to YES (the default) then Doxygen\n";
t << "# If the JAVADOC_
AUTOBRIEF tag
is set to YES (the default) then Doxygen\n";
t << "# will interpret the first line (until the first dot) of a JavaDoc-style\n";
t << "# will interpret the first line (until the first dot) of a JavaDoc-style\n";
t << "# comment as the brief description. If set to NO, the Javadoc-style will\n";
t << "# comment as the brief description. If set to NO, the Javadoc-style will\n";
t << "# behave just like the Qt-style comments.\n";
t << "# behave just like the Qt-style comments.\n";
...
@@ -644,6 +656,23 @@ void writeTemplateConfig(QFile *f,bool sl)
...
@@ -644,6 +656,23 @@ void writeTemplateConfig(QFile *f,bool sl)
}
}
t << "JAVADOC_AUTOBRIEF = YES\n";
t << "JAVADOC_AUTOBRIEF = YES\n";
if (!sl)
if (!sl)
{
t << "\n";
t << "# if the INHERIT_DOCS tag is set to YES (the default) then an undocumented\n";
t << "# member inherits the documentation from any documented member that it\n";
t << "# reimplements.\n";
t << "\n";
}
t << "INHERIT_DOCS = YES\n";
if (!sl)
{
t << "\n";
t << "# if the INLINE_INFO tag is set to YES (the default) then a tag [inline]\n";
t << "# is inserted in the documentation for inline members.\n";
t << "\n";
}
t << "INLINE_INFO = YES\n";
if (!sl)
{
{
t << "\n";
t << "\n";
}
}
...
@@ -839,6 +868,26 @@ void writeTemplateConfig(QFile *f,bool sl)
...
@@ -839,6 +868,26 @@ void writeTemplateConfig(QFile *f,bool sl)
}
}
t << "EXTRA_PACKAGES =\n";
t << "EXTRA_PACKAGES =\n";
if (!sl)
if (!sl)
{
t << "\n";
t << "# The LATEX_HEADER tag can be used to specify a personal LaTeX header for \n";
t << "# the generated latex document. The header should contain everything until\n";
t << "# the first chapter. If it is left blank doxygen will generate a \n";
t << "# standard header. Notice: only use this tag if you know what you are doing!\n";
t << "\n";
}
t << "LATEX_HEADER =\n";
if (!sl)
{
t << "\n";
t << "# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated\n";
t << "# is prepared for conversion to pdf (using ps2pdf). The pdf file will\n";
t << "# contain links (just like the HTML output) instead of page references\n";
t << "# This makes the output suitable for online browsing using a pdf viewer.\n";
t << "\n";
}
t << "PDF_HYPERLINKS = NO\n";
if (!sl)
{
{
t << "\n";
t << "\n";
}
}
...
@@ -1177,6 +1226,17 @@ void checkConfig()
...
@@ -1177,6 +1226,17 @@ void checkConfig()
exit(1);
exit(1);
}
}
}
}
// Test to see if LaTeX header is valid
if (Config::latexHeaderFile.length()>0)
{
QFileInfo fi(Config::latexHeaderFile);
if (!fi.exists())
{
err("Error: tag LATEX_HEADER: header file `%s' "
"does not exist\n",Config::latexHeaderFile.data());
exit(1);
}
}
// check include path
// check include path
char *s=Config::includePath.first();
char *s=Config::includePath.first();
while (s)
while (s)
...
...
src/declinfo.l
View file @
d4bdeb54
...
@@ -171,11 +171,11 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
...
@@ -171,11 +171,11 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
<Template>. {
<Template>. {
name+=*yytext;
name+=*yytext;
}
}
<Operator>{B}*"()"{B}*"<>"{B}*/"(" {
<Operator>{B}*"(
"{B}*"
)"{B}*"<>"{B}*/"(" {
name+="() <>";
name+="() <>";
BEGIN(ReadArgs);
BEGIN(ReadArgs);
}
}
<Operator>{B}*"()"{B}*/"(" {
<Operator>{B}*"(
"{B}*"
)"{B}*/"(" {
name+="()";
name+="()";
BEGIN(ReadArgs);
BEGIN(ReadArgs);
}
}
...
...
src/definition.cpp
View file @
d4bdeb54
...
@@ -73,3 +73,17 @@ void Definition::addSectionsToDefinition(QList<QCString> *anchorList)
...
@@ -73,3 +73,17 @@ void Definition::addSectionsToDefinition(QList<QCString> *anchorList)
s
=
anchorList
->
next
();
s
=
anchorList
->
next
();
}
}
}
}
void
Definition
::
setBriefDescription
(
const
char
*
b
)
{
brief
=
QCString
(
b
).
stripWhiteSpace
();
int
bl
=
brief
.
length
();
if
(
bl
>
0
)
// add puntuation if needed
{
switch
(
brief
.
at
(
bl
-
1
))
{
case
'.'
:
case
'!'
:
case
'?'
:
break
;
default
:
brief
+=
'.'
;
break
;
}
}
}
src/definition.h
View file @
d4bdeb54
...
@@ -50,19 +50,7 @@ class Definition
...
@@ -50,19 +50,7 @@ class Definition
/*! sets the brief description of this definition to \a b.
/*! sets the brief description of this definition to \a b.
* A dot is added to the sentence if not available.
* A dot is added to the sentence if not available.
*/
*/
void
setBriefDescription
(
const
char
*
b
)
void
setBriefDescription
(
const
char
*
b
);
{
brief
=
((
QCString
)
b
).
stripWhiteSpace
();
int
bl
=
brief
.
length
();
if
(
bl
>
0
)
// add puntuation if needed
{
switch
(
brief
.
at
(
bl
-
1
))
{
case
'.'
:
case
'!'
:
case
'?'
:
break
;
default
:
brief
+=
'.'
;
break
;
}
}
}
/*! returns TRUE iff the definition is documented */
/*! returns TRUE iff the definition is documented */
virtual
bool
hasDocumentation
()
virtual
bool
hasDocumentation
()
{
return
!
doc
.
isNull
()
||
!
brief
.
isNull
()
||
Config
::
extractAllFlag
;
}
{
return
!
doc
.
isNull
()
||
!
brief
.
isNull
()
||
Config
::
extractAllFlag
;
}
...
...
src/doxygen.cpp
View file @
d4bdeb54
...
@@ -91,6 +91,8 @@ FormulaDict formulaNameDict(1009); // dictionary of the label name of all f
...
@@ -91,6 +91,8 @@ FormulaDict formulaNameDict(1009); // dictionary of the label name of all f
OutputList
*
outputList
;
// list of output generating objects
OutputList
*
outputList
;
// list of output generating objects
PageInfo
*
mainPage
=
0
;
//bool unrelatedFunctionsUsed;
//bool unrelatedFunctionsUsed;
//ClassDef unrelatedClass("nothing",ClassDef::Class);
//ClassDef unrelatedClass("nothing",ClassDef::Class);
...
@@ -357,8 +359,10 @@ static bool addNamespace(Entry *root,ClassDef *cd)
...
@@ -357,8 +359,10 @@ static bool addNamespace(Entry *root,ClassDef *cd)
if
(
e
->
section
==
Entry
::
NAMESPACE_SEC
)
if
(
e
->
section
==
Entry
::
NAMESPACE_SEC
)
{
{
NamespaceDef
*
nd
=
0
;
NamespaceDef
*
nd
=
0
;
if
(
!
e
->
name
.
isEmpty
()
&&
e
->
name
.
at
(
0
)
!=
'@'
&&
//printf("addNameSpace() trying: %s\n",e->name.data());
(
nd
=
namespaceDict
[
e
->
name
])
QCString
nsName
=
stripAnnonymousNamespaceScope
(
e
->
name
);
if
(
!
nsName
.
isEmpty
()
&&
nsName
.
at
(
0
)
!=
'@'
&&
(
nd
=
namespaceDict
[
nsName
])
)
)
{
{
cd
->
setNamespace
(
nd
);
cd
->
setNamespace
(
nd
);
...
@@ -393,7 +397,7 @@ void buildClassList(Entry *root)
...
@@ -393,7 +397,7 @@ void buildClassList(Entry *root)
}
}
else
else
{
{
fullName
=
stripAnnonymousScope
(
fullName
);
fullName
=
stripAnnonymous
Namespace
Scope
(
fullName
);
//printf("new class with name %s\n",fullName.data());
//printf("new class with name %s\n",fullName.data());
bool
ambig
;
bool
ambig
;
...
@@ -506,14 +510,8 @@ void buildNamespaceList(Entry *root)
...
@@ -506,14 +510,8 @@ void buildNamespaceList(Entry *root)
root
->
name
.
length
()
>
0
root
->
name
.
length
()
>
0
)
)
{
{
QCString
fullName
=
root
->
name
.
copy
();
QCString
fullName
=
stripAnnonymousNamespaceScope
(
root
->
name
.
copy
());
if
(
fullName
.
length
()
==
0
)
if
(
fullName
.
length
()
>
0
)
{
// this should not be called
warn
(
"Warning: invalid namespace found in file %s at %d
\n
"
,
root
->
fileName
.
data
(),
root
->
startLine
);
}
else
{
{
//printf("Found namespace %s in %s at line %d\n",root->name.data(),
//printf("Found namespace %s in %s at line %d\n",root->name.data(),
// root->fileName.data(), root->startLine);
// root->fileName.data(), root->startLine);
...
@@ -596,6 +594,8 @@ void buildNamespaceList(Entry *root)
...
@@ -596,6 +594,8 @@ void buildNamespaceList(Entry *root)
}
}
}
}
//----------------------------------------------------------------------
static
MemberDef
*
addVariableToClass
(
Entry
*
root
,
ClassDef
*
cd
,
static
MemberDef
*
addVariableToClass
(
Entry
*
root
,
ClassDef
*
cd
,
MemberDef
::
MemberType
mtype
,
const
QCString
&
scope
,
const
QCString
&
name
,
MemberDef
::
MemberType
mtype
,
const
QCString
&
scope
,
const
QCString
&
name
,
bool
fromAnnScope
,
int
indentDepth
,
MemberDef
*
fromAnnMemb
)
bool
fromAnnScope
,
int
indentDepth
,
MemberDef
*
fromAnnMemb
)
...
@@ -642,7 +642,8 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd,
...
@@ -642,7 +642,8 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd,
MemberDef
*
md
=
mn
->
first
();
MemberDef
*
md
=
mn
->
first
();
while
(
md
)
while
(
md
)
{
{
if
(
md
->
memberClass
()
==
cd
)
// member already in the scope
if
(
md
->
memberClass
()
==
cd
&&
root
->
type
==
md
->
typeString
())
// member already in the scope
{
{
addMemberDocs
(
root
,
md
,
def
,
FALSE
);
addMemberDocs
(
root
,
md
,
def
,
FALSE
);
return
md
;
return
md
;
...
@@ -668,9 +669,6 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd,
...
@@ -668,9 +669,6 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd,
// add the member to the global list
// add the member to the global list
if
(
mn
)
if
(
mn
)
{
{
//printf("Member already found! %s\n",md->name());
//addMemberDocs(root,mn->first(),def,FALSE);
//delete md;
mn
->
inSort
(
md
);
mn
->
inSort
(
md
);
}
}
else
// new variable name
else
// new variable name
...
@@ -689,6 +687,107 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd,
...
@@ -689,6 +687,107 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd,
return
md
;
return
md
;
}
}
//----------------------------------------------------------------------
static
MemberDef
*
addVariableToFile
(
Entry
*
root
,
MemberDef
::
MemberType
mtype
,
const
QCString
&
scope
,
const
QCString
&
name
,
bool
fromAnnScope
,
int
indentDepth
,
MemberDef
*
fromAnnMemb
)
{
Debug
::
print
(
Debug
::
Variables
,
0
,
" global 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
);
md
->
setFromAnnonymousScope
(
fromAnnScope
);
md
->
setFromAnnonymousMember
(
fromAnnMemb
);
md
->
setIndentDepth
(
indentDepth
);
// see if the function is inside a namespace
NamespaceDef
*
nd
=
0
;
if
(
scope
.
length
()
>
0
)
{
nd
=
namespaceDict
[
scope
];
}
if
(
nd
&&
!
nd
->
name
().
isEmpty
()
&&
nd
->
name
().
at
(
0
)
!=
'@'
)
{
nd
->
insertMember
(
md
);
md
->
setNamespace
(
nd
);
}
else
{
// find file definition
FileDef
*
fd
=
0
;
bool
ambig
;
if
(
root
->
fileName
.
length
()
>
0
&&
(
fd
=
findFileDef
(
&
inputNameDict
,
root
->
fileName
,
ambig
))
)
{
fd
->
insertMember
(
md
);
md
->
setFileDef
(
fd
);
}
}
QCString
def
;
// determine the definition of the global variable
if
(
nd
&&
!
nd
->
name
().
isEmpty
()
&&
nd
->
name
().
at
(
0
)
!=
'@'
)
// variable is inside a namespace, so put the scope before the name
{
if
(
root
->
type
.
length
()
>
0
)
{
def
=
root
->
type
+
" "
+
nd
->
name
()
+
"::"
+
name
+
root
->
args
;
}
else
{
def
=
nd
->
name
()
+
"::"
+
name
+
root
->
args
;
}
}
else
{
if
(
root
->
type
.
length
()
>
0
)
{
if
(
name
.
at
(
0
)
==
'@'
)
// dummy variable representing annonymous union
def
=
root
->
type
;
else
def
=
root
->
type
+
" "
+
name
+
root
->
args
;
}
else
{
def
=
name
+
root
->
args
;
}
}
if
(
def
.
left
(
7
)
==
"static "
)
def
=
def
.
right
(
def
.
length
()
-
7
);
md
->
setDefinition
(
def
);
MemberName
*
mn
=
0
;
// add member definition to the list of globals
if
((
mn
=
functionNameDict
[
name
]))
{
mn
->
inSort
(
md
);
}
else
{
mn
=
new
MemberName
(
name
);
mn
->
inSort
(
md
);
functionNameDict
.
insert
(
name
,
mn
);
functionNameList
.
inSort
(
mn
);
}
return
md
;
}
//----------------------------------------------------------------------
//----------------------------------------------------------------------
// Searches the Entry tree for Variable documentation sections.
// Searches the Entry tree for Variable documentation sections.
// If found they are stored in their class or in the global list.
// If found they are stored in their class or in the global list.
...
@@ -698,7 +797,7 @@ void buildVarList(Entry *root)
...
@@ -698,7 +797,7 @@ void buildVarList(Entry *root)
QRegExp
re
(
"([^)]*)"
);
QRegExp
re
(
"([^)]*)"
);
int
i
=-
1
;
int
i
=-
1
;
if
(
root
->
name
.
length
()
>
0
&&
if
(
root
->
name
.
length
()
>
0
&&
root
->
type
!=
"class"
&&
root
->
type
!=
"class"
&&
root
->
type
!=
"interface"
&&
(
(
(
root
->
section
==
Entry
::
VARIABLE_SEC
(
root
->
section
==
Entry
::
VARIABLE_SEC
)
||
)
||
...
@@ -751,7 +850,8 @@ void buildVarList(Entry *root)
...
@@ -751,7 +850,8 @@ void buildVarList(Entry *root)
Entry
*
p
=
root
->
parent
;
Entry
*
p
=
root
->
parent
;
while
((
p
->
section
&
Entry
::
SCOPE_MASK
))
while
((
p
->
section
&
Entry
::
SCOPE_MASK
))
{
{
QCString
scopeName
=
stripAnnonymousScope
(
p
->
name
);
//QCString scopeName = stripAnnonymousScope(p->name);
QCString
scopeName
=
p
->
name
.
copy
();
if
(
!
scopeName
.
isEmpty
())
if
(
!
scopeName
.
isEmpty
())
{
{
scope
.
prepend
(
scopeName
);
scope
.
prepend
(
scopeName
);
...
@@ -769,6 +869,10 @@ void buildVarList(Entry *root)
...
@@ -769,6 +869,10 @@ void buildVarList(Entry *root)
// scope=scope.left(i);
// scope=scope.left(i);
//}
//}
MemberDef
::
MemberType
mtype
;
QCString
type
=
root
->
type
.
stripWhiteSpace
();
ClassDef
*
cd
=
0
;
int
ni
;
int
ni
;
if
((
ni
=
root
->
name
.
findRev
(
"::"
))
!=-
1
)
goto
nextMember
;
if
((
ni
=
root
->
name
.
findRev
(
"::"
))
!=-
1
)
goto
nextMember
;
/* skip this member, because it is a
/* skip this member, because it is a
...
@@ -778,9 +882,6 @@ void buildVarList(Entry *root)
...
@@ -778,9 +882,6 @@ void buildVarList(Entry *root)
* inserted in the correct list!
* inserted in the correct list!
*/
*/
MemberDef
::
MemberType
mtype
;
// NamespaceDef *nd = 0;
QCString
type
=
root
->
type
.
stripWhiteSpace
();
if
(
type
==
"@"
)
if
(
type
==
"@"
)
mtype
=
MemberDef
::
EnumValue
;
mtype
=
MemberDef
::
EnumValue
;
else
if
(
type
.
left
(
8
)
==
"typedef "
)
else
if
(
type
.
left
(
8
)
==
"typedef "
)
...
@@ -790,120 +891,72 @@ void buildVarList(Entry *root)
...
@@ -790,120 +891,72 @@ void buildVarList(Entry *root)
else
else
mtype
=
MemberDef
::
Variable
;
mtype
=
MemberDef
::
Variable
;
ClassDef
*
cd
=
0
;
//printf("name=`%s' scope=%s\n",name.data(),scope.data());
QCString
classScope
=
stripAnnonymousNamespaceScope
(
scope
);
QCString
annScopePrefix
=
scope
.
left
(
scope
.
length
()
-
classScope
.
length
());
scope
=
classScope
;
if
(
scope
.
length
()
>
0
&&
name
.
length
()
>
0
&&
(
cd
=
getClass
(
scope
)))
if
(
scope
.
length
()
>
0
&&
name
.
length
()
>
0
&&
(
cd
=
getClass
(
scope
)))
{
{
MemberDef
*
md
=
0
;
MemberDef
*
md
=
0
;
// if cd is an annonymous scope we insert the member
// if cd is an annonymous scope we insert the member
// into a non-annonymous scope as well.
// into a non-annonymous scope as well.
int
indentDepth
=
0
;
int
indentDepth
=
0
;
if
(
scope
.
find
(
'@'
)
!=-
1
)
int
si
=
scope
.
find
(
'@'
);
if
(
si
!=-
1
)
{
{
QCString
pScope
=
scope
.
copy
();
//printf("name=`%s' scope=%s\n",name.data(),scope.data());
QCString
pScope
;
ClassDef
*
pcd
=
0
;
ClassDef
*
pcd
=
0
;
pScope
=
scope
.
left
(
QMAX
(
si
-
2
,
0
));
indentDepth
=
scope
.
right
(
scope
.
length
()
-
si
).
contains
(
"::"
)
+
1
;
#if 0
// Find the last annonymous scope while search from right to left
// Keep track of the number of scope names we skipped.
while ((i=pScope.findRev("::"))!=-1 && (int)pScope.length()>i+2 &&
while ((i=pScope.findRev("::"))!=-1 && (int)pScope.length()>i+2 &&
pScope
.
at
(
i
+
2
)
=
=
'@'
pScope.at(i+2)
!
='@'
)
)
{
{
pScope=pScope.left(i);
pScope=pScope.left(i);
indentDepth++;
indentDepth++;
}
}
if
((
pcd
=
getClass
(
pScope
)))
while ((i=pScope.findRev("::"))!=-1 && (int)pScope.length()>i+2 &&
{
pScope.at(i+2)=='@'
//printf("Inserting member in parent scope!\n");
md
=
addVariableToClass
(
root
,
pcd
,
mtype
,
pScope
,
name
,
TRUE
,
indentDepth
,
0
);
}
}
addVariableToClass
(
root
,
cd
,
mtype
,
scope
,
name
,
FALSE
,
indentDepth
,
md
);
}
else
if
(
name
.
length
()
>
0
)
// global variable
{
Debug
::
print
(
Debug
::
Variables
,
0
,
" global 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
);
QCString
def
;
// see if the function is inside a namespace
NamespaceDef
*
nd
=
0
;
if
(
scope
.
length
()
>
0
)
{
nd
=
namespaceDict
[
scope
];
}
if
(
nd
&&
!
nd
->
name
().
isEmpty
()
&&
nd
->
name
().
at
(
0
)
!=
'@'
)
{
nd
->
insertMember
(
md
);
md
->
setNamespace
(
nd
);
}
else
{
// find file definition
FileDef
*
fd
=
0
;
bool
ambig
;
if
(
root
->
fileName
.
length
()
>
0
&&
(
fd
=
findFileDef
(
&
inputNameDict
,
root
->
fileName
,
ambig
))
)
)
{
{
fd
->
insertMember
(
md
);
pScope=pScope.left(i);
md
->
setFileDef
(
fd
);
indentDepth++;
}
}
// determine the definition of the global variable
if
(
nd
&&
!
nd
->
name
().
isEmpty
()
&&
nd
->
name
().
at
(
0
)
!=
'@'
)
// variable is inside a namespace, so put the scope before the name
{
if
(
root
->
type
.
length
()
>
0
)
{
def
=
root
->
type
+
" "
+
nd
->
name
()
+
"::"
+
name
+
root
->
args
;
}
}
else
if (pScope.length()>0 && pScope.at(0)=='@')
{
{
def
=
nd
->
name
()
+
"::"
+
name
+
root
->
args
;
pScope.resize(0)
;
}
indentDepth++;
}
}
else
#endif
if
(
!
pScope
.
isEmpty
())
pScope
.
prepend
(
annScopePrefix
);
else
if
(
annScopePrefix
.
length
()
>
2
)
pScope
=
annScopePrefix
.
left
(
annScopePrefix
.
length
()
-
2
);
//printf("pScope=`%s'\n",pScope.data());
if
(
!
name
.
isEmpty
()
&&
name
.
at
(
0
)
!=
'@'
)
{
{
if
(
root
->
type
.
length
()
>
0
)
if
(
pScope
.
length
()
>
0
&&
(
pcd
=
getClass
(
pScope
))
)
{
{
def
=
root
->
type
+
" "
+
name
+
root
->
args
;
//printf("Inserting member in parent scope!\n");
md
=
addVariableToClass
(
root
,
pcd
,
mtype
,
pScope
,
name
,
TRUE
,
indentDepth
,
0
);
}
}
els
e
else
// annonymous scope inside namespace or file => put variable in the global scop
e
{
{
def
=
name
+
root
->
args
;
//printf("Inserting member in global scope %s!\n",pScope.data());
md
=
addVariableToFile
(
root
,
mtype
,
pScope
,
name
,
!
pScope
.
isEmpty
(),
indentDepth
,
0
);
}
}
}
}
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
=
functionNameDict
[
name
]))
{
mn
->
inSort
(
md
);
}
}
else
addVariableToClass
(
root
,
cd
,
mtype
,
scope
,
name
,
FALSE
,
indentDepth
,
md
);
{
mn
=
new
MemberName
(
name
);
mn
->
inSort
(
md
);
functionNameDict
.
insert
(
name
,
mn
);
functionNameList
.
inSort
(
mn
);
}
}
else
if
(
name
.
length
()
>
0
)
// global variable
{
//printf("Inserting member in global scope %s!\n",scope.data());
addVariableToFile
(
root
,
mtype
,
scope
,
name
,
FALSE
,
0
,
0
);
}
}
}
}
nextMember:
nextMember:
...
@@ -948,7 +1001,7 @@ void buildMemberList(Entry *root)
...
@@ -948,7 +1001,7 @@ void buildMemberList(Entry *root)
//printf("root->parent=`%s' cd=%p root->type.find(re,0)=%d\n",
//printf("root->parent=`%s' cd=%p root->type.find(re,0)=%d\n",
// root->parent->name.data(),getClass(root->parent->name),
// root->parent->name.data(),getClass(root->parent->name),
// root->type.find(re,0));
// root->type.find(re,0));
QCString
scope
=
stripAnnonymousScope
(
root
->
parent
->
name
.
copy
());
QCString
scope
=
stripAnnonymous
Namespace
Scope
(
root
->
parent
->
name
.
copy
());
int
i
;
int
i
;
if
(
root
->
parent
&&
if
(
root
->
parent
&&
root
->
parent
->
name
.
length
()
>
0
&&
root
->
parent
->
name
.
length
()
>
0
&&
...
@@ -1002,6 +1055,7 @@ void buildMemberList(Entry *root)
...
@@ -1002,6 +1055,7 @@ void buildMemberList(Entry *root)
md
->
setBriefDescription
(
root
->
brief
);
md
->
setBriefDescription
(
root
->
brief
);
md
->
setBody
(
root
->
body
);
md
->
setBody
(
root
->
body
);
md
->
setGroupId
(
root
->
mGrpId
);
md
->
setGroupId
(
root
->
mGrpId
);
md
->
setInline
(
root
->
inLine
);
//md->setScopeTemplateArguments(root->tArgList);
//md->setScopeTemplateArguments(root->tArgList);
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
QCString
def
;
QCString
def
;
...
@@ -1151,6 +1205,7 @@ void buildMemberList(Entry *root)
...
@@ -1151,6 +1205,7 @@ void buildMemberList(Entry *root)
md
->
setBody
(
root
->
body
);
md
->
setBody
(
root
->
body
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
setGroupId
(
root
->
mGrpId
);
md
->
setGroupId
(
root
->
mGrpId
);
md
->
setInline
(
root
->
inLine
);
QCString
def
;
QCString
def
;
if
(
root
->
type
.
length
()
>
0
)
if
(
root
->
type
.
length
()
>
0
)
{
{
...
@@ -1369,7 +1424,9 @@ void computeClassRelations(Entry *root)
...
@@ -1369,7 +1424,9 @@ void computeClassRelations(Entry *root)
)
)
{
{
ClassDef
*
cd
;
ClassDef
*
cd
;
if
((
cd
=
getClass
(
root
->
name
)))
QCString
bName
=
stripAnnonymousNamespaceScope
(
root
->
name
);
//printf("Class %s\n",bName.data());
if
((
cd
=
getClass
(
bName
)))
{
{
//printf("Class %s %d\n",cd->name().data(),root->extends->count());
//printf("Class %s %d\n",cd->name().data(),root->extends->count());
if
(
!
cd
->
visited
)
if
(
!
cd
->
visited
)
...
@@ -1423,7 +1480,7 @@ void computeClassRelations(Entry *root)
...
@@ -1423,7 +1480,7 @@ void computeClassRelations(Entry *root)
ClassDef
*
baseClass
=
getClass
(
baseClassName
);
ClassDef
*
baseClass
=
getClass
(
baseClassName
);
//printf("baseClass %s of %s found (%s and %s)\n",
//printf("baseClass %s of %s found (%s and %s)\n",
// baseClassName.data(),
// baseClassName.data(),
//
root->n
ame.data(),
//
bN
ame.data(),
// (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"),
// (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"),
// (bi->virt==Normal)?"normal":"virtual"
// (bi->virt==Normal)?"normal":"virtual"
// );
// );
...
@@ -1481,7 +1538,7 @@ void computeClassRelations(Entry *root)
...
@@ -1481,7 +1538,7 @@ void computeClassRelations(Entry *root)
}
// class has no base classes
}
// class has no base classes
}
// else class is already found
}
// else class is already found
}
}
else
if
(
root
->
n
ame
.
right
(
2
)
!=
"::"
)
else
if
(
bN
ame
.
right
(
2
)
!=
"::"
)
{
{
if
(
root
->
name
.
length
()
>
0
&&
root
->
name
[
0
]
!=
'@'
)
if
(
root
->
name
.
length
()
>
0
&&
root
->
name
[
0
]
!=
'@'
)
warn
(
"Warning: Compound %s
\n
"
warn
(
"Warning: Compound %s
\n
"
...
@@ -1605,6 +1662,7 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
...
@@ -1605,6 +1662,7 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
}
}
md
->
setDefFile
(
root
->
fileName
);
md
->
setDefFile
(
root
->
fileName
);
md
->
setDefLine
(
root
->
startLine
);
md
->
setDefLine
(
root
->
startLine
);
if
(
root
->
inLine
&&
!
md
->
isInline
())
md
->
setInline
(
TRUE
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
if
(
cd
)
cd
->
insertUsedFile
(
root
->
fileName
);
if
(
cd
)
cd
->
insertUsedFile
(
root
->
fileName
);
if
(
root
->
mGrpId
!=-
1
)
if
(
root
->
mGrpId
!=-
1
)
...
@@ -1823,10 +1881,12 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
...
@@ -1823,10 +1881,12 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
bool
isFunc
)
bool
isFunc
)
{
{
Debug
::
print
(
Debug
::
FindMembers
,
0
,
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"findMember(root=%p,funcDecl=`%s',related=`%s',overload=%d,isFunc=%d mGrpId=%d tArgList=%p=
\"
%s
\"
scopeSpec=%s memberSpec=%s
\n
"
,
"findMember(root=%p,funcDecl=`%s',related=`%s',overload=%d,"
"isFunc=%d mGrpId=%d tArgList=%p=
\"
%s
\"
scopeSpec=%s "
"memberSpec=%s inLine=%d
\n
"
,
root
,
funcDecl
.
data
(),
related
.
data
(),
overloaded
,
isFunc
,
root
->
mGrpId
,
root
,
funcDecl
.
data
(),
related
.
data
(),
overloaded
,
isFunc
,
root
->
mGrpId
,
root
->
tArgList
,
tempArgListToString
(
root
->
tArgList
).
data
(),
root
->
tArgList
,
tempArgListToString
(
root
->
tArgList
).
data
(),
root
->
scopeSpec
.
data
(),
root
->
memberSpec
.
data
()
root
->
scopeSpec
.
data
(),
root
->
memberSpec
.
data
()
,
root
->
inLine
);
);
if
(
Config
::
includeSourceFlag
&&
!
root
->
body
.
isEmpty
())
if
(
Config
::
includeSourceFlag
&&
!
root
->
body
.
isEmpty
())
{
{
...
@@ -1851,6 +1911,11 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
...
@@ -1851,6 +1911,11 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
funcDecl
=
funcDecl
.
right
(
funcDecl
.
length
()
-
7
);
funcDecl
=
funcDecl
.
right
(
funcDecl
.
length
()
-
7
);
isFriend
=
TRUE
;
isFriend
=
TRUE
;
}
}
if
(
funcDecl
.
left
(
7
)
==
"inline "
)
{
funcDecl
=
funcDecl
.
right
(
funcDecl
.
length
()
-
7
);
root
->
inLine
=
TRUE
;
}
// delete any ; from the function declaration
// delete any ; from the function declaration
int
sep
;
int
sep
;
...
@@ -2229,6 +2294,8 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
...
@@ -2229,6 +2294,8 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
}
}
if
(
matching
)
if
(
matching
)
{
{
//printf("addMemberDocs root->inLine=%d md->isInline()=%d\n",
// root->inLine,md->isInline());
addMemberDocs
(
root
,
md
,
funcDecl
,
overloaded
);
addMemberDocs
(
root
,
md
,
funcDecl
,
overloaded
);
count
++
;
count
++
;
}
}
...
@@ -2309,6 +2376,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
...
@@ -2309,6 +2376,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
md
->
setPrototype
(
root
->
proto
);
md
->
setPrototype
(
root
->
proto
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
setBody
(
root
->
body
);
md
->
setBody
(
root
->
body
);
md
->
setInline
(
root
->
inLine
);
mn
->
inSort
(
md
);
mn
->
inSort
(
md
);
cd
->
insertMember
(
md
);
cd
->
insertMember
(
md
);
cd
->
insertUsedFile
(
root
->
fileName
);
cd
->
insertUsedFile
(
root
->
fileName
);
...
@@ -2374,6 +2442,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
...
@@ -2374,6 +2442,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
md
->
setDefLine
(
root
->
startLine
);
md
->
setDefLine
(
root
->
startLine
);
md
->
setPrototype
(
root
->
proto
);
md
->
setPrototype
(
root
->
proto
);
md
->
setBody
(
root
->
body
);
md
->
setBody
(
root
->
body
);
md
->
setInline
(
root
->
inLine
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
mn
->
inSort
(
md
);
mn
->
inSort
(
md
);
cd
->
insertMember
(
md
);
cd
->
insertMember
(
md
);
...
@@ -2421,8 +2490,8 @@ void findMemberDocumentation(Entry *root)
...
@@ -2421,8 +2490,8 @@ void findMemberDocumentation(Entry *root)
int
i
,
l
;
int
i
,
l
;
QRegExp
re
(
"([a-zA-Z0-9: ]*
\\
*+[
\\
*]*"
);
QRegExp
re
(
"([a-zA-Z0-9: ]*
\\
*+[
\\
*]*"
);
Debug
::
print
(
Debug
::
FindMembers
,
0
,
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"root->type=`%s' root->name=`%s' root->args=`%s' section=%x
\n
"
,
"root->type=`%s' root->name=`%s' root->args=`%s' section=%x
root->inLine=%d
\n
"
,
root
->
type
.
data
(),
root
->
name
.
data
(),
root
->
args
.
data
(),
root
->
section
root
->
type
.
data
(),
root
->
name
.
data
(),
root
->
args
.
data
(),
root
->
section
,
root
->
inLine
);
);
bool
isFunc
=
TRUE
;
bool
isFunc
=
TRUE
;
if
((
i
=
re
.
match
(
root
->
type
,
0
,
&
l
))
!=-
1
)
// func variable/typedef to func ptr
if
((
i
=
re
.
match
(
root
->
type
,
0
,
&
l
))
!=-
1
)
// func variable/typedef to func ptr
...
@@ -2458,6 +2527,7 @@ void findMemberDocumentation(Entry *root)
...
@@ -2458,6 +2527,7 @@ void findMemberDocumentation(Entry *root)
(
root
->
section
==
Entry
::
FUNCTION_SEC
&&
(
root
->
section
==
Entry
::
FUNCTION_SEC
&&
(
!
root
->
doc
.
isEmpty
()
||
!
root
->
brief
.
isEmpty
()
||
(
!
root
->
doc
.
isEmpty
()
||
!
root
->
brief
.
isEmpty
()
||
!
root
->
body
.
isEmpty
()
||
root
->
mGrpId
!=-
1
/*|| Config::extractAllFlag*/
!
root
->
body
.
isEmpty
()
||
root
->
mGrpId
!=-
1
/*|| Config::extractAllFlag*/
||
root
->
inLine
)
)
)
)
{
{
...
@@ -3149,6 +3219,39 @@ void generateClassDocs()
...
@@ -3149,6 +3219,39 @@ void generateClassDocs()
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
void
inheritDocumentation
()
{
MemberNameListIterator
mnli
(
memberNameList
);
MemberName
*
mn
;
//int count=0;
for
(;(
mn
=
mnli
.
current
());
++
mnli
)
{
MemberNameIterator
mni
(
*
mn
);
MemberDef
*
md
;
for
(;(
md
=
mni
.
current
());
++
mni
)
{
//printf("%04d Member `%s'\n",count++,md->name().data());
if
(
md
->
documentation
().
isEmpty
()
&&
md
->
briefDescription
().
isEmpty
())
{
// no documentation yet
MemberDef
*
bmd
=
md
->
reimplements
();
while
(
bmd
&&
bmd
->
documentation
().
isEmpty
()
&&
bmd
->
briefDescription
().
isEmpty
()
)
{
// search up the inheritance tree for a documentation member
bmd
=
bmd
->
reimplements
();
}
if
(
bmd
)
// copy the documentation from the reimplemented member
{
md
->
setDocumentation
(
bmd
->
documentation
());
md
->
setBriefDescription
(
bmd
->
briefDescription
());
}
}
}
}
}
//----------------------------------------------------------------------------
void
findDefineDocumentation
(
Entry
*
root
)
void
findDefineDocumentation
(
Entry
*
root
)
{
{
if
((
root
->
section
==
Entry
::
DEFINEDOC_SEC
||
if
((
root
->
section
==
Entry
::
DEFINEDOC_SEC
||
...
@@ -3286,6 +3389,30 @@ void buildPageList(Entry *root)
...
@@ -3286,6 +3389,30 @@ void buildPageList(Entry *root)
}
}
}
}
void
findMainPage
(
Entry
*
root
)
{
if
(
root
->
section
==
Entry
::
MAINPAGEDOC_SEC
)
{
if
(
mainPage
==
0
)
{
//printf("Found main page! \n======\n%s\n=======\n",root->doc.data());
mainPage
=
new
PageInfo
(
"index"
,
root
->
doc
,
root
->
args
.
stripWhiteSpace
());
}
else
{
warn
(
"Warning: found more than one
\\
mainpage comment block!
\n
Skipping the "
"block at line %d of %s
\n
"
,
root
->
startLine
,
root
->
fileName
.
data
());
}
}
EntryListIterator
eli
(
*
root
->
sublist
);
Entry
*
e
;
for
(;(
e
=
eli
.
current
());
++
eli
)
{
findMainPage
(
e
);
}
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
void
resolveUserReferences
()
void
resolveUserReferences
()
...
@@ -3309,6 +3436,25 @@ void resolveUserReferences()
...
@@ -3309,6 +3436,25 @@ void resolveUserReferences()
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
// generate all separate documentation pages
// generate all separate documentation pages
//void generateMainPageDocs()
//{
// if (mainPage)
// {
// msg("Generating docs for the main page\n",mainPage->name.data());
// outputList->disable(OutputGenerator::Man);
// startFile(*outputList,mainPage->name,mainPage->title);
// SectionInfo *si=0;
// if (mainPage->title.length()>0 && mainPage->name.length()>0 &&
// (si=sectionDict[mainPage->name])!=0)
// {
// outputList->writeSection(si->label,si->title,FALSE);
// }
// parseDoc(*outputList,0,0,mainPage->doc);
// endFile(*outputList);
// outputList->enable(OutputGenerator::Man);
// }
//}
void
generatePageDocs
()
void
generatePageDocs
()
{
{
PageInfo
*
pi
=
pageList
.
first
();
PageInfo
*
pi
=
pageList
.
first
();
...
@@ -3661,7 +3807,7 @@ bool patternMatch(QFileInfo *fi,QStrList *patList)
...
@@ -3661,7 +3807,7 @@ bool patternMatch(QFileInfo *fi,QStrList *patList)
#else // unix
#else // unix
QRegExp
re
(
pattern
,
TRUE
,
TRUE
);
// case sensitive match
QRegExp
re
(
pattern
,
TRUE
,
TRUE
);
// case sensitive match
#endif
#endif
found
=
found
||
re
.
match
(
fi
->
fileName
())
!=-
1
;
found
=
found
||
re
.
match
(
fi
->
fileName
())
!=-
1
||
re
.
match
(
fi
->
filePath
())
!=-
1
;
pattern
=
patList
->
next
();
pattern
=
patList
->
next
();
}
}
}
}
...
@@ -3766,9 +3912,10 @@ void readFiles(BufStr &output)
...
@@ -3766,9 +3912,10 @@ void readFiles(BufStr &output)
copyAndFilterFile
(
fileName
,
output
);
copyAndFilterFile
(
fileName
,
output
);
}
}
output
.
addChar
(
'\n'
);
/* to prevent problems under Windows ? */
s
=
inputFiles
.
next
();
s
=
inputFiles
.
next
();
//printf("-------> adding new line\n");
//printf("-------> adding new line\n");
output
.
addChar
(
'\n'
);
/* to prevent problems under Windows ? */
}
}
// *p++='\0';
// *p++='\0';
output
.
addChar
(
0
);
output
.
addChar
(
0
);
...
@@ -4233,6 +4380,9 @@ int main(int argc,char **argv)
...
@@ -4233,6 +4380,9 @@ int main(int argc,char **argv)
msg
(
"Building page list...
\n
"
);
msg
(
"Building page list...
\n
"
);
buildPageList
(
root
);
buildPageList
(
root
);
msg
(
"Search for main page...
\n
"
);
findMainPage
(
root
);
// msg("Adding compounds to file pages...\n");
// msg("Adding compounds to file pages...\n");
// findClassDefsInFiles(root);
// findClassDefsInFiles(root);
...
@@ -4284,6 +4434,12 @@ int main(int argc,char **argv)
...
@@ -4284,6 +4434,12 @@ int main(int argc,char **argv)
//unrelatedFunctionsUsed=hasUnrelatedFunctions();
//unrelatedFunctionsUsed=hasUnrelatedFunctions();
if
(
Config
::
inheritDocsFlag
)
{
msg
(
"Inheriting documentation...
\n
"
);
inheritDocumentation
();
}
/**************************************************************************
/**************************************************************************
* Generate documentation *
* Generate documentation *
**************************************************************************/
**************************************************************************/
...
...
src/doxygen.h
View file @
d4bdeb54
...
@@ -113,6 +113,7 @@ extern NamespaceDict namespaceDict;
...
@@ -113,6 +113,7 @@ extern NamespaceDict namespaceDict;
extern
FormulaList
formulaList
;
extern
FormulaList
formulaList
;
extern
FormulaDict
formulaDict
;
extern
FormulaDict
formulaDict
;
extern
FormulaDict
formulaNameDict
;
extern
FormulaDict
formulaNameDict
;
extern
PageInfo
*
mainPage
;
extern
int
annotatedClasses
;
extern
int
annotatedClasses
;
extern
int
hierarchyClasses
;
extern
int
hierarchyClasses
;
...
...
src/entry.cpp
View file @
d4bdeb54
...
@@ -65,6 +65,7 @@ Entry::Entry(const Entry &e)
...
@@ -65,6 +65,7 @@ Entry::Entry(const Entry &e)
fileName
=
e
.
fileName
.
copy
();
fileName
=
e
.
fileName
.
copy
();
startLine
=
e
.
startLine
;
startLine
=
e
.
startLine
;
mGrpId
=
e
.
mGrpId
;
mGrpId
=
e
.
mGrpId
;
inLine
=
e
.
inLine
;
sublist
=
new
QList
<
Entry
>
;
sublist
=
new
QList
<
Entry
>
;
sublist
->
setAutoDelete
(
TRUE
);
sublist
->
setAutoDelete
(
TRUE
);
extends
=
new
QList
<
BaseInfo
>
;
extends
=
new
QList
<
BaseInfo
>
;
...
@@ -207,6 +208,7 @@ void Entry::reset()
...
@@ -207,6 +208,7 @@ void Entry::reset()
slot
=
FALSE
;
slot
=
FALSE
;
stat
=
FALSE
;
stat
=
FALSE
;
proto
=
FALSE
;
proto
=
FALSE
;
inLine
=
FALSE
;
protection
=
Public
;
protection
=
Public
;
sublist
->
clear
();
sublist
->
clear
();
extends
->
clear
();
extends
->
clear
();
...
...
src/entry.h
View file @
d4bdeb54
...
@@ -62,6 +62,7 @@ struct Argument
...
@@ -62,6 +62,7 @@ struct Argument
class
ArgumentList
:
public
QList
<
Argument
>
class
ArgumentList
:
public
QList
<
Argument
>
{
{
public
:
public
:
~
ArgumentList
()
{}
ArgumentList
()
:
QList
<
Argument
>
(),
ArgumentList
()
:
QList
<
Argument
>
(),
constSpecifier
(
FALSE
),
constSpecifier
(
FALSE
),
volatileSpecifier
(
FALSE
),
volatileSpecifier
(
FALSE
),
...
@@ -106,6 +107,7 @@ class Entry
...
@@ -106,6 +107,7 @@ class Entry
NAMESPACEDOC_SEC
=
0x02000000
,
NAMESPACEDOC_SEC
=
0x02000000
,
INTERFACE_SEC
=
0x04000000
,
INTERFACE_SEC
=
0x04000000
,
INTERFACEDOC_SEC
=
0x08000000
,
INTERFACEDOC_SEC
=
0x08000000
,
MAINPAGEDOC_SEC
=
0x10000000
,
COMPOUND_MASK
=
CLASS_SEC
|
STRUCT_SEC
|
UNION_SEC
|
INTERFACE_SEC
,
COMPOUND_MASK
=
CLASS_SEC
|
STRUCT_SEC
|
UNION_SEC
|
INTERFACE_SEC
,
COMPOUNDDOC_MASK
=
CLASSDOC_SEC
|
STRUCTDOC_SEC
|
UNIONDOC_SEC
|
INTERFACEDOC_SEC
,
COMPOUNDDOC_MASK
=
CLASSDOC_SEC
|
STRUCTDOC_SEC
|
UNIONDOC_SEC
|
INTERFACEDOC_SEC
,
SCOPE_MASK
=
COMPOUND_MASK
|
NAMESPACE_SEC
,
SCOPE_MASK
=
COMPOUND_MASK
|
NAMESPACE_SEC
,
...
@@ -126,6 +128,7 @@ class Entry
...
@@ -126,6 +128,7 @@ class Entry
bool
slot
;
// a Qt slot ?
bool
slot
;
// a Qt slot ?
bool
stat
;
// static ?
bool
stat
;
// static ?
bool
proto
;
// prototype ?
bool
proto
;
// prototype ?
bool
inLine
;
// inline ?
Specifier
virt
;
// virtualness of the entry
Specifier
virt
;
// virtualness of the entry
Entry
*
parent
;
// parent node in the tree
Entry
*
parent
;
// parent node in the tree
QCString
type
;
// member type
QCString
type
;
// member type
...
...
src/filedef.cpp
View file @
d4bdeb54
...
@@ -37,6 +37,7 @@ FileDef::FileDef(const char *p,const char *nm,const char *ref)
...
@@ -37,6 +37,7 @@ FileDef::FileDef(const char *p,const char *nm,const char *ref)
path
=
p
;
path
=
p
;
filepath
=
path
+
nm
;
filepath
=
path
+
nm
;
filename
=
nameToFile
(
nm
);
filename
=
nameToFile
(
nm
);
diskname
=
filename
.
copy
();
setReference
(
ref
);
setReference
(
ref
);
memList
=
new
MemberList
;
memList
=
new
MemberList
;
classList
=
new
ClassList
;
classList
=
new
ClassList
;
...
@@ -72,9 +73,9 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -72,9 +73,9 @@ void FileDef::writeDocumentation(OutputList &ol)
QCString
pageTitle
=
name
()
+
" File Reference"
;
QCString
pageTitle
=
name
()
+
" File Reference"
;
startFile
(
ol
,
diskname
,
pageTitle
);
startFile
(
ol
,
diskname
,
pageTitle
);
startTitle
(
ol
);
startTitle
(
ol
,
getOutputFileBase
()
);
parseText
(
ol
,
theTranslator
->
trFileReference
(
name
()));
parseText
(
ol
,
theTranslator
->
trFileReference
(
name
()));
endTitle
(
ol
,
name
());
endTitle
(
ol
,
getOutputFileBase
(),
name
());
//ol.newParagraph();
//ol.newParagraph();
if
(
Config
::
genTagFile
.
length
()
>
0
)
tagFile
<<
"&"
<<
name
()
<<
":
\n
"
;
if
(
Config
::
genTagFile
.
length
()
>
0
)
tagFile
<<
"&"
<<
name
()
<<
":
\n
"
;
...
@@ -184,8 +185,8 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -184,8 +185,8 @@ void FileDef::writeDocumentation(OutputList &ol)
ol
.
endMemberItem
(
FALSE
,
0
,
0
,
FALSE
);
ol
.
endMemberItem
(
FALSE
,
0
,
0
,
FALSE
);
}
}
cd
=
classList
->
next
();
cd
=
classList
->
next
();
if
(
found
)
ol
.
endMemberList
();
}
}
if
(
found
)
ol
.
endMemberList
();
}
}
memList
->
writeDeclarations
(
ol
,
0
,
0
,
this
,
0
,
0
);
memList
->
writeDeclarations
(
ol
,
0
,
0
,
this
,
0
,
0
);
...
@@ -265,14 +266,11 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -265,14 +266,11 @@ void FileDef::writeDocumentation(OutputList &ol)
memList
->
writeDocumentation
(
ol
,
name
(),
MemberDef
::
EnumValue
);
memList
->
writeDocumentation
(
ol
,
name
(),
MemberDef
::
EnumValue
);
}
}
int
cnt
;
if
(
memList
->
funcCount
()
>
0
)
if
(
(
cnt
=
memList
->
funcCount
()
>
0
)
)
{
{
ol
.
writeRuler
();
ol
.
writeRuler
();
ol
.
startGroupHeader
();
ol
.
startGroupHeader
();
QCString
cntString
;
parseText
(
ol
,
theTranslator
->
trFunctionDocumentation
());
cntString
.
sprintf
(
" (%d)"
,
cnt
);
parseText
(
ol
,
theTranslator
->
trFunctionDocumentation
()
+
cntString
);
ol
.
endGroupHeader
();
ol
.
endGroupHeader
();
memList
->
writeDocumentation
(
ol
,
name
(),
MemberDef
::
Function
);
memList
->
writeDocumentation
(
ol
,
name
(),
MemberDef
::
Function
);
}
}
...
...
src/filename.h
View file @
d4bdeb54
...
@@ -59,6 +59,7 @@ class FileNameDict : public QDict<FileName>
...
@@ -59,6 +59,7 @@ class FileNameDict : public QDict<FileName>
{
{
public
:
public
:
FileNameDict
(
uint
size
)
:
QDict
<
FileName
>
(
size
)
{}
FileNameDict
(
uint
size
)
:
QDict
<
FileName
>
(
size
)
{}
~
FileNameDict
()
{}
};
};
#endif
#endif
src/formula.h
View file @
d4bdeb54
...
@@ -52,6 +52,7 @@ class FormulaDict : public QDict<Formula>
...
@@ -52,6 +52,7 @@ class FormulaDict : public QDict<Formula>
public
:
public
:
FormulaDict
(
uint
size
)
:
FormulaDict
(
uint
size
)
:
QDict
<
Formula
>
(
size
)
{}
QDict
<
Formula
>
(
size
)
{}
~
FormulaDict
()
{}
};
};
#endif
#endif
src/groupdef.cpp
View file @
d4bdeb54
...
@@ -78,9 +78,9 @@ void GroupDef::writeDocumentation(OutputList &ol)
...
@@ -78,9 +78,9 @@ void GroupDef::writeDocumentation(OutputList &ol)
{
{
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
fileName
,
title
);
startFile
(
ol
,
fileName
,
title
);
startTitle
(
ol
);
startTitle
(
ol
,
getOutputFileBase
()
);
ol
.
docify
(
title
);
ol
.
docify
(
title
);
endTitle
(
ol
,
name
());
endTitle
(
ol
,
getOutputFileBase
(),
name
());
//brief=brief.stripWhiteSpace();
//brief=brief.stripWhiteSpace();
//int bl=brief.length();
//int bl=brief.length();
...
@@ -111,14 +111,19 @@ void GroupDef::writeDocumentation(OutputList &ol)
...
@@ -111,14 +111,19 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol
.
endIndexList
();
ol
.
endIndexList
();
}
}
if
(
classList
->
count
()
>
0
)
if
(
classList
->
count
()
>
0
)
{
ClassDef
*
cd
=
classList
->
first
();
bool
found
=
FALSE
;
while
(
cd
)
{
if
(
!
found
)
{
{
ol
.
startMemberHeader
();
ol
.
startMemberHeader
();
parseText
(
ol
,
theTranslator
->
trCompounds
());
parseText
(
ol
,
theTranslator
->
trCompounds
());
ol
.
endMemberHeader
();
ol
.
endMemberHeader
();
ol
.
startIndexList
();
ol
.
startIndexList
();
ClassDef
*
cd
=
classList
->
first
();
found
=
TRUE
;
while
(
cd
)
}
{
QCString
type
;
QCString
type
;
switch
(
cd
->
compoundType
())
switch
(
cd
->
compoundType
())
{
{
...
...
src/htmlgen.cpp
View file @
d4bdeb54
...
@@ -170,17 +170,25 @@ void HtmlGenerator::writeStyleInfo(int part)
...
@@ -170,17 +170,25 @@ void HtmlGenerator::writeStyleInfo(int part)
t
<<
"DL.el { margin-left: -1cm }"
<<
endl
;
t
<<
"DL.el { margin-left: -1cm }"
<<
endl
;
t
<<
"DIV.fragment { width: 100%; border: none; background-color: #eeeeee }"
<<
endl
;
t
<<
"DIV.fragment { width: 100%; border: none; background-color: #eeeeee }"
<<
endl
;
t
<<
"DIV.in { margin-left: 16 }"
<<
endl
;
t
<<
"DIV.in { margin-left: 16 }"
<<
endl
;
t
<<
"DIV.ah { background-color: black; margin-bottom: 3; margin-top: 3 }"
<<
endl
;
t
<<
"A.gl:link { color: #ffffff }"
<<
endl
;
t
<<
"A.gl:link { color: #ffffff }"
<<
endl
;
t
<<
"A.gl:visited { color: #ffffff }"
<<
endl
;
t
<<
"A.gl:visited { color: #ffffff }"
<<
endl
;
t
<<
"A.gl { text-decoration: none; font-weight: bold; background-color: "
<<
GROUP_COLOR
<<
" }"
<<
endl
;
t
<<
"A.gl { text-decoration: none; font-weight: bold; background-color: "
<<
GROUP_COLOR
<<
" }"
<<
endl
;
t
<<
"TD.md { background-color: #f2f2ff }"
<<
endl
;
t
<<
endl
;
t
<<
endl
;
endPlainFile
();
endPlainFile
();
}
}
}
}
void
HtmlGenerator
::
writeDoxyAnchor
(
const
char
*
,
const
char
*
anchor
,
const
char
*
name
)
void
HtmlGenerator
::
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
anchor
,
const
char
*
name
)
{
{
t
<<
"<a name=
\"
"
<<
anchor
<<
"
\"
doxytag=
\"
"
<<
name
<<
"
\"
></a>"
;
t
<<
"<a name=
\"
"
<<
anchor
<<
"
\"
doxytag=
\"
"
<<
name
<<
"
\"
>"
;
}
void
HtmlGenerator
::
endDoxyAnchor
()
{
t
<<
"</a>"
<<
endl
;
}
}
void
HtmlGenerator
::
newParagraph
()
void
HtmlGenerator
::
newParagraph
()
...
@@ -601,17 +609,40 @@ void HtmlGenerator::endIndexList()
...
@@ -601,17 +609,40 @@ void HtmlGenerator::endIndexList()
//}
//}
}
}
void
HtmlGenerator
::
startAl
f
abeticalIndexList
()
void
HtmlGenerator
::
startAl
ph
abeticalIndexList
()
{
{
t
<<
"<
multicol cols=5><dl compact
>"
<<
endl
;
t
<<
"<
table width=95% border=0 cellspacing=0 cellpadding=0
>"
<<
endl
;
}
}
void
HtmlGenerator
::
endAl
f
abeticalIndexList
()
void
HtmlGenerator
::
endAl
ph
abeticalIndexList
()
{
{
t
<<
"</
dl></multicol
>"
<<
endl
;
t
<<
"</
table
>"
<<
endl
;
}
}
void
HtmlGenerator
::
writeIndexHeading
(
const
char
*
s
)
void
HtmlGenerator
::
writeIndexHeading
(
const
char
*
s
)
{
{
t
<<
"<dt><b><big>"
<<
s
<<
"</big></b><dd>"
<<
endl
;
//t << "<dt><b><big>" << s << "</big></b><dd>" << endl;
t
<<
"<div class=
\"
ah
\"
><font color=
\"
white
\"
><b> "
<<
s
<<
" </b></font></div>"
;
}
void
HtmlGenerator
::
writeImage
(
const
char
*
name
,
const
char
*
,
const
char
*
)
{
QCString
baseName
=
name
;
int
i
;
if
((
i
=
baseName
.
findRev
(
'/'
))
!=-
1
||
(
i
=
baseName
.
findRev
(
'\\'
))
!=-
1
)
{
baseName
=
baseName
.
right
(
baseName
.
length
()
-
i
);
}
t
<<
"<img src="
<<
name
<<
" alt=
\"
"
<<
baseName
<<
"
\"
>"
<<
endl
;
}
void
HtmlGenerator
::
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
{
t
<<
endl
<<
"<p><table width=100%% cellpadding=2 cellspacing=0 border=0><tr><td class=
\"
md
\"
><b>"
<<
endl
;
}
void
HtmlGenerator
::
endMemberDoc
()
{
t
<<
endl
<<
"</b></td></tr></table>"
<<
endl
;
}
}
src/htmlgen.h
View file @
d4bdeb54
...
@@ -54,8 +54,8 @@ class HtmlGenerator : public OutputGenerator
...
@@ -54,8 +54,8 @@ class HtmlGenerator : public OutputGenerator
void
startProjectNumber
();
void
startProjectNumber
();
void
endProjectNumber
();
void
endProjectNumber
();
void
writeStyleInfo
(
int
part
);
void
writeStyleInfo
(
int
part
);
void
startTitleHead
()
{
startTitle
();
}
void
startTitleHead
(
const
char
*
)
{
startTitle
();
}
void
endTitleHead
(
const
char
*
)
{
endTitle
();
}
void
endTitleHead
(
const
char
*
,
const
char
*
)
{
endTitle
();
}
void
startTitle
()
{
t
<<
"<h1>"
;
}
void
startTitle
()
{
t
<<
"<h1>"
;
}
void
endTitle
()
{
t
<<
"</h1>"
;
}
void
endTitle
()
{
t
<<
"</h1>"
;
}
...
@@ -67,8 +67,8 @@ class HtmlGenerator : public OutputGenerator
...
@@ -67,8 +67,8 @@ class HtmlGenerator : public OutputGenerator
void
endItemList
()
{
t
<<
"</ul>"
<<
endl
;
}
void
endItemList
()
{
t
<<
"</ul>"
<<
endl
;
}
void
startEnumList
()
{
t
<<
"<ol>"
<<
endl
;
}
void
startEnumList
()
{
t
<<
"<ol>"
<<
endl
;
}
void
endEnumList
()
{
t
<<
"</ol>"
<<
endl
;
}
void
endEnumList
()
{
t
<<
"</ol>"
<<
endl
;
}
void
startAl
f
abeticalIndexList
();
void
startAl
ph
abeticalIndexList
();
void
endAl
f
abeticalIndexList
();
void
endAl
ph
abeticalIndexList
();
void
writeIndexHeading
(
const
char
*
s
);
void
writeIndexHeading
(
const
char
*
s
);
void
writeIndexItem
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
name
);
void
writeIndexItem
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
name
);
void
docify
(
const
char
*
text
);
void
docify
(
const
char
*
text
);
...
@@ -120,13 +120,15 @@ class HtmlGenerator : public OutputGenerator
...
@@ -120,13 +120,15 @@ class HtmlGenerator : public OutputGenerator
void
endDescItem
()
{
t
<<
"<dd>"
;
}
void
endDescItem
()
{
t
<<
"<dd>"
;
}
void
lineBreak
()
{
t
<<
"<br>"
<<
endl
;
}
void
lineBreak
()
{
t
<<
"<br>"
<<
endl
;
}
void
writeChar
(
char
c
);
void
writeChar
(
char
c
);
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
)
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
{
t
<<
endl
<<
"<h3>"
;
}
void
endMemberDoc
();
void
endMemberDoc
()
{
t
<<
"</h3>"
<<
endl
;
}
//void writeDoxyAnchor(const char *fName,const char *clName,
void
writeDoxyAnchor
(
const
char
*
clName
,
const
char
*
anchor
,
// const char *anchor,const char *name);
const
char
*
name
);
void
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
clName
,
const
char
*
anchor
,
const
char
*
name
);
void
endDoxyAnchor
();
void
writeLatexSpacing
()
{}
void
writeLatexSpacing
()
{}
void
writeLatexLabel
(
const
char
*
,
const
char
*
)
{}
//
void writeLatexLabel(const char *,const char *) {}
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
const
char
*
path
,
const
char
*
name
);
const
char
*
path
,
const
char
*
name
);
void
writeEndAnnoItem
(
const
char
*
)
{
t
<<
endl
;
}
void
writeEndAnnoItem
(
const
char
*
)
{
t
<<
endl
;
}
...
@@ -144,7 +146,7 @@ class HtmlGenerator : public OutputGenerator
...
@@ -144,7 +146,7 @@ class HtmlGenerator : public OutputGenerator
void
endSuperscript
()
{
t
<<
"</sup>"
;
}
void
endSuperscript
()
{
t
<<
"</sup>"
;
}
void
startTable
(
int
)
{
t
<<
"<table border=1 cellspacing=3 cellpadding=3>"
;
}
void
startTable
(
int
)
{
t
<<
"<table border=1 cellspacing=3 cellpadding=3>"
;
}
void
endTable
()
{
t
<<
"</table>"
<<
endl
;
}
void
endTable
()
{
t
<<
"</table>"
<<
endl
;
}
void
nextTableRow
()
{
t
<<
endl
<<
"<tr><td>"
;
}
void
nextTableRow
()
{
t
<<
"<tr><td>"
;
}
void
endTableRow
()
{
t
<<
"</tr>"
<<
endl
;
}
void
endTableRow
()
{
t
<<
"</tr>"
<<
endl
;
}
void
nextTableColumn
()
{
t
<<
"<td>"
;
}
void
nextTableColumn
()
{
t
<<
"<td>"
;
}
void
endTableColumn
()
{
t
<<
"</td>"
;
}
void
endTableColumn
()
{
t
<<
"</td>"
;
}
...
@@ -171,11 +173,13 @@ class HtmlGenerator : public OutputGenerator
...
@@ -171,11 +173,13 @@ class HtmlGenerator : public OutputGenerator
void
endClassDiagram
(
ClassDiagram
&
,
const
char
*
,
const
char
*
);
void
endClassDiagram
(
ClassDiagram
&
,
const
char
*
,
const
char
*
);
void
startColorFont
(
uchar
r
,
uchar
g
,
uchar
b
);
void
startColorFont
(
uchar
r
,
uchar
g
,
uchar
b
);
void
endColorFont
();
void
endColorFont
();
void
writePageRef
(
const
char
*
,
const
char
*
)
{}
void
startPageRef
()
{}
void
endPageRef
(
const
char
*
,
const
char
*
)
{}
void
startQuickIndexItem
(
const
char
*
,
const
char
*
);
void
startQuickIndexItem
(
const
char
*
,
const
char
*
);
void
endQuickIndexItem
();
void
endQuickIndexItem
();
void
writeFormula
(
const
char
*
,
const
char
*
);
void
writeFormula
(
const
char
*
,
const
char
*
);
void
writeNonBreakableSpace
()
{
t
<<
" "
;
}
void
writeNonBreakableSpace
()
{
t
<<
" "
;
}
void
writeImage
(
const
char
*
,
const
char
*
,
const
char
*
);
//static void docifyStatic(QTextStream &t,const char *str);
//static void docifyStatic(QTextStream &t,const char *str);
...
...
src/index.cpp
View file @
d4bdeb54
...
@@ -275,10 +275,10 @@ void writeHierarchicalIndex(OutputList &ol)
...
@@ -275,10 +275,10 @@ void writeHierarchicalIndex(OutputList &ol)
if
(
hierarchyClasses
==
0
)
return
;
if
(
hierarchyClasses
==
0
)
return
;
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"hierarchy"
,
"Hierarchical Index"
);
startFile
(
ol
,
"hierarchy"
,
"Hierarchical Index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trClassHierarchy
();
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trClassHierarchy
();
parseText
(
ol
,
title
);
parseText
(
ol
,
title
);
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
HtmlHelp
*
htmlHelp
=
0
;
HtmlHelp
*
htmlHelp
=
0
;
if
(
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
)
if
(
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
)
{
{
...
@@ -318,10 +318,10 @@ void writeFileIndex(OutputList &ol)
...
@@ -318,10 +318,10 @@ void writeFileIndex(OutputList &ol)
if
(
documentedFiles
==
0
)
return
;
if
(
documentedFiles
==
0
)
return
;
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"files"
,
"File Index"
);
startFile
(
ol
,
"files"
,
"File Index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trFileList
();
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trFileList
();
parseText
(
ol
,
title
);
parseText
(
ol
,
title
);
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
HtmlHelp
*
htmlHelp
=
0
;
HtmlHelp
*
htmlHelp
=
0
;
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
...
@@ -410,10 +410,10 @@ void writeNamespaceIndex(OutputList &ol)
...
@@ -410,10 +410,10 @@ void writeNamespaceIndex(OutputList &ol)
if
(
documentedNamespaces
==
0
)
return
;
if
(
documentedNamespaces
==
0
)
return
;
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"namespaces"
,
"Namespace Index"
);
startFile
(
ol
,
"namespaces"
,
"Namespace Index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trNamespaceList
();
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trNamespaceList
();
parseText
(
ol
,
title
);
parseText
(
ol
,
title
);
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
HtmlHelp
*
htmlHelp
=
0
;
HtmlHelp
*
htmlHelp
=
0
;
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
...
@@ -536,31 +536,126 @@ void writeAnnotatedClassList(OutputList &ol)
...
@@ -536,31 +536,126 @@ void writeAnnotatedClassList(OutputList &ol)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
void
writeAlfabeticalClassList
(
OutputList
&
ol
)
// write an alphabetical index of all class with a header for each letter
void
writeAlphabeticalClassList
(
OutputList
&
ol
)
{
{
ol
.
startAl
f
abeticalIndexList
();
ol
.
startAl
ph
abeticalIndexList
();
//ClassDef *cd=classList.first();
//
while (cd)
//
first count the number of headers
ClassListIterator
cli
(
classList
);
ClassListIterator
cli
(
classList
);
ClassDef
*
cd
;
ClassDef
*
cd
;
char
startLetter
=
0
;
char
startLetter
=
0
;
int
headerItems
=
0
;
for
(;(
cd
=
cli
.
current
());
++
cli
)
for
(;(
cd
=
cli
.
current
());
++
cli
)
{
if
(
cd
->
isLinkableInProject
())
{
if
(
cd
->
name
().
at
(
0
)
!=
startLetter
)
// new begin letter => new header
{
startLetter
=
cd
->
name
().
at
(
0
);
headerItems
++
;
}
}
}
// the number of columns in the table
const
int
columns
=
5
;
int
i
,
j
;
int
totalItems
=
headerItems
+
annotatedClasses
;
// number of items in the table
int
rows
=
(
totalItems
+
columns
-
1
)
/
columns
;
// number of rows in the table
int
itemsInLastRow
=
(
totalItems
+
columns
-
1
)
%
columns
+
1
;
// number of items in the last row
//printf("headerItems=%d totalItems=%d columns=%d rows=%d itemsInLastRow=%d\n",
// headerItems,totalItems,columns,rows,itemsInLastRow);
// create one class list for each column
ClassList
*
colList
=
new
ClassList
[
columns
];
// fill the columns with the class list (row elements in each column,
// expect for the columns with number >= itemsInLastRow, which get on
// item less.
int
col
=
0
,
row
=
0
;
//int icount=0;
startLetter
=
0
;
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
{
if
(
cd
->
isLinkableInProject
())
if
(
cd
->
isLinkableInProject
())
{
{
if
(
cd
->
name
().
at
(
0
)
!=
startLetter
)
if
(
cd
->
name
().
at
(
0
)
!=
startLetter
)
{
{
// insert a new header using a dummy class pointer.
startLetter
=
cd
->
name
().
at
(
0
);
colList
[
col
].
append
((
ClassDef
*
)
8
);
// insert dummy for the header
row
++
;
if
(
row
>=
rows
+
((
col
<
itemsInLastRow
)
?
0
:
-
1
))
{
// if the header is the last item in the row, we add an extra
// row to make it easier to find the text of the header (this
// is then contained in the next cell)
colList
[
col
].
append
(
cd
);
col
++
;
row
=
0
;
}
}
// add the class definition to the correct column list
colList
[
col
].
append
(
cd
);
row
++
;
if
(
row
>=
rows
+
((
col
<
itemsInLastRow
)
?
0
:
-
1
))
{
col
++
;
row
=
0
;
}
}
}
// create iterators for each column
ClassListIterator
**
colIterators
=
new
ClassListIterator
*
[
columns
];
for
(
i
=
0
;
i
<
columns
;
i
++
)
{
colIterators
[
i
]
=
new
ClassListIterator
(
colList
[
i
]);
}
// generate table
for
(
i
=
0
;
i
<
rows
;
i
++
)
// forarch table row
{
ol
.
nextTableRow
();
// the last column may contain less items then the others
int
colsInRow
=
(
i
<
rows
-
1
)
?
columns
:
itemsInLastRow
;
//printf("row [%d]\n",i);
for
(
j
=
0
;
j
<
colsInRow
;
j
++
)
// foreach table column
{
ClassDef
*
cd
=
colIterators
[
j
]
->
current
();
//printf("columns [%d] cd=%p\n",j,cd);
if
(
cd
==
(
ClassDef
*
)
8
)
// the class pointer is really a header
{
cd
=++
(
*
colIterators
[
j
]);
// get the next item
if
(
cd
)
{
//printf("head ClassDef=%p %s\n",cd,cd ? cd->name().data() : "<none>");
startLetter
=
cd
->
name
().
at
(
0
);
startLetter
=
cd
->
name
().
at
(
0
);
char
s
[
2
];
s
[
0
]
=
startLetter
;
s
[
1
]
=
0
;
char
s
[
2
];
s
[
0
]
=
startLetter
;
s
[
1
]
=
0
;
ol
.
writeIndexHeading
(
s
);
ol
.
writeIndexHeading
(
s
);
}
}
}
else
if
(
cd
)
// a real class, insert a link
{
ol
.
writeObjectLink
(
cd
->
getReference
(),
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
name
());
cd
->
getOutputFileBase
(),
0
,
cd
->
name
());
ol
.
lineBreak
();
ol
.
writeNonBreakableSpace
();
//printf("item ClassDef=%p %s\n",cd,cd ? cd->name().data() : "<none>");
++
(
*
colIterators
[
j
]);
}
}
cd
=
classList
.
next
();
ol
.
endTableColumn
();
if
(
j
<
colsInRow
-
1
)
ol
.
nextTableColumn
();
}
ol
.
endTableRow
();
}
}
ol
.
endAlfabeticalIndexList
();
ol
.
endAlphabeticalIndexList
();
// release the temporary memory
for
(
i
=
0
;
i
<
columns
;
i
++
)
{
delete
colIterators
[
i
];
}
delete
[]
colIterators
;
delete
[]
colList
;
}
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
...
@@ -569,11 +664,11 @@ void writeAlphabeticalIndex(OutputList &ol)
...
@@ -569,11 +664,11 @@ void writeAlphabeticalIndex(OutputList &ol)
{
{
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
if
(
annotatedClasses
==
0
)
return
;
if
(
annotatedClasses
==
0
)
return
;
startFile
(
ol
,
"classes.html"
,
"Al
f
abetical index"
);
startFile
(
ol
,
"classes.html"
,
"Al
ph
abetical index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
parseText
(
ol
,
Config
::
projectName
+
" "
+
theTranslator
->
trCompoundIndex
());
parseText
(
ol
,
Config
::
projectName
+
" "
+
theTranslator
->
trCompoundIndex
());
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
writeAl
f
abeticalClassList
(
ol
);
writeAl
ph
abeticalClassList
(
ol
);
endFile
(
ol
);
endFile
(
ol
);
ol
.
enableAll
();
ol
.
enableAll
();
}
}
...
@@ -587,10 +682,10 @@ void writeAnnotatedIndex(OutputList &ol)
...
@@ -587,10 +682,10 @@ void writeAnnotatedIndex(OutputList &ol)
//if (classList.count()==0) return;
//if (classList.count()==0) return;
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"annotated"
,
"Annotated Index"
);
startFile
(
ol
,
"annotated"
,
"Annotated Index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trCompoundList
();
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trCompoundList
();
parseText
(
ol
,
title
);
parseText
(
ol
,
title
);
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
HtmlHelp
*
htmlHelp
=
0
;
HtmlHelp
*
htmlHelp
=
0
;
if
(
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
)
if
(
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
)
{
{
...
@@ -728,9 +823,9 @@ void writeMemberIndex(OutputList &ol)
...
@@ -728,9 +823,9 @@ void writeMemberIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
Latex
);
startFile
(
ol
,
"functions"
,
"Compound Member Index"
);
startFile
(
ol
,
"functions"
,
"Compound Member Index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
parseText
(
ol
,
Config
::
projectName
+
" "
+
theTranslator
->
trCompoundMembers
());
parseText
(
ol
,
Config
::
projectName
+
" "
+
theTranslator
->
trCompoundMembers
());
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
parseText
(
ol
,
theTranslator
->
trCompoundMembersDescription
(
Config
::
extractAllFlag
));
parseText
(
ol
,
theTranslator
->
trCompoundMembersDescription
(
Config
::
extractAllFlag
));
writeMemberList
(
ol
);
writeMemberList
(
ol
);
endFile
(
ol
);
endFile
(
ol
);
...
@@ -921,9 +1016,9 @@ void writeFileMemberIndex(OutputList &ol)
...
@@ -921,9 +1016,9 @@ void writeFileMemberIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
Latex
);
startFile
(
ol
,
"globals"
,
"File Member Index"
);
startFile
(
ol
,
"globals"
,
"File Member Index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
parseText
(
ol
,
Config
::
projectName
+
" "
+
theTranslator
->
trFileMembers
());
parseText
(
ol
,
Config
::
projectName
+
" "
+
theTranslator
->
trFileMembers
());
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
parseText
(
ol
,
theTranslator
->
trFileMembersDescription
(
Config
::
extractAllFlag
));
parseText
(
ol
,
theTranslator
->
trFileMembersDescription
(
Config
::
extractAllFlag
));
writeFileMemberList
(
ol
);
writeFileMemberList
(
ol
);
endFile
(
ol
);
endFile
(
ol
);
...
@@ -939,9 +1034,9 @@ void writeNamespaceMemberIndex(OutputList &ol)
...
@@ -939,9 +1034,9 @@ void writeNamespaceMemberIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
Latex
);
startFile
(
ol
,
"namespacemembers"
,
"Namespace Member Index"
);
startFile
(
ol
,
"namespacemembers"
,
"Namespace Member Index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
parseText
(
ol
,
Config
::
projectName
+
" "
+
theTranslator
->
trNamespaceMembers
());
parseText
(
ol
,
Config
::
projectName
+
" "
+
theTranslator
->
trNamespaceMembers
());
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
parseText
(
ol
,
theTranslator
->
trNamespaceMemberDescription
(
Config
::
extractAllFlag
));
parseText
(
ol
,
theTranslator
->
trNamespaceMemberDescription
(
Config
::
extractAllFlag
));
writeNamespaceMemberList
(
ol
);
writeNamespaceMemberList
(
ol
);
endFile
(
ol
);
endFile
(
ol
);
...
@@ -1007,10 +1102,10 @@ void writeHeaderIndex(OutputList &ol)
...
@@ -1007,10 +1102,10 @@ void writeHeaderIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
Latex
);
startFile
(
ol
,
"headers"
,
"Header File Index"
);
startFile
(
ol
,
"headers"
,
"Header File Index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trHeaderFiles
();
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trHeaderFiles
();
parseText
(
ol
,
title
);
parseText
(
ol
,
title
);
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
HtmlHelp
*
htmlHelp
=
0
;
HtmlHelp
*
htmlHelp
=
0
;
if
(
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
)
if
(
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
)
{
{
...
@@ -1036,10 +1131,10 @@ void writeExampleIndex(OutputList &ol)
...
@@ -1036,10 +1131,10 @@ void writeExampleIndex(OutputList &ol)
if
(
exampleList
.
count
()
==
0
)
return
;
if
(
exampleList
.
count
()
==
0
)
return
;
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"examples"
,
"Example Index"
);
startFile
(
ol
,
"examples"
,
"Example Index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trExamples
();
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trExamples
();
parseText
(
ol
,
title
);
parseText
(
ol
,
title
);
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
HtmlHelp
*
htmlHelp
=
0
;
HtmlHelp
*
htmlHelp
=
0
;
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
...
@@ -1084,10 +1179,10 @@ void writePageIndex(OutputList &ol)
...
@@ -1084,10 +1179,10 @@ void writePageIndex(OutputList &ol)
if
(
pageList
.
count
()
==
0
)
return
;
if
(
pageList
.
count
()
==
0
)
return
;
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"pages"
,
"Page Index"
);
startFile
(
ol
,
"pages"
,
"Page Index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trRelatedPages
();
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trRelatedPages
();
ol
.
docify
(
title
);
ol
.
docify
(
title
);
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
HtmlHelp
*
htmlHelp
=
0
;
HtmlHelp
*
htmlHelp
=
0
;
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
...
@@ -1173,10 +1268,10 @@ void writeGroupIndex(OutputList &ol)
...
@@ -1173,10 +1268,10 @@ void writeGroupIndex(OutputList &ol)
if
(
documentedGroups
==
0
)
return
;
if
(
documentedGroups
==
0
)
return
;
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"modules"
,
"Module Index"
);
startFile
(
ol
,
"modules"
,
"Module Index"
);
startTitle
(
ol
);
startTitle
(
ol
,
0
);
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trModules
();
QCString
title
=
Config
::
projectName
+
" "
+
theTranslator
->
trModules
();
parseText
(
ol
,
title
);
parseText
(
ol
,
title
);
endTitle
(
ol
,
0
);
endTitle
(
ol
,
0
,
0
);
HtmlHelp
*
htmlHelp
=
0
;
HtmlHelp
*
htmlHelp
=
0
;
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
...
@@ -1212,9 +1307,16 @@ void writeIndex(OutputList &ol)
...
@@ -1212,9 +1307,16 @@ void writeIndex(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
startFile
(
"index"
,
"Main Index"
,
FALSE
);
ol
.
startFile
(
"index"
,
"Main Index"
,
FALSE
);
if
(
!
Config
::
noIndexFlag
)
writeQuickLinks
(
ol
,
TRUE
);
if
(
!
Config
::
noIndexFlag
)
writeQuickLinks
(
ol
,
TRUE
);
ol
.
startTitleHead
();
ol
.
startTitleHead
(
0
);
if
(
mainPage
&&
!
mainPage
->
title
.
isEmpty
())
{
parseDoc
(
ol
,
0
,
0
,
mainPage
->
title
);
}
else
{
parseText
(
ol
,
projPrefix
+
theTranslator
->
trDocumentation
());
parseText
(
ol
,
projPrefix
+
theTranslator
->
trDocumentation
());
ol
.
endTitleHead
(
0
);
}
ol
.
endTitleHead
(
0
,
0
);
ol
.
newParagraph
();
ol
.
newParagraph
();
if
(
!
Config
::
projectNumber
.
isEmpty
())
if
(
!
Config
::
projectNumber
.
isEmpty
())
{
{
...
@@ -1223,6 +1325,12 @@ void writeIndex(OutputList &ol)
...
@@ -1223,6 +1325,12 @@ void writeIndex(OutputList &ol)
ol
.
endProjectNumber
();
ol
.
endProjectNumber
();
}
}
if
(
Config
::
noIndexFlag
)
writeQuickLinks
(
ol
,
FALSE
);
if
(
Config
::
noIndexFlag
)
writeQuickLinks
(
ol
,
FALSE
);
if
(
mainPage
)
{
parseDoc
(
ol
,
0
,
0
,
mainPage
->
doc
);
}
endFile
(
ol
);
endFile
(
ol
);
ol
.
disable
(
OutputGenerator
::
Html
);
ol
.
disable
(
OutputGenerator
::
Html
);
...
@@ -1241,6 +1349,19 @@ void writeIndex(OutputList &ol)
...
@@ -1241,6 +1349,19 @@ void writeIndex(OutputList &ol)
ol
.
startIndexSection
(
isTitlePageAuthor
);
ol
.
startIndexSection
(
isTitlePageAuthor
);
parseText
(
ol
,
theTranslator
->
trGeneratedBy
());
parseText
(
ol
,
theTranslator
->
trGeneratedBy
());
ol
.
endIndexSection
(
isTitlePageAuthor
);
ol
.
endIndexSection
(
isTitlePageAuthor
);
if
(
mainPage
)
{
ol
.
startIndexSection
(
isMainPage
);
if
(
!
mainPage
->
title
.
isEmpty
())
{
parseDoc
(
ol
,
0
,
0
,
mainPage
->
title
);
}
else
{
parseText
(
ol
,
projPrefix
+
theTranslator
->
trMainPage
());
}
ol
.
endIndexSection
(
isMainPage
);
}
if
(
documentedGroups
>
0
)
if
(
documentedGroups
>
0
)
{
{
ol
.
startIndexSection
(
isModuleIndex
);
ol
.
startIndexSection
(
isModuleIndex
);
...
...
src/index.h
View file @
d4bdeb54
...
@@ -25,6 +25,7 @@ enum IndexSections
...
@@ -25,6 +25,7 @@ enum IndexSections
{
{
isTitlePageStart
,
isTitlePageStart
,
isTitlePageAuthor
,
isTitlePageAuthor
,
isMainPage
,
isModuleIndex
,
isModuleIndex
,
isNamespaceIndex
,
isNamespaceIndex
,
isClassHierarchyIndex
,
isClassHierarchyIndex
,
...
...
src/language.cpp
View file @
d4bdeb54
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
*/
*/
#include "language.h"
#include "language.h"
#if !defined(ENGLISH_ONLY)
#include "translator_nl.h"
#include "translator_nl.h"
#include "translator_se.h"
#include "translator_se.h"
#include "translator_cz.h"
#include "translator_cz.h"
...
@@ -23,6 +24,7 @@
...
@@ -23,6 +24,7 @@
#include "translator_de.h"
#include "translator_de.h"
#include "translator_jp.h"
#include "translator_jp.h"
#include "translator_es.h"
#include "translator_es.h"
#endif
#define L_EQUAL(a) !stricmp(langName,a)
#define L_EQUAL(a) !stricmp(langName,a)
...
@@ -34,6 +36,7 @@ bool setTranslator(const char *langName)
...
@@ -34,6 +36,7 @@ bool setTranslator(const char *langName)
{
{
theTranslator
=
new
Translator
;
theTranslator
=
new
Translator
;
}
}
#if !defined(ENGLISH_ONLY)
else
if
(
L_EQUAL
(
"dutch"
))
else
if
(
L_EQUAL
(
"dutch"
))
{
{
theTranslator
=
new
TranslatorDutch
;
theTranslator
=
new
TranslatorDutch
;
...
@@ -66,6 +69,7 @@ bool setTranslator(const char *langName)
...
@@ -66,6 +69,7 @@ bool setTranslator(const char *langName)
{
{
theTranslator
=
new
TranslatorSpanish
;
theTranslator
=
new
TranslatorSpanish
;
}
}
#endif
else
// use the default language (i.e. english)
else
// use the default language (i.e. english)
{
{
theTranslator
=
new
Translator
;
theTranslator
=
new
Translator
;
...
...
src/latexgen.cpp
View file @
d4bdeb54
...
@@ -26,6 +26,25 @@
...
@@ -26,6 +26,25 @@
#include "diagram.h"
#include "diagram.h"
#include "language.h"
#include "language.h"
static
QCString
filterTitle
(
const
char
*
s
)
{
QCString
tmp
=
s
,
result
;
uint
i
;
for
(
i
=
0
;
i
<
tmp
.
length
();
i
++
)
{
char
c
=
tmp
.
at
(
i
);
switch
(
c
)
{
case
'#'
:
result
+=
"
\\
#"
;
break
;
case
'"'
:
result
+=
"
\\\"
"
;
break
;
case
'%'
:
result
+=
"
\\
%"
;
break
;
case
'['
:
result
+=
"{"
;
break
;
case
']'
:
result
+=
"}"
;
break
;
default:
result
+=
c
;
break
;
}
}
return
result
;
}
//static QCString escapeLabelName(const QCString &s)
//static QCString escapeLabelName(const QCString &s)
//{
//{
// QCString result;
// QCString result;
...
@@ -49,6 +68,7 @@ LatexGenerator::LatexGenerator()
...
@@ -49,6 +68,7 @@ LatexGenerator::LatexGenerator()
{
{
dir
=
Config
::
latexOutputDir
;
dir
=
Config
::
latexOutputDir
;
col
=
0
;
col
=
0
;
//printf("LatexGenerator::LatexGenerator() insideTabbing=FALSE\n");
insideTabbing
=
FALSE
;
insideTabbing
=
FALSE
;
}
}
...
@@ -66,8 +86,17 @@ void LatexGenerator::append(const OutputGenerator *g)
...
@@ -66,8 +86,17 @@ void LatexGenerator::append(const OutputGenerator *g)
{
{
t
<<
g
->
getContents
();
t
<<
g
->
getContents
();
col
+=
((
LatexGenerator
*
)
g
)
->
col
;
col
+=
((
LatexGenerator
*
)
g
)
->
col
;
insideTabbing
=
insideTabbing
||
((
LatexGenerator
*
)
g
)
->
insideTabbing
;
//printf("LatexGenerator::append(%s) insideTabbing=%s\n", g->getContents().data(),
// insideTabbing ? "TRUE" : "FALSE" );
}
}
OutputGenerator
*
LatexGenerator
::
copy
()
{
LatexGenerator
*
result
=
new
LatexGenerator
;
result
->
insideTabbing
=
insideTabbing
;
return
result
;
}
void
LatexGenerator
::
init
()
void
LatexGenerator
::
init
()
{
{
...
@@ -91,6 +120,9 @@ void LatexGenerator::init()
...
@@ -91,6 +120,9 @@ void LatexGenerator::init()
<<
endl
<<
endl
<<
"ps: refman.ps"
<<
endl
<<
"ps: refman.ps"
<<
endl
<<
endl
<<
endl
<<
"pdf: ps"
<<
endl
<<
"
\t
ps2pdf refman.ps refman.pdf"
<<
endl
<<
endl
<<
"refman.ps: refman.dvi"
<<
endl
<<
"refman.ps: refman.dvi"
<<
endl
<<
"
\t
dvips -o refman.ps refman.dvi"
<<
endl
<<
"
\t
dvips -o refman.ps refman.dvi"
<<
endl
<<
endl
<<
endl
...
@@ -102,7 +134,7 @@ void LatexGenerator::init()
...
@@ -102,7 +134,7 @@ void LatexGenerator::init()
<<
"
\t
echo
\"
Rerunning latex....
\"
"
<<
endl
<<
"
\t
echo
\"
Rerunning latex....
\"
"
<<
endl
<<
"
\t
latex refman.tex"
<<
endl
<<
"
\t
latex refman.tex"
<<
endl
<<
"clean:"
<<
endl
<<
"clean:"
<<
endl
<<
"
\t
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log"
<<
endl
;
<<
"
\t
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log
*.out
"
<<
endl
;
}
}
void
LatexGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
bool
)
void
LatexGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
bool
)
...
@@ -133,17 +165,30 @@ void LatexGenerator::startIndexSection(IndexSections is)
...
@@ -133,17 +165,30 @@ void LatexGenerator::startIndexSection(IndexSections is)
switch
(
is
)
switch
(
is
)
{
{
case
isTitlePageStart
:
case
isTitlePageStart
:
{
if
(
Config
::
latexHeaderFile
.
isEmpty
())
{
{
if
(
Config
::
paperType
==
"a4wide"
)
paperName
=
"a4"
;
else
paperName
=
Config
::
paperType
;
if
(
Config
::
paperType
==
"a4wide"
)
paperName
=
"a4"
;
else
paperName
=
Config
::
paperType
;
t
<<
"
\\
documentclass["
<<
paperName
<<
"paper]{"
;
t
<<
"
\\
documentclass["
<<
paperName
<<
"paper"
;
if
(
Config
::
pdfHyperFlag
)
t
<<
",ps2pdf"
;
t
<<
"]{"
;
if
(
Config
::
compactLatexFlag
)
t
<<
"article"
;
else
t
<<
"book"
;
if
(
Config
::
compactLatexFlag
)
t
<<
"article"
;
else
t
<<
"book"
;
t
<<
"}
\n
"
;
t
<<
"}
\n
"
;
if
(
Config
::
paperType
==
"a4wide"
)
t
<<
"
\\
usepackage{a4wide}
\n
"
;
if
(
Config
::
paperType
==
"a4wide"
)
t
<<
"
\\
usepackage{a4wide}
\n
"
;
t
<<
"
\\
usepackage{makeidx}
\n
"
t
<<
"
\\
usepackage{makeidx}
\n
"
"
\\
usepackage{fancyheadings}
\n
"
"
\\
usepackage{fancyheadings}
\n
"
"
\\
usepackage{epsf
}
\n
"
"
\\
usepackage{epsfig
}
\n
"
"
\\
usepackage{float}
\n
"
"
\\
usepackage{float}
\n
"
"
\\
usepackage{doxygen}
\n
"
;
"
\\
usepackage{doxygen}
\n
"
;
if
(
Config
::
pdfHyperFlag
)
{
t
<<
"
\\
usepackage{times}"
<<
endl
<<
"
\\
usepackage[backref=true,"
<<
endl
<<
" pagebackref=true,"
<<
endl
<<
" colorlinks=true,"
<<
endl
<<
" linkcolor=blue"
<<
endl
<<
" ]{hyperref}"
<<
endl
;
}
if
(
!
theTranslator
->
latexBabelPackage
().
isEmpty
())
if
(
!
theTranslator
->
latexBabelPackage
().
isEmpty
())
{
{
t
<<
"
\\
usepackage{"
<<
theTranslator
->
latexBabelPackage
()
<<
"}
\n
"
;
t
<<
"
\\
usepackage{"
<<
theTranslator
->
latexBabelPackage
()
<<
"}
\n
"
;
...
@@ -167,9 +212,21 @@ void LatexGenerator::startIndexSection(IndexSections is)
...
@@ -167,9 +212,21 @@ void LatexGenerator::startIndexSection(IndexSections is)
// docify(projectNumber);
// docify(projectNumber);
//}
//}
}
}
else
{
t
<<
fileToString
(
Config
::
latexHeaderFile
);
}
}
break
;
break
;
case
isTitlePageAuthor
:
case
isTitlePageAuthor
:
if
(
Config
::
latexHeaderFile
.
isEmpty
())
{
t
<<
"}
\n\\
author{"
;
t
<<
"}
\n\\
author{"
;
}
break
;
case
isMainPage
:
if
(
Config
::
compactLatexFlag
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
t
<<
"{"
;
//Introduction}\n"
break
;
break
;
case
isModuleIndex
:
case
isModuleIndex
:
if
(
Config
::
compactLatexFlag
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
if
(
Config
::
compactLatexFlag
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
...
@@ -288,6 +345,8 @@ void LatexGenerator::endIndexSection(IndexSections is)
...
@@ -288,6 +345,8 @@ void LatexGenerator::endIndexSection(IndexSections is)
case
isTitlePageStart
:
case
isTitlePageStart
:
break
;
break
;
case
isTitlePageAuthor
:
case
isTitlePageAuthor
:
if
(
Config
::
latexHeaderFile
.
isEmpty
())
{
t
<<
" Doxygen}
\n
"
t
<<
" Doxygen}
\n
"
"
\\
date{"
<<
dateToString
(
TRUE
)
<<
"}
\n
"
"
\\
date{"
<<
dateToString
(
TRUE
)
<<
"}
\n
"
"
\\
maketitle
\n
"
"
\\
maketitle
\n
"
...
@@ -296,6 +355,10 @@ void LatexGenerator::endIndexSection(IndexSections is)
...
@@ -296,6 +355,10 @@ void LatexGenerator::endIndexSection(IndexSections is)
t
<<
"
\\
tableofcontents
\n
"
;
t
<<
"
\\
tableofcontents
\n
"
;
if
(
!
Config
::
compactLatexFlag
)
t
<<
"
\\
clearemptydoublepage
\n
"
;
if
(
!
Config
::
compactLatexFlag
)
t
<<
"
\\
clearemptydoublepage
\n
"
;
t
<<
"
\\
pagenumbering{arabic}
\n
"
;
t
<<
"
\\
pagenumbering{arabic}
\n
"
;
}
break
;
case
isMainPage
:
t
<<
"}
\n\\
input{index}
\n
"
;
break
;
break
;
case
isModuleIndex
:
case
isModuleIndex
:
t
<<
"}
\n\\
input{modules}
\n
"
;
t
<<
"}
\n\\
input{modules}
\n
"
;
...
@@ -495,14 +558,14 @@ void LatexGenerator::writeStyleInfo(int part)
...
@@ -495,14 +558,14 @@ void LatexGenerator::writeStyleInfo(int part)
break
;
break
;
case
2
:
case
2
:
{
{
t
<<
" Dimitri van Heesch
\\
copyright
1997-1999}]{}
\n
"
;
t
<<
" Dimitri van Heesch
(c)
1997-1999}]{}
\n
"
;
//QCString dtString=dateToString(FALSE);
//QCString dtString=dateToString(FALSE);
t
<<
"
\\
lfoot[]{
\\
fancyplain{}{
\\
bfseries
\\
scriptsize "
;
t
<<
"
\\
lfoot[]{
\\
fancyplain{}{
\\
bfseries
\\
scriptsize "
;
}
}
break
;
break
;
case
4
:
case
4
:
{
{
t
<<
" Dimitri van Heesch
\\
copyright
1997-1999}}
\n
"
;
t
<<
" Dimitri van Heesch
(c)
1997-1999}}
\n
"
;
t
<<
"
\\
cfoot{}
\n
"
;
t
<<
"
\\
cfoot{}
\n
"
;
t
<<
"
\\
newenvironment{CompactList}
\n
"
;
t
<<
"
\\
newenvironment{CompactList}
\n
"
;
t
<<
"{
\\
begin{list}{}{
\n
"
;
t
<<
"{
\\
begin{list}{}{
\n
"
;
...
@@ -553,19 +616,6 @@ void LatexGenerator::writeStyleInfo(int part)
...
@@ -553,19 +616,6 @@ void LatexGenerator::writeStyleInfo(int part)
}
}
}
}
void
LatexGenerator
::
endTitleHead
(
const
char
*
name
)
{
t
<<
"}"
<<
endl
;
if
(
name
)
{
t
<<
"
\\
label{"
<<
name
<<
"}
\\
index{"
<<
name
<<
"@{"
;
docify
(
name
);
t
<<
"}}"
;
}
t
<<
endl
;
}
void
LatexGenerator
::
newParagraph
()
void
LatexGenerator
::
newParagraph
()
{
{
t
<<
endl
<<
endl
;
t
<<
endl
<<
endl
;
...
@@ -584,7 +634,7 @@ void LatexGenerator::writeIndexItem(const char *ref,const char *fn,
...
@@ -584,7 +634,7 @@ void LatexGenerator::writeIndexItem(const char *ref,const char *fn,
{
{
t
<<
"
\\
contentsline{section}{"
;
t
<<
"
\\
contentsline{section}{"
;
docify
(
name
);
docify
(
name
);
t
<<
"}{
\\
pageref{"
<<
name
<<
"}}"
<<
endl
;
t
<<
"}{
\\
pageref{"
<<
name
<<
"}}
{}
"
<<
endl
;
}
}
else
else
docify
(
name
);
docify
(
name
);
...
@@ -620,7 +670,7 @@ void LatexGenerator::writeStartAnnoItem(const char *,const char *,
...
@@ -620,7 +670,7 @@ void LatexGenerator::writeStartAnnoItem(const char *,const char *,
void
LatexGenerator
::
writeEndAnnoItem
(
const
char
*
name
)
void
LatexGenerator
::
writeEndAnnoItem
(
const
char
*
name
)
{
{
t
<<
"}{
\\
pageref{"
<<
name
<<
"}}"
<<
endl
;
t
<<
"}{
\\
pageref{"
<<
name
<<
"}}
{}
"
<<
endl
;
}
}
//void LatexGenerator::writeClassLink(const char *,const char *,
//void LatexGenerator::writeClassLink(const char *,const char *,
...
@@ -631,17 +681,34 @@ void LatexGenerator::writeEndAnnoItem(const char *name)
...
@@ -631,17 +681,34 @@ void LatexGenerator::writeEndAnnoItem(const char *name)
// t << "}";
// t << "}";
//}
//}
void
LatexGenerator
::
writeObjectLink
(
const
char
*
,
const
char
*
,
void
LatexGenerator
::
writeObjectLink
(
const
char
*
ref
,
const
char
*
f
,
const
char
*
,
const
char
*
text
)
const
char
*
anchor
,
const
char
*
text
)
{
{
if
(
!
ref
&&
Config
::
pdfHyperFlag
)
{
t
<<
"
\\
hyperlink{"
;
if
(
f
)
t
<<
f
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
t
<<
"}{"
;
docify
(
text
);
t
<<
"}"
;
}
else
{
t
<<
"{
\\
bf "
;
t
<<
"{
\\
bf "
;
docify
(
text
);
docify
(
text
);
t
<<
"}"
;
t
<<
"}"
;
}
}
void
LatexGenerator
::
startPageRef
()
{
t
<<
" {
\\
rm ("
;
}
}
void
LatexGenerator
::
write
PageRef
(
const
char
*
clname
,
const
char
*
anchor
)
void
LatexGenerator
::
end
PageRef
(
const
char
*
clname
,
const
char
*
anchor
)
{
{
t
<<
"
{
\\
rm (p.
~
\\
pageref{"
;
t
<<
"~
\\
pageref{"
;
if
(
clname
)
t
<<
clname
;
if
(
clname
)
t
<<
clname
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
t
<<
"})}"
;
t
<<
"})}"
;
...
@@ -654,6 +721,30 @@ void LatexGenerator::writeCodeLink(const char *,const char *,
...
@@ -654,6 +721,30 @@ void LatexGenerator::writeCodeLink(const char *,const char *,
col
+=
strlen
(
name
);
col
+=
strlen
(
name
);
}
}
void
LatexGenerator
::
startTitleHead
(
const
char
*
fileName
)
{
if
(
Config
::
pdfHyperFlag
&&
fileName
)
{
t
<<
"
\\
hypertarget{"
<<
fileName
<<
"}{"
<<
endl
;
}
if
(
Config
::
compactLatexFlag
)
t
<<
"
\\
subsection{"
;
else
t
<<
"
\\
section{"
;
}
void
LatexGenerator
::
endTitleHead
(
const
char
*
fileName
,
const
char
*
name
)
{
t
<<
"}"
<<
endl
;
if
(
name
)
{
t
<<
"
\\
label{"
<<
name
<<
"}
\\
index{"
<<
name
<<
"@{"
;
docify
(
name
);
t
<<
"}}"
<<
endl
;
if
(
Config
::
pdfHyperFlag
&&
fileName
)
{
t
<<
"}"
<<
endl
;
}
}
}
void
LatexGenerator
::
startTitle
()
void
LatexGenerator
::
startTitle
()
{
{
...
@@ -671,7 +762,9 @@ void LatexGenerator::endGroupHeader()
...
@@ -671,7 +762,9 @@ void LatexGenerator::endGroupHeader()
}
}
void
LatexGenerator
::
startMemberDoc
(
const
char
*
clname
,
void
LatexGenerator
::
startMemberDoc
(
const
char
*
clname
,
const
char
*
memname
,
const
char
*
)
const
char
*
memname
,
const
char
*
,
const
char
*
title
)
{
{
t
<<
"
\\
index{"
;
t
<<
"
\\
index{"
;
if
(
clname
)
if
(
clname
)
...
@@ -695,23 +788,41 @@ void LatexGenerator::startMemberDoc(const char *clname,
...
@@ -695,23 +788,41 @@ void LatexGenerator::startMemberDoc(const char *clname,
}
}
t
<<
"}"
<<
endl
;
t
<<
"}"
<<
endl
;
//
//
if
(
Config
::
compactLatexFlag
)
t
<<
"
\\
subsubsection{"
;
else
t
<<
"
\\
subsection{"
;
if
(
Config
::
compactLatexFlag
)
t
<<
"
\\
subsubsection"
;
else
t
<<
"
\\
subsection"
;
t
<<
"
\\
setlength{
\\
rightskip}{0pt plus 5cm}"
;
if
(
Config
::
pdfHyperFlag
&&
title
)
t
<<
"["
<<
filterTitle
(
title
)
<<
"]"
;
t
<<
"{
\\
setlength{
\\
rightskip}{0pt plus 5cm}"
;
}
}
void
LatexGenerator
::
writeDoxyAnchor
(
const
char
*
clname
,
const
char
*
anchor
,
const
char
*
)
void
LatexGenerator
::
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
clname
,
const
char
*
anchor
,
const
char
*
)
{
{
t
<<
"
\\
label{"
;
t
<<
"
\\
label{"
;
if
(
clname
)
t
<<
clname
;
if
(
clname
)
t
<<
clname
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
t
<<
"}"
<<
endl
;
t
<<
"}"
<<
endl
;
if
(
Config
::
pdfHyperFlag
)
{
t
<<
"
\\
hypertarget{"
;
if
(
fName
)
t
<<
fName
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
t
<<
"}{"
<<
endl
;
}
}
}
void
LatexGenerator
::
writeLatexLabel
(
const
char
*
clName
,
const
char
*
anchor
)
void
LatexGenerator
::
endDoxyAnchor
(
)
{
{
writeDoxyAnchor
(
clName
,
anchor
,
0
);
if
(
Config
::
pdfHyperFlag
)
{
t
<<
"}"
<<
endl
;
}
}
}
//void LatexGenerator::writeLatexLabel(const char *clName,const char *anchor)
//{
// writeDoxyAnchor(0,clName,anchor,0);
//}
void
LatexGenerator
::
addToIndex
(
const
char
*
s1
,
const
char
*
s2
)
void
LatexGenerator
::
addToIndex
(
const
char
*
s1
,
const
char
*
s2
)
{
{
if
(
s1
)
if
(
s1
)
...
@@ -748,7 +859,7 @@ void LatexGenerator::writeSectionRefItem(const char *,const char *lab,
...
@@ -748,7 +859,7 @@ void LatexGenerator::writeSectionRefItem(const char *,const char *lab,
{
{
t
<<
"
\\
contentsline{section}{"
;
t
<<
"
\\
contentsline{section}{"
;
docify
(
title
);
docify
(
title
);
t
<<
"}{
\\
ref{"
<<
lab
<<
"}}"
<<
endl
;
t
<<
"}{
\\
ref{"
<<
lab
<<
"}}
{}
"
<<
endl
;
}
}
void
LatexGenerator
::
writeSectionRefAnchor
(
const
char
*
,
const
char
*
lab
,
void
LatexGenerator
::
writeSectionRefAnchor
(
const
char
*
,
const
char
*
lab
,
...
@@ -793,7 +904,15 @@ void LatexGenerator::docify(const char *str)
...
@@ -793,7 +904,15 @@ void LatexGenerator::docify(const char *str)
case
'>'
:
t
<<
"$>$"
;
break
;
case
'>'
:
t
<<
"$>$"
;
break
;
case
'|'
:
t
<<
"$|$"
;
break
;
case
'|'
:
t
<<
"$|$"
;
break
;
case
'~'
:
t
<<
"$
\\
sim$"
;
break
;
case
'~'
:
t
<<
"$
\\
sim$"
;
break
;
case
'['
:
if
(
Config
::
pdfHyperFlag
)
t
<<
"
\\
mbox{[}"
;
else
t
<<
"["
;
break
;
case
']'
:
if
(
pc
==
'['
)
t
<<
"$
\\
,$"
;
case
']'
:
if
(
pc
==
'['
)
t
<<
"$
\\
,$"
;
if
(
Config
::
pdfHyperFlag
)
t
<<
"
\\
mbox{]}"
;
else
t
<<
"]"
;
t
<<
"]"
;
break
;
break
;
case
'-'
:
if
(
*
p
==
'>'
)
case
'-'
:
if
(
*
p
==
'>'
)
...
@@ -966,6 +1085,7 @@ void LatexGenerator::startMemberItem(bool,int annType)
...
@@ -966,6 +1085,7 @@ void LatexGenerator::startMemberItem(bool,int annType)
default
:
default
:
t
<<
"
\\
begin{tabbing}"
<<
endl
;
t
<<
"
\\
begin{tabbing}"
<<
endl
;
t
<<
"xx
\\
=xx
\\
=xx
\\
=xx
\\
=xx
\\
=xx
\\
=xx
\\
=xx
\\
=xx
\\
=
\\
kill"
<<
endl
;
t
<<
"xx
\\
=xx
\\
=xx
\\
=xx
\\
=xx
\\
=xx
\\
=xx
\\
=xx
\\
=xx
\\
=
\\
kill"
<<
endl
;
//printf("LatexGenerator::startMemberItem() insideTabbing=TRUE\n");
insideTabbing
=
TRUE
;
insideTabbing
=
TRUE
;
break
;
break
;
}
}
...
@@ -974,9 +1094,10 @@ void LatexGenerator::startMemberItem(bool,int annType)
...
@@ -974,9 +1094,10 @@ void LatexGenerator::startMemberItem(bool,int annType)
void
LatexGenerator
::
endMemberItem
(
bool
,
const
char
*
,
const
char
*
,
bool
endItem
)
void
LatexGenerator
::
endMemberItem
(
bool
,
const
char
*
,
const
char
*
,
bool
endItem
)
{
{
if
(
endItem
)
if
(
insideTabbing
&&
endItem
)
{
{
t
<<
endl
<<
"
\\
end{tabbing}"
;
t
<<
endl
<<
"
\\
end{tabbing}"
;
//printf("LatexGenerator::endMemberItem() insideTabbing=FALSE\n");
insideTabbing
=
FALSE
;
insideTabbing
=
FALSE
;
}
}
if
(
insideTabbing
)
if
(
insideTabbing
)
...
@@ -1006,3 +1127,12 @@ void LatexGenerator::endMemberList()
...
@@ -1006,3 +1127,12 @@ void LatexGenerator::endMemberList()
t
<<
"
\\
end{CompactItemize}"
<<
endl
;
t
<<
"
\\
end{CompactItemize}"
<<
endl
;
}
}
void
LatexGenerator
::
writeImage
(
const
char
*
name
,
const
char
*
w
,
const
char
*
h
)
{
t
<<
"
\\
mbox{
\\
epsfig{file="
<<
name
;
if
(
w
)
t
<<
","
<<
w
;
else
if
(
h
)
t
<<
","
<<
h
;
t
<<
"}}"
<<
endl
;
}
src/latexgen.h
View file @
d4bdeb54
...
@@ -27,7 +27,7 @@ class LatexGenerator : public OutputGenerator
...
@@ -27,7 +27,7 @@ class LatexGenerator : public OutputGenerator
LatexGenerator
();
LatexGenerator
();
~
LatexGenerator
();
~
LatexGenerator
();
OutputGenerator
*
copy
()
{
return
new
LatexGenerator
;
}
OutputGenerator
*
copy
()
;
//OutputGenerator *clone() { return new LatexGenerator(*this); }
//OutputGenerator *clone() { return new LatexGenerator(*this); }
void
append
(
const
OutputGenerator
*
o
);
void
append
(
const
OutputGenerator
*
o
);
void
enable
()
{
active
=
TRUE
;
}
void
enable
()
{
active
=
TRUE
;
}
...
@@ -50,9 +50,9 @@ class LatexGenerator : public OutputGenerator
...
@@ -50,9 +50,9 @@ class LatexGenerator : public OutputGenerator
void
startProjectNumber
();
void
startProjectNumber
();
void
endProjectNumber
()
{}
void
endProjectNumber
()
{}
void
writeStyleInfo
(
int
part
);
void
writeStyleInfo
(
int
part
);
void
startTitleHead
(
)
{
startTitle
();
}
void
startTitleHead
(
const
char
*
);
void
startTitle
();
void
startTitle
();
void
endTitleHead
(
const
char
*
name
);
void
endTitleHead
(
const
char
*
,
const
char
*
name
);
void
endTitle
()
{
t
<<
"}"
;
}
void
endTitle
()
{
t
<<
"}"
;
}
void
newParagraph
();
void
newParagraph
();
...
@@ -63,8 +63,8 @@ class LatexGenerator : public OutputGenerator
...
@@ -63,8 +63,8 @@ class LatexGenerator : public OutputGenerator
void
endItemList
()
{
t
<<
"
\\
end{CompactItemize}"
<<
endl
;
}
void
endItemList
()
{
t
<<
"
\\
end{CompactItemize}"
<<
endl
;
}
void
startEnumList
()
{
t
<<
"
\\
begin{enumerate}"
<<
endl
;
}
void
startEnumList
()
{
t
<<
"
\\
begin{enumerate}"
<<
endl
;
}
void
endEnumList
()
{
t
<<
"
\\
end{enumerate}"
<<
endl
;
}
void
endEnumList
()
{
t
<<
"
\\
end{enumerate}"
<<
endl
;
}
void
startAl
f
abeticalIndexList
()
{}
void
startAl
ph
abeticalIndexList
()
{}
void
endAl
f
abeticalIndexList
()
{}
void
endAl
ph
abeticalIndexList
()
{}
void
writeIndexHeading
(
const
char
*
)
{}
void
writeIndexHeading
(
const
char
*
)
{}
void
writeIndexItem
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
name
);
void
writeIndexItem
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
name
);
void
docify
(
const
char
*
text
);
void
docify
(
const
char
*
text
);
...
@@ -96,7 +96,7 @@ class LatexGenerator : public OutputGenerator
...
@@ -96,7 +96,7 @@ class LatexGenerator : public OutputGenerator
void
memberGroupSeparator
()
{}
void
memberGroupSeparator
()
{}
void
insertMemberAlign
()
{}
void
insertMemberAlign
()
{}
void
writeRuler
()
{
t
<<
"
\\
vspace{0.4cm}
\\
hrule
\\
vspace{0.2cm}"
;
}
void
writeRuler
()
{
t
<<
"
\\
vspace{0.4cm}
\\
hrule
\\
vspace{0.2cm}"
<<
endl
;
}
void
writeAnchor
(
const
char
*
name
)
{
t
<<
"
\\
label{"
<<
name
<<
"}"
<<
endl
;
}
void
writeAnchor
(
const
char
*
name
)
{
t
<<
"
\\
label{"
<<
name
<<
"}"
<<
endl
;
}
void
startCodeFragment
()
{
t
<<
"
\\
small
\\
begin{verbatim}"
;
}
void
startCodeFragment
()
{
t
<<
"
\\
small
\\
begin{verbatim}"
;
}
void
endCodeFragment
()
{
t
<<
"
\\
end{verbatim}
\\
normalsize "
<<
endl
;
}
void
endCodeFragment
()
{
t
<<
"
\\
end{verbatim}
\\
normalsize "
<<
endl
;
}
...
@@ -111,12 +111,13 @@ class LatexGenerator : public OutputGenerator
...
@@ -111,12 +111,13 @@ class LatexGenerator : public OutputGenerator
void
startDescItem
()
{
t
<<
"
\\
item["
;
}
void
startDescItem
()
{
t
<<
"
\\
item["
;
}
void
endDescItem
()
{
t
<<
"]"
<<
endl
;
}
void
endDescItem
()
{
t
<<
"]"
<<
endl
;
}
void
lineBreak
()
{
t
<<
"
\\
par
\n
"
;
}
void
lineBreak
()
{
t
<<
"
\\
par
\n
"
;
}
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
);
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endMemberDoc
()
{
t
<<
"}"
;
}
void
endMemberDoc
()
{
t
<<
"}"
;
}
void
writeDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
);
void
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endDoxyAnchor
();
void
writeChar
(
char
c
);
void
writeChar
(
char
c
);
void
writeLatexSpacing
()
{
t
<<
"
\\
hspace{0.3cm}"
;
}
void
writeLatexSpacing
()
{
t
<<
"
\\
hspace{0.3cm}"
;
}
void
writeLatexLabel
(
const
char
*
scope
,
const
char
*
anchor
);
//
void writeLatexLabel(const char *scope,const char *anchor);
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
const
char
*
path
,
const
char
*
name
);
const
char
*
path
,
const
char
*
name
);
void
writeEndAnnoItem
(
const
char
*
name
);
void
writeEndAnnoItem
(
const
char
*
name
);
...
@@ -157,10 +158,10 @@ class LatexGenerator : public OutputGenerator
...
@@ -157,10 +158,10 @@ class LatexGenerator : public OutputGenerator
void
writeTilde
(
char
c
)
{
t
<<
"
\\
~{"
<<
c
<<
"}"
;
}
void
writeTilde
(
char
c
)
{
t
<<
"
\\
~{"
<<
c
<<
"}"
;
}
void
startMemberDescription
()
{
t
<<
"
\\
begin{CompactList}
\\
small
\\
item
\\
em "
;
}
void
startMemberDescription
()
{
t
<<
"
\\
begin{CompactList}
\\
small
\\
item
\\
em "
;
}
void
endMemberDescription
()
{
t
<<
"
\\
item
\\
end{CompactList}"
;
}
void
endMemberDescription
()
{
t
<<
"
\\
item
\\
end{CompactList}"
;
}
void
startDescList
()
{
t
<<
"
\\
begin{Desc}
\\
item["
;
}
void
startDescList
()
{
t
<<
"
\\
begin{Desc}
\
n\
\
item["
;
}
void
endDescTitle
()
{
t
<<
"]"
;
}
void
endDescTitle
()
{
t
<<
"]"
;
}
void
writeDescItem
()
{
t
<<
"
\\
par"
<<
endl
;
}
void
writeDescItem
()
{
t
<<
"
\\
par"
<<
endl
;
}
void
endDescList
()
{
t
<<
"
\\
end{Desc}"
;
}
void
endDescList
()
{
t
<<
"
\\
end{Desc}"
<<
endl
;
}
void
writeSection
(
const
char
*
,
const
char
*
,
bool
);
void
writeSection
(
const
char
*
,
const
char
*
,
bool
);
void
writeSectionRef
(
const
char
*
,
const
char
*
,
const
char
*
);
void
writeSectionRef
(
const
char
*
,
const
char
*
,
const
char
*
);
void
writeSectionRefItem
(
const
char
*
,
const
char
*
,
const
char
*
);
void
writeSectionRefItem
(
const
char
*
,
const
char
*
,
const
char
*
);
...
@@ -174,11 +175,13 @@ class LatexGenerator : public OutputGenerator
...
@@ -174,11 +175,13 @@ class LatexGenerator : public OutputGenerator
void
endClassDiagram
(
ClassDiagram
&
,
const
char
*
,
const
char
*
);
void
endClassDiagram
(
ClassDiagram
&
,
const
char
*
,
const
char
*
);
void
startColorFont
(
uchar
,
uchar
,
uchar
)
{}
void
startColorFont
(
uchar
,
uchar
,
uchar
)
{}
void
endColorFont
()
{}
void
endColorFont
()
{}
void
writePageRef
(
const
char
*
,
const
char
*
);
void
startPageRef
();
void
endPageRef
(
const
char
*
,
const
char
*
);
void
startQuickIndexItem
(
const
char
*
,
const
char
*
)
{}
void
startQuickIndexItem
(
const
char
*
,
const
char
*
)
{}
void
endQuickIndexItem
()
{}
void
endQuickIndexItem
()
{}
void
writeFormula
(
const
char
*
,
const
char
*
);
void
writeFormula
(
const
char
*
,
const
char
*
);
void
writeNonBreakableSpace
();
void
writeNonBreakableSpace
();
void
writeImage
(
const
char
*
,
const
char
*
,
const
char
*
);
//static void docifyStatic(QTextStream &t,const char *str);
//static void docifyStatic(QTextStream &t,const char *str);
...
...
src/mangen.cpp
View file @
d4bdeb54
...
@@ -92,11 +92,7 @@ void ManGenerator::endFile()
...
@@ -92,11 +92,7 @@ void ManGenerator::endFile()
endPlainFile
();
endPlainFile
();
}
}
void
ManGenerator
::
writeDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
)
void
ManGenerator
::
endTitleHead
(
const
char
*
,
const
char
*
name
)
{
}
void
ManGenerator
::
endTitleHead
(
const
char
*
name
)
{
{
t
<<
".TH "
<<
name
<<
" 3
\"
"
<<
dateToString
(
FALSE
)
<<
"
\"
\"
"
;
t
<<
".TH "
<<
name
<<
" 3
\"
"
<<
dateToString
(
FALSE
)
<<
"
\"
\"
"
;
if
(
Config
::
projectName
.
isEmpty
())
if
(
Config
::
projectName
.
isEmpty
())
...
@@ -284,7 +280,7 @@ void ManGenerator::endCodeFragment()
...
@@ -284,7 +280,7 @@ void ManGenerator::endCodeFragment()
col
=
0
;
col
=
0
;
}
}
void
ManGenerator
::
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
)
void
ManGenerator
::
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
{
{
if
(
!
firstCol
)
t
<<
endl
;
if
(
!
firstCol
)
t
<<
endl
;
t
<<
".SS "
;
t
<<
".SS "
;
...
...
src/mangen.h
View file @
d4bdeb54
...
@@ -50,8 +50,8 @@ class ManGenerator : public OutputGenerator
...
@@ -50,8 +50,8 @@ class ManGenerator : public OutputGenerator
void
startProjectNumber
()
{}
void
startProjectNumber
()
{}
void
endProjectNumber
()
{}
void
endProjectNumber
()
{}
void
writeStyleInfo
(
int
)
{}
void
writeStyleInfo
(
int
)
{}
void
startTitleHead
()
{}
void
startTitleHead
(
const
char
*
)
{}
void
endTitleHead
(
const
char
*
);
void
endTitleHead
(
const
char
*
,
const
char
*
);
void
startTitle
();
void
startTitle
();
void
endTitle
()
{}
void
endTitle
()
{}
...
@@ -63,8 +63,8 @@ class ManGenerator : public OutputGenerator
...
@@ -63,8 +63,8 @@ class ManGenerator : public OutputGenerator
void
endItemList
()
{}
void
endItemList
()
{}
void
startEnumList
()
{}
void
startEnumList
()
{}
void
endEnumList
()
{}
void
endEnumList
()
{}
void
startAl
f
abeticalIndexList
()
{}
void
startAl
ph
abeticalIndexList
()
{}
void
endAl
f
abeticalIndexList
()
{}
void
endAl
ph
abeticalIndexList
()
{}
void
writeIndexHeading
(
const
char
*
)
{}
void
writeIndexHeading
(
const
char
*
)
{}
void
writeIndexItem
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
name
);
void
writeIndexItem
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
name
);
void
docify
(
const
char
*
text
);
void
docify
(
const
char
*
text
);
...
@@ -110,11 +110,13 @@ class ManGenerator : public OutputGenerator
...
@@ -110,11 +110,13 @@ class ManGenerator : public OutputGenerator
void
endDescItem
();
void
endDescItem
();
void
lineBreak
()
{
t
<<
"
\n
.br"
<<
endl
;
}
void
lineBreak
()
{
t
<<
"
\n
.br"
<<
endl
;
}
void
writeChar
(
char
c
);
void
writeChar
(
char
c
);
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
);
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endMemberDoc
()
{}
void
endMemberDoc
()
{}
void
writeDoxyAnchor
(
const
char
*
clName
,
const
char
*
anchor
,
const
char
*
name
);
void
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
{}
void
endDoxyAnchor
()
{}
void
writeLatexSpacing
()
{}
void
writeLatexSpacing
()
{}
void
writeLatexLabel
(
const
char
*
,
const
char
*
)
{}
//
void writeLatexLabel(const char *,const char *) {}
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
const
char
*
path
,
const
char
*
name
);
const
char
*
path
,
const
char
*
name
);
void
writeEndAnnoItem
(
const
char
*
)
{
t
<<
endl
;
firstCol
=
TRUE
;
}
void
writeEndAnnoItem
(
const
char
*
)
{
t
<<
endl
;
firstCol
=
TRUE
;
}
...
@@ -162,11 +164,13 @@ class ManGenerator : public OutputGenerator
...
@@ -162,11 +164,13 @@ class ManGenerator : public OutputGenerator
void
endClassDiagram
(
ClassDiagram
&
,
const
char
*
,
const
char
*
)
{}
void
endClassDiagram
(
ClassDiagram
&
,
const
char
*
,
const
char
*
)
{}
void
startColorFont
(
uchar
,
uchar
,
uchar
)
{}
void
startColorFont
(
uchar
,
uchar
,
uchar
)
{}
void
endColorFont
()
{}
void
endColorFont
()
{}
void
writePageRef
(
const
char
*
,
const
char
*
)
{}
void
startPageRef
()
{}
void
endPageRef
(
const
char
*
,
const
char
*
)
{}
void
startQuickIndexItem
(
const
char
*
,
const
char
*
)
{}
void
startQuickIndexItem
(
const
char
*
,
const
char
*
)
{}
void
endQuickIndexItem
()
{}
void
endQuickIndexItem
()
{}
void
writeFormula
(
const
char
*
,
const
char
*
)
{}
void
writeFormula
(
const
char
*
,
const
char
*
)
{}
void
writeNonBreakableSpace
()
{
t
<<
" "
;
}
void
writeNonBreakableSpace
()
{
t
<<
" "
;
}
void
writeImage
(
const
char
*
,
const
char
*
,
const
char
*
)
{}
private
:
private
:
bool
firstCol
;
bool
firstCol
;
...
...
src/memberdef.cpp
View file @
d4bdeb54
...
@@ -235,8 +235,10 @@ MemberDef::MemberDef(const char *t,const char *na,const char *a,const char *e,
...
@@ -235,8 +235,10 @@ MemberDef::MemberDef(const char *t,const char *na,const char *a,const char *e,
eUsed
=
FALSE
;
eUsed
=
FALSE
;
proto
=
FALSE
;
proto
=
FALSE
;
annScope
=
FALSE
;
annScope
=
FALSE
;
inLine
=
FALSE
;
annMemb
=
0
;
annMemb
=
0
;
annUsed
=
FALSE
;
annUsed
=
FALSE
;
annShown
=
FALSE
;
indDepth
=
0
;
indDepth
=
0
;
docEnumValues
=
FALSE
;
docEnumValues
=
FALSE
;
// copy function template arguments (if any)
// copy function template arguments (if any)
...
@@ -500,19 +502,39 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
...
@@ -500,19 +502,39 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
// search for the last annonymous scope in the member type
// search for the last annonymous scope in the member type
ClassDef
*
annoClassDef
=
0
;
ClassDef
*
annoClassDef
=
0
;
while
(
i
!=-
1
&&
cname
.
find
(
type
.
mid
(
i
,
l
))
!=-
1
)
//while (i!=-1 && cname.find(type.mid(i,l))!=-1)
//{
// i=r.match(type,i+l,&l);
//}
int
il
=
i
-
1
,
ir
=
i
+
l
;
if
(
i
!=-
1
)
// found annonymous scope in type
{
// extract annonymous scope
while
(
il
>=
0
&&
(
isId
(
type
.
at
(
il
))
||
type
.
at
(
il
)
==
':'
||
type
.
at
(
il
)
==
'@'
))
il
--
;
if
(
il
>
0
)
il
++
;
while
(
ir
<
(
int
)
type
.
length
()
&&
(
isId
(
type
.
at
(
ir
))
||
type
.
at
(
ir
)
==
':'
||
type
.
at
(
ir
)
==
'@'
))
ir
++
;
//QCString annName = type.mid(i,l);
QCString
annName
=
type
.
mid
(
il
,
ir
-
il
);
// if inside a class or namespace try to prepend the scope name
if
((
cd
||
nd
)
&&
annName
.
left
(
cname
.
length
())
!=
cname
)
{
{
i
=
r
.
match
(
type
,
i
+
l
,
&
l
);
QCString
ts
=
stripAnnonymousNamespaceScope
(
cname
+
"::"
+
annName
);
//printf("Member::writeDeclaration: Trying %s\n",ts.data());
annoClassDef
=
getClass
(
ts
);
}
}
if
(
i
!=-
1
)
// if not found yet, try without scope name
if
(
annoClassDef
==
0
)
{
{
// get the definition of the annonymous class that is
QCString
ts
=
stripAnnonymousNamespaceScope
(
annName
);
// the type of this member
//printf("Member::writeDeclaration: Trying %s\n",ts.data());
annoClassDef
=
getClass
(
cname
+
"::"
+
type
.
mid
(
i
,
l
));
annoClassDef
=
getClass
(
ts
);
}
}
}
// start a new member declaration
// start a new member declaration
ol
.
startMemberItem
(
gId
!=-
1
,(
(
i
!=-
1
)
||
annMemb
)
?
1
:
0
);
ol
.
startMemberItem
(
gId
!=-
1
,(
annoClassDef
||
annMemb
)
?
1
:
0
);
// If there is no detailed description we need to write the anchor here.
// If there is no detailed description we need to write the anchor here.
bool
detailsVisible
=
detailsAreVisible
();
bool
detailsVisible
=
detailsAreVisible
();
...
@@ -520,7 +542,7 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
...
@@ -520,7 +542,7 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
{
{
QCString
doxyName
=
name
().
copy
();
QCString
doxyName
=
name
().
copy
();
if
(
!
cname
.
isEmpty
())
doxyName
.
prepend
(
cname
+
"::"
);
if
(
!
cname
.
isEmpty
())
doxyName
.
prepend
(
cname
+
"::"
);
ol
.
writeDoxyAnchor
(
cname
,
anchor
(),
doxyName
);
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
(),
doxyName
);
ol
.
addToIndex
(
name
(),
cname
);
ol
.
addToIndex
(
name
(),
cname
);
ol
.
addToIndex
(
cname
,
name
());
ol
.
addToIndex
(
cname
,
name
());
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
...
@@ -538,12 +560,8 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
...
@@ -538,12 +560,8 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
// ol.writeLatexLabel(cname,anchor());
// ol.writeLatexLabel(cname,anchor());
//}
//}
if
(
tArgList
)
//printf("member name=%s indDepth=%d\n",name().data(),indDepth);
{
if
(
annoClassDef
||
annMemb
)
writeTemplatePrefix
(
ol
,
tArgList
,
FALSE
);
}
if
(
i
!=-
1
||
annMemb
)
{
{
int
j
;
int
j
;
for
(
j
=
0
;
j
<
indDepth
;
j
++
)
for
(
j
=
0
;
j
<
indDepth
;
j
++
)
...
@@ -552,6 +570,11 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
...
@@ -552,6 +570,11 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
}
}
}
}
if
(
tArgList
)
{
writeTemplatePrefix
(
ol
,
tArgList
,
FALSE
);
}
if
(
i
!=-
1
)
if
(
i
!=-
1
)
{
{
//printf("scopeName=`%s' annonymous=`%s'\n",
//printf("scopeName=`%s' annonymous=`%s'\n",
...
@@ -560,15 +583,23 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
...
@@ -560,15 +583,23 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
if
(
annoClassDef
)
if
(
annoClassDef
)
{
{
//printf("class found!\n");
//printf("class found!\n");
annoClassDef
->
writeDeclaration
(
ol
);
annoClassDef
->
writeDeclaration
(
ol
,
annMemb
);
ol
.
startMemberItem
(
gId
!=-
1
,
2
);
ol
.
startMemberItem
(
gId
!=-
1
,
2
);
int
j
;
int
j
;
for
(
j
=
0
;
j
<
indDepth
;
j
++
)
for
(
j
=
0
;
j
<
indDepth
;
j
++
)
{
{
ol
.
writeNonBreakableSpace
();
ol
.
writeNonBreakableSpace
();
}
}
QCString
varName
=
type
.
right
(
type
.
length
()
-
ir
).
stripWhiteSpace
();
ol
.
docify
(
"}"
);
ol
.
docify
(
"}"
);
ol
.
docify
(
type
.
right
(
type
.
length
()
-
i
-
l
).
stripWhiteSpace
());
if
(
varName
.
isEmpty
()
&&
(
name
().
isEmpty
()
||
name
().
at
(
0
)
==
'@'
))
{
ol
.
docify
(
";"
);
}
else
{
ol
.
docify
(
varName
);
}
}
}
else
else
{
{
...
@@ -605,6 +636,8 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
...
@@ -605,6 +636,8 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
ol
.
insertMemberAlign
();
ol
.
insertMemberAlign
();
// write name
// write name
if
(
!
name
().
isEmpty
()
&&
name
().
at
(
0
)
!=
'@'
)
{
if
(
grpId
!=-
1
)
if
(
grpId
!=-
1
)
{
{
if
(
annMemb
)
if
(
annMemb
)
...
@@ -622,7 +655,12 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
...
@@ -622,7 +655,12 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
if
(
annMemb
)
if
(
annMemb
)
{
{
//printf("anchor=%s ann_anchor=%s\n",anchor(),annMemb->anchor());
//printf("anchor=%s ann_anchor=%s\n",anchor(),annMemb->anchor());
annMemb
->
writeLink
(
ol
,
annMemb
->
memberClass
(),
nd
,
fd
,
inGroup
?
memberGroup
:
0
);
annMemb
->
writeLink
(
ol
,
annMemb
->
memberClass
(),
annMemb
->
getNamespace
(),
annMemb
->
getFileDef
(),
inGroup
?
memberGroup
:
0
);
annMemb
->
annUsed
=
annUsed
=
TRUE
;
annMemb
->
annUsed
=
annUsed
=
TRUE
;
}
}
else
else
...
@@ -635,6 +673,7 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
...
@@ -635,6 +673,7 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
if
(
annMemb
)
annMemb
->
annUsed
=
annUsed
=
TRUE
;
if
(
annMemb
)
annMemb
->
annUsed
=
annUsed
=
TRUE
;
ol
.
writeBoldString
(
name
());
ol
.
writeBoldString
(
name
());
}
}
}
// if member template specifiers are not part of the name, but they are
// if member template specifiers are not part of the name, but they are
// present, we add them
// present, we add them
...
@@ -657,8 +696,14 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
...
@@ -657,8 +696,14 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
ol
.
docify
(
excpString
());
ol
.
docify
(
excpString
());
}
}
if
(
!
detailsVisible
&&
!
Config
::
extractAllFlag
&&
!
annMemb
)
{
ol
.
endDoxyAnchor
();
}
ol
.
endMemberItem
(
gId
!=-
1
,
gFile
,
gHeader
,
annoClassDef
!=
0
&&
indDepth
==
0
);
ol
.
endMemberItem
(
gId
!=-
1
,
gFile
,
gHeader
,
annoClassDef
!=
0
&&
indDepth
==
0
);
//ol.endMemberItem(gId!=-1,gFile,gHeader,annoClassDef || annMemb);
// write brief description
// write brief description
if
(
!
briefDescription
().
isEmpty
()
&&
Config
::
briefMemDescFlag
&&
if
(
!
briefDescription
().
isEmpty
()
&&
Config
::
briefMemDescFlag
&&
gId
==-
1
&&
!
inGroup
&&
!
annMemb
)
gId
==-
1
&&
!
inGroup
&&
!
annMemb
)
...
@@ -743,27 +788,28 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
...
@@ -743,27 +788,28 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
{
{
if
(
vmd
->
isEnumerate
()
&&
def
.
mid
(
i
,
l
)
==
vmd
->
name
())
if
(
vmd
->
isEnumerate
()
&&
def
.
mid
(
i
,
l
)
==
vmd
->
name
())
{
{
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
());
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
(),
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
(),
name
());
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
}
}
ol
.
writeDoxyAnchor
(
cname
,
anchor
(),
doxyName
);
linkifyText
(
ol
,
scopeName
,
name
(),
def
.
left
(
i
));
linkifyText
(
ol
,
scopeName
,
name
(),
def
.
left
(
i
));
ol
+=*
vmd
->
enumDecl
();
ol
+=*
vmd
->
enumDecl
();
linkifyText
(
ol
,
scopeName
,
name
(),
def
.
right
(
def
.
length
()
-
i
-
l
));
linkifyText
(
ol
,
scopeName
,
name
(),
def
.
right
(
def
.
length
()
-
i
-
l
));
//ol.endDoxyAnchor();
found
=
TRUE
;
found
=
TRUE
;
}
}
}
}
if
(
!
found
)
// anonymous compound
if
(
!
found
)
// anonymous compound
{
{
//printf("Annonymous compound `%s'\n",cname.data());
//printf("Annonymous compound `%s'\n",cname.data());
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
());
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
(),
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
(),
name
());
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
}
}
ol
.
writeDoxyAnchor
(
cname
,
anchor
(),
doxyName
);
// strip annonymous compound names from definition
// strip annonymous compound names from definition
int
si
=
def
.
find
(
' '
),
pi
,
ei
=
i
+
l
;
int
si
=
def
.
find
(
' '
),
pi
,
ei
=
i
+
l
;
if
(
si
==-
1
)
si
=
0
;
if
(
si
==-
1
)
si
=
0
;
...
@@ -772,17 +818,19 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
...
@@ -772,17 +818,19 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
ol
.
docify
(
def
.
left
(
si
));
ol
.
docify
(
def
.
left
(
si
));
ol
.
docify
(
" { ... } "
);
ol
.
docify
(
" { ... } "
);
// last ei characters of def contain pointer/reference specifiers
// last ei characters of def contain pointer/reference specifiers
int
ni
=
def
.
findRev
(
"::"
);
if
(
ni
>=
ei
)
ei
=
ni
+
2
;
linkifyText
(
ol
,
scopeName
,
name
(),
def
.
right
(
def
.
length
()
-
ei
));
linkifyText
(
ol
,
scopeName
,
name
(),
def
.
right
(
def
.
length
()
-
ei
));
}
}
}
}
else
else
{
{
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
());
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
(),
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
(),
name
());
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
}
}
ol
.
writeDoxyAnchor
(
cname
,
anchor
(),
doxyName
);
ArgumentList
*
scopeAl
=
scopeDefTemplateArguments
();
ArgumentList
*
scopeAl
=
scopeDefTemplateArguments
();
if
(
scopeAl
==
0
&&
cd
)
scopeAl
=
cd
->
templateArguments
();
if
(
scopeAl
==
0
&&
cd
)
scopeAl
=
cd
->
templateArguments
();
...
@@ -840,7 +888,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
...
@@ -840,7 +888,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
if
(
isStatic
()
||
protection
()
!=
Public
||
if
(
isStatic
()
||
protection
()
!=
Public
||
virt
!=
Normal
||
isSignal
()
||
isFriend
()
||
virt
!=
Normal
||
isSignal
()
||
isFriend
()
||
isRelated
()
||
isSlot
()
isRelated
()
||
isSlot
()
||
(
isInline
()
&&
Config
::
inlineInfoFlag
)
)
)
{
{
// write the member specifier list
// write the member specifier list
...
@@ -852,6 +901,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
...
@@ -852,6 +901,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
else
if
(
isRelated
())
sl
.
append
(
"related"
);
else
if
(
isRelated
())
sl
.
append
(
"related"
);
else
else
{
{
if
(
Config
::
inlineInfoFlag
&&
isInline
())
sl
.
append
(
"inline"
);
if
(
isStatic
())
sl
.
append
(
"static"
);
if
(
isStatic
())
sl
.
append
(
"static"
);
if
(
protection
()
==
Protected
)
sl
.
append
(
"protected"
);
if
(
protection
()
==
Protected
)
sl
.
append
(
"protected"
);
else
if
(
protection
()
==
Private
)
sl
.
append
(
"private"
);
else
if
(
protection
()
==
Private
)
sl
.
append
(
"private"
);
...
@@ -871,6 +922,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
...
@@ -871,6 +922,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
ol
.
endTypewriter
();
ol
.
endTypewriter
();
}
}
ol
.
endMemberDoc
();
ol
.
endMemberDoc
();
ol
.
endDoxyAnchor
();
ol
.
startIndent
();
ol
.
startIndent
();
ol
.
newParagraph
();
ol
.
newParagraph
();
...
@@ -915,7 +967,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
...
@@ -915,7 +967,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
ol
.
endBold
();
ol
.
endBold
();
ol
.
startItemList
();
ol
.
startItemList
();
}
}
ol
.
writeDoxyAnchor
(
cname
,
fmd
->
anchor
(),
fmd
->
name
());
ol
.
addToIndex
(
fmd
->
name
(),
cname
);
ol
.
addToIndex
(
fmd
->
name
(),
cname
);
ol
.
addToIndex
(
cname
,
fmd
->
name
());
ol
.
addToIndex
(
cname
,
fmd
->
name
());
if
(
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
)
if
(
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
)
...
@@ -923,10 +974,12 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
...
@@ -923,10 +974,12 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
HtmlHelp
::
getInstance
()
->
addIndexItem
(
cname
,
fmd
->
name
(),
cfname
,
fmd
->
anchor
());
HtmlHelp
::
getInstance
()
->
addIndexItem
(
cname
,
fmd
->
name
(),
cfname
,
fmd
->
anchor
());
}
}
ol
.
writeListItem
();
ol
.
writeListItem
();
ol
.
startDoxyAnchor
(
cfname
,
cname
,
fmd
->
anchor
(),
fmd
->
name
());
first
=
FALSE
;
first
=
FALSE
;
ol
.
startBold
();
ol
.
startBold
();
ol
.
docify
(
fmd
->
name
());
ol
.
docify
(
fmd
->
name
());
ol
.
endBold
();
ol
.
endBold
();
ol
.
endDoxyAnchor
();
ol
.
newParagraph
();
ol
.
newParagraph
();
if
(
!
fmd
->
briefDescription
().
isEmpty
())
if
(
!
fmd
->
briefDescription
().
isEmpty
())
...
@@ -979,18 +1032,18 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
...
@@ -979,18 +1032,18 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
{
{
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBase
(),
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBase
(),
bmd
->
anchor
(),
bcd
->
name
());
bmd
->
anchor
(),
bcd
->
name
());
if
(
bcd
->
isLinkableInProject
())
if
(
bcd
->
isLinkableInProject
()
&&
!
Config
::
pdfHyperFlag
)
{
{
ol
.
writePageRef
(
bcd
->
name
(),
bmd
->
anchor
());
writePageRef
(
ol
,
bcd
->
name
(),
bmd
->
anchor
());
}
}
}
}
else
else
{
{
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBase
(),
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBase
(),
0
,
bcd
->
name
());
0
,
bcd
->
name
());
if
(
bcd
->
isLinkableInProject
())
if
(
bcd
->
isLinkableInProject
()
&&
!
Config
::
pdfHyperFlag
)
{
{
ol
.
writePageRef
(
bcd
->
name
(),
0
);
writePageRef
(
ol
,
bcd
->
name
(),
0
);
}
}
}
}
parseText
(
ol
,
reimplFromLine
.
right
(
parseText
(
ol
,
reimplFromLine
.
right
(
...
@@ -1041,7 +1094,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
...
@@ -1041,7 +1094,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
count
=
0
;
count
=
0
;
// find the entryIndex-th documented entry in the inheritance list.
// find the entryIndex-th documented entry in the inheritance list.
for
(
mli
.
to
First
();(
bmd
=
mli
.
current
())
&&
(
bcd
=
bmd
->
memberClass
());
++
mli
)
for
(
mli
.
to
Last
();(
bmd
=
mli
.
current
())
&&
(
bcd
=
bmd
->
memberClass
());
--
mli
)
{
{
if
(
bmd
->
isLinkable
()
&&
bcd
->
isLinkable
())
if
(
bmd
->
isLinkable
()
&&
bcd
->
isLinkable
())
{
{
...
@@ -1058,9 +1111,9 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
...
@@ -1058,9 +1111,9 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
//{
//{
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBase
(),
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBase
(),
bmd
->
anchor
(),
bcd
->
name
());
bmd
->
anchor
(),
bcd
->
name
());
if
(
bcd
->
isLinkableInProject
())
if
(
bcd
->
isLinkableInProject
()
&&
!
Config
::
pdfHyperFlag
)
{
{
ol
.
writePageRef
(
bcd
->
name
(),
bmd
->
anchor
());
writePageRef
(
ol
,
bcd
->
name
(),
bmd
->
anchor
());
}
}
//}
//}
//else
//else
...
...
src/memberdef.h
View file @
d4bdeb54
...
@@ -85,11 +85,13 @@ class MemberDef : public Definition
...
@@ -85,11 +85,13 @@ class MemberDef : public Definition
void
setAnchor
(
const
char
*
a
)
{
anc
=
a
;
}
void
setAnchor
(
const
char
*
a
)
{
anc
=
a
;
}
void
setProtection
(
Protection
p
)
{
prot
=
p
;
}
void
setProtection
(
Protection
p
)
{
prot
=
p
;
}
void
setBody
(
const
QCString
&
b
)
{
body
=
b
;
}
void
setBody
(
const
QCString
&
b
)
{
body
=
b
;
}
void
setInline
(
bool
in
)
{
inLine
=
in
;
}
FileDef
*
getFileDef
()
{
return
fileDef
;
}
FileDef
*
getFileDef
()
{
return
fileDef
;
}
FileDef
*
getFileDec
()
{
return
fileDec
;
}
FileDef
*
getFileDec
()
{
return
fileDec
;
}
void
setMemberClass
(
ClassDef
*
cd
)
{
classDef
=
cd
;
}
void
setMemberClass
(
ClassDef
*
cd
)
{
classDef
=
cd
;
}
bool
isRelated
()
const
{
return
related
;
}
bool
isRelated
()
const
{
return
related
;
}
bool
isStatic
()
const
{
return
stat
;
}
bool
isStatic
()
const
{
return
stat
;
}
bool
isInline
()
const
{
return
inLine
;
}
bool
hasDocumentation
()
// overrides hasDocumentation in definition.h
bool
hasDocumentation
()
// overrides hasDocumentation in definition.h
{
return
Definition
::
hasDocumentation
()
||
!
body
.
isEmpty
();
}
{
return
Definition
::
hasDocumentation
()
||
!
body
.
isEmpty
();
}
...
@@ -212,12 +214,14 @@ class MemberDef : public Definition
...
@@ -212,12 +214,14 @@ class MemberDef : public Definition
Protection
prot
;
// protection type [Public/Protected/Private]
Protection
prot
;
// protection type [Public/Protected/Private]
bool
related
;
// is this a member that is only related to a class
bool
related
;
// is this a member that is only related to a class
bool
stat
;
// is it a static function?
bool
stat
;
// is it a static function?
bool
inLine
;
// is it an inline function?
MemberType
mtype
;
// returns the kind of member
MemberType
mtype
;
// returns the kind of member
bool
eUsed
;
// is the enumerate already placed in a list
bool
eUsed
;
// is the enumerate already placed in a list
bool
proto
;
// is it a prototype;
bool
proto
;
// is it a prototype;
bool
docEnumValues
;
// is an enum with documented enum values.
bool
docEnumValues
;
// is an enum with documented enum values.
bool
annScope
;
bool
annScope
;
bool
annUsed
;
bool
annUsed
;
bool
annShown
;
int
indDepth
;
int
indDepth
;
MemberDef
*
annMemb
;
MemberDef
*
annMemb
;
ArgumentList
*
argList
;
// argument list of this member
ArgumentList
*
argList
;
// argument list of this member
...
...
src/membergroup.cpp
View file @
d4bdeb54
...
@@ -62,9 +62,9 @@ void MemberGroup::writeDocumentation(OutputList &ol)
...
@@ -62,9 +62,9 @@ void MemberGroup::writeDocumentation(OutputList &ol)
}
}
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
fileName
,
title
);
startFile
(
ol
,
fileName
,
title
);
startTitle
(
ol
);
startTitle
(
ol
,
getOutputFileBase
()
);
ol
.
docify
(
title
);
ol
.
docify
(
title
);
endTitle
(
ol
,
name
());
endTitle
(
ol
,
getOutputFileBase
(),
name
());
OutputList
briefOutput
(
&
ol
);
OutputList
briefOutput
(
&
ol
);
...
...
src/memberlist.cpp
View file @
d4bdeb54
...
@@ -256,11 +256,11 @@ void MemberList::writePlainDeclarations(OutputList &ol,ClassDef *cd,
...
@@ -256,11 +256,11 @@ void MemberList::writePlainDeclarations(OutputList &ol,ClassDef *cd,
// )
// )
// )
// )
// )
// )
if
(
md
->
hasDocumentation
()
||
md
->
hasDocumentedEnumValues
())
if
(
md
->
isLinkableInProject
()
||
md
->
hasDocumentedEnumValues
())
{
{
if
(
Config
::
genTagFile
.
length
()
>
0
)
if
(
Config
::
genTagFile
.
length
()
>
0
)
tagFile
<<
md
->
name
()
<<
" "
<<
md
->
anchor
()
tagFile
<<
md
->
name
()
<<
" "
<<
md
->
anchor
()
<<
"
\"
"
<<
md
->
argsString
()
<<
"
\"
"
;
<<
"
\"
\"
"
<<
endl
;
md
->
writeLink
(
typeDecl
,
cd
,
nd
,
fd
,
0
);
md
->
writeLink
(
typeDecl
,
cd
,
nd
,
fd
,
0
);
}
}
else
else
...
...
src/membername.h
View file @
d4bdeb54
...
@@ -86,6 +86,7 @@ class MemberNameInfoIterator : public QListIterator<MemberInfo>
...
@@ -86,6 +86,7 @@ class MemberNameInfoIterator : public QListIterator<MemberInfo>
class
MemberNameInfoList
:
public
QList
<
MemberNameInfo
>
class
MemberNameInfoList
:
public
QList
<
MemberNameInfo
>
{
{
public
:
public
:
~
MemberNameInfoList
()
{}
int
compareItems
(
GCI
item1
,
GCI
item2
)
int
compareItems
(
GCI
item1
,
GCI
item2
)
{
return
stricmp
(
{
return
stricmp
(
((
MemberNameInfo
*
)
item1
)
->
memberName
(),
((
MemberNameInfo
*
)
item1
)
->
memberName
(),
...
@@ -98,6 +99,7 @@ class MemberNameInfoDict : public QDict<MemberNameInfo>
...
@@ -98,6 +99,7 @@ class MemberNameInfoDict : public QDict<MemberNameInfo>
{
{
public
:
public
:
MemberNameInfoDict
(
int
size
)
:
QDict
<
MemberNameInfo
>
(
size
)
{}
MemberNameInfoDict
(
int
size
)
:
QDict
<
MemberNameInfo
>
(
size
)
{}
~
MemberNameInfoDict
()
{}
};
};
class
MemberNameInfoListIterator
:
public
QListIterator
<
MemberNameInfo
>
class
MemberNameInfoListIterator
:
public
QListIterator
<
MemberNameInfo
>
...
...
src/namespacedef.cpp
View file @
d4bdeb54
...
@@ -63,10 +63,10 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
...
@@ -63,10 +63,10 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
{
{
QCString
pageTitle
=
name
()
+
" Namespace Reference"
;
QCString
pageTitle
=
name
()
+
" Namespace Reference"
;
startFile
(
ol
,
fileName
,
pageTitle
);
startFile
(
ol
,
fileName
,
pageTitle
);
startTitle
(
ol
);
startTitle
(
ol
,
getOutputFileBase
()
);
//ol.docify(pageTitle);
//ol.docify(pageTitle);
parseText
(
ol
,
theTranslator
->
trNamespaceReference
(
name
()));
parseText
(
ol
,
theTranslator
->
trNamespaceReference
(
name
()));
endTitle
(
ol
,
name
());
endTitle
(
ol
,
getOutputFileBase
(),
name
());
if
(
Config
::
genTagFile
.
length
()
>
0
)
tagFile
<<
"%"
<<
name
()
<<
":
\n
"
;
if
(
Config
::
genTagFile
.
length
()
>
0
)
tagFile
<<
"%"
<<
name
()
<<
":
\n
"
;
...
@@ -94,7 +94,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
...
@@ -94,7 +94,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
bool
found
=
FALSE
;
bool
found
=
FALSE
;
while
(
cd
)
while
(
cd
)
{
{
if
(
cd
->
isLinkable
()
)
if
(
cd
->
name
().
find
(
'@'
)
==-
1
)
{
{
if
(
!
found
)
if
(
!
found
)
{
{
...
@@ -120,7 +120,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
...
@@ -120,7 +120,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
}
}
ol
.
writeString
(
" "
);
ol
.
writeString
(
" "
);
ol
.
insertMemberAlign
();
ol
.
insertMemberAlign
();
if
(
cd
->
hasDocumentation
())
if
(
cd
->
isLinkable
())
{
{
ol
.
writeObjectLink
(
cd
->
getReference
(),
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
cd
->
getOutputFileBase
(),
...
...
src/namespacedef.h
View file @
d4bdeb54
...
@@ -76,6 +76,7 @@ class NamespaceDef : public Definition
...
@@ -76,6 +76,7 @@ class NamespaceDef : public Definition
class
NamespaceList
:
public
QList
<
NamespaceDef
>
class
NamespaceList
:
public
QList
<
NamespaceDef
>
{
{
public
:
public
:
~
NamespaceList
()
{}
int
compareItems
(
GCI
item1
,
GCI
item2
)
int
compareItems
(
GCI
item1
,
GCI
item2
)
{
{
return
strcmp
(((
NamespaceDef
*
)
item1
)
->
name
(),
return
strcmp
(((
NamespaceDef
*
)
item1
)
->
name
(),
...
@@ -95,6 +96,7 @@ class NamespaceDict : public QDict<NamespaceDef>
...
@@ -95,6 +96,7 @@ class NamespaceDict : public QDict<NamespaceDef>
{
{
public
:
public
:
NamespaceDict
(
int
size
)
:
QDict
<
NamespaceDef
>
(
size
)
{}
NamespaceDict
(
int
size
)
:
QDict
<
NamespaceDef
>
(
size
)
{}
~
NamespaceDict
()
{}
};
};
#endif
#endif
src/outputgen.h
View file @
d4bdeb54
...
@@ -53,8 +53,8 @@ class OutputGenerator
...
@@ -53,8 +53,8 @@ class OutputGenerator
virtual
void
startProjectNumber
()
=
0
;
virtual
void
startProjectNumber
()
=
0
;
virtual
void
endProjectNumber
()
=
0
;
virtual
void
endProjectNumber
()
=
0
;
virtual
void
writeStyleInfo
(
int
part
)
=
0
;
virtual
void
writeStyleInfo
(
int
part
)
=
0
;
virtual
void
startTitleHead
()
=
0
;
virtual
void
startTitleHead
(
const
char
*
)
=
0
;
virtual
void
endTitleHead
(
const
char
*
name
)
=
0
;
virtual
void
endTitleHead
(
const
char
*
fileName
,
const
char
*
name
)
=
0
;
virtual
void
startTitle
()
=
0
;
virtual
void
startTitle
()
=
0
;
virtual
void
endTitle
()
=
0
;
virtual
void
endTitle
()
=
0
;
virtual
void
newParagraph
()
=
0
;
virtual
void
newParagraph
()
=
0
;
...
@@ -67,8 +67,8 @@ class OutputGenerator
...
@@ -67,8 +67,8 @@ class OutputGenerator
virtual
void
endEnumList
()
=
0
;
virtual
void
endEnumList
()
=
0
;
virtual
void
startBold
()
=
0
;
virtual
void
startBold
()
=
0
;
virtual
void
endBold
()
=
0
;
virtual
void
endBold
()
=
0
;
virtual
void
startAl
f
abeticalIndexList
()
=
0
;
virtual
void
startAl
ph
abeticalIndexList
()
=
0
;
virtual
void
endAl
f
abeticalIndexList
()
=
0
;
virtual
void
endAl
ph
abeticalIndexList
()
=
0
;
virtual
void
writeIndexHeading
(
const
char
*
s
)
=
0
;
virtual
void
writeIndexHeading
(
const
char
*
s
)
=
0
;
virtual
void
writeIndexItem
(
const
char
*
ref
,
const
char
*
file
,
virtual
void
writeIndexItem
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
text
)
=
0
;
const
char
*
text
)
=
0
;
...
@@ -109,11 +109,14 @@ class OutputGenerator
...
@@ -109,11 +109,14 @@ class OutputGenerator
virtual
void
startEmphasis
()
=
0
;
virtual
void
startEmphasis
()
=
0
;
virtual
void
endEmphasis
()
=
0
;
virtual
void
endEmphasis
()
=
0
;
virtual
void
writeChar
(
char
c
)
=
0
;
virtual
void
writeChar
(
char
c
)
=
0
;
virtual
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
)
=
0
;
virtual
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
=
0
;
virtual
void
endMemberDoc
()
=
0
;
virtual
void
endMemberDoc
()
=
0
;
virtual
void
writeDoxyAnchor
(
const
char
*
clName
,
const
char
*
anchor
,
const
char
*
name
)
=
0
;
virtual
void
startDoxyAnchor
(
const
char
*
fileName
,
const
char
*
clName
,
const
char
*
anchor
,
const
char
*
name
)
=
0
;
virtual
void
endDoxyAnchor
()
=
0
;
virtual
void
writeLatexSpacing
()
=
0
;
virtual
void
writeLatexSpacing
()
=
0
;
virtual
void
writeLatexLabel
(
const
char
*
clName
,
const
char
*
anchor
)
=
0
;
//
virtual void writeLatexLabel(const char *clName,const char *anchor) = 0;
virtual
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
virtual
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
const
char
*
path
,
const
char
*
name
)
=
0
;
const
char
*
path
,
const
char
*
name
)
=
0
;
virtual
void
writeEndAnnoItem
(
const
char
*
name
)
=
0
;
virtual
void
writeEndAnnoItem
(
const
char
*
name
)
=
0
;
...
@@ -166,11 +169,13 @@ class OutputGenerator
...
@@ -166,11 +169,13 @@ class OutputGenerator
virtual
void
endClassDiagram
(
ClassDiagram
&
,
const
char
*
,
const
char
*
)
=
0
;
virtual
void
endClassDiagram
(
ClassDiagram
&
,
const
char
*
,
const
char
*
)
=
0
;
virtual
void
startColorFont
(
uchar
r
,
uchar
g
,
uchar
b
)
=
0
;
virtual
void
startColorFont
(
uchar
r
,
uchar
g
,
uchar
b
)
=
0
;
virtual
void
endColorFont
()
=
0
;
virtual
void
endColorFont
()
=
0
;
virtual
void
writePageRef
(
const
char
*
,
const
char
*
)
=
0
;
virtual
void
startPageRef
()
=
0
;
virtual
void
endPageRef
(
const
char
*
,
const
char
*
)
=
0
;
virtual
void
startQuickIndexItem
(
const
char
*
s
,
const
char
*
l
)
=
0
;
virtual
void
startQuickIndexItem
(
const
char
*
s
,
const
char
*
l
)
=
0
;
virtual
void
endQuickIndexItem
()
=
0
;
virtual
void
endQuickIndexItem
()
=
0
;
virtual
void
writeFormula
(
const
char
*
,
const
char
*
)
=
0
;
virtual
void
writeFormula
(
const
char
*
,
const
char
*
)
=
0
;
virtual
void
writeNonBreakableSpace
()
=
0
;
virtual
void
writeNonBreakableSpace
()
=
0
;
virtual
void
writeImage
(
const
char
*
,
const
char
*
,
const
char
*
)
=
0
;
void
clear
()
{
b
.
close
();
a
.
resize
(
0
);
b
.
setBuffer
(
a
);
void
clear
()
{
b
.
close
();
a
.
resize
(
0
);
b
.
setBuffer
(
a
);
b
.
open
(
IO_WriteOnly
);
t
.
setDevice
(
&
b
);
}
b
.
open
(
IO_WriteOnly
);
t
.
setDevice
(
&
b
);
}
...
...
src/outputlist.cpp
View file @
d4bdeb54
...
@@ -226,12 +226,14 @@ void OutputList::forall(void (OutputGenerator::*func)(a1,a2,a3,a4),a1,a2,a3,a4)
...
@@ -226,12 +226,14 @@ void OutputList::forall(void (OutputGenerator::*func)(a1,a2,a3,a4),a1,a2,a3,a4)
FORALL1
(
const
char
*
a1
,
a1
)
FORALL1
(
const
char
*
a1
,
a1
)
FORALL1
(
char
a1
,
a1
)
FORALL1
(
char
a1
,
a1
)
FORALL1
(
int
a1
,
a1
)
FORALL1
(
int
a1
,
a1
)
#if defined(HAS_BOOL_TYPE)
FORALL1
(
bool
a1
,
a1
)
FORALL1
(
bool
a1
,
a1
)
FORALL1
(
IndexSections
a1
,
a1
)
FORALL2
(
const
char
*
a1
,
const
char
*
a2
,
a1
,
a2
)
FORALL2
(
int
a1
,
bool
a2
,
a1
,
a2
)
FORALL2
(
bool
a1
,
int
a2
,
a1
,
a2
)
FORALL2
(
bool
a1
,
int
a2
,
a1
,
a2
)
FORALL2
(
bool
a1
,
bool
a2
,
a1
,
a2
)
FORALL2
(
bool
a1
,
bool
a2
,
a1
,
a2
)
#endif
FORALL2
(
int
a1
,
bool
a2
,
a1
,
a2
)
FORALL1
(
IndexSections
a1
,
a1
)
FORALL2
(
const
char
*
a1
,
const
char
*
a2
,
a1
,
a2
)
FORALL3
(
ClassDiagram
&
a1
,
const
char
*
a2
,
const
char
*
a3
,
a1
,
a2
,
a3
)
FORALL3
(
ClassDiagram
&
a1
,
const
char
*
a2
,
const
char
*
a3
,
a1
,
a2
,
a3
)
FORALL3
(
const
char
*
a1
,
const
char
*
a2
,
const
char
*
a3
,
a1
,
a2
,
a3
)
FORALL3
(
const
char
*
a1
,
const
char
*
a2
,
const
char
*
a3
,
a1
,
a2
,
a3
)
FORALL3
(
const
char
*
a1
,
const
char
*
a2
,
bool
a3
,
a1
,
a2
,
a3
)
FORALL3
(
const
char
*
a1
,
const
char
*
a2
,
bool
a3
,
a1
,
a2
,
a3
)
...
...
src/outputlist.h
View file @
d4bdeb54
...
@@ -72,10 +72,10 @@ class OutputList
...
@@ -72,10 +72,10 @@ class OutputList
{
forall
(
&
OutputGenerator
::
endFile
);
}
{
forall
(
&
OutputGenerator
::
endFile
);
}
void
endPlainFile
()
void
endPlainFile
()
{
forall
(
&
OutputGenerator
::
endPlainFile
);
}
{
forall
(
&
OutputGenerator
::
endPlainFile
);
}
void
startTitleHead
()
void
startTitleHead
(
const
char
*
fileName
)
{
forall
(
&
OutputGenerator
::
startTitleHead
);
}
{
forall
(
&
OutputGenerator
::
startTitleHead
,
fileName
);
}
void
endTitleHead
(
const
char
*
name
)
void
endTitleHead
(
const
char
*
fileName
,
const
char
*
name
)
{
forall
(
&
OutputGenerator
::
endTitleHead
,
name
);
}
{
forall
(
&
OutputGenerator
::
endTitleHead
,
fileName
,
name
);
}
void
startTitle
()
void
startTitle
()
{
forall
(
&
OutputGenerator
::
startTitle
);
}
{
forall
(
&
OutputGenerator
::
startTitle
);
}
void
endTitle
()
void
endTitle
()
...
@@ -96,10 +96,10 @@ class OutputList
...
@@ -96,10 +96,10 @@ class OutputList
{
forall
(
&
OutputGenerator
::
startEnumList
);
}
{
forall
(
&
OutputGenerator
::
startEnumList
);
}
void
endEnumList
()
void
endEnumList
()
{
forall
(
&
OutputGenerator
::
endEnumList
);
}
{
forall
(
&
OutputGenerator
::
endEnumList
);
}
void
startAl
f
abeticalIndexList
()
void
startAl
ph
abeticalIndexList
()
{
forall
(
&
OutputGenerator
::
startAl
f
abeticalIndexList
);
}
{
forall
(
&
OutputGenerator
::
startAl
ph
abeticalIndexList
);
}
void
endAl
f
abeticalIndexList
()
void
endAl
ph
abeticalIndexList
()
{
forall
(
&
OutputGenerator
::
endAl
f
abeticalIndexList
);
}
{
forall
(
&
OutputGenerator
::
endAl
ph
abeticalIndexList
);
}
void
writeIndexHeading
(
const
char
*
s
)
void
writeIndexHeading
(
const
char
*
s
)
{
forall
(
&
OutputGenerator
::
writeIndexHeading
,
s
);
}
{
forall
(
&
OutputGenerator
::
writeIndexHeading
,
s
);
}
void
writeIndexItem
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
text
)
void
writeIndexItem
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
text
)
...
@@ -177,16 +177,20 @@ class OutputList
...
@@ -177,16 +177,20 @@ class OutputList
{
forall
(
&
OutputGenerator
::
endEmphasis
);
}
{
forall
(
&
OutputGenerator
::
endEmphasis
);
}
void
writeChar
(
char
c
)
void
writeChar
(
char
c
)
{
forall
(
&
OutputGenerator
::
writeChar
,
c
);
}
{
forall
(
&
OutputGenerator
::
writeChar
,
c
);
}
void
startMemberDoc
(
const
char
*
clName
,
const
char
*
memName
,
const
char
*
anchor
)
void
startMemberDoc
(
const
char
*
clName
,
const
char
*
memName
,
{
forall
(
&
OutputGenerator
::
startMemberDoc
,
clName
,
memName
,
anchor
);
}
const
char
*
anchor
,
const
char
*
title
)
{
forall
(
&
OutputGenerator
::
startMemberDoc
,
clName
,
memName
,
anchor
,
title
);
}
void
endMemberDoc
()
void
endMemberDoc
()
{
forall
(
&
OutputGenerator
::
endMemberDoc
);
}
{
forall
(
&
OutputGenerator
::
endMemberDoc
);
}
void
writeDoxyAnchor
(
const
char
*
clName
,
const
char
*
anchor
,
const
char
*
name
)
void
startDoxyAnchor
(
const
char
*
fn
,
const
char
*
cn
,
{
forall
(
&
OutputGenerator
::
writeDoxyAnchor
,
clName
,
anchor
,
name
);
}
const
char
*
anchor
,
const
char
*
name
)
{
forall
(
&
OutputGenerator
::
startDoxyAnchor
,
fn
,
cn
,
anchor
,
name
);
}
void
endDoxyAnchor
()
{
forall
(
&
OutputGenerator
::
endDoxyAnchor
);
}
void
writeLatexSpacing
()
void
writeLatexSpacing
()
{
forall
(
&
OutputGenerator
::
writeLatexSpacing
);
}
{
forall
(
&
OutputGenerator
::
writeLatexSpacing
);
}
void
writeLatexLabel
(
const
char
*
scope
,
const
char
*
anchor
)
//
void writeLatexLabel(const char *scope,const char *anchor)
{
forall
(
&
OutputGenerator
::
writeLatexLabel
,
scope
,
anchor
);
}
//
{ forall(&OutputGenerator::writeLatexLabel,scope,anchor); }
void
startDescription
()
void
startDescription
()
{
forall
(
&
OutputGenerator
::
startDescription
);
}
{
forall
(
&
OutputGenerator
::
startDescription
);
}
void
endDescription
()
void
endDescription
()
...
@@ -289,8 +293,10 @@ class OutputList
...
@@ -289,8 +293,10 @@ class OutputList
{
forall
(
&
OutputGenerator
::
startColorFont
,
r
,
g
,
b
);
}
{
forall
(
&
OutputGenerator
::
startColorFont
,
r
,
g
,
b
);
}
void
endColorFont
()
void
endColorFont
()
{
forall
(
&
OutputGenerator
::
endColorFont
);
}
{
forall
(
&
OutputGenerator
::
endColorFont
);
}
void
writePageRef
(
const
char
*
c
,
const
char
*
a
)
void
startPageRef
()
{
forall
(
&
OutputGenerator
::
writePageRef
,
c
,
a
);
}
{
forall
(
&
OutputGenerator
::
startPageRef
);
}
void
endPageRef
(
const
char
*
c
,
const
char
*
a
)
{
forall
(
&
OutputGenerator
::
endPageRef
,
c
,
a
);
}
void
startQuickIndexItem
(
const
char
*
s
,
const
char
*
l
)
void
startQuickIndexItem
(
const
char
*
s
,
const
char
*
l
)
{
forall
(
&
OutputGenerator
::
startQuickIndexItem
,
s
,
l
);
}
{
forall
(
&
OutputGenerator
::
startQuickIndexItem
,
s
,
l
);
}
void
endQuickIndexItem
()
void
endQuickIndexItem
()
...
@@ -299,6 +305,8 @@ class OutputList
...
@@ -299,6 +305,8 @@ class OutputList
{
forall
(
&
OutputGenerator
::
writeFormula
,
n
,
t
);
}
{
forall
(
&
OutputGenerator
::
writeFormula
,
n
,
t
);
}
void
writeNonBreakableSpace
()
void
writeNonBreakableSpace
()
{
forall
(
&
OutputGenerator
::
writeNonBreakableSpace
);
}
{
forall
(
&
OutputGenerator
::
writeNonBreakableSpace
);
}
void
writeImage
(
const
char
*
n
,
const
char
*
w
,
const
char
*
h
)
{
forall
(
&
OutputGenerator
::
writeImage
,
n
,
w
,
h
);
}
private
:
private
:
void
debug
();
void
debug
();
...
@@ -307,13 +315,15 @@ class OutputList
...
@@ -307,13 +315,15 @@ class OutputList
void
forall
(
void
(
OutputGenerator
::*
func
)());
void
forall
(
void
(
OutputGenerator
::*
func
)());
FORALLPROTO1
(
const
char
*
);
FORALLPROTO1
(
const
char
*
);
FORALLPROTO1
(
char
);
FORALLPROTO1
(
char
);
FORALLPROTO1
(
IndexSections
);
FORALLPROTO1
(
int
);
FORALLPROTO1
(
int
);
#if defined(HAS_BOOL_TYPE)
FORALLPROTO1
(
bool
);
FORALLPROTO1
(
bool
);
FORALLPROTO1
(
IndexSections
);
FORALLPROTO2
(
const
char
*
,
const
char
*
);
FORALLPROTO2
(
int
,
bool
);
FORALLPROTO2
(
bool
,
int
);
FORALLPROTO2
(
bool
,
int
);
FORALLPROTO2
(
bool
,
bool
);
FORALLPROTO2
(
bool
,
bool
);
#endif
FORALLPROTO2
(
int
,
bool
);
FORALLPROTO2
(
const
char
*
,
const
char
*
);
FORALLPROTO3
(
const
char
*
,
const
char
*
,
bool
);
FORALLPROTO3
(
const
char
*
,
const
char
*
,
bool
);
FORALLPROTO3
(
uchar
,
uchar
,
uchar
);
FORALLPROTO3
(
uchar
,
uchar
,
uchar
);
FORALLPROTO3
(
const
char
*
,
const
char
*
,
const
char
*
);
FORALLPROTO3
(
const
char
*
,
const
char
*
,
const
char
*
);
...
...
src/pre.l
View file @
d4bdeb54
...
@@ -1155,7 +1155,7 @@ BN [ \t\r\n]
...
@@ -1155,7 +1155,7 @@ BN [ \t\r\n]
ifcount++;
ifcount++;
//printf("#if... depth=%d\n",ifcount);
//printf("#if... depth=%d\n",ifcount);
}
}
<SkipCommand>"else"
/[^a-z_A-Z0-9]
{
<SkipCommand>"else"
{
//printf("Else! ifcount=%d otherCaseDone=%d\n",ifcount,otherCaseDone());
//printf("Else! ifcount=%d otherCaseDone=%d\n",ifcount,otherCaseDone());
if (ifcount==0 && !otherCaseDone())
if (ifcount==0 && !otherCaseDone())
{
{
...
@@ -1179,7 +1179,7 @@ BN [ \t\r\n]
...
@@ -1179,7 +1179,7 @@ BN [ \t\r\n]
}
}
}
}
}
}
<SkipCommand>"endif"
/[^a-z_A-Z0-9]
{
<SkipCommand>"endif"
{
decrLevel();
decrLevel();
if (--ifcount<0)
if (--ifcount<0)
{
{
...
...
src/scanner.l
View file @
d4bdeb54
...
@@ -115,6 +115,7 @@ static int includeFileLength = 0;
...
@@ -115,6 +115,7 @@ static int includeFileLength = 0;
static bool firstLine;
static bool firstLine;
static bool isTypedef;
static bool isTypedef;
static bool inParamBlock;
static bool inParamBlock;
static bool inRetValBlock;
static bool inExceptionBlock;
static bool inExceptionBlock;
static bool inSeeBlock;
static bool inSeeBlock;
static bool inReturnBlock;
static bool inReturnBlock;
...
@@ -149,6 +150,7 @@ static QCString *copyArgString;
...
@@ -149,6 +150,7 @@ static QCString *copyArgString;
static ArgumentList *currentArgumentList;
static ArgumentList *currentArgumentList;
static QCString *currentTemplateSpec;
static QCString *currentTemplateSpec;
static QCString curImageName;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
...
@@ -186,6 +188,7 @@ static void initParser()
...
@@ -186,6 +188,7 @@ static void initParser()
firstLine = TRUE;
firstLine = TRUE;
isTypedef = FALSE;
isTypedef = FALSE;
inParamBlock = FALSE;
inParamBlock = FALSE;
inRetValBlock = FALSE;
inExceptionBlock = FALSE;
inExceptionBlock = FALSE;
inSeeBlock = FALSE;
inSeeBlock = FALSE;
inReturnBlock = FALSE;
inReturnBlock = FALSE;
...
@@ -534,7 +537,7 @@ static void newDocState();
...
@@ -534,7 +537,7 @@ static void newDocState();
static bool inBlock()
static bool inBlock()
{
{
return inParamBlock || inSeeBlock || inReturnBlock || inAuthorBlock ||
return inParamBlock || in
RetValBlock || in
SeeBlock || inReturnBlock || inAuthorBlock ||
inVersionBlock || inDateBlock || inWarningBlock || inBugBlock ||
inVersionBlock || inDateBlock || inWarningBlock || inBugBlock ||
inParBlock || inExceptionBlock;
inParBlock || inExceptionBlock;
}
}
...
@@ -542,7 +545,7 @@ static bool inBlock()
...
@@ -542,7 +545,7 @@ static bool inBlock()
static void endBlock()
static void endBlock()
{
{
outDoc->endDescList();
outDoc->endDescList();
inParamBlock=inSeeBlock=inReturnBlock=inAuthorBlock=
inParamBlock=in
RetValBlock=in
SeeBlock=inReturnBlock=inAuthorBlock=
inVersionBlock=inDateBlock=inBugBlock=inWarningBlock=
inVersionBlock=inDateBlock=inBugBlock=inWarningBlock=
inParBlock=inExceptionBlock=FALSE;
inParBlock=inExceptionBlock=FALSE;
}
}
...
@@ -692,6 +695,7 @@ VAR [vV][aA][rR]
...
@@ -692,6 +695,7 @@ VAR [vV][aA][rR]
%x ClassName
%x ClassName
%x ClassVar
%x ClassVar
%x Bases
%x Bases
%x BasesProt
%x NextSemi
%x NextSemi
%x FindMembers
%x FindMembers
%x FindMemberName
%x FindMemberName
...
@@ -803,6 +807,10 @@ VAR [vV][aA][rR]
...
@@ -803,6 +807,10 @@ VAR [vV][aA][rR]
%x DocRefArgStart
%x DocRefArgStart
%x DocRefItem
%x DocRefItem
%x DocRefItemName
%x DocRefItemName
%x DocImage
%x DocHtmlImageName
%x DocLatexImageName
%x DocLatexImageWidth
%x SectionLabel
%x SectionLabel
%x SectionTitle
%x SectionTitle
%x SkipTemplate
%x SkipTemplate
...
@@ -1031,7 +1039,7 @@ VAR [vV][aA][rR]
...
@@ -1031,7 +1039,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem();
outDoc->writeDescItem();
}
}
}
}
<DocScan>("\\"|"@")"bug"{BN}+ {
<DocScan>("\\"|"@")"bug"
[s]?
{BN}+ {
endArgumentList();
endArgumentList();
if (!inBugBlock)
if (!inBugBlock)
{
{
...
@@ -1107,7 +1115,7 @@ VAR [vV][aA][rR]
...
@@ -1107,7 +1115,7 @@ VAR [vV][aA][rR]
outDoc->docify(", ");
outDoc->docify(", ");
}
}
}
}
<DocScan>("\\"|"@")
"return"
{BN}+ {
<DocScan>("\\"|"@")
("return"([s])?|"result")
{BN}+ {
endArgumentList();
endArgumentList();
if (!inReturnBlock)
if (!inReturnBlock)
{
{
...
@@ -1150,7 +1158,6 @@ VAR [vV][aA][rR]
...
@@ -1150,7 +1158,6 @@ VAR [vV][aA][rR]
if (inBlock()) endBlock();
if (inBlock()) endBlock();
inParamBlock=TRUE;
inParamBlock=TRUE;
outDoc->startDescList();
outDoc->startDescList();
//outDoc->writeBoldString("Parameters: ");
outDoc->startBold();
outDoc->startBold();
scanString(theTranslator->trParameters()+": ");
scanString(theTranslator->trParameters()+": ");
outDoc->endBold();
outDoc->endBold();
...
@@ -1158,6 +1165,20 @@ VAR [vV][aA][rR]
...
@@ -1158,6 +1165,20 @@ VAR [vV][aA][rR]
}
}
BEGIN(DocParam);
BEGIN(DocParam);
}
}
<DocScan>("\\"|"@")"retval"{BN}+ {
endArgumentList();
if (!inRetValBlock)
{
if (inBlock()) endBlock();
inRetValBlock=TRUE;
outDoc->startDescList();
outDoc->startBold();
scanString(theTranslator->trReturnValues()+": ");
outDoc->endBold();
outDoc->endDescTitle();
}
BEGIN(DocParam);
}
<DocScan>("\\"|"@")"exception"{BN}+ {
<DocScan>("\\"|"@")"exception"{BN}+ {
endArgumentList();
endArgumentList();
if (!inExceptionBlock)
if (!inExceptionBlock)
...
@@ -1174,7 +1195,7 @@ VAR [vV][aA][rR]
...
@@ -1174,7 +1195,7 @@ VAR [vV][aA][rR]
BEGIN(DocException);
BEGIN(DocException);
}
}
<DocScan>"\\capt".*
<DocScan>"\\capt".*
<DocParam>
{SCOPENAME}
{
<DocParam>
[a-z_A-Z0-9:]+
{
outDoc->writeDescItem();
outDoc->writeDescItem();
outDoc->startEmphasis();
outDoc->startEmphasis();
outDoc->docify(yytext);
outDoc->docify(yytext);
...
@@ -1290,6 +1311,52 @@ VAR [vV][aA][rR]
...
@@ -1290,6 +1311,52 @@ VAR [vV][aA][rR]
}
}
BEGIN(DocScan);
BEGIN(DocScan);
}
}
<DocScan>("\\"|"@")"image"{B}+ {
BEGIN(DocImage);
}
<DocImage>[hH][tT][mM][lL] {
BEGIN(DocHtmlImageName);
}
<DocImage>[lL][aA][tT][eE][xX] {
BEGIN(DocLatexImageName);
}
<DocHtmlImageName>{FILE}|{URLMASK} {
outDoc->disableAllBut(OutputGenerator::Html);
outDoc->writeImage(yytext,0,0);
outDoc->enableAll();
BEGIN(DocScan);
}
<DocLatexImageName>{FILE} {
curImageName = yytext;
BEGIN(DocLatexImageWidth);
}
<DocLatexImageWidth>\n { // no width specified
outDoc->disableAllBut(OutputGenerator::Html);
outDoc->writeImage(curImageName,0,0);
outDoc->enableAll();
BEGIN(DocScan);
}
<DocLatexImageWidth>"width"{B}*"="{B}*[0-9\.]+({B}*{ID})? {
outDoc->disableAllBut(OutputGenerator::Latex);
outDoc->writeImage(curImageName,yytext,0);
outDoc->enableAll();
BEGIN(DocScan);
}
<DocLatexImageWidth>"height"{B}*"="{B}*[0-9\.]+({B}*{ID})? {
outDoc->disableAllBut(OutputGenerator::Latex);
outDoc->writeImage(curImageName,0,yytext);
outDoc->enableAll();
BEGIN(DocScan);
}
<DocImage>[a-z_A-Z0-9\.\-]+ {
warn("Warning: %s is an unsupported output format for \\image\n",yytext);
}
<DocImage,DocHtmlImageName,DocLatexImageName>\n {
warn("Warning: invalid \\image command found!\n");
yyLineNr++;
outDoc->enableAll();
BEGIN(DocScan);
}
<DocScan>("\\"|"@")"code"/{BN}+ {
<DocScan>("\\"|"@")"code"/{BN}+ {
outDoc->startCodeFragment();
outDoc->startCodeFragment();
codeBlock.resize(0);
codeBlock.resize(0);
...
@@ -1697,9 +1764,6 @@ VAR [vV][aA][rR]
...
@@ -1697,9 +1764,6 @@ VAR [vV][aA][rR]
current->argList->clear();
current->argList->clear();
lineCount() ;
lineCount() ;
}
}
/*
<FindMembers>"inline"
*/
<FindMembers>{BN}+ {
<FindMembers>{BN}+ {
lineCount();
lineCount();
}
}
...
@@ -1715,7 +1779,9 @@ VAR [vV][aA][rR]
...
@@ -1715,7 +1779,9 @@ VAR [vV][aA][rR]
current->virt = Virtual;
current->virt = Virtual;
lineCount();
lineCount();
}
}
<FindMembers>{B}*"inline"{BN}+ { lineCount(); }
<FindMembers>{B}*"inline"{BN}+ { current->inLine = TRUE;
lineCount();
}
<FindMembers>{B}*"typename"{BN}+ { lineCount(); }
<FindMembers>{B}*"typename"{BN}+ { lineCount(); }
<FindMembers>{B}*"namespace"{BN}+ {
<FindMembers>{B}*"namespace"{BN}+ {
isTypedef=FALSE;
isTypedef=FALSE;
...
@@ -2177,7 +2243,8 @@ VAR [vV][aA][rR]
...
@@ -2177,7 +2243,8 @@ VAR [vV][aA][rR]
else
else
{
{
QCString &cn = current->name;
QCString &cn = current->name;
QCString rn = stripAnnonymousScope(current_root->name);
//QCString rn = stripAnnonymousScope(current_root->name);
QCString rn = current_root->name.copy();
//printf("cn=`%s' rn=`%s'\n",cn.data(),rn.data());
//printf("cn=`%s' rn=`%s'\n",cn.data(),rn.data());
if (!cn.isEmpty() && !rn.isEmpty() &&
if (!cn.isEmpty() && !rn.isEmpty() &&
(current_root->section & Entry::SCOPE_MASK))
(current_root->section & Entry::SCOPE_MASK))
...
@@ -2202,8 +2269,10 @@ VAR [vV][aA][rR]
...
@@ -2202,8 +2269,10 @@ VAR [vV][aA][rR]
//printf("adding `%s' `%s' `%s' brief=%s\n",current->type.data(),current->name.data(),current->args.data(),current->brief.data());
//printf("adding `%s' `%s' `%s' brief=%s\n",current->type.data(),current->name.data(),current->args.data(),current->brief.data());
current_root->addSubEntry( current ) ;
current_root->addSubEntry( current ) ;
current = new Entry(*current);
current = new Entry(*current);
if (current->section == Entry::NAMESPACE_SEC)
if (current->section==Entry::NAMESPACE_SEC ||
{ // a namespace ends with a closing bracket
current->section==Entry::INTERFACE_SEC
)
{ // namespaces and interfaces ends with a closing bracket without semicolon
current->reset();
current->reset();
current->protection = protection ;
current->protection = protection ;
current->sig = sig;
current->sig = sig;
...
@@ -2254,7 +2323,33 @@ VAR [vV][aA][rR]
...
@@ -2254,7 +2323,33 @@ VAR [vV][aA][rR]
msType = yytext; msType=msType.left(i);
msType = yytext; msType=msType.left(i);
}
}
<MemberSpec>[,;] {
<MemberSpec>[,;] {
if (msName.length()>0)
if (msName.isEmpty() && !current->name.isEmpty())
/* && (current->section & Entry::COMPOUND_MASK)) */
{
// see if the compound does not have a name or is inside another
// annonymous compound. If so we insert a
// special `annonymous' variable.
Entry *p=current_root;
while (p)
{
// only look for class scopes, not namespace scopes
if (p->section & Entry::COMPOUND_MASK)
{
//printf("Trying scope `%s'\n",p->name.data());
int i=p->name.findRev("::");
int pi = (i==-1) ? 0 : i+2;
if (p->name.at(pi)=='@')
{
// annonymous compound inside -> insert dummy variable name
//printf("Adding annonymous variable for scope %s\n",p->name.data());
msName.sprintf("@%d",anonCount++);
break;
}
}
p=p->parent;
}
}
if (!msName.isEmpty())
{
{
Entry *varEntry=new Entry;
Entry *varEntry=new Entry;
varEntry->protection = current->protection ;
varEntry->protection = current->protection ;
...
@@ -2518,6 +2613,11 @@ VAR [vV][aA][rR]
...
@@ -2518,6 +2613,11 @@ VAR [vV][aA][rR]
lineCount() ;
lineCount() ;
BEGIN( ExcpRound ) ;
BEGIN( ExcpRound ) ;
}
}
<FuncQual>{BN}*"raises"{BN}*"(" {
current->exception = " raises(" ;
lineCount() ;
BEGIN( ExcpRound ) ;
}
<ExcpRound>"(" { current->exception += *yytext ;
<ExcpRound>"(" { current->exception += *yytext ;
++bracketCount ;
++bracketCount ;
}
}
...
@@ -2588,7 +2688,8 @@ VAR [vV][aA][rR]
...
@@ -2588,7 +2688,8 @@ VAR [vV][aA][rR]
{
{
//printf("Scanner.l: prototype? type=`%s' name=`%s' args=`%s'\n",current->type.data(),current->name.data(),current->args.data());
//printf("Scanner.l: prototype? type=`%s' name=`%s' args=`%s'\n",current->type.data(),current->name.data(),current->args.data());
QRegExp re("([^)]*)");
QRegExp re("([^)]*)");
if (!current->type.isNull() && current->type.find(re,0)!=-1)
if (!current->type.isNull() &&
(current->type.find(re,0)!=-1 || current->type.left(8)=="typedef "))
{
{
//printf("Scanner.l: found function variable!\n");
//printf("Scanner.l: found function variable!\n");
current->section = Entry::VARIABLE_SEC;
current->section = Entry::VARIABLE_SEC;
...
@@ -2600,9 +2701,8 @@ VAR [vV][aA][rR]
...
@@ -2600,9 +2701,8 @@ VAR [vV][aA][rR]
current->proto = TRUE;
current->proto = TRUE;
}
}
}
}
//printf("Adding entry `%s' groupId=%d groupHeader=`%s'\n",
//printf("Adding entry `%s' inLine`%d'\n",
// current->name.data(),current->mGrpId,current->mGrpId!=-1 ?
// current->name.data(),current->inLine);
// memberGroupDict[current->mGrpId]->header().data() : "");
previous = current;
previous = current;
current_root->addSubEntry(current);
current_root->addSubEntry(current);
current = new Entry ;
current = new Entry ;
...
@@ -2615,6 +2715,8 @@ VAR [vV][aA][rR]
...
@@ -2615,6 +2715,8 @@ VAR [vV][aA][rR]
lastCurlyContext = FindMembers;
lastCurlyContext = FindMembers;
if( *yytext == '{' )
if( *yytext == '{' )
{
{
if (current_root->section & Entry::COMPOUND_MASK)
previous->inLine = TRUE;
addToBody(yytext);
addToBody(yytext);
BEGIN( SkipCurly ) ;
BEGIN( SkipCurly ) ;
}
}
...
@@ -2779,7 +2881,7 @@ VAR [vV][aA][rR]
...
@@ -2779,7 +2881,7 @@ VAR [vV][aA][rR]
baseProt=Private;
baseProt=Private;
baseVirt=Normal;
baseVirt=Normal;
baseName.resize(0);
baseName.resize(0);
BEGIN( Bases ) ;
BEGIN( Bases
Prot
) ;
}
}
<ClassVar>[;=*&] {
<ClassVar>[;=*&] {
unput(*yytext);
unput(*yytext);
...
@@ -2792,17 +2894,25 @@ VAR [vV][aA][rR]
...
@@ -2792,17 +2894,25 @@ VAR [vV][aA][rR]
current->name.sprintf("@%d",anonCount++);
current->name.sprintf("@%d",anonCount++);
BEGIN( Curly ) ;
BEGIN( Curly ) ;
}
}
<Bases>"virtual" { baseVirt = Virtual; }
<BasesProt>"virtual" { baseVirt = Virtual; }
<Bases>"public" { baseProt = Public; }
<BasesProt>"public" { baseProt = Public; }
<Bases>"protected" { baseProt = Protected; }
<BasesProt>"protected" { baseProt = Protected; }
<Bases>"private" { baseProt = Private; }
<BasesProt>"private" { baseProt = Private; }
<Bases>({ID}{BN}*"::"{BN}*)*{ID} {
<BasesProt>{BN} {}
<BasesProt>. { unput(*yytext); BEGIN(Bases); }
<Bases>("::")*{BN}*({ID}{BN}*"::"{BN}*)*{ID} {
//current->extends->append(
//current->extends->append(
// new BaseInfo(yytext,baseProt,baseVirt)
// new BaseInfo(yytext,baseProt,baseVirt)
//) ;
//) ;
if (*yytext != ':')
baseName += yytext;
baseName += yytext;
current->args += ' ' ;
else
current->args += yytext ;
baseName += (yytext+2);
current->args += ' ';
if (*yytext != ':')
current->args += yytext;
else
current->args += (yytext+2);
}
}
<ClassVar>"<" { current->name += *yytext;
<ClassVar>"<" { current->name += *yytext;
sharpCount=1;
sharpCount=1;
...
@@ -2845,6 +2955,7 @@ VAR [vV][aA][rR]
...
@@ -2845,6 +2955,7 @@ VAR [vV][aA][rR]
baseProt=Private;
baseProt=Private;
baseVirt=Normal;
baseVirt=Normal;
baseName.resize(0);
baseName.resize(0);
BEGIN(BasesProt);
}
}
<Bases>{B}*"{"{B}* { current->fileName = yyFileName ;
<Bases>{B}*"{"{B}* { current->fileName = yyFileName ;
current->startLine = yyLineNr ;
current->startLine = yyLineNr ;
...
@@ -2940,6 +3051,10 @@ VAR [vV][aA][rR]
...
@@ -2940,6 +3051,10 @@ VAR [vV][aA][rR]
lastBriefContext=Doc;
lastBriefContext=Doc;
BEGIN( ClassDocBrief );
BEGIN( ClassDocBrief );
}
}
<JavaDoc>"\\brief"{B}+ {
lastBriefContext=tmpDocType;
BEGIN( ClassDocBrief );
}
<JavaDoc>^(({B}*"*"+)?){BL} {
<JavaDoc>^(({B}*"*"+)?){BL} {
lineCount();
lineCount();
if (!current->brief.stripWhiteSpace().isEmpty())
if (!current->brief.stripWhiteSpace().isEmpty())
...
@@ -3061,6 +3176,12 @@ VAR [vV][aA][rR]
...
@@ -3061,6 +3176,12 @@ VAR [vV][aA][rR]
current->startLine = yyLineNr;
current->startLine = yyLineNr;
BEGIN( PageDocArg1 );
BEGIN( PageDocArg1 );
}
}
<Doc,JavaDoc>{B}*("\\"|"@")"mainpage"{B}* {
current->section = Entry::MAINPAGEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( PageDocArg2 );
}
<Doc,JavaDoc>{B}*("\\"|"@")"file"{B}* {
<Doc,JavaDoc>{B}*("\\"|"@")"file"{B}* {
current->section = Entry::FILEDOC_SEC;
current->section = Entry::FILEDOC_SEC;
current->fileName = yyFileName;
current->fileName = yyFileName;
...
@@ -3150,8 +3271,6 @@ VAR [vV][aA][rR]
...
@@ -3150,8 +3271,6 @@ VAR [vV][aA][rR]
newDocState();
newDocState();
}
}
<FileDocArg1>"\n" {
<FileDocArg1>"\n" {
//warn("Warning: missing argument after "
// "\\file at line %d of %s.\n",yyLineNr,yyFileName);
current->name = yyFileName;
current->name = yyFileName;
yyLineNr++;
yyLineNr++;
newDocState();
newDocState();
...
@@ -3430,10 +3549,11 @@ VAR [vV][aA][rR]
...
@@ -3430,10 +3549,11 @@ VAR [vV][aA][rR]
current->brief=current->brief.stripWhiteSpace();
current->brief=current->brief.stripWhiteSpace();
BEGIN( lastBriefContext );
BEGIN( lastBriefContext );
}
}
<ClassDocBrief>{BS}/("\\"|"@")"image" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"author" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"author" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"internal" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"internal" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"version" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"version" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/
"\\date"
{ BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/
("\\"|"@")"date"
{ BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"param" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"param" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"exception" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"exception" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"return" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"return" { BEGIN( lastBriefContext ); }
...
@@ -3529,6 +3649,7 @@ VAR [vV][aA][rR]
...
@@ -3529,6 +3649,7 @@ VAR [vV][aA][rR]
current->name = current->name.stripWhiteSpace();
current->name = current->name.stripWhiteSpace();
newDocState();
newDocState();
}
}
<Doc>[a-z_A-Z0-9]+ { current->doc += yytext; }
<Doc>. { current->doc += *yytext; }
<Doc>. { current->doc += *yytext; }
<DefLineDoc,LineDoc>. { current->brief += *yytext; }
<DefLineDoc,LineDoc>. { current->brief += *yytext; }
<Doc>\n { yyLineNr++; current->doc += *yytext; }
<Doc>\n { yyLineNr++; current->doc += *yytext; }
...
@@ -3564,6 +3685,12 @@ VAR [vV][aA][rR]
...
@@ -3564,6 +3685,12 @@ VAR [vV][aA][rR]
BEGIN(lastAfterDocContext);
BEGIN(lastAfterDocContext);
}
}
<AfterDocBrief>"."/{BN} { BEGIN(AfterDoc); }
<AfterDocBrief>"."/{BN} { BEGIN(AfterDoc); }
<LineDoc,AfterDocBrief,AfterDocLine>("\\"|"@")"internal" {
current->brief+="\\internal";
}
<Doc,AfterDoc>("\\"|"@")"internal" {
current->doc+="\\internal";
}
<AfterDoc>("\\"|"@")"brief" { BEGIN(AfterDocBrief); }
<AfterDoc>("\\"|"@")"brief" { BEGIN(AfterDocBrief); }
<AfterDoc>"/*"|"//" { current->doc+=yytext; }
<AfterDoc>"/*"|"//" { current->doc+=yytext; }
<AfterDoc>^{B}*"*"+/[^/]
<AfterDoc>^{B}*"*"+/[^/]
...
...
src/section.h
View file @
d4bdeb54
...
@@ -44,6 +44,7 @@ class SectionDict : public QDict<SectionInfo>
...
@@ -44,6 +44,7 @@ class SectionDict : public QDict<SectionInfo>
{
{
public
:
public
:
SectionDict
(
int
size
)
:
QDict
<
SectionInfo
>
(
size
)
{}
SectionDict
(
int
size
)
:
QDict
<
SectionInfo
>
(
size
)
{}
~
SectionDict
()
{}
};
};
#endif
#endif
src/tag.l
View file @
d4bdeb54
...
@@ -63,7 +63,7 @@ static void addClass(const char *name,const char *fileName)
...
@@ -63,7 +63,7 @@ static void addClass(const char *name,const char *fileName)
static void addFile(const char *name)
static void addFile(const char *name)
{
{
//printf("adding file %s
\n",name
);
//printf("adding file %s
tagName=`%s'\n",name,tagName.data()
);
fd = new FileDef(0,name,tagName);
fd = new FileDef(0,name,tagName);
FileName *mn;
FileName *mn;
if ((mn=inputNameDict[name]))
if ((mn=inputNameDict[name]))
...
...
src/translator.h
View file @
d4bdeb54
...
@@ -687,7 +687,7 @@ class Translator
...
@@ -687,7 +687,7 @@ class Translator
case
ClassDef
:
:
Union
:
result
+=
"union"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"union"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"interface"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"interface"
;
break
;
}
}
result
+=
"was generated from the following file"
;
result
+=
"
was generated from the following file"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"s:"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"s:"
;
return
result
;
return
result
;
}
}
...
@@ -696,9 +696,26 @@ class Translator
...
@@ -696,9 +696,26 @@ class Translator
* list.
* list.
*/
*/
virtual
QCString
trAlphabeticalList
()
virtual
QCString
trAlphabeticalList
()
{
{
return
"Alphabetical List"
;
}
return
"Alphabetical List"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
//////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */
virtual
QCString
trReturnValues
()
{
return
"Return values"
;
}
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual
QCString
trMainPage
()
{
return
"Main Page"
;
}
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual
QCString
trPageAbbreviation
()
{
return
"p."
;
}
};
};
...
...
src/translator_es.h
View file @
d4bdeb54
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
/**
/**
* translator_es.h modifie
f
by Francisco Oltra
* translator_es.h modifie
d
by Francisco Oltra
* Some notes:
* Some notes:
* - Computer related use of the spanish language differs from
* - Computer related use of the spanish language differs from
* country to country, so some words might not sound so good
* country to country, so some words might not sound so good
...
...
src/translator_fr.h
View file @
d4bdeb54
...
@@ -24,89 +24,138 @@
...
@@ -24,89 +24,138 @@
class
TranslatorFrench
:
public
Translator
class
TranslatorFrench
:
public
Translator
{
{
public
:
public
:
/*! returns the name of the package that is included by LaTeX */
QCString
latexBabelPackage
()
QCString
latexBabelPackage
()
{
return
"french"
;
}
{
return
"french"
;
}
QCString
trInherits
()
{
return
"Hérite de"
;
}
/*! used in the compound documentation before a list of related functions. */
QCString
trAnd
()
{
return
"et"
;
}
QCString
trInheritedBy
()
{
return
"Dérivée par"
;
}
QCString
trRelatedFunctions
()
QCString
trRelatedFunctions
()
{
return
"Fonctions associées"
;
}
{
return
"Fonctions associées"
;
}
/*! subscript for the related functions. */
QCString
trRelatedSubscript
()
QCString
trRelatedSubscript
()
{
return
"(Noter que ces fonctions ne sont pas des méthodes de la classe)"
;
}
{
return
"(Noter que ces fonctions ne sont pas des méthodes de la classe)"
;
}
/*! header that is put before the detailed description of files, classes and namespaces. */
QCString
trDetailedDescription
()
QCString
trDetailedDescription
()
{
return
"Description détaillée"
;
}
{
return
"Description détaillée"
;
}
/*! header that is put before the list of typedefs. */
QCString
trMemberTypedefDocumentation
()
QCString
trMemberTypedefDocumentation
()
{
return
"Documentation des types imbriqués"
;
}
{
return
"Documentation des types imbriqués"
;
}
/*! header that is put before the list of enumerations. */
QCString
trMemberEnumerationDocumentation
()
QCString
trMemberEnumerationDocumentation
()
{
return
"Documentation des énumérations imbriqués"
;
}
{
return
"Documentation des énumérations imbriqués"
;
}
/*! header that is put before the list of member functions. */
QCString
trMemberFunctionDocumentation
()
QCString
trMemberFunctionDocumentation
()
{
return
"Documentation des méthodes"
;
}
{
return
"Documentation des méthodes"
;
}
/*! header that is put before the list of member attributes. */
QCString
trMemberDataDocumentation
()
QCString
trMemberDataDocumentation
()
{
return
"Documentation des données imbriqués"
;
}
{
return
"Documentation des données imbriqués"
;
}
QCString
trGeneratedFrom
(
const
char
*
s
,
bool
single
)
{
/*! this is the text of a link put after brief descriptions. */
QCString
result
=
(
QCString
)
"La documentation pour cette"
+
s
+
" a été générée à partir "
;
if
(
single
)
result
+=
"du fichier suivant:"
;
else
result
+=
"des fichiers suivants:"
;
return
result
;
}
QCString
trMore
()
QCString
trMore
()
{
return
"Plus de détails..."
;
}
{
return
"Plus de détails..."
;
}
QCString
trReference
()
{
return
"Référence"
;
}
/*! put in the class documentation */
QCString
trListOfAllMembers
()
QCString
trListOfAllMembers
()
{
return
"Liste de tous les membres"
;
}
{
return
"Liste de tous les membres"
;
}
/*! used as the title of the "list of all members" page of a class */
QCString
trMemberList
()
QCString
trMemberList
()
{
return
"Liste des membres"
;
}
{
return
"Liste des membres"
;
}
/*! this is the first part of a sentence that is followed by a class name */
QCString
trThisIsTheListOfAllMembers
()
QCString
trThisIsTheListOfAllMembers
()
{
return
"Ceci est la liste complète des membres de"
;
}
{
return
"Ceci est la liste complète des membres de"
;
}
/*! this is the remainder of the sentence after the class name */
QCString
trIncludingInheritedMembers
()
QCString
trIncludingInheritedMembers
()
{
return
"y compris des membres des classes héritées."
;
}
{
return
"y compris des membres des classes héritées."
;
}
/*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name.
*/
QCString
trGeneratedAutomatically
(
const
char
*
s
)
QCString
trGeneratedAutomatically
(
const
char
*
s
)
{
QCString
result
=
"Généré automatiquement par Doxygen"
;
{
QCString
result
=
"Généré automatiquement par Doxygen"
;
if
(
s
)
result
+=
(
QCString
)
" pour "
+
s
;
if
(
s
)
result
+=
(
QCString
)
" pour "
+
s
;
result
+=
" à partir du code source."
;
result
+=
" à partir du code source."
;
return
result
;
return
result
;
}
}
/*! put after an enum name in the list of all members */
QCString
trEnumName
()
QCString
trEnumName
()
{
return
"énumération"
;
}
{
return
"énumération"
;
}
/*! put after an enum value in the list of all members */
QCString
trEnumValue
()
QCString
trEnumValue
()
{
return
"élément d'une énumération"
;
}
{
return
"élément d'une énumération"
;
}
/*! put after an undocumented member in the list of all members */
QCString
trDefinedIn
()
QCString
trDefinedIn
()
{
return
"défini dans"
;
}
{
return
"défini dans"
;
}
/*! put as in introduction in the verbatim header file of a class.
* parameter f is the name of the include file.
*/
QCString
trIncludeFile
()
QCString
trIncludeFile
()
{
return
"Fichier inclu"
;
}
{
return
"Fichier inclu"
;
}
QCString
trVerbatimText
(
const
char
*
f
)
QCString
trVerbatimText
(
const
char
*
f
)
{
return
(
QCString
)
"Ce texte provient du fichier inclu "
+
f
+
"."
;
}
{
return
(
QCString
)
"Ce texte provient du fichier inclu "
+
f
+
"."
;
}
// quick reference sections
/*! This is put above each page as a link to the list of all groups of
* compounds or files (see the \group command).
*/
QCString
trModules
()
QCString
trModules
()
{
return
"Modules"
;
}
{
return
"Modules"
;
}
/*! This is put above each page as a link to the class hierarchy */
QCString
trClassHierarchy
()
QCString
trClassHierarchy
()
{
return
"Hiérarchie des classes"
;
}
{
return
"Hiérarchie des classes"
;
}
/*! This is put above each page as a link to the list of annotated classes */
QCString
trCompoundList
()
QCString
trCompoundList
()
{
return
"Liste des composants"
;
}
{
return
"Liste des composants"
;
/*! This is put above each page as a link to the list of documented files */
}
QCString
trFileList
()
QCString
trFileList
()
{
return
"Liste des fichiers"
;
}
{
return
"Liste des fichiers"
;
}
/*! This is put above each page as a link to the list of all verbatim headers */
QCString
trHeaderFiles
()
QCString
trHeaderFiles
()
{
return
"Fichiers d'entête"
;
}
{
return
"Fichiers d'entête"
;
}
/*! This is put above each page as a link to all members of compounds. */
QCString
trCompoundMembers
()
QCString
trCompoundMembers
()
{
return
"Composants"
;
}
{
return
"Composants"
;
}
/*! This is put above each page as a link to all members of files. */
QCString
trFileMembers
()
QCString
trFileMembers
()
{
return
"Déclarations"
;
}
{
return
"Déclarations"
;
}
/*! This is put above each page as a link to all related pages. */
QCString
trRelatedPages
()
QCString
trRelatedPages
()
{
return
"Pages associées"
;
}
{
return
"Pages associées"
;
}
/*! This is put above each page as a link to all examples. */
QCString
trExamples
()
QCString
trExamples
()
{
return
"Exemples"
;
}
{
return
"Exemples"
;
}
/*! This is put above each page as a link to the search engine. */
QCString
trSearch
()
QCString
trSearch
()
{
return
"Recherche"
;
}
{
return
"Recherche"
;
}
/*! This is an introduction to the class hierarchy. */
QCString
trClassHierarchyDescription
()
QCString
trClassHierarchyDescription
()
{
return
"Cette liste d'héritage est, autant que possible, "
{
return
"Cette liste d'héritage est, autant que possible, "
"classée par ordre alphabétique"
;
}
"classée par ordre alphabétique"
;
}
/*! This is an introduction to the list with all files. */
QCString
trFileListDescription
(
bool
extractAll
)
QCString
trFileListDescription
(
bool
extractAll
)
{
{
QCString
result
=
"Liste de tous les fichiers "
;
QCString
result
=
"Liste de tous les fichiers "
;
...
@@ -114,10 +163,14 @@ class TranslatorFrench : public Translator
...
@@ -114,10 +163,14 @@ class TranslatorFrench : public Translator
result
+=
"avec une brève description :"
;
result
+=
"avec une brève description :"
;
return
result
;
return
result
;
}
}
/*! This is an introduction to the annotated compound list. */
QCString
trCompoundListDescription
()
QCString
trCompoundListDescription
()
{
return
"Liste des classes, des strutures et des unions "
{
return
"Liste des classes, des strutures et des unions "
"avec une brève description :"
;
"avec une brève description :"
;
}
}
/*! This is an introduction to the page with all class members. */
QCString
trCompoundMembersDescription
(
bool
extractAll
)
QCString
trCompoundMembersDescription
(
bool
extractAll
)
{
{
QCString
result
=
"Liste de tous les membres de classe "
;
QCString
result
=
"Liste de tous les membres de classe "
;
...
@@ -127,6 +180,8 @@ class TranslatorFrench : public Translator
...
@@ -127,6 +180,8 @@ class TranslatorFrench : public Translator
else
result
+=
"les classes auxquelles ils appartiennent :"
;
else
result
+=
"les classes auxquelles ils appartiennent :"
;
return
result
;
return
result
;
}
}
/*! This is an introduction to the page with all file members. */
QCString
trFileMembersDescription
(
bool
extractAll
)
QCString
trFileMembersDescription
(
bool
extractAll
)
{
{
QCString
result
=
"Liste de toutes les déclarations"
;
QCString
result
=
"Liste de toutes les déclarations"
;
...
@@ -137,79 +192,198 @@ class TranslatorFrench : public Translator
...
@@ -137,79 +192,198 @@ class TranslatorFrench : public Translator
else
result
+=
"les fichiers dans lesquels elles sont définies :"
;
else
result
+=
"les fichiers dans lesquels elles sont définies :"
;
return
result
;
return
result
;
}
}
/*! This is an introduction to the page with the list of all header files. */
QCString
trHeaderFilesDescription
()
QCString
trHeaderFilesDescription
()
{
return
"Liste de tous les fichiers d'entête constituant "
{
return
"Liste de tous les fichiers d'entête constituant "
"l'interface de programmation :"
;
}
"l'interface de programmation :"
;
}
/*! This is an introduction to the page with the list of all examples */
QCString
trExamplesDescription
()
QCString
trExamplesDescription
()
{
return
"Liste de tous les exemples :"
;
}
{
return
"Liste de tous les exemples :"
;
}
/*! This is an introduction to the page with the list of related pages */
QCString
trRelatedPagesDescription
()
QCString
trRelatedPagesDescription
()
{
return
"Liste de toutes les pages de documentation associées :"
;
}
{
return
"Liste de toutes les pages de documentation associées :"
;
}
/*! This is an introduction to the page with the list of class/file groups */
QCString
trModulesDescription
()
QCString
trModulesDescription
()
{
return
"Liste de tous les modules"
;
}
{
return
"Liste de tous les modules"
;
}
/*! This sentences is used in the annotated class/file lists if no brief
* description is given.
*/
QCString
trNoDescriptionAvailable
()
QCString
trNoDescriptionAvailable
()
{
return
"Aucune description n'est disponible"
;
}
{
return
"Aucune description n'est disponible"
;
}
// index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */
QCString
trDocumentation
()
QCString
trDocumentation
()
{
return
"Documentation"
;
}
{
return
"Documentation"
;
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all groups.
*/
QCString
trModuleIndex
()
QCString
trModuleIndex
()
{
return
"Index des modules"
;
}
{
return
"Index des modules"
;
}
/*! This is used in LaTeX as the title of the chapter with the
* class hierarchy.
*/
QCString
trHierarchicalIndex
()
QCString
trHierarchicalIndex
()
{
return
"Index hiérarchique"
;
}
{
return
"Index hiérarchique"
;
}
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index.
*/
QCString
trCompoundIndex
()
QCString
trCompoundIndex
()
{
return
"Index des composants"
;
}
{
return
"Index des composants"
;
}
/*! This is used in LaTeX as the title of the chapter with the
* list of all files.
*/
QCString
trFileIndex
()
QCString
trFileIndex
()
{
return
"Index des fichiers"
;
}
{
return
"Index des fichiers"
;
}
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all groups.
*/
QCString
trModuleDocumentation
()
QCString
trModuleDocumentation
()
{
return
"Documentation du module"
;
}
{
return
"Documentation du module"
;
}
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions.
*/
QCString
trClassDocumentation
()
QCString
trClassDocumentation
()
{
return
"Documentation de la classe"
;
}
{
return
"Documentation de la classe"
;
}
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all files.
*/
QCString
trFileDocumentation
()
QCString
trFileDocumentation
()
{
return
"Documentation du fichier"
;
}
{
return
"Documentation du fichier"
;
}
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples.
*/
QCString
trExampleDocumentation
()
QCString
trExampleDocumentation
()
{
return
"Documentation de l'exemple"
;
}
{
return
"Documentation de l'exemple"
;
}
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages.
*/
QCString
trPageDocumentation
()
QCString
trPageDocumentation
()
{
return
"Documentation de la page"
;
}
{
return
"Documentation de la page"
;
}
/*! This is used in LaTeX as the title of the document */
QCString
trReferenceManual
()
QCString
trReferenceManual
()
{
return
"Manuel de référence"
;
}
{
return
"Manuel de référence"
;
}
/*! This is used in the documentation of a file as a header before the
* list of defines
*/
QCString
trDefines
()
QCString
trDefines
()
{
return
"Définitions des macros"
;
}
{
return
"Définitions des macros"
;
}
/*! This is used in the documentation of a file as a header before the
* list of function prototypes
*/
QCString
trFuncProtos
()
QCString
trFuncProtos
()
{
return
"Prototypes des fonctions"
;
}
{
return
"Prototypes des fonctions"
;
}
/*! This is used in the documentation of a file as a header before the
* list of typedefs
*/
QCString
trTypedefs
()
QCString
trTypedefs
()
{
return
"Définitions des types"
;
}
{
return
"Définitions des types"
;
}
/*! This is used in the documentation of a file as a header before the
* list of enumerations
*/
QCString
trEnumerations
()
QCString
trEnumerations
()
{
return
"Enumérations"
;
}
{
return
"Enumérations"
;
}
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
*/
QCString
trFunctions
()
QCString
trFunctions
()
{
return
"Fonctions"
;
}
{
return
"Fonctions"
;
}
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
QCString
trVariables
()
QCString
trVariables
()
{
return
"Variables"
;
}
{
return
"Variables"
;
}
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
QCString
trEnumerationValues
()
QCString
trEnumerationValues
()
{
return
"Eléments énumérés"
;
}
{
return
"Eléments énumérés"
;
}
QCString
trReimplementedFrom
()
{
return
"Redéfini à partir de"
;
}
/*! This is used in man pages as the author section. */
QCString
trReimplementedIn
()
{
return
"Redéfini dans"
;
}
QCString
trAuthor
()
QCString
trAuthor
()
{
return
"Auteur"
;
}
{
return
"Auteur"
;
}
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
*/
QCString
trDefineDocumentation
()
QCString
trDefineDocumentation
()
{
return
"Documentation de la macro"
;
}
{
return
"Documentation de la macro"
;
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes
*/
QCString
trFunctionPrototypeDocumentation
()
QCString
trFunctionPrototypeDocumentation
()
{
return
"Documentation du prototype de la fonction"
;
}
{
return
"Documentation du prototype de la fonction"
;
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs
*/
QCString
trTypedefDocumentation
()
QCString
trTypedefDocumentation
()
{
return
"Documentation du type"
;
}
{
return
"Documentation du type"
;
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types
*/
QCString
trEnumerationTypeDocumentation
()
QCString
trEnumerationTypeDocumentation
()
{
return
"Documentation du type de l'énumeration"
;
}
{
return
"Documentation du type de l'énumeration"
;
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
QCString
trEnumerationValueDocumentation
()
QCString
trEnumerationValueDocumentation
()
{
return
"Documentation de l'élément de l'énumeration"
;
}
{
return
"Documentation de l'élément de l'énumeration"
;
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
QCString
trFunctionDocumentation
()
QCString
trFunctionDocumentation
()
{
return
"Documentation de la fonction"
;
}
{
return
"Documentation de la fonction"
;
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables
*/
QCString
trVariableDocumentation
()
QCString
trVariableDocumentation
()
{
return
"Documentation de la variable"
;
}
{
return
"Documentation de la variable"
;
}
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds
*/
QCString
trCompounds
()
QCString
trCompounds
()
{
return
"Composants"
;
}
{
return
"Composants"
;
}
/*! This is used in the documentation of a group before the list of
* links to documented files
*/
QCString
trFiles
()
QCString
trFiles
()
{
return
"Fichiers"
;
}
{
return
"Fichiers"
;
}
/*! This is used in the standard footer of each page and indicates when
* the page was generated
*/
QCString
trGeneratedAt
(
const
char
*
date
,
const
char
*
projName
)
QCString
trGeneratedAt
(
const
char
*
date
,
const
char
*
projName
)
{
{
QCString
result
=
(
QCString
)
"Généré le "
+
date
;
QCString
result
=
(
QCString
)
"Généré le "
+
date
;
...
@@ -217,47 +391,75 @@ class TranslatorFrench : public Translator
...
@@ -217,47 +391,75 @@ class TranslatorFrench : public Translator
result
+=
(
QCString
)
" par "
;
result
+=
(
QCString
)
" par "
;
return
result
;
return
result
;
}
}
/*! This is part of the sentence used in the standard footer of each page.
*/
QCString
trWrittenBy
()
QCString
trWrittenBy
()
{
{
return
"écrit par"
;
return
"écrit par"
;
}
}
/*! this text is put before a class diagram */
QCString
trClassDiagram
(
const
char
*
clName
)
QCString
trClassDiagram
(
const
char
*
clName
)
{
{
return
(
QCString
)
"Graphe d'héritage de la classe "
+
clName
;
return
(
QCString
)
"Graphe d'héritage de la classe "
+
clName
;
}
}
/*! this text is generated when the \internal command is used. */
QCString
trForInternalUseOnly
()
QCString
trForInternalUseOnly
()
{
return
"A usage interne uniquement."
;
}
{
return
"A usage interne uniquement."
;
}
/*! this text is generated when the \reimp command is used. */
QCString
trReimplementedForInternalReasons
()
QCString
trReimplementedForInternalReasons
()
{
return
"Redéfini pour des raisons internes; "
{
return
"Redéfini pour des raisons internes; "
"l'interface n'est pas modifiée"
;
"l'interface n'est pas modifiée"
;
}
}
/*! this text is generated when the \warning command is used. */
QCString
trWarning
()
QCString
trWarning
()
{
return
"Avertissement"
;
}
{
return
"Avertissement"
;
}
/*! this text is generated when the \bug command is used. */
QCString
trBugsAndLimitations
()
QCString
trBugsAndLimitations
()
{
return
"Bogues et limitations"
;
}
{
return
"Bogues et limitations"
;
}
/*! this text is generated when the \version command is used. */
QCString
trVersion
()
QCString
trVersion
()
{
return
"Version"
;
}
{
return
"Version"
;
}
/*! this text is generated when the \date command is used. */
QCString
trDate
()
QCString
trDate
()
{
return
"Date"
;
}
{
return
"Date"
;
}
/*! this text is generated when the \author command is used. */
QCString
trAuthors
()
QCString
trAuthors
()
{
return
"Auteur(s)"
;
}
{
return
"Auteur(s)"
;
}
/*! this text is generated when the \return command is used. */
QCString
trReturns
()
QCString
trReturns
()
{
return
"Renvoie"
;
}
{
return
"Renvoie"
;
}
/*! this text is generated when the \sa command is used. */
QCString
trSeeAlso
()
QCString
trSeeAlso
()
{
return
"Voir également"
;
}
{
return
"Voir également"
;
}
/*! this text is generated when the \param command is used. */
QCString
trParameters
()
QCString
trParameters
()
{
return
"Paramètres"
;
}
{
return
"Paramètres"
;
}
/*! this text is generated when the \exception command is used. */
QCString
trExceptions
()
QCString
trExceptions
()
{
return
"Exceptions"
;
}
{
return
"Exceptions"
;
}
/*! this text is used in the title page of a LaTeX document. */
QCString
trGeneratedBy
()
QCString
trGeneratedBy
()
{
return
"Généré par"
;
}
{
return
"Généré par"
;
}
// new since 0.49-990307
// new since 0.49-990307
virtual
QCString
trNamespaces
()
{
return
"Namespaces"
;
}
virtual
QCString
trNamespaceList
()
virtual
QCString
trNamespaceList
()
{
return
"Liste des Namespaces"
;
}
{
return
"Liste des Namespaces"
;
}
/*! used as an introduction to the namespace list */
virtual
QCString
trNamespaceListDescription
(
bool
extractAll
)
virtual
QCString
trNamespaceListDescription
(
bool
extractAll
)
{
{
QCString
result
=
"Liste de tous les namespaces "
;
QCString
result
=
"Liste de tous les namespaces "
;
...
@@ -265,13 +467,213 @@ class TranslatorFrench : public Translator
...
@@ -265,13 +467,213 @@ class TranslatorFrench : public Translator
result
+=
"avec une brève description :"
;
result
+=
"avec une brève description :"
;
return
result
;
return
result
;
}
}
/*! used in the class documentation as a header before the list of all
* friends of a class
*/
virtual
QCString
trFriends
()
virtual
QCString
trFriends
()
{
return
"Friends"
;
}
{
return
"Friends"
;
}
// new since 0.49-990405
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990405
//////////////////////////////////////////////////////////////////////////
/*! used in the class documentation as a header before the list of all
* related classes
*/
virtual
QCString
trRelatedFunctionDocumentation
()
virtual
QCString
trRelatedFunctionDocumentation
()
{
return
"Documentation des fonctions amies et associées"
;
}
{
return
"Documentation des fonctions amies et associées"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
//////////////////////////////////////////////////////////////////////////
/*! used as the title of the HTML page of a class/struct/union */
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
{
QCString
result
=
"Référence de "
;
switch
(
compType
)
{
case
ClassDef
:
:
Class
:
result
+=
"la classe "
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
"la structure "
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"l'union "
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"l'interface "
;
break
;
}
result
+=
(
QCString
)
clName
;
return
result
;
}
/*! used as the title of the HTML page of a file */
virtual
QCString
trFileReference
(
const
char
*
fileName
)
{
QCString
result
=
"Référence du fichier "
;
result
+=
fileName
;
return
result
;
}
/*! used as the title of the HTML page of a namespace */
virtual
QCString
trNamespaceReference
(
const
char
*
namespaceName
)
{
QCString
result
=
"Référence du namespace "
;
result
+=
namespaceName
;
return
result
;
}
/*! \mgroup Class sections
* these are for the member sections of a class, struct or union
*/
virtual
QCString
trPublicMembers
()
{
return
"Membres publiques"
;
}
virtual
QCString
trPublicSlots
()
{
return
"Connecteurs publiques"
;
}
virtual
QCString
trSignals
()
{
return
"Signaux"
;
}
virtual
QCString
trStaticPublicMembers
()
{
return
"Membres publiques statiques"
;
}
virtual
QCString
trProtectedMembers
()
{
return
"Membres protégés"
;
}
virtual
QCString
trProtectedSlots
()
{
return
"Connecteurs protégés"
;
}
virtual
QCString
trStaticProtectedMembers
()
{
return
"Membres protégés statiques"
;
}
virtual
QCString
trPrivateMembers
()
{
return
"Membres privés"
;
}
virtual
QCString
trPrivateSlots
()
{
return
"Connecteurs privés"
;
}
virtual
QCString
trStaticPrivateMembers
()
{
return
"Membres privés statiques"
;
}
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
*/
virtual
QCString
trWriteList
(
int
numEntries
)
{
QCString
result
;
int
i
;
// the inherits list contain `numEntries' classes
for
(
i
=
0
;
i
<
numEntries
;
i
++
)
{
// use generateMarker to generate placeholders for the class links!
result
+=
generateMarker
(
i
);
// generate marker for entry i in the list
// (order is left to right)
if
(
i
!=
numEntries
-
1
)
// not the last entry, so we need a separator
{
if
(
i
<
numEntries
-
2
)
// not the fore last entry
result
+=
", "
;
else
// the fore last entry
result
+=
", and "
;
}
}
return
result
;
}
/*! used in class documentation to produce a list of base classes,
* if class diagrams are disabled.
*/
virtual
QCString
trInheritsList
(
int
numEntries
)
{
return
"Est dérivée de "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in class documentation to produce a list of super classes,
* if class diagrams are disabled.
*/
virtual
QCString
trInheritedByList
(
int
numEntries
)
{
return
"Dérivée par "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
* members that are hidden by this one.
*/
virtual
QCString
trReimplementedFromList
(
int
numEntries
)
{
return
"Redéfinie à partir de "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
* all member that overwrite the implementation of this member.
*/
virtual
QCString
trReimplementedInList
(
int
numEntries
)
{
return
"Redéfinie dans "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! This is put above each page as a link to all members of namespaces. */
virtual
QCString
trNamespaceMembers
()
{
return
"Menbres des namespaces"
;
}
/*! This is an introduction to the page with all namespace members */
virtual
QCString
trNamespaceMemberDescription
(
bool
extractAll
)
{
QCString
result
=
"Voici une list de tous les membres de namespace"
;
if
(
!
extractAll
)
result
+=
"documentés "
;
result
+=
" avec liens vers "
;
if
(
extractAll
)
result
+=
"les documentations des namespaces associés :"
;
else
result
+=
"les namespaces auxquels ils appartiennent :"
;
return
result
;
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all namespaces.
*/
virtual
QCString
trNamespaceIndex
()
{
return
"Index des Namespaces"
;
}
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces.
*/
virtual
QCString
trNamespaceDocumentation
()
{
return
"Documentation des Namespaces"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990522
//////////////////////////////////////////////////////////////////////////
/*! This is used in the documentation before the list of all
* namespaces in a file.
*/
virtual
QCString
trNamespaces
()
{
return
"Namespaces"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990728
//////////////////////////////////////////////////////////////////////////
/*! This is put at the bottom of a class documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual
QCString
trGeneratedFromFiles
(
ClassDef
::
CompoundType
compType
,
bool
single
)
{
// here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
QCString
result
=
(
QCString
)
"La documentation associée à cette "
;
switch
(
compType
)
{
case
ClassDef
:
:
Class
:
result
+=
"classe"
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
"structure"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"union"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"interface"
;
break
;
}
result
+=
" a été générée à partir "
;
if
(
single
)
result
+=
" du fichier suivant :"
;
else
result
+=
"des fichiers suivants :"
;
return
result
;
}
/*! This is in the (quick) index as a link to the alphabetical compound
* list.
*/
virtual
QCString
trAlphabeticalList
()
{
return
"Liste par ordre alphabétique"
;
}
};
};
#endif
#endif
src/translator_it.h
View file @
d4bdeb54
...
@@ -6,6 +6,9 @@
...
@@ -6,6 +6,9 @@
*
*
* Initial Italian Translation by Ahmed Aldo Faisal
* Initial Italian Translation by Ahmed Aldo Faisal
* Revised and completed by Alessandro Falappa (June 1999)
* Revised and completed by Alessandro Falappa (June 1999)
* Updates:
* 1999/09/10: corrected some small typos in the "new since 0.49-990425" section
* added the "new since 0.49-990728" section
*
*
* Permission to use, copy, modify, and distribute this software and its
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* documentation under the terms of the GNU General Public License is hereby
...
@@ -293,15 +296,15 @@ class TranslatorItalian : public Translator
...
@@ -293,15 +296,15 @@ class TranslatorItalian : public Translator
QCString
trCompoundReference
(
const
char
*
clName
,
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
)
{
{
QCString
result
=
"Riferimenti per
la
"
;
QCString
result
=
"Riferimenti per "
;
switch
(
compType
)
switch
(
compType
)
{
{
case
ClassDef
:
:
Class
:
result
+=
"
classe
"
;
break
;
case
ClassDef
:
:
Class
:
result
+=
"
la classe
"
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
"
struct
"
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
"
la struct
"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"
union
"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"
la union
"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"
interface
"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"
l'interfaccia
"
;
break
;
}
}
result
+=
" "
+
(
QCString
)
clName
;
result
+=
(
QCString
)
clName
;
return
result
;
return
result
;
}
}
QCString
trFileReference
(
const
char
*
fileName
)
QCString
trFileReference
(
const
char
*
fileName
)
...
@@ -375,6 +378,40 @@ class TranslatorItalian : public Translator
...
@@ -375,6 +378,40 @@ class TranslatorItalian : public Translator
{
return
"Indice dei namespaces"
;
}
{
return
"Indice dei namespaces"
;
}
QCString
trNamespaceDocumentation
()
QCString
trNamespaceDocumentation
()
{
return
"Documentazione dei namespaces"
;
}
{
return
"Documentazione dei namespaces"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990728
//////////////////////////////////////////////////////////////////////////
/*! This is put at the bottom of a class documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual
QCString
trGeneratedFromFiles
(
ClassDef
::
CompoundType
compType
,
bool
single
)
{
// here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
QCString
result
=
(
QCString
)
"La documentazione per questa "
;
switch
(
compType
)
{
case
ClassDef
:
:
Class
:
result
+=
"classe"
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
"struct"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"union"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"interfaccia"
;
break
;
}
result
+=
" stata generata a partire "
;
if
(
single
)
result
+=
"dal seguente file:"
;
else
result
+=
"dai seguenti files:"
;
return
result
;
}
/*! This is in the (quick) index as a link to the alphabetical compound
* list.
*/
virtual
QCString
trAlphabeticalList
()
{
return
"Lista in ordine alfabetico"
;
}
};
};
#endif
#endif
src/translator_nl.h
View file @
d4bdeb54
...
@@ -384,6 +384,55 @@ class TranslatorDutch : public Translator
...
@@ -384,6 +384,55 @@ class TranslatorDutch : public Translator
// This is used in LaTeX as the title of the chapter containing
// This is used in LaTeX as the title of the chapter containing
// the documentation of all namespaces.
// the documentation of all namespaces.
{
return
"Namespace Documentatie"
;
}
{
return
"Namespace Documentatie"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990728
//////////////////////////////////////////////////////////////////////////
/*! This is put at the bottom of a class documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual
QCString
trGeneratedFromFiles
(
ClassDef
::
CompoundType
compType
,
bool
single
)
{
// here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
QCString
result
=
(
QCString
)
"De documentatie voor deze "
;
switch
(
compType
)
{
case
ClassDef
:
:
Class
:
result
+=
"class"
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
"struct"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"union"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"interface"
;
break
;
}
result
+=
" is gegenereerd op grond van de volgende file"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"s:"
;
return
result
;
}
/*! This is in the (quick) index as a link to the alphabetical compound
* list.
*/
virtual
QCString
trAlphabeticalList
()
{
return
"Alphabetical List"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
//////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */
virtual
QCString
trReturnValues
()
{
return
"Retour waarden"
;
}
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual
QCString
trMainPage
()
{
return
"Hoofd Pagina"
;
}
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual
QCString
trPageAbbreviation
()
{
return
"p."
;
}
};
};
#endif
#endif
src/translator_se.h
View file @
d4bdeb54
...
@@ -47,10 +47,15 @@ Uppdateringar.
...
@@ -47,10 +47,15 @@ Uppdateringar.
===================================================================================
===================================================================================
Problem!
Problem!
Namespace och slot: har de
nn hygglig svensk versttning???
Slot:
nn hygglig svensk versttning???
Skicka grna synpunkter.
Skicka grna synpunkter.
===================================================================================
===================================================================================
1999/09/01
* Det verkar som om "namnrymd" r en hyggligt vedertagen svensk versttning
av "namnepace", s jag kr med det frn och med nu.
* "interface" heter numera "grnssnitt"
*/
*/
#ifndef TRANSLATOR_SE_H
#ifndef TRANSLATOR_SE_H
...
@@ -349,13 +354,13 @@ class TranslatorSwedish : public Translator
...
@@ -349,13 +354,13 @@ class TranslatorSwedish : public Translator
// new since 0.49-990307
// new since 0.49-990307
virtual
QCString
trNamespaceList
()
virtual
QCString
trNamespaceList
()
{
return
"Nam
espace
lista"
;
}
{
return
"Nam
nrymd
lista"
;
}
virtual
QCString
trNamespaceListDescription
(
bool
extractAll
)
virtual
QCString
trNamespaceListDescription
(
bool
extractAll
)
{
{
QCString
result
=
"Hr r en lista ver alla "
;
QCString
result
=
"Hr r en lista ver alla "
;
if
(
!
extractAll
)
result
+=
"dokumenterade "
;
if
(
!
extractAll
)
result
+=
"dokumenterade "
;
result
+=
"nam
espaces
med en kort frklaring:"
;
result
+=
"nam
nrymder
med en kort frklaring:"
;
return
result
;
return
result
;
}
}
...
@@ -379,10 +384,10 @@ class TranslatorSwedish : public Translator
...
@@ -379,10 +384,10 @@ class TranslatorSwedish : public Translator
QCString
result
=
(
QCString
)
clName
+
" "
;
QCString
result
=
(
QCString
)
clName
+
" "
;
switch
(
compType
)
switch
(
compType
)
{
{
case
ClassDef
:
:
Class
:
result
+=
"
K
lass"
;
break
;
case
ClassDef
:
:
Class
:
result
+=
"
k
lass"
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
"
S
trukt"
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
"
s
trukt"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"
U
nion"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"
u
nion"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"
Interface
"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"
grnssnitt
"
;
break
;
}
}
result
+=
"referens"
;
result
+=
"referens"
;
return
result
;
return
result
;
...
@@ -398,7 +403,7 @@ class TranslatorSwedish : public Translator
...
@@ -398,7 +403,7 @@ class TranslatorSwedish : public Translator
virtual
QCString
trNamespaceReference
(
const
char
*
namespaceName
)
virtual
QCString
trNamespaceReference
(
const
char
*
namespaceName
)
{
{
QCString
result
=
namespaceName
;
QCString
result
=
namespaceName
;
result
+=
" nam
espace
referens"
;
result
+=
" nam
nrymd
referens"
;
return
result
;
return
result
;
}
}
...
@@ -474,25 +479,65 @@ class TranslatorSwedish : public Translator
...
@@ -474,25 +479,65 @@ class TranslatorSwedish : public Translator
}
}
virtual
QCString
trNamespaceMembers
()
virtual
QCString
trNamespaceMembers
()
{
return
"Nam
espace
medlemmar"
;
}
{
return
"Nam
nrymds
medlemmar"
;
}
virtual
QCString
trNamespaceMemberDescription
(
bool
extractAll
)
virtual
QCString
trNamespaceMemberDescription
(
bool
extractAll
)
{
{
QCString
result
=
"Hr r en lista ver alla "
;
QCString
result
=
"Hr r en lista ver alla "
;
if
(
!
extractAll
)
result
+=
"dokumenterade "
;
if
(
!
extractAll
)
result
+=
"dokumenterade "
;
result
+=
"nam
espace
medlemmar med lnkar till "
;
result
+=
"nam
nrymds
medlemmar med lnkar till "
;
if
(
extractAll
)
if
(
extractAll
)
result
+=
" nam
espace
-dokumentationen fr varje medlem:"
;
result
+=
" nam
nrymd
-dokumentationen fr varje medlem:"
;
else
else
result
+=
"de nam
espaces
de tillhr:"
;
result
+=
"de nam
nrymder
de tillhr:"
;
return
result
;
return
result
;
}
}
virtual
QCString
trNamespaceIndex
()
virtual
QCString
trNamespaceIndex
()
{
return
"Nam
espace
index"
;
}
{
return
"Nam
nrymds
index"
;
}
virtual
QCString
trNamespaceDocumentation
()
virtual
QCString
trNamespaceDocumentation
()
{
return
"Namnrymd-dokumentation"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990522
//////////////////////////////////////////////////////////////////////////
/*! This is used in the documentation before the list of all
* namespaces in a file.
*/
virtual
QCString
trNamespaces
()
{
return
"Namnrymder"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990728
//////////////////////////////////////////////////////////////////////////
/*! This is put at the bottom of a class documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual
QCString
trGeneratedFromFiles
(
ClassDef
::
CompoundType
compType
,
bool
single
)
{
// here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
QCString
result
=
(
QCString
)
"Dokumentationen fr "
;
switch
(
compType
)
{
case
ClassDef
:
:
Class
:
result
+=
"denna klass "
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
"denna strukt "
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"denna union "
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"detta grnssnitt "
;
break
;
}
result
+=
"var genererad frn fljande fil"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"er:"
;
return
result
;
}
{
return
"Namespace-dokumentation"
;
}
/*! This is in the (quick) index as a link to the alphabetical compound
* list.
*/
virtual
QCString
trAlphabeticalList
()
{
return
"Alfabetisk lista"
;
}
};
};
#endif
#endif
src/util.cpp
View file @
d4bdeb54
...
@@ -39,18 +39,52 @@ bool isId(char c)
...
@@ -39,18 +39,52 @@ bool isId(char c)
return
c
==
'_'
||
isalnum
(
c
);
return
c
==
'_'
||
isalnum
(
c
);
}
}
// strip annonymous part of the scope
// strip annonymous left hand side part of the scope
QCString
stripAnnonymousScope
(
const
QCString
&
s
)
//QCString stripAnnonymousScope(const QCString &s)
//{
// QCString result=s;
// int i=0;
// while (!result.isEmpty() && result.at(0)=='@' && (i=result.find("::"))!=-1)
// {
// result=result.right(result.length()-i-2);
// }
// //if (result.at(0)=='@')
// //{
// // result.resize(0);
// //}
// return result;
//}
// strip annonymous left hand side part of the scope
QCString
stripAnnonymousNamespaceScope
(
const
QCString
&
s
)
{
{
QCString
result
=
s
;
int
oi
=
0
,
i
=
0
,
p
=
0
;
int
i
=
0
;
if
(
s
.
isEmpty
())
return
s
;
while
(
!
result
.
isEmpty
()
&&
result
.
at
(
0
)
==
'@'
&&
(
i
=
result
.
find
(
"::"
))
!=-
1
)
while
(
s
.
at
(
p
)
==
'@'
&&
(
i
=
s
.
find
(
"::"
,
p
))
!=-
1
&&
namespaceDict
[
s
.
left
(
i
)]
!=
0
)
{
oi
=
i
;
p
=
i
+
2
;
}
if
(
oi
==
0
)
{
{
result
=
result
.
right
(
result
.
length
()
-
i
-
2
);
//printf("stripAnnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.data());
return
s
;
}
else
{
//printf("stripAnnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.right(s.length()-oi-2).data());
return
s
.
right
(
s
.
length
()
-
oi
-
2
);
}
}
return
result
;
}
}
void
writePageRef
(
OutputList
&
ol
,
const
char
*
cn
,
const
char
*
mn
)
{
bool
htmlOn
=
ol
.
isEnabled
(
OutputGenerator
::
Html
);
bool
manOn
=
ol
.
isEnabled
(
OutputGenerator
::
Man
);
ol
.
startPageRef
();
ol
.
disableAllBut
(
OutputGenerator
::
Latex
);
ol
.
docify
(
theTranslator
->
trPageAbbreviation
());
ol
.
endPageRef
(
cn
,
mn
);
if
(
htmlOn
)
ol
.
enable
(
OutputGenerator
::
Html
);
if
(
manOn
)
ol
.
enable
(
OutputGenerator
::
Man
);
}
QCString
generateMarker
(
int
id
)
QCString
generateMarker
(
int
id
)
{
{
...
@@ -159,8 +193,6 @@ QCString removeRedundantWhiteSpace(const QCString &s)
...
@@ -159,8 +193,6 @@ QCString removeRedundantWhiteSpace(const QCString &s)
return
result
;
return
result
;
}
}
bool
rightScopeMatch
(
const
QCString
&
scope
,
const
QCString
&
name
)
bool
rightScopeMatch
(
const
QCString
&
scope
,
const
QCString
&
name
)
{
{
return
(
name
==
scope
||
// equal
return
(
name
==
scope
||
// equal
...
@@ -244,12 +276,14 @@ void linkifyText(OutputList &ol,const char *scName,const char *name,const char *
...
@@ -244,12 +276,14 @@ void linkifyText(OutputList &ol,const char *scName,const char *name,const char *
}
}
}
while
(
!
found
&&
scopeOffset
>=
0
);
}
while
(
!
found
&&
scopeOffset
>=
0
);
//if (!found) printf("Trying to link %s in %s\n",word.data(),scName);
if
(
!
found
&&
if
(
!
found
&&
getDefs
(
scName
,
word
,
0
,
md
,
cd
,
fd
,
nd
)
&&
getDefs
(
scName
,
word
,
0
,
md
,
cd
,
fd
,
nd
)
&&
(
md
->
isTypedef
()
||
md
->
isEnumerate
()
)
&&
(
md
->
isTypedef
()
||
md
->
isEnumerate
()
||
md
->
isReference
())
&&
md
->
isLinkable
()
md
->
isLinkable
()
)
)
{
{
//printf("Found ref\n");
Definition
*
d
=
0
;
Definition
*
d
=
0
;
if
(
cd
)
d
=
cd
;
else
if
(
nd
)
d
=
nd
;
else
d
=
fd
;
if
(
cd
)
d
=
cd
;
else
if
(
nd
)
d
=
nd
;
else
d
=
fd
;
if
(
d
&&
d
->
isLinkable
())
if
(
d
&&
d
->
isLinkable
())
...
@@ -369,17 +403,17 @@ QCString tempArgListToString(ArgumentList *al)
...
@@ -369,17 +403,17 @@ QCString tempArgListToString(ArgumentList *al)
static
bool
manIsEnabled
;
static
bool
manIsEnabled
;
void
startTitle
(
OutputList
&
ol
)
void
startTitle
(
OutputList
&
ol
,
const
char
*
fileName
)
{
{
ol
.
startTitleHead
();
ol
.
startTitleHead
(
fileName
);
manIsEnabled
=
ol
.
isEnabled
(
OutputGenerator
::
Man
);
manIsEnabled
=
ol
.
isEnabled
(
OutputGenerator
::
Man
);
if
(
manIsEnabled
)
ol
.
disable
(
OutputGenerator
::
Man
);
if
(
manIsEnabled
)
ol
.
disable
(
OutputGenerator
::
Man
);
}
}
void
endTitle
(
OutputList
&
ol
,
const
char
*
name
)
void
endTitle
(
OutputList
&
ol
,
const
char
*
fileName
,
const
char
*
name
)
{
{
if
(
manIsEnabled
)
ol
.
enable
(
OutputGenerator
::
Man
);
if
(
manIsEnabled
)
ol
.
enable
(
OutputGenerator
::
Man
);
ol
.
endTitleHead
(
name
);
ol
.
endTitleHead
(
fileName
,
name
);
}
}
void
writeQuickLinks
(
OutputList
&
ol
,
bool
compact
,
bool
ext
)
void
writeQuickLinks
(
OutputList
&
ol
,
bool
compact
,
bool
ext
)
...
@@ -391,6 +425,12 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
...
@@ -391,6 +425,12 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
if
(
manEnabled
)
ol
.
disable
(
OutputGenerator
::
Man
);
if
(
manEnabled
)
ol
.
disable
(
OutputGenerator
::
Man
);
if
(
texEnabled
)
ol
.
disable
(
OutputGenerator
::
Latex
);
if
(
texEnabled
)
ol
.
disable
(
OutputGenerator
::
Latex
);
if
(
compact
)
ol
.
startCenter
();
else
ol
.
startItemList
();
if
(
compact
)
ol
.
startCenter
();
else
ol
.
startItemList
();
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
extLink
,
absPath
+
"index.html"
);
parseText
(
ol
,
theTranslator
->
trMainPage
());
ol
.
endQuickIndexItem
();
if
(
documentedGroups
>
0
)
if
(
documentedGroups
>
0
)
{
{
if
(
!
compact
)
ol
.
writeListItem
();
if
(
!
compact
)
ol
.
writeListItem
();
...
@@ -1428,15 +1468,19 @@ void generateRef(OutputList &ol,const char *scName,
...
@@ -1428,15 +1468,19 @@ void generateRef(OutputList &ol,const char *scName,
{
{
ol
.
writeObjectLink
(
cd
->
getReference
(),
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
linkText
);
cd
->
getOutputFileBase
(),
0
,
linkText
);
if
(
!
cd
->
isReference
())
if
(
!
cd
->
isReference
()
&&
!
Config
::
pdfHyperFlag
)
ol
.
writePageRef
(
cd
->
name
(),
0
);
{
writePageRef
(
ol
,
cd
->
name
(),
0
);
}
}
}
else
// scope matches that of a namespace
else
// scope matches that of a namespace
{
{
ol
.
writeObjectLink
(
nd
->
getReference
(),
ol
.
writeObjectLink
(
nd
->
getReference
(),
nd
->
getOutputFileBase
(),
0
,
linkText
);
nd
->
getOutputFileBase
(),
0
,
linkText
);
if
(
!
nd
->
getReference
())
if
(
!
nd
->
getReference
()
&&
!
Config
::
pdfHyperFlag
)
ol
.
writePageRef
(
nd
->
name
(),
0
);
{
writePageRef
(
ol
,
nd
->
name
(),
0
);
}
}
}
// link has been written, stop now.
// link has been written, stop now.
return
;
return
;
...
@@ -1532,15 +1576,15 @@ void generateRef(OutputList &ol,const char *scName,
...
@@ -1532,15 +1576,15 @@ void generateRef(OutputList &ol,const char *scName,
}
}
// generate the page reference (for LaTeX)
// generate the page reference (for LaTeX)
if
(
cName
.
length
()
>
0
||
aName
.
length
()
>
0
)
if
(
!
Config
::
pdfHyperFlag
&&
(
cName
.
length
()
>
0
||
aName
.
length
()
>
0
)
)
{
{
if
(
if
(
(
cd
&&
cd
->
isLinkableInProject
())
||
(
cd
&&
cd
->
isLinkableInProject
())
||
(
fd
&&
!
fd
->
isReference
())
||
(
fd
&&
!
fd
->
isReference
())
||
(
nd
/* TODO: && !nd->isReference() */
)
(
nd
&&
!
nd
->
isReference
())
)
)
{
{
ol
.
writePageRef
(
cName
,
aName
);
writePageRef
(
ol
,
cName
,
aName
);
}
}
}
}
return
;
return
;
...
...
src/util.h
View file @
d4bdeb54
...
@@ -72,8 +72,8 @@ extern int guessSection(const char *name);
...
@@ -72,8 +72,8 @@ extern int guessSection(const char *name);
//extern QCString nameToFile(const char *name);
//extern QCString nameToFile(const char *name);
extern
bool
isId
(
char
c
);
extern
bool
isId
(
char
c
);
extern
QCString
removeRedundantWhiteSpace
(
const
QCString
&
s
);
extern
QCString
removeRedundantWhiteSpace
(
const
QCString
&
s
);
extern
void
startTitle
(
OutputList
&
ol
);
extern
void
startTitle
(
OutputList
&
ol
,
const
char
*
fileName
);
extern
void
endTitle
(
OutputList
&
ol
,
const
char
*
name
);
extern
void
endTitle
(
OutputList
&
ol
,
const
char
*
fileName
,
const
char
*
name
);
void
startFile
(
OutputList
&
ol
,
const
char
*
name
,
void
startFile
(
OutputList
&
ol
,
const
char
*
name
,
const
char
*
title
,
bool
external
=
FALSE
);
const
char
*
title
,
bool
external
=
FALSE
);
void
endFile
(
OutputList
&
ol
,
bool
external
=
FALSE
);
void
endFile
(
OutputList
&
ol
,
bool
external
=
FALSE
);
...
@@ -84,6 +84,7 @@ QCString generateMarker(int id);
...
@@ -84,6 +84,7 @@ QCString generateMarker(int id);
void
writeExample
(
OutputList
&
ol
,
ExampleList
*
el
);
void
writeExample
(
OutputList
&
ol
,
ExampleList
*
el
);
void
setFileNameForSections
(
QList
<
QCString
>
*
anchorList
,
const
char
*
fileName
);
void
setFileNameForSections
(
QList
<
QCString
>
*
anchorList
,
const
char
*
fileName
);
QCString
stripAnnonymousScope
(
const
QCString
&
s
);
QCString
stripAnnonymousScope
(
const
QCString
&
s
);
QCString
stripAnnonymousNamespaceScope
(
const
QCString
&
s
);
//void writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd,
//void writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd,
...
@@ -92,5 +93,6 @@ QCString stripAnnonymousScope(const QCString &s);
...
@@ -92,5 +93,6 @@ QCString stripAnnonymousScope(const QCString &s);
QCString
stripFromPath
(
const
QCString
&
path
);
QCString
stripFromPath
(
const
QCString
&
path
);
bool
rightScopeMatch
(
const
QCString
&
scope
,
const
QCString
&
name
);
bool
rightScopeMatch
(
const
QCString
&
scope
,
const
QCString
&
name
);
bool
leftScopeMatch
(
const
QCString
&
scope
,
const
QCString
&
name
);
bool
leftScopeMatch
(
const
QCString
&
scope
,
const
QCString
&
name
);
void
writePageRef
(
OutputList
&
ol
,
const
char
*
cn
,
const
char
*
mn
);
#endif
#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