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
0aa47e2a
Commit
0aa47e2a
authored
Jun 07, 2003
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.1-20030607
parent
35c2baed
Changes
49
Hide whitespace changes
Inline
Side-by-side
Showing
49 changed files
with
933 additions
and
294 deletions
+933
-294
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
commands.doc
doc/commands.doc
+35
-0
config.doc
doc/config.doc
+29
-18
faq.doc
doc/faq.doc
+5
-0
language.doc
doc/language.doc
+1
-1
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
classdef.cpp
src/classdef.cpp
+1
-0
cmdmapper.cpp
src/cmdmapper.cpp
+2
-0
cmdmapper.h
src/cmdmapper.h
+48
-46
code.l
src/code.l
+11
-7
config.l
src/config.l
+40
-22
docparser.cpp
src/docparser.cpp
+38
-1
docparser.h
src/docparser.h
+1
-1
doctokenizer.h
src/doctokenizer.h
+1
-0
doctokenizer.l
src/doctokenizer.l
+19
-0
dot.cpp
src/dot.cpp
+308
-31
dot.h
src/dot.h
+22
-1
doxygen.cpp
src/doxygen.cpp
+28
-2
doxygen.h
src/doxygen.h
+1
-0
entry.cpp
src/entry.cpp
+2
-0
entry.h
src/entry.h
+2
-1
filedef.cpp
src/filedef.cpp
+27
-0
filedef.h
src/filedef.h
+1
-0
ftvhelp.cpp
src/ftvhelp.cpp
+10
-6
htmldocvisitor.cpp
src/htmldocvisitor.cpp
+1
-0
htmlgen.cpp
src/htmlgen.cpp
+9
-0
htmlgen.h
src/htmlgen.h
+2
-0
index.cpp
src/index.cpp
+10
-2
latexdocvisitor.cpp
src/latexdocvisitor.cpp
+3
-2
latexgen.cpp
src/latexgen.cpp
+9
-0
latexgen.h
src/latexgen.h
+2
-0
mandocvisitor.cpp
src/mandocvisitor.cpp
+1
-2
mangen.h
src/mangen.h
+2
-0
memberdef.cpp
src/memberdef.cpp
+25
-0
memberdef.h
src/memberdef.h
+5
-0
outputgen.h
src/outputgen.h
+3
-0
outputlist.cpp
src/outputlist.cpp
+15
-3
outputlist.h
src/outputlist.h
+5
-0
perlmodgen.cpp
src/perlmodgen.cpp
+1
-0
pre.l
src/pre.l
+5
-5
rtfdocvisitor.cpp
src/rtfdocvisitor.cpp
+1
-2
rtfgen.cpp
src/rtfgen.cpp
+21
-0
rtfgen.h
src/rtfgen.h
+2
-0
scanner.l
src/scanner.l
+35
-6
translator_fr.h
src/translator_fr.h
+128
-129
util.cpp
src/util.cpp
+7
-0
xmldocvisitor.cpp
src/xmldocvisitor.cpp
+3
-0
No files found.
INSTALL
View file @
0aa47e2a
DOXYGEN Version 1.3.1
DOXYGEN Version 1.3.1
-20030607
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
28 May
2003)
Dimitri van Heesch (
07 June
2003)
README
View file @
0aa47e2a
DOXYGEN Version 1.3.1
DOXYGEN Version 1.3.1
_20030607
Please read INSTALL for compilation instructions.
...
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (
28 May
2003)
Dimitri van Heesch (dimitri@stack.nl) (
07 June
2003)
VERSION
View file @
0aa47e2a
1.3.1
1.3.1
-20030607
doc/commands.doc
View file @
0aa47e2a
...
...
@@ -47,6 +47,7 @@ documentation:
\refitem cmdbrief \\brief
\refitem cmdbug \\bug
\refitem cmdc \\c
\refitem cmdcallgraph \\callgraph
\refitem cmdclass \\class
\refitem cmdcode \\code
\refitem cmdcopydoc \\copydoc
...
...
@@ -66,6 +67,7 @@ documentation:
\refitem cmdendlatexonly \\endlatexonly
\refitem cmdendlink \\endlink
\refitem cmdendverbatim \\endverbatim
\refitem cmdendxmlonly \\endxmlonly
\refitem cmdenum \\enum
\refitem cmdexample \\example
\refitem cmdexception \\exception
...
...
@@ -129,6 +131,7 @@ documentation:
\refitem cmdversion \\version
\refitem cmdwarning \\warning
\refitem cmdweakgroup \\weakgroup
\refitem cmdxmlonly \\xmlonly
\refitem cmdxrefitem \\xrefitem
\refitem cmddollar \\\$
\refitem cmdat \\\@
...
...
@@ -181,6 +184,17 @@ doxygen. Unrecognized commands are treated as normal text.
\sa page \ref grouping "Grouping", sections \ref cmddefgroup "\\defgroup", \ref cmdingroup "\\ingroup" and
\ref cmdweakgroup "\\weakgroup".
\section cmdcallgraph \callgraph
\addindex \\callgraph
When this command is put in a comment block of a function or method
and \ref cfg_have_dot "HAVE_DOT" is set to YES, then doxygen will
generate a call graph for that function (provided the implementation of the
function or method calls other documented functions). The call graph will
generated regardless of the value of \ref cfg_call_graph "CALL_GRAPH".
\note The completeness (and correctness) of the call graph depends on the
doxygen code parser which is not perfect.
\section cmdclass \class <name> [<header-file>] [<header-name>]
\addindex \\class
...
...
@@ -1551,6 +1565,14 @@ ALIASES = "english=\if english" \
\sa section \ref cmdverbatim "\\verbatim".
<hr>
\section cmdendxmlonly \endxmlonly
\addindex \\endxmlonly
Ends a block of text that was started with a \\xmlonly command.
\sa section \ref cmdxmlonly "\\xmlonly".
<hr>
\section cmdfdollar \f$
...
...
@@ -1740,6 +1762,19 @@ ALIASES = "english=\if english" \
\warning Make sure you include a \\endverbatim command for each
\\verbatim command or the parser will get confused!
<hr>
\section cmdxmlonly \xmlonly
\addindex \\xmlonly
Starts a block of text that will be verbatim included in the
generated XML output only. The block ends with a
endxmlonly command.
This command can be used to include custom XML tags.
\sa section \ref cmdhtmlonly "\\htmlonly" and section
\ref cmdlatexonly "\\latexonly".
<hr>
\section cmdbackslash \\
...
...
doc/config.doc
View file @
0aa47e2a
...
...
@@ -62,6 +62,7 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_bin_abspath
BIN_ABSPATH
\
refitem
cfg_binary_toc
BINARY_TOC
\
refitem
cfg_brief_member_desc
BRIEF_MEMBER_DESC
\
refitem
cfg_call_graph
CALL_GRAPH
\
refitem
cfg_case_sense_names
CASE_SENSE_NAMES
\
refitem
cfg_cgi_name
CGI_NAME
\
refitem
cfg_cgi_url
CGI_URL
...
...
@@ -242,7 +243,8 @@ followed by the descriptions of the tags grouped by category.
The
default
language
is
English
,
other
supported
languages
are
:
Brazilian
,
Chinese
,
Croatian
,
Czech
,
Danish
,
Dutch
,
Finnish
,
French
,
German
,
Greek
,
Hungarian
,
Italian
,
Japanese
,
Korean
,
Norwegian
,
Polish
,
Portuguese
,
Romanian
,
Russian
,
Serbian
,
Slovak
,
Slovene
,
Spanish
and
Swedish
.
Portuguese
,
Romanian
,
Russian
,
Serbian
,
Slovak
,
Slovene
,
Spanish
,
Swedish
,
and
Ukrainian
.
\
anchor
cfg_use_windows_encoding
<
dt
>\
c
USE_WINDOWS_ENCODING
<
dd
>
...
...
@@ -251,8 +253,8 @@ followed by the descriptions of the tags grouped by category.
The
encoding
is
not
always
determined
by
the
language
that
is
chosen
,
but
also
whether
or
not
the
output
is
meant
for
Windows
or
non
-
Windows
users
.
In
case
there
is
a
difference
,
setting
the
\
c
USE_WINDOWS_ENCODING
tag
to
\
c
YES
forces
the
Windows
enco
n
ding
,
(
this
is
the
default
for
the
Windows
binary
),
whereas
setting
the
tag
to
\
c
NO
uses
a
Unix
-
style
encoding
(
the
default
for
the
forces
the
Windows
encoding
,
(
this
is
the
default
for
the
Windows
binary
),
whereas
setting
the
tag
to
\
c
NO
uses
a
Unix
-
style
encoding
(
the
default
for
all
platforms
other
than
Windows
).
\
anchor
cfg_extract_all
...
...
@@ -366,7 +368,7 @@ function's detailed documentation block.
<dt>\c STRIP_FROM_PATH <dd>
\addindex STRIP_FROM_PATH
If the \c FULL_PATH_NAMES tag is set to \c YES then the \c STRIP_FROM_PATH tag
can be used to strip a user
defined part of the path. Stripping is
can be used to strip a user
-
defined part of the path. Stripping is
only done if one of the specified strings matches the left-hand part of the
path.
...
...
@@ -382,8 +384,8 @@ function's detailed documentation block.
<dt>\c CASE_SENSE_NAMES <dd>
\addindex CASE_SENSE_NAMES
If the \c CASE_SENSE_NAMES tag is set to \c NO (the default) then doxygen
will only generate file names in lower
case letters. If set to
\c YES upper
case letters are also allowed. This is useful if you have
will only generate file names in lower
-
case letters. If set to
\c YES upper
-
case letters are also allowed. This is useful if you have
classes or files whose names only differ in case and if your file system
supports case sensitive file names.
...
...
@@ -413,7 +415,7 @@ function's detailed documentation block.
<
dt
>\
c
SHOW_INCLUDE_FILES
<
dd
>
\
addindex
SHOW_INCLUDE_FILES
If
the
SHOW_INCLUDE_FILES
tag
is
set
to
YES
(
the
default
)
then
doxygen
will
put
list
of
the
files
that
are
included
by
a
file
in
the
documentation
will
put
a
list
of
the
files
that
are
included
by
a
file
in
the
documentation
of
that
file
.
\
anchor
cfg_javadoc_autobrief
...
...
@@ -529,7 +531,7 @@ function's detailed documentation block.
\
endverbatim
will
allow
you
to
put
the
command
\\
sideeffect
(
or
\@
sideeffect
)
in
the
documentation
,
which
will
result
in
a
user
defined
paragraph
with
heading
"Side Effects:"
.
will
result
in
a
user
-
defined
paragraph
with
heading
"Side Effects:"
.
You
can
put
\\
n
's in the value part of an alias to insert newlines.
\anchor cfg_max_initializer_lines
...
...
@@ -547,7 +549,7 @@ function's detailed documentation block.
\addindex OPTIMIZE_OUTPUT_FOR_C
Set the \c OPTIMIZE_OUTPUT_FOR_C tag to \c YES if your project consists
of C sources only. Doxygen will then generate output that is more tailored
for C. For instance some of the names that are used will be different.
for C. For instance
,
some of the names that are used will be different.
The list of all members will be omitted, etc.
\anchor cfg_optimize_output_java
...
...
@@ -555,7 +557,7 @@ function's detailed documentation block.
\addindex OPTIMIZE_OUTPUT_JAVA
Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
only. Doxygen will then generate output that is more tailored for Java.
For instance namespaces will be presented as packages, qualified scopes
For instance
,
namespaces will be presented as packages, qualified scopes
will look different, etc.
\anchor cfg_show_used_files
...
...
@@ -816,7 +818,7 @@ function's detailed documentation block.
\anchor cfg_html_header
<dt>\c HTML_HEADER <dd>
\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
header file for each generated HTML page. To get valid HTML the header file
should contain at least a \c \<HTML\> and a \c \<BODY\> tag, but it is
good idea to include the style sheet that is generated by doxygen as well.
...
...
@@ -847,7 +849,7 @@ function's detailed documentation block.
\anchor cfg_html_footer
<dt>\c HTML_FOOTER <dd>
\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
each generated HTML page. To get valid HTML the header file should contain
at least a \c \</BODY\> and a \c \</HTML\> tag. A minimal example:
\verbatim
...
...
@@ -871,7 +873,7 @@ function's detailed documentation block.
\anchor cfg_html_stylesheet
<dt>\c HTML_STYLESHEET <dd>
\addindex HTML_STYLESHEET
The \c HTML_STYLESHEET tag can be used to specify a user
defined cascading
The \c HTML_STYLESHEET tag can be used to specify a user
-
defined cascading
style sheet that is used by each HTML page. It can be used to
fine-tune the look of the HTML output. If the tag is left blank doxygen
will generate a default style sheet.
...
...
@@ -924,7 +926,7 @@ function's detailed documentation block.
If
the
\
c
GENERATE_HTMLHELP
tag
is
set
to
\
c
YES
,
the
\
c
HHC_LOCATION
tag
can
be
used
to
specify
the
location
(
absolute
path
including
file
name
)
of
the
HTML
help
compiler
(
hhc
.
exe
).
If
non
empty
doxygen
will
try
to
run
the
html
help
compiler
on
the
generated
index
.
hhp
.
the
HTML
help
compiler
on
the
generated
index
.
hhp
.
\
anchor
cfg_generate_chi
<
dt
>\
c
GENERATE_CHI
<
dd
>
...
...
@@ -1053,7 +1055,7 @@ EXTRA_PACKAGES = times
let doxygen write the default header to a separate file.
\par Note:
Only use a user
defined header if you know what you are doing!
Only use a user
-
defined header if you know what you are doing!
The following commands have a special meaning inside the header:
<code>\$title</code>, <code>\$datetime</code>, <code>\$date</code>,
...
...
@@ -1409,7 +1411,7 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
If
the
\
c
CLASS_DIAGRAMS
tag
is
set
to
\
c
YES
(
the
default
)
doxygen
will
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
.
Note
that
this
option
is
super
c
eded
by
the
HAVE_DOT
option
below
.
Note
that
this
option
is
super
s
eded
by
the
HAVE_DOT
option
below
.
This
is
only
a
fallback
.
It
is
recommended
to
install
and
use
dot
,
since
it
yield
more
powerful
graphs
.
...
...
@@ -1467,6 +1469,15 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
documented
header
file
showing
the
documented
files
that
directly
or
indirectly
include
this
file
.
\
anchor
cfg_call_graph
<
dt
>\
c
CALL_GRAPH
<
dd
>
\
addindex
CALL_GRAPH
If
the
\
c
CALL_GRAPH
and
\
c
HAVE_DOT
tags
are
set
to
\
c
YES
then
doxygen
will
generate
a
call
dependency
graph
for
every
global
function
or
class
method
.
Note
that
enabling
this
option
will
significantly
increase
the
time
of
a
run
.
So
in
most
cases
it
will
be
better
to
enable
call
graphs
for
selected
functions
only
using
the
\\
callgraph
command
.
\
anchor
cfg_graphical_hierarchy
<
dt
>\
c
GRAPHICAL_HIERARCHY
<
dd
>
\
addindex
GRAPHICAL_HIERARCHY
...
...
@@ -1515,7 +1526,7 @@ not sufficient to fit the graph (see
\ref cfg_max_dot_graph_width "MAX_DOT_GRAPH_WIDTH" and
\ref cfg_max_dot_graph_height "MAX_DOT_GRAPH_HEIGHT").
If 0 is used fot the depth value (the default), the graph is
not depth
constraint.
not depth
-
constraint.
\anchor cfg_max_dot_graph_width
<dt>\c MAX_DOT_GRAPH_WIDTH <dd>
...
...
@@ -1537,7 +1548,7 @@ not depth constraint.
<dt>\c DOT_CLEANUP <dd>
\addindex DOT_CLEANUP
If the \c DOT_CLEANUP tag is set to \c YES (the default) doxygen will
remove the intermedate dot files that are used to generate the various graphs.
remove the intermed
i
ate dot files that are used to generate the various graphs.
</dl>
...
...
doc/faq.doc
View file @
0aa47e2a
...
...
@@ -222,6 +222,11 @@ should send me a code fragment that triggers the message. The workaround
the problem put some line-breaks into your file, split it up into smaller
parts, or exclude it from the input using EXCLUDE.
<li><b>When running make in the latex dir I get "TeX capacity exceeded". Now what?</b>
You can edit the texmf.cfg file to increase the default values of the
various buffers and then run "texconfig init".
<li><b>Why are dependencies via STL classes not shown in the dot graphs?</b>
Doxygen is unware of the STL classes, so it does not know that class A relates
...
...
doc/language.doc
View file @
0aa47e2a
...
...
@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time.
Currently (version 1.3
-20030430
), 28 languages
Currently (version 1.3
.1
), 28 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish,
...
...
packages/rpm/doxygen.spec
View file @
0aa47e2a
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.1
Version: 1.3.1
_20030607
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/classdef.cpp
View file @
0aa47e2a
...
...
@@ -92,6 +92,7 @@ ClassDef::ClassDef(
m_membersMerged
=
FALSE
;
QCString
ns
;
extractNamespaceName
(
m_name
,
m_className
,
ns
);
//printf("m_name=%s m_className=%s ns=%s\n",m_name.data(),m_className.data(),ns.data());
if
(((
QCString
)
defFileName
).
right
(
5
)
!=
".java"
&&
guessSection
(
defFileName
)
==
Entry
::
SOURCE_SEC
)
...
...
src/cmdmapper.cpp
View file @
0aa47e2a
...
...
@@ -41,6 +41,7 @@ CommandMap cmdMap[] =
{
"endlink"
,
CMD_ENDLINK
},
{
"endsecreflist"
,
CMD_ENDSECREFLIST
},
{
"endverbatim"
,
CMD_ENDVERBATIM
},
{
"endxmlonly"
,
CMD_ENDXMLONLY
},
{
"exception"
,
CMD_EXCEPTION
},
{
"form"
,
CMD_FORMULA
},
{
"htmlinclude"
,
CMD_HTMLINCLUDE
},
...
...
@@ -79,6 +80,7 @@ CommandMap cmdMap[] =
{
"since"
,
CMD_SINCE
},
{
"skip"
,
CMD_SKIP
},
{
"skipline"
,
CMD_SKIPLINE
},
{
"xmlonly"
,
CMD_XMLONLY
},
{
"xrefitem"
,
CMD_XREFITEM
},
{
"throw"
,
CMD_EXCEPTION
},
{
"until"
,
CMD_UNTIL
},
...
...
src/cmdmapper.h
View file @
0aa47e2a
...
...
@@ -54,52 +54,54 @@ enum CommandType
CMD_ENDLINK
=
20
,
CMD_ENDSECREFLIST
=
21
,
CMD_ENDVERBATIM
=
22
,
CMD_EXCEPTION
=
23
|
SIMPLESECT_BIT
,
CMD_FORMULA
=
24
,
CMD_GREATER
=
25
,
CMD_HASH
=
26
,
CMD_HTMLINCLUDE
=
27
,
CMD_HTMLONLY
=
28
,
CMD_IMAGE
=
29
,
CMD_INCLUDE
=
30
,
CMD_INTERNAL
=
31
,
CMD_INTERNALREF
=
32
,
CMD_INVARIANT
=
33
|
SIMPLESECT_BIT
,
CMD_LANGSWITCH
=
34
,
CMD_LATEXONLY
=
35
,
CMD_LESS
=
36
,
CMD_LI
=
37
,
CMD_LINE
=
38
,
CMD_LINEBREAK
=
39
,
CMD_LINK
=
40
,
CMD_NOTE
=
41
|
SIMPLESECT_BIT
,
CMD_PAR
=
42
|
SIMPLESECT_BIT
,
CMD_PARAM
=
43
|
SIMPLESECT_BIT
,
CMD_PERCENT
=
44
,
CMD_POST
=
45
|
SIMPLESECT_BIT
,
CMD_PRE
=
46
|
SIMPLESECT_BIT
,
CMD_REF
=
47
,
CMD_SECREFITEM
=
48
,
CMD_REMARK
=
49
|
SIMPLESECT_BIT
,
CMD_RETURN
=
50
|
SIMPLESECT_BIT
,
CMD_RETVAL
=
51
|
SIMPLESECT_BIT
,
CMD_SA
=
52
|
SIMPLESECT_BIT
,
CMD_SECREFLIST
=
53
,
CMD_SECTION
=
54
,
CMD_SUBSECTION
=
55
,
CMD_SUBSUBSECTION
=
56
,
CMD_PARAGRAPH
=
57
,
CMD_SINCE
=
58
|
SIMPLESECT_BIT
,
CMD_SKIP
=
59
,
CMD_SKIPLINE
=
60
,
CMD_STARTCODE
=
61
,
CMD_JAVALINK
=
62
,
CMD_UNTIL
=
63
,
CMD_VERBATIM
=
64
,
CMD_VERBINCLUDE
=
65
,
CMD_VERSION
=
66
|
SIMPLESECT_BIT
,
CMD_WARNING
=
67
|
SIMPLESECT_BIT
,
CMD_XREFITEM
=
68
|
SIMPLESECT_BIT
CMD_ENDXMLONLY
=
23
,
CMD_EXCEPTION
=
24
|
SIMPLESECT_BIT
,
CMD_FORMULA
=
25
,
CMD_GREATER
=
26
,
CMD_HASH
=
27
,
CMD_HTMLINCLUDE
=
28
,
CMD_HTMLONLY
=
29
,
CMD_IMAGE
=
30
,
CMD_INCLUDE
=
31
,
CMD_INTERNAL
=
32
,
CMD_INTERNALREF
=
33
,
CMD_INVARIANT
=
34
|
SIMPLESECT_BIT
,
CMD_LANGSWITCH
=
35
,
CMD_LATEXONLY
=
36
,
CMD_LESS
=
37
,
CMD_LI
=
38
,
CMD_LINE
=
39
,
CMD_LINEBREAK
=
40
,
CMD_LINK
=
41
,
CMD_NOTE
=
42
|
SIMPLESECT_BIT
,
CMD_PAR
=
43
|
SIMPLESECT_BIT
,
CMD_PARAM
=
44
|
SIMPLESECT_BIT
,
CMD_PERCENT
=
45
,
CMD_POST
=
46
|
SIMPLESECT_BIT
,
CMD_PRE
=
47
|
SIMPLESECT_BIT
,
CMD_REF
=
48
,
CMD_SECREFITEM
=
49
,
CMD_REMARK
=
50
|
SIMPLESECT_BIT
,
CMD_RETURN
=
51
|
SIMPLESECT_BIT
,
CMD_RETVAL
=
52
|
SIMPLESECT_BIT
,
CMD_SA
=
53
|
SIMPLESECT_BIT
,
CMD_SECREFLIST
=
54
,
CMD_SECTION
=
55
,
CMD_SUBSECTION
=
56
,
CMD_SUBSUBSECTION
=
57
,
CMD_PARAGRAPH
=
58
,
CMD_SINCE
=
59
|
SIMPLESECT_BIT
,
CMD_SKIP
=
60
,
CMD_SKIPLINE
=
61
,
CMD_STARTCODE
=
62
,
CMD_JAVALINK
=
63
,
CMD_UNTIL
=
64
,
CMD_VERBATIM
=
65
,
CMD_VERBINCLUDE
=
66
,
CMD_VERSION
=
67
|
SIMPLESECT_BIT
,
CMD_WARNING
=
68
|
SIMPLESECT_BIT
,
CMD_XREFITEM
=
69
|
SIMPLESECT_BIT
,
CMD_XMLONLY
=
70
};
enum
HtmlTagType
...
...
src/code.l
View file @
0aa47e2a
...
...
@@ -1224,8 +1224,6 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_scopeStack.push(SCOPEBLOCK);
pushScope(g_curClassName);
//printf("***** g_curClassName=%s\n",g_curClassName.data());
//CodeClassDef *cd=new CodeClassDef(g_ccd);
//g_codeClassDict.insert(cd->name,cd);
if (getResolvedClass(g_currentDefinition,g_curClassName)==0)
{
g_curClassDef=new ClassDef("<code>",1,
...
...
@@ -1611,9 +1609,6 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
BEGIN( SkipInits );
}
}
/*
<MemberCall2,FuncCall>")"({BN}"const"|"volatile")*{BN}*"{" {
*/
<CallEnd>({BN}"const"|"volatile")*{BN}*"{" {
if (g_insideBody)
{
...
...
@@ -1622,10 +1617,19 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_theVarContext.addVariable(g_parmType,g_parmName);
g_theCallContext.popScope();
g_parmType.resize(0);g_parmName.resize(0);
if (g_name.find("::")!=-1)
int index = g_name.findRev("::");
if (index!=-1)
{
ClassDef *cd=getResolvedClass(Doxygen::globalScope,g_name.left(index));
if (cd)
{
setClassScope(cd->name());
}
else
{
setClassScope(g_realScope);
}
g_scopeStack.push(SCOPEBLOCK);
setClassScope(g_realScope);
}
else
{
...
...
src/config.l
View file @
0aa47e2a
...
...
@@ -1288,8 +1288,8 @@ void Config::create()
"The default language is English, other supported languages are: \n"
"Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, \n"
"Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en \n"
"(Japanese with
e
nglish messages), Korean, Norwegian, Polish, Portuguese, \n"
"Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish and Ukrainian.\n",
"(Japanese with
E
nglish messages), Korean, Norwegian, Polish, Portuguese, \n"
"Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish
,
and Ukrainian.\n",
"English"
);
#ifdef LANG_BR
...
...
@@ -1381,8 +1381,8 @@ void Config::create()
"The encoding is not always determined by the language that is chosen, \n"
"but also whether or not the output is meant for Windows or non-Windows users. \n"
"In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES \n"
"forces the Windows enco
nding,
(this is the default for the Windows binary), \n"
"whereas setting the tag to NO uses a Unix-style encoding (the default for
the
\n"
"forces the Windows enco
ding
(this is the default for the Windows binary), \n"
"whereas setting the tag to NO uses a Unix-style encoding (the default for \n"
"all platforms other than Windows).\n",
#if defined(_WIN32) || defined(__CYGWIN__)
TRUE
...
...
@@ -1430,7 +1430,7 @@ void Config::create()
"HIDE_UNDOC_CLASSES",
"If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all \n"
"undocumented classes that are normally visible in the class hierarchy. \n"
"If set to NO (the default) these class will be included in the various \n"
"If set to NO (the default) these class
es
will be included in the various \n"
"overviews. This option has no effect if EXTRACT_ALL is enabled. \n",
FALSE
);
...
...
@@ -1491,7 +1491,7 @@ void Config::create()
cl = addList(
"STRIP_FROM_PATH",
"If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag \n"
"can be used to strip a user
defined part of the path. Stripping is \n"
"can be used to strip a user
-
defined part of the path. Stripping is \n"
"only done if one of the specified strings matches the left-hand part of \n"
"the path. It is allowed to use relative paths in the argument list.\n"
);
...
...
@@ -1507,10 +1507,10 @@ void Config::create()
cb = addBool(
"CASE_SENSE_NAMES",
"If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \n"
"file names in lower
case letters. If set to YES upper
case letters are also \n"
"file names in lower
-case letters. If set to YES upper-
case letters are also \n"
"allowed. This is useful if you have classes or files whose names only differ \n"
"in case and if your file system supports case sensitive file names. Windows \n"
"users are advi
c
ed to set this option to NO.\n",
"users are advi
s
ed to set this option to NO.\n",
TRUE
);
cb = addBool(
...
...
@@ -1530,7 +1530,7 @@ void Config::create()
cb = addBool(
"SHOW_INCLUDE_FILES",
"If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen \n"
"will put list of the files that are included by a file in the documentation \n"
"will put
a
list of the files that are included by a file in the documentation \n"
"of that file. \n",
TRUE
);
...
...
@@ -1539,7 +1539,7 @@ void Config::create()
"If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen \n"
"will interpret the first line (until the first dot) of a JavaDoc-style \n"
"comment as the brief description. If set to NO, the JavaDoc \n"
"comments
will behave just like the Qt-style comments (thus requiring an \n"
"comments will behave just like the Qt-style comments (thus requiring an \n"
"explict @brief command for a brief description. \n",
FALSE
);
...
...
@@ -1629,7 +1629,7 @@ void Config::create()
"as commands in the documentation. An alias has the form \"name=value\". \n"
"For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n"
"put the command \\sideeffect (or @sideeffect) in the documentation, which \n"
"will result in a user
defined paragraph with heading \"Side Effects:\". \n"
"will result in a user
-
defined paragraph with heading \"Side Effects:\". \n"
"You can put \\n's in the value part of an alias to insert newlines. \n"
);
cl = addList(
...
...
@@ -1640,7 +1640,7 @@ void Config::create()
ci = addInt(
"MAX_INITIALIZER_LINES",
"The MAX_INITIALIZER_LINES tag determines the maximum number of lines \n"
"the initial value of a variable or define consist of for it to appear in \n"
"the initial value of a variable or define consist
s
of for it to appear in \n"
"the documentation. If the initializer consists of more lines than specified \n"
"here it will be hidden. Use a value of 0 to hide initializers completely. \n"
"The appearance of the initializer of individual variables and defines in the \n"
...
...
@@ -1652,7 +1652,7 @@ void Config::create()
"OPTIMIZE_OUTPUT_FOR_C",
"Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources \n"
"only. Doxygen will then generate output that is more tailored for C. \n"
"For instance some of the names that are used will be different. The list \n"
"For instance
,
some of the names that are used will be different. The list \n"
"of all members will be omitted, etc. \n",
FALSE
);
...
...
@@ -1660,7 +1660,7 @@ void Config::create()
"OPTIMIZE_OUTPUT_JAVA",
"Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources \n"
"only. Doxygen will then generate output that is more tailored for Java. \n"
"For instance namespaces will be presented as packages, qualified scopes \n"
"For instance
,
namespaces will be presented as packages, qualified scopes \n"
"will look different, etc. \n",
FALSE
);
...
...
@@ -1921,7 +1921,7 @@ void Config::create()
cs->addDependency("GENERATE_HTML");
cs = addString(
"HTML_STYLESHEET",
"The HTML_STYLESHEET tag can be used to specify a user
defined cascading \n"
"The HTML_STYLESHEET tag can be used to specify a user
-
defined cascading \n"
"style sheet that is used by each HTML page. It can be used to \n"
"fine-tune the look of the HTML output. If the tag is left blank doxygen \n"
"will generate a default style sheet \n"
...
...
@@ -1957,8 +1957,8 @@ void Config::create()
"HHC_LOCATION",
"If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can \n"
"be used to specify the location (absolute path including file name) of \n"
"the HTML help compiler (hhc.exe). If non
empty doxygen will try to run \n"
"the
html
help compiler on the generated index.hhp.\n"
"the HTML help compiler (hhc.exe). If non
-
empty doxygen will try to run \n"
"the
HTML
help compiler on the generated index.hhp.\n"
);
cs->addDependency("GENERATE_HTML");
cb = addBool(
...
...
@@ -1980,7 +1980,7 @@ void Config::create()
cb = addBool(
"TOC_EXPAND",
"The TOC_EXPAND flag can be set to YES to add extra items for group members \n"
"to the contents of the H
tml
help documentation and to the tree view. \n",
"to the contents of the H
TML
help documentation and to the tree view. \n",
FALSE
);
cb->addDependency("GENERATE_HTML");
...
...
@@ -2431,9 +2431,9 @@ void Config::create()
cb = addBool(
"CLASS_DIAGRAMS",
"If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will \n"
"generate a inheritance diagram (in H
tml
, RTF and LaTeX) for classes with base or \n"
"generate a inheritance diagram (in H
TML
, RTF and LaTeX) for classes with base or \n"
"super classes. Setting the tag to NO turns the diagrams off. Note that this \n"
"option is super
c
eded by the HAVE_DOT option below. This is only a fallback. It is \n"
"option is super
s
eded by the HAVE_DOT option below. This is only a fallback. It is \n"
"recommended to install and use dot, since it yield more powerful graphs. \n",
TRUE
);
...
...
@@ -2470,6 +2470,14 @@ void Config::create()
TRUE
);
cb->addDependency("HAVE_DOT");
cb = addBool(
"UML_LOOK",
"If the UML_LOOK tag is set to YES doxygen will generate inheritance and \n"
"colloborations diagrams in a style similiar to the OMG's Unified Modeling \n"
"Language. \n",
FALSE
);
cb->addDependency("HAVE_DOT");
cb = addBool(
"TEMPLATE_RELATIONS",
"If set to YES, the inheritance and collaboration graphs will show the \n"
...
...
@@ -2495,6 +2503,16 @@ void Config::create()
TRUE
);
cb->addDependency("HAVE_DOT");
cb = addBool(
"CALL_GRAPH",
"If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will \n"
"generate a call dependency graph for every global function or class method. \n"
"Note that enabling this option will significantly increase the time of a run. \n"
"So in most cases it will be better to enable call graphs for selected \n"
"functions only using the \\callgraph command.\n",
FALSE
);
cb->addDependency("HAVE_DOT");
cb = addBool(
"GRAPHICAL_HIERARCHY",
"If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen \n"
...
...
@@ -2556,7 +2574,7 @@ void Config::create()
"1 or 2 may greatly reduce the computation time needed for large code bases. Also \n"
"note that a graph may be further truncated if the graph's image dimensions are \n"
"not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). \n"
"If 0 is used fo
t the depth value (the default), the graph is not depth constraint
. \n",
"If 0 is used fo
r the depth value (the default), the graph is not depth-constrained
. \n",
0,1000,0
);
ci->addDependency("HAVE_DOT");
...
...
@@ -2571,7 +2589,7 @@ void Config::create()
cb = addBool(
"DOT_CLEANUP",
"If the DOT_CLEANUP tag is set to YES (the default) Doxygen will \n"
"remove the intermedate dot files that are used to generate \n"
"remove the intermed
i
ate dot files that are used to generate \n"
"the various graphs. \n",
TRUE
);
...
...
src/docparser.cpp
View file @
0aa47e2a
...
...
@@ -826,6 +826,15 @@ reparsetoken:
doctokenizerYYsetStatePara
();
}
break
;
case
CMD_XMLONLY
:
{
doctokenizerYYsetStateXmlOnly
();
tok
=
doctokenizerYYlex
();
children
.
append
(
new
DocVerbatim
(
parent
,
g_context
,
g_token
->
verb
,
DocVerbatim
::
XmlOnly
,
g_isExample
,
g_exampleName
));
if
(
tok
==
0
)
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: xmlonly section ended without end marker"
,
doctokenizerYYlineno
);
doctokenizerYYsetStatePara
();
}
break
;
case
CMD_FORMULA
:
{
DocFormula
*
form
=
new
DocFormula
(
parent
,
g_token
->
id
);
...
...
@@ -3043,7 +3052,8 @@ int DocParamList::parse(const QString &cmdName)
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: unexpected end of comment block while parsing the "
"argument of command %s"
,
cmdName
.
data
());
return
0
;
retval
=
0
;
goto
endparamlist
;
}
ASSERT
(
tok
==
TK_WHITESPACE
);
...
...
@@ -3051,6 +3061,7 @@ int DocParamList::parse(const QString &cmdName)
m_paragraph
->
markFirst
();
m_paragraph
->
markLast
();
endparamlist
:
DBG
((
"DocParamList::parse() end retval=%d
\n
"
,
retval
));
DocNode
*
n
=
g_nodeStack
.
pop
();
ASSERT
(
n
==
this
);
...
...
@@ -3588,6 +3599,15 @@ int DocPara::handleCommand(const QString &cmdName)
doctokenizerYYsetStatePara
();
}
break
;
case
CMD_XMLONLY
:
{
doctokenizerYYsetStateXmlOnly
();
retval
=
doctokenizerYYlex
();
m_children
.
append
(
new
DocVerbatim
(
this
,
g_context
,
g_token
->
verb
,
DocVerbatim
::
XmlOnly
,
g_isExample
,
g_exampleName
));
if
(
retval
==
0
)
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: xmlonly section ended without end marker"
);
doctokenizerYYsetStatePara
();
}
break
;
case
CMD_VERBATIM
:
{
doctokenizerYYsetStateVerbatim
();
...
...
@@ -3600,6 +3620,7 @@ int DocPara::handleCommand(const QString &cmdName)
case
CMD_ENDCODE
:
case
CMD_ENDHTMLONLY
:
case
CMD_ENDLATEXONLY
:
case
CMD_ENDXMLONLY
:
case
CMD_ENDLINK
:
case
CMD_ENDVERBATIM
:
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: unexpected command %s"
,
g_token
->
name
.
data
());
...
...
@@ -4491,6 +4512,9 @@ int DocSection::parse()
retval
=
0
;
// stop parsing
}
else
{
}
INTERNAL_ASSERT
(
retval
==
0
||
retval
==
RetVal_Section
||
...
...
@@ -4615,6 +4639,18 @@ void DocRoot::parse()
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: Invalid list item found"
);
}
else
if
(
retval
==
RetVal_Subsection
)
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: found subsection command outside of section context!"
);
}
else
if
(
retval
==
RetVal_Subsubsection
)
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: found subsubsection command outside of subsection context!"
);
}
else
if
(
retval
==
RetVal_Paragraph
)
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: found paragraph command outside of subsubsection context!"
);
}
}
while
(
retval
!=
0
&&
retval
!=
RetVal_Section
&&
retval
!=
RetVal_Internal
);
if
(
lastPar
)
lastPar
->
markLast
();
...
...
@@ -4642,6 +4678,7 @@ void DocRoot::parse()
retval
=
in
->
parse
();
}
handleUnclosedStyleCommands
();
DocNode
*
n
=
g_nodeStack
.
pop
();
...
...
src/docparser.h
View file @
0aa47e2a
...
...
@@ -351,7 +351,7 @@ class DocWhiteSpace : public DocNode
class
DocVerbatim
:
public
DocNode
{
public
:
enum
Type
{
Code
,
HtmlOnly
,
LatexOnly
,
Verbatim
};
enum
Type
{
Code
,
HtmlOnly
,
LatexOnly
,
XmlOnly
,
Verbatim
};
DocVerbatim
(
DocNode
*
parent
,
const
QString
&
context
,
const
QString
&
text
,
Type
t
,
bool
isExample
,
const
QString
&
exampleFile
)
:
...
...
src/doctokenizer.h
View file @
0aa47e2a
...
...
@@ -121,6 +121,7 @@ void doctokenizerYYsetStateTitle();
void
doctokenizerYYsetStateCode
();
void
doctokenizerYYsetStateHtmlOnly
();
void
doctokenizerYYsetStateLatexOnly
();
void
doctokenizerYYsetStateXmlOnly
();
void
doctokenizerYYsetStateVerbatim
();
void
doctokenizerYYsetStateParam
();
void
doctokenizerYYsetStateXRefItem
();
...
...
src/doctokenizer.l
View file @
0aa47e2a
...
...
@@ -306,6 +306,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
%x St_Code
%x St_HtmlOnly
%x St_LatexOnly
%x St_XmlOnly
%x St_Verbatim
%x St_Param
%x St_XRefItem
...
...
@@ -507,6 +508,14 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
<St_LatexOnly>. {
g_token->verb+=yytext;
}
<St_XmlOnly>{CMD}"endxmlonly" {
return RetVal_OK;
}
<St_XmlOnly>[^\\@\n]+ |
<St_XmlOnly>\n |
<St_XmlOnly>. {
g_token->verb+=yytext;
}
<St_Verbatim>{CMD}"endverbatim" {
return RetVal_OK;
}
...
...
@@ -742,6 +751,10 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
g_endMarker="endlatexonly";
BEGIN(St_SecSkip);
}
<St_Sections>{CMD}"xmlonly" {
g_endMarker="endxmlonly";
BEGIN(St_SecSkip);
}
<St_Sections>{CMD}"code" {
g_endMarker="endcode";
BEGIN(St_SecSkip);
...
...
@@ -850,6 +863,12 @@ void doctokenizerYYsetStateHtmlOnly()
BEGIN(St_HtmlOnly);
}
void doctokenizerYYsetStateXmlOnly()
{
g_token->verb="";
BEGIN(St_XmlOnly);
}
void doctokenizerYYsetStateLatexOnly()
{
g_token->verb="";
...
...
src/dot.cpp
View file @
0aa47e2a
...
...
@@ -46,15 +46,15 @@ static const char *edgeColorMap[] =
"orange"
// template relation
};
//
static const char *arrowStyle[] =
//
{
//
"empty", // Public
//
"empty", // Protected
//
"empty", // Private
//
"open", // "use" relation
//
0, // Undocumented
//
0 // template relation
//
};
static
const
char
*
arrowStyle
[]
=
{
"empty"
,
// Public
"empty"
,
// Protected
"empty"
,
// Private
"open"
,
// "use" relation
0
,
// Undocumented
0
// template relation
};
static
const
char
*
edgeStyleMap
[]
=
{
...
...
@@ -418,8 +418,21 @@ static QCString convertLabel(const QCString &l)
return
result
;
}
static
void
writeBoxMemberList
(
QTextStream
&
t
,
char
prot
,
MemberList
&
ml
,
ClassDef
*
scope
)
{
MemberListIterator
mlia
(
ml
);
MemberDef
*
mma
;
for
(
mlia
.
toFirst
();(
mma
=
mlia
.
current
());
++
mlia
)
{
if
(
mma
->
getClassDef
()
==
scope
)
{
t
<<
prot
<<
" "
<<
convertLabel
(
mma
->
name
())
<<
"
\\
l"
;
}
}
}
void
DotNode
::
writeBox
(
QTextStream
&
t
,
GraphType
/* gt */
,
GraphType
gt
,
GraphOutputFormat
/*format*/
,
bool
hasNonReachableChildren
)
{
...
...
@@ -428,24 +441,65 @@ void DotNode::writeBox(QTextStream &t,
(
(
hasNonReachableChildren
)
?
"red"
:
"black"
);
t
<<
" Node"
<<
m_number
<<
" [label=
\"
"
<<
convertLabel
(
m_label
)
<<
"
\"
,height=0.2,width=0.4"
;
//if (format==BITMAP) t << ",fontname=\"Helvetica\"";
t
<<
",color=
\"
"
<<
labCol
<<
"
\"
"
;
t
<<
" Node"
<<
m_number
<<
" [label=
\"
"
;
if
(
Config_getBool
(
"UML_LOOK"
)
&&
(
gt
==
Inheritance
||
gt
==
Collaboration
))
{
t
<<
"{"
<<
convertLabel
(
m_label
);
t
<<
"
\\
n|"
;
writeBoxMemberList
(
t
,
'+'
,
m_classDef
->
pubAttribs
,
m_classDef
);
writeBoxMemberList
(
t
,
'+'
,
m_classDef
->
pubStaticAttribs
,
m_classDef
);
writeBoxMemberList
(
t
,
'~'
,
m_classDef
->
pacAttribs
,
m_classDef
);
writeBoxMemberList
(
t
,
'~'
,
m_classDef
->
pacStaticAttribs
,
m_classDef
);
writeBoxMemberList
(
t
,
'#'
,
m_classDef
->
proAttribs
,
m_classDef
);
writeBoxMemberList
(
t
,
'#'
,
m_classDef
->
proStaticAttribs
,
m_classDef
);
writeBoxMemberList
(
t
,
'-'
,
m_classDef
->
priAttribs
,
m_classDef
);
writeBoxMemberList
(
t
,
'-'
,
m_classDef
->
priStaticAttribs
,
m_classDef
);
t
<<
"|"
;
writeBoxMemberList
(
t
,
'+'
,
m_classDef
->
pubMethods
,
m_classDef
);
writeBoxMemberList
(
t
,
'+'
,
m_classDef
->
pubStaticMethods
,
m_classDef
);
writeBoxMemberList
(
t
,
'+'
,
m_classDef
->
pubSlots
,
m_classDef
);
writeBoxMemberList
(
t
,
'~'
,
m_classDef
->
pacMethods
,
m_classDef
);
writeBoxMemberList
(
t
,
'~'
,
m_classDef
->
pacStaticMethods
,
m_classDef
);
writeBoxMemberList
(
t
,
'#'
,
m_classDef
->
proMethods
,
m_classDef
);
writeBoxMemberList
(
t
,
'#'
,
m_classDef
->
proStaticMethods
,
m_classDef
);
writeBoxMemberList
(
t
,
'#'
,
m_classDef
->
proSlots
,
m_classDef
);
writeBoxMemberList
(
t
,
'-'
,
m_classDef
->
priMethods
,
m_classDef
);
writeBoxMemberList
(
t
,
'-'
,
m_classDef
->
priStaticMethods
,
m_classDef
);
writeBoxMemberList
(
t
,
'-'
,
m_classDef
->
priSlots
,
m_classDef
);
t
<<
"}"
;
}
else
// old look
{
t
<<
convertLabel
(
m_label
);
}
t
<<
"
\"
,height=0.2,width=0.4"
;
if
(
m_isRoot
)
{
t
<<
",style=
\"
filled
\"
fontcolor=
\"
white
\"
"
;
t
<<
",
color=
\"
white
\"
, fillcolor=
\"
black
\"
,
style=
\"
filled
\"
fontcolor=
\"
white
\"
"
;
}
else
if
(
!
m_url
.
isEmpty
())
else
{
t
<<
",URL=
\"
"
<<
m_url
<<
Doxygen
::
htmlFileExtension
<<
"
\"
"
;
t
<<
",color=
\"
"
<<
labCol
<<
"
\"
"
;
if
(
!
m_url
.
isEmpty
())
{
int
anchorPos
=
m_url
.
findRev
(
'#'
);
if
(
anchorPos
==-
1
)
{
t
<<
",URL=
\"
"
<<
m_url
<<
Doxygen
::
htmlFileExtension
<<
"
\"
"
;
}
else
{
t
<<
",URL=
\"
"
<<
m_url
.
left
(
anchorPos
)
<<
Doxygen
::
htmlFileExtension
<<
m_url
.
right
(
m_url
.
length
()
-
anchorPos
)
<<
"
\"
"
;
}
}
}
t
<<
"];"
<<
endl
;
}
void
DotNode
::
writeArrow
(
QTextStream
&
t
,
GraphType
/* gt */
,
GraphType
gt
,
GraphOutputFormat
format
,
DotNode
*
cn
,
EdgeInfo
*
ei
,
...
...
@@ -465,10 +519,17 @@ void DotNode::writeArrow(QTextStream &t,
{
t
<<
",label=
\"
"
<<
ei
->
m_label
<<
"
\"
"
;
}
//if (arrowStyle[ei->m_color])
//{
// if (pointBack) t << ",arrowtail=\"empty\""; else t << ",arrowhead=\"empty\"";
//}
if
(
Config_getBool
(
"UML_LOOK"
)
&&
arrowStyle
[
ei
->
m_color
]
&&
(
gt
==
Inheritance
||
gt
==
Collaboration
)
)
{
if
(
pointBack
)
t
<<
",arrowtail=
\"
"
<<
arrowStyle
[
ei
->
m_color
]
<<
"
\"
"
;
else
t
<<
",arrowhead=
\"
"
<<
arrowStyle
[
ei
->
m_color
]
<<
"
\"
"
;
}
if
(
format
==
BITMAP
)
t
<<
",fontname=
\"
Helvetica
\"
"
;
t
<<
"];"
<<
endl
;
}
...
...
@@ -1015,7 +1076,7 @@ DotGfxHierarchyTable::~DotGfxHierarchyTable()
//--------------------------------------------------------------------
int
DotClassGraph
::
m_curNodeNumber
;
int
DotClassGraph
::
m_curNodeNumber
=
0
;
void
DotClassGraph
::
addClass
(
ClassDef
*
cd
,
DotNode
*
n
,
int
prot
,
const
char
*
label
,
int
distance
,
const
char
*
usedName
,
const
char
*
templSpec
,
bool
base
)
...
...
@@ -1096,7 +1157,7 @@ void DotClassGraph::buildGraph(ClassDef *cd,DotNode *n,int distance,bool base)
// cd->name().data(),distance,base);
// ---- Add inheritance relations
if
(
m_graphType
==
DotNode
::
Inheritance
)
if
(
m_graphType
==
DotNode
::
Inheritance
||
m_graphType
==
DotNode
::
Collaboration
)
{
BaseClassListIterator
bcli
(
base
?
*
cd
->
baseClasses
()
:
*
cd
->
subClasses
());
BaseClassDef
*
bcd
;
...
...
@@ -1108,10 +1169,8 @@ void DotClassGraph::buildGraph(ClassDef *cd,DotNode *n,int distance,bool base)
bcd
->
templSpecifiers
,
base
);
}
}
else
// m_graphType != Inheritance
if
(
m_graphType
==
DotNode
::
Collaboration
)
{
ASSERT
(
m_graphType
==
DotNode
::
Collaboration
);
// ---- Add usage relations
UsesClassDict
*
dict
=
...
...
@@ -1266,7 +1325,7 @@ void writeDotGraph(DotNode *root,
t
<<
" rankdir=LR;"
<<
endl
;
}
root
->
clearWriteFlag
();
root
->
write
(
t
,
gt
,
format
,
TRUE
,
TRUE
,
distance
,
backArrows
);
root
->
write
(
t
,
gt
,
format
,
gt
!=
DotNode
::
CallGraph
,
TRUE
,
distance
,
backArrows
);
if
(
renderParents
&&
root
->
m_parents
)
{
//printf("rendering parents!\n");
...
...
@@ -1356,11 +1415,14 @@ static void findMaximalDotGraph(DotNode *root,
}
//printf("lastFit=%d\n",lastFit);
bool
hasLRRank
=
(
lrRank
||
(
minDistance
==
1
&&
width
>
Config_getInt
(
"MAX_DOT_GRAPH_WIDTH"
)))
&&
!
Config_getBool
(
"UML_LOOK"
);
writeDotGraph
(
root
,
gt
,
format
,
baseName
,
lrRank
||
(
minDistance
==
1
&&
width
>
Config_getInt
(
"MAX_DOT_GRAPH_WIDTH"
))
,
hasLRRank
,
renderParents
,
lastFit
,
backArrows
...
...
@@ -1552,7 +1614,7 @@ void DotClassGraph::writeDEF(QTextStream &t)
//--------------------------------------------------------------------
int
DotInclDepGraph
::
m_curNodeNumber
;
int
DotInclDepGraph
::
m_curNodeNumber
=
0
;
void
DotInclDepGraph
::
buildGraph
(
DotNode
*
n
,
FileDef
*
fd
,
int
distance
)
{
...
...
@@ -1784,6 +1846,221 @@ void DotInclDepGraph::writeXML(QTextStream &t)
//-------------------------------------------------------------
int
DotCallGraph
::
m_curNodeNumber
=
0
;
DotCallGraph
::
DotCallGraph
(
MemberDef
*
md
,
int
maxRecursionDepth
)
{
m_maxDistance
=
0
;
m_recDepth
=
maxRecursionDepth
;
if
(
md
->
getGroupDef
())
{
m_diskName
=
md
->
getGroupDef
()
->
getOutputFileBase
()
+
"_"
+
md
->
getBodyAnchor
();
}
else
{
m_diskName
=
md
->
getOutputFileBase
()
+
"_"
+
md
->
anchor
();
}
QCString
uniqueId
;
if
(
md
->
getGroupDef
())
// member is in a group
{
uniqueId
=
md
->
getReference
()
+
"$"
+
md
->
getGroupDef
()
->
getOutputFileBase
()
+
"#"
+
md
->
getBodyAnchor
();
}
else
// ungrouped member
{
uniqueId
=
md
->
getReference
()
+
"$"
+
md
->
getOutputFileBase
()
+
"#"
+
md
->
anchor
();
}
m_startNode
=
new
DotNode
(
m_curNodeNumber
++
,
md
->
qualifiedName
(),
uniqueId
.
data
(),
0
,
// distance
TRUE
// root node
);
m_usedNodes
=
new
QDict
<
DotNode
>
(
1009
);
m_usedNodes
->
insert
(
uniqueId
,
m_startNode
);
buildGraph
(
m_startNode
,
md
,
1
);
}
DotCallGraph
::~
DotCallGraph
()
{
deleteNodes
(
m_startNode
);
delete
m_usedNodes
;
}
QCString
DotCallGraph
::
writeGraph
(
QTextStream
&
out
,
GraphOutputFormat
format
,
const
char
*
path
,
bool
generateImageMap
)
{
QDir
d
(
path
);
// store the original directory
if
(
!
d
.
exists
())
{
err
(
"Error: Output dir %s does not exist!
\n
"
,
path
);
exit
(
1
);
}
QCString
oldDir
=
convertToQCString
(
QDir
::
currentDirPath
());
// go to the html output directory (i.e. path)
QDir
::
setCurrent
(
d
.
absPath
());
QDir
thisDir
;
QCString
baseName
=
m_diskName
+
"_cgraph"
;
//baseName=convertNameToFile(baseName);
QCString
mapName
=
baseName
;
findMaximalDotGraph
(
m_startNode
,
QMIN
(
m_recDepth
,
m_maxDistance
),
baseName
,
thisDir
,
DotNode
::
CallGraph
,
format
,
TRUE
,
FALSE
,
FALSE
);
if
(
format
==
BITMAP
)
{
// run dot to create a bitmap image
QCString
dotArgs
(
maxCmdLine
);
QCString
imgExt
=
Config_getEnum
(
"DOT_IMAGE_FORMAT"
);
QCString
imgName
=
baseName
+
"."
+
imgExt
;
dotArgs
.
sprintf
(
"-T%s
\"
%s.dot
\"
-o
\"
%s
\"
"
,
imgExt
.
data
(),
baseName
.
data
(),
imgName
.
data
());
if
(
iSystem
(
Config_getString
(
"DOT_PATH"
)
+
"dot"
,
dotArgs
)
!=
0
)
{
err
(
"Problems running dot. Check your installation!
\n
"
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
}
checkDotResult
(
imgName
);
if
(
generateImageMap
)
{
// run dot again to create an image map
dotArgs
.
sprintf
(
"-Timap
\"
%s.dot
\"
-o
\"
%s.map
\"
"
,
baseName
.
data
(),
baseName
.
data
());
if
(
iSystem
(
Config_getString
(
"DOT_PATH"
)
+
"dot"
,
dotArgs
)
!=
0
)
{
err
(
"Problems running dot. Check your installation!
\n
"
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
}
out
<<
"<p><center><img src=
\"
"
<<
baseName
<<
"."
<<
imgExt
<<
"
\"
border=
\"
0
\"
usemap=
\"
#"
<<
mapName
<<
"_map
\"
alt=
\"
"
;
out
<<
"
\"
>"
;
out
<<
"</center>"
<<
endl
;
QString
tmpstr
;
QTextOStream
tmpout
(
&
tmpstr
);
convertMapFile
(
tmpout
,
baseName
+
".map"
);
if
(
!
tmpstr
.
isEmpty
())
{
out
<<
"<map name=
\"
"
<<
mapName
<<
"_map
\"
>"
<<
endl
;
out
<<
tmpstr
;
out
<<
"</map>"
<<
endl
;
}
thisDir
.
remove
(
baseName
+
".map"
);
}
}
else
if
(
format
==
EPS
)
{
// run dot to create a .eps image
QCString
dotArgs
(
maxCmdLine
);
dotArgs
.
sprintf
(
"-Tps
\"
%s.dot
\"
-o
\"
%s.eps
\"
"
,
baseName
.
data
(),
baseName
.
data
());
if
(
iSystem
(
Config_getString
(
"DOT_PATH"
)
+
"dot"
,
dotArgs
)
!=
0
)
{
err
(
"Problems running dot. Check your installation!
\n
"
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
}
int
width
,
height
;
if
(
!
readBoundingBoxEPS
(
baseName
+
".eps"
,
&
width
,
&
height
))
{
err
(
"Error: Could not extract bounding box from .eps!
\n
"
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
}
if
(
Config_getBool
(
"USE_PDFLATEX"
))
{
QCString
epstopdfArgs
(
maxCmdLine
);
epstopdfArgs
.
sprintf
(
"
\"
%s.eps
\"
--outfile=
\"
%s.pdf
\"
"
,
baseName
.
data
(),
baseName
.
data
());
if
(
iSystem
(
"epstopdf"
,
epstopdfArgs
,
TRUE
)
!=
0
)
{
err
(
"Error: Problems running epstopdf. Check your TeX installation!
\n
"
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
}
}
int
maxWidth
=
420
;
/* approx. page width in points */
out
<<
"
\\
begin{figure}[H]
\n
"
"
\\
begin{center}
\n
"
"
\\
leavevmode
\n
"
"
\\
includegraphics[width="
<<
QMIN
(
width
/
2
,
maxWidth
)
<<
"pt]{"
<<
baseName
<<
"}
\n
"
"
\\
end{center}
\n
"
"
\\
end{figure}
\n
"
;
}
if
(
Config_getBool
(
"DOT_CLEANUP"
))
thisDir
.
remove
(
baseName
+
".dot"
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
}
void
DotCallGraph
::
buildGraph
(
DotNode
*
n
,
MemberDef
*
md
,
int
distance
)
{
MemberSDict
*
refs
=
md
->
getReferencesMembers
();
if
(
refs
)
{
MemberSDict
::
Iterator
mri
(
*
refs
);
MemberDef
*
rmd
;
for
(;(
rmd
=
mri
.
current
());
++
mri
)
{
if
(
rmd
->
isFunction
())
{
QCString
uniqueId
;
if
(
rmd
->
getGroupDef
())
// member is in a group
{
uniqueId
=
rmd
->
getReference
()
+
"$"
+
rmd
->
getGroupDef
()
->
getOutputFileBase
()
+
"#"
+
rmd
->
getBodyAnchor
();
}
else
// ungrouped member
{
uniqueId
=
rmd
->
getReference
()
+
"$"
+
rmd
->
getOutputFileBase
()
+
"#"
+
rmd
->
anchor
();
}
DotNode
*
bn
=
m_usedNodes
->
find
(
uniqueId
);
if
(
bn
)
// file is already a node in the graph
{
n
->
addChild
(
bn
,
0
,
0
,
0
);
bn
->
addParent
(
n
);
bn
->
setDistance
(
distance
);
}
else
{
bn
=
new
DotNode
(
m_curNodeNumber
++
,
rmd
->
qualifiedName
(),
uniqueId
,
distance
);
if
(
distance
>
m_maxDistance
)
m_maxDistance
=
distance
;
n
->
addChild
(
bn
,
0
,
0
,
0
);
bn
->
addParent
(
n
);
m_usedNodes
->
insert
(
uniqueId
,
bn
);
// we use <=, i.s.o < to cause one more level than intended which is used to
// detect truncated nodes
if
(
distance
<=
m_recDepth
)
buildGraph
(
bn
,
rmd
,
distance
+
1
);
}
}
}
}
}
bool
DotCallGraph
::
isTrivial
()
const
{
return
m_startNode
->
m_children
==
0
;
}
//-------------------------------------------------------------
void
generateGraphLegend
(
const
char
*
path
)
{
QFile
dotFile
((
QCString
)
path
+
"/graph_legend.dot"
);
...
...
src/dot.h
View file @
0aa47e2a
...
...
@@ -29,6 +29,7 @@ class FileDef;
class
QTextStream
;
class
DotNodeList
;
class
ClassSDict
;
class
MemberDef
;
enum
GraphOutputFormat
{
BITMAP
,
EPS
};
...
...
@@ -48,7 +49,7 @@ struct EdgeInfo
class
DotNode
{
public
:
enum
GraphType
{
Dependency
,
Inheritance
,
Collaboration
,
Hierarchy
};
enum
GraphType
{
Dependency
,
Inheritance
,
Collaboration
,
Hierarchy
,
CallGraph
};
DotNode
(
int
n
,
const
char
*
lab
,
const
char
*
url
,
int
distance
=
0
,
bool
rootNode
=
FALSE
,
ClassDef
*
cd
=
0
);
~
DotNode
();
void
addChild
(
DotNode
*
n
,
...
...
@@ -96,6 +97,7 @@ class DotNode
friend
class
DotClassGraph
;
friend
class
DotInclDepGraph
;
friend
class
DotNodeList
;
friend
class
DotCallGraph
;
friend
void
writeDotGraph
(
DotNode
*
root
,
GraphType
gt
,
...
...
@@ -175,6 +177,25 @@ class DotInclDepGraph
int
m_recDepth
;
};
class
DotCallGraph
{
public
:
DotCallGraph
(
MemberDef
*
md
,
int
maxRecursionDepth
);
~
DotCallGraph
();
QCString
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
bool
writeImageMap
=
TRUE
);
void
buildGraph
(
DotNode
*
n
,
MemberDef
*
md
,
int
distance
);
bool
isTrivial
()
const
;
private
:
DotNode
*
m_startNode
;
static
int
m_curNodeNumber
;
QDict
<
DotNode
>
*
m_usedNodes
;
int
m_maxDistance
;
int
m_recDepth
;
QCString
m_diskName
;
};
void
generateGraphLegend
(
const
char
*
path
);
void
writeDotGraphFromFile
(
const
char
*
inFile
,
const
char
*
outDir
,
const
char
*
outFile
,
GraphOutputFormat
format
);
...
...
src/doxygen.cpp
View file @
0aa47e2a
...
...
@@ -110,6 +110,7 @@ NamespaceDef *Doxygen::globalScope = new NamespaceDef("<globalScope>",1,"<globa
QDict
<
RefList
>
*
Doxygen
::
xrefLists
=
new
QDict
<
RefList
>
;
// dictionary of cross-referenced item lists
bool
Doxygen
::
parseSourcesNeeded
=
FALSE
;
static
StringList
inputFiles
;
static
StringDict
excludeNameDict
(
1009
);
// sections
...
...
@@ -1262,6 +1263,7 @@ static void findUsingDeclImports(Entry *root)
newMd
->
setBriefDescription
(
md
->
briefDescription
(),
md
->
briefFile
(),
md
->
briefLine
());
}
newMd
->
setDefinition
(
md
->
definition
());
newMd
->
enableCallGraph
(
root
->
callGraph
);
newMd
->
setBitfields
(
md
->
bitfieldString
());
newMd
->
addSectionsToDefinition
(
root
->
anchors
);
newMd
->
setBodySegment
(
md
->
getStartBodyLine
(),
md
->
getEndBodyLine
());
...
...
@@ -1420,6 +1422,7 @@ static MemberDef *addVariableToClass(
md
->
setMaxInitLines
(
root
->
initLines
);
md
->
setMemberGroupId
(
root
->
mGrpId
);
md
->
setMemberSpecifiers
(
root
->
memSpec
);
md
->
enableCallGraph
(
root
->
callGraph
);
addMemberToGroups
(
root
,
md
);
//if (root->mGrpId!=-1)
//{
...
...
@@ -1588,6 +1591,7 @@ static MemberDef *addVariableToFile(
md
->
setMemberGroupId
(
root
->
mGrpId
);
md
->
setBodyDef
(
fd
);
md
->
setDefinition
(
def
);
md
->
enableCallGraph
(
root
->
callGraph
);
md
->
setExplicitExternal
(
root
->
explicitExternal
);
addMemberToGroups
(
root
,
md
);
//if (root->mGrpId!=-1)
...
...
@@ -2061,6 +2065,7 @@ static void addMethodToClass(Entry *root,ClassDef *cd,
}
if
(
def
.
left
(
7
)
==
"friend "
)
def
=
def
.
right
(
def
.
length
()
-
7
);
md
->
setDefinition
(
def
);
md
->
enableCallGraph
(
root
->
callGraph
);
Debug
::
print
(
Debug
::
Functions
,
0
,
" Func Member:
\n
"
...
...
@@ -2267,6 +2272,8 @@ static void buildFunctionList(Entry *root)
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
enableCallGraph
(
md
->
hasCallGraph
()
||
root
->
callGraph
);
// merge ingroup specifiers
if
(
md
->
getGroupDef
()
==
0
&&
root
->
groups
->
first
())
{
...
...
@@ -2350,6 +2357,7 @@ static void buildFunctionList(Entry *root)
def
.
data
()
);
md
->
setDefinition
(
def
);
md
->
enableCallGraph
(
root
->
callGraph
);
//if (root->mGrpId!=-1)
//{
// md->setMemberGroup(memberGroupDict[root->mGrpId]);
...
...
@@ -2486,6 +2494,9 @@ static void findFriends()
fmd
->
setBodyMember
(
mmd
);
}
mmd
->
setDocsForDefinition
(
fmd
->
isDocsForDefinition
());
mmd
->
enableCallGraph
(
mmd
->
hasCallGraph
()
||
fmd
->
hasCallGraph
());
fmd
->
enableCallGraph
(
mmd
->
hasCallGraph
()
||
fmd
->
hasCallGraph
());
}
}
}
...
...
@@ -2643,6 +2654,9 @@ static void transferFunctionDocumentation()
mdef
->
setMemberDeclaration
(
mdec
);
mdec
->
setMemberDefinition
(
mdef
);
mdef
->
enableCallGraph
(
mdec
->
hasCallGraph
()
||
mdef
->
hasCallGraph
());
mdec
->
enableCallGraph
(
mdec
->
hasCallGraph
()
||
mdef
->
hasCallGraph
());
}
}
}
...
...
@@ -3760,6 +3774,7 @@ static void addMemberDocs(Entry *root,
// strip extern specifier
if
(
fDecl
.
left
(
7
)
==
"extern "
)
fDecl
=
fDecl
.
right
(
fDecl
.
length
()
-
7
);
md
->
setDefinition
(
fDecl
);
md
->
enableCallGraph
(
root
->
callGraph
);
ClassDef
*
cd
=
md
->
getClassDef
();
NamespaceDef
*
nd
=
md
->
getNamespaceDef
();
QCString
fullName
;
...
...
@@ -3857,6 +3872,8 @@ static void addMemberDocs(Entry *root,
md
->
setRefItems
(
root
->
sli
);
}
md
->
enableCallGraph
(
md
->
hasCallGraph
()
||
root
->
callGraph
);
//md->setDefFile(root->fileName);
//md->setDefLine(root->startLine);
md
->
mergeMemberSpecifiers
(
root
->
memSpec
);
...
...
@@ -4701,6 +4718,7 @@ static void findMember(Entry *root,
}
md
->
setMemberClass
(
cd
);
md
->
setDefinition
(
funcDecl
);
md
->
enableCallGraph
(
root
->
callGraph
);
QCString
doc
=
getOverloadDocs
();
doc
+=
"<p>"
;
doc
+=
root
->
doc
;
...
...
@@ -4855,6 +4873,7 @@ static void findMember(Entry *root,
md
->
setMemberClass
(
cd
);
md
->
setMemberSpecifiers
(
root
->
memSpec
);
md
->
setDefinition
(
funcDecl
);
md
->
enableCallGraph
(
root
->
callGraph
);
md
->
setDocumentation
(
root
->
doc
,
root
->
docFile
,
root
->
docLine
);
md
->
setDocsForDefinition
(
!
root
->
proto
);
md
->
setPrototype
(
root
->
proto
);
...
...
@@ -5112,6 +5131,7 @@ static void findEnums(Entry *root)
// root->name.data(),root->bodyLine,root->fileName.data(),root->protection);
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
setMemberGroupId
(
root
->
mGrpId
);
md
->
enableCallGraph
(
root
->
callGraph
);
//if (root->mGrpId!=-1)
//{
// md->setMemberGroup(memberGroupDict[root->mGrpId]);
...
...
@@ -5534,6 +5554,12 @@ static void generateFileSources()
msg
(
"Generating code for file %s...
\n
"
,
fd
->
docName
().
data
());
fd
->
writeSource
(
*
outputList
);
}
else
if
(
!
fd
->
isReference
()
&&
(
Doxygen
::
parseSourcesNeeded
||
Config_getBool
(
"CALL_GRAPH"
)))
{
msg
(
"Parsing code for file %s...
\n
"
,
fd
->
docName
().
data
());
fd
->
parseSource
();
}
}
}
}
...
...
@@ -6405,7 +6431,7 @@ static void generateSearchIndex()
QTextStream
t
(
&
f
);
t
<<
"#!/bin/sh"
<<
endl
<<
"DOXYSEARCH="
<<
Config_getString
(
"BIN_ABSPATH"
)
<<
"/doxysearch"
<<
endl
<<
"DOXYPATH=
"
<<
Config_getString
(
"DOC_ABSPATH"
)
<<
" "
;
<<
"DOXYPATH=
\"
"
<<
Config_getString
(
"DOC_ABSPATH"
)
<<
" "
;
QStrList
&
extDocPaths
=
Config_getList
(
"EXT_DOC_PATHS"
);
char
*
s
=
extDocPaths
.
first
();
...
...
@@ -6415,7 +6441,7 @@ static void generateSearchIndex()
s
=
extDocPaths
.
next
();
}
t
<<
endl
t
<<
"
\"
"
<<
endl
<<
"if [ -f $DOXYSEARCH ]"
<<
endl
<<
"then"
<<
endl
<<
" $DOXYSEARCH $DOXYPATH"
<<
endl
...
...
src/doxygen.h
View file @
0aa47e2a
...
...
@@ -93,6 +93,7 @@ class Doxygen
static
NamespaceDef
*
globalScope
;
static
QDict
<
RefList
>
*
xrefLists
;
// array of xref lists: todo, test, bug, deprecated ...
static
QCString
htmlFileExtension
;
static
bool
parseSourcesNeeded
;
};
void
initDoxygen
();
...
...
src/entry.cpp
View file @
0aa47e2a
...
...
@@ -81,6 +81,7 @@ Entry::Entry(const Entry &e)
memSpec
=
e
.
memSpec
;
initializer
=
e
.
initializer
;
initLines
=
e
.
initLines
;
callGraph
=
e
.
callGraph
;
//todoId = e.todoId;
//testId = e.testId;
//bugId = e.bugId;
...
...
@@ -240,6 +241,7 @@ void Entry::reset()
bodyLine
=
-
1
;
endBodyLine
=
-
1
;
mGrpId
=
-
1
;
callGraph
=
FALSE
;
//todoId = 0;
//testId = 0;
//bugId = 0;
...
...
src/entry.h
View file @
0aa47e2a
...
...
@@ -27,7 +27,7 @@ enum MethodTypes { Method, Signal, Slot, DCOP, Property, Event };
struct
ListItemInfo
{
const
char
*
type
;
QCString
type
;
int
itemId
;
};
...
...
@@ -253,6 +253,7 @@ class Entry
int
memSpec
;
//!< member specifiers
int
initLines
;
//!< define/variable initializer lines to show
bool
subGrouping
;
//!< automatically group class members?
bool
callGraph
;
//!< do we need to draw the call graph?
Specifier
virt
;
//!< virtualness of the entry
Entry
*
parent
;
//!< parent node in the tree
QCString
type
;
//!< member type
...
...
src/filedef.cpp
View file @
0aa47e2a
...
...
@@ -32,6 +32,25 @@
#include "docparser.h"
//#include "xml.h"
class
DevNullCodeDocInterface
:
public
BaseCodeDocInterface
{
public
:
virtual
void
codify
(
const
char
*
)
{}
virtual
void
writeCodeLink
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
{}
virtual
void
writeLineNumber
(
const
char
*
,
const
char
*
,
const
char
*
,
int
)
{}
virtual
void
startCodeLine
()
{}
virtual
void
endCodeLine
()
{}
virtual
void
startCodeAnchor
(
const
char
*
)
{}
virtual
void
endCodeAnchor
()
{}
virtual
void
startFontClass
(
const
char
*
)
{}
virtual
void
endFontClass
()
{}
virtual
void
writeCodeAnchor
(
const
char
*
)
{}
};
/*! create a new file definition, where \a p is the file path,
\a the file name, and \a ref is an HTML anchor name if the
file was read from a tag file or 0 otherwise
...
...
@@ -487,6 +506,14 @@ void FileDef::writeSource(OutputList &ol)
ol
.
enableAll
();
}
void
FileDef
::
parseSource
()
{
DevNullCodeDocInterface
devNullIntf
;
parseCode
(
devNullIntf
,
0
,
fileToString
(
absFilePath
(),
Config_getBool
(
"FILTER_SOURCE_FILES"
)),
FALSE
,
0
,
this
);
}
void
FileDef
::
addMembersToMemberGroup
()
{
...
...
src/filedef.h
View file @
0aa47e2a
...
...
@@ -122,6 +122,7 @@ class FileDef : public Definition
void
writeDetailedDocumentation
(
OutputList
&
ol
);
void
writeDocumentation
(
OutputList
&
ol
);
void
writeSource
(
OutputList
&
ol
);
void
parseSource
();
friend
void
generatedFileNames
();
void
insertMember
(
MemberDef
*
md
);
void
insertClass
(
ClassDef
*
cd
);
...
...
src/ftvhelp.cpp
View file @
0aa47e2a
...
...
@@ -437,13 +437,17 @@ int FTVHelp::decContentsDepth()
{
//int i; for (i=0;i<m_dc;i++) m_cts << " ";
m_indent
--
;
QList
<
FTVNode
>
*
nl
=
&
m_indentNodes
[
m_indent
];
FTVNode
*
parent
=
nl
->
getLast
();
QList
<
FTVNode
>
*
children
=
&
m_indentNodes
[
m_indent
+
1
];
while
(
!
children
->
isEmpty
())
ASSERT
(
m_indent
>
0
);
if
(
m_indent
>
0
)
{
parent
->
children
.
append
(
children
->
take
(
0
));
m_indent
--
;
QList
<
FTVNode
>
*
nl
=
&
m_indentNodes
[
m_indent
];
FTVNode
*
parent
=
nl
->
getLast
();
QList
<
FTVNode
>
*
children
=
&
m_indentNodes
[
m_indent
+
1
];
while
(
!
children
->
isEmpty
())
{
parent
->
children
.
append
(
children
->
take
(
0
));
}
}
return
m_indent
;
}
...
...
src/htmldocvisitor.cpp
View file @
0aa47e2a
...
...
@@ -198,6 +198,7 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
m_t
<<
s
->
text
();
break
;
case
DocVerbatim
:
:
LatexOnly
:
case
DocVerbatim
:
:
XmlOnly
:
/* nothing */
break
;
}
...
...
src/htmlgen.cpp
View file @
0aa47e2a
...
...
@@ -1053,6 +1053,15 @@ void HtmlGenerator::endInclDepGraph(DotInclDepGraph &g)
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"HTML_OUTPUT"
));
}
void
HtmlGenerator
::
startCallGraph
()
{
}
void
HtmlGenerator
::
endCallGraph
(
DotCallGraph
&
g
)
{
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"HTML_OUTPUT"
));
}
void
HtmlGenerator
::
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
g
)
{
g
.
writeGraph
(
t
,
Config_getString
(
"HTML_OUTPUT"
));
...
...
src/htmlgen.h
View file @
0aa47e2a
...
...
@@ -185,6 +185,8 @@ class HtmlGenerator : public OutputGenerator
void
endDotGraph
(
DotClassGraph
&
g
);
void
startInclDepGraph
();
void
endInclDepGraph
(
DotInclDepGraph
&
g
);
void
startCallGraph
();
void
endCallGraph
(
DotCallGraph
&
g
);
void
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
g
);
void
startTextBlock
(
bool
)
{}
...
...
src/index.cpp
View file @
0aa47e2a
...
...
@@ -1298,6 +1298,7 @@ void writeAlphabeticalClassList(OutputList &ol)
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
)
{
int
index
=
getPrefixIndex
(
cd
->
className
());
//printf("name=%s index=%d\n",cd->className().data(),index);
if
(
toupper
(
cd
->
className
().
at
(
index
))
!=
startLetter
)
// new begin letter => new header
{
startLetter
=
toupper
(
cd
->
className
().
at
(
index
));
...
...
@@ -2270,6 +2271,13 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
{
HtmlHelp
*
htmlHelp
=
0
;
FTVHelp
*
ftvHelp
=
0
;
if
(
level
>
20
)
{
warn
(
gd
->
getDefFileName
(),
gd
->
getDefLine
(),
"Warning: maximum nesting level exceeded for group %s: check for possible recursive group relation!
\n
"
,
gd
->
name
().
data
()
);
return
;
}
bool
&
generateHtml
=
Config_getBool
(
"GENERATE_HTML"
)
;
bool
hasHtmlHelp
=
generateHtml
&&
Config_getBool
(
"GENERATE_HTMLHELP"
);
bool
hasFtvHelp
=
generateHtml
&&
Config_getBool
(
"GENERATE_TREEVIEW"
);
...
...
@@ -2433,8 +2441,8 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
md
=
members
->
next
();
}
if
(
htmlHelp
)
htmlHelp
->
decContentsDepth
();
if
(
ftvHelp
)
ftvHelp
->
decContentsDepth
();
if
(
htmlHelp
&&
!
first
)
htmlHelp
->
decContentsDepth
();
if
(
ftvHelp
&&
!
first
)
ftvHelp
->
decContentsDepth
();
}
}
...
...
src/latexdocvisitor.cpp
View file @
0aa47e2a
...
...
@@ -252,6 +252,7 @@ void LatexDocVisitor::visit(DocVerbatim *s)
m_t
<<
"
\\
end{verbatim}
\\
normalsize"
<<
endl
;
break
;
case
DocVerbatim
:
:
HtmlOnly
:
case
DocVerbatim
:
:
XmlOnly
:
/* nothing */
break
;
case
DocVerbatim
:
:
LatexOnly
:
...
...
@@ -295,8 +296,8 @@ void LatexDocVisitor::visit(DocInclude *inc)
void
LatexDocVisitor
::
visit
(
DocIncOperator
*
op
)
{
printf
(
"DocIncOperator: type=%d first=%d, last=%d text=`%s'
\n
"
,
op
->
type
(),
op
->
isFirst
(),
op
->
isLast
(),
op
->
text
().
data
());
//
printf("DocIncOperator: type=%d first=%d, last=%d text=`%s'\n",
//
op->type(),op->isFirst(),op->isLast(),op->text().data());
if
(
op
->
isFirst
())
{
if
(
!
m_hide
)
m_t
<<
"
\n\n\\
footnotesize
\\
begin{verbatim}"
;
...
...
src/latexgen.cpp
View file @
0aa47e2a
...
...
@@ -1388,6 +1388,15 @@ void LatexGenerator::endInclDepGraph(DotInclDepGraph &g)
g
.
writeGraph
(
t
,
EPS
,
Config_getString
(
"LATEX_OUTPUT"
));
}
void
LatexGenerator
::
startCallGraph
()
{
}
void
LatexGenerator
::
endCallGraph
(
DotCallGraph
&
g
)
{
g
.
writeGraph
(
t
,
EPS
,
Config_getString
(
"LATEX_OUTPUT"
));
}
void
LatexGenerator
::
startDescription
()
{
t
<<
"
\\
begin{description}"
<<
endl
;
...
...
src/latexgen.h
View file @
0aa47e2a
...
...
@@ -261,6 +261,8 @@ class LatexGenerator : public OutputGenerator
void
endDotGraph
(
DotClassGraph
&
);
void
startInclDepGraph
();
void
endInclDepGraph
(
DotInclDepGraph
&
);
void
startCallGraph
();
void
endCallGraph
(
DotCallGraph
&
);
void
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
)
{}
void
startTextBlock
(
bool
)
{}
...
...
src/mandocvisitor.cpp
View file @
0aa47e2a
...
...
@@ -198,8 +198,7 @@ void ManDocVisitor::visit(DocVerbatim *s)
m_firstCol
=
TRUE
;
break
;
case
DocVerbatim
:
:
HtmlOnly
:
/* nothing */
break
;
case
DocVerbatim
:
:
XmlOnly
:
case
DocVerbatim
:
:
LatexOnly
:
/* nothing */
break
;
...
...
src/mangen.h
View file @
0aa47e2a
...
...
@@ -227,6 +227,8 @@ class ManGenerator : public OutputGenerator
void
endDotGraph
(
DotClassGraph
&
)
{}
void
startInclDepGraph
()
{}
void
endInclDepGraph
(
DotInclDepGraph
&
)
{}
void
startCallGraph
()
{}
void
endCallGraph
(
DotCallGraph
&
)
{}
void
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
)
{}
void
startTextBlock
(
bool
)
{}
...
...
src/memberdef.cpp
View file @
0aa47e2a
...
...
@@ -31,6 +31,7 @@
#include "groupdef.h"
#include "defargs.h"
#include "docparser.h"
#include "dot.h"
//#include "xml.h"
...
...
@@ -282,6 +283,7 @@ MemberDef::MemberDef(const char *df,int dl,
//scopeTAL=0;
//membTAL=0;
m_defTmpArgLists
=
0
;
m_hasCallGraph
=
FALSE
;
initLines
=
0
;
type
=
t
;
if
(
mt
==
Typedef
&&
type
.
left
(
8
)
==
"typedef "
)
type
=
type
.
mid
(
8
);
...
...
@@ -1568,7 +1570,24 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
//if (Config_getBool("EXTRACT_ALL") && !hasDocs) ol.enable(OutputGenerator::Latex);
ol
.
popGeneratorState
();
if
((
m_hasCallGraph
||
Config_getBool
(
"CALL_GRAPH"
))
&&
isFunction
()
&&
Config_getBool
(
"HAVE_DOT"
)
)
{
DotCallGraph
callGraph
(
this
,
Config_getInt
(
"MAX_DOT_GRAPH_DEPTH"
));
if
(
!
callGraph
.
isTrivial
())
{
msg
(
"Generating call graph for function %s
\n
"
,
qualifiedName
().
data
());
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
newParagraph
();
ol
.
startCallGraph
();
//ol.parseText(theTranslator->trCallGraph());
ol
.
endCallGraph
(
callGraph
);
ol
.
enableAll
();
}
}
}
}
void
MemberDef
::
warnIfUndocumented
()
...
...
@@ -1992,3 +2011,9 @@ void MemberDef::findSectionsInDocumentation()
docFindSections
(
documentation
(),
this
,
0
,
docFile
());
}
void
MemberDef
::
enableCallGraph
(
bool
e
)
{
m_hasCallGraph
=
e
;
if
(
e
)
Doxygen
::
parseSourcesNeeded
=
TRUE
;
}
src/memberdef.h
View file @
0aa47e2a
...
...
@@ -225,6 +225,10 @@ class MemberDef : public Definition
//void setIndentDepth( int i) { indDepth=i; }
//int indentDepth() { return indDepth; }
// callgraph related members
bool
hasCallGraph
()
const
{
return
m_hasCallGraph
;
}
void
enableCallGraph
(
bool
e
);
bool
visibleMemberGroup
(
bool
hideNoHeader
);
MemberDef
*
templateMaster
()
const
{
return
m_templateMaster
;
}
...
...
@@ -292,6 +296,7 @@ class MemberDef : public Definition
bool
annScope
;
// member is part of an annoymous scope
bool
annUsed
;
bool
annShown
;
bool
m_hasCallGraph
;
//int indDepth; // indentation depth for this member if inside an annonymous scope
int
maxInitLines
;
// when the initializer will be displayed
int
userInitLines
;
// result of explicit \hideinitializer or \showinitializer
...
...
src/outputgen.h
View file @
0aa47e2a
...
...
@@ -29,6 +29,7 @@
class
ClassDiagram
;
class
DotClassGraph
;
class
DotInclDepGraph
;
class
DotCallGraph
;
class
DotGfxHierarchyTable
;
class
DocNode
;
class
MemberDef
;
...
...
@@ -334,6 +335,8 @@ class OutputGenerator : public BaseOutputDocInterface
virtual
void
endDotGraph
(
DotClassGraph
&
g
)
=
0
;
virtual
void
startInclDepGraph
()
=
0
;
virtual
void
endInclDepGraph
(
DotInclDepGraph
&
g
)
=
0
;
virtual
void
startCallGraph
()
=
0
;
virtual
void
endCallGraph
(
DotCallGraph
&
g
)
=
0
;
virtual
void
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
g
)
=
0
;
virtual
void
startQuickIndexItem
(
const
char
*
s
,
const
char
*
l
)
=
0
;
virtual
void
endQuickIndexItem
()
=
0
;
...
...
src/outputlist.cpp
View file @
0aa47e2a
...
...
@@ -197,6 +197,7 @@ void OutputList::parseDoc(const char *fileName,int startLine,
const
char
*
exampleName
,
SectionDict
*
sections
)
{
int
count
=
0
;
OutputGenerator
*
og
=
outputs
->
first
();
while
(
og
)
{
...
...
@@ -205,9 +206,19 @@ void OutputList::parseDoc(const char *fileName,int startLine,
}
if
(
count
==
0
)
return
;
// no output formats enabled.
DocNode
*
root
=
validatingParseDoc
(
fileName
,
startLine
,
clName
,
md
,
docStr
,
isExample
,
exampleName
,
sections
);
DocNode
*
root
=
0
;
if
(
docStr
.
length
()
==
0
||
docStr
.
at
(
docStr
.
length
()
-
1
)
==
'\n'
)
{
root
=
validatingParseDoc
(
fileName
,
startLine
,
clName
,
md
,
docStr
,
isExample
,
exampleName
,
sections
);
}
else
{
root
=
validatingParseDoc
(
fileName
,
startLine
,
clName
,
md
,
docStr
+
"
\n
"
,
isExample
,
exampleName
,
sections
);
}
og
=
outputs
->
first
();
while
(
og
)
...
...
@@ -314,6 +325,7 @@ FORALL1(char a1,a1)
FORALL1
(
int
a1
,
a1
)
FORALL1
(
DotClassGraph
&
a1
,
a1
)
FORALL1
(
DotInclDepGraph
&
a1
,
a1
)
FORALL1
(
DotCallGraph
&
a1
,
a1
)
FORALL1
(
DotGfxHierarchyTable
&
a1
,
a1
)
FORALL1
(
SectionTypes
a1
,
a1
)
#if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE)
...
...
src/outputlist.h
View file @
0aa47e2a
...
...
@@ -312,6 +312,10 @@ class OutputList : public OutputDocInterface
{
forall
(
&
OutputGenerator
::
startInclDepGraph
);
}
void
endInclDepGraph
(
DotInclDepGraph
&
g
)
{
forall
(
&
OutputGenerator
::
endInclDepGraph
,
g
);
}
void
startCallGraph
()
{
forall
(
&
OutputGenerator
::
startCallGraph
);
}
void
endCallGraph
(
DotCallGraph
&
g
)
{
forall
(
&
OutputGenerator
::
endCallGraph
,
g
);
}
void
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
g
)
{
forall
(
&
OutputGenerator
::
writeGraphicalHierarchy
,
g
);
}
void
startTextBlock
(
bool
dense
=
FALSE
)
...
...
@@ -376,6 +380,7 @@ class OutputList : public OutputDocInterface
FORALLPROTO1
(
int
);
FORALLPROTO1
(
DotClassGraph
&
);
FORALLPROTO1
(
DotInclDepGraph
&
);
FORALLPROTO1
(
DotCallGraph
&
);
FORALLPROTO1
(
DotGfxHierarchyTable
&
);
FORALLPROTO1
(
SectionTypes
);
#if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE)
...
...
src/perlmodgen.cpp
View file @
0aa47e2a
...
...
@@ -619,6 +619,7 @@ void PerlModDocVisitor::visit(DocVerbatim *s)
case
DocVerbatim
:
:
Verbatim
:
type
=
"preformatted"
;
break
;
case
DocVerbatim
:
:
HtmlOnly
:
type
=
"htmlonly"
;
break
;
case
DocVerbatim
:
:
LatexOnly
:
type
=
"latexonly"
;
break
;
case
DocVerbatim
:
:
XmlOnly
:
type
=
"xmlonly"
;
break
;
}
openItem
(
type
);
m_output
.
addFieldQuotedString
(
"content"
,
s
->
text
());
...
...
src/pre.l
View file @
0aa47e2a
...
...
@@ -1321,12 +1321,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
g_guardExpr="! ";
BEGIN(DefinedExpr1);
}
<Command>"if"/[ \t(] {
<Command>"if"/[ \t(
!
] {
incrLevel();
g_guardExpr.resize(0);
BEGIN(Guard);
}
<Command>("elif"|"else"{B}*"if")/[ \t(] {
<Command>("elif"|"else"{B}*"if")/[ \t(
!
] {
if (!otherCaseDone())
{
g_guardExpr.resize(0);
...
...
@@ -1354,7 +1354,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<Command>"undef"{B}+ {
BEGIN(UndefName);
}
<Command>("elif"|"else"{B}*"if")/[ \t(] {
<Command>("elif"|"else"{B}*"if")/[ \t(
!
] {
if (!otherCaseDone())
{
g_guardExpr.resize(0);
...
...
@@ -1445,7 +1445,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<SkipCPPBlock>^{B}*"#" { BEGIN(SkipCommand); }
<SkipCPPBlock>^{B}*/[^#] { BEGIN(SkipLine); }
<SkipCPPBlock>.
<SkipCommand>"if"(("n")?("def"))?/[ \t(] {
<SkipCommand>"if"(("n")?("def"))?/[ \t(
!
] {
incrLevel();
g_ifcount++;
//printf("#if... depth=%d\n",g_ifcount);
...
...
@@ -1459,7 +1459,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN(Start);
}
}
<SkipCommand>("elif"|"else"{B}*"if")/[ \t(] {
<SkipCommand>("elif"|"else"{B}*"if")/[ \t(
!
] {
if (g_ifcount==0)
{
if (!otherCaseDone())
...
...
src/rtfdocvisitor.cpp
View file @
0aa47e2a
...
...
@@ -304,9 +304,8 @@ void RTFDocVisitor::visit(DocVerbatim *s)
m_t
<<
"}"
<<
endl
;
break
;
case
DocVerbatim
:
:
HtmlOnly
:
/* nothing */
break
;
case
DocVerbatim
:
:
LatexOnly
:
case
DocVerbatim
:
:
XmlOnly
:
/* nothing */
break
;
}
...
...
src/rtfgen.cpp
View file @
0aa47e2a
...
...
@@ -2223,6 +2223,27 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
DBG_RTF
(
t
<<
"{
\\
comment (endInclDepGraph)}"
<<
endl
)
}
void
RTFGenerator
::
startCallGraph
()
{
DBG_RTF
(
t
<<
"{
\\
comment (startCallGraph)}"
<<
endl
)
}
void
RTFGenerator
::
endCallGraph
(
DotCallGraph
&
g
)
{
newParagraph
();
QCString
fileName
=
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"RTF_OUTPUT"
),
FALSE
);
// display the file
t
<<
"{"
<<
endl
;
t
<<
rtf_Style_Reset
<<
endl
;
t
<<
"
\\
par
\\
pard
\\
qc {
\\
field
\\
flddirty {
\\
*
\\
fldinst INCLUDEPICTURE "
;
t
<<
fileName
<<
"."
<<
Config_getEnum
(
"DOT_IMAGE_FORMAT"
);
t
<<
"
\\\\
d
\\\\
*MERGEFORMAT}{
\\
fldrslt IMAGE}}
\\
par"
<<
endl
;
t
<<
"}"
<<
endl
;
DBG_RTF
(
t
<<
"{
\\
comment (endCallGraph)}"
<<
endl
)
}
/** Tests the integrity of the result by counting brackets.
*
*/
...
...
src/rtfgen.h
View file @
0aa47e2a
...
...
@@ -223,6 +223,8 @@ class RTFGenerator : public OutputGenerator
void
endDotGraph
(
DotClassGraph
&
);
void
startInclDepGraph
();
void
endInclDepGraph
(
DotInclDepGraph
&
);
void
startCallGraph
();
void
endCallGraph
(
DotCallGraph
&
);
void
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
)
{}
void
startMemberGroupHeader
(
bool
);
...
...
src/scanner.l
View file @
0aa47e2a
...
...
@@ -289,23 +289,30 @@ static void addXRefItem(const char *listName,const char *itemTitle,const char *l
{
if (listName==0) return;
//printf("addXRefItem(%s,%s,%s)\n",listName,itemTitle,listTitle);
ListItemInfo *lii=0;
RefList *refList = Doxygen::xrefLists->find(listName);
if (refList==0) // new list
{
refList = new RefList(listName,listTitle,itemTitle);
Doxygen::xrefLists->insert(listName,refList);
//printf("new list!\n");
}
if (current->sli)
{
QListIterator<ListItemInfo> slii(*current->sli);
for (slii.toFirst();(lii=slii.current());++slii)
{
if (strcmp(lii->type,listName)==0) break;
if (strcmp(lii->type,listName)==0)
{
//printf("found %s lii->type=%s\n",listName,lii->type);
break;
}
}
}
if (lii) // already found item of same type before
{
//printf("listName=%s item id = %d\n",listName,lii->itemId);
RefItem *item = refList->getRefItem(lii->itemId);
ASSERT(item!=0);
item->text += " <p>";
...
...
@@ -315,6 +322,7 @@ static void addXRefItem(const char *listName,const char *itemTitle,const char *l
else // new item
{
int itemId = refList->addRefItem();
//printf("listName=%s item id = %d\n",listName,itemId);
char anchorLabel[1024];
sprintf(anchorLabel,"_%s%06d",listName,itemId);
RefItem *item = refList->getRefItem(itemId);
...
...
@@ -484,7 +492,7 @@ static int yyread(char *buf,int max_size)
/* start command character */
CMD ("\\"|"@")
SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"xrefitem"|"ingroup"|"
latexonly"|"ht
mlonly"|"{"|"verbatim"|"dotfile"|"defgroup"|"addtogroup"|"weakgroup"|"class"|"namespace"|"union"|"struct"|"fn"|"var"|"typedef"|"def"|"overload")|("<"{PRE}">")
SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"xrefitem"|"ingroup"|"
callgraph"|"latexonly"|"htmlonly"|"x
mlonly"|"{"|"verbatim"|"dotfile"|"defgroup"|"addtogroup"|"weakgroup"|"class"|"namespace"|"union"|"struct"|"fn"|"var"|"typedef"|"def"|"overload")|("<"{PRE}">")
BN [ \t\n\r]
BL [ \t\r]*"\n"
B [ \t]
...
...
@@ -1365,7 +1373,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->bodyLine = yyLineNr;
BEGIN( Define );
}
<FindMembers,ReadBody,ReadNSBody>{B}*"#"{B}+[0-9]+{B}+/"\"" { /* line control directive */
<FindMembers,ReadBody,ReadNSBody
,SkipCurly,SkipCurlyCpp
>{B}*"#"{B}+[0-9]+{B}+/"\"" { /* line control directive */
yyLineNr = atoi(&yytext[1]);
//printf("setting line number to %d\n",yyLineNr);
lastPreLineCtrlContext = YY_START;
...
...
@@ -3900,7 +3908,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
pSkipDoc=¤t->brief;
BEGIN(SkipCode);
}
<SkipVerbatim>{CMD}("endverbatim"|"endlatexonly"|"endhtmlonly")/[^a-z_A-Z0-9] {
<SkipVerbatim>{CMD}("endverbatim"|"endlatexonly"|"endhtmlonly"
|"endxmlonly"
)/[^a-z_A-Z0-9] {
current->doc+=yytext;
BEGIN(lastVerbState);
}
...
...
@@ -4016,13 +4024,13 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief>("\\\\"|"@@")"f"[$\[\]] {
current->doc += yytext;
}
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief>{CMD}"f$" {
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief
,CopyArgComment,CopyArgCommentLine
>{CMD}"f$" {
lastFormulaContext = YY_START;
formulaText="$";
insideFormula=TRUE;
BEGIN(ReadFormulaShort);
}
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief>{CMD}"f[" {
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief
,CopyArgComment,CopyArgCommentLine
>{CMD}"f[" {
lastFormulaContext = YY_START;
formulaText="\\[";
insideFormula=TRUE;
...
...
@@ -4036,9 +4044,18 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
lastFormulaContext==AfterDocBrief ||
lastFormulaContext==AfterDocLine
)
{
current->brief += addFormula();
}
else if (lastFormulaContext==CopyArgComment ||
lastFormulaContext==CopyArgCommentLine)
{
fullArgString += addFormula();
}
else
{
current->doc += addFormula();
}
insideFormula=FALSE;
BEGIN(lastFormulaContext);
}
...
...
@@ -4062,9 +4079,18 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
lastFormulaContext==AfterDocBrief ||
lastFormulaContext==AfterDocLine
)
{
current->brief += addFormula();
}
else if (lastFormulaContext==CopyArgComment ||
lastFormulaContext==CopyArgCommentLine)
{
fullArgString += addFormula();
}
else
{
current->doc += addFormula();
}
insideFormula=FALSE;
BEGIN(lastFormulaContext);
}
...
...
@@ -4251,6 +4277,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"hideinitializer"/[^a-z_A-Z0-9] {
current->initLines = 0; // OFF
}
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"callgraph"/[^a-z_A-Z0-9] {
current->callGraph = TRUE; // ON
}
<GroupName>{ID} {
current->groups->append(
new Grouping(yytext, Grouping::GROUPING_INGROUP)
...
...
src/translator_fr.h
View file @
0aa47e2a
...
...
@@ -45,8 +45,6 @@
* -------------+------------------------------------------------------------
* 2003-03-29 | Update for new since 1.3
* -------------+------------------------------------------------------------
* 2003-03-29 | Changed fonction into m‚thode.
* -------------+------------------------------------------------------------
*/
#ifndef TRANSLATOR_FR_H
#define TRANSLATOR_FR_H
...
...
@@ -83,35 +81,35 @@ class TranslatorFrench : public Translator
/*! used in the compound documentation before a list of related functions. */
QCString
trRelatedFunctions
()
{
return
"Fonctions associ
‚
es"
;
}
{
return
"Fonctions associ
é
es"
;
}
/*! subscript for the related functions. */
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
()
{
return
"Description d
‚taill‚
e"
;
}
{
return
"Description d
étaillé
e"
;
}
/*! header that is put before the list of typedefs. */
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
()
{
return
"Documentation des
‚num‚rations imbriqu‚
es"
;
}
{
return
"Documentation des
énumérations imbriqué
es"
;
}
/*! header that is put before the list of member functions. */
QCString
trMemberFunctionDocumentation
()
{
return
"Documentation des m
‚
thodes"
;
}
{
return
"Documentation des m
é
thodes"
;
}
/*! header that is put before the list of member attributes. */
QCString
trMemberDataDocumentation
()
{
return
"Documentation des donn
‚es imbriqu‚
es"
;
}
{
return
"Documentation des donn
ées imbriqué
es"
;
}
/*! this is the text of a link put after brief descriptions. */
QCString
trMore
()
{
return
"Plus de d
‚
tails..."
;
}
{
return
"Plus de d
é
tails..."
;
}
/*! put in the class documentation */
QCString
trListOfAllMembers
()
...
...
@@ -123,33 +121,33 @@ class TranslatorFrench : public Translator
/*! this is the first part of a sentence that is followed by a class name */
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
()
{
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
result
=
"G
‚n‚r‚
automatiquement par Doxygen"
;
{
QCString
result
=
"G
énéré
automatiquement par Doxygen"
;
if
(
s
)
result
+=
(
QCString
)
" pour "
+
s
;
result
+=
"
…
partir du code source."
;
result
+=
"
à
partir du code source."
;
return
result
;
}
/*! put after an enum name in the list of all members */
QCString
trEnumName
()
{
return
"
‚num‚
ration"
;
}
{
return
"
énumé
ration"
;
}
/*! put after an enum value in the list of all members */
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
()
{
return
"d
‚
fini dans"
;
}
{
return
"d
é
fini dans"
;
}
// quick reference sections
...
...
@@ -161,7 +159,7 @@ class TranslatorFrench : public Translator
/*! This is put above each page as a link to the class hierarchy */
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
()
...
...
@@ -173,7 +171,7 @@ class TranslatorFrench : public Translator
/*! This is put above each page as a link to the list of all verbatim headers */
QCString
trHeaderFiles
()
{
return
"Fichiers d'en-t
ˆ
te"
;
}
{
return
"Fichiers d'en-t
ê
te"
;
}
/*! This is put above each page as a link to all members of compounds. */
QCString
trCompoundMembers
()
...
...
@@ -181,11 +179,11 @@ class TranslatorFrench : public Translator
/*! This is put above each page as a link to all members of files. */
QCString
trFileMembers
()
{
return
"D
‚
clarations"
;
}
{
return
"D
é
clarations"
;
}
/*! This is put above each page as a link to all related pages. */
QCString
trRelatedPages
()
{
return
"Pages associ
‚
es"
;
}
{
return
"Pages associ
é
es"
;
}
/*! This is put above each page as a link to all examples. */
QCString
trExamples
()
...
...
@@ -197,29 +195,29 @@ class TranslatorFrench : public Translator
/*! This is an introduction to the class hierarchy. */
QCString
trClassHierarchyDescription
()
{
return
"Cette liste d'h
‚
ritage est, autant que possible, "
"class
‚e par ordre alphab‚
tique"
;
}
{
return
"Cette liste d'h
é
ritage est, autant que possible, "
"class
ée par ordre alphabé
tique"
;
}
/*! This is an introduction to the list with all files. */
QCString
trFileListDescription
(
bool
extractAll
)
{
QCString
result
=
"Liste de tous les fichiers "
;
if
(
!
extractAll
)
result
+=
"document
‚
s "
;
result
+=
"avec une br
Š
ve description :"
;
if
(
!
extractAll
)
result
+=
"document
é
s "
;
result
+=
"avec une br
è
ve description :"
;
return
result
;
}
/*! This is an introduction to the annotated compound list. */
QCString
trCompoundListDescription
()
{
return
"Liste des classes, des structures 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
result
=
"Liste de tous les membres de classe "
;
if
(
!
extractAll
)
result
+=
"document
‚
s "
;
if
(
!
extractAll
)
result
+=
"document
é
s "
;
result
+=
"avec les liens vers "
;
if
(
!
extractAll
)
result
+=
"la documentation de la classe correspondante :"
;
else
result
+=
"les classes auxquelles ils appartiennent :"
;
...
...
@@ -229,18 +227,18 @@ class TranslatorFrench : public Translator
/*! This is an introduction to the page with all file members. */
QCString
trFileMembersDescription
(
bool
extractAll
)
{
QCString
result
=
"Liste de toutes les d
‚
clarations"
;
if
(
!
extractAll
)
result
+=
"document
‚
es "
;
QCString
result
=
"Liste de toutes les d
é
clarations"
;
if
(
!
extractAll
)
result
+=
"document
é
es "
;
result
+=
"avec liens sur "
;
if
(
extractAll
)
result
+=
"la documentation du fichier correspondant "
"pour chacune :"
;
else
result
+=
"les fichiers dans lesquels elles sont d
‚
finies :"
;
else
result
+=
"les fichiers dans lesquels elles sont d
é
finies :"
;
return
result
;
}
/*! This is an introduction to the page with the list of all header files. */
QCString
trHeaderFilesDescription
()
{
return
"Liste de tous les fichiers d'en-t
ˆ
te constituant "
{
return
"Liste de tous les fichiers d'en-t
ê
te constituant "
"l'interface de programmation :"
;
}
/*! This is an introduction to the page with the list of all examples */
...
...
@@ -249,7 +247,7 @@ class TranslatorFrench : public Translator
/*! This is an introduction to the page with the list of related pages */
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
()
...
...
@@ -278,7 +276,7 @@ class TranslatorFrench : public Translator
* class hierarchy.
*/
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.
...
...
@@ -324,13 +322,13 @@ class TranslatorFrench : public Translator
/*! This is used in LaTeX as the title of the document */
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
()
{
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
...
...
@@ -342,13 +340,13 @@ class TranslatorFrench : public Translator
* list of typedefs
*/
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
()
{
return
"
num‚
rations"
;
}
{
return
"
Énumé
rations"
;
}
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
...
...
@@ -366,7 +364,7 @@ class TranslatorFrench : public Translator
* list of (global) variables
*/
QCString
trEnumerationValues
()
{
return
"
l‚ments ‚num‚r‚
s"
;
}
{
return
"
Éléments énuméré
s"
;
}
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
...
...
@@ -390,13 +388,13 @@ class TranslatorFrench : public Translator
* of documentation blocks for enumeration types
*/
QCString
trEnumerationTypeDocumentation
()
{
return
"Documentation du type de l'
‚num‚
ration"
;
}
{
return
"Documentation du type de l'
énumé
ration"
;
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
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
...
...
@@ -421,7 +419,7 @@ class TranslatorFrench : public Translator
*/
QCString
trGeneratedAt
(
const
char
*
date
,
const
char
*
projName
)
{
QCString
result
=
(
QCString
)
"G
‚n‚r‚
le "
+
date
;
QCString
result
=
(
QCString
)
"G
énéré
le "
+
date
;
if
(
projName
)
result
+=
(
QCString
)
" pour "
+
projName
;
result
+=
(
QCString
)
" par "
;
return
result
;
...
...
@@ -430,13 +428,13 @@ class TranslatorFrench : public Translator
*/
QCString
trWrittenBy
()
{
return
"
‚
crit par"
;
return
"
é
crit par"
;
}
/*! this text is put before a class diagram */
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. */
...
...
@@ -445,8 +443,8 @@ class TranslatorFrench : public Translator
/*! this text is generated when the \\reimp command is used. */
QCString
trReimplementedForInternalReasons
()
{
return
"Red
‚
fini pour des raisons internes; "
"l'interface n'est pas modifi
‚
e"
;
{
return
"Red
é
fini pour des raisons internes; "
"l'interface n'est pas modifi
é
e"
;
}
/*! this text is generated when the \\warning command is used. */
...
...
@@ -471,11 +469,11 @@ class TranslatorFrench : public Translator
/*! this text is generated when the \\sa command is used. */
QCString
trSeeAlso
()
{
return
"Voir
‚
galement"
;
}
{
return
"Voir
é
galement"
;
}
/*! this text is generated when the \\param command is used. */
QCString
trParameters
()
{
return
"Param
Š
tres"
;
}
{
return
"Param
è
tres"
;
}
/*! this text is generated when the \\exception command is used. */
QCString
trExceptions
()
...
...
@@ -483,7 +481,7 @@ class TranslatorFrench : public Translator
/*! this text is used in the title page of a LaTeX document. */
QCString
trGeneratedBy
()
{
return
"G
‚n‚r‚
par"
;
}
{
return
"G
énéré
par"
;
}
// new since 0.49-990307
...
...
@@ -494,8 +492,8 @@ class TranslatorFrench : public Translator
virtual
QCString
trNamespaceListDescription
(
bool
extractAll
)
{
QCString
result
=
"Liste de tous les namespaces "
;
if
(
!
extractAll
)
result
+=
"document
‚
s "
;
result
+=
"avec une br
Š
ve description :"
;
if
(
!
extractAll
)
result
+=
"document
é
s "
;
result
+=
"avec une br
è
ve description :"
;
return
result
;
}
...
...
@@ -513,7 +511,7 @@ class TranslatorFrench : public Translator
* related classes
*/
virtual
QCString
trRelatedFunctionDocumentation
()
{
return
"Documentation des fonctions amies et associ
‚
es"
;
}
{
return
"Documentation des fonctions amies et associ
é
es"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
...
...
@@ -524,7 +522,7 @@ class TranslatorFrench : public Translator
ClassDef
::
CompoundType
compType
,
bool
/*isTemplate*/
)
{
QCString
result
=
"R
‚f‚
rence de "
;
QCString
result
=
"R
éfé
rence de "
;
switch
(
compType
)
{
case
ClassDef
:
:
Class
:
result
+=
"la classe "
;
break
;
...
...
@@ -541,7 +539,7 @@ class TranslatorFrench : public Translator
/*! used as the title of the HTML page of a file */
virtual
QCString
trFileReference
(
const
char
*
fileName
)
{
QCString
result
=
"R
‚f‚
rence du fichier "
;
QCString
result
=
"R
éfé
rence du fichier "
;
result
+=
fileName
;
return
result
;
}
...
...
@@ -549,7 +547,7 @@ class TranslatorFrench : public Translator
/*! used as the title of the HTML page of a namespace */
virtual
QCString
trNamespaceReference
(
const
char
*
namespaceName
)
{
QCString
result
=
"R
‚f‚
rence du namespace "
;
QCString
result
=
"R
éfé
rence du namespace "
;
result
+=
namespaceName
;
return
result
;
}
...
...
@@ -564,17 +562,17 @@ class TranslatorFrench : public Translator
virtual
QCString
trStaticPublicMembers
()
{
return
"Membres publics statiques"
;
}
virtual
QCString
trProtectedMembers
()
{
return
"Membres prot
‚g‚
s"
;
}
{
return
"Membres prot
égé
s"
;
}
virtual
QCString
trProtectedSlots
()
{
return
"Connecteurs prot
‚g‚
s"
;
}
{
return
"Connecteurs prot
égé
s"
;
}
virtual
QCString
trStaticProtectedMembers
()
{
return
"Membres prot
‚g‚
s statiques"
;
}
{
return
"Membres prot
égé
s statiques"
;
}
virtual
QCString
trPrivateMembers
()
{
return
"Membres priv
‚
s"
;
}
{
return
"Membres priv
é
s"
;
}
virtual
QCString
trPrivateSlots
()
{
return
"Connecteurs priv
‚
s"
;
}
{
return
"Connecteurs priv
é
s"
;
}
virtual
QCString
trStaticPrivateMembers
()
{
return
"Membres priv
‚
s statiques"
;
}
{
return
"Membres priv
é
s statiques"
;
}
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
...
...
@@ -606,7 +604,7 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trInheritsList
(
int
numEntries
)
{
return
"Est d
‚riv‚
e de "
+
trWriteList
(
numEntries
)
+
"."
;
return
"Est d
érivé
e de "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in class documentation to produce a list of super classes,
...
...
@@ -614,7 +612,7 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trInheritedByList
(
int
numEntries
)
{
return
"D
‚riv‚
e par "
+
trWriteList
(
numEntries
)
+
"."
;
return
"D
érivé
e par "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
...
...
@@ -622,7 +620,7 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trReimplementedFromList
(
int
numEntries
)
{
return
"Red
‚finie …
partir de "
+
trWriteList
(
numEntries
)
+
"."
;
return
"Red
éfinie à
partir de "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
...
...
@@ -630,7 +628,7 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trReimplementedInList
(
int
numEntries
)
{
return
"Red
‚
finie dans "
+
trWriteList
(
numEntries
)
+
"."
;
return
"Red
é
finie dans "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! This is put above each page as a link to all members of namespaces. */
...
...
@@ -641,10 +639,10 @@ class TranslatorFrench : public Translator
virtual
QCString
trNamespaceMemberDescription
(
bool
extractAll
)
{
QCString
result
=
"Voici une liste de tous les membres de namespace"
;
if
(
!
extractAll
)
result
+=
"document
‚
s "
;
if
(
!
extractAll
)
result
+=
"document
é
s "
;
result
+=
" avec liens vers "
;
if
(
extractAll
)
result
+=
"les documentations des namespaces associ
‚
s :"
;
result
+=
"les documentations des namespaces associ
é
s :"
;
else
result
+=
"les namespaces auxquels ils appartiennent :"
;
return
result
;
...
...
@@ -682,7 +680,7 @@ class TranslatorFrench : public Translator
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 "
;
QCString
result
=
(
QCString
)
"La documentation associ
ée à
cette "
;
switch
(
compType
)
{
case
ClassDef
:
:
Class
:
result
+=
"classe"
;
break
;
...
...
@@ -691,7 +689,7 @@ class TranslatorFrench : public Translator
case
ClassDef
:
:
Interface
:
result
+=
"interface"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
"exception"
;
break
;
}
result
+=
" a
‚t‚ g‚n‚r‚e …
partir "
;
result
+=
" a
été générée à
partir "
;
if
(
single
)
result
+=
" du fichier suivant :"
;
else
result
+=
"des fichiers suivants :"
;
return
result
;
...
...
@@ -702,7 +700,7 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trAlphabeticalList
()
{
return
"Liste par ordre alphab
‚
tique"
;
return
"Liste par ordre alphab
é
tique"
;
}
...
...
@@ -712,7 +710,7 @@ class TranslatorFrench : public Translator
/*! This is used as the heading text for the retval command. */
virtual
QCString
trReturnValues
()
{
return
"Valeurs retourn
‚
es"
;
}
{
return
"Valeurs retourn
é
es"
;
}
/*! This is in the (quick) index as a link to the main page (index.html)
*/
...
...
@@ -735,11 +733,11 @@ class TranslatorFrench : public Translator
}
virtual
QCString
trDefinedAtLineInSourceFile
()
{
return
"D
‚finition …
la ligne @0 du fichier @1."
;
return
"D
éfinition à
la ligne @0 du fichier @1."
;
}
virtual
QCString
trDefinedInSourceFile
()
{
return
"D
‚
finition dans le fichier @0."
;
return
"D
é
finition dans le fichier @0."
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991205
...
...
@@ -747,7 +745,7 @@ class TranslatorFrench : public Translator
virtual
QCString
trDeprecated
()
{
return
"Obsol
Š
te"
;
return
"Obsol
è
te"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -762,7 +760,7 @@ class TranslatorFrench : public Translator
/*! this text is put before an include dependency graph */
virtual
QCString
trInclDepGraph
(
const
char
*
fName
)
{
return
(
QCString
)
"Graphe des d
‚
pendances par inclusion pour "
+
fName
+
":"
;
return
(
QCString
)
"Graphe des d
é
pendances par inclusion pour "
+
fName
+
":"
;
}
/*! header that is put before the list of constructor/destructors. */
virtual
QCString
trConstructorDocumentation
()
...
...
@@ -777,12 +775,12 @@ class TranslatorFrench : public Translator
/*! Used in the file sources to point to the corresponding documentation. */
virtual
QCString
trGotoDocumentation
()
{
return
"Aller
…
la documentation de ce fichier."
;
return
"Aller
à
la documentation de ce fichier."
;
}
/*! Text for the \\pre command */
virtual
QCString
trPrecondition
()
{
return
"Pr
‚
condition"
;
return
"Pr
é
condition"
;
}
/*! Text for the \\post command */
virtual
QCString
trPostcondition
()
...
...
@@ -806,15 +804,15 @@ class TranslatorFrench : public Translator
}
virtual
QCString
trGraphicalHierarchy
()
{
return
"Diagramme hi
‚
rarchique des classes"
;
return
"Diagramme hi
é
rarchique des classes"
;
}
virtual
QCString
trGotoGraphicalHierarchy
()
{
return
"Aller au diagramme hi
‚
rarchique des classes"
;
return
"Aller au diagramme hi
é
rarchique des classes"
;
}
virtual
QCString
trGotoTextualHierarchy
()
{
return
"Aller
… la hi‚
rarchie des classes en texte"
;
return
"Aller
à la hié
rarchie des classes en texte"
;
}
virtual
QCString
trPageIndex
()
{
...
...
@@ -843,27 +841,27 @@ class TranslatorFrench : public Translator
}
virtual
QCString
trProtectedTypes
()
{
return
"Types Prot
‚g‚
s"
;
return
"Types Prot
égé
s"
;
}
virtual
QCString
trProtectedAttribs
()
{
return
"Attributs Prot
‚g‚
s"
;
return
"Attributs Prot
égé
s"
;
}
virtual
QCString
trStaticProtectedAttribs
()
{
return
"Attributs Prot
‚g‚
s Statiques"
;
return
"Attributs Prot
égé
s Statiques"
;
}
virtual
QCString
trPrivateTypes
()
{
return
"Types Priv
‚
s"
;
return
"Types Priv
é
s"
;
}
virtual
QCString
trPrivateAttribs
()
{
return
"Attributs Priv
‚
s"
;
return
"Attributs Priv
é
s"
;
}
virtual
QCString
trStaticPrivateAttribs
()
{
return
"Attributs Priv
‚
s Statiques"
;
return
"Attributs Priv
é
s Statiques"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -878,7 +876,7 @@ class TranslatorFrench : public Translator
/*! Used as the header of the todo list */
virtual
QCString
trTodoList
()
{
return
"Liste des choses
…
faire"
;
return
"Liste des choses
à
faire"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -887,7 +885,7 @@ class TranslatorFrench : public Translator
virtual
QCString
trReferencedBy
()
{
return
"R
‚f‚renc‚
par"
;
return
"R
éférencé
par"
;
}
virtual
QCString
trRemarks
()
{
...
...
@@ -914,32 +912,32 @@ class TranslatorFrench : public Translator
/*! title of the graph legend page */
virtual
QCString
trLegendTitle
()
{
return
"L
‚
gende du graphe"
;
return
"L
é
gende du graphe"
;
}
/*! page explaining how the dot graph's should be interpreted */
virtual
QCString
trLegendDocs
()
{
return
"Cette page explique comment interpr
‚ter les graphes g‚n‚r‚
s "
"Cette page explique comment interpr
éter les graphes généré
s "
"par doxygen.<p>
\n
"
"Consid
‚
rez l'exemple suivant:
\n
"
"Consid
é
rez l'exemple suivant:
\n
"
"
\\
code
\n
"
"/*! Classe invisible
…
cause d'une troncature */
\n
"
"/*! Classe invisible
à
cause d'une troncature */
\n
"
"class Invisible { };
\n\n
"
"/*! Classe tronqu
‚e, la relation d'h‚ritage est masqu‚
e */
\n
"
"/*! Classe tronqu
ée, la relation d'héritage est masqué
e */
\n
"
"class Truncated : public Invisible { };
\n\n
"
"/*! Classe non document
‚
e avec des commentaires Doxygen */
\n
"
"/*! Classe non document
é
e avec des commentaires Doxygen */
\n
"
"class Undocumented { };
\n\n
"
"/*! Classe d
‚riv‚e par h‚
ritage public */
\n
"
"/*! Classe d
érivée par hé
ritage public */
\n
"
"class PublicBase : public Truncated { };
\n\n
"
"/*! Classe d
‚riv‚e par h‚ritage prot‚g‚
*/
\n
"
"/*! Classe d
érivée par héritage protégé
*/
\n
"
"class ProtectedBase { };
\n\n
"
"/*! Classe d
‚riv‚e par h‚ritage priv‚
*/
\n
"
"/*! Classe d
érivée par héritage privé
*/
\n
"
"class PrivateBase { };
\n\n
"
"/*! Classe utilis
‚e par la classe d‚riv‚
e */
\n
"
"/*! Classe utilis
ée par la classe dérivé
e */
\n
"
"class Used { };
\n\n
"
"/*! Super-classe qui h
‚
rite de plusieurs autres classes */
\n
"
"/*! Super-classe qui h
é
rite de plusieurs autres classes */
\n
"
"class Inherited : public PublicBase,
\n
"
" protected ProtectedBase,
\n
"
" private PrivateBase,
\n
"
...
...
@@ -949,35 +947,35 @@ class TranslatorFrench : public Translator
" Used *m_usedClass;
\n
"
"};
\n
"
"
\\
endcode
\n
"
"Si la valeur 200 est attribu
‚
e au tag
\\
c MAX_DOT_GRAPH_HEIGHT "
"du fichier de configuration, cela g
‚nŠ
rera le graphe suivant:"
"Si la valeur 200 est attribu
é
e au tag
\\
c MAX_DOT_GRAPH_HEIGHT "
"du fichier de configuration, cela g
énè
rera le graphe suivant:"
"<p><center><img src=
\"
graph_legend."
+
Config_getEnum
(
"DOT_IMAGE_FORMAT"
)
+
"
\"
></center>
\n
"
"<p>
\n
"
"Les rectangles du graphe ci-dessus ont la signification suivante:
\n
"
"<ul>
\n
"
"<li>Un rectangle plein noir repr
‚
sente la structure ou la classe pour laquelle "
"le graphe est g
‚n‚r‚
.
\n
"
"<li>Un rectangle avec un bord noir indique une classe ou une structure document
‚
e.
\n
"
"<li>Un rectangle avec un bord gris indique une classe ou une structure non document
‚
e.
\n
"
"<li>Un rectangle avec un bord rouge indique une structure ou une classe document
‚
e
\n
"
"pour laquelle des relations d'h
‚
ritage ou de collaboration manquent. Un graphe est "
"tronqu
‚ s'il ne rentre pas dans les limites sp‚cifi‚
es."
"<li>Un rectangle plein noir repr
é
sente la structure ou la classe pour laquelle "
"le graphe est g
énéré
.
\n
"
"<li>Un rectangle avec un bord noir indique une classe ou une structure document
é
e.
\n
"
"<li>Un rectangle avec un bord gris indique une classe ou une structure non document
é
e.
\n
"
"<li>Un rectangle avec un bord rouge indique une structure ou une classe document
é
e
\n
"
"pour laquelle des relations d'h
é
ritage ou de collaboration manquent. Un graphe est "
"tronqu
é s'il ne rentre pas dans les limites spécifié
es."
"</ul>
\n
"
"Les fl
Š
ches ont la signification suivante:
\n
"
"Les fl
è
ches ont la signification suivante:
\n
"
"<ul>
\n
"
"<li>Une fl
Šche bleu fonc‚ est utilis‚e pour visualiser une relation d'h‚
ritage public "
"<li>Une fl
èche bleu foncé est utilisée pour visualiser une relation d'hé
ritage public "
"entre deux classes.
\n
"
"<li>Une fl
Šche vert fonc‚ est utilis‚e pour une relation d'h‚ritage prot‚g‚
.
\n
"
"<li>Une fl
Šche rouge fonc‚ est utilis‚e pour une relation d'h‚ritage priv‚
.
\n
"
"<li>Une fl
Šche violette en pointill‚s est utilis‚
e si une classe est contenue ou "
"utilis
‚e par une autre classe. La flŠche est ‚tiquet‚
e avec la ou les variable(s) "
"qui permettent d'acc
‚der … la classe ou structure point‚
e.
\n
"
"<li>Une fl
èche vert foncé est utilisée pour une relation d'héritage protégé
.
\n
"
"<li>Une fl
èche rouge foncé est utilisée pour une relation d'héritage privé
.
\n
"
"<li>Une fl
èche violette en pointillés est utilisé
e si une classe est contenue ou "
"utilis
ée par une autre classe. La flèche est étiqueté
e avec la ou les variable(s) "
"qui permettent d'acc
éder à la classe ou structure pointé
e.
\n
"
"</ul>
\n
"
;
}
/*! text for the link to the legend page */
virtual
QCString
trLegend
()
{
return
"L
‚
gende"
;
return
"L
é
gende"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.0
...
...
@@ -1001,7 +999,7 @@ class TranslatorFrench : public Translator
/*! Used as a section header for KDE-2 IDL methods */
virtual
QCString
trDCOPMethods
()
{
return
"M
‚
thodes DCOP"
;
return
"M
é
thodes DCOP"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -1011,12 +1009,12 @@ class TranslatorFrench : public Translator
/*! Used as a section header for IDL properties */
virtual
QCString
trProperties
()
{
return
"Propri
‚t‚
s"
;
return
"Propri
été
s"
;
}
/*! Used as a section header for IDL property documentation */
virtual
QCString
trPropertyDocumentation
()
{
return
"Documentation des propri
‚t‚
s"
;
return
"Documentation des propri
été
s"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -1033,7 +1031,7 @@ class TranslatorFrench : public Translator
{
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
))
{
return
"Structures de donn
‚
es"
;
return
"Structures de donn
é
es"
;
}
else
{
...
...
@@ -1053,7 +1051,7 @@ class TranslatorFrench : public Translator
/*! The description of the package index page */
virtual
QCString
trPackageListDescription
()
{
return
"Liste des paquetages avec une br
Š
ve description (si disponible):"
;
return
"Liste des paquetages avec une br
è
ve description (si disponible):"
;
}
/*! The link name in the Quick links header for each page */
virtual
QCString
trPackages
()
...
...
@@ -1244,7 +1242,7 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trReferences
()
{
return
"R
‚f‚
rences"
;
return
"R
éfé
rences"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
...
...
@@ -1255,7 +1253,7 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trImplementedFromList
(
int
numEntries
)
{
return
"Impl
‚
mente "
+
trWriteList
(
numEntries
)
+
"."
;
return
"Impl
é
mente "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
...
...
@@ -1263,7 +1261,7 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trImplementedInList
(
int
numEntries
)
{
return
"Impl
‚ment‚
dans "
+
trWriteList
(
numEntries
)
+
"."
;
return
"Impl
émenté
dans "
+
trWriteList
(
numEntries
)
+
"."
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -1275,7 +1273,7 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trRTFTableOfContents
()
{
return
"Table des mati
Š
res"
;
return
"Table des mati
è
res"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -1287,7 +1285,7 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trDeprecatedList
()
{
return
"Liste obsol
Š
te"
;
return
"Liste obsol
è
te"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -1299,12 +1297,12 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trEvents
()
{
return
"Ev
Š
nements"
;
return
"Ev
è
nements"
;
}
/*! Header used for the documentation section of a class' events. */
virtual
QCString
trEventDocumentation
()
{
return
"Documentation des
‚vŠ
nements"
;
return
"Documentation des
évè
nements"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -1322,14 +1320,14 @@ class TranslatorFrench : public Translator
*/
virtual
QCString
trPackageMembers
()
{
return
"
M‚thode
s de paquetage"
;
return
"
Fonction
s de paquetage"
;
}
/*! Used as a heading for a list of static Java class functions with
* package scope.
*/
virtual
QCString
trStaticPackageMembers
()
{
return
"
M‚thode
s statiques de paquetage"
;
return
"
Fonction
s statiques de paquetage"
;
}
/*! Used as a heading for a list of Java class variables with package
* scope.
...
...
@@ -1345,6 +1343,7 @@ class TranslatorFrench : public Translator
{
return
"Attributs statiques de paquetage"
;
}
};
...
...
src/util.cpp
View file @
0aa47e2a
...
...
@@ -3130,6 +3130,12 @@ void extractNamespaceName(const QCString &scopeName,
namespaceName
.
resize
(
0
);
done:
if
(
className
.
isEmpty
()
&&
!
namespaceName
.
isEmpty
())
{
// class and namespace with the same name, correct to return the class.
className
=
namespaceName
.
copy
();
namespaceName
.
resize
(
0
);
}
//printf("extractNamespace `%s' => `%s|%s'\n",scopeName.data(),
// className.data(),namespaceName.data());
return
;
...
...
@@ -4009,6 +4015,7 @@ void filterLatexString(QTextStream &t,const char *str,
case
'\\'
:
t
<<
"
\\
(
\\
backslash
\\
)"
;
break
;
case
'{'
:
t
<<
"
\\
{"
;
break
;
case
'}'
:
t
<<
"
\\
}"
;
break
;
case
'_'
:
t
<<
"
\\
_"
;
break
;
default
:
{
// Some languages use wide characters
...
...
src/xmldocvisitor.cpp
View file @
0aa47e2a
...
...
@@ -185,6 +185,9 @@ void XmlDocVisitor::visit(DocVerbatim *s)
filter
(
s
->
text
());
m_t
<<
"</latexonly>"
;
break
;
case
DocVerbatim
:
:
XmlOnly
:
m_t
<<
s
->
text
();
break
;
}
}
...
...
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