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
77a2ce8e
Commit
77a2ce8e
authored
Aug 24, 2003
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.3-20030824
parent
d09056a7
Changes
47
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
47 changed files
with
2027 additions
and
1000 deletions
+2027
-1000
Doxyfile
Doxyfile
+1
-7
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
doxywizard.cpp
addon/doxywizard/doxywizard.cpp
+2
-0
Doxyfile
doc/Doxyfile
+1
-7
commands.doc
doc/commands.doc
+19
-0
config.doc
doc/config.doc
+162
-207
doxygen_usage.doc
doc/doxygen_usage.doc
+0
-3
doxytag_usage.doc
doc/doxytag_usage.doc
+22
-43
index.doc
doc/index.doc
+0
-1
infoflow.eps
doc/infoflow.eps
+14
-72
infoflow.fig
doc/infoflow.fig
+4
-28
infoflow.gif
doc/infoflow.gif
+0
-0
install.doc
doc/install.doc
+12
-0
language.doc
doc/language.doc
+263
-6
starting.doc
doc/starting.doc
+8
-11
trouble.doc
doc/trouble.doc
+23
-12
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
classdef.cpp
src/classdef.cpp
+1
-0
classlist.cpp
src/classlist.cpp
+9
-1
classlist.h
src/classlist.h
+1
-1
code.l
src/code.l
+19
-13
config.h
src/config.h
+9
-2
config.l
src/config.l
+139
-135
definition.cpp
src/definition.cpp
+57
-10
docparser.cpp
src/docparser.cpp
+10
-7
doxygen.cpp
src/doxygen.cpp
+164
-79
doxygen.h
src/doxygen.h
+1
-0
entry.cpp
src/entry.cpp
+3
-0
entry.h
src/entry.h
+1
-0
filedef.cpp
src/filedef.cpp
+56
-8
filedef.h
src/filedef.h
+5
-4
latexgen.cpp
src/latexgen.cpp
+1
-0
memberdef.cpp
src/memberdef.cpp
+6
-3
memberdef.h
src/memberdef.h
+14
-0
namespacedef.cpp
src/namespacedef.cpp
+50
-4
namespacedef.h
src/namespacedef.h
+7
-4
pre.l
src/pre.l
+0
-1
scanner.l
src/scanner.l
+46
-1
searchindex.cpp
src/searchindex.cpp
+0
-110
sortdict.h
src/sortdict.h
+68
-1
translator_cz.h
src/translator_cz.h
+59
-21
translator_en.h
src/translator_en.h
+3
-2
translator_es.h
src/translator_es.h
+125
-5
util.cpp
src/util.cpp
+626
-179
util.h
src/util.h
+10
-6
No files found.
Doxyfile
View file @
77a2ce8e
...
@@ -141,7 +141,7 @@ MAN_LINKS = NO
...
@@ -141,7 +141,7 @@ MAN_LINKS = NO
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# configuration options related to the XML output
# configuration options related to the XML output
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
GENERATE_XML =
NO
GENERATE_XML =
YES
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
...
@@ -188,9 +188,3 @@ DOT_CLEANUP = YES
...
@@ -188,9 +188,3 @@ DOT_CLEANUP = YES
# Configuration::addtions related to the search engine
# Configuration::addtions related to the search engine
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
SEARCHENGINE = NO
SEARCHENGINE = NO
CGI_NAME = search.cgi
CGI_URL =
DOC_URL =
DOC_ABSPATH =
BIN_ABSPATH = /usr/local/bin/
EXT_DOC_PATHS =
INSTALL
View file @
77a2ce8e
DOXYGEN Version 1.3.3-200308
08
DOXYGEN Version 1.3.3-200308
24
Please read the installation section of the manual
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
(http://www.doxygen.org/install.html) for instructions.
--------
--------
Dimitri van Heesch (
08
August 2003)
Dimitri van Heesch (
24
August 2003)
README
View file @
77a2ce8e
DOXYGEN Version 1.3.3_200308
08
DOXYGEN Version 1.3.3_200308
24
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (
08
August 2003)
Dimitri van Heesch (dimitri@stack.nl) (
24
August 2003)
VERSION
View file @
77a2ce8e
1.3.3-200308
08
1.3.3-200308
24
addon/doxywizard/doxywizard.cpp
View file @
77a2ce8e
...
@@ -450,6 +450,8 @@ ConfigFile::ConfigFile( QWidget *parent ) : QWidget( parent )
...
@@ -450,6 +450,8 @@ ConfigFile::ConfigFile( QWidget *parent ) : QWidget( parent )
addDependency
(
m_switches
,
option
->
dependsOn
(),
option
->
name
());
addDependency
(
m_switches
,
option
->
dependsOn
(),
option
->
name
());
}
}
break
;
break
;
case
ConfigOption
:
:
O_Obsolete
:
break
;
}
}
}
}
if
(
page
)
page
->
addStretch
(
1
);
if
(
page
)
page
->
addStretch
(
1
);
...
...
doc/Doxyfile
View file @
77a2ce8e
...
@@ -34,7 +34,7 @@ IMAGE_PATH = .
...
@@ -34,7 +34,7 @@ IMAGE_PATH = .
INPUT = index.doc install.doc starting.doc docblocks.doc lists.doc \
INPUT = index.doc install.doc starting.doc docblocks.doc lists.doc \
grouping.doc formulas.doc diagrams.doc preprocessing.doc \
grouping.doc formulas.doc diagrams.doc preprocessing.doc \
external.doc faq.doc trouble.doc history.doc features.doc \
external.doc faq.doc trouble.doc history.doc features.doc \
doxygen_usage.doc doxytag_usage.doc
doxysearch_usage.doc
\
doxygen_usage.doc doxytag_usage.doc \
doxywizard_usage.doc \
doxywizard_usage.doc \
installdox_usage.doc output.doc autolink.doc \
installdox_usage.doc output.doc autolink.doc \
config.doc commands.doc htmlcmds.doc language.doc \
config.doc commands.doc htmlcmds.doc language.doc \
...
@@ -46,11 +46,5 @@ TAGFILES =
...
@@ -46,11 +46,5 @@ TAGFILES =
ALLEXTERNALS = NO
ALLEXTERNALS = NO
PERL_PATH = /usr/local/bin/perl
PERL_PATH = /usr/local/bin/perl
SEARCHENGINE = NO
SEARCHENGINE = NO
CGI_NAME = search.cgi
CGI_URL =
DOC_URL =
DOC_ABSPATH =
BIN_ABSPATH = /usr/local/bin/
EXT_DOC_PATHS =
PDF_HYPERLINKS = YES
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
USE_PDFLATEX = YES
doc/commands.doc
View file @
77a2ce8e
...
@@ -107,6 +107,7 @@ documentation:
...
@@ -107,6 +107,7 @@ documentation:
\refitem cmdpre \\pre
\refitem cmdpre \\pre
\refitem cmdref \\ref
\refitem cmdref \\ref
\refitem cmdrelates \\relates
\refitem cmdrelates \\relates
\refitem cmdrelatesalso \\relatesalso
\refitem cmdremarks \\remarks
\refitem cmdremarks \\remarks
\refitem cmdreturn \\return
\refitem cmdreturn \\return
\refitem cmdretval \\retval
\refitem cmdretval \\retval
...
@@ -552,6 +553,24 @@ See section \ref memgroup for an example.
...
@@ -552,6 +553,24 @@ See section \ref memgroup for an example.
for the corresponding HTML documentation that is generated by doxygen.
for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly
\endhtmlonly
<hr>
\section cmdrelatesalso \relatesalso <name>
\addindex \\relatesalso
This command can be used in the documentation of a non-member function
\<name\>. It puts the function both inside the `related function' section
of the class documentation as well as leaving its normal file documentation
location. This command is useful for documenting
non-friend functions that are nevertheless strongly coupled to a certain
class. It only works for functions.
\par Example:
\verbinclude relates.cpp
\htmlonly
Click <a href="$(DOXYGEN_DOCDIR)/examples/relates/html/globals.html">here</a>
for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly
<hr>
<hr>
\section cmdshowinitializer \showinitializer
\section cmdshowinitializer \showinitializer
...
...
doc/config.doc
View file @
77a2ce8e
This diff is collapsed.
Click to expand it.
doc/doxygen_usage.doc
View file @
77a2ce8e
...
@@ -91,7 +91,4 @@ doxygen -w rtf rtfstyle.cfg
...
@@ -91,7 +91,4 @@ doxygen -w rtf rtfstyle.cfg
a file, use \c - for the file name.
a file, use \c - for the file name.
</ul>
</ul>
If you also want to use the search engine, you should look
at section \ref doxysearch_usage.
*/
*/
doc/doxytag_usage.doc
View file @
77a2ce8e
...
@@ -17,38 +17,26 @@
...
@@ -17,38 +17,26 @@
/*! \page doxytag_usage Doxytag usage
/*! \page doxytag_usage Doxytag usage
Doxytag is a small command line based utility.
Doxytag is a small command line based utility.
It has two functions:
It can generate <em>tag files</em>.
<ul>
These tag files can be used with <a href="doxygen_usage.html">doxygen</a>
<li>
to generate references to external documentation
Doxytag can generate <em>tag files</em>.
(i.e. documentation not contained in the input files that are used by
These tag files can be used with <a href="doxygen_usage.html">doxygen</a>
doxygen).
to generate references to external documentation
(i.e. documentation not contained in the input files that are used by
A tag file contains information about files, classes and members
doxygen).
documented in external documentation. Doxytag extracts this information
A tag file contains information about files, classes and members
directly from the HTML files. This has the advantage that you do not need
documented in external documentation. Doxytag extracts this information
to have the sources from which the documentation was extracted.
directly from the HTML files. This has the advantage that you do not need
to have the sources from which the documentation was extracted.
If you \e do have the sources it is better to let \c doxygen generate the
If you \e do have the sources it is better to let \c doxygen generate the
tag file by putting the name of the tag file after
tag file by putting the name of the tag file after
\ref cfg_generate_tagfile "GENERATE_TAGFILE" in
\ref cfg_generate_tagfile "GENERATE_TAGFILE" in
the configuration file.
the configuration file.
<li>
The input of doxytag consists of a set of HTML files.
Doxytag can generate a <em>search index</em> for the documentation
generated with doxygen or for the Qt documentation. See the documentation of
<a href="doxysearch_usage.html">doxysearch</a> for more information on how
to do this.
A search index contains information about all the words (and all substrings
thereof) that are contained in the documentation.
For each string the index contains the set of documentation blocks that
contain the string and the frequency of occurrence. This way
<code>doxysearch</code> can search for words very quickly
(most queries are processed within a few milliseconds on my system.)
</ul>
In both cases the input of doxytag consists of a set of HTML files.
\par Important:
\par Important:
If you use tag files
or use a search engine
, the links that
If you use tag files, the links that
are generated by doxygen will contain \e dummy links. You have to run
are generated by doxygen will contain \e dummy links. You have to run
the \c installdox script to change these dummy links into real links.
the \c installdox script to change these dummy links into real links.
See \ref installdox_usage for more information.
See \ref installdox_usage for more information.
...
@@ -58,10 +46,10 @@ In both cases the input of doxytag consists of a set of HTML files.
...
@@ -58,10 +46,10 @@ In both cases the input of doxytag consists of a set of HTML files.
only \c installdox has to be run.
only \c installdox has to be run.
\par Note:
\par Note:
Because the HTML files are expected to have a certain
Because the HTML files are expected to have a certain
structure, only HTML files generated with doxygen or with Qt's class
structure, only HTML files generated with doxygen or with Qt's class
browser generator can be used. Doxytag only <em>reads</em> the HTML files,
browser generator can be used. Doxytag only <em>reads</em> the HTML files,
they are not altered in any way.
they are not altered in any way.
Doxytag expects a list of all HTML files that form the documentation
Doxytag expects a list of all HTML files that form the documentation
or a directory that contains all HTML files. If neither is present doxytag
or a directory that contains all HTML files. If neither is present doxytag
...
@@ -106,13 +94,4 @@ doxytag -t example.tag example/html
...
@@ -106,13 +94,4 @@ doxytag -t example.tag example/html
doxytag -t qt.tag $QTDIR/doc/html
doxytag -t qt.tag $QTDIR/doc/html
\endverbatim
\endverbatim
A typical example to use doxytag to generate a search index is:
\verbatim
doxytag -s search.idx
\endverbatim
\par Note:
In the current version of doxygen, the search index must be
called \c search.idx.
*/
*/
doc/index.doc
View file @
77a2ce8e
...
@@ -84,7 +84,6 @@ The second part forms a reference manual:
...
@@ -84,7 +84,6 @@ The second part forms a reference manual:
of doxygen and what still has to be done.
of doxygen and what still has to be done.
<li>Section \ref doxygen_usage shows how to use the \c doxygen program.
<li>Section \ref doxygen_usage shows how to use the \c doxygen program.
<li>Section \ref doxytag_usage shows how to use the \c doxytag program.
<li>Section \ref doxytag_usage shows how to use the \c doxytag program.
<li>Section \ref doxysearch_usage shows how to use the \c doxysearch program.
<li>Section \ref doxywizard_usage shows how to use the \c doxywizard program.
<li>Section \ref doxywizard_usage shows how to use the \c doxywizard program.
<li>Section \ref installdox_usage shows how to use the \c installdox
<li>Section \ref installdox_usage shows how to use the \c installdox
script that is generated by doxygen if you use tag files.
script that is generated by doxygen if you use tag files.
...
...
doc/infoflow.eps
View file @
77a2ce8e
%!PS-Adobe-2.0 EPSF-2.0
%!PS-Adobe-2.0 EPSF-2.0
%%Title: infoflow.eps
%%Title: infoflow.eps
%%Creator: fig2dev Version 3.2 Patchlevel 3c
%%Creator: fig2dev Version 3.2 Patchlevel 3c
%%CreationDate:
Tue Dec 31 19:32:56 2002
%%CreationDate:
Fri Aug 8 17:06:41 2003
%%For: dimitri@pandora.home.nl (Dimitri van Heesch)
%%For: dimitri@pandora.home.nl (Dimitri van Heesch)
%%BoundingBox: 0 0 6
73 585
%%BoundingBox: 0 0 6
59 583
%%Magnification: 1.0000
%%Magnification: 1.0000
%%EndComments
%%EndComments
/$F2psDict 200 dict def
/$F2psDict 200 dict def
...
@@ -47,8 +47,8 @@ $F2psDict /mtrx matrix put
...
@@ -47,8 +47,8 @@ $F2psDict /mtrx matrix put
end
end
save
save
newpath 0 58
5 moveto 0 0 lineto 673 0 lineto 673 585
lineto closepath clip newpath
newpath 0 58
3 moveto 0 0 lineto 659 0 lineto 659 583
lineto closepath clip newpath
-
39.0 602
.0 translate
-
53.0 600
.0 translate
1 -1 scale
1 -1 scale
/cp {closepath} bind def
/cp {closepath} bind def
...
@@ -142,16 +142,6 @@ gs 1 -1 sc (Config file) col0 sh gr
...
@@ -142,16 +142,6 @@ gs 1 -1 sc (Config file) col0 sh gr
3900 2550 m
3900 2550 m
gs 1 -1 sc (Doxyfile) col0 sh gr
gs 1 -1 sc (Doxyfile) col0 sh gr
% Polyline
% Polyline
n 900 7500 m 1200 7200 l 2100 7200 l 2100 8700 l 900 8700 l 900 7500 l
1200 7500 l
1200 7200 l gs col0 s gr
/Times-Roman-iso ff 180.00 scf sf
1200 7950 m
gs 1 -1 sc (search) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
1200 8175 m
gs 1 -1 sc (index) col0 sh gr
% Polyline
n 900 3675 m 1200 3375 l 2100 3375 l 2100 4875 l 900 4875 l 900 3675 l
n 900 3675 m 1200 3375 l 2100 3375 l 2100 4875 l 900 4875 l 900 3675 l
1200 3675 l
1200 3675 l
1200 3375 l gs col0 s gr
1200 3375 l gs col0 s gr
...
@@ -469,15 +459,6 @@ n 10875 9150 m
...
@@ -469,15 +459,6 @@ n 10875 9150 m
% arrowhead
% arrowhead
n 11264 9180 m 11384 9150 l 11264 9120 l 11264 9180 l cp gs 0.00 setgray ef gr col0 s
n 11264 9180 m 11384 9150 l 11264 9120 l 11264 9180 l cp gs 0.00 setgray ef gr col0 s
% Polyline
% Polyline
gs clippath
4455 7110 m 4395 7110 l 4395 7261 l 4425 7141 l 4455 7261 l cp
eoclip
n 4425 8850 m
4425 7125 l gs col0 s gr gr
% arrowhead
n 4455 7261 m 4425 7141 l 4395 7261 l 4455 7261 l cp gs 0.00 setgray ef gr col0 s
% Polyline
n 3300 8850 m 5100 8850 l 5100 9525 l 3300 9525 l
n 3300 8850 m 5100 8850 l 5100 9525 l 3300 9525 l
cp gs col32 1.00 shd ef gr gs col0 s gr
cp gs col32 1.00 shd ef gr gs col0 s gr
% Polyline
% Polyline
...
@@ -490,42 +471,18 @@ n 6675 9300 m
...
@@ -490,42 +471,18 @@ n 6675 9300 m
% arrowhead
% arrowhead
n 5236 9270 m 5116 9300 l 5236 9330 l 5236 9270 l cp gs 0.00 setgray ef gr col0 s
n 5236 9270 m 5116 9300 l 5236 9330 l 5236 9270 l cp gs 0.00 setgray ef gr col0 s
% Polyline
% Polyline
n 675 9300 m 2475 9300 l 2475 9975 l 675 9975 l
[60] 0 sd
cp gs col32 1.00 shd ef gr gs col0 s gr
n 8700 6450 m 11850 6450 l 11850 9975 l 8700 9975 l
% Polyline
cp gs col0 s gr [] 0 sd
gs clippath
2085 7995 m 2085 8055 l 2236 8055 l 2116 8025 l 2236 7995 l cp
eoclip
n 3900 8850 m 3900 8025 l
2100 8025 l gs col0 s gr gr
% arrowhead
n 2236 7995 m 2116 8025 l 2236 8055 l 2236 7995 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
1470 9315 m 1530 9315 l 1530 9164 l 1500 9284 l 1470 9164 l cp
eoclip
n 1500 8700 m
1500 9300 l gs col0 s gr gr
% arrowhead
n 1470 9164 m 1500 9284 l 1530 9164 l 1470 9164 l cp gs 0.00 setgray ef gr col0 s
% Polyline
% Polyline
gs clippath
gs clippath
6690 9780 m 6690 9720 l 6539 9720 l 6659 9750 l 6539 9780 l cp
4305 7110 m 4245 7110 l 4245 7261 l 4275 7141 l 4305 7261 l cp
2460 9720 m 2460 9780 l 2611 9780 l 2491 9750 l 2611 9720 l cp
eoclip
eoclip
n
2475 97
50 m
n
4275 88
50 m
6675 9750
l gs col0 s gr gr
4275 7125
l gs col0 s gr gr
% arrowhead
% arrowhead
n 2611 9720 m 2491 9750 l 2611 9780 l 2611 9720 l cp gs 0.00 setgray ef gr col0 s
n 4305 7261 m 4275 7141 l 4245 7261 l 4305 7261 l cp gs 0.00 setgray ef gr col0 s
% arrowhead
n 6539 9780 m 6659 9750 l 6539 9720 l 6539 9780 l cp gs 0.00 setgray ef gr col0 s
% Polyline
[60] 0 sd
n 8700 6450 m 11850 6450 l 11850 9975 l 8700 9975 l
cp gs col0 s gr [] 0 sd
/Times-Roman-iso ff 180.00 scf sf
/Times-Roman-iso ff 180.00 scf sf
4500 3525 m
4500 3525 m
gs 1 -1 sc (generate/update) col0 sh gr
gs 1 -1 sc (generate/update) col0 sh gr
...
@@ -626,33 +583,15 @@ gs 1 -1 sc (Man pages) col0 sh gr
...
@@ -626,33 +583,15 @@ gs 1 -1 sc (Man pages) col0 sh gr
5475 9525 m
5475 9525 m
gs 1 -1 sc (parse) col0 sh gr
gs 1 -1 sc (parse) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
/Times-Roman-iso ff 180.00 scf sf
4575 8100 m
gs 1 -1 sc (generate) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
3825 9300 m
3825 9300 m
gs 1 -1 sc (Doxytag) col0 sh gr
gs 1 -1 sc (Doxytag) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
/Times-Roman-iso ff 180.00 scf sf
1050 9750 m
gs 1 -1 sc (Doxysearch) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
1575 9075 m
gs 1 -1 sc (uses) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
2700 9975 m
gs 1 -1 sc (used from) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
5700 9975 m
gs 1 -1 sc (generates) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
8325 9075 m
8325 9075 m
gs 1 -1 sc (read) col0 sh gr
gs 1 -1 sc (read) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
/Times-Roman-iso ff 180.00 scf sf
8775 6675 m
8775 6675 m
gs 1 -1 sc (Windows only) col0 sh gr
gs 1 -1 sc (Windows only) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
/Times-Roman-iso ff 180.00 scf sf
2700 8250 m
gs 1 -1 sc (generate) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
8250 1200 m
8250 1200 m
gs 1 -1 sc (read) col0 sh gr
gs 1 -1 sc (read) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
/Times-Roman-iso ff 180.00 scf sf
...
@@ -661,5 +600,8 @@ gs 1 -1 sc (Sources) col0 sh gr
...
@@ -661,5 +600,8 @@ gs 1 -1 sc (Sources) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
/Times-Roman-iso ff 180.00 scf sf
1275 5775 m
1275 5775 m
gs 1 -1 sc (Custom) col0 sh gr
gs 1 -1 sc (Custom) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
4350 8175 m
gs 1 -1 sc (generate) col0 sh gr
$F2psEnd
$F2psEnd
rs
rs
doc/infoflow.fig
View file @
77a2ce8e
...
@@ -16,13 +16,6 @@ Single
...
@@ -16,13 +16,6 @@ Single
4 0 0 50 0 0 12 0.0000 4 180 780 3900 2250 Config file\001
4 0 0 50 0 0 12 0.0000 4 180 780 3900 2250 Config file\001
4 0 0 50 0 0 12 0.0000 4 180 645 3900 2550 Doxyfile\001
4 0 0 50 0 0 12 0.0000 4 180 645 3900 2550 Doxyfile\001
-6
-6
6 900 7200 2100 8700
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8
900 7500 1200 7200 2100 7200 2100 8700 900 8700 900 7500
1200 7500 1200 7200
4 0 0 50 0 0 12 0.0000 4 135 510 1200 7950 search\001
4 0 0 50 0 0 12 0.0000 4 135 405 1200 8175 index\001
-6
6 900 3150 2325 4875
6 900 3150 2325 4875
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8
900 3675 1200 3375 2100 3375 2100 4875 900 4875 900 3675
900 3675 1200 3375 2100 3375 2100 4875 900 4875 900 3675
...
@@ -181,28 +174,16 @@ Single
...
@@ -181,28 +174,16 @@ Single
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
10875 9150 11400 9150
10875 9150 11400 9150
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 1.00 60.00 120.00
4425 8850 4425 7125
2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5
2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5
3300 8850 5100 8850 5100 9525 3300 9525 3300 8850
3300 8850 5100 8850 5100 9525 3300 9525 3300 8850
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
6675 9300 5100 9300
6675 9300 5100 9300
2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5
675 9300 2475 9300 2475 9975 675 9975 675 9300
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
1 1 1.00 60.00 120.00
3900 8850 3900 8025 2100 8025
2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
1 1 1.00 60.00 120.00
1500 8700 1500 9300
2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
2475 9750 6675 9750
2 2 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
2 2 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
8700 6450 11850 6450 11850 9975 8700 9975 8700 6450
8700 6450 11850 6450 11850 9975 8700 9975 8700 6450
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 1.00 60.00 120.00
4275 8850 4275 7125
4 0 0 50 0 0 12 0.0000 4 180 1215 4500 3525 generate/update\001
4 0 0 50 0 0 12 0.0000 4 180 1215 4500 3525 generate/update\001
4 0 0 50 0 0 12 0.0000 4 135 330 3600 3525 read\001
4 0 0 50 0 0 12 0.0000 4 135 330 3600 3525 read\001
4 0 0 50 0 0 12 0.0000 4 135 330 2850 3975 read\001
4 0 0 50 0 0 12 0.0000 4 135 330 2850 3975 read\001
...
@@ -236,15 +217,10 @@ Single
...
@@ -236,15 +217,10 @@ Single
4 0 0 50 0 0 12 0.0000 4 135 315 11100 9000 chm\001
4 0 0 50 0 0 12 0.0000 4 135 315 11100 9000 chm\001
4 0 0 50 0 0 12 0.0000 4 180 840 6825 5625 Man pages\001
4 0 0 50 0 0 12 0.0000 4 180 840 6825 5625 Man pages\001
4 0 0 50 0 0 12 0.0000 4 135 420 5475 9525 parse\001
4 0 0 50 0 0 12 0.0000 4 135 420 5475 9525 parse\001
4 0 0 50 0 0 12 0.0000 4 150 660 4575 8100 generate\001
4 0 0 50 0 0 12 0.0000 4 180 645 3825 9300 Doxytag\001
4 0 0 50 0 0 12 0.0000 4 180 645 3825 9300 Doxytag\001
4 0 0 50 0 0 12 0.0000 4 180 915 1050 9750 Doxysearch\001
4 0 0 50 0 0 12 0.0000 4 90 360 1575 9075 uses\001
4 0 0 50 0 0 12 0.0000 4 135 750 2700 9975 used from\001
4 0 0 50 0 0 12 0.0000 4 150 750 5700 9975 generates\001
4 0 0 50 0 0 12 0.0000 4 135 330 8325 9075 read\001
4 0 0 50 0 0 12 0.0000 4 135 330 8325 9075 read\001
4 0 0 50 0 0 12 0.0000 4 180 1080 8775 6675 Windows only\001
4 0 0 50 0 0 12 0.0000 4 180 1080 8775 6675 Windows only\001
4 0 0 50 0 0 12 0.0000 4 150 660 2700 8250 generate\001
4 0 0 50 0 0 12 0.0000 4 135 330 8250 1200 read\001
4 0 0 50 0 0 12 0.0000 4 135 330 8250 1200 read\001
4 0 0 50 0 0 12 0.0000 4 135 615 1200 4200 Sources\001
4 0 0 50 0 0 12 0.0000 4 135 615 1200 4200 Sources\001
4 0 0 50 0 0 12 0.0000 4 135 585 1275 5775 Custom\001
4 0 0 50 0 0 12 0.0000 4 135 585 1275 5775 Custom\001
4 0 0 50 0 0 12 0.0000 4 150 660 4350 8175 generate\001
doc/infoflow.gif
View replaced file @
d09056a7
View file @
77a2ce8e
12.9 KB
|
W:
|
H:
12.2 KB
|
W:
|
H:
2-up
Swipe
Onion skin
doc/install.doc
View file @
77a2ce8e
...
@@ -368,6 +368,18 @@ graphviz (\>=1.8.8). The effect of this incompatibility is that
...
@@ -368,6 +368,18 @@ graphviz (\>=1.8.8). The effect of this incompatibility is that
generated graphs in HTML are not properly clickable. For doxygen 1.3
generated graphs in HTML are not properly clickable. For doxygen 1.3
it is recommended to use at least graphviz 1.8.10 or higher.
it is recommended to use at least graphviz 1.8.10 or higher.
<b>Red Hat 9.0 problems</b>
If you get the following error after running make
\verbatim
tmake error: qtools.pro:70: Syntax error
\endverbatim
then first type
\verbatim
export LANG=
\endverbatim
before running make.
\section install_src_windows Compiling from source on Windows
\section install_src_windows Compiling from source on Windows
Currently, I have only compiled doxygen for Windows using Microsoft's
Currently, I have only compiled doxygen for Windows using Microsoft's
...
...
doc/language.doc
View file @
77a2ce8e
This diff is collapsed.
Click to expand it.
doc/starting.doc
View file @
77a2ce8e
...
@@ -22,15 +22,12 @@ detailed usage information.
...
@@ -22,15 +22,12 @@ detailed usage information.
The executable \c doxytag is only needed if you want to generate references
The executable \c doxytag is only needed if you want to generate references
to external documentation (i.e. documentation that was generated by doxygen)
to external documentation (i.e. documentation that was generated by doxygen)
for which you do not have the sources or to create a search index for
for which you do not have the sources. See section \ref doxytag_usage
the search engine. See section \ref doxytag_usage for more detailed usage
for more detailed usage information.
information.
The executable \c doxysearch is only needed if you want to use the search
Optionally, the executable \c doxywizard can be used, which is a
engine. See section \ref doxysearch_usage for more detailed usage information.
graphical front-end for editing the configuration file that is used by
doxygen.
Optionally, the executable \c doxywizard is a graphical front-end for editing
the configuration files that are used by doxygen.
The following figure shows the relation between the tools and the flow
The following figure shows the relation between the tools and the flow
of information between them:
of information between them:
...
@@ -46,8 +43,8 @@ of a single source file, but can also be an entire source tree that is
...
@@ -46,8 +43,8 @@ of a single source file, but can also be an entire source tree that is
recursively scanned.
recursively scanned.
To simplify the creation of a configuration file, doxygen can create a
To simplify the creation of a configuration file, doxygen can create a
template configuration file for you. To do this call \c doxygen
with the \c -g
template configuration file for you. To do this call \c doxygen
option:
from the command line with the \c -g
option:
\verbatim
\verbatim
doxygen -g <config-file>
doxygen -g <config-file>
\endverbatim
\endverbatim
...
@@ -70,7 +67,7 @@ You can probably leave the values of most tags in a generated template
...
@@ -70,7 +67,7 @@ You can probably leave the values of most tags in a generated template
configuration file to their default value. See section \ref config for
configuration file to their default value. See section \ref config for
more details about the configuration file.
more details about the configuration file.
If you do not
like
to edit the config file with a text editor, you should
If you do not
wish
to edit the config file with a text editor, you should
have a look at \ref doxywizard_usage "doxywizard", which is a GUI
have a look at \ref doxywizard_usage "doxywizard", which is a GUI
front-end that can create, read and write doxygen configuration files,
front-end that can create, read and write doxygen configuration files,
and allows setting configuration options by entering them via dialogs.
and allows setting configuration options by entering them via dialogs.
...
...
doc/trouble.doc
View file @
77a2ce8e
...
@@ -18,6 +18,8 @@
...
@@ -18,6 +18,8 @@
<h2>Known problems:</h2>
<h2>Known problems:</h2>
<ul>
<ul>
<li>If you have problems building doxygen from sources, please
read \ref unix_problems "this section" first.
<li>Doxygen is <em>not</em> a real compiler, it is only a lexical scanner.
<li>Doxygen is <em>not</em> a real compiler, it is only a lexical scanner.
This means that it can and will not detect errors in your source code.
This means that it can and will not detect errors in your source code.
<li>Since it impossible to test all possible code fragments, it is
<li>Since it impossible to test all possible code fragments, it is
...
@@ -60,8 +62,8 @@
...
@@ -60,8 +62,8 @@
documentation, because of possible ambiguities or lack of
documentation, because of possible ambiguities or lack of
information about the context in which the code fragment is found.
information about the context in which the code fragment is found.
<li>It is not possible to insert a non-member function f in a class A
<li>It is not possible to insert a non-member function f in a class A
using the \\relates
command, if class A already has a member with name f
using the \\relates
or \\relatesalso command, if class A already
and the same argument list.
has a member with name f
and the same argument list.
<li>There is only very limited support for member specialization at the
<li>There is only very limited support for member specialization at the
moment. It only works if there is a specialized template class as
moment. It only works if there is a specialized template class as
well.
well.
...
@@ -82,7 +84,15 @@ know why.
...
@@ -82,7 +84,15 @@ know why.
\anchor bug_reports
\anchor bug_reports
<h2>How to report a bug</h2>
<h2>How to report a bug</h2>
If you find a bug please send an e-mail to: dimitri@stack.nl.
Bugs are tracked in GNOME's <a href="http://bugzilla.gnome.org">bugzilla</a> database.
Before submitting a
<a href="http://bugzilla.gnome.org/enter_bug.cgi?product=doxygen">new bug</a>,
first
<a href="http://bugzilla.gnome.org/buglist.cgi?product=doxygen&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=NEEDINFO&bug_status=REOPENED&bug_status=VERIFIED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&op_sys_details=&op_sys_details_type=substring&version_details=&version_details_type=substring&cmdtype=doit&namedcmd=gnome-libs+past+20+days&newqueryname=&order=Reuse+same+sort+as+last+time&form_name=query">
check</a> if the same bug has already been submitted by others.
If you believe you have found a new bug,
please <a href="http://bugzilla.gnome.org/enter_bug.cgi?product=doxygen">file it</a>.
If you are unsure whether or not something is a bug, please ask help
If you are unsure whether or not something is a bug, please ask help
on the <a href="http://sourceforge.net/mail/?group_id=5971">users mailing list</a>
on the <a href="http://sourceforge.net/mail/?group_id=5971">users mailing list</a>
first (subscription is required).
first (subscription is required).
...
@@ -105,21 +115,22 @@ always try to include the following information in your bug report:
...
@@ -105,21 +115,22 @@ always try to include the following information in your bug report:
source code (could potentially compile) and that the problem is really
source code (could potentially compile) and that the problem is really
captured by the example (I often get examples that do not trigger the
captured by the example (I often get examples that do not trigger the
actual bug!). If you intend to send more than one file please zip or tar
actual bug!). If you intend to send more than one file please zip or tar
the files together into a single attachment for easier processing.
the files together into a single file for easier processing.
When reporting a new bug you'll get a chance to attach a file to it
immediately \e after opening the bug.
You can (and are encouraged to) add a patch for a bug. If you do so
please use PATCH as a keyword in the bug entry form.
If you have ideas
(or even better some code or a patch)
If you have ideas
how to fix existing bugs and limitations please discuss them on
how to fix existing bugs and limitations please discuss them on
the <a href="http://sourceforge.net/mail/?group_id=5971">developers mailing list</a>
the <a href="http://sourceforge.net/mail/?group_id=5971">developers mailing list</a>.
(subscription required). Patches can also be sent directly to dimitri@stack.nl if
Patches can also send directly to dimitri@stack.nl
.
you prefer not to send them via the bug tracker or mailing list
.
For patches please use
For patches please use
"diff -uN" or include the files you modified. If you send more than
"diff -uN" or include the files you modified. If you send more than
one file please tar or zip everything, so I only have to save and download
one file please tar or zip everything, so I only have to save and download
one file.
one file.
Note that you can also post bug reports via the bug tracker at
sourceforge, but I do not really like this because of its web
interface, which I find rather clumpsy to use.
*/
*/
packages/rpm/doxygen.spec
View file @
77a2ce8e
Summary: A documentation system for C/C++.
Summary: A documentation system for C/C++.
Name: doxygen
Name: doxygen
Version: 1.3.3_200308
08
Version: 1.3.3_200308
24
Release: 1
Release: 1
Epoch: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/classdef.cpp
View file @
77a2ce8e
...
@@ -891,6 +891,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -891,6 +891,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
{
ol
.
startTypewriter
();
ol
.
startTypewriter
();
bool
isIDLorJava
=
nm
.
right
(
4
)
==
".idl"
||
bool
isIDLorJava
=
nm
.
right
(
4
)
==
".idl"
||
nm
.
right
(
5
)
==
".pidl"
||
nm
.
right
(
5
)
==
".java"
;
nm
.
right
(
5
)
==
".java"
;
if
(
isIDLorJava
)
if
(
isIDLorJava
)
{
{
...
...
src/classlist.cpp
View file @
77a2ce8e
...
@@ -95,7 +95,15 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f
...
@@ -95,7 +95,15 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f
}
}
ol
.
startMemberItem
(
FALSE
);
ol
.
startMemberItem
(
FALSE
);
QCString
tmp
=
cd
->
compoundTypeString
();
QCString
tmp
=
cd
->
compoundTypeString
();
QCString
cname
=
substitute
(
cd
->
className
(),
"::"
,
"."
);
QCString
cname
;
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
))
{
cname
=
substitute
(
cd
->
className
(),
"::"
,
"."
);
}
else
{
cname
=
cd
->
className
();
}
ol
.
writeString
(
tmp
);
ol
.
writeString
(
tmp
);
ol
.
writeString
(
" "
);
ol
.
writeString
(
" "
);
ol
.
insertMemberAlign
();
ol
.
insertMemberAlign
();
...
...
src/classlist.h
View file @
77a2ce8e
...
@@ -49,7 +49,7 @@ class ClassDict : public QDict<ClassDef>
...
@@ -49,7 +49,7 @@ class ClassDict : public QDict<ClassDef>
class
ClassSDict
:
public
SDict
<
ClassDef
>
class
ClassSDict
:
public
SDict
<
ClassDef
>
{
{
public
:
public
:
ClassSDict
(
int
size
)
:
SDict
<
ClassDef
>
(
size
)
{}
ClassSDict
(
int
size
=
17
)
:
SDict
<
ClassDef
>
(
size
)
{}
~
ClassSDict
()
{}
~
ClassSDict
()
{}
int
compareItems
(
GCI
item1
,
GCI
item2
);
int
compareItems
(
GCI
item1
,
GCI
item2
);
void
writeDeclaration
(
OutputList
&
ol
,
const
ClassDef
::
CompoundType
*
filter
=
0
,
void
writeDeclaration
(
OutputList
&
ol
,
const
ClassDef
::
CompoundType
*
filter
=
0
,
...
...
src/code.l
View file @
77a2ce8e
...
@@ -185,7 +185,7 @@ void VariableContext::addVariable(const QCString &type,const QCString &name)
...
@@ -185,7 +185,7 @@ void VariableContext::addVariable(const QCString &type,const QCString &name)
int i=0;
int i=0;
if (
if (
(varType=g_codeClassSDict[ltype]) || // look for class definitions inside the code block
(varType=g_codeClassSDict[ltype]) || // look for class definitions inside the code block
(varType=getResolvedClass(g_currentDefinition,ltype)) // look for global class definitions
(varType=getResolvedClass(g_currentDefinition,
g_sourceFileDef,
ltype)) // look for global class definitions
)
)
{
{
DBG_CTX((stderr,"** AddVariable type=%s name=%s\n",ltype.data(),lname.data()));
DBG_CTX((stderr,"** AddVariable type=%s name=%s\n",ltype.data(),lname.data()));
...
@@ -507,11 +507,11 @@ static ClassDef *stripClassName(const char *s)
...
@@ -507,11 +507,11 @@ static ClassDef *stripClassName(const char *s)
ClassDef *cd=0;
ClassDef *cd=0;
if (!g_classScope.isEmpty())
if (!g_classScope.isEmpty())
{
{
cd=getResolvedClass(g_currentDefinition,g_classScope+"::"+clName);
cd=getResolvedClass(g_currentDefinition,g_
sourceFileDef,g_
classScope+"::"+clName);
}
}
if (cd==0)
if (cd==0)
{
{
cd=getResolvedClass(g_currentDefinition,clName);
cd=getResolvedClass(g_currentDefinition,
g_sourceFileDef,
clName);
}
}
//printf("stripClass trying `%s' = %p\n",clName.data(),cd);
//printf("stripClass trying `%s' = %p\n",clName.data(),cd);
if (cd)
if (cd)
...
@@ -651,14 +651,16 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
...
@@ -651,14 +651,16 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
if (!g_theVarContext.findVariable(className)) // not a local variable
if (!g_theVarContext.findVariable(className)) // not a local variable
{
{
//printf("not a local var!\n");
Definition *d = g_currentDefinition;
Definition *d = g_currentDefinition;
cd = getResolvedClass(d,className);
cd = getResolvedClass(d,
g_sourceFileDef,
className);
if (cd==0 && (i=className.find('<'))!=-1)
if (cd==0 && (i=className.find('<'))!=-1)
{
{
cd=getResolvedClass(d,className.left(i));
cd=getResolvedClass(d,
g_sourceFileDef,
className.left(i));
}
}
}
}
else
{
}
if (cd && cd->isLinkable()) // is it a linkable class
if (cd && cd->isLinkable()) // is it a linkable class
{
{
//printf("is linkable class %s\n",clName);
//printf("is linkable class %s\n",clName);
...
@@ -678,12 +680,13 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
...
@@ -678,12 +680,13 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
}
}
else
else
{
{
//printf("class %s not linkable! cd=%p\n",clName,cd);
//printf("typeOnly=%d\n",typeOnly);
//printf("typeOnly=%d\n",typeOnly);
if (cd==0 && !typeOnly) // not a class, see if it is a global enum/variable/typedef.
if (cd==0 && !typeOnly) // not a class, see if it is a global enum/variable/typedef.
{
{
MemberDef *md = setCallContextForVar(clName);
MemberDef *md = setCallContextForVar(clName);
//printf("is a global md=%p
\n",md
);
//printf("is a global md=%p
g_currentDefinition=%s\n",md,g_currentDefinition?g_currentDefinition->name().data():"<none>"
);
if (md)
if (md
&& (g_currentDefinition==0 || isAccessibleFrom(g_currentDefinition,g_sourceFileDef,md)!=-1)
)
{
{
Definition *d = md->getOuterScope()==Doxygen::globalScope ?
Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope();
md->getBodyDef() : md->getOuterScope();
...
@@ -849,7 +852,7 @@ static void generateMemberLink(BaseCodeDocInterface &ol,const QCString &varName,
...
@@ -849,7 +852,7 @@ static void generateMemberLink(BaseCodeDocInterface &ol,const QCString &varName,
}
}
else // variable not in current context, maybe it is in a parent context
else // variable not in current context, maybe it is in a parent context
{
{
vcd = getResolvedClass(g_currentDefinition,g_classScope);
vcd = getResolvedClass(g_currentDefinition,g_
sourceFileDef,g_
classScope);
if (vcd && vcd->isLinkable())
if (vcd && vcd->isLinkable())
{
{
//printf("Found class %s for variable `%s'\n",g_classScope.data(),varName.data());
//printf("Found class %s for variable `%s'\n",g_classScope.data(),varName.data());
...
@@ -1166,6 +1169,9 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
...
@@ -1166,6 +1169,9 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
{
{
g_insideBody=FALSE;
g_insideBody=FALSE;
g_currentMemberDef=0;
g_currentMemberDef=0;
if (g_currentDefinition)
g_currentDefinition=g_currentDefinition->getOuterScope();
else
g_currentDefinition=0;
g_currentDefinition=0;
}
}
BEGIN(Body);
BEGIN(Body);
...
@@ -1232,7 +1238,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
...
@@ -1232,7 +1238,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_scopeStack.push(CLASSBLOCK);
g_scopeStack.push(CLASSBLOCK);
pushScope(g_curClassName);
pushScope(g_curClassName);
//printf("***** g_curClassName=%s\n",g_curClassName.data());
//printf("***** g_curClassName=%s\n",g_curClassName.data());
if (getResolvedClass(g_currentDefinition,g_curClassName)==0)
if (getResolvedClass(g_currentDefinition,g_
sourceFileDef,g_
curClassName)==0)
{
{
g_curClassDef=new ClassDef("<code>",1,
g_curClassDef=new ClassDef("<code>",1,
g_curClassName,ClassDef::Class);
g_curClassName,ClassDef::Class);
...
@@ -1243,7 +1249,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
...
@@ -1243,7 +1249,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
{
{
ClassDef *bcd;
ClassDef *bcd;
bcd=g_codeClassSDict[s];
bcd=g_codeClassSDict[s];
if (bcd==0) bcd=getResolvedClass(g_currentDefinition,s);
if (bcd==0) bcd=getResolvedClass(g_currentDefinition,
g_sourceFileDef,
s);
if (bcd)
if (bcd)
{
{
g_curClassDef->insertBaseClass(bcd,s,Public,Normal);
g_curClassDef->insertBaseClass(bcd,s,Public,Normal);
...
@@ -1631,7 +1637,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
...
@@ -1631,7 +1637,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
int index = g_name.findRev("::");
int index = g_name.findRev("::");
if (index!=-1)
if (index!=-1)
{
{
ClassDef *cd=getResolvedClass(Doxygen::globalScope,g_name.left(index));
ClassDef *cd=getResolvedClass(Doxygen::globalScope,g_
sourceFileDef,g_
name.left(index));
if (cd)
if (cd)
{
{
setClassScope(cd->name());
setClassScope(cd->name());
...
...
src/config.h
View file @
77a2ce8e
...
@@ -497,6 +497,7 @@ class Config
...
@@ -497,6 +497,7 @@ class Config
{
{
ConfigObsolete
*
option
=
new
ConfigObsolete
(
ConfigOption
::
O_Obsolete
);
ConfigObsolete
*
option
=
new
ConfigObsolete
(
ConfigOption
::
O_Obsolete
);
m_dict
->
insert
(
name
,
option
);
m_dict
->
insert
(
name
,
option
);
m_obsolete
->
append
(
option
);
return
option
;
return
option
;
}
}
/*! @} */
/*! @} */
...
@@ -539,23 +540,29 @@ class Config
...
@@ -539,23 +540,29 @@ class Config
* to the configuration object
* to the configuration object
*/
*/
void
create
();
void
create
();
protected
:
protected
:
Config
()
Config
()
{
{
m_options
=
new
QList
<
ConfigOption
>
;
m_options
=
new
QList
<
ConfigOption
>
;
m_obsolete
=
new
QList
<
ConfigOption
>
;
m_dict
=
new
QDict
<
ConfigOption
>
(
257
);
m_dict
=
new
QDict
<
ConfigOption
>
(
257
);
m_options
->
setAutoDelete
(
TRUE
);
m_options
->
setAutoDelete
(
TRUE
);
m_obsolete
->
setAutoDelete
(
TRUE
);
m_initialized
=
FALSE
;
m_initialized
=
FALSE
;
create
();
create
();
}
}
~
Config
()
~
Config
()
{
{
delete
m_options
;
delete
m_options
;
delete
m_obsolete
;
delete
m_dict
;
delete
m_dict
;
}
}
private
:
private
:
QList
<
ConfigOption
>
*
m_options
;
QList
<
ConfigOption
>
*
m_options
;
QList
<
ConfigOption
>
*
m_obsolete
;
QDict
<
ConfigOption
>
*
m_dict
;
QDict
<
ConfigOption
>
*
m_dict
;
static
Config
*
m_instance
;
static
Config
*
m_instance
;
bool
m_initialized
;
bool
m_initialized
;
...
...
src/config.l
View file @
77a2ce8e
This diff is collapsed.
Click to expand it.
src/definition.cpp
View file @
77a2ce8e
...
@@ -18,6 +18,8 @@
...
@@ -18,6 +18,8 @@
#include "qtbc.h"
#include "qtbc.h"
#include <ctype.h>
#include <ctype.h>
#include <qregexp.h>
#include <qregexp.h>
#include <stdio.h>
#include <stdlib.h>
#include "config.h"
#include "config.h"
#include "definition.h"
#include "definition.h"
#include "doxygen.h"
#include "doxygen.h"
...
@@ -29,6 +31,47 @@
...
@@ -29,6 +31,47 @@
#include "groupdef.h"
#include "groupdef.h"
#include "section.h"
#include "section.h"
#if defined(_MSC_VER) || defined(__BORLANDC__)
#define popen _popen
#define pclose _pclose
#endif
static
void
addToMap
(
const
char
*
name
,
Definition
*
d
)
{
QCString
symbolName
=
name
;
int
index
=
symbolName
.
findRev
(
"::"
);
if
(
index
!=-
1
)
symbolName
=
symbolName
.
mid
(
index
+
2
);
if
(
!
symbolName
.
isEmpty
())
{
DefinitionList
*
dl
=
Doxygen
::
symbolMap
->
find
(
symbolName
);
if
(
dl
==
0
)
{
dl
=
new
DefinitionList
;
Doxygen
::
symbolMap
->
append
(
symbolName
,
dl
);
}
//printf("******* adding symbol `%s'\n",symbolName.data());
dl
->
append
(
d
);
}
}
static
void
removeFromMap
(
Definition
*
d
)
{
QCString
symbolName
=
d
->
name
();
int
index
=
symbolName
.
findRev
(
"::"
);
if
(
index
!=-
1
)
symbolName
=
symbolName
.
mid
(
index
+
2
);
if
(
!
symbolName
.
isEmpty
())
{
//printf("******* removing symbol `%s'\n",symbolName.data());
DefinitionList
*
dl
=
Doxygen
::
symbolMap
->
find
(
symbolName
);
if
(
dl
)
{
ASSERT
(
dl
!=
0
);
bool
b
=
dl
->
removeRef
(
d
);
ASSERT
(
b
==
TRUE
);
}
}
}
Definition
::
Definition
(
const
char
*
df
,
int
dl
,
Definition
::
Definition
(
const
char
*
df
,
int
dl
,
const
char
*
name
,
const
char
*
b
,
const
char
*
d
)
const
char
*
name
,
const
char
*
b
,
const
char
*
d
)
{
{
...
@@ -64,10 +107,12 @@ Definition::Definition(const char *df,int dl,
...
@@ -64,10 +107,12 @@ Definition::Definition(const char *df,int dl,
m_briefFile
=
(
QCString
)
"<"
+
name
+
">"
;
m_briefFile
=
(
QCString
)
"<"
+
name
+
">"
;
m_docLine
=
1
;
m_docLine
=
1
;
m_docFile
=
(
QCString
)
"<"
+
name
+
">"
;
m_docFile
=
(
QCString
)
"<"
+
name
+
">"
;
addToMap
(
name
,
this
);
}
}
Definition
::~
Definition
()
Definition
::~
Definition
()
{
{
removeFromMap
(
this
);
delete
m_sectionDict
;
delete
m_sectionDict
;
delete
m_sourceRefByDict
;
delete
m_sourceRefByDict
;
delete
m_sourceRefsDict
;
delete
m_sourceRefsDict
;
...
@@ -196,26 +241,27 @@ static bool readCodeFragment(const char *fileName,
...
@@ -196,26 +241,27 @@ static bool readCodeFragment(const char *fileName,
{
{
//printf("readCodeFragment(%s,%d,%d)\n",fileName,startLine,endLine);
//printf("readCodeFragment(%s,%d,%d)\n",fileName,startLine,endLine);
if
(
fileName
==
0
||
fileName
[
0
]
==
0
)
return
FALSE
;
// not a valid file name
if
(
fileName
==
0
||
fileName
[
0
]
==
0
)
return
FALSE
;
// not a valid file name
QFile
f
(
fileName
);
QCString
cmd
=
Config_getString
(
"INPUT_FILTER"
)
+
"
\"
"
+
fileName
+
"
\"
"
;
if
(
f
.
open
(
IO_ReadOnly
))
FILE
*
f
=
Config_getBool
(
"FILTER_SOURCE_FILES"
)
?
popen
(
cmd
,
"r"
)
:
fopen
(
fileName
,
"r"
);
if
(
f
)
{
{
int
c
=
0
;
int
c
=
0
;
int
col
=
0
;
int
col
=
0
;
int
lineNr
=
1
;
int
lineNr
=
1
;
// skip until the startLine has reached
// skip until the startLine has reached
while
(
lineNr
<
startLine
&&
!
f
.
atEnd
(
))
while
(
lineNr
<
startLine
&&
!
f
eof
(
f
))
{
{
while
((
c
=
f
.
getch
())
!=
'\n'
&&
c
!=-
1
)
/* skip */
;
while
((
c
=
f
getc
(
f
))
!=
'\n'
&&
c
==
EOF
)
/* skip */
;
lineNr
++
;
lineNr
++
;
}
}
if
(
!
f
.
atEnd
(
))
if
(
!
f
eof
(
f
))
{
{
// skip until the opening bracket or lonely : is found
// skip until the opening bracket or lonely : is found
bool
found
=
FALSE
;
bool
found
=
FALSE
;
char
cn
=
0
;
char
cn
=
0
;
while
(
lineNr
<=
endLine
&&
!
f
.
atEnd
(
)
&&
!
found
)
while
(
lineNr
<=
endLine
&&
!
f
eof
(
f
)
&&
!
found
)
{
{
while
((
c
=
f
.
getch
())
!=
'{'
&&
c
!=
':'
&&
c
!=-
1
)
while
((
c
=
f
getc
(
f
))
!=
'{'
&&
c
!=
':'
&&
c
!=
EOF
)
{
{
if
(
c
==
'\n'
)
if
(
c
==
'\n'
)
{
{
...
@@ -232,7 +278,7 @@ static bool readCodeFragment(const char *fileName,
...
@@ -232,7 +278,7 @@ static bool readCodeFragment(const char *fileName,
}
}
if
(
c
==
':'
)
if
(
c
==
':'
)
{
{
cn
=
f
.
getch
(
);
cn
=
f
getc
(
f
);
if
(
cn
!=
':'
)
found
=
TRUE
;
if
(
cn
!=
':'
)
found
=
TRUE
;
}
}
else
if
(
c
==
'{'
)
else
if
(
c
==
'{'
)
...
@@ -262,12 +308,13 @@ static bool readCodeFragment(const char *fileName,
...
@@ -262,12 +308,13 @@ static bool readCodeFragment(const char *fileName,
int
size_read
;
int
size_read
;
do
{
do
{
// read up to maxLineLength-1 bytes, the last byte being zero
// read up to maxLineLength-1 bytes, the last byte being zero
size_read
=
f
.
readLine
(
lineStr
,
maxLineLength
);
char
*
p
=
fgets
(
lineStr
,
maxLineLength
,
f
);
if
(
p
)
size_read
=
qstrlen
(
p
);
else
size_read
=-
1
;
result
+=
lineStr
;
result
+=
lineStr
;
}
while
(
size_read
==
(
maxLineLength
-
1
));
}
while
(
size_read
==
(
maxLineLength
-
1
));
lineNr
++
;
lineNr
++
;
}
while
(
lineNr
<=
endLine
&&
!
f
.
atEnd
(
));
}
while
(
lineNr
<=
endLine
&&
!
f
eof
(
f
));
// strip stuff after closing bracket
// strip stuff after closing bracket
int
newLineIndex
=
result
.
findRev
(
'\n'
);
int
newLineIndex
=
result
.
findRev
(
'\n'
);
...
...
src/docparser.cpp
View file @
77a2ce8e
...
@@ -572,12 +572,15 @@ static int handleStyleArgument(DocNode *parent,QList<DocNode> &children,
...
@@ -572,12 +572,15 @@ static int handleStyleArgument(DocNode *parent,QList<DocNode> &children,
g_token
->
name
.
data
(),
cmdName
.
data
());
g_token
->
name
.
data
(),
cmdName
.
data
());
break
;
break
;
case
TK_SYMBOL
:
case
TK_SYMBOL
:
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: Unsupported symbol %s found"
,
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: Unsupported symbol %s found while handling command %s"
,
g_token
->
name
.
data
());
g_token
->
name
.
data
(),
cmdName
.
data
());
break
;
case
TK_HTMLTAG
:
return
tok
;
break
;
break
;
default:
default:
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: Unexpected token %s"
,
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: Unexpected token %s
while handling command %s
"
,
tokToString
(
tok
));
tokToString
(
tok
)
,
cmdName
.
data
()
);
break
;
break
;
}
}
break
;
break
;
...
@@ -789,7 +792,7 @@ reparsetoken:
...
@@ -789,7 +792,7 @@ reparsetoken:
children
.
append
(
new
DocStyleChange
(
parent
,
g_nodeStack
.
count
(),
DocStyleChange
::
Italic
,
FALSE
));
children
.
append
(
new
DocStyleChange
(
parent
,
g_nodeStack
.
count
(),
DocStyleChange
::
Italic
,
FALSE
));
if
(
tok
!=
TK_WORD
)
children
.
append
(
new
DocWhiteSpace
(
parent
,
" "
));
if
(
tok
!=
TK_WORD
)
children
.
append
(
new
DocWhiteSpace
(
parent
,
" "
));
if
(
tok
==
TK_NEWPARA
)
goto
handlepara
;
if
(
tok
==
TK_NEWPARA
)
goto
handlepara
;
else
if
(
tok
==
TK_WORD
)
goto
reparsetoken
;
else
if
(
tok
==
TK_WORD
||
tok
==
TK_HTMLTAG
)
goto
reparsetoken
;
}
}
break
;
break
;
case
CMD_BOLD
:
case
CMD_BOLD
:
...
@@ -799,7 +802,7 @@ reparsetoken:
...
@@ -799,7 +802,7 @@ reparsetoken:
children
.
append
(
new
DocStyleChange
(
parent
,
g_nodeStack
.
count
(),
DocStyleChange
::
Bold
,
FALSE
));
children
.
append
(
new
DocStyleChange
(
parent
,
g_nodeStack
.
count
(),
DocStyleChange
::
Bold
,
FALSE
));
if
(
tok
!=
TK_WORD
)
children
.
append
(
new
DocWhiteSpace
(
parent
,
" "
));
if
(
tok
!=
TK_WORD
)
children
.
append
(
new
DocWhiteSpace
(
parent
,
" "
));
if
(
tok
==
TK_NEWPARA
)
goto
handlepara
;
if
(
tok
==
TK_NEWPARA
)
goto
handlepara
;
else
if
(
tok
==
TK_WORD
)
goto
reparsetoken
;
else
if
(
tok
==
TK_WORD
||
tok
==
TK_HTMLTAG
)
goto
reparsetoken
;
}
}
break
;
break
;
case
CMD_CODE
:
case
CMD_CODE
:
...
@@ -809,7 +812,7 @@ reparsetoken:
...
@@ -809,7 +812,7 @@ reparsetoken:
children
.
append
(
new
DocStyleChange
(
parent
,
g_nodeStack
.
count
(),
DocStyleChange
::
Code
,
FALSE
));
children
.
append
(
new
DocStyleChange
(
parent
,
g_nodeStack
.
count
(),
DocStyleChange
::
Code
,
FALSE
));
if
(
tok
!=
TK_WORD
)
children
.
append
(
new
DocWhiteSpace
(
parent
,
" "
));
if
(
tok
!=
TK_WORD
)
children
.
append
(
new
DocWhiteSpace
(
parent
,
" "
));
if
(
tok
==
TK_NEWPARA
)
goto
handlepara
;
if
(
tok
==
TK_NEWPARA
)
goto
handlepara
;
else
if
(
tok
==
TK_WORD
)
goto
reparsetoken
;
else
if
(
tok
==
TK_WORD
||
tok
==
TK_HTMLTAG
)
goto
reparsetoken
;
}
}
break
;
break
;
case
CMD_HTMLONLY
:
case
CMD_HTMLONLY
:
...
...
src/doxygen.cpp
View file @
77a2ce8e
This diff is collapsed.
Click to expand it.
src/doxygen.h
View file @
77a2ce8e
...
@@ -99,6 +99,7 @@ class Doxygen
...
@@ -99,6 +99,7 @@ class Doxygen
static
double
sysElapsedTime
;
static
double
sysElapsedTime
;
static
QTime
runningTime
;
static
QTime
runningTime
;
static
SearchIndex
*
searchIndex
;
static
SearchIndex
*
searchIndex
;
static
SDict
<
DefinitionList
>
*
symbolMap
;
};
};
void
initDoxygen
();
void
initDoxygen
();
...
...
src/entry.cpp
View file @
77a2ce8e
...
@@ -42,6 +42,7 @@ Entry::Entry()
...
@@ -42,6 +42,7 @@ Entry::Entry()
mGrpId
=
-
1
;
mGrpId
=
-
1
;
tagInfo
=
0
;
tagInfo
=
0
;
sli
=
0
;
sli
=
0
;
relatesDup
=
FALSE
;
groupDocType
=
GROUPDOC_NORMAL
;
groupDocType
=
GROUPDOC_NORMAL
;
reset
();
reset
();
}
}
...
@@ -69,6 +70,7 @@ Entry::Entry(const Entry &e)
...
@@ -69,6 +70,7 @@ Entry::Entry(const Entry &e)
docLine
=
e
.
docLine
;
docLine
=
e
.
docLine
;
docFile
=
e
.
docFile
.
copy
();
docFile
=
e
.
docFile
.
copy
();
relates
=
e
.
relates
.
copy
();
relates
=
e
.
relates
.
copy
();
relatesDup
=
e
.
relatesDup
;
brief
=
e
.
brief
.
copy
();
brief
=
e
.
brief
.
copy
();
briefLine
=
e
.
briefLine
;
briefLine
=
e
.
briefLine
;
briefFile
=
e
.
briefFile
.
copy
();
briefFile
=
e
.
briefFile
.
copy
();
...
@@ -227,6 +229,7 @@ void Entry::reset()
...
@@ -227,6 +229,7 @@ void Entry::reset()
docFile
.
resize
(
0
);
docFile
.
resize
(
0
);
docLine
=-
1
;
docLine
=-
1
;
relates
.
resize
(
0
);
relates
.
resize
(
0
);
relatesDup
=
FALSE
;
brief
.
resize
(
0
);
brief
.
resize
(
0
);
briefFile
.
resize
(
0
);
briefFile
.
resize
(
0
);
briefLine
=-
1
;
briefLine
=-
1
;
...
...
src/entry.h
View file @
77a2ce8e
...
@@ -275,6 +275,7 @@ class Entry
...
@@ -275,6 +275,7 @@ class Entry
int
briefLine
;
//!< line number at which the brief desc. was found
int
briefLine
;
//!< line number at which the brief desc. was found
QCString
briefFile
;
//!< file in which the brief desc. was found
QCString
briefFile
;
//!< file in which the brief desc. was found
QCString
relates
;
//!< related class (doc block)
QCString
relates
;
//!< related class (doc block)
bool
relatesDup
;
//!< keep duplicate doc in original file also
QCString
inside
;
//!< name of the class in which documents are found
QCString
inside
;
//!< name of the class in which documents are found
QCString
exception
;
//!< throw specification
QCString
exception
;
//!< throw specification
int
bodyLine
;
//!< line number of the definition in the source
int
bodyLine
;
//!< line number of the definition in the source
...
...
src/filedef.cpp
View file @
77a2ce8e
...
@@ -263,6 +263,7 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -263,6 +263,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if
(
fd
)
if
(
fd
)
{
{
isIDLorJava
=
fd
->
name
().
right
(
4
)
==
".idl"
||
isIDLorJava
=
fd
->
name
().
right
(
4
)
==
".idl"
||
fd
->
name
().
right
(
5
)
==
".pidl"
||
fd
->
name
().
right
(
5
)
==
".java"
;
fd
->
name
().
right
(
5
)
==
".java"
;
}
}
ol
.
startTypewriter
();
ol
.
startTypewriter
();
...
@@ -648,18 +649,24 @@ void FileDef::addUsingDirective(NamespaceDef *nd)
...
@@ -648,18 +649,24 @@ void FileDef::addUsingDirective(NamespaceDef *nd)
{
{
if
(
usingDirList
==
0
)
if
(
usingDirList
==
0
)
{
{
usingDirList
=
new
NamespaceList
;
usingDirList
=
new
NamespaceSDict
;
}
if
(
usingDirList
->
find
(
nd
->
qualifiedName
())
==
0
)
{
usingDirList
->
append
(
nd
->
qualifiedName
(),
nd
);
}
}
usingDirList
->
append
(
nd
);
}
}
void
FileDef
::
addUsingDeclaration
(
ClassDef
*
cd
)
void
FileDef
::
addUsingDeclaration
(
ClassDef
*
cd
)
{
{
if
(
usingDeclList
==
0
)
if
(
usingDeclList
==
0
)
{
{
usingDeclList
=
new
ClassList
;
usingDeclList
=
new
ClassSDict
;
}
if
(
usingDeclList
->
find
(
cd
->
qualifiedName
())
==
0
)
{
usingDeclList
->
append
(
cd
->
qualifiedName
(),
cd
);
}
}
usingDeclList
->
append
(
cd
);
}
}
void
FileDef
::
addIncludeDependency
(
FileDef
*
fd
,
const
char
*
incName
,
bool
local
)
void
FileDef
::
addIncludeDependency
(
FileDef
*
fd
,
const
char
*
incName
,
bool
local
)
...
@@ -706,18 +713,18 @@ void FileDef::addIncludedUsingDirectives()
...
@@ -706,18 +713,18 @@ void FileDef::addIncludedUsingDirectives()
{
{
if
(
ii
->
fileDef
&&
ii
->
fileDef
!=
this
)
if
(
ii
->
fileDef
&&
ii
->
fileDef
!=
this
)
{
{
Namespace
Lis
t
*
unl
=
ii
->
fileDef
->
usingDirList
;
Namespace
SDic
t
*
unl
=
ii
->
fileDef
->
usingDirList
;
if
(
unl
)
if
(
unl
)
{
{
Namespace
List
Iterator
nli
(
*
unl
);
Namespace
SDict
::
Iterator
nli
(
*
unl
);
NamespaceDef
*
nd
;
NamespaceDef
*
nd
;
for
(
nli
.
toLast
();(
nd
=
nli
.
current
());
--
nli
)
for
(
nli
.
toLast
();(
nd
=
nli
.
current
());
--
nli
)
{
{
// append each using directive found in a #include file
// append each using directive found in a #include file
if
(
usingDirList
==
0
)
usingDirList
=
new
Namespace
Lis
t
;
if
(
usingDirList
==
0
)
usingDirList
=
new
Namespace
SDic
t
;
//printf("Prepending used namespace %s to the list of file %s\n",
//printf("Prepending used namespace %s to the list of file %s\n",
// nd->name().data(),name().data());
// nd->name().data(),name().data());
usingDirList
->
prepend
(
nd
);
usingDirList
->
prepend
(
nd
->
qualifiedName
(),
nd
);
}
}
}
}
}
}
...
@@ -994,3 +1001,44 @@ void generateFileTree(QTextStream &t)
...
@@ -994,3 +1001,44 @@ void generateFileTree(QTextStream &t)
delete
root
;
delete
root
;
}
}
void
FileDef
::
combineUsingRelations
()
{
if
(
visited
)
return
;
// already done
visited
=
TRUE
;
if
(
usingDirList
)
{
NamespaceSDict
::
Iterator
nli
(
*
usingDirList
);
NamespaceDef
*
nd
;
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
{
nd
->
combineUsingRelations
();
}
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
{
// add used namespaces of namespace nd to this namespace
if
(
nd
->
getUsedNamespaces
())
{
NamespaceSDict
::
Iterator
unli
(
*
nd
->
getUsedNamespaces
());
NamespaceDef
*
und
;
for
(
unli
.
toFirst
();(
und
=
unli
.
current
());
++
unli
)
{
//printf("Adding namespace %s to the using list of %s\n",und->qualifiedName().data(),qualifiedName().data());
addUsingDirective
(
und
);
}
}
// add used classes of namespace nd to this namespace
if
(
nd
->
getUsedClasses
())
{
ClassSDict
::
Iterator
cli
(
*
nd
->
getUsedClasses
());
ClassDef
*
ucd
;
for
(
cli
.
toFirst
();(
ucd
=
cli
.
current
());
++
cli
)
{
//printf("Adding class %s to the using list of %s\n",cd->qualifiedName().data(),qualifiedName().data());
addUsingDeclaration
(
ucd
);
}
}
}
}
}
src/filedef.h
View file @
77a2ce8e
...
@@ -133,9 +133,10 @@ class FileDef : public Definition
...
@@ -133,9 +133,10 @@ class FileDef : public Definition
PackageDef
*
packageDef
()
const
{
return
package
;
}
PackageDef
*
packageDef
()
const
{
return
package
;
}
void
addUsingDirective
(
NamespaceDef
*
nd
);
void
addUsingDirective
(
NamespaceDef
*
nd
);
Namespace
Lis
t
*
getUsedNamespaces
()
const
{
return
usingDirList
;
}
Namespace
SDic
t
*
getUsedNamespaces
()
const
{
return
usingDirList
;
}
void
addUsingDeclaration
(
ClassDef
*
cd
);
void
addUsingDeclaration
(
ClassDef
*
cd
);
ClassList
*
getUsedClasses
()
const
{
return
usingDeclList
;
}
ClassSDict
*
getUsedClasses
()
const
{
return
usingDeclList
;
}
void
combineUsingRelations
();
bool
generateSourceFile
()
const
;
bool
generateSourceFile
()
const
;
...
@@ -186,8 +187,8 @@ class FileDef : public Definition
...
@@ -186,8 +187,8 @@ class FileDef : public Definition
QList
<
IncludeInfo
>
*
includeList
;
QList
<
IncludeInfo
>
*
includeList
;
QDict
<
IncludeInfo
>
*
includedByDict
;
QDict
<
IncludeInfo
>
*
includedByDict
;
QList
<
IncludeInfo
>
*
includedByList
;
QList
<
IncludeInfo
>
*
includedByList
;
Namespace
Lis
t
*
usingDirList
;
Namespace
SDic
t
*
usingDirList
;
Class
Lis
t
*
usingDeclList
;
Class
SDic
t
*
usingDeclList
;
//DefineList *defineList;
//DefineList *defineList;
QCString
path
;
QCString
path
;
QCString
filepath
;
QCString
filepath
;
...
...
src/latexgen.cpp
View file @
77a2ce8e
...
@@ -401,6 +401,7 @@ static void writeDefaultStyleSheetPart3(QTextStream &t)
...
@@ -401,6 +401,7 @@ static void writeDefaultStyleSheetPart3(QTextStream &t)
t
<<
"
\\
setlength{
\\
parskip}{0.2cm}
\n
"
;
t
<<
"
\\
setlength{
\\
parskip}{0.2cm}
\n
"
;
t
<<
"
\\
addtocounter{secnumdepth}{1}
\n
"
;
t
<<
"
\\
addtocounter{secnumdepth}{1}
\n
"
;
t
<<
"
\\
sloppy
\n
"
;
t
<<
"
\\
sloppy
\n
"
;
t
<<
"
\\
usepackage[T1]{fontenc}
\n
"
;
}
}
void
LatexGenerator
::
writeHeaderFile
(
QFile
&
f
)
void
LatexGenerator
::
writeHeaderFile
(
QFile
&
f
)
...
...
src/memberdef.cpp
View file @
77a2ce8e
...
@@ -271,6 +271,7 @@ MemberDef::MemberDef(const char *df,int dl,
...
@@ -271,6 +271,7 @@ MemberDef::MemberDef(const char *df,int dl,
classDef
=
0
;
classDef
=
0
;
fileDef
=
0
;
fileDef
=
0
;
redefines
=
0
;
redefines
=
0
;
m_relatedAlso
=
0
;
redefinedBy
=
0
;
redefinedBy
=
0
;
nspace
=
0
;
nspace
=
0
;
memDef
=
0
;
memDef
=
0
;
...
@@ -370,9 +371,11 @@ MemberDef::MemberDef(const char *df,int dl,
...
@@ -370,9 +371,11 @@ MemberDef::MemberDef(const char *df,int dl,
{
{
declArgList
=
0
;
declArgList
=
0
;
}
}
m_templateMaster
=
0
;
m_templateMaster
=
0
;
classSectionSDict
=
0
;
classSectionSDict
=
0
;
docsForDefinition
=
TRUE
;
docsForDefinition
=
TRUE
;
m_isTypedefValCached
=
FALSE
;
m_cachedTypedefValue
=
0
;
}
}
/*! Destroys the member definition. */
/*! Destroys the member definition. */
...
...
src/memberdef.h
View file @
77a2ce8e
...
@@ -175,6 +175,10 @@ class MemberDef : public Definition
...
@@ -175,6 +175,10 @@ class MemberDef : public Definition
MemberDef
*
reimplements
()
const
;
MemberDef
*
reimplements
()
const
;
MemberList
*
reimplementedBy
()
const
;
MemberList
*
reimplementedBy
()
const
;
// For function documentation that can also be found in a class's related func section.
void
setRelatedAlso
(
ClassDef
*
cd
)
{
m_relatedAlso
=
cd
;
}
ClassDef
*
relatedAlso
()
const
{
return
m_relatedAlso
;
}
// enumeration specific members
// enumeration specific members
void
insertEnumField
(
MemberDef
*
md
);
void
insertEnumField
(
MemberDef
*
md
);
void
setEnumScope
(
MemberDef
*
md
);
void
setEnumScope
(
MemberDef
*
md
);
...
@@ -248,6 +252,11 @@ class MemberDef : public Definition
...
@@ -248,6 +252,11 @@ class MemberDef : public Definition
void
setBodyMember
(
MemberDef
*
md
)
{
bodyMemb
=
md
;
}
void
setBodyMember
(
MemberDef
*
md
)
{
bodyMemb
=
md
;
}
void
setDocsForDefinition
(
bool
b
)
{
docsForDefinition
=
b
;
}
void
setDocsForDefinition
(
bool
b
)
{
docsForDefinition
=
b
;
}
// cached typedef functions
bool
isTypedefValCached
()
const
{
return
m_isTypedefValCached
;
}
ClassDef
*
getCachedTypedefVal
()
const
{
return
m_cachedTypedefValue
;
}
void
cacheTypedefVal
(
ClassDef
*
val
)
{
m_isTypedefValCached
=
TRUE
;
m_cachedTypedefValue
=
val
;
}
// declaration <-> definition relation
// declaration <-> definition relation
void
setMemberDefinition
(
MemberDef
*
md
)
{
memDef
=
md
;
}
void
setMemberDefinition
(
MemberDef
*
md
)
{
memDef
=
md
;
}
void
setMemberDeclaration
(
MemberDef
*
md
)
{
memDec
=
md
;
}
void
setMemberDeclaration
(
MemberDef
*
md
)
{
memDec
=
md
;
}
...
@@ -270,6 +279,7 @@ class MemberDef : public Definition
...
@@ -270,6 +279,7 @@ class MemberDef : public Definition
MemberList
*
redefinedBy
;
// the list of members that redefine this one
MemberList
*
redefinedBy
;
// the list of members that redefine this one
MemberDef
*
memDef
;
// member definition for this declaration
MemberDef
*
memDef
;
// member definition for this declaration
MemberDef
*
memDec
;
// member declaration for this definition
MemberDef
*
memDec
;
// member declaration for this definition
ClassDef
*
m_relatedAlso
;
// points to class marked by relatedAlso
ExampleSDict
*
exampleSDict
;
// a dictionary of all examples for quick access
ExampleSDict
*
exampleSDict
;
// a dictionary of all examples for quick access
...
@@ -332,6 +342,10 @@ class MemberDef : public Definition
...
@@ -332,6 +342,10 @@ class MemberDef : public Definition
MemberDef
(
const
MemberDef
&
);
MemberDef
(
const
MemberDef
&
);
MemberDef
&
operator
=
(
const
MemberDef
&
);
MemberDef
&
operator
=
(
const
MemberDef
&
);
static
int
s_indentLevel
;
static
int
s_indentLevel
;
bool
m_isTypedefValCached
;
ClassDef
*
m_cachedTypedefValue
;
};
};
#endif
#endif
src/namespacedef.cpp
View file @
77a2ce8e
...
@@ -363,18 +363,24 @@ void NamespaceDef::addUsingDirective(NamespaceDef *nd)
...
@@ -363,18 +363,24 @@ void NamespaceDef::addUsingDirective(NamespaceDef *nd)
{
{
if
(
usingDirList
==
0
)
if
(
usingDirList
==
0
)
{
{
usingDirList
=
new
NamespaceList
;
usingDirList
=
new
NamespaceSDict
;
}
if
(
usingDirList
->
find
(
nd
->
qualifiedName
())
==
0
)
{
usingDirList
->
append
(
nd
->
qualifiedName
(),
nd
);
}
}
usingDirList
->
append
(
nd
);
}
}
void
NamespaceDef
::
addUsingDeclaration
(
ClassDef
*
cd
)
void
NamespaceDef
::
addUsingDeclaration
(
ClassDef
*
cd
)
{
{
if
(
usingDeclList
==
0
)
if
(
usingDeclList
==
0
)
{
{
usingDeclList
=
new
ClassList
;
usingDeclList
=
new
ClassSDict
;
}
if
(
usingDeclList
->
find
(
cd
->
qualifiedName
())
==
0
)
{
usingDeclList
->
append
(
cd
->
qualifiedName
(),
cd
);
}
}
usingDeclList
->
append
(
cd
);
}
}
QCString
NamespaceDef
::
getOutputFileBase
()
const
QCString
NamespaceDef
::
getOutputFileBase
()
const
...
@@ -418,3 +424,43 @@ QCString NamespaceDef::displayName() const
...
@@ -418,3 +424,43 @@ QCString NamespaceDef::displayName() const
return
result
;
return
result
;
}
}
void
NamespaceDef
::
combineUsingRelations
()
{
if
(
visited
)
return
;
// already done
visited
=
TRUE
;
if
(
usingDirList
)
{
NamespaceSDict
::
Iterator
nli
(
*
usingDirList
);
NamespaceDef
*
nd
;
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
{
nd
->
combineUsingRelations
();
}
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
{
// add used namespaces of namespace nd to this namespace
if
(
nd
->
getUsedNamespaces
())
{
NamespaceSDict
::
Iterator
unli
(
*
nd
->
getUsedNamespaces
());
NamespaceDef
*
und
;
for
(
unli
.
toFirst
();(
und
=
unli
.
current
());
++
unli
)
{
//printf("Adding namespace %s to the using list of %s\n",und->qualifiedName().data(),qualifiedName().data());
addUsingDirective
(
und
);
}
}
// add used classes of namespace nd to this namespace
if
(
nd
->
getUsedClasses
())
{
ClassSDict
::
Iterator
cli
(
*
nd
->
getUsedClasses
());
ClassDef
*
ucd
;
for
(
cli
.
toFirst
();(
ucd
=
cli
.
current
());
++
cli
)
{
//printf("Adding class %s to the using list of %s\n",cd->qualifiedName().data(),qualifiedName().data());
addUsingDeclaration
(
ucd
);
}
}
}
}
}
src/namespacedef.h
View file @
77a2ce8e
...
@@ -54,9 +54,10 @@ class NamespaceDef : public Definition
...
@@ -54,9 +54,10 @@ class NamespaceDef : public Definition
void
computeAnchors
();
void
computeAnchors
();
int
countMembers
();
int
countMembers
();
void
addUsingDirective
(
NamespaceDef
*
nd
);
void
addUsingDirective
(
NamespaceDef
*
nd
);
Namespace
Lis
t
*
getUsedNamespaces
()
const
{
return
usingDirList
;
}
Namespace
SDic
t
*
getUsedNamespaces
()
const
{
return
usingDirList
;
}
void
addUsingDeclaration
(
ClassDef
*
cd
);
void
addUsingDeclaration
(
ClassDef
*
cd
);
ClassList
*
getUsedClasses
()
const
{
return
usingDeclList
;
}
ClassSDict
*
getUsedClasses
()
const
{
return
usingDeclList
;
}
void
combineUsingRelations
();
QCString
displayName
()
const
;
QCString
displayName
()
const
;
bool
isLinkableInProject
()
const
bool
isLinkableInProject
()
const
...
@@ -108,14 +109,16 @@ class NamespaceDef : public Definition
...
@@ -108,14 +109,16 @@ class NamespaceDef : public Definition
/*! Namespaces inside this namespace */
/*! Namespaces inside this namespace */
NamespaceSDict
*
namespaceSDict
;
NamespaceSDict
*
namespaceSDict
;
bool
visited
;
private
:
private
:
//QCString reference;
//QCString reference;
QCString
fileName
;
QCString
fileName
;
QStrList
files
;
QStrList
files
;
Namespace
Lis
t
*
usingDirList
;
Namespace
SDic
t
*
usingDirList
;
Class
Lis
t
*
usingDeclList
;
Class
SDic
t
*
usingDeclList
;
SDict
<
Definition
>
*
m_innerCompounds
;
SDict
<
Definition
>
*
m_innerCompounds
;
MemberList
allMemberList
;
MemberList
allMemberList
;
...
...
src/pre.l
View file @
77a2ce8e
...
@@ -22,7 +22,6 @@
...
@@ -22,7 +22,6 @@
*/
*/
#include <stdio.h>
#include <stdio.h>
//#include <iostream.h>
#include <assert.h>
#include <assert.h>
#include <ctype.h>
#include <ctype.h>
...
...
src/scanner.l
View file @
77a2ce8e
...
@@ -58,6 +58,7 @@ static int lastContext;
...
@@ -58,6 +58,7 @@ static int lastContext;
static int lastCContext;
static int lastCContext;
static int lastDocContext;
static int lastDocContext;
static int lastDocRelContext;
static int lastDocRelContext;
static int lastDocRelAlsoContext;
static int lastCPPContext;
static int lastCPPContext;
static int lastSkipSharpContext;
static int lastSkipSharpContext;
static int lastSkipRoundContext;
static int lastSkipRoundContext;
...
@@ -428,7 +429,8 @@ static QCString extractName(const QCString &s)
...
@@ -428,7 +429,8 @@ static QCString extractName(const QCString &s)
static void setContext()
static void setContext()
{
{
QCString fileName = yyFileName;
QCString fileName = yyFileName;
insideIDL = fileName.right(4)==".idl" || fileName.right(4)==".odl";
insideIDL = fileName.right(4)==".idl" || fileName.right(5)==".pidl" ||
fileName.right(4)==".odl";
insideJava = fileName.right(5)==".java";
insideJava = fileName.right(5)==".java";
insideCS = fileName.right(3)==".cs";
insideCS = fileName.right(3)==".cs";
insidePHP = fileName.right(4)==".php" || fileName.right(5)==".php4" ||
insidePHP = fileName.right(4)==".php" || fileName.right(5)==".php4" ||
...
@@ -587,6 +589,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -587,6 +589,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
%x ClassDocFuncExc
%x ClassDocFuncExc
%x ClassDocDefine
%x ClassDocDefine
%x ClassDocRelates
%x ClassDocRelates
%x ClassDocRelatesAlso
%x ClassDocBrief
%x ClassDocBrief
%x ClassDocOverload
%x ClassDocOverload
%x ClassDefineArgs
%x ClassDefineArgs
...
@@ -1320,6 +1323,35 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -1320,6 +1323,35 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->name = yytext;
current->name = yytext;
else
else
current->name += yytext;
current->name += yytext;
if (current->name.left(7)=="static ")
{
current->stat = TRUE;
current->name= current->name.mid(7);
}
else if (current->name.left(7)=="inline ")
{
if (current->type.isEmpty())
{
current->type="inline";
}
else
{
current->type+="inline ";
}
current->name= current->name.mid(7);
}
else if (current->name.left(6)=="const ")
{
if (current->type.isEmpty())
{
current->type="const";
}
else
{
current->type+="const ";
}
current->name=current->name.mid(6);
}
}
}
QCString tmp=yytext;
QCString tmp=yytext;
if (nameIsOperator(tmp))
if (nameIsOperator(tmp))
...
@@ -3617,6 +3649,19 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -3617,6 +3649,19 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
}
BEGIN( lastDocRelContext );
BEGIN( lastDocRelContext );
}
}
<ClassDoc,Doc,JavaDoc>{B}*{CMD}"relate"[sd]"also"{B}* {
lastDocRelAlsoContext = YY_START;
BEGIN( ClassDocRelatesAlso );
}
<ClassDocRelatesAlso>({ID}"::")*{ID} {
current->relatesDup = TRUE;
current->relates = yytext;
if (current->mGrpId!=NOGROUP)
{
memberGroupRelates = yytext;
}
BEGIN( lastDocRelAlsoContext );
}
<NameSpaceDocArg1>{SCOPENAME} {
<NameSpaceDocArg1>{SCOPENAME} {
current->name = yytext;
current->name = yytext;
newDocState();
newDocState();
...
...
src/searchindex.cpp
View file @
77a2ce8e
...
@@ -19,116 +19,6 @@
...
@@ -19,116 +19,6 @@
#include "searchindex.h"
#include "searchindex.h"
#include <qfile.h>
#include <qfile.h>
#if 0
#include "suffixtree.h"
SearchIndex::SearchIndex() : refDict(10007), nameIndex(10007)
{
indexCount=1;
//indexTree = new IndexTree;
suffixTree = new SuffixTree;
}
SearchIndex::~SearchIndex()
{
//delete indexTree;
delete suffixTree;
}
void SearchIndex::addReference(const char *key,const char *ref)
{
DocRef *dr=new DocRef(indexCount,key,ref);
nameIndex.insert(indexCount,dr);
refList.append(dr);
refDict.insert(key,dr);
indexCount++;
}
bool SearchIndex::addWord(const char *key,const char *word,bool special)
{
DocRef *dr=0;
if (word && key && strlen(key)>0 && (dr=refDict[key]))
{
suffixTree->insertWord(((QCString)word).lower(),dr->index(),special);
return TRUE;
}
else if (word)
{
printf("SearchIndex::addWord() key `%s' not found!\n",key);
return FALSE;
}
else
{
printf("SearchIndex::addWord() trying to insert word with length 0\n");
return FALSE;
}
}
bool SearchIndex::saveIndex(const char *fileName)
{
QFile f(fileName);
if (!f.open(IO_WriteOnly)) return FALSE;
// write header
if (f.writeBlock("DOXI",4)!=4) return FALSE; // write header
// compute forward offsets for all children of each node.
suffixTree->resolveForwardReferences();
// compute offset to the reference index table
int offset=suffixTree->size()+9;
// write the offset
if (writeNumber(f,offset)) return FALSE;
// write the suffix tree
if (!suffixTree->write(f)) return FALSE;
f.putch(0);
// write the index reference table
DocRef *dr=refList.first();
offset+=refList.count()*4;
while (dr)
{
writeNumber(f,offset);
offset+=strlen(dr->name())+strlen(dr->url())+2;
dr=refList.next();
}
// write the references
dr=refList.first();
while (dr)
{
writeString(f,dr->name());
writeString(f,dr->url());
dr=refList.next();
}
//printf("Building index tree\n");
printf("Size of the suffix tree is %d bytes\n",suffixTree->size());
printf("Number of tree nodes is %d\n",suffixTree->numberOfNodes());
printf("Number of links %d\n",indexCount);
//suffixTree->buildIndex();
//printf("Computing reference offsets\n");
//int offset=suffixTree->size()+8;
//indexTree->setOffsets(&nameIndex);
//printf("Saving suffix tree\n");
//printf("Saving index tree\n");
//result&=indexTree->write(f);
//printf("Saving reference list\n");
//dr=refList.first();
//while (dr)
//{
// result&=!writeString(f,dr->name());
// result&=!writeString(f,dr->url());
// dr=refList.next();
//}
//suffixTree->dump();
return TRUE;
}
#endif
// file format:
// file format:
// 4 byte header
// 4 byte header
...
...
src/sortdict.h
View file @
77a2ce8e
...
@@ -109,13 +109,15 @@ class SDict
...
@@ -109,13 +109,15 @@ class SDict
m_dict
=
new
QDict
<
T
>
(
size
);
m_dict
=
new
QDict
<
T
>
(
size
);
#endif
#endif
}
}
/*! Destroys the dictionary */
/*! Destroys the dictionary */
virtual
~
SDict
()
virtual
~
SDict
()
{
{
delete
m_list
;
delete
m_list
;
delete
m_dict
;
delete
m_dict
;
}
}
/*! Appends a compound to the dictionary. The element is owned by the
/*! Appends an element to the dictionary. The element is owned by the
* dictionary.
* dictionary.
* \param key The unique key to use to quicky find the item later on.
* \param key The unique key to use to quicky find the item later on.
* \param d The compound to add.
* \param d The compound to add.
...
@@ -132,12 +134,32 @@ class SDict
...
@@ -132,12 +134,32 @@ class SDict
}
}
#endif
#endif
}
}
/*! Prepends an element to the dictionary. The element is owned by the
* dictionary.
* \param key The unique key to use to quicky find the item later on.
* \param d The compound to add.
* \sa find()
*/
void
prepend
(
const
char
*
key
,
const
T
*
d
)
{
m_list
->
prepend
(
d
);
m_dict
->
insert
(
key
,
d
);
#if AUTORESIZE
if
(
m_dict
->
size
()
>
SDict_primes
[
m_sizeIndex
])
{
m_dict
->
resize
(
SDict_primes
[
++
m_sizeIndex
]);
}
#endif
}
/*! Remove an item from the dictionary */
/*! Remove an item from the dictionary */
bool
remove
(
const
char
*
key
)
bool
remove
(
const
char
*
key
)
{
{
T
*
item
=
m_dict
->
take
(
key
);
T
*
item
=
m_dict
->
take
(
key
);
return
item
?
m_list
->
remove
(
item
)
:
FALSE
;
return
item
?
m_list
->
remove
(
item
)
:
FALSE
;
}
}
/*! Sorts the members of the dictionary. First appending a number
/*! Sorts the members of the dictionary. First appending a number
* of members and then sorting them is faster (O(NlogN) than using
* of members and then sorting them is faster (O(NlogN) than using
* inSort() for each member (O(N^2)).
* inSort() for each member (O(N^2)).
...
@@ -162,11 +184,13 @@ class SDict
...
@@ -162,11 +184,13 @@ class SDict
}
}
#endif
#endif
}
}
/*! Indicates whether or not the dictionary owns its elements */
/*! Indicates whether or not the dictionary owns its elements */
void
setAutoDelete
(
bool
val
)
void
setAutoDelete
(
bool
val
)
{
{
m_list
->
setAutoDelete
(
val
);
m_list
->
setAutoDelete
(
val
);
}
}
/*! Looks up a compound given its key.
/*! Looks up a compound given its key.
* \param key The key to identify this element.
* \param key The key to identify this element.
* \return The requested compound or zero if it cannot be found.
* \return The requested compound or zero if it cannot be found.
...
@@ -188,6 +212,7 @@ class SDict
...
@@ -188,6 +212,7 @@ class SDict
{
{
return
m_list
->
at
(
i
);
return
m_list
->
at
(
i
);
}
}
/*! Function that is used to compare two items when sorting.
/*! Function that is used to compare two items when sorting.
* Overload this to properly sort items.
* Overload this to properly sort items.
* \sa inSort()
* \sa inSort()
...
@@ -196,6 +221,7 @@ class SDict
...
@@ -196,6 +221,7 @@ class SDict
{
{
return
item1
!=
item2
;
return
item1
!=
item2
;
}
}
/*! Clears the dictionary. Will delete items if setAutoDelete() was
/*! Clears the dictionary. Will delete items if setAutoDelete() was
* set to \c TRUE.
* set to \c TRUE.
* \sa setAutoDelete
* \sa setAutoDelete
...
@@ -205,6 +231,7 @@ class SDict
...
@@ -205,6 +231,7 @@ class SDict
m_list
->
clear
();
m_list
->
clear
();
m_dict
->
clear
();
m_dict
->
clear
();
}
}
/*! Returns the number of items stored in the dictionary
/*! Returns the number of items stored in the dictionary
*/
*/
int
count
()
int
count
()
...
@@ -225,11 +252,13 @@ class SDict
...
@@ -225,11 +252,13 @@ class SDict
{
{
m_li
=
new
QListIterator
<
T
>
(
*
dict
.
m_list
);
m_li
=
new
QListIterator
<
T
>
(
*
dict
.
m_list
);
}
}
/*! Destroys the dictionary */
/*! Destroys the dictionary */
virtual
~
Iterator
()
virtual
~
Iterator
()
{
{
delete
m_li
;
delete
m_li
;
}
}
/*! Set the iterator to the first element in the list.
/*! Set the iterator to the first element in the list.
* \return The first compound, or zero if the list was empty.
* \return The first compound, or zero if the list was empty.
*/
*/
...
@@ -237,6 +266,7 @@ class SDict
...
@@ -237,6 +266,7 @@ class SDict
{
{
return
m_li
->
toFirst
();
return
m_li
->
toFirst
();
}
}
/*! Set the iterator to the last element in the list.
/*! Set the iterator to the last element in the list.
* \return The first compound, or zero if the list was empty.
* \return The first compound, or zero if the list was empty.
*/
*/
...
@@ -244,11 +274,13 @@ class SDict
...
@@ -244,11 +274,13 @@ class SDict
{
{
return
m_li
->
toLast
();
return
m_li
->
toLast
();
}
}
/*! Returns the current compound */
/*! Returns the current compound */
T
*
current
()
const
T
*
current
()
const
{
{
return
m_li
->
current
();
return
m_li
->
current
();
}
}
/*! Moves the iterator to the next element.
/*! Moves the iterator to the next element.
* \return the new "current" element, or zero if the iterator was
* \return the new "current" element, or zero if the iterator was
* already pointing at the last element.
* already pointing at the last element.
...
@@ -257,6 +289,7 @@ class SDict
...
@@ -257,6 +289,7 @@ class SDict
{
{
return
m_li
->
operator
++
();
return
m_li
->
operator
++
();
}
}
/*! Moves the iterator to the previous element.
/*! Moves the iterator to the previous element.
* \return the new "current" element, or zero if the iterator was
* \return the new "current" element, or zero if the iterator was
* already pointing at the first element.
* already pointing at the first element.
...
@@ -315,12 +348,14 @@ class SIntDict
...
@@ -315,12 +348,14 @@ class SIntDict
m_dict
=
new
QIntDict
<
T
>
(
size
);
m_dict
=
new
QIntDict
<
T
>
(
size
);
#endif
#endif
}
}
/*! Destroys the dictionary */
/*! Destroys the dictionary */
virtual
~
SIntDict
()
virtual
~
SIntDict
()
{
{
delete
m_list
;
delete
m_list
;
delete
m_dict
;
delete
m_dict
;
}
}
/*! Appends a compound to the dictionary. The element is owned by the
/*! Appends a compound to the dictionary. The element is owned by the
* dictionary.
* dictionary.
* \param key The unique key to use to quicky find the item later on.
* \param key The unique key to use to quicky find the item later on.
...
@@ -338,12 +373,32 @@ class SIntDict
...
@@ -338,12 +373,32 @@ class SIntDict
}
}
#endif
#endif
}
}
/*! Prepend a compound to the dictionary. The element is owned by the
* dictionary.
* \param key The unique key to use to quicky find the item later on.
* \param d The compound to add.
* \sa find()
*/
void
prepend
(
int
key
,
const
T
*
d
)
{
m_list
->
prepend
(
d
);
m_dict
->
insert
(
key
,
d
);
#if AUTORESIZE
if
(
m_dict
->
size
()
>
SDict_primes
[
m_sizeIndex
])
{
m_dict
->
resize
(
SDict_primes
[
++
m_sizeIndex
]);
}
#endif
}
/*! Remove an item from the dictionary */
/*! Remove an item from the dictionary */
bool
remove
(
int
key
)
bool
remove
(
int
key
)
{
{
T
*
item
=
m_dict
->
take
(
key
);
T
*
item
=
m_dict
->
take
(
key
);
return
item
?
m_list
->
remove
(
item
)
:
FALSE
;
return
item
?
m_list
->
remove
(
item
)
:
FALSE
;
}
}
/*! Sorts the members of the dictionary. First appending a number
/*! Sorts the members of the dictionary. First appending a number
* of members and then sorting them is faster (O(NlogN) than using
* of members and then sorting them is faster (O(NlogN) than using
* inSort() for each member (O(N^2)).
* inSort() for each member (O(N^2)).
...
@@ -352,6 +407,7 @@ class SIntDict
...
@@ -352,6 +407,7 @@ class SIntDict
{
{
m_list
->
sort
();
m_list
->
sort
();
}
}
/*! Inserts a compound into the dictionary in a sorted way.
/*! Inserts a compound into the dictionary in a sorted way.
* \param key The unique key to use to quicky find the item later on.
* \param key The unique key to use to quicky find the item later on.
* \param d The compound to add.
* \param d The compound to add.
...
@@ -368,11 +424,13 @@ class SIntDict
...
@@ -368,11 +424,13 @@ class SIntDict
}
}
#endif
#endif
}
}
/*! Indicates whether or not the dictionary owns its elements */
/*! Indicates whether or not the dictionary owns its elements */
void
setAutoDelete
(
bool
val
)
void
setAutoDelete
(
bool
val
)
{
{
m_list
->
setAutoDelete
(
val
);
m_list
->
setAutoDelete
(
val
);
}
}
/*! Looks up a compound given its key.
/*! Looks up a compound given its key.
* \param key The key to identify this element.
* \param key The key to identify this element.
* \return The requested compound or zero if it cannot be found.
* \return The requested compound or zero if it cannot be found.
...
@@ -394,6 +452,7 @@ class SIntDict
...
@@ -394,6 +452,7 @@ class SIntDict
{
{
return
m_list
->
at
(
i
);
return
m_list
->
at
(
i
);
}
}
/*! Function that is used to compare two items when sorting.
/*! Function that is used to compare two items when sorting.
* Overload this to properly sort items.
* Overload this to properly sort items.
* \sa inSort()
* \sa inSort()
...
@@ -402,6 +461,7 @@ class SIntDict
...
@@ -402,6 +461,7 @@ class SIntDict
{
{
return
item1
!=
item2
;
return
item1
!=
item2
;
}
}
/*! Clears the dictionary. Will delete items if setAutoDelete() was
/*! Clears the dictionary. Will delete items if setAutoDelete() was
* set to \c TRUE.
* set to \c TRUE.
* \sa setAutoDelete
* \sa setAutoDelete
...
@@ -411,6 +471,7 @@ class SIntDict
...
@@ -411,6 +471,7 @@ class SIntDict
m_list
->
clear
();
m_list
->
clear
();
m_dict
->
clear
();
m_dict
->
clear
();
}
}
/*! Returns the number of items stored in the dictionary
/*! Returns the number of items stored in the dictionary
*/
*/
int
count
()
int
count
()
...
@@ -431,11 +492,13 @@ class SIntDict
...
@@ -431,11 +492,13 @@ class SIntDict
{
{
m_li
=
new
QListIterator
<
T
>
(
*
dict
.
m_list
);
m_li
=
new
QListIterator
<
T
>
(
*
dict
.
m_list
);
}
}
/*! Destroys the dictionary */
/*! Destroys the dictionary */
virtual
~
Iterator
()
virtual
~
Iterator
()
{
{
delete
m_li
;
delete
m_li
;
}
}
/*! Set the iterator to the first element in the list.
/*! Set the iterator to the first element in the list.
* \return The first compound, or zero if the list was empty.
* \return The first compound, or zero if the list was empty.
*/
*/
...
@@ -443,6 +506,7 @@ class SIntDict
...
@@ -443,6 +506,7 @@ class SIntDict
{
{
return
m_li
->
toFirst
();
return
m_li
->
toFirst
();
}
}
/*! Set the iterator to the last element in the list.
/*! Set the iterator to the last element in the list.
* \return The first compound, or zero if the list was empty.
* \return The first compound, or zero if the list was empty.
*/
*/
...
@@ -450,11 +514,13 @@ class SIntDict
...
@@ -450,11 +514,13 @@ class SIntDict
{
{
return
m_li
->
toLast
();
return
m_li
->
toLast
();
}
}
/*! Returns the current compound */
/*! Returns the current compound */
T
*
current
()
const
T
*
current
()
const
{
{
return
m_li
->
current
();
return
m_li
->
current
();
}
}
/*! Moves the iterator to the next element.
/*! Moves the iterator to the next element.
* \return the new "current" element, or zero if the iterator was
* \return the new "current" element, or zero if the iterator was
* already pointing at the last element.
* already pointing at the last element.
...
@@ -463,6 +529,7 @@ class SIntDict
...
@@ -463,6 +529,7 @@ class SIntDict
{
{
return
m_li
->
operator
++
();
return
m_li
->
operator
++
();
}
}
/*! Moves the iterator to the previous element.
/*! Moves the iterator to the previous element.
* \return the new "current" element, or zero if the iterator was
* \return the new "current" element, or zero if the iterator was
* already pointing at the first element.
* already pointing at the first element.
...
...
src/translator_cz.h
View file @
77a2ce8e
...
@@ -116,28 +116,16 @@
...
@@ -116,28 +116,16 @@
// - The trReimplementedInList() updated to fit the context better.
// - The trReimplementedInList() updated to fit the context better.
// - The trReimplementedFromList() updated to fit the context better.
// - The trReimplementedFromList() updated to fit the context better.
//
//
// 2001/07/16
// 2001/07/16 - trClassDocumentation() updated as in the English translator.
// - trClassDocumentation() updated as in the English translator.
// 2001/11/06 - trReferences() implemented.
//
// 2002/01/23 - Two new methods "since 1.2.13" implemented.
// 2001/11/06
// 2002/03/05 - ... forgot to replace TranslatorAdapter... by Translator.
// - trReferences() implemented.
// 2002/07/08 (my birthday! ;) - The new trRTFTableOfContents() implemented.
//
// 2002/07/29 - The new trDeprecatedList() implemented.
// 2002/01/23
// - trImplementedFromList() and trImplementedInList() implemented
// (new since 1.2.13)
//
// 2002/03/05
// - ... forgot to replace TranslatorAdapter... base class by Translator.
//
// 2002/07/08 (my birthday! ;)
// - The new trRTFTableOfContents() implemented.
//
// 2002/07/29
// - The new trDeprecatedList() implemented.
//
// 2002/10/15 - The new trEvents() and trEventDocumentation() implemented.
// 2002/10/15 - The new trEvents() and trEventDocumentation() implemented.
// 2003/04/28 - Five new methods "since 1.3" implemented.
// 2003/04/28 - Five new methods "since 1.3" implemented.
// 2003/06/10 - Two new methods "since 1.3.1" implemented.
// 2003/06/10 - Two new methods "since 1.3.1" implemented.
// 2003/08/13 - Four new "since 1.3.3" implemented.
// Todo
// Todo
// ----
// ----
...
@@ -157,7 +145,7 @@
...
@@ -157,7 +145,7 @@
// Windows version. The version which does not call the function is
// Windows version. The version which does not call the function is
// probably slightly faster.
// probably slightly faster.
class
TranslatorCzech
:
public
Translator
Adapter_1_3_3
class
TranslatorCzech
:
public
Translator
{
{
private
:
private
:
/*! The decode() inline assumes the source written in the
/*! The decode() inline assumes the source written in the
...
@@ -1608,6 +1596,56 @@ class TranslatorCzech : public TranslatorAdapter_1_3_3
...
@@ -1608,6 +1596,56 @@ class TranslatorCzech : public TranslatorAdapter_1_3_3
return
decode
(
"Graf volání této funkce:"
);
return
decode
(
"Graf volání této funkce:"
);
}
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.3
//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the index
* of each page before the search field.
*/
virtual
QCString
trSearchForIndex
()
{
return
decode
(
"Vyhledat"
);
}
/*! This string is used as the title for the page listing the search
* results.
*/
virtual
QCString
trSearchResultsTitle
()
{
return
decode
(
"Výsledky vyhledávání"
);
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
* Inside the text you can put the special marker $num to insert
* the number representing the actual number of search results.
* The @a numDocuments parameter can be either 0, 1 or 2, where the
* value 2 represents 2 or more matches. HTML markup is allowed inside
* the returned string.
*/
virtual
QCString
trSearchResults
(
int
numDocuments
)
{
if
(
numDocuments
==
0
)
{
return
decode
(
"Lituji. Vašemu dotazu neodpovídá žádný dokument."
);
}
else
if
(
numDocuments
==
1
)
{
return
decode
(
"Nalezen jediný dokument, který vyhovuje vašemu dotazu."
);
}
else
{
return
decode
(
"Nalezeno <b>$num</b> dokumentù, které vyhovují vašemu "
"dotazu. Nejlépe odpovídající dokumenty jsou zobrazeny "
"jako první."
);
}
}
/*! This string is put before the list of matched words, for each search
* result. What follows is the list of words that matched the query.
*/
virtual
QCString
trSearchMatches
()
{
return
decode
(
"Nalezená slova:"
);
}
};
};
#endif // TRANSLATOR_CZ_H
#endif // TRANSLATOR_CZ_H
src/translator_en.h
View file @
77a2ce8e
...
@@ -1493,8 +1493,9 @@ class TranslatorEnglish : public Translator
...
@@ -1493,8 +1493,9 @@ class TranslatorEnglish : public Translator
// new since 1.3.3
// new since 1.3.3
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the index
/*! When the search engine is enabled this text is put in the header
* of each page before the search field.
* of each page before the field where one can enter the text to search
* for.
*/
*/
virtual
QCString
trSearchForIndex
()
virtual
QCString
trSearchForIndex
()
{
{
...
...
src/translator_es.h
View file @
77a2ce8e
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
#ifndef TRANSLATOR_ES_H
#ifndef TRANSLATOR_ES_H
#define TRANSLATOR_ES_H
#define TRANSLATOR_ES_H
class
TranslatorSpanish
:
public
TranslatorAdapter_1_
2_7
class
TranslatorSpanish
:
public
TranslatorAdapter_1_
3_3
{
{
public
:
public
:
virtual
QCString
idLanguage
()
virtual
QCString
idLanguage
()
...
@@ -355,9 +355,14 @@ class TranslatorSpanish : public TranslatorAdapter_1_2_7
...
@@ -355,9 +355,14 @@ class TranslatorSpanish : public TranslatorAdapter_1_2_7
virtual
QCString
trEnumerationValues
()
virtual
QCString
trEnumerationValues
()
{
return
"Valores de la enumeración"
;
}
{
return
"Valores de la enumeración"
;
}
/*! This is used in man pages as the author section. */
/*! This text is generated when the \\author command is used and
virtual
QCString
trAuthor
()
* for the author section in man pages. */
{
return
"Autor"
;
}
virtual
QCString
trAuthor
(
bool
first_capital
,
bool
singular
)
{
QCString
result
((
first_capital
?
"Author"
:
"author"
));
if
(
!
singular
)
result
+=
"s"
;
return
result
;
}
/*! This is used in the documentation of a file before the list of
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
* documentation blocks for defines
...
@@ -1222,6 +1227,121 @@ class TranslatorSpanish : public TranslatorAdapter_1_2_7
...
@@ -1222,6 +1227,121 @@ class TranslatorSpanish : public TranslatorAdapter_1_2_7
return
result
;
return
result
;
}
}
/*! This text is put before the list of members referenced by a member
*/
virtual
QCString
trReferences
()
{
return
"Hace referencia a"
;
}
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
virtual
QCString
trImplementedFromList
(
int
numEntries
)
{
return
"Implementa "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
* all members that implement this abstract member.
*/
virtual
QCString
trImplementedInList
(
int
numEntries
)
{
return
"Implementado en "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in RTF documentation as a heading for the Table
* of Contents.
*/
virtual
QCString
trRTFTableOfContents
()
{
return
"Tabla de Contenidos"
;
}
/*! Used as the header of the list of item that have been
* flagged deprecated
*/
virtual
QCString
trDeprecatedList
()
{
return
"Lista de Desaprobados"
;
}
/*! Used as a header for declaration section of the events found in
* a C# program
*/
virtual
QCString
trEvents
()
{
return
"Eventos"
;
}
/*! Header used for the documentation section of a class' events. */
virtual
QCString
trEventDocumentation
()
{
return
"Documentación de los Eventos"
;
}
/*! Used as a heading for a list of Java class types with package scope.
*/
virtual
QCString
trPackageTypes
()
{
return
"Tipos del Paquete"
;
}
/*! Used as a heading for a list of Java class functions with package
* scope.
*/
virtual
QCString
trPackageMembers
()
{
return
"Funciones del Paquete"
;
}
/*! Used as a heading for a list of static Java class functions with
* package scope.
*/
virtual
QCString
trStaticPackageMembers
()
{
return
"Funciones Estáticas del Paquete"
;
}
/*! Used as a heading for a list of Java class variables with package
* scope.
*/
virtual
QCString
trPackageAttribs
()
{
return
"Atributos del Paquete"
;
}
/*! Used as a heading for a list of static Java class variables with
* package scope.
*/
virtual
QCString
trStaticPackageAttribs
()
{
return
"Atributos Estáticos del Paquete"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.1
//////////////////////////////////////////////////////////////////////////
/*! Used in the quick index of a class/file/namespace member list page
* to link to the unfiltered list of all members.
*/
virtual
QCString
trAll
()
{
return
"Todo"
;
}
/*! Put in front of the call graph for a function. */
virtual
QCString
trCallGraph
()
{
return
"Gráfico de llamadas para esta función:"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.3
//////////////////////////////////////////////////////////////////////////
};
};
...
...
src/util.cpp
View file @
77a2ce8e
This diff is collapsed.
Click to expand it.
src/util.h
View file @
77a2ce8e
...
@@ -40,7 +40,7 @@ class ExampleSDict;
...
@@ -40,7 +40,7 @@ class ExampleSDict;
class
ClassSDict
;
class
ClassSDict
;
class
BaseClassList
;
class
BaseClassList
;
class
GroupDef
;
class
GroupDef
;
class
Namespace
Lis
t
;
class
Namespace
SDic
t
;
class
ClassList
;
class
ClassList
;
class
MemberGroupSDict
;
class
MemberGroupSDict
;
class
Definition
;
class
Definition
;
...
@@ -121,14 +121,15 @@ void writePageRef(OutputDocInterface &od,const char *cn,const char *mn);
...
@@ -121,14 +121,15 @@ void writePageRef(OutputDocInterface &od,const char *cn,const char *mn);
bool
matchArguments
(
ArgumentList
*
,
ArgumentList
*
,
bool
matchArguments
(
ArgumentList
*
,
ArgumentList
*
,
const
char
*
cl
=
0
,
const
char
*
ns
=
0
,
bool
checkCV
=
TRUE
,
const
char
*
cl
=
0
,
const
char
*
ns
=
0
,
bool
checkCV
=
TRUE
,
Namespace
Lis
t
*
usingNamespaces
=
0
,
Namespace
SDic
t
*
usingNamespaces
=
0
,
Class
Lis
t
*
usingClasses
=
0
);
Class
SDic
t
*
usingClasses
=
0
);
void
mergeArguments
(
ArgumentList
*
,
ArgumentList
*
,
bool
forceNameOverwrite
=
FALSE
);
void
mergeArguments
(
ArgumentList
*
,
ArgumentList
*
,
bool
forceNameOverwrite
=
FALSE
);
QCString
substituteClassNames
(
const
QCString
&
s
);
QCString
substituteClassNames
(
const
QCString
&
s
);
QCString
substitute
(
const
char
*
s
,
const
char
*
src
,
const
char
*
dst
);
QCString
substitute
(
const
char
*
s
,
const
char
*
src
,
const
char
*
dst
);
QCString
resolveDefines
(
const
char
*
n
);
QCString
resolveDefines
(
const
char
*
n
);
ClassDef
*
getClass
(
const
char
*
key
);
ClassDef
*
getClass
(
const
char
*
key
);
ClassDef
*
getResolvedClass
(
Definition
*
scope
,
ClassDef
*
getResolvedClass
(
Definition
*
scope
,
FileDef
*
fileScope
,
const
char
*
key
,
const
char
*
key
,
bool
*
pIsTypeDef
=
0
,
bool
*
pIsTypeDef
=
0
,
QCString
*
pTemplSpec
=
0
);
QCString
*
pTemplSpec
=
0
);
...
@@ -201,6 +202,9 @@ QCString rtfFormatBmkStr(const char *name);
...
@@ -201,6 +202,9 @@ QCString rtfFormatBmkStr(const char *name);
QCString
linkToText
(
const
char
*
link
,
bool
isFileName
);
QCString
linkToText
(
const
char
*
link
,
bool
isFileName
);
QCString
stripExtension
(
const
char
*
fName
);
QCString
stripExtension
(
const
char
*
fName
);
void
replaceNamespaceAliases
(
QCString
&
scope
,
int
i
);
void
replaceNamespaceAliases
(
QCString
&
scope
,
int
i
);
int
isAccessibleFrom
(
Definition
*
scope
,
FileDef
*
fileScope
,
Definition
*
item
);
int
isAccessibleFrom
(
Definition
*
scope
,
FileDef
*
fileScope
,
Definition
*
item
,
const
QCString
&
explicitScopePart
);
#endif
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment