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
7d903158
Commit
7d903158
authored
Jun 25, 2000
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.1.4-20000625
parent
2d0679ab
Changes
37
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
631 additions
and
239 deletions
+631
-239
INSTALL
INSTALL
+4
-4
README
README
+2
-2
VERSION
VERSION
+1
-1
configgen.cpp
addon/configgen/configgen.cpp
+51
-7
README
addon/doxywizard/README
+2
-0
commands.doc
doc/commands.doc
+11
-0
config.doc
doc/config.doc
+51
-10
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
classdef.cpp
src/classdef.cpp
+67
-56
classdef.h
src/classdef.h
+1
-0
code.l
src/code.l
+37
-3
config.h
src/config.h
+5
-1
config.l
src/config.l
+80
-8
dot.cpp
src/dot.cpp
+38
-28
dot.h
src/dot.h
+6
-3
doxygen.cpp
src/doxygen.cpp
+49
-39
filedef.cpp
src/filedef.cpp
+37
-1
filedef.h
src/filedef.h
+5
-1
latexgen.cpp
src/latexgen.cpp
+33
-8
memberdef.cpp
src/memberdef.cpp
+6
-12
membergroup.cpp
src/membergroup.cpp
+5
-2
memberlist.cpp
src/memberlist.cpp
+2
-2
pre.l
src/pre.l
+16
-3
scanner.l
src/scanner.l
+83
-35
translator.h
src/translator.h
+12
-1
translator_cz.h
src/translator_cz.h
+2
-1
translator_de.h
src/translator_de.h
+2
-1
translator_es.h
src/translator_es.h
+2
-1
translator_fi.h
src/translator_fi.h
+2
-1
translator_fr.h
src/translator_fr.h
+2
-1
translator_hr.h
src/translator_hr.h
+2
-1
translator_it.h
src/translator_it.h
+2
-1
translator_jp.h
src/translator_jp.h
+2
-1
translator_nl.h
src/translator_nl.h
+3
-1
translator_ru.h
src/translator_ru.h
+3
-1
translator_se.h
src/translator_se.h
+2
-1
util.cpp
src/util.cpp
+2
-0
No files found.
INSTALL
View file @
7d903158
DOXYGEN Version 1.1.4
DOXYGEN Version 1.1.4
-20000625
CONTENTS
CONTENTS
--------
--------
...
@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
...
@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
1. Unpack the archive, unless you already have:
gunzip doxygen-1.1.4.src.tar.gz # uncompress the archive
gunzip doxygen-1.1.4
-20000625
.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.4.src.tar # unpack it
tar xf doxygen-1.1.4
-20000625
.src.tar # unpack it
2. Run the configure script:
2. Run the configure script:
...
@@ -255,4 +255,4 @@ The latest version of doxygen can be obtained at
...
@@ -255,4 +255,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Enjoy,
Dimitri van Heesch (
18
June 2000)
Dimitri van Heesch (
25
June 2000)
README
View file @
7d903158
DOXYGEN Version 1.1.4
DOXYGEN Version 1.1.4
-20000625
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Enjoy,
Dimitri van Heesch (
18
June 2000)
Dimitri van Heesch (
25
June 2000)
VERSION
View file @
7d903158
1.1.4
1.1.4
-20000625
addon/configgen/configgen.cpp
View file @
7d903158
...
@@ -787,18 +787,25 @@ void init()
...
@@ -787,18 +787,25 @@ void init()
ConfigBool
::
add
(
"extractAllFlag"
,
ConfigBool
::
add
(
"extractAllFlag"
,
"EXTRACT_ALL"
,
"EXTRACT_ALL"
,
"FALSE"
,
"FALSE"
,
"ge
r
erate docs for all classes flag"
,
"ge
n
erate docs for all classes flag"
,
"If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
\n
"
"If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
\n
"
"documentation are documented, even if no documentation was available.
\n
"
"documentation are documented, even if no documentation was available.
\n
"
"Private class members and static file members will be hidden unless
\n
"
"Private class members and static file members will be hidden unless
\n
"
"the EXTRACT_PRIVATE
tag is
set to YES
\n
"
"the EXTRACT_PRIVATE
and EXTRACT_STATIC tags are
set to YES
\n
"
);
);
ConfigBool
::
add
(
"extractPrivateFlag"
,
ConfigBool
::
add
(
"extractPrivateFlag"
,
"EXTRACT_PRIVATE"
,
"EXTRACT_PRIVATE"
,
"FALSE"
,
"FALSE"
,
"generate docs for private members flag"
,
"generate docs for private members flag"
,
"If the EXTRACT_PRIVATE tag is set to YES all private members of a class
\n
"
"If the EXTRACT_PRIVATE tag is set to YES all private members of a class
\n
"
"and the static members of a file will be included in the documentation.
\n
"
"will be included in the documentation.
\n
"
);
ConfigBool
::
add
(
"extractStaticFlag"
,
"EXTRACT_STATIC"
,
"FALSE"
,
"generate docs for static members flag"
,
"If the EXTRACT_STATIC tag is set to YES all static members of a file
\n
"
"will be included in the documentation.
\n
"
);
);
ConfigBool
::
add
(
"hideMemberFlag"
,
ConfigBool
::
add
(
"hideMemberFlag"
,
"HIDE_UNDOC_MEMBERS"
,
"HIDE_UNDOC_MEMBERS"
,
...
@@ -806,6 +813,8 @@ void init()
...
@@ -806,6 +813,8 @@ void init()
"hide undocumented members."
,
"hide undocumented members."
,
"If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
\n
"
"If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
\n
"
"undocumented members of documented classes, files or namespaces.
\n
"
"undocumented members of documented classes, files or namespaces.
\n
"
"If set to NO (the default) these members will be included in the
\n
"
"various overviews, but no documentation section is generated.
\n
"
"This option has no effect if EXTRACT_ALL is enabled.
\n
"
"This option has no effect if EXTRACT_ALL is enabled.
\n
"
);
);
ConfigBool
::
add
(
"hideClassFlag"
,
ConfigBool
::
add
(
"hideClassFlag"
,
...
@@ -814,7 +823,8 @@ void init()
...
@@ -814,7 +823,8 @@ void init()
"hide undocumented members."
,
"hide undocumented members."
,
"If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all
\n
"
"If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all
\n
"
"undocumented classes that are normally visible in the class hierarchy.
\n
"
"undocumented classes that are normally visible in the class hierarchy.
\n
"
"This option has no effect if EXTRACT_ALL is enabled.
\n
"
"If set to NO (the default) these class will be included in the various
\n
"
"overviews. This option has no effect if EXTRACT_ALL is enabled.
\n
"
);
);
ConfigBool
::
add
(
"briefMemDescFlag"
,
ConfigBool
::
add
(
"briefMemDescFlag"
,
"BRIEF_MEMBER_DESC"
,
"BRIEF_MEMBER_DESC"
,
...
@@ -1290,7 +1300,7 @@ void init()
...
@@ -1290,7 +1300,7 @@ void init()
//-----------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------
ConfigBool
::
add
(
"generateRTF"
,
ConfigBool
::
add
(
"generateRTF"
,
"GENERATE_RTF"
,
"GENERATE_RTF"
,
"
FALS
E"
,
"
TRU
E"
,
"generate RTF flag"
,
"generate RTF flag"
,
"If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
\n
"
"If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
\n
"
"For now this is experimental and is disabled by default. The RTF output
\n
"
"For now this is experimental and is disabled by default. The RTF output
\n
"
...
@@ -1490,6 +1500,15 @@ void init()
...
@@ -1490,6 +1500,15 @@ void init()
"documented files.
\n
"
"documented files.
\n
"
);
);
addDependency
(
"includeGraphFlag"
,
"haveDotFlag"
);
addDependency
(
"includeGraphFlag"
,
"haveDotFlag"
);
ConfigBool
::
add
(
"includedByGraphFlag"
,
"INCLUDED_BY_GRAPH"
,
"TRUE"
,
"depends on include graph"
,
"If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to
\n
"
"YES then doxygen will generate a graph for each documented header file showing
\n
"
"the documented files that directly or indirectly include this file
\n
"
);
addDependency
(
"includedByGraphFlag"
,
"haveDotFlag"
);
ConfigBool
::
add
(
"gfxHierarchyFlag"
,
ConfigBool
::
add
(
"gfxHierarchyFlag"
,
"GRAPHICAL_HIERARCHY"
,
"GRAPHICAL_HIERARCHY"
,
"TRUE"
,
"TRUE"
,
...
@@ -1502,11 +1521,36 @@ void init()
...
@@ -1502,11 +1521,36 @@ void init()
"DOT_PATH"
,
"DOT_PATH"
,
""
,
""
,
"path to the dot tool"
,
"path to the dot tool"
,
"Th
is tag can be used to specify the path where the dot tool can be found.
\n
"
"Th
e tag DOT_PATH can be used to specify the path where the dot tool can be
\n
"
"If left blank, it is assumed the dot tool can be found on the path.
\n
"
,
"
found.
If left blank, it is assumed the dot tool can be found on the path.
\n
"
,
ConfigString
::
Dir
ConfigString
::
Dir
);
);
addDependency
(
"dotPath"
,
"haveDotFlag"
);
addDependency
(
"dotPath"
,
"haveDotFlag"
);
ConfigInt
::
add
(
"maxDotGraphWidth"
,
"MAX_DOT_GRAPH_WIDTH"
,
"1024"
,
"max dot graph width"
,
"The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
\n
"
"(in pixels) of the graphs generated by dot. If a graph becomes larger than
\n
"
"this value, doxygen will try to truncate the graph, so that it fits within
\n
"
"the specified constraint. Beware that most browsers cannot cope with very
\n
"
"large images.
\n
"
,
250
,
30000
);
addDependency
(
"maxDotGraphWidth"
,
"haveDotFlag"
);
ConfigInt
::
add
(
"maxDotGraphHeight"
,
"MAX_DOT_GRAPH_HEIGHT"
,
"1024"
,
"max dot graph height"
,
"The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
\n
"
"(in pixels) of the graphs generated by dot. If a graph becomes larger than
\n
"
"this value, doxygen will try to truncate the graph, so that it fits within
\n
"
"the specified constraint. Beware that most browsers cannot cope with very
\n
"
"large images.
\n
"
,
250
,
30000
);
addDependency
(
"maxDotGraphHeight"
,
"haveDotFlag"
);
//-----------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------
ConfigInfo
::
add
(
"Search"
,
"Configuration::addtions related to the search engine "
);
ConfigInfo
::
add
(
"Search"
,
"Configuration::addtions related to the search engine "
);
...
...
addon/doxywizard/README
0 → 100644
View file @
7d903158
Doxywizard is a graphical front-end to read/edit/write doxygen configuration
files. It requires Qt version 2.1.0 or higher.
doc/commands.doc
View file @
7d903158
...
@@ -104,6 +104,7 @@ documentation:
...
@@ -104,6 +104,7 @@ documentation:
<li> \refitem cmdsa \sa
<li> \refitem cmdsa \sa
<li> \refitem cmdsection \section
<li> \refitem cmdsection \section
<li> \refitem cmdshowinitializer \showinitializer
<li> \refitem cmdshowinitializer \showinitializer
<li> \refitem cmdsince \since
<li> \refitem cmdskip \skip
<li> \refitem cmdskip \skip
<li> \refitem cmdskipline \skipline
<li> \refitem cmdskipline \skipline
<li> \refitem cmdstruct \struct
<li> \refitem cmdstruct \struct
...
@@ -801,6 +802,16 @@ Public/Protected/Private/... section.
...
@@ -801,6 +802,16 @@ Public/Protected/Private/... section.
\sa section \ref autolink "\\autolink" for information on how to create links
\sa section \ref autolink "\\autolink" for information on how to create links
to objects.
to objects.
<hr>
\subsection cmdsince \since { text }
\addindex \since
This tag can be used to specify since when (version or time) an
entity is available. The paragraph that follows \\since does not have any
special internal structure. All visual enhancement commands may be
used inside the paragraph. The \\since description ends when a blank
line or some other sectioning command is encountered.
<hr>
<hr>
\subsection cmdthrow \throw <exception-object> { exception description }
\subsection cmdthrow \throw <exception-object> { exception description }
...
...
doc/config.doc
View file @
7d903158
...
@@ -52,8 +52,8 @@ followed by the descriptions of the tags grouped by category.
...
@@ -52,8 +52,8 @@ followed by the descriptions of the tags grouped by category.
\
begin
{
CompactList
}
\
begin
{
CompactList
}
\
endlatexonly
\
endlatexonly
<
li
>
\
refitem
cfg_allexternals
ALLEXTERNALS
<
li
>
\
refitem
cfg_allexternals
ALLEXTERNALS
<
li
>
\
refitem
cfg_always_detailed_sec
ALWAYS_DETAILED_SEC
<
li
>
\
refitem
cfg_alphabetical_index
ALPHABETICAL_INDEX
<
li
>
\
refitem
cfg_alphabetical_index
ALPHABETICAL_INDEX
<
li
>
\
refitem
cfg_always_detailed_sec
ALWAYS_DETAILED_SEC
<
li
>
\
refitem
cfg_bin_abspath
BIN_ABSPATH
<
li
>
\
refitem
cfg_bin_abspath
BIN_ABSPATH
<
li
>
\
refitem
cfg_brief_member_desc
BRIEF_MEMBER_DESC
<
li
>
\
refitem
cfg_brief_member_desc
BRIEF_MEMBER_DESC
<
li
>
\
refitem
cfg_case_sense_names
CASE_SENSE_NAMES
<
li
>
\
refitem
cfg_case_sense_names
CASE_SENSE_NAMES
...
@@ -68,6 +68,7 @@ followed by the descriptions of the tags grouped by category.
...
@@ -68,6 +68,7 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_disable_index
DISABLE_INDEX
<
li
>
\
refitem
cfg_disable_index
DISABLE_INDEX
<
li
>
\
refitem
cfg_doc_abspath
DOC_ABSPATH
<
li
>
\
refitem
cfg_doc_abspath
DOC_ABSPATH
<
li
>
\
refitem
cfg_doc_url
DOC_URL
<
li
>
\
refitem
cfg_doc_url
DOC_URL
<
li
>
\
refitem
cfg_dot_path
DOT_PATH
<
li
>
\
refitem
cfg_enable_preprocessing
ENABLE_PREPROCESSING
<
li
>
\
refitem
cfg_enable_preprocessing
ENABLE_PREPROCESSING
<
li
>
\
refitem
cfg_enabled_sections
ENABLED_SECTIONS
<
li
>
\
refitem
cfg_enabled_sections
ENABLED_SECTIONS
<
li
>
\
refitem
cfg_example_path
EXAMPLE_PATH
<
li
>
\
refitem
cfg_example_path
EXAMPLE_PATH
...
@@ -79,6 +80,7 @@ followed by the descriptions of the tags grouped by category.
...
@@ -79,6 +80,7 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_extra_packages
EXTRA_PACKAGES
<
li
>
\
refitem
cfg_extra_packages
EXTRA_PACKAGES
<
li
>
\
refitem
cfg_extract_all
EXTRACT_ALL
<
li
>
\
refitem
cfg_extract_all
EXTRACT_ALL
<
li
>
\
refitem
cfg_extract_private
EXTRACT_PRIVATE
<
li
>
\
refitem
cfg_extract_private
EXTRACT_PRIVATE
<
li
>
\
refitem
cfg_extract_static
EXTRACT_STATIC
<
li
>
\
refitem
cfg_file_patterns
FILE_PATTERNS
<
li
>
\
refitem
cfg_file_patterns
FILE_PATTERNS
<
li
>
\
refitem
cfg_full_path_names
FULL_PATH_NAMES
<
li
>
\
refitem
cfg_full_path_names
FULL_PATH_NAMES
<
li
>
\
refitem
cfg_generate_html
GENERATE_HTML
<
li
>
\
refitem
cfg_generate_html
GENERATE_HTML
...
@@ -114,6 +116,8 @@ followed by the descriptions of the tags grouped by category.
...
@@ -114,6 +116,8 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_macro_expansion
MACRO_EXPANSION
<
li
>
\
refitem
cfg_macro_expansion
MACRO_EXPANSION
<
li
>
\
refitem
cfg_man_extension
MAN_EXTENSION
<
li
>
\
refitem
cfg_man_extension
MAN_EXTENSION
<
li
>
\
refitem
cfg_man_output
MAN_OUTPUT
<
li
>
\
refitem
cfg_man_output
MAN_OUTPUT
<
li
>
\
refitem
cfg_max_dot_graph_height
MAX_DOT_GRAPH_HEIGHT
<
li
>
\
refitem
cfg_max_dot_graph_width
MAX_DOT_GRAPH_WIDTH
<
li
>
\
refitem
cfg_output_directory
OUTPUT_DIRECTORY
<
li
>
\
refitem
cfg_output_directory
OUTPUT_DIRECTORY
<
li
>
\
refitem
cfg_output_language
OUTPUT_LANGUAGE
<
li
>
\
refitem
cfg_output_language
OUTPUT_LANGUAGE
<
li
>
\
refitem
cfg_paper_type
PAPER_TYPE
<
li
>
\
refitem
cfg_paper_type
PAPER_TYPE
...
@@ -125,6 +129,8 @@ followed by the descriptions of the tags grouped by category.
...
@@ -125,6 +129,8 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_quiet
QUIET
<
li
>
\
refitem
cfg_quiet
QUIET
<
li
>
\
refitem
cfg_recursive
RECURSIVE
<
li
>
\
refitem
cfg_recursive
RECURSIVE
<
li
>
\
refitem
cfg_repeat_brief
REPEAT_BRIEF
<
li
>
\
refitem
cfg_repeat_brief
REPEAT_BRIEF
<
li
>
\
refitem
cfg_rtf_hyperlinks
RTF_HYPERLINKS
<
li
>
\
refitem
cfg_rtf_output
RTF_OUTPUT
<
li
>
\
refitem
cfg_search_includes
SEARCH_INCLUDES
<
li
>
\
refitem
cfg_search_includes
SEARCH_INCLUDES
<
li
>
\
refitem
cfg_searchengine
SEARCHENGINE
<
li
>
\
refitem
cfg_searchengine
SEARCHENGINE
<
li
>
\
refitem
cfg_show_include_files
SHOW_INCLUDE_FILES
<
li
>
\
refitem
cfg_show_include_files
SHOW_INCLUDE_FILES
...
@@ -132,14 +138,12 @@ followed by the descriptions of the tags grouped by category.
...
@@ -132,14 +138,12 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_source_browser
SOURCE_BROWSER
<
li
>
\
refitem
cfg_source_browser
SOURCE_BROWSER
<
li
>
\
refitem
cfg_strip_code_comments
STRIP_CODE_COMMENTS
<
li
>
\
refitem
cfg_strip_code_comments
STRIP_CODE_COMMENTS
<
li
>
\
refitem
cfg_strip_from_path
STRIP_FROM_PATH
<
li
>
\
refitem
cfg_strip_from_path
STRIP_FROM_PATH
<
li
>
\
refitem
cfg_rtf_hyperlinks
RTF_HYPERLINKS
<
li
>
\
refitem
cfg_rtf_output
RTF_OUTPUT
<
li
>
\
refitem
cfg_tab_size
TAB_SIZE
<
li
>
\
refitem
cfg_tab_size
TAB_SIZE
<
li
>
\
refitem
cfg_tagfiles
TAGFILES
<
li
>
\
refitem
cfg_tagfiles
TAGFILES
<
li
>
\
refitem
cfg_verbatim_headers
VERBATIM_HEADERS
<
li
>
\
refitem
cfg_verbatim_headers
VERBATIM_HEADERS
<
li
>
\
refitem
cfg_warnings
WARNINGS
<
li
>
\
refitem
cfg_warn_format
WARN_FORMAT
<
li
>
\
refitem
cfg_warn_format
WARN_FORMAT
<
li
>
\
refitem
cfg_warn_if_undocumented
WARN_IF_UNDOCUMENTED
<
li
>
\
refitem
cfg_warn_if_undocumented
WARN_IF_UNDOCUMENTED
<
li
>
\
refitem
cfg_warnings
WARNINGS
\
htmlonly
\
htmlonly
</
ul
>
</
ul
>
</
multicol
>
</
multicol
>
...
@@ -197,8 +201,10 @@ followed by the descriptions of the tags grouped by category.
...
@@ -197,8 +201,10 @@ followed by the descriptions of the tags grouped by category.
\
anchor
cfg_extract_all
\
anchor
cfg_extract_all
<
dt
>\
c
EXTRACT_ALL
<
dd
>
<
dt
>\
c
EXTRACT_ALL
<
dd
>
\
addindex
EXTRACT_ALL
\
addindex
EXTRACT_ALL
If
the
\
c
EXTRACT_ALL
tag
is
set
to
\
c
YES
all
classes
and
functions
will
be
If
the
\
c
EXTRACT_ALL
tag
is
set
to
\
c
YES
doxygen
will
assume
all
included
in
the
documentation
,
even
if
no
documentation
was
available
.
entities
in
documentation
are
documented
,
even
if
no
documentation
was
available
.
Private
class
members
and
static
file
members
will
be
hidden
unless
the
\
c
EXTRACT_PRIVATE
and
\
c
EXTRACT_STATIC
tags
are
set
to
\
c
YES
\
par
Note
:
\
par
Note
:
This
will
also
disable
the
warnings
about
undocumented
members
This
will
also
disable
the
warnings
about
undocumented
members
...
@@ -207,8 +213,14 @@ followed by the descriptions of the tags grouped by category.
...
@@ -207,8 +213,14 @@ followed by the descriptions of the tags grouped by category.
\
anchor
cfg_extract_private
\
anchor
cfg_extract_private
<
dt
>\
c
EXTRACT_PRIVATE
<
dd
>
<
dt
>\
c
EXTRACT_PRIVATE
<
dd
>
\
addindex
EXTRACT_PRIVATE
\
addindex
EXTRACT_PRIVATE
If
the
\
c
EXTRACT_PRIVATE
tag
is
set
to
\
c
YES
all
If
the
\
c
EXTRACT_PRIVATE
tag
is
set
to
\
c
YES
all
private
members
of
a
documentation
for
private
members
will
be
extracted
as
well
.
class
will
be
included
in
the
documentation
.
\
anchor
cfg_extract_static
<
dt
>\
c
EXTRACT_STATIC
<
dd
>
\
addindex
EXTRACT_STATIC
If
the
\
c
EXTRACT_STATIC
tag
is
set
to
\
c
YES
all
static
members
of
a
file
will
be
included
in
the
documentation
.
\
anchor
cfg_hide_undoc_members
\
anchor
cfg_hide_undoc_members
<
dt
>\
c
HIDE_UNDOC_MEMBERS
<
dd
>
<
dt
>\
c
HIDE_UNDOC_MEMBERS
<
dd
>
...
@@ -217,6 +229,7 @@ followed by the descriptions of the tags grouped by category.
...
@@ -217,6 +229,7 @@ followed by the descriptions of the tags grouped by category.
undocumented
members
inside
documented
classes
or
files
.
undocumented
members
inside
documented
classes
or
files
.
If
set
to
\
c
NO
(
the
default
)
these
members
will
be
included
in
the
If
set
to
\
c
NO
(
the
default
)
these
members
will
be
included
in
the
various
overviews
,
but
no
documentation
section
is
generated
.
various
overviews
,
but
no
documentation
section
is
generated
.
This
option
has
no
effect
if
\
c
EXTRACT_ALL
is
enabled
.
\
anchor
cfg_hide_undoc_classes
\
anchor
cfg_hide_undoc_classes
<
dt
>\
c
HIDE_UNDOC_CLASSES
<
dd
>
<
dt
>\
c
HIDE_UNDOC_CLASSES
<
dd
>
...
@@ -225,6 +238,7 @@ followed by the descriptions of the tags grouped by category.
...
@@ -225,6 +238,7 @@ followed by the descriptions of the tags grouped by category.
undocumented
classes
.
undocumented
classes
.
If
set
to
\
c
NO
(
the
default
)
these
classes
will
be
included
in
the
If
set
to
\
c
NO
(
the
default
)
these
classes
will
be
included
in
the
various
overviews
.
various
overviews
.
This
option
has
no
effect
if
\
c
EXTRACT_ALL
is
enabled
.
\
anchor
cfg_brief_member_desc
\
anchor
cfg_brief_member_desc
<
dt
>\
c
BRIEF_MEMBER_DESC
<
dd
>
<
dt
>\
c
BRIEF_MEMBER_DESC
<
dd
>
...
@@ -247,6 +261,7 @@ followed by the descriptions of the tags grouped by category.
...
@@ -247,6 +261,7 @@ followed by the descriptions of the tags grouped by category.
\
anchor
cfg_always_detailed_sec
\
anchor
cfg_always_detailed_sec
<
dt
>\
c
ALWAYS_DETAILED_SEC
<
dd
>
<
dt
>\
c
ALWAYS_DETAILED_SEC
<
dd
>
\
addindex
ALWAYS_DETAILED_SEC
If
the
\
c
ALWAYS_DETAILED_SEC
and
\
c
REPEAT_BRIEF
tags
are
both
set
to
\
c
YES
then
If
the
\
c
ALWAYS_DETAILED_SEC
and
\
c
REPEAT_BRIEF
tags
are
both
set
to
\
c
YES
then
Doxygen
will
generate
a
detailed
section
even
if
there
is
only
a
brief
Doxygen
will
generate
a
detailed
section
even
if
there
is
only
a
brief
description
.
description
.
...
@@ -822,13 +837,13 @@ EXTRA_PACKAGES = times
...
@@ -822,13 +837,13 @@ EXTRA_PACKAGES = times
put
in
front
of
it
.
If
left
blank
`
man
' will be used as the default path.
put
in
front
of
it
.
If
left
blank
`
man
' will be used as the default path.
A directory man3 will be created inside the directory specified by
A directory man3 will be created inside the directory specified by
\c MAN_OUTPUT.
\c MAN_OUTPUT.
</dl>
\anchor cfg_man_extension
\anchor cfg_man_extension
<dt>\c MAN_EXTENSION <dd>
<dt>\c MAN_EXTENSION <dd>
\addindex MAX_EXTENSION
\addindex MAX_EXTENSION
The \c MAN_EXTENSION tag determines the extension that is added to
The \c MAN_EXTENSION tag determines the extension that is added to
the generated man pages (default is the subroutine'
s
section
.3
)
the generated man pages (default is the subroutine'
s
section
.3
)
</
dl
>
\
subsection
config_prepro
Preprocessor
related
options
\
subsection
config_prepro
Preprocessor
related
options
\
anchor
cfg_enable_preprocessing
\
anchor
cfg_enable_preprocessing
...
@@ -964,6 +979,14 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
...
@@ -964,6 +979,14 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
showing the direct and indirect include dependencies of the file with other
showing the direct and indirect include dependencies of the file with other
documented files.
documented files.
\anchor cfg_included_by_graph
<dt>\c INCLUDED_BY_GRAPH <dd>
\addindex INCLUDED_BY_GRAPH
If the \c ENABLE_PREPROCESSING, \c INCLUDED_BY_GRAPH, and \c HAVE_DOT tags are
set to \c YES then doxygen will generate a graph for each documented header
file showing the documented files that directly or indirectly include this
file.
\anchor cfg_graphical_hierarchy
\anchor cfg_graphical_hierarchy
<dt>\c GRAPHICAL_HIERARCHY <dd>
<dt>\c GRAPHICAL_HIERARCHY <dd>
\addindex GRAPHICAL_HIERATCHY
\addindex GRAPHICAL_HIERATCHY
...
@@ -976,6 +999,24 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
...
@@ -976,6 +999,24 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
This tag can be used to specify the path where the dot tool can be found.
This tag can be used to specify the path where the dot tool can be found.
If left blank, it is assumed the dot tool can be found on the path.
If left blank, it is assumed the dot tool can be found on the path.
\anchor cfg_max_dot_graph_height
<dt>\c MAX_DOT_GRAPH_HEIGHT <dd>
\addindex MAX_DOT_GRAPH_HEIGHT
The \c MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
(in pixels) of the graphs generated by dot. If a graph becomes larger than
this value, doxygen will try to truncate the graph, so that it fits within
the specified constraint. Beware that most browsers cannot cope with very
large images.
\anchor cfg_max_dot_graph_width
<dt>\c MAX_DOT_GRAPH_WIDTH <dd>
\addindex MAX_DOT_GRAPH_WIDTH
The \c MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
(in pixels) of the graphs generated by dot. If a graph becomes larger than
this value, doxygen will try to truncate the graph, so that it fits within
the specified constraint. Beware that most browsers cannot cope with very
large images.
</dl>
</dl>
\subsection config_search Search engine options
\subsection config_search Search engine options
\anchor cfg_searchengine
\anchor cfg_searchengine
...
@@ -1007,7 +1048,7 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
...
@@ -1007,7 +1048,7 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
\addindex DOC_URL
\addindex DOC_URL
The \c DOC_URL tag should be the absolute URL to the directory where the
The \c DOC_URL tag should be the absolute URL to the directory where the
documentation is located. If left blank the absolute path to the
documentation is located. If left blank the absolute path to the
documentation, with
<tt>file://</tt>
prepended to it, will be used.
documentation, with
\c file://
prepended to it, will be used.
This is correct for local viewing only.
This is correct for local viewing only.
\anchor cfg_doc_abspath
\anchor cfg_doc_abspath
...
...
packages/rpm/doxygen.spec
View file @
7d903158
Name: doxygen
Name: doxygen
Version: 1.1.4
Version: 1.1.4
-20000625
Summary: documentation system for C, C++ and IDL
Summary: documentation system for C, C++ and IDL
Release: 1
Release: 1
Source0: doxygen-%{version}.src.tar.gz
Source0: doxygen-%{version}.src.tar.gz
...
...
src/classdef.cpp
View file @
7d903158
...
@@ -566,23 +566,44 @@ void ClassDef::setIncludeFile(FileDef *fd,const char *incName,bool local)
...
@@ -566,23 +566,44 @@ void ClassDef::setIncludeFile(FileDef *fd,const char *incName,bool local)
}
}
}
}
ArgumentList
*
ClassDef
::
outerTemplateArguments
()
const
{
int
ti
;
ClassDef
*
pcd
=
0
;
int
pi
=
0
;
// find the outer most class scope
while
((
ti
=
name
().
find
(
"::"
,
pi
))
!=-
1
&&
(
pcd
=
getClass
(
name
().
left
(
ti
)))
==
0
)
pi
=
ti
+
2
;
if
(
pcd
)
{
return
pcd
->
templateArguments
();
}
else
{
return
tempArgs
;
}
}
// write all documentation for this class
// write all documentation for this class
void
ClassDef
::
writeDocumentation
(
OutputList
&
ol
)
void
ClassDef
::
writeDocumentation
(
OutputList
&
ol
)
{
{
// write title
// write title
QCString
pageTitle
=
name
().
copy
();
QCString
pageTitle
=
name
().
copy
();
QCString
pageType
;
QCString
pageType
;
ArgumentList
*
outerTempArgList
=
outerTemplateArguments
();
if
(
outerTempArgList
)
pageType
+=
" Template"
;
switch
(
compType
)
switch
(
compType
)
{
{
case
Class
:
pageType
=
" Class"
;
break
;
case
Class
:
pageType
+=
" Class"
;
break
;
case
Struct
:
pageType
=
" Struct"
;
break
;
case
Struct
:
pageType
+
=
" Struct"
;
break
;
case
Union
:
pageType
=
" Union"
;
break
;
case
Union
:
pageType
+
=
" Union"
;
break
;
default
:
pageType
=
" Interface"
;
break
;
default
:
pageType
+
=
" Interface"
;
break
;
}
}
pageTitle
+=
pageType
+
" Reference"
;
pageTitle
+=
pageType
+
" Reference"
;
startFile
(
ol
,
fileName
,
pageTitle
);
startFile
(
ol
,
fileName
,
pageTitle
);
startTitle
(
ol
,
getOutputFileBase
());
startTitle
(
ol
,
getOutputFileBase
());
parseText
(
ol
,
theTranslator
->
trCompoundReference
(
name
(),
compType
));
parseText
(
ol
,
theTranslator
->
trCompoundReference
(
name
(),
compType
,
outerTempArgList
!=
0
));
endTitle
(
ol
,
getOutputFileBase
(),
name
());
endTitle
(
ol
,
getOutputFileBase
(),
name
());
ol
.
startTextBlock
();
ol
.
startTextBlock
();
...
@@ -868,24 +889,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -868,24 +889,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol
.
endGroupHeader
();
ol
.
endGroupHeader
();
ol
.
startTextBlock
();
ol
.
startTextBlock
();
ArgumentList
*
al
=
0
;
ArgumentList
*
al
=
outerTempArgList
;
int
ti
;
ClassDef
*
pcd
=
0
;
int
pi
=
0
;
// find the outer most class scope
while
((
ti
=
name
().
find
(
"::"
,
pi
))
!=-
1
&&
(
pcd
=
getClass
(
name
().
left
(
ti
)))
==
0
)
pi
=
ti
+
2
;
if
(
pcd
)
{
al
=
pcd
->
templateArguments
();
}
else
{
al
=
tempArgs
;
}
if
(
al
)
// class is a template
if
(
al
)
// class is a template
{
{
ol
.
startSubsubsection
();
ol
.
startSubsubsection
();
...
@@ -894,7 +898,11 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -894,7 +898,11 @@ void ClassDef::writeDocumentation(OutputList &ol)
while
(
a
)
while
(
a
)
{
{
ol
.
docify
(
a
->
type
);
ol
.
docify
(
a
->
type
);
if
(
!
a
->
name
.
isEmpty
())
{
ol
.
docify
(
" "
);
ol
.
docify
(
a
->
name
);
ol
.
docify
(
a
->
name
);
}
if
(
a
->
defval
.
length
()
!=
0
)
if
(
a
->
defval
.
length
()
!=
0
)
{
{
ol
.
docify
(
" = "
);
ol
.
docify
(
" = "
);
...
@@ -1583,6 +1591,8 @@ void ClassDef::determineImplUsageRelation()
...
@@ -1583,6 +1591,8 @@ void ClassDef::determineImplUsageRelation()
// name().data(),type.data(),md->name().data());
// name().data(),type.data(),md->name().data());
int
p
=
0
,
i
,
l
;
int
p
=
0
,
i
,
l
;
bool
found
=
FALSE
;
bool
found
=
FALSE
;
if
(
typeLen
>
0
)
{
while
((
i
=
re
.
match
(
type
,
p
,
&
l
))
!=-
1
&&
!
found
)
// for each class name in the type
while
((
i
=
re
.
match
(
type
,
p
,
&
l
))
!=-
1
&&
!
found
)
// for each class name in the type
{
{
int
ts
=
i
+
l
;
int
ts
=
i
+
l
;
...
@@ -1626,6 +1636,7 @@ void ClassDef::determineImplUsageRelation()
...
@@ -1626,6 +1636,7 @@ void ClassDef::determineImplUsageRelation()
}
}
}
}
}
}
}
#ifdef DUMP
#ifdef DUMP
if
(
usesClassDict
)
if
(
usesClassDict
)
{
{
...
...
src/classdef.h
View file @
7d903158
...
@@ -99,6 +99,7 @@ class ClassDef : public Definition
...
@@ -99,6 +99,7 @@ class ClassDef : public Definition
// template argument functions
// template argument functions
ArgumentList
*
templateArguments
()
const
{
return
tempArgs
;
}
ArgumentList
*
templateArguments
()
const
{
return
tempArgs
;
}
ArgumentList
*
outerTemplateArguments
()
const
;
void
setTemplateArguments
(
ArgumentList
*
al
);
void
setTemplateArguments
(
ArgumentList
*
al
);
//QCString getTemplateNameString();
//QCString getTemplateNameString();
void
setNamespace
(
NamespaceDef
*
nd
)
{
nspace
=
nd
;
}
void
setNamespace
(
NamespaceDef
*
nd
)
{
nspace
=
nd
;
}
...
...
src/code.l
View file @
7d903158
...
@@ -396,6 +396,7 @@ static bool getLink(const char *className,
...
@@ -396,6 +396,7 @@ static bool getLink(const char *className,
static ClassDef *stripClassName(const char *s)
static ClassDef *stripClassName(const char *s)
{
{
QCString tmp=s;
QCString tmp=s;
if (tmp.isEmpty()) return 0;
static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*");
static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*");
int p=0,i,l;
int p=0,i,l;
while ((i=re.match(tmp,p,&l))!=-1)
while ((i=re.match(tmp,p,&l))!=-1)
...
@@ -1131,10 +1132,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
...
@@ -1131,10 +1132,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
endFontClass();
endFontClass();
}
}
}
}
<*>\n
({B}*(("//@"[{}])|("/*@"[{}]"*/")){B}*\n)
{ // remove one-line group marker
<*>\n
{B}*"//@"[{}].*\n
{ // remove one-line group marker
if (Config::stripCommentsFlag)
if (Config::stripCommentsFlag)
{
{
g_yyLineNr+=
((QCString)yytext).contains('\n')
;
g_yyLineNr+=
2
;
g_code->endCodeLine();
g_code->endCodeLine();
if (g_yyLineNr<g_inputLines)
if (g_yyLineNr<g_inputLines)
{
{
...
@@ -1148,7 +1149,26 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
...
@@ -1148,7 +1149,26 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
endFontClass();
endFontClass();
}
}
}
}
<*>^{B}*(("//@"[{}])|("/*@"[{}]"*/")){B}*\n { // remove one-line group marker
<*>\n{B}*"/*@"[{}] { // remove one-line group marker
if (Config::stripCommentsFlag)
{
g_lastSpecialCContext = YY_START;
g_yyLineNr++;
BEGIN(RemoveSpecialCComment);
}
else
{
// check is to prevent getting stuck in skipping C++ comments
if (YY_START != SkipCxxComment)
{
g_lastCContext = YY_START ;
}
startFontClass("comment");
codifyLines(yytext);
BEGIN(SkipComment);
}
}
<*>^{B}*"//@"[{}].*\n { // remove one-line group marker
if (Config::stripCommentsFlag)
if (Config::stripCommentsFlag)
{
{
g_yyLineNr++;
g_yyLineNr++;
...
@@ -1165,6 +1185,20 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
...
@@ -1165,6 +1185,20 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
endFontClass();
endFontClass();
}
}
}
}
<*>^{B}*"/*@"[{}] { // remove multi-line group marker
if (Config::stripCommentsFlag)
{
g_lastSpecialCContext = YY_START;
BEGIN(RemoveSpecialCComment);
}
else
{
g_lastCContext = YY_START ;
startFontClass("comment");
g_code->codify(yytext);
BEGIN(SkipComment);
}
}
<*>^{B}*"//"[!/][^\n]*\n { // remove special one-line comment
<*>^{B}*"//"[!/][^\n]*\n { // remove special one-line comment
if (Config::stripCommentsFlag)
if (Config::stripCommentsFlag)
{
{
...
...
src/config.h
View file @
7d903158
...
@@ -36,8 +36,9 @@ struct Config
...
@@ -36,8 +36,9 @@ struct Config
static
QCString
outputDir
;
// the global output directory
static
QCString
outputDir
;
// the global output directory
static
QCString
outputLanguage
;
// the output language
static
QCString
outputLanguage
;
// the output language
static
bool
noIndexFlag
;
// generate condensed index flag
static
bool
noIndexFlag
;
// generate condensed index flag
static
bool
extractAllFlag
;
// ge
r
erate docs for all classes flag
static
bool
extractAllFlag
;
// ge
n
erate docs for all classes flag
static
bool
extractPrivateFlag
;
// generate docs for private members flag
static
bool
extractPrivateFlag
;
// generate docs for private members flag
static
bool
extractStaticFlag
;
// generate docs for static members flag
static
bool
hideMemberFlag
;
// hide undocumented members.
static
bool
hideMemberFlag
;
// hide undocumented members.
static
bool
hideClassFlag
;
// hide undocumented members.
static
bool
hideClassFlag
;
// hide undocumented members.
static
bool
briefMemDescFlag
;
// enable `inline' brief member descr.
static
bool
briefMemDescFlag
;
// enable `inline' brief member descr.
...
@@ -112,8 +113,11 @@ struct Config
...
@@ -112,8 +113,11 @@ struct Config
static
bool
classGraphFlag
;
// class graph
static
bool
classGraphFlag
;
// class graph
static
bool
collGraphFlag
;
// collaboration graph
static
bool
collGraphFlag
;
// collaboration graph
static
bool
includeGraphFlag
;
// include graph
static
bool
includeGraphFlag
;
// include graph
static
bool
includedByGraphFlag
;
// depends on include graph
static
bool
gfxHierarchyFlag
;
// flag to enable graphical hierarchy
static
bool
gfxHierarchyFlag
;
// flag to enable graphical hierarchy
static
QCString
dotPath
;
// path to the dot tool
static
QCString
dotPath
;
// path to the dot tool
static
int
maxDotGraphWidth
;
// max dot graph width
static
int
maxDotGraphHeight
;
// max dot graph height
static
bool
searchEngineFlag
;
// generate search engine flag
static
bool
searchEngineFlag
;
// generate search engine flag
static
QCString
cgiName
;
// the name of the CGI binary
static
QCString
cgiName
;
// the name of the CGI binary
static
QCString
cgiURL
;
// the absolute URL to the CGI binary
static
QCString
cgiURL
;
// the absolute URL to the CGI binary
...
...
src/config.l
View file @
7d903158
...
@@ -73,6 +73,7 @@ QCString Config::outputLanguage = "English";
...
@@ -73,6 +73,7 @@ QCString Config::outputLanguage = "English";
bool Config::noIndexFlag = FALSE;
bool Config::noIndexFlag = FALSE;
bool Config::extractAllFlag = FALSE;
bool Config::extractAllFlag = FALSE;
bool Config::extractPrivateFlag = FALSE;
bool Config::extractPrivateFlag = FALSE;
bool Config::extractStaticFlag = FALSE;
bool Config::hideMemberFlag = FALSE;
bool Config::hideMemberFlag = FALSE;
bool Config::hideClassFlag = FALSE;
bool Config::hideClassFlag = FALSE;
bool Config::briefMemDescFlag = TRUE;
bool Config::briefMemDescFlag = TRUE;
...
@@ -126,7 +127,7 @@ QStrList Config::extraPackageList;
...
@@ -126,7 +127,7 @@ QStrList Config::extraPackageList;
QCString Config::latexHeaderFile;
QCString Config::latexHeaderFile;
bool Config::pdfHyperFlag = FALSE;
bool Config::pdfHyperFlag = FALSE;
bool Config::latexBatchModeFlag = FALSE;
bool Config::latexBatchModeFlag = FALSE;
bool Config::generateRTF =
FALS
E;
bool Config::generateRTF =
TRU
E;
QCString Config::rtfOutputDir = "rtf";
QCString Config::rtfOutputDir = "rtf";
bool Config::compactRTFFlag = FALSE;
bool Config::compactRTFFlag = FALSE;
bool Config::rtfHyperFlag = FALSE;
bool Config::rtfHyperFlag = FALSE;
...
@@ -147,8 +148,11 @@ bool Config::haveDotFlag = FALSE;
...
@@ -147,8 +148,11 @@ bool Config::haveDotFlag = FALSE;
bool Config::classGraphFlag = TRUE;
bool Config::classGraphFlag = TRUE;
bool Config::collGraphFlag = TRUE;
bool Config::collGraphFlag = TRUE;
bool Config::includeGraphFlag = TRUE;
bool Config::includeGraphFlag = TRUE;
bool Config::includedByGraphFlag = TRUE;
bool Config::gfxHierarchyFlag = TRUE;
bool Config::gfxHierarchyFlag = TRUE;
QCString Config::dotPath;
QCString Config::dotPath;
int Config::maxDotGraphWidth = 1024;
int Config::maxDotGraphHeight = 1024;
bool Config::searchEngineFlag = FALSE;
bool Config::searchEngineFlag = FALSE;
QCString Config::cgiName = "search.cgi";
QCString Config::cgiName = "search.cgi";
QCString Config::cgiURL;
QCString Config::cgiURL;
...
@@ -175,6 +179,8 @@ static QCString elemStr;
...
@@ -175,6 +179,8 @@ static QCString elemStr;
//static QCString colsInAlphaIndexString;
//static QCString colsInAlphaIndexString;
static QCString tabSizeString;
static QCString tabSizeString;
static QCString colsInAlphaIndexString;
static QCString colsInAlphaIndexString;
static QCString maxDotGraphWidthString;
static QCString maxDotGraphHeightString;
/* -----------------------------------------------------------------
/* -----------------------------------------------------------------
*/
*/
...
@@ -215,6 +221,7 @@ static int yyread(char *buf,int max_size)
...
@@ -215,6 +221,7 @@ static int yyread(char *buf,int max_size)
<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; }
<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; }
<Start>"EXTRACT_ALL"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractAllFlag; }
<Start>"EXTRACT_ALL"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractAllFlag; }
<Start>"EXTRACT_PRIVATE"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractPrivateFlag; }
<Start>"EXTRACT_PRIVATE"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractPrivateFlag; }
<Start>"EXTRACT_STATIC"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractStaticFlag; }
<Start>"HIDE_UNDOC_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideMemberFlag; }
<Start>"HIDE_UNDOC_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideMemberFlag; }
<Start>"HIDE_UNDOC_CLASSES"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideClassFlag; }
<Start>"HIDE_UNDOC_CLASSES"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideClassFlag; }
<Start>"BRIEF_MEMBER_DESC"[ \t]*"=" { BEGIN(GetBool); b=&Config::briefMemDescFlag; }
<Start>"BRIEF_MEMBER_DESC"[ \t]*"=" { BEGIN(GetBool); b=&Config::briefMemDescFlag; }
...
@@ -289,8 +296,11 @@ static int yyread(char *buf,int max_size)
...
@@ -289,8 +296,11 @@ static int yyread(char *buf,int max_size)
<Start>"CLASS_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::classGraphFlag; }
<Start>"CLASS_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::classGraphFlag; }
<Start>"COLLABORATION_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::collGraphFlag; }
<Start>"COLLABORATION_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::collGraphFlag; }
<Start>"INCLUDE_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::includeGraphFlag; }
<Start>"INCLUDE_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::includeGraphFlag; }
<Start>"INCLUDED_BY_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::includedByGraphFlag; }
<Start>"GRAPHICAL_HIERARCHY"[ \t]*"=" { BEGIN(GetBool); b=&Config::gfxHierarchyFlag; }
<Start>"GRAPHICAL_HIERARCHY"[ \t]*"=" { BEGIN(GetBool); b=&Config::gfxHierarchyFlag; }
<Start>"DOT_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::dotPath; s->resize(0); }
<Start>"DOT_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::dotPath; s->resize(0); }
<Start>"MAX_DOT_GRAPH_WIDTH"[ \t]*"=" { BEGIN(GetString); s=&maxDotGraphWidthString; s->resize(0); }
<Start>"MAX_DOT_GRAPH_HEIGHT"[ \t]*"=" { BEGIN(GetString); s=&maxDotGraphHeightString; s->resize(0); }
<Start>"SEARCHENGINE"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchEngineFlag; }
<Start>"SEARCHENGINE"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchEngineFlag; }
<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiName; s->resize(0); }
<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiName; s->resize(0); }
<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiURL; s->resize(0); }
<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiURL; s->resize(0); }
...
@@ -395,6 +405,7 @@ void dumpConfig()
...
@@ -395,6 +405,7 @@ void dumpConfig()
printf("noIndexFlag=`%d'\n",Config::noIndexFlag);
printf("noIndexFlag=`%d'\n",Config::noIndexFlag);
printf("extractAllFlag=`%d'\n",Config::extractAllFlag);
printf("extractAllFlag=`%d'\n",Config::extractAllFlag);
printf("extractPrivateFlag=`%d'\n",Config::extractPrivateFlag);
printf("extractPrivateFlag=`%d'\n",Config::extractPrivateFlag);
printf("extractStaticFlag=`%d'\n",Config::extractStaticFlag);
printf("hideMemberFlag=`%d'\n",Config::hideMemberFlag);
printf("hideMemberFlag=`%d'\n",Config::hideMemberFlag);
printf("hideClassFlag=`%d'\n",Config::hideClassFlag);
printf("hideClassFlag=`%d'\n",Config::hideClassFlag);
printf("briefMemDescFlag=`%d'\n",Config::briefMemDescFlag);
printf("briefMemDescFlag=`%d'\n",Config::briefMemDescFlag);
...
@@ -577,8 +588,11 @@ void dumpConfig()
...
@@ -577,8 +588,11 @@ void dumpConfig()
printf("classGraphFlag=`%d'\n",Config::classGraphFlag);
printf("classGraphFlag=`%d'\n",Config::classGraphFlag);
printf("collGraphFlag=`%d'\n",Config::collGraphFlag);
printf("collGraphFlag=`%d'\n",Config::collGraphFlag);
printf("includeGraphFlag=`%d'\n",Config::includeGraphFlag);
printf("includeGraphFlag=`%d'\n",Config::includeGraphFlag);
printf("includedByGraphFlag=`%d'\n",Config::includedByGraphFlag);
printf("gfxHierarchyFlag=`%d'\n",Config::gfxHierarchyFlag);
printf("gfxHierarchyFlag=`%d'\n",Config::gfxHierarchyFlag);
printf("dotPath=`%s'\n",Config::dotPath.data());
printf("dotPath=`%s'\n",Config::dotPath.data());
printf("maxDotGraphWidth=`%d'\n",Config::maxDotGraphWidth);
printf("maxDotGraphHeight=`%d'\n",Config::maxDotGraphHeight);
printf("# Configuration::addtions related to the search engine \n");
printf("# Configuration::addtions related to the search engine \n");
printf("searchEngineFlag=`%d'\n",Config::searchEngineFlag);
printf("searchEngineFlag=`%d'\n",Config::searchEngineFlag);
printf("cgiName=`%s'\n",Config::cgiName.data());
printf("cgiName=`%s'\n",Config::cgiName.data());
...
@@ -605,6 +619,7 @@ void Config::init()
...
@@ -605,6 +619,7 @@ void Config::init()
Config::noIndexFlag = FALSE;
Config::noIndexFlag = FALSE;
Config::extractAllFlag = FALSE;
Config::extractAllFlag = FALSE;
Config::extractPrivateFlag = FALSE;
Config::extractPrivateFlag = FALSE;
Config::extractStaticFlag = FALSE;
Config::hideMemberFlag = FALSE;
Config::hideMemberFlag = FALSE;
Config::hideClassFlag = FALSE;
Config::hideClassFlag = FALSE;
Config::briefMemDescFlag = TRUE;
Config::briefMemDescFlag = TRUE;
...
@@ -658,7 +673,7 @@ void Config::init()
...
@@ -658,7 +673,7 @@ void Config::init()
Config::latexHeaderFile.resize(0);
Config::latexHeaderFile.resize(0);
Config::pdfHyperFlag = FALSE;
Config::pdfHyperFlag = FALSE;
Config::latexBatchModeFlag = FALSE;
Config::latexBatchModeFlag = FALSE;
Config::generateRTF =
FALS
E;
Config::generateRTF =
TRU
E;
Config::rtfOutputDir = "rtf";
Config::rtfOutputDir = "rtf";
Config::compactRTFFlag = FALSE;
Config::compactRTFFlag = FALSE;
Config::rtfHyperFlag = FALSE;
Config::rtfHyperFlag = FALSE;
...
@@ -679,8 +694,11 @@ void Config::init()
...
@@ -679,8 +694,11 @@ void Config::init()
Config::classGraphFlag = TRUE;
Config::classGraphFlag = TRUE;
Config::collGraphFlag = TRUE;
Config::collGraphFlag = TRUE;
Config::includeGraphFlag = TRUE;
Config::includeGraphFlag = TRUE;
Config::includedByGraphFlag = TRUE;
Config::gfxHierarchyFlag = TRUE;
Config::gfxHierarchyFlag = TRUE;
Config::dotPath.resize(0);
Config::dotPath.resize(0);
Config::maxDotGraphWidth = 1024;
Config::maxDotGraphHeight = 1024;
Config::searchEngineFlag = FALSE;
Config::searchEngineFlag = FALSE;
Config::cgiName = "search.cgi";
Config::cgiName = "search.cgi";
Config::cgiURL.resize(0);
Config::cgiURL.resize(0);
...
@@ -818,8 +836,10 @@ void writeTemplateConfig(QFile *f,bool sl)
...
@@ -818,8 +836,10 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
if (!sl)
{
{
t << "\n";
t << "\n";
t << "# If the EXTRACT_ALL tag is set to YES all classes and functions will be \n";
t << "# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in \n";
t << "# included in the documentation, even if no documentation was available. \n";
t << "# documentation are documented, even if no documentation was available. \n";
t << "# Private class members and static file members will be hidden unless \n";
t << "# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES \n";
t << "\n";
t << "\n";
}
}
t << "EXTRACT_ALL = ";
t << "EXTRACT_ALL = ";
...
@@ -836,10 +856,23 @@ void writeTemplateConfig(QFile *f,bool sl)
...
@@ -836,10 +856,23 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::extractPrivateFlag);
writeBoolValue(t,Config::extractPrivateFlag);
t << "\n";
t << "\n";
if (!sl)
if (!sl)
{
t << "\n";
t << "# If the EXTRACT_STATIC tag is set to YES all static members of a file \n";
t << "# will be included in the documentation. \n";
t << "\n";
}
t << "EXTRACT_STATIC = ";
writeBoolValue(t,Config::extractStaticFlag);
t << "\n";
if (!sl)
{
{
t << "\n";
t << "\n";
t << "# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all \n";
t << "# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all \n";
t << "# undocumented members inside documented classes or files. \n";
t << "# undocumented members of documented classes, files or namespaces. \n";
t << "# If set to NO (the default) these members will be included in the \n";
t << "# various overviews, but no documentation section is generated. \n";
t << "# This option has no effect if EXTRACT_ALL is enabled. \n";
t << "\n";
t << "\n";
}
}
t << "HIDE_UNDOC_MEMBERS = ";
t << "HIDE_UNDOC_MEMBERS = ";
...
@@ -849,7 +882,9 @@ void writeTemplateConfig(QFile *f,bool sl)
...
@@ -849,7 +882,9 @@ void writeTemplateConfig(QFile *f,bool sl)
{
{
t << "\n";
t << "\n";
t << "# If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all \n";
t << "# If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all \n";
t << "# undocumented classes. \n";
t << "# undocumented classes that are normally visible in the class hierarchy. \n";
t << "# If set to NO (the default) these class will be included in the various \n";
t << "# overviews. This option has no effect if EXTRACT_ALL is enabled. \n";
t << "\n";
t << "\n";
}
}
t << "HIDE_UNDOC_CLASSES = ";
t << "HIDE_UNDOC_CLASSES = ";
...
@@ -1733,6 +1768,17 @@ void writeTemplateConfig(QFile *f,bool sl)
...
@@ -1733,6 +1768,17 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::includeGraphFlag);
writeBoolValue(t,Config::includeGraphFlag);
t << "\n";
t << "\n";
if (!sl)
if (!sl)
{
t << "\n";
t << "# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to \n";
t << "# YES then doxygen will generate a graph for each documented header file showing \n";
t << "# the documented files that directly or indirectly include this file \n";
t << "\n";
}
t << "INCLUDED_BY_GRAPH = ";
writeBoolValue(t,Config::includedByGraphFlag);
t << "\n";
if (!sl)
{
{
t << "\n";
t << "\n";
t << "# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen \n";
t << "# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen \n";
...
@@ -1745,14 +1791,40 @@ void writeTemplateConfig(QFile *f,bool sl)
...
@@ -1745,14 +1791,40 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
if (!sl)
{
{
t << "\n";
t << "\n";
t << "# Th
is tag can be used to specify the path where the dot tool can be found.
\n";
t << "# Th
e tag DOT_PATH can be used to specify the path where the dot tool can be
\n";
t << "# If left blank, it is assumed the dot tool can be found on the path. \n";
t << "#
found.
If left blank, it is assumed the dot tool can be found on the path. \n";
t << "\n";
t << "\n";
}
}
t << "DOT_PATH = ";
t << "DOT_PATH = ";
writeStringValue(t,Config::dotPath);
writeStringValue(t,Config::dotPath);
t << "\n";
t << "\n";
if (!sl)
if (!sl)
{
t << "\n";
t << "# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width \n";
t << "# (in pixels) of the graphs generated by dot. If a graph becomes larger than \n";
t << "# this value, doxygen will try to truncate the graph, so that it fits within \n";
t << "# the specified constraint. Beware that most browsers cannot cope with very \n";
t << "# large images. \n";
t << "\n";
}
t << "MAX_DOT_GRAPH_WIDTH = ";
writeIntValue(t,Config::maxDotGraphWidth);
t << "\n";
if (!sl)
{
t << "\n";
t << "# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height \n";
t << "# (in pixels) of the graphs generated by dot. If a graph becomes larger than \n";
t << "# this value, doxygen will try to truncate the graph, so that it fits within \n";
t << "# the specified constraint. Beware that most browsers cannot cope with very \n";
t << "# large images. \n";
t << "\n";
}
t << "MAX_DOT_GRAPH_HEIGHT = ";
writeIntValue(t,Config::maxDotGraphHeight);
t << "\n";
if (!sl)
{
{
t << "\n";
t << "\n";
}
}
...
...
src/dot.cpp
View file @
7d903158
...
@@ -30,11 +30,8 @@
...
@@ -30,11 +30,8 @@
//--------------------------------------------------------------------
//--------------------------------------------------------------------
const
int
maxImageWidth
=
1024
;
const
int
maxImageHeight
=
1024
;
/*! mapping from protection levels to color names */
/*! mapping from protection levels to color names */
static
char
*
edgeColorMap
[]
=
static
c
onst
c
har
*
edgeColorMap
[]
=
{
{
"midnightblue"
,
// Public
"midnightblue"
,
// Public
"darkgreen"
,
// Protected
"darkgreen"
,
// Protected
...
@@ -43,7 +40,7 @@ static char *edgeColorMap[] =
...
@@ -43,7 +40,7 @@ static char *edgeColorMap[] =
"grey"
// Undocumented
"grey"
// Undocumented
};
};
static
char
*
edgeStyleMap
[]
=
static
c
onst
c
har
*
edgeStyleMap
[]
=
{
{
"solid"
,
// inheritance
"solid"
,
// inheritance
"dashed"
// usage
"dashed"
// usage
...
@@ -364,7 +361,8 @@ void DotNode::write(QTextStream &t,
...
@@ -364,7 +361,8 @@ void DotNode::write(QTextStream &t,
GraphOutputFormat
format
,
GraphOutputFormat
format
,
bool
topDown
,
bool
topDown
,
bool
toChildren
,
bool
toChildren
,
int
distance
int
distance
,
bool
backArrows
)
)
{
{
//printf("DotNode::write(%d) name=%s\n",distance,m_label.data());
//printf("DotNode::write(%d) name=%s\n",distance,m_label.data());
...
@@ -394,9 +392,9 @@ void DotNode::write(QTextStream &t,
...
@@ -394,9 +392,9 @@ void DotNode::write(QTextStream &t,
{
{
if
(
cn
->
m_distance
<=
distance
)
if
(
cn
->
m_distance
<=
distance
)
{
{
writeArrow
(
t
,
format
,
cn
,
dnli2
.
current
(),
topDown
);
writeArrow
(
t
,
format
,
cn
,
dnli2
.
current
(),
topDown
,
backArrows
);
}
}
cn
->
write
(
t
,
format
,
topDown
,
toChildren
,
distance
);
cn
->
write
(
t
,
format
,
topDown
,
toChildren
,
distance
,
backArrows
);
}
}
}
}
else
// render parents
else
// render parents
...
@@ -411,10 +409,11 @@ void DotNode::write(QTextStream &t,
...
@@ -411,10 +409,11 @@ void DotNode::write(QTextStream &t,
format
,
format
,
pn
,
pn
,
pn
->
m_edgeInfo
->
at
(
pn
->
m_children
->
findRef
(
this
)),
pn
->
m_edgeInfo
->
at
(
pn
->
m_children
->
findRef
(
this
)),
FALSE
FALSE
,
backArrows
);
);
}
}
pn
->
write
(
t
,
format
,
TRUE
,
FALSE
,
distance
);
pn
->
write
(
t
,
format
,
TRUE
,
FALSE
,
distance
,
backArrows
);
}
}
}
}
}
}
...
@@ -915,11 +914,12 @@ void writeDotGraph(DotNode *root,
...
@@ -915,11 +914,12 @@ void writeDotGraph(DotNode *root,
const
QCString
&
baseName
,
const
QCString
&
baseName
,
bool
lrRank
,
bool
lrRank
,
bool
renderParents
,
bool
renderParents
,
int
distance
int
distance
,
bool
backArrows
)
)
{
{
// generate the graph description for dot
// generate the graph description for dot
//printf("writeDotGraph(%s,%d)\n",baseName.data(),
renderParent
s);
//printf("writeDotGraph(%s,%d)\n",baseName.data(),
backArrow
s);
QFile
f
;
QFile
f
;
f
.
setName
(
baseName
+
".dot"
);
f
.
setName
(
baseName
+
".dot"
);
if
(
f
.
open
(
IO_WriteOnly
))
if
(
f
.
open
(
IO_WriteOnly
))
...
@@ -932,7 +932,7 @@ void writeDotGraph(DotNode *root,
...
@@ -932,7 +932,7 @@ void writeDotGraph(DotNode *root,
t
<<
" rankdir=LR;"
<<
endl
;
t
<<
" rankdir=LR;"
<<
endl
;
}
}
root
->
clearWriteFlag
();
root
->
clearWriteFlag
();
root
->
write
(
t
,
format
,
TRUE
,
TRUE
,
distance
);
root
->
write
(
t
,
format
,
TRUE
,
TRUE
,
distance
,
backArrows
);
if
(
renderParents
&&
root
->
m_parents
)
if
(
renderParents
&&
root
->
m_parents
)
{
{
//printf("rendering parents!\n");
//printf("rendering parents!\n");
...
@@ -946,10 +946,11 @@ void writeDotGraph(DotNode *root,
...
@@ -946,10 +946,11 @@ void writeDotGraph(DotNode *root,
format
,
format
,
pn
,
pn
,
pn
->
m_edgeInfo
->
at
(
pn
->
m_children
->
findRef
(
root
)),
pn
->
m_edgeInfo
->
at
(
pn
->
m_children
->
findRef
(
root
)),
FALSE
FALSE
,
backArrows
);
);
}
}
pn
->
write
(
t
,
format
,
TRUE
,
FALSE
,
distance
);
pn
->
write
(
t
,
format
,
TRUE
,
FALSE
,
distance
,
backArrows
);
}
}
}
}
t
<<
"}"
<<
endl
;
t
<<
"}"
<<
endl
;
...
@@ -963,7 +964,8 @@ static void findMaximalDotGraph(DotNode *root,
...
@@ -963,7 +964,8 @@ static void findMaximalDotGraph(DotNode *root,
QDir
&
thisDir
,
QDir
&
thisDir
,
GraphOutputFormat
format
,
GraphOutputFormat
format
,
bool
lrRank
=
FALSE
,
bool
lrRank
=
FALSE
,
bool
renderParents
=
FALSE
bool
renderParents
=
FALSE
,
bool
backArrows
=
TRUE
)
)
{
{
bool
lastFit
;
bool
lastFit
;
...
@@ -974,10 +976,11 @@ static void findMaximalDotGraph(DotNode *root,
...
@@ -974,10 +976,11 @@ static void findMaximalDotGraph(DotNode *root,
int
height
=
0
;
int
height
=
0
;
// binary search for the maximal inheritance depth that fits in a reasonable
// binary search for the maximal inheritance depth that fits in a reasonable
// sized image (dimensions:
maxImageWidth, maxImage
Height)
// sized image (dimensions:
Config::maxDotGraphWidth, Config::maxDotGraph
Height)
do
do
{
{
writeDotGraph
(
root
,
format
,
baseName
,
lrRank
,
renderParents
,
curDistance
);
writeDotGraph
(
root
,
format
,
baseName
,
lrRank
,
renderParents
,
curDistance
,
backArrows
);
QCString
dotCmd
(
4096
);
QCString
dotCmd
(
4096
);
// create annotated dot file
// create annotated dot file
...
@@ -995,7 +998,7 @@ static void findMaximalDotGraph(DotNode *root,
...
@@ -995,7 +998,7 @@ static void findMaximalDotGraph(DotNode *root,
height
=
height
*
96
/
72
;
// 96 pixels/inch, 72 points/inch
height
=
height
*
96
/
72
;
// 96 pixels/inch, 72 points/inch
//printf("Found bounding box (%d,%d)\n",width,height);
//printf("Found bounding box (%d,%d)\n",width,height);
lastFit
=
(
width
<
maxImageWidth
&&
height
<
maxImage
Height
);
lastFit
=
(
width
<
Config
::
maxDotGraphWidth
&&
height
<
Config
::
maxDotGraph
Height
);
if
(
lastFit
)
// image is small enough
if
(
lastFit
)
// image is small enough
{
{
minDistance
=
curDistance
;
minDistance
=
curDistance
;
...
@@ -1020,9 +1023,10 @@ static void findMaximalDotGraph(DotNode *root,
...
@@ -1020,9 +1023,10 @@ static void findMaximalDotGraph(DotNode *root,
writeDotGraph
(
root
,
writeDotGraph
(
root
,
format
,
format
,
baseName
,
baseName
,
lrRank
||
(
curDistance
==
1
&&
width
>
maxImage
Width
),
lrRank
||
(
curDistance
==
1
&&
width
>
Config
::
maxDotGraph
Width
),
renderParents
,
renderParents
,
minDistance
minDistance
,
backArrows
);
);
}
}
}
}
...
@@ -1131,7 +1135,8 @@ int DotInclDepGraph::m_curNodeNumber;
...
@@ -1131,7 +1135,8 @@ int DotInclDepGraph::m_curNodeNumber;
void
DotInclDepGraph
::
buildGraph
(
DotNode
*
n
,
FileDef
*
fd
,
int
distance
)
void
DotInclDepGraph
::
buildGraph
(
DotNode
*
n
,
FileDef
*
fd
,
int
distance
)
{
{
QList
<
IncludeInfo
>
*
includeFiles
=
fd
->
includeFileList
();
QList
<
IncludeInfo
>
*
includeFiles
=
m_inverse
?
fd
->
includedByFileList
()
:
fd
->
includeFileList
();
QListIterator
<
IncludeInfo
>
ili
(
*
includeFiles
);
QListIterator
<
IncludeInfo
>
ili
(
*
includeFiles
);
IncludeInfo
*
ii
;
IncludeInfo
*
ii
;
for
(;(
ii
=
ili
.
current
());
++
ili
)
for
(;(
ii
=
ili
.
current
());
++
ili
)
...
@@ -1178,9 +1183,10 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
...
@@ -1178,9 +1183,10 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
}
}
}
}
DotInclDepGraph
::
DotInclDepGraph
(
FileDef
*
fd
)
DotInclDepGraph
::
DotInclDepGraph
(
FileDef
*
fd
,
bool
inverse
)
{
{
m_maxDistance
=
0
;
m_maxDistance
=
0
;
m_inverse
=
inverse
;
ASSERT
(
fd
!=
0
);
ASSERT
(
fd
!=
0
);
m_diskName
=
fd
->
getOutputFileBase
().
copy
();
m_diskName
=
fd
->
getOutputFileBase
().
copy
();
m_startNode
=
new
DotNode
(
m_curNodeNumber
++
,
m_startNode
=
new
DotNode
(
m_curNodeNumber
++
,
...
@@ -1221,9 +1227,14 @@ void DotInclDepGraph::writeGraph(QTextStream &out,
...
@@ -1221,9 +1227,14 @@ void DotInclDepGraph::writeGraph(QTextStream &out,
QDir
::
setCurrent
(
d
.
absPath
());
QDir
::
setCurrent
(
d
.
absPath
());
QDir
thisDir
;
QDir
thisDir
;
QCString
baseName
=
m_diskName
+
"_incldep"
;
QCString
baseName
=
m_diskName
;
if
(
m_inverse
)
baseName
+=
"_dep"
;
baseName
+=
"_incl"
;
QCString
mapName
=
m_startNode
->
m_label
.
copy
();
if
(
m_inverse
)
mapName
+=
"dep"
;
findMaximalDotGraph
(
m_startNode
,
m_maxDistance
,
baseName
,
thisDir
,
format
);
findMaximalDotGraph
(
m_startNode
,
m_maxDistance
,
baseName
,
thisDir
,
format
,
FALSE
,
FALSE
,
!
m_inverse
);
if
(
format
==
GIF
)
if
(
format
==
GIF
)
{
{
...
@@ -1247,8 +1258,8 @@ void DotInclDepGraph::writeGraph(QTextStream &out,
...
@@ -1247,8 +1258,8 @@ void DotInclDepGraph::writeGraph(QTextStream &out,
}
}
out
<<
"<p><center><img src=
\"
"
<<
baseName
<<
".gif
\"
border=
\"
0
\"
usemap=
\"
#"
out
<<
"<p><center><img src=
\"
"
<<
baseName
<<
".gif
\"
border=
\"
0
\"
usemap=
\"
#"
<<
m
_startNode
->
m_label
<<
"_map
\"
></center>"
<<
endl
;
<<
m
apName
<<
"_map
\"
></center>"
<<
endl
;
out
<<
"<map name=
\"
"
<<
m
_startNode
->
m_label
<<
"_map
\"
>"
<<
endl
;
out
<<
"<map name=
\"
"
<<
m
apName
<<
"_map
\"
>"
<<
endl
;
convertMapFile
(
out
,
baseName
+
".map"
);
convertMapFile
(
out
,
baseName
+
".map"
);
out
<<
"</map><p>"
<<
endl
;
out
<<
"</map><p>"
<<
endl
;
thisDir
.
remove
(
baseName
+
".map"
);
thisDir
.
remove
(
baseName
+
".map"
);
...
@@ -1257,7 +1268,6 @@ void DotInclDepGraph::writeGraph(QTextStream &out,
...
@@ -1257,7 +1268,6 @@ void DotInclDepGraph::writeGraph(QTextStream &out,
{
{
// run dot to create a .eps image
// run dot to create a .eps image
QCString
dotCmd
;
QCString
dotCmd
;
dotCmd
.
sprintf
(
"%sdot -Tps
\"
%s.dot
\"
-o
\"
%s.eps
\"
"
,
dotCmd
.
sprintf
(
"%sdot -Tps
\"
%s.dot
\"
-o
\"
%s.eps
\"
"
,
Config
::
dotPath
.
data
(),
baseName
.
data
(),
baseName
.
data
());
Config
::
dotPath
.
data
(),
baseName
.
data
(),
baseName
.
data
());
if
(
system
(
dotCmd
)
!=
0
)
if
(
system
(
dotCmd
)
!=
0
)
...
...
src/dot.h
View file @
7d903158
...
@@ -52,7 +52,9 @@ class DotNode
...
@@ -52,7 +52,9 @@ class DotNode
const
QCString
&
baseName
,
const
QCString
&
baseName
,
bool
lrRank
,
bool
lrRank
,
bool
renderParents
,
bool
renderParents
,
int
distance
);
int
distance
,
bool
backArrow
);
public
:
public
:
DotNode
(
int
n
,
const
char
*
lab
,
const
char
*
url
,
int
distance
=
0
,
bool
rootNode
=
FALSE
);
DotNode
(
int
n
,
const
char
*
lab
,
const
char
*
url
,
int
distance
=
0
,
bool
rootNode
=
FALSE
);
~
DotNode
();
~
DotNode
();
...
@@ -70,7 +72,7 @@ class DotNode
...
@@ -70,7 +72,7 @@ class DotNode
void
removeParent
(
DotNode
*
n
);
void
removeParent
(
DotNode
*
n
);
int
number
()
const
{
return
m_number
;
}
int
number
()
const
{
return
m_number
;
}
void
write
(
QTextStream
&
t
,
GraphOutputFormat
f
,
bool
topDown
,
bool
toChildren
,
void
write
(
QTextStream
&
t
,
GraphOutputFormat
f
,
bool
topDown
,
bool
toChildren
,
int
maxDistance
=
1000
);
int
maxDistance
=
1000
,
bool
backArrows
=
TRUE
);
int
m_subgraphId
;
int
m_subgraphId
;
void
clearWriteFlag
();
void
clearWriteFlag
();
...
@@ -137,7 +139,7 @@ class DotClassGraph
...
@@ -137,7 +139,7 @@ class DotClassGraph
class
DotInclDepGraph
class
DotInclDepGraph
{
{
public
:
public
:
DotInclDepGraph
(
FileDef
*
fd
);
DotInclDepGraph
(
FileDef
*
fd
,
bool
inverse
=
FALSE
);
~
DotInclDepGraph
();
~
DotInclDepGraph
();
void
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
);
void
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
);
bool
isTrivial
()
const
;
bool
isTrivial
()
const
;
...
@@ -150,4 +152,5 @@ class DotInclDepGraph
...
@@ -150,4 +152,5 @@ class DotInclDepGraph
static
int
m_curNodeNumber
;
static
int
m_curNodeNumber
;
QCString
m_diskName
;
QCString
m_diskName
;
int
m_maxDistance
;
int
m_maxDistance
;
bool
m_inverse
;
};
};
src/doxygen.cpp
View file @
7d903158
...
@@ -1165,10 +1165,9 @@ void buildVarList(Entry *root)
...
@@ -1165,10 +1165,9 @@ void buildVarList(Entry *root)
root
->
type
=
root
->
name
;
root
->
type
=
root
->
name
;
QRegExp
re
(
"[a-z_A-Z][a-z_A-Z0-9]*"
);
QRegExp
re
(
"[a-z_A-Z][a-z_A-Z0-9]*"
);
int
l
;
int
l
;
i
=
re
.
match
(
root
->
args
,
0
,
&
l
);
i
=
r
oot
->
args
.
isEmpty
()
?
-
1
:
r
e
.
match
(
root
->
args
,
0
,
&
l
);
root
->
name
=
root
->
args
.
mid
(
i
,
l
);
root
->
name
=
root
->
args
.
mid
(
i
,
l
);
root
->
args
=
root
->
args
.
mid
(
i
+
l
,
root
->
args
=
root
->
args
.
mid
(
i
+
l
,
root
->
args
.
find
(
')'
,
i
+
l
)
-
i
-
l
);
root
->
args
.
find
(
')'
,
i
+
l
)
-
i
-
l
);
//printf("new: type=`%s' name=`%s' args=`%s'\n",
//printf("new: type=`%s' name=`%s' args=`%s'\n",
// root->type.data(),root->name.data(),root->args.data());
// root->type.data(),root->name.data(),root->args.data());
}
}
...
@@ -1350,7 +1349,7 @@ static void buildMemberList(Entry *root)
...
@@ -1350,7 +1349,7 @@ static void buildMemberList(Entry *root)
)
)
{
{
int
l
;
int
l
;
if
((
i
=
re
.
match
(
root
->
type
,
0
,
&
l
))
!=-
1
)
// function variable
if
(
!
root
->
type
.
isEmpty
()
&&
(
i
=
re
.
match
(
root
->
type
,
0
,
&
l
))
!=-
1
)
// function variable
{
{
root
->
args
+=
root
->
type
.
right
(
root
->
type
.
length
()
-
i
-
l
);
root
->
args
+=
root
->
type
.
right
(
root
->
type
.
length
()
-
i
-
l
);
root
->
type
=
root
->
type
.
left
(
i
+
l
);
root
->
type
=
root
->
type
.
left
(
i
+
l
);
...
@@ -1882,8 +1881,14 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
...
@@ -1882,8 +1881,14 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
int
typeLen
=
baseClassName
.
length
();
int
typeLen
=
baseClassName
.
length
();
while
(
e
<
typeLen
&&
brCount
!=
0
)
while
(
e
<
typeLen
&&
brCount
!=
0
)
{
{
if
(
baseClassName
.
at
(
e
)
==
'<'
)
brCount
++
;
if
(
baseClassName
.
at
(
e
)
==
'<'
)
if
(
baseClassName
.
at
(
e
)
==
'>'
)
brCount
--
;
{
if
(
e
<
typeLen
-
1
&&
baseClassName
.
at
(
e
+
1
)
==
'<'
)
e
++
;
else
brCount
++
;
}
if
(
baseClassName
.
at
(
e
)
==
'>'
)
{
if
(
e
<
typeLen
-
1
&&
baseClassName
.
at
(
e
+
1
)
==
'>'
)
e
++
;
else
brCount
--
;
}
e
++
;
e
++
;
}
}
if
(
brCount
==
0
)
// end of template was found at e
if
(
brCount
==
0
)
// end of template was found at e
...
@@ -2185,6 +2190,8 @@ static void addMemberDocs(Entry *root,
...
@@ -2185,6 +2190,8 @@ static void addMemberDocs(Entry *root,
FileDef
*
fd
=
findFileDef
(
inputNameDict
,
root
->
fileName
,
ambig
);
FileDef
*
fd
=
findFileDef
(
inputNameDict
,
root
->
fileName
,
ambig
);
md
->
setBodyDef
(
fd
);
md
->
setBodyDef
(
fd
);
}
}
}
}
//md->setDefFile(root->fileName);
//md->setDefFile(root->fileName);
//md->setDefLine(root->startLine);
//md->setDefLine(root->startLine);
...
@@ -2192,6 +2199,7 @@ static void addMemberDocs(Entry *root,
...
@@ -2192,6 +2199,7 @@ static void addMemberDocs(Entry *root,
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
addMemberToGroups
(
root
,
md
);
addMemberToGroups
(
root
,
md
);
if
(
cd
)
cd
->
insertUsedFile
(
root
->
fileName
);
if
(
cd
)
cd
->
insertUsedFile
(
root
->
fileName
);
//printf("root->mGrpId=%d\n",root->mGrpId);
if
(
root
->
mGrpId
!=-
1
)
if
(
root
->
mGrpId
!=-
1
)
{
{
if
(
md
->
getMemberGroupId
()
!=-
1
)
if
(
md
->
getMemberGroupId
()
!=-
1
)
...
@@ -2208,23 +2216,9 @@ static void addMemberDocs(Entry *root,
...
@@ -2208,23 +2216,9 @@ static void addMemberDocs(Entry *root,
}
}
else
// set group id
else
// set group id
{
{
//printf("setMemberGroupId=%d md=%s\n",root->mGrpId,md->name().data());
md
->
setMemberGroupId
(
root
->
mGrpId
);
md
->
setMemberGroupId
(
root
->
mGrpId
);
}
}
//md->setMemberGroup(memberGroupDict[root->mGrpId]);
// if (cd)
// cd->addMemberToGroup(md,root->mGrpId);
// else if (nd)
// nd->addMemberToGroup(md,root->mGrpId);
// else
// {
// bool ambig;
// FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
// if (fd)
// {
// //fd->addMemberToGroup(md,root->mGrpId);
// }
// }
//}
}
}
}
}
...
@@ -2419,24 +2413,26 @@ static void substituteTemplateArgNames(ArgumentList *src,
...
@@ -2419,24 +2413,26 @@ static void substituteTemplateArgNames(ArgumentList *src,
bool
isReplaced
=
FALSE
;
bool
isReplaced
=
FALSE
;
QRegExp
re
(
idMask
);
QRegExp
re
(
idMask
);
int
i
,
p
=
0
,
l
,
c
=
0
;
int
i
,
p
=
0
,
l
,
c
=
0
;
while
((
i
=
re
.
match
(
s
,
p
,
&
l
))
!=-
1
)
// for each template name found at the
while
(
!
s
.
isEmpty
()
&&
(
i
=
re
.
match
(
s
,
p
,
&
l
))
!=-
1
)
// for each template name found at the
// member definition
// member definition
{
{
Argument
*
ta
=
c
<
(
int
)
tempArgs
->
count
()
?
tempArgs
->
at
(
c
)
:
0
;
Argument
*
ta
=
c
<
(
int
)
tempArgs
->
count
()
?
tempArgs
->
at
(
c
)
:
0
;
if
(
ta
)
// get matching template argument of the class
if
(
ta
)
// get matching template argument of the class
{
{
QCString
dstName
=
s
.
mid
(
i
,
l
);
QCString
dstName
=
s
.
mid
(
i
,
l
);
QCString
srcName
=
ta
->
type
.
copy
();
QCString
srcName
=
ta
->
name
.
copy
();
if
(
srcName
.
isEmpty
())
srcName
=
ta
->
type
.
copy
();
//printf("1.Template Name = `%s' -> `%s'\n",srcName.data(),dstName.data());
int
bi
;
int
bi
;
if
((
bi
=
srcName
.
findRev
(
' '
))
!=-
1
)
// search for separator
if
((
bi
=
srcName
.
findRev
(
' '
))
!=-
1
)
// search for separator
{
{
// strip the type specifier (usuall class or typename)
// strip the type specifier (usuall
y
class or typename)
srcName
=
srcName
.
right
(
srcName
.
length
()
-
bi
-
1
);
srcName
=
srcName
.
right
(
srcName
.
length
()
-
bi
-
1
);
}
}
//if (srcName.left(6)=="class ") srcName=srcName.right(srcName.length()-6);
//if (srcName.left(6)=="class ") srcName=srcName.right(srcName.length()-6);
//if (srcName.left(9)=="typename ") srcName=srcName.right(srcName.length()-9);
//if (srcName.left(9)=="typename ") srcName=srcName.right(srcName.length()-9);
//printf("Template Name = `%s' -> `%s'\n",srcName.data(),dstName.data());
//printf("
2.
Template Name = `%s' -> `%s'\n",srcName.data(),dstName.data());
if
(
srcName
!=
dstName
)
/* we need to substitute */
if
(
srcName
!=
dstName
)
/* we need to substitute */
{
{
int
ti
,
tp
=
0
;
int
ti
,
tp
=
0
;
...
@@ -2478,7 +2474,7 @@ static void substituteTemplateArgNames(ArgumentList *src,
...
@@ -2478,7 +2474,7 @@ static void substituteTemplateArgNames(ArgumentList *src,
}
}
dst
->
append
(
na
);
dst
->
append
(
na
);
}
}
//printf("substituteTemplateArgNames(
src=`%s',tempNameStr=`%s',tempArgs=`%s',dest=`%s'
)\n",
//printf("substituteTemplateArgNames(
\nsrc=`%s',\ntempNameStr=`%s',\ntempArgs=`%s',\ndest=`%s'\n
)\n",
// argListToString(src).data(),
// argListToString(src).data(),
// s.data(),
// s.data(),
// argListToString(tempArgs).data(),
// argListToString(tempArgs).data(),
...
@@ -3210,14 +3206,14 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
...
@@ -3210,14 +3206,14 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
static
void
findMemberDocumentation
(
Entry
*
root
)
static
void
findMemberDocumentation
(
Entry
*
root
)
{
{
int
i
,
l
;
int
i
=-
1
,
l
;
QRegExp
re
(
"([a-zA-Z0-9: ]*
\\
*+[
\\
*]*"
);
QRegExp
re
(
"([a-zA-Z0-9: ]*
\\
*+[
\\
*]*"
);
Debug
::
print
(
Debug
::
FindMembers
,
0
,
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->memSpec=%d
\n
"
,
"root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->memSpec=%d
root->mGrpId=%d
\n
"
,
root
->
type
.
data
(),
root
->
inside
.
data
(),
root
->
name
.
data
(),
root
->
args
.
data
(),
root
->
section
,
root
->
memSpec
root
->
type
.
data
(),
root
->
inside
.
data
(),
root
->
name
.
data
(),
root
->
args
.
data
(),
root
->
section
,
root
->
memSpec
,
root
->
mGrpId
);
);
bool
isFunc
=
TRUE
;
bool
isFunc
=
TRUE
;
if
((
i
=
re
.
match
(
root
->
type
,
0
,
&
l
))
!=-
1
)
// func variable/typedef to func ptr
if
(
!
root
->
type
.
isEmpty
()
&&
(
i
=
re
.
match
(
root
->
type
,
0
,
&
l
))
!=-
1
)
// func variable/typedef to func ptr
{
{
root
->
args
+=
root
->
type
.
right
(
root
->
type
.
length
()
-
i
-
l
);
root
->
args
+=
root
->
type
.
right
(
root
->
type
.
length
()
-
i
-
l
);
root
->
type
=
root
->
type
.
left
(
i
+
l
);
root
->
type
=
root
->
type
.
left
(
i
+
l
);
...
@@ -3249,14 +3245,13 @@ static void findMemberDocumentation(Entry *root)
...
@@ -3249,14 +3245,13 @@ static void findMemberDocumentation(Entry *root)
else
if
else
if
((
root
->
section
==
Entry
::
FUNCTION_SEC
// function
((
root
->
section
==
Entry
::
FUNCTION_SEC
// function
||
||
(
root
->
section
==
Entry
::
VARIABLE_SEC
&&
(
root
->
section
==
Entry
::
VARIABLE_SEC
&&
// variable
!
root
->
type
.
isEmpty
()
&&
root
->
type
.
left
(
8
)
!=
"typedef "
&&
!
root
->
type
.
isEmpty
()
&&
root
->
type
.
left
(
8
)
!=
"typedef "
&&
compoundKeywordDict
.
find
(
root
->
type
)
==
0
compoundKeywordDict
.
find
(
root
->
type
)
==
0
)
)
)
&&
)
&&
(
!
root
->
doc
.
isEmpty
()
||
!
root
->
brief
.
isEmpty
()
||
(
!
root
->
doc
.
isEmpty
()
||
!
root
->
brief
.
isEmpty
()
||
root
->
bodyLine
!=-
1
||
root
->
bodyLine
!=-
1
(
root
->
memSpec
&
Entry
::
Inline
)
||
root
->
mGrpId
!=-
1
||
(
root
->
memSpec
&
Entry
::
Inline
)
)
)
)
)
{
{
...
@@ -3385,8 +3380,15 @@ static void findEnums(Entry *root)
...
@@ -3385,8 +3380,15 @@ static void findEnums(Entry *root)
// md->setMemberGroup(memberGroupDict[root->mGrpId]);
// md->setMemberGroup(memberGroupDict[root->mGrpId]);
//}
//}
if
(
nd
&&
!
nd
->
name
().
isEmpty
()
&&
nd
->
name
().
at
(
0
)
!=
'@'
)
if
(
nd
&&
!
nd
->
name
().
isEmpty
()
&&
nd
->
name
().
at
(
0
)
!=
'@'
)
{
if
(
Config
::
hideScopeNames
)
{
md
->
setDefinition
(
name
);
}
else
{
{
md
->
setDefinition
(
nd
->
name
()
+
"::"
+
name
);
md
->
setDefinition
(
nd
->
name
()
+
"::"
+
name
);
}
nd
->
insertMember
(
md
);
nd
->
insertMember
(
md
);
md
->
setNamespace
(
nd
);
md
->
setNamespace
(
nd
);
}
}
...
@@ -3396,8 +3398,15 @@ static void findEnums(Entry *root)
...
@@ -3396,8 +3398,15 @@ static void findEnums(Entry *root)
fd
->
insertMember
(
md
);
fd
->
insertMember
(
md
);
}
}
else
if
(
cd
)
else
if
(
cd
)
{
if
(
Config
::
hideScopeNames
)
{
md
->
setDefinition
(
name
);
}
else
{
{
md
->
setDefinition
(
cd
->
name
()
+
"::"
+
name
);
md
->
setDefinition
(
cd
->
name
()
+
"::"
+
name
);
}
cd
->
insertMember
(
md
);
cd
->
insertMember
(
md
);
cd
->
insertUsedFile
(
root
->
fileName
);
cd
->
insertUsedFile
(
root
->
fileName
);
}
}
...
@@ -3538,7 +3547,6 @@ static void findEnumDocumentation(Entry *root)
...
@@ -3538,7 +3547,6 @@ static void findEnumDocumentation(Entry *root)
if
(
root
->
mGrpId
!=-
1
&&
md
->
getMemberGroupId
()
==-
1
)
if
(
root
->
mGrpId
!=-
1
&&
md
->
getMemberGroupId
()
==-
1
)
{
{
//cd->addMemberToGroup(md,root->mGrpId);
md
->
setMemberGroupId
(
root
->
mGrpId
);
md
->
setMemberGroupId
(
root
->
mGrpId
);
}
}
...
@@ -3562,6 +3570,7 @@ static void findEnumDocumentation(Entry *root)
...
@@ -3562,6 +3570,7 @@ static void findEnumDocumentation(Entry *root)
md
->
setDocumentation
(
root
->
doc
);
md
->
setDocumentation
(
root
->
doc
);
md
->
setBriefDescription
(
root
->
brief
);
md
->
setBriefDescription
(
root
->
brief
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
md
->
setMemberGroupId
(
root
->
mGrpId
);
found
=
TRUE
;
found
=
TRUE
;
}
}
}
}
...
@@ -3853,7 +3862,8 @@ static void addSourceReferences()
...
@@ -3853,7 +3862,8 @@ static void addSourceReferences()
{
{
//printf("Found member `%s' in file `%s' at line `%d'\n",
//printf("Found member `%s' in file `%s' at line `%d'\n",
// md->name().data(),fd->name().data(),md->getStartBodyLine());
// md->name().data(),fd->name().data(),md->getStartBodyLine());
Definition
*
d
=
gd
?
gd
:
(
nd
?
nd
:
fd
);
Definition
*
d
=
gd
!=
0
?
(
Definition
*
)
gd
:
(
nd
!=
0
?
(
Definition
*
)
nd
:
(
Definition
*
)
fd
);
fd
->
addSourceRef
(
md
->
getStartBodyLine
(),
d
,
md
);
fd
->
addSourceRef
(
md
->
getStartBodyLine
(),
d
,
md
);
}
}
}
}
...
...
src/filedef.cpp
View file @
7d903158
...
@@ -46,6 +46,9 @@ FileDef::FileDef(const char *p,const char *nm,const char *ref)
...
@@ -46,6 +46,9 @@ FileDef::FileDef(const char *p,const char *nm,const char *ref)
includeList
=
new
QList
<
IncludeInfo
>
;
includeList
=
new
QList
<
IncludeInfo
>
;
includeList
->
setAutoDelete
(
TRUE
);
includeList
->
setAutoDelete
(
TRUE
);
includeDict
=
new
QDict
<
IncludeInfo
>
(
61
);
includeDict
=
new
QDict
<
IncludeInfo
>
(
61
);
includedByList
=
new
QList
<
IncludeInfo
>
;
includedByList
->
setAutoDelete
(
TRUE
);
includedByDict
=
new
QDict
<
IncludeInfo
>
(
61
);
namespaceList
=
new
NamespaceList
;
namespaceList
=
new
NamespaceList
;
namespaceDict
=
new
NamespaceDict
(
7
);
namespaceDict
=
new
NamespaceDict
(
7
);
srcDefDict
=
0
;
srcDefDict
=
0
;
...
@@ -188,7 +191,7 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -188,7 +191,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if
(
Config
::
haveDotFlag
&&
Config
::
includeGraphFlag
)
if
(
Config
::
haveDotFlag
&&
Config
::
includeGraphFlag
)
{
{
//printf("Graph for file %s\n",name().data());
//printf("Graph for file %s\n",name().data());
DotInclDepGraph
incDepGraph
(
this
);
DotInclDepGraph
incDepGraph
(
this
,
FALSE
);
if
(
!
incDepGraph
.
isTrivial
())
if
(
!
incDepGraph
.
isTrivial
())
{
{
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
disable
(
OutputGenerator
::
Man
);
...
@@ -201,6 +204,22 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -201,6 +204,22 @@ void FileDef::writeDocumentation(OutputList &ol)
//incDepGraph.writeGraph(Config::htmlOutputDir,fd->getOutputFileBase());
//incDepGraph.writeGraph(Config::htmlOutputDir,fd->getOutputFileBase());
}
}
if
(
Config
::
haveDotFlag
&&
Config
::
includedByGraphFlag
)
{
//printf("Graph for file %s\n",name().data());
DotInclDepGraph
incDepGraph
(
this
,
TRUE
);
if
(
!
incDepGraph
.
isTrivial
())
{
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
newParagraph
();
ol
.
startInclDepGraph
();
parseText
(
ol
,
theTranslator
->
trInclByDepGraph
());
ol
.
endInclDepGraph
(
incDepGraph
);
ol
.
enableAll
();
}
//incDepGraph.writeGraph(Config::htmlOutputDir,fd->getOutputFileBase());
}
if
(
generateSource
()
||
(
!
isReference
()
&&
Config
::
sourceBrowseFlag
))
if
(
generateSource
()
||
(
!
isReference
()
&&
Config
::
sourceBrowseFlag
))
{
{
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
...
@@ -454,6 +473,7 @@ void FileDef::addMemberListToGroup(MemberList *ml,
...
@@ -454,6 +473,7 @@ void FileDef::addMemberListToGroup(MemberList *ml,
{
{
QCString
*
pGrpHeader
=
memberHeaderDict
[
groupId
];
QCString
*
pGrpHeader
=
memberHeaderDict
[
groupId
];
QCString
*
pDocs
=
memberDocDict
[
groupId
];
QCString
*
pDocs
=
memberDocDict
[
groupId
];
//printf("Member `%s' pGrpHeader=%p\n",md->name().data(),pGrpHeader);
if
(
pGrpHeader
)
if
(
pGrpHeader
)
{
{
MemberGroup
*
mg
=
memberGroupDict
->
find
(
groupId
);
MemberGroup
*
mg
=
memberGroupDict
->
find
(
groupId
);
...
@@ -463,6 +483,7 @@ void FileDef::addMemberListToGroup(MemberList *ml,
...
@@ -463,6 +483,7 @@ void FileDef::addMemberListToGroup(MemberList *ml,
memberGroupDict
->
insert
(
groupId
,
mg
);
memberGroupDict
->
insert
(
groupId
,
mg
);
memberGroupList
->
append
(
mg
);
memberGroupList
->
append
(
mg
);
}
}
//printf("insert member %s in group %s\n",md->name().data(),pGrpHeader->data());
mg
->
insertMember
(
md
);
mg
->
insertMember
(
md
);
md
->
setMemberGroup
(
mg
);
md
->
setMemberGroup
(
mg
);
}
}
...
@@ -595,6 +616,21 @@ void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local)
...
@@ -595,6 +616,21 @@ void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local)
}
}
}
}
void
FileDef
::
addIncludedByDependency
(
FileDef
*
fd
,
const
char
*
incName
,
bool
local
)
{
//printf("FileDef::addIncludedByDependency(%p,%s,%d)\n",fd,incName,local);
QCString
iName
=
fd
?
fd
->
absFilePath
().
data
()
:
incName
;
if
(
!
iName
.
isEmpty
()
&&
includedByDict
->
find
(
iName
)
==
0
)
{
IncludeInfo
*
ii
=
new
IncludeInfo
;
ii
->
fileDef
=
fd
;
ii
->
includeName
=
incName
;
ii
->
local
=
local
;
includedByList
->
append
(
ii
);
includedByDict
->
insert
(
iName
,
ii
);
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
/*! Creates a file list. */
/*! Creates a file list. */
...
...
src/filedef.h
View file @
7d903158
...
@@ -122,9 +122,11 @@ class FileDef : public Definition
...
@@ -122,9 +122,11 @@ class FileDef : public Definition
void
setGenerateSource
(
bool
b
)
{
isSource
=
b
;
}
void
setGenerateSource
(
bool
b
)
{
isSource
=
b
;
}
bool
generateSource
()
const
{
return
isSource
;
}
bool
generateSource
()
const
{
return
isSource
;
}
void
addIncludeDependency
(
FileDef
*
fd
,
const
char
*
incName
,
bool
local
);
void
addIncludeDependency
(
FileDef
*
fd
,
const
char
*
incName
,
bool
local
);
void
addIncludedByDependency
(
FileDef
*
fd
,
const
char
*
incName
,
bool
local
);
QList
<
IncludeInfo
>
*
includeFileList
()
const
{
return
includeList
;
}
QList
<
IncludeInfo
>
*
includeFileList
()
const
{
return
includeList
;
}
Q
Dict
<
IncludeInfo
>
*
includeFileDict
()
const
{
return
includeDic
t
;
}
Q
List
<
IncludeInfo
>
*
includedByFileList
()
const
{
return
includedByLis
t
;
}
void
addMembersToMemberGroup
();
void
addMembersToMemberGroup
();
void
distributeMemberGroupDocumentation
();
void
distributeMemberGroupDocumentation
();
...
@@ -145,6 +147,8 @@ class FileDef : public Definition
...
@@ -145,6 +147,8 @@ class FileDef : public Definition
ClassList
*
classList
;
ClassList
*
classList
;
QDict
<
IncludeInfo
>
*
includeDict
;
QDict
<
IncludeInfo
>
*
includeDict
;
QList
<
IncludeInfo
>
*
includeList
;
QList
<
IncludeInfo
>
*
includeList
;
QDict
<
IncludeInfo
>
*
includedByDict
;
QList
<
IncludeInfo
>
*
includedByList
;
NamespaceDict
*
namespaceDict
;
NamespaceDict
*
namespaceDict
;
NamespaceList
*
namespaceList
;
NamespaceList
*
namespaceList
;
NamespaceList
*
usingDirList
;
NamespaceList
*
usingDirList
;
...
...
src/latexgen.cpp
View file @
7d903158
...
@@ -48,22 +48,47 @@ static QCString filterTitle(const char *s)
...
@@ -48,22 +48,47 @@ static QCString filterTitle(const char *s)
return
result
;
return
result
;
}
}
static
QCString
escapeLabelName
(
const
QCString
&
s
)
static
QCString
escapeLabelName
(
const
char
*
s
)
{
{
QCString
result
;
QCString
result
;
uint
i
;
const
char
*
p
=
s
;
for
(
i
=
0
;
i
<
s
.
length
();
i
++
)
char
c
;
while
((
c
=*
p
++
))
{
{
char
c
=
s
.
at
(
i
);
switch
(
c
)
switch
(
c
)
{
{
case
'%'
:
result
+=
"
\\
%"
;
break
;
case
'%'
:
result
+=
"
\\
%"
;
break
;
case
'|'
:
result
+=
"
\\
texttt{
\"
|}"
;
break
;
case
'!'
:
result
+=
"
\"
!"
;
break
;
default:
result
+=
c
;
default:
result
+=
c
;
}
}
}
}
return
result
;
return
result
;
}
}
static
QCString
escapeMakeIndexChars
(
LatexGenerator
*
g
,
QTextStream
&
t
,
const
char
*
s
)
{
QCString
result
;
const
char
*
p
=
s
;
char
str
[
2
];
str
[
1
]
=
0
;
char
c
;
while
((
c
=*
p
++
))
{
switch
(
c
)
{
case
'!'
:
t
<<
"
\"
!"
;
break
;
case
'"'
:
t
<<
"
\"\"
"
;
break
;
case
'@'
:
t
<<
"
\"
@"
;
break
;
case
'|'
:
t
<<
"
\\
texttt{
\"
|}"
;
break
;
case
'['
:
t
<<
"["
;
break
;
case
']'
:
t
<<
"]"
;
break
;
default:
str
[
0
]
=
c
;
g
->
docify
(
str
);
break
;
}
}
return
result
;
}
LatexGenerator
::
LatexGenerator
()
:
OutputGenerator
()
LatexGenerator
::
LatexGenerator
()
:
OutputGenerator
()
{
{
...
@@ -178,7 +203,7 @@ void LatexGenerator::startIndexSection(IndexSections is)
...
@@ -178,7 +203,7 @@ void LatexGenerator::startIndexSection(IndexSections is)
t
<<
"}
\n
"
;
t
<<
"}
\n
"
;
if
(
Config
::
paperType
==
"a4wide"
)
t
<<
"
\\
usepackage{a4wide}
\n
"
;
if
(
Config
::
paperType
==
"a4wide"
)
t
<<
"
\\
usepackage{a4wide}
\n
"
;
t
<<
"
\\
usepackage{makeidx}
\n
"
t
<<
"
\\
usepackage{makeidx}
\n
"
"
\\
usepackage{fancyh
eadings
}
\n
"
"
\\
usepackage{fancyh
dr
}
\n
"
"
\\
usepackage{epsfig}
\n
"
"
\\
usepackage{epsfig}
\n
"
"
\\
usepackage{float}
\n
"
"
\\
usepackage{float}
\n
"
"
\\
usepackage{doxygen}
\n
"
;
"
\\
usepackage{doxygen}
\n
"
;
...
@@ -865,11 +890,11 @@ void LatexGenerator::startMemberDoc(const char *clname,
...
@@ -865,11 +890,11 @@ void LatexGenerator::startMemberDoc(const char *clname,
t
<<
"}!"
;
t
<<
"}!"
;
}
}
t
<<
escapeLabelName
(
memname
)
<<
"@{"
;
t
<<
escapeLabelName
(
memname
)
<<
"@{"
;
docify
(
memname
);
escapeMakeIndexChars
(
this
,
t
,
memname
);
t
<<
"}}"
<<
endl
;
t
<<
"}}"
<<
endl
;
t
<<
"
\\
index{"
<<
escapeLabelName
(
memname
)
<<
"@{"
;
t
<<
"
\\
index{"
<<
escapeLabelName
(
memname
)
<<
"@{"
;
docify
(
memname
);
escapeMakeIndexChars
(
this
,
t
,
memname
);
t
<<
"}"
;
t
<<
"}"
;
if
(
clname
)
if
(
clname
)
{
{
...
@@ -934,7 +959,7 @@ void LatexGenerator::addToIndex(const char *s1,const char *s2)
...
@@ -934,7 +959,7 @@ void LatexGenerator::addToIndex(const char *s1,const char *s2)
if
(
s1
)
if
(
s1
)
{
{
t
<<
"
\\
index{"
<<
escapeLabelName
(
s1
)
<<
"@{"
;
t
<<
"
\\
index{"
<<
escapeLabelName
(
s1
)
<<
"@{"
;
docify
(
s1
);
escapeMakeIndexChars
(
this
,
t
,
s1
);
t
<<
"}"
;
t
<<
"}"
;
if
(
s2
)
if
(
s2
)
{
{
...
...
src/memberdef.cpp
View file @
7d903158
...
@@ -475,8 +475,8 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -475,8 +475,8 @@ void MemberDef::writeDeclaration(OutputList &ol,
if
(
Config
::
hideMemberFlag
&&
documentation
().
isEmpty
()
&&
if
(
Config
::
hideMemberFlag
&&
documentation
().
isEmpty
()
&&
!
Config
::
briefMemDescFlag
&&
!
Config
::
repeatBriefFlag
!
Config
::
briefMemDescFlag
&&
!
Config
::
repeatBriefFlag
)
return
;
)
return
;
// hide static file & namespace members unless extract
private
is on
// hide static file & namespace members unless extract
static
is on
if
(
cd
==
0
&&
isStatic
()
&&
!
Config
::
extract
Private
Flag
)
return
;
if
(
cd
==
0
&&
isStatic
()
&&
!
Config
::
extract
Static
Flag
)
return
;
// hide private member that are put into a member group. Non-grouped
// hide private member that are put into a member group. Non-grouped
// members are not rendered anyway.
// members are not rendered anyway.
...
@@ -489,7 +489,8 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -489,7 +489,8 @@ void MemberDef::writeDeclaration(OutputList &ol,
// strip `friend' keyword from type
// strip `friend' keyword from type
if
(
type
.
left
(
7
)
==
"friend "
)
type
=
type
.
right
(
type
.
length
()
-
7
);
if
(
type
.
left
(
7
)
==
"friend "
)
type
=
type
.
right
(
type
.
length
()
-
7
);
static
QRegExp
r
(
"@[0-9]+"
);
static
QRegExp
r
(
"@[0-9]+"
);
if
((
i
=
r
.
match
(
type
,
0
,
&
l
))
==-
1
||
!
enumUsed
())
i
=-
1
;
if
((
type
.
isEmpty
()
||
(
i
=
r
.
match
(
type
,
0
,
&
l
))
==-
1
)
||
!
enumUsed
())
{
{
if
(
!
Config
::
genTagFile
.
isEmpty
())
if
(
!
Config
::
genTagFile
.
isEmpty
())
...
@@ -792,7 +793,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -792,7 +793,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
void
MemberDef
::
writeDocumentation
(
MemberList
*
ml
,
OutputList
&
ol
,
void
MemberDef
::
writeDocumentation
(
MemberList
*
ml
,
OutputList
&
ol
,
const
char
*
scopeName
)
const
char
*
scopeName
)
{
{
if
(
memberClass
()
==
0
&&
isStatic
()
&&
!
Config
::
extract
Private
Flag
)
return
;
if
(
memberClass
()
==
0
&&
isStatic
()
&&
!
Config
::
extract
Static
Flag
)
return
;
bool
hasDocs
=
detailsAreVisible
();
bool
hasDocs
=
detailsAreVisible
();
//printf("MemberDef::writeDocumentation(): type=`%s' def=`%s'\n",type.data(),definition());
//printf("MemberDef::writeDocumentation(): type=`%s' def=`%s'\n",type.data(),definition());
if
(
if
(
...
@@ -834,14 +835,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
...
@@ -834,14 +835,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
int
i
=
0
,
l
;
int
i
=
0
,
l
;
static
QRegExp
r
(
"@[0-9]+"
);
static
QRegExp
r
(
"@[0-9]+"
);
//ENUM
if
(
isEnumValue
())
return
;
if
(
isEnumValue
())
return
;
//if (isEnumValue() && def[0]=='@') def = def.right(def.length()-2);
//int dummy;
//if (isEnumerate() && r.match(def,0,&l)!=-1) return;
//MemberDef *smd;
//if (isEnumValue() && (smd = getEnumScope())
// && r.match(smd->name(),0,&dummy)==-1) return;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
...
@@ -1342,7 +1336,7 @@ bool MemberDef::isLinkableInProject()
...
@@ -1342,7 +1336,7 @@ bool MemberDef::isLinkableInProject()
((
hasDocumentation
()
&&
!
isReference
())
((
hasDocumentation
()
&&
!
isReference
())
)
&&
)
&&
(
prot
!=
Private
||
Config
::
extractPrivateFlag
||
isFriend
())
&&
// not a private class member
(
prot
!=
Private
||
Config
::
extractPrivateFlag
||
isFriend
())
&&
// not a private class member
(
classDef
!=
0
||
Config
::
extract
PrivateFlag
||
!
isStatic
());
// not a private
file/namespace member
(
classDef
!=
0
||
Config
::
extract
StaticFlag
||
!
isStatic
());
// not a static
file/namespace member
}
}
bool
MemberDef
::
isLinkable
()
bool
MemberDef
::
isLinkable
()
...
...
src/membergroup.cpp
View file @
7d903158
...
@@ -111,14 +111,17 @@ int MemberGroup::countDecMembers(bool sectionPerType)
...
@@ -111,14 +111,17 @@ int MemberGroup::countDecMembers(bool sectionPerType)
void
MemberGroup
::
distributeMemberGroupDocumentation
()
void
MemberGroup
::
distributeMemberGroupDocumentation
()
{
{
//printf("MemberGroup::distributeMemberGroupDocumentation() %s\n",grpHeader.data());
MemberDef
*
md
=
memberList
->
first
();
MemberDef
*
md
=
memberList
->
first
();
if
(
md
&&
md
->
hasDocumentation
(
))
if
(
md
&&
!
(
md
->
documentation
().
isEmpty
()
&&
md
->
briefDescription
().
isEmpty
()
))
{
{
//printf("First member %s has documentation!\n",md->name().data());
MemberDef
*
omd
=
memberList
->
next
();
MemberDef
*
omd
=
memberList
->
next
();
while
(
omd
)
while
(
omd
)
{
{
if
(
!
omd
->
hasDocumentation
())
if
(
omd
->
documentation
().
isEmpty
()
&&
omd
->
briefDescription
().
isEmpty
())
{
{
//printf("Copying documentation to member %s\n",omd->name().data());
omd
->
setBriefDescription
(
md
->
briefDescription
());
omd
->
setBriefDescription
(
md
->
briefDescription
());
omd
->
setDocumentation
(
md
->
documentation
());
omd
->
setDocumentation
(
md
->
documentation
());
}
}
...
...
src/memberlist.cpp
View file @
7d903158
...
@@ -54,7 +54,7 @@ void MemberList::countDecMembers(bool inGroup,bool countSubGroups,bool sectionPe
...
@@ -54,7 +54,7 @@ void MemberList::countDecMembers(bool inGroup,bool countSubGroups,bool sectionPe
{
{
//printf("md=%p md->name()=`%s' inGroup=%d getMemberGroup()=%p\n",
//printf("md=%p md->name()=`%s' inGroup=%d getMemberGroup()=%p\n",
// md,md->name().data(),inGroup,md->getMemberGroup());
// md,md->name().data(),inGroup,md->getMemberGroup());
if
(
!
(
md
->
memberClass
()
==
0
&&
md
->
isStatic
()
&&
!
Config
::
extract
Private
Flag
)
&&
if
(
!
(
md
->
memberClass
()
==
0
&&
md
->
isStatic
()
&&
!
Config
::
extract
Static
Flag
)
&&
(
!
Config
::
hideMemberFlag
||
md
->
hasDocumentation
())
&&
(
!
Config
::
hideMemberFlag
||
md
->
hasDocumentation
())
&&
(
(
(
!
Config
::
hideMemberFlag
||
!
md
->
documentation
().
isEmpty
()
||
(
!
Config
::
hideMemberFlag
||
!
md
->
documentation
().
isEmpty
()
||
...
@@ -119,7 +119,7 @@ void MemberList::countDocMembers()
...
@@ -119,7 +119,7 @@ void MemberList::countDocMembers()
//printf("%s MemberList::countDocMembers() details=%d\n",
//printf("%s MemberList::countDocMembers() details=%d\n",
// md->name().data(),md->detailsAreVisible());
// md->name().data(),md->detailsAreVisible());
bool
visibleIfStatic
=
bool
visibleIfStatic
=
!
(
md
->
memberClass
()
==
0
&&
md
->
isStatic
()
&&
!
Config
::
extract
Private
Flag
);
!
(
md
->
memberClass
()
==
0
&&
md
->
isStatic
()
&&
!
Config
::
extract
Static
Flag
);
if
(
visibleIfStatic
&&
if
(
visibleIfStatic
&&
(
Config
::
extractAllFlag
||
md
->
detailsAreVisible
())
(
Config
::
extractAllFlag
||
md
->
detailsAreVisible
())
...
...
src/pre.l
View file @
7d903158
...
@@ -120,7 +120,8 @@ static void decrLevel()
...
@@ -120,7 +120,8 @@ static void decrLevel()
}
}
else
else
{
{
err("Error: More #endif's than #if's found.\n");
err("%s:%d: Error: More #endif's than #if's found.\n",
g_yyFileName.data(),g_yyLineNr);
}
}
}
}
...
@@ -128,7 +129,8 @@ static bool otherCaseDone()
...
@@ -128,7 +129,8 @@ static bool otherCaseDone()
{
{
if (g_level==0)
if (g_level==0)
{
{
err("Error: Found an #else without a preceding #if.\n");
err("%s:%d: Error: Found an #else without a preceding #if.\n",
g_yyFileName.data(),g_yyLineNr);
return TRUE;
return TRUE;
}
}
else
else
...
@@ -165,7 +167,7 @@ static FILE *findFile(const char *fileName)
...
@@ -165,7 +167,7 @@ static FILE *findFile(const char *fileName)
{
{
QCString absName=(QCString)s+"/"+fileName;
QCString absName=(QCString)s+"/"+fileName;
QFileInfo fi(absName);
QFileInfo fi(absName);
if (fi.exists())
if (fi.exists()
&& fi.isFile()
)
{
{
FILE *f;
FILE *f;
if (!Config::inputFilter.isEmpty())
if (!Config::inputFilter.isEmpty())
...
@@ -279,6 +281,7 @@ static void processConcatOperators(QCString &expr)
...
@@ -279,6 +281,7 @@ static void processConcatOperators(QCString &expr)
{
{
QRegExp r("[ \\t\\n]*##[ \\t\\n]*");
QRegExp r("[ \\t\\n]*##[ \\t\\n]*");
int l,n,i=0;
int l,n,i=0;
if (expr.isEmpty()) return;
while ((n=r.match(expr,i,&l))!=-1)
while ((n=r.match(expr,i,&l))!=-1)
{
{
if (n+l+1<(int)expr.length() && expr.at(n+l)=='@' && expr.at(n+l+1)=='-')
if (n+l+1<(int)expr.length() && expr.at(n+l)=='@' && expr.at(n+l+1)=='-')
...
@@ -840,6 +843,11 @@ static void readIncludeFile(const QCString &inc)
...
@@ -840,6 +843,11 @@ static void readIncludeFile(const QCString &inc)
{
{
// add include dependency to the file in which the #include was found
// add include dependency to the file in which the #include was found
oldFileDef->addIncludeDependency(g_yyFileDef,incFileName,localInclude);
oldFileDef->addIncludeDependency(g_yyFileDef,incFileName,localInclude);
// add included by dependency
if (g_yyFileDef)
{
g_yyFileDef->addIncludedByDependency(oldFileDef,oldFileDef->name(),localInclude);
}
}
}
// store the state of the old file
// store the state of the old file
FileState *fs=new FileState;
FileState *fs=new FileState;
...
@@ -861,6 +869,11 @@ static void readIncludeFile(const QCString &inc)
...
@@ -861,6 +869,11 @@ static void readIncludeFile(const QCString &inc)
FileDef *fd = findFileDef(inputNameDict,incFileName,ambig);
FileDef *fd = findFileDef(inputNameDict,incFileName,ambig);
// add include dependency to the file in which the #include was found
// add include dependency to the file in which the #include was found
oldFileDef->addIncludeDependency(fd,incFileName,localInclude);
oldFileDef->addIncludeDependency(fd,incFileName,localInclude);
// add included by dependency
if (fd)
{
fd->addIncludedByDependency(oldFileDef,oldFileDef->name(),localInclude);
}
}
}
#if SHOW_INCLUDES
#if SHOW_INCLUDES
msg("#include %s: not found! skipping...\n",incFileName.data());
msg("#include %s: not found! skipping...\n",incFileName.data());
...
...
src/scanner.l
View file @
7d903158
This diff is collapsed.
Click to expand it.
src/translator.h
View file @
7d903158
...
@@ -519,9 +519,11 @@ class Translator
...
@@ -519,9 +519,11 @@ class Translator
/*! used as the title of the HTML page of a class/struct/union */
/*! used as the title of the HTML page of a class/struct/union */
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
,
bool
isTemplate
)
{
{
QCString
result
=
(
QCString
)
clName
+
" "
;
QCString
result
=
(
QCString
)
clName
+
" "
;
if
(
isTemplate
)
result
+=
" Template"
;
switch
(
compType
)
switch
(
compType
)
{
{
case
ClassDef
:
:
Class
:
result
+=
" Class"
;
break
;
case
ClassDef
:
:
Class
:
result
+=
" Class"
;
break
;
...
@@ -893,6 +895,15 @@ class Translator
...
@@ -893,6 +895,15 @@ class Translator
{
{
return
"Attention"
;
return
"Attention"
;
}
}
virtual
QCString
trInclByDepGraph
()
{
return
"This graph shows which files directly or "
"indirectly include this file:"
;
}
virtual
QCString
trSince
()
{
return
"Since"
;
}
};
};
#endif
#endif
src/translator_cz.h
View file @
7d903158
...
@@ -287,7 +287,8 @@ class TranslatorCzech : public Translator
...
@@ -287,7 +287,8 @@ class TranslatorCzech : public Translator
/*! used as the title of the HTML page of a class/struct/union */
/*! used as the title of the HTML page of a class/struct/union */
QCString
trCompoundReference
(
const
char
*
clName
,
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
,
bool
/*isTemplate*/
)
{
{
QCString
result
=
(
QCString
)
clName
+
" "
;
QCString
result
=
(
QCString
)
clName
+
" "
;
result
+=
" Reference"
;
result
+=
" Reference"
;
...
...
src/translator_de.h
View file @
7d903158
...
@@ -429,7 +429,8 @@ class TranslatorGerman : public Translator
...
@@ -429,7 +429,8 @@ class TranslatorGerman : public Translator
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
QCString
trCompoundReference
(
const
char
*
clName
,
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
,
bool
/*isTemplate*/
)
// used as the title of the HTML page of a class/struct/union
// used as the title of the HTML page of a class/struct/union
{
{
QCString
result
=
(
QCString
)
clName
+
" "
;
QCString
result
=
(
QCString
)
clName
+
" "
;
...
...
src/translator_es.h
View file @
7d903158
...
@@ -524,7 +524,8 @@ class TranslatorSpanish : public Translator
...
@@ -524,7 +524,8 @@ class TranslatorSpanish : public Translator
/*! used as the title of the HTML page of a class/struct/union */
/*! used as the title of the HTML page of a class/struct/union */
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
,
bool
/*isTemplate*/
)
{
{
QCString
result
=
(
QCString
)
clName
+
" "
;
QCString
result
=
(
QCString
)
clName
+
" "
;
switch
(
compType
)
switch
(
compType
)
...
...
src/translator_fi.h
View file @
7d903158
...
@@ -464,7 +464,8 @@ class TranslatorFinnish : public Translator
...
@@ -464,7 +464,8 @@ class TranslatorFinnish : public Translator
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
,
bool
/*isTemplate*/
)
// used as the title of the HTML page of a class/struct/union
// used as the title of the HTML page of a class/struct/union
{
{
QCString
result
=
(
QCString
)
clName
+
" "
;
QCString
result
=
(
QCString
)
clName
+
" "
;
...
...
src/translator_fr.h
View file @
7d903158
...
@@ -491,7 +491,8 @@ class TranslatorFrench : public Translator
...
@@ -491,7 +491,8 @@ class TranslatorFrench : public Translator
/*! used as the title of the HTML page of a class/struct/union */
/*! used as the title of the HTML page of a class/struct/union */
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
,
bool
/*isTemplate*/
)
{
{
QCString
result
=
"Référence de "
;
QCString
result
=
"Référence de "
;
switch
(
compType
)
switch
(
compType
)
...
...
src/translator_hr.h
View file @
7d903158
...
@@ -261,7 +261,8 @@ class TranslatorCroatian : public Translator
...
@@ -261,7 +261,8 @@ class TranslatorCroatian : public Translator
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
QCString
trCompoundReference
(
const
char
*
clName
,
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
,
bool
/*isTemplate*/
)
// used as the title of the HTML page of a class/struct/union
// used as the title of the HTML page of a class/struct/union
{
{
QCString
result
=
"Opis "
;
QCString
result
=
"Opis "
;
...
...
src/translator_it.h
View file @
7d903158
...
@@ -531,7 +531,8 @@ class TranslatorItalian : public Translator
...
@@ -531,7 +531,8 @@ class TranslatorItalian : public Translator
/*! used as the title of the HTML page of a class/struct/union */
/*! used as the title of the HTML page of a class/struct/union */
QCString
trCompoundReference
(
const
char
*
clName
,
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
,
bool
/* isTemplate */
)
{
{
QCString
result
=
"Riferimenti per "
;
QCString
result
=
"Riferimenti per "
;
switch
(
compType
)
switch
(
compType
)
...
...
src/translator_jp.h
View file @
7d903158
...
@@ -511,7 +511,8 @@ class TranslatorJapanese : public Translator
...
@@ -511,7 +511,8 @@ class TranslatorJapanese : public Translator
/*! used as the title of the HTML page of a class/struct/union */
/*! used as the title of the HTML page of a class/struct/union */
QCString
trCompoundReference
(
const
char
*
clName
,
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
,
bool
/*isTemplate*/
)
{
{
QCString
result
=
""
;
QCString
result
=
""
;
switch
(
compType
)
switch
(
compType
)
...
...
src/translator_nl.h
View file @
7d903158
...
@@ -261,10 +261,12 @@ class TranslatorDutch : public Translator
...
@@ -261,10 +261,12 @@ class TranslatorDutch : public Translator
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
QCString
trCompoundReference
(
const
char
*
clName
,
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
,
bool
isTemplate
)
// used as the title of the HTML page of a class/struct/union
// used as the title of the HTML page of a class/struct/union
{
{
QCString
result
=
(
QCString
)
clName
+
" "
;
QCString
result
=
(
QCString
)
clName
+
" "
;
if
(
isTemplate
)
result
+=
" Template"
;
switch
(
compType
)
switch
(
compType
)
{
{
case
ClassDef
:
:
Class
:
result
+=
" Class"
;
break
;
case
ClassDef
:
:
Class
:
result
+=
" Class"
;
break
;
...
...
src/translator_ru.h
View file @
7d903158
...
@@ -402,7 +402,9 @@ class TranslatorRussian : public Translator
...
@@ -402,7 +402,9 @@ class TranslatorRussian : public Translator
// need translation
// need translation
return
" "
;
return
" "
;
}
}
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
,
bool
/*isTemplate*/
)
{
{
QCString
result
=
(
QCString
)
clName
+
" "
;
QCString
result
=
(
QCString
)
clName
+
" "
;
switch
(
compType
)
switch
(
compType
)
...
...
src/translator_se.h
View file @
7d903158
...
@@ -380,7 +380,8 @@ class TranslatorSwedish : public Translator
...
@@ -380,7 +380,8 @@ class TranslatorSwedish : public Translator
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
ClassDef
::
CompoundType
compType
,
bool
/*isTemplate*/
)
{
{
QCString
result
=
(
QCString
)
clName
+
" "
;
QCString
result
=
(
QCString
)
clName
+
" "
;
switch
(
compType
)
switch
(
compType
)
...
...
src/util.cpp
View file @
7d903158
...
@@ -287,6 +287,7 @@ void linkifyText(OutputList &ol,const char *scName,const char *name,const char *
...
@@ -287,6 +287,7 @@ void linkifyText(OutputList &ol,const char *scName,const char *name,const char *
int
newIndex
;
int
newIndex
;
int
skipIndex
=
0
;
int
skipIndex
=
0
;
int
floatingIndex
=
0
;
int
floatingIndex
=
0
;
if
(
strLen
==
0
)
return
;
// read a word from the text string
// read a word from the text string
while
((
newIndex
=
regExp
.
match
(
txtStr
,
index
,
&
matchLen
))
!=-
1
)
while
((
newIndex
=
regExp
.
match
(
txtStr
,
index
,
&
matchLen
))
!=-
1
)
{
{
...
@@ -1987,6 +1988,7 @@ QCString substituteClassNames(const QCString &s)
...
@@ -1987,6 +1988,7 @@ QCString substituteClassNames(const QCString &s)
{
{
int
i
=
0
,
l
,
p
;
int
i
=
0
,
l
,
p
;
QCString
result
;
QCString
result
;
if
(
s
.
isEmpty
())
return
result
;
QRegExp
r
(
"[a-z_A-Z][a-z_A-Z0-9]*"
);
QRegExp
r
(
"[a-z_A-Z][a-z_A-Z0-9]*"
);
while
((
p
=
r
.
match
(
s
,
i
,
&
l
))
!=-
1
)
while
((
p
=
r
.
match
(
s
,
i
,
&
l
))
!=-
1
)
{
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment