Commit f781e6db authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3-rc2-20030106

parent dfa656f3
......@@ -65,13 +65,13 @@ EXCLUDE = src/code.cpp \
src/pre.cpp \
src/scanner.cpp \
src/tag.cpp \
src/doc.cpp \
src/doctokenizer.cpp \
src/logos.cpp \
src/doxysearch.cpp \
src/suffixtree.cpp \
src/suffixtree.h \
src/searchindex.cpp \
src/searchindex.h
src/searchindex.h \
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
......
DOXYGEN Version 1.3-rc2-20021224
DOXYGEN Version 1.3-rc2-20030106
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (24 December 2002)
Dimitri van Heesch (06 January 2003)
DOXYGEN Version 1.3_rc2_20021224
DOXYGEN Version 1.3_rc2_20030106
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (24 December 2002)
Dimitri van Heesch (dimitri@stack.nl) (06 January 2003)
1.3-rc2-20021224
1.3-rc2-20030106
......@@ -874,6 +874,8 @@ class IClass : public ICompound
// TODO:
// class:
// listOfAllMembers()
// protection()
// isAbstract()
};
/*! \brief The interface to a struct in the object model.
......
......@@ -874,6 +874,8 @@ class IClass : public ICompound
// TODO:
// class:
// listOfAllMembers()
// protection()
// isAbstract()
};
/*! \brief The interface to a struct in the object model.
......
......@@ -1796,4 +1796,15 @@ browser generator. Do \e not use these commands in your own documentation.
<li>\\postheader
</ul>
For PHP files there are a number of additional commands, that can be
used inside classes to make members public, private, or protected even
though the language itself doesn't support this notion.
To mark a single item use one of \\private, \\protected, \\public.
For starting a section with a certain protection level use one of:
\\privatesection, \\protectedsection, \\publicsection.
The latter commands are similar to
"private:", "protected:", and "public:" in C++.
*/
......@@ -363,13 +363,6 @@ function's detailed documentation block.
to \c NO (the default) then the documentation will be excluded.
Set it to \c YES to include the internal documentation.
\anchor cfg_strip_code_comments
<dt>\c STRIP_CODE_COMMENTS <dd>
\addindex STRIP_CODE_COMMENTS
Setting the \c STRIP_CODE_COMMENTS tag to \c YES (the default) will instruct
doxygen to hide any special comment blocks from generated source code
fragments. Normal C and C++ comments will always remain visible.
\anchor cfg_case_sense_names
<dt>\c CASE_SENSE_NAMES <dd>
\addindex CASE_SENSE_NAMES
......@@ -730,6 +723,13 @@ function's detailed documentation block.
Setting the \c INLINE_SOURCES tag to \c YES will include the body
of functions, classes and enums directly into the documentation.
\anchor cfg_strip_code_comments
<dt>\c STRIP_CODE_COMMENTS <dd>
\addindex STRIP_CODE_COMMENTS
Setting the \c STRIP_CODE_COMMENTS tag to \c YES (the default) will instruct
doxygen to hide any special comment blocks from generated source code
fragments. Normal C and C++ comments will always remain visible.
\anchor cfg_referenced_by_relation
<dt>\c REFERENCED_BY_RELATION <dd>
\addindex REFERENCED_BY_RELATION
......
......@@ -103,7 +103,7 @@ doxytag -t example.tag example/html
\par Example 2:
To generate a tag file of the Qt documentation you can do the following:
\verbatim
doxytag -t qt.tag $QTDIR/html
doxytag -t qt.tag $QTDIR/doc/html
\endverbatim
A typical example to use doxytag to generate a search index is:
......
......@@ -35,6 +35,15 @@ reasons to not include all sources for these with every run of doxygen:
linked in externally. This saves a lot of memory.
<dt>Availability:<dd> For some projects that are documented with doxygen,
the sources may just not be available.
<dt>Copyright issues:<dd>If the external
package and its documentation are copyright someone else, it may be
better - or even necessary - to reference it rather than include a
copy of it with your project's documentation. When the author forbids
redistribution, this is necessary. If the author requires compliance
with some license condition as a precondition of redistribution, and
you do now want to be bound by those conditions, referring to their
copy of their documentation is preferable to including a copy.
</dl>
If any of the above apply, you can use doxygen's tag file mechanism.
......
......@@ -222,6 +222,42 @@ should send me a code fragment that triggers the message. The workaround
the problem put some line-breaks into your file, split it up into smaller
parts, or exclude it from the input using EXCLUDE.
<li><b>Why are dependencies via STL classes not shown in the dot graphs?</b>
Doxygen is unware of the STL classes, so it does not know that class A relates
to class B in the following example
\code
#include <vector>
using namespace std;
class B {};
class A
{
public:
vector<B> m_bvec;
};
\endcode
To overcome this problem you could provide the definition of the vector
class to doxygen (by including the file that defines it at the INPUT tag
in the config file). Since STL header files are often messy, a
(possibly) better approach is to include a dummy definition of a vector
class to the input. Here is an example of a dummy STL file for the vector
class:
\code
namespace std {
/*! STL vector class */
template<class T> class vector { public: T element; };
}
\endcode
I'm still looking for someone who can provide me with definitions
for all (relevant) STL classes.
<li><b>How did doxygen get its name?</b>
Doxygen got its name from playing with the words
......
%!PS-Adobe-2.0 EPSF-2.0
%%Title: infoflow.eps
%%Creator: fig2dev Version 3.2 Patchlevel 3c
%%CreationDate: Tue Dec 31 19:32:56 2002
%%For: dimitri@pandora.home.nl (Dimitri van Heesch)
%%BoundingBox: 0 0 673 585
%%Magnification: 1.0000
%%EndComments
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/col-1 {0 setgray} bind def
/col0 {0.000 0.000 0.000 srgb} bind def
/col1 {0.000 0.000 1.000 srgb} bind def
/col2 {0.000 1.000 0.000 srgb} bind def
/col3 {0.000 1.000 1.000 srgb} bind def
/col4 {1.000 0.000 0.000 srgb} bind def
/col5 {1.000 0.000 1.000 srgb} bind def
/col6 {1.000 1.000 0.000 srgb} bind def
/col7 {1.000 1.000 1.000 srgb} bind def
/col8 {0.000 0.000 0.560 srgb} bind def
/col9 {0.000 0.000 0.690 srgb} bind def
/col10 {0.000 0.000 0.820 srgb} bind def
/col11 {0.530 0.810 1.000 srgb} bind def
/col12 {0.000 0.560 0.000 srgb} bind def
/col13 {0.000 0.690 0.000 srgb} bind def
/col14 {0.000 0.820 0.000 srgb} bind def
/col15 {0.000 0.560 0.560 srgb} bind def
/col16 {0.000 0.690 0.690 srgb} bind def
/col17 {0.000 0.820 0.820 srgb} bind def
/col18 {0.560 0.000 0.000 srgb} bind def
/col19 {0.690 0.000 0.000 srgb} bind def
/col20 {0.820 0.000 0.000 srgb} bind def
/col21 {0.560 0.000 0.560 srgb} bind def
/col22 {0.690 0.000 0.690 srgb} bind def
/col23 {0.820 0.000 0.820 srgb} bind def
/col24 {0.500 0.190 0.000 srgb} bind def
/col25 {0.630 0.250 0.000 srgb} bind def
/col26 {0.750 0.380 0.000 srgb} bind def
/col27 {1.000 0.500 0.500 srgb} bind def
/col28 {1.000 0.630 0.630 srgb} bind def
/col29 {1.000 0.750 0.750 srgb} bind def
/col30 {1.000 0.880 0.880 srgb} bind def
/col31 {1.000 0.840 0.000 srgb} bind def
/col32 {0.878 0.878 0.878 srgb} bind def
/col33 {0.000 0.000 0.000 srgb} bind def
end
save
newpath 0 585 moveto 0 0 lineto 673 0 lineto 673 585 lineto closepath clip newpath
-39.0 602.0 translate
1 -1 scale
/cp {closepath} bind def
/ef {eofill} bind def
/gr {grestore} bind def
/gs {gsave} bind def
/sa {save} bind def
/rs {restore} bind def
/l {lineto} bind def
/m {moveto} bind def
/rm {rmoveto} bind def
/n {newpath} bind def
/s {stroke} bind def
/sh {show} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/slw {setlinewidth} bind def
/srgb {setrgbcolor} bind def
/rot {rotate} bind def
/sc {scale} bind def
/sd {setdash} bind def
/ff {findfont} bind def
/sf {setfont} bind def
/scf {scalefont} bind def
/sw {stringwidth} bind def
/tr {translate} bind def
/tnt {dup dup currentrgbcolor
4 -2 roll dup 1 exch sub 3 -1 roll mul add
4 -2 roll dup 1 exch sub 3 -1 roll mul add
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
bind def
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul srgb} bind def
/reencdict 12 dict def /ReEncode { reencdict begin
/newcodesandnames exch def /newfontname exch def /basefontname exch def
/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
basefontdict { exch dup /FID ne { dup /Encoding eq
{ exch dup length array copy newfont 3 1 roll put }
{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
newfont /FontName newfontname put newcodesandnames aload pop
128 1 255 { newfont /Encoding get exch /.notdef put } for
newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
newfontname newfont definefont pop end } def
/isovec [
8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
8#220 /dotlessi 8#230 /oe 8#231 /OE
8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
/Times-Roman /Times-Roman-iso isovec ReEncode
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def
$F2psBegin
%%Page: 1 1
10 setmiterlimit
0.06000 0.06000 sc
%
% Fig objects follow
%
% Polyline
7.500 slw
n 3600 1950 m 3900 1650 l 4800 1650 l 4800 3150 l 3600 3150 l 3600 1950 l
3900 1950 l
3900 1650 l gs col0 s gr
/Times-Roman-iso ff 180.00 scf sf
3900 2250 m
gs 1 -1 sc (Config file) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
3900 2550 m
gs 1 -1 sc (Doxyfile) col0 sh gr
% 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
1200 3675 l
1200 3375 l gs col0 s gr
% Polyline
n 975 3600 m 975 3300 l 2175 3300 l 2175 4800 l
2100 4800 l gs col0 s gr
% Polyline
n 1050 3300 m 1050 3225 l 2250 3225 l 2250 4725 l
2175 4725 l gs col0 s gr
% Polyline
n 1125 3225 m 1125 3150 l 2325 3150 l 2325 4650 l
2250 4650 l gs col0 s gr
% Polyline
n 900 5700 m 1200 5400 l 2100 5400 l 2100 6900 l 900 6900 l 900 5700 l
1200 5700 l
1200 5400 l gs col0 s gr
% Polyline
n 975 5625 m 975 5325 l 2175 5325 l 2175 6825 l
2100 6825 l gs col0 s gr
% Polyline
n 1050 5325 m 1050 5250 l 2250 5250 l 2250 6750 l
2175 6750 l gs col0 s gr
% Polyline
n 1125 5250 m 1125 5175 l 2325 5175 l 2325 6675 l
2250 6675 l gs col0 s gr
/Times-Roman-iso ff 180.00 scf sf
1275 6075 m
gs 1 -1 sc (- headers) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
1275 6675 m
gs 1 -1 sc (- images) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
1275 6375 m
gs 1 -1 sc (- footers) col0 sh gr
% Polyline
n 6675 8775 m 6975 8475 l 7875 8475 l 7875 9975 l 6675 9975 l 6675 8775 l
6975 8775 l
6975 8475 l gs col0 s gr
% Polyline
n 6750 8700 m 6750 8400 l 7950 8400 l 7950 9900 l
7875 9900 l gs col0 s gr
% Polyline
n 6825 8400 m 6825 8325 l 8025 8325 l 8025 9825 l
7950 9825 l gs col0 s gr
% Polyline
n 6900 8325 m 6900 8250 l 8100 8250 l 8100 9750 l
8025 9750 l gs col0 s gr
% Polyline
n 6600 4950 m 6900 4650 l 7800 4650 l 7800 6150 l 6600 6150 l 6600 4950 l
6900 4950 l
6900 4650 l gs col0 s gr
% Polyline
n 6675 4875 m 6675 4575 l 7875 4575 l 7875 6075 l
7800 6075 l gs col0 s gr
% Polyline
n 6750 4575 m 6750 4500 l 7950 4500 l 7950 6000 l
7875 6000 l gs col0 s gr
% Polyline
n 6825 4500 m 6825 4425 l 8025 4425 l 8025 5925 l
7950 5925 l gs col0 s gr
% Polyline
n 6600 2925 m 6900 2625 l 7800 2625 l 7800 4125 l 6600 4125 l 6600 2925 l
6900 2925 l
6900 2625 l gs col0 s gr
% Polyline
n 6675 2850 m 6675 2550 l 7875 2550 l 7875 4050 l
7800 4050 l gs col0 s gr
% Polyline
n 6750 2550 m 6750 2475 l 7950 2475 l 7950 3975 l
7875 3975 l gs col0 s gr
% Polyline
n 6825 2475 m 6825 2400 l 8025 2400 l 8025 3900 l
7950 3900 l gs col0 s gr
% Polyline
n 6600 900 m 6900 600 l 7800 600 l 7800 2100 l 6600 2100 l 6600 900 l
6900 900 l
6900 600 l gs col0 s gr
% Polyline
n 6675 825 m 6675 525 l 7875 525 l 7875 2025 l
7800 2025 l gs col0 s gr
% Polyline
n 6750 525 m 6750 450 l 7950 450 l 7950 1950 l
7875 1950 l gs col0 s gr
% Polyline
n 6825 450 m 6825 375 l 8025 375 l 8025 1875 l
7950 1875 l gs col0 s gr
% Polyline
gs clippath
4020 3765 m 4080 3765 l 4080 3614 l 4050 3734 l 4020 3614 l cp
eoclip
n 4050 3150 m
4050 3750 l gs col0 s gr gr
% arrowhead
n 4020 3614 m 4050 3734 l 4080 3614 l 4020 3614 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
3315 4155 m 3315 4095 l 3164 4095 l 3284 4125 l 3164 4155 l cp
eoclip
n 2100 4125 m
3300 4125 l gs col0 s gr gr
% arrowhead
n 3164 4155 m 3284 4125 l 3164 4095 l 3164 4155 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
3315 4380 m 3315 4320 l 3164 4320 l 3284 4350 l 3164 4380 l cp
eoclip
n 2100 6225 m 2700 6225 l 2700 4350 l
3300 4350 l gs col0 s gr gr
% arrowhead
n 3164 4380 m 3284 4350 l 3164 4320 l 3164 4380 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
4380 3135 m 4320 3135 l 4320 3286 l 4350 3166 l 4380 3286 l cp
eoclip
n 4350 3150 m
4350 3750 l gs col0 s gr gr
% arrowhead
n 4380 3286 m 4350 3166 l 4320 3286 l 4380 3286 l cp gs 0.00 setgray ef gr col0 s
% Polyline
n 3675 5925 m 3975 5625 l 4875 5625 l 4875 7125 l 3675 7125 l 3675 5925 l
3975 5925 l
3975 5625 l gs col0 s gr
% Polyline
n 3300 300 m 5100 300 l 5100 1050 l 3300 1050 l
cp gs col32 1.00 shd ef gr gs col0 s gr
% Polyline
gs clippath
4155 4635 m 4095 4635 l 4095 4786 l 4125 4666 l 4155 4786 l cp
eoclip
n 4125 5625 m
4125 4650 l gs col0 s gr gr
% arrowhead
n 4155 4786 m 4125 4666 l 4095 4786 l 4155 4786 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
4320 5640 m 4380 5640 l 4380 5489 l 4350 5609 l 4320 5489 l cp
eoclip
n 4350 5625 m
4350 4650 l gs col0 s gr gr
% arrowhead
n 4320 5489 m 4350 5609 l 4380 5489 l 4320 5489 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
4170 1665 m 4230 1665 l 4230 1514 l 4200 1634 l 4170 1514 l cp
4230 1035 m 4170 1035 l 4170 1186 l 4200 1066 l 4230 1186 l cp
eoclip
n 4200 1050 m
4200 1650 l gs col0 s gr gr
% arrowhead
n 4230 1186 m 4200 1066 l 4170 1186 l 4230 1186 l cp gs 0.00 setgray ef gr col0 s
% arrowhead
n 4170 1514 m 4200 1634 l 4230 1514 l 4170 1514 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
6615 1455 m 6615 1395 l 6464 1395 l 6584 1425 l 6464 1455 l cp
eoclip
n 5100 3900 m 6000 3900 l 6000 1425 l
6600 1425 l gs col0 s gr gr
% arrowhead
n 6464 1455 m 6584 1425 l 6464 1395 l 6464 1455 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
6615 3480 m 6615 3420 l 6464 3420 l 6584 3450 l 6464 3480 l cp
eoclip
n 5100 4050 m 6300 4050 l 6300 3450 l
6600 3450 l gs col0 s gr gr
% arrowhead
n 6464 3480 m 6584 3450 l 6464 3420 l 6464 3480 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
6615 5580 m 6615 5520 l 6464 5520 l 6584 5550 l 6464 5580 l cp
eoclip
n 5100 4200 m 6300 4200 l 6300 5550 l
6600 5550 l gs col0 s gr gr
% arrowhead
n 6464 5580 m 6584 5550 l 6464 5520 l 6464 5580 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
6690 7380 m 6690 7320 l 6539 7320 l 6659 7350 l 6539 7380 l cp
eoclip
n 5100 4350 m 6000 4350 l 6000 7350 l
6675 7350 l gs col0 s gr gr
% arrowhead
n 6539 7380 m 6659 7350 l 6539 7320 l 6539 7380 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
6690 9180 m 6690 9120 l 6539 9120 l 6659 9150 l 6539 9180 l cp
eoclip
n 5100 4500 m 5700 4500 l 5700 9150 l
6675 9150 l gs col0 s gr gr
% arrowhead
n 6539 9180 m 6659 9150 l 6539 9120 l 6539 9180 l cp gs 0.00 setgray ef gr col0 s
% Polyline
n 6675 6675 m 6975 6375 l 7875 6375 l 7875 7875 l 6675 7875 l 6675 6675 l
6975 6675 l
6975 6375 l gs col0 s gr
% Polyline
n 3300 3750 m 5100 3750 l 5100 4650 l 3300 4650 l
cp gs col32 1.00 shd ef gr gs col0 s gr
% Polyline
n 8775 450 m 10800 450 l 10800 1575 l 8775 1575 l
cp gs col32 1.00 shd ef gr gs col0 s gr
% Polyline
n 9075 900 m 10650 900 l 10650 1425 l 9075 1425 l
cp gs col0 s gr
% Polyline
gs clippath
8790 1380 m 8790 1320 l 8639 1320 l 8759 1350 l 8639 1380 l cp
eoclip
n 7800 1350 m
8775 1350 l gs col0 s gr gr
% arrowhead
n 8639 1380 m 8759 1350 l 8639 1320 l 8639 1380 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
11490 1380 m 11490 1320 l 11339 1320 l 11459 1350 l 11339 1380 l cp
eoclip
n 10800 1350 m
11475 1350 l gs col0 s gr gr
% arrowhead
n 11339 1380 m 11459 1350 l 11339 1320 l 11339 1380 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
9015 3180 m 9015 3120 l 8864 3120 l 8984 3150 l 8864 3180 l cp
eoclip
n 7800 3150 m
9000 3150 l gs col0 s gr gr
% arrowhead
n 8864 3180 m 8984 3150 l 8864 3120 l 8864 3180 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
9015 3555 m 9015 3495 l 8864 3495 l 8984 3525 l 8864 3555 l cp
eoclip
n 7800 3525 m
9000 3525 l gs col0 s gr gr
% arrowhead
n 8864 3555 m 8984 3525 l 8864 3495 l 8864 3555 l cp gs 0.00 setgray ef gr col0 s
% Polyline
n 9000 2925 m 10800 2925 l 10800 3675 l 9000 3675 l
cp gs col32 1.00 shd ef gr gs col0 s gr
% Polyline
gs clippath
11490 3180 m 11490 3120 l 11339 3120 l 11459 3150 l 11339 3180 l cp
eoclip
n 10800 3150 m
11475 3150 l gs col0 s gr gr
% arrowhead
n 11339 3180 m 11459 3150 l 11339 3120 l 11339 3180 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
11490 3555 m 11490 3495 l 11339 3495 l 11459 3525 l 11339 3555 l cp
eoclip
n 10800 3525 m
11475 3525 l gs col0 s gr gr
% arrowhead
n 11339 3555 m 11459 3525 l 11339 3495 l 11339 3555 l cp gs 0.00 setgray ef gr col0 s
% Polyline
n 9000 6900 m 10800 6900 l 10800 7650 l 9000 7650 l
cp gs col32 1.00 shd ef gr gs col0 s gr
% Polyline
gs clippath
9015 7305 m 9015 7245 l 8864 7245 l 8984 7275 l 8864 7305 l cp
eoclip
n 7875 7275 m
9000 7275 l gs col0 s gr gr
% arrowhead
n 8864 7305 m 8984 7275 l 8864 7245 l 8864 7305 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
11415 7305 m 11415 7245 l 11264 7245 l 11384 7275 l 11264 7305 l cp
eoclip
n 10800 7275 m
11400 7275 l gs col0 s gr gr
% arrowhead
n 11264 7305 m 11384 7275 l 11264 7245 l 11264 7305 l cp gs 0.00 setgray ef gr col0 s
% Polyline
gs clippath
9015 9180 m 9015 9120 l 8864 9120 l 8984 9150 l 8864 9180 l cp
eoclip
n 7875 9150 m
9000 9150 l gs col0 s gr gr
% arrowhead
n 8864 9180 m 8984 9150 l 8864 9120 l 8864 9180 l cp gs 0.00 setgray ef gr col0 s
% Polyline
n 9000 8775 m 10875 8775 l 10875 9525 l 9000 9525 l
cp gs col32 1.00 shd ef gr gs col0 s gr
% Polyline
gs clippath
11415 9180 m 11415 9120 l 11264 9120 l 11384 9150 l 11264 9180 l cp
eoclip
n 10875 9150 m
11400 9150 l gs col0 s gr gr
% arrowhead
n 11264 9180 m 11384 9150 l 11264 9120 l 11264 9180 l cp gs 0.00 setgray ef gr col0 s
% 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
cp gs col32 1.00 shd ef gr gs col0 s gr
% Polyline
gs clippath
5085 9270 m 5085 9330 l 5236 9330 l 5116 9300 l 5236 9270 l cp
eoclip
n 6675 9300 m
5100 9300 l gs col0 s gr gr
% arrowhead
n 5236 9270 m 5116 9300 l 5236 9330 l 5236 9270 l cp gs 0.00 setgray ef gr col0 s
% Polyline
n 675 9300 m 2475 9300 l 2475 9975 l 675 9975 l
cp gs col32 1.00 shd ef gr gs col0 s gr
% Polyline
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
gs clippath
6690 9780 m 6690 9720 l 6539 9720 l 6659 9750 l 6539 9780 l cp
2460 9720 m 2460 9780 l 2611 9780 l 2491 9750 l 2611 9720 l cp
eoclip
n 2475 9750 m
6675 9750 l gs col0 s gr gr
% arrowhead
n 2611 9720 m 2491 9750 l 2611 9780 l 2611 9720 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
4500 3525 m
gs 1 -1 sc (generate/update) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
3600 3525 m
gs 1 -1 sc (read) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
2850 3975 m
gs 1 -1 sc (read) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
2850 4650 m
gs 1 -1 sc (read) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
3975 6450 m
gs 1 -1 sc (Tag file\(s\)) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
3750 750 m
gs 1 -1 sc (Doxywizard) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
4425 5175 m
gs 1 -1 sc (generate) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
3675 5175 m
gs 1 -1 sc (read) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
4350 1425 m
gs 1 -1 sc (generate/edit) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
6900 1350 m
gs 1 -1 sc (XML files) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
6900 3300 m
gs 1 -1 sc (Latex files) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
6900 3750 m
gs 1 -1 sc (Makefile) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
7200 3525 m
gs 1 -1 sc (+) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
3900 4275 m
gs 1 -1 sc (Doxygen) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
9225 750 m
gs 1 -1 sc (Your application) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
9300 1275 m
gs 1 -1 sc (doxmlparser lib) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
8175 3750 m
gs 1 -1 sc (make pdf) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
8175 3000 m
gs 1 -1 sc (make ps) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
9675 3375 m
gs 1 -1 sc (latex) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
11025 825 m
gs 1 -1 sc (custom) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
11025 1050 m
gs 1 -1 sc (output) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
11025 3000 m
gs 1 -1 sc (postscript) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
11025 3825 m
gs 1 -1 sc (PDF) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
6900 7350 m
gs 1 -1 sc (refman.rtf) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
9525 7350 m
gs 1 -1 sc (MS-Word) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
11100 7200 m
gs 1 -1 sc (doc) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
8175 7200 m
gs 1 -1 sc (import) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
6975 9075 m
gs 1 -1 sc (HTML) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
6975 9300 m
gs 1 -1 sc (pages) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
9075 9225 m
gs 1 -1 sc (HTML Help Workshop) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
11100 9000 m
gs 1 -1 sc (chm) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
6825 5625 m
gs 1 -1 sc (Man pages) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
5475 9525 m
gs 1 -1 sc (parse) col0 sh gr
/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
gs 1 -1 sc (Doxytag) col0 sh gr
/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
gs 1 -1 sc (read) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
8775 6675 m
gs 1 -1 sc (Windows only) col0 sh gr
/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
gs 1 -1 sc (read) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
1200 4200 m
gs 1 -1 sc (Sources) col0 sh gr
/Times-Roman-iso ff 180.00 scf sf
1275 5775 m
gs 1 -1 sc (Custom) col0 sh gr
$F2psEnd
rs
#FIG 3.2
Landscape
Center
Inches
Letter
100.00
Single
-2
1200 2
0 32 #e0e0e0
0 33 #000000
6 3600 1650 4800 3150
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8
3600 1950 3900 1650 4800 1650 4800 3150 3600 3150 3600 1950
3900 1950 3900 1650
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
-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
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
1200 3675 1200 3375
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
975 3600 975 3300 2175 3300 2175 4800 2100 4800
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
1050 3300 1050 3225 2250 3225 2250 4725 2175 4725
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
1125 3225 1125 3150 2325 3150 2325 4650 2250 4650
-6
6 900 5175 2325 6900
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8
900 5700 1200 5400 2100 5400 2100 6900 900 6900 900 5700
1200 5700 1200 5400
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
975 5625 975 5325 2175 5325 2175 6825 2100 6825
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
1050 5325 1050 5250 2250 5250 2250 6750 2175 6750
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
1125 5250 1125 5175 2325 5175 2325 6675 2250 6675
-6
6 1275 5925 2025 6750
4 0 0 50 0 0 12 0.0000 4 135 750 1275 6075 - headers\001
4 0 0 50 0 0 12 0.0000 4 180 690 1275 6675 - images\001
4 0 0 50 0 0 12 0.0000 4 135 690 1275 6375 - footers\001
-6
6 6675 8250 8100 9975
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8
6675 8775 6975 8475 7875 8475 7875 9975 6675 9975 6675 8775
6975 8775 6975 8475
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6750 8700 6750 8400 7950 8400 7950 9900 7875 9900
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6825 8400 6825 8325 8025 8325 8025 9825 7950 9825
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6900 8325 6900 8250 8100 8250 8100 9750 8025 9750
-6
6 6600 4425 8025 6150
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8
6600 4950 6900 4650 7800 4650 7800 6150 6600 6150 6600 4950
6900 4950 6900 4650
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6675 4875 6675 4575 7875 4575 7875 6075 7800 6075
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6750 4575 6750 4500 7950 4500 7950 6000 7875 6000
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6825 4500 6825 4425 8025 4425 8025 5925 7950 5925
-6
6 6600 2400 8025 4125
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8
6600 2925 6900 2625 7800 2625 7800 4125 6600 4125 6600 2925
6900 2925 6900 2625
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6675 2850 6675 2550 7875 2550 7875 4050 7800 4050
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6750 2550 6750 2475 7950 2475 7950 3975 7875 3975
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6825 2475 6825 2400 8025 2400 8025 3900 7950 3900
-6
6 6600 375 8025 2100
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8
6600 900 6900 600 7800 600 7800 2100 6600 2100 6600 900
6900 900 6900 600
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6675 825 6675 525 7875 525 7875 2025 7800 2025
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6750 525 6750 450 7950 450 7950 1950 7875 1950
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6825 450 6825 375 8025 375 8025 1875 7950 1875
-6
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
4050 3150 4050 3750
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
2100 4125 3300 4125
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
1 1 1.00 60.00 120.00
2100 6225 2700 6225 2700 4350 3300 4350
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
1 1 1.00 60.00 120.00
4350 3150 4350 3750
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8
3675 5925 3975 5625 4875 5625 4875 7125 3675 7125 3675 5925
3975 5925 3975 5625
2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5
3300 300 5100 300 5100 1050 3300 1050 3300 300
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
4125 5625 4125 4650
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
1 1 1.00 60.00 120.00
4350 5625 4350 4650
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
4200 1050 4200 1650
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
1 1 1.00 60.00 120.00
5100 3900 6000 3900 6000 1425 6600 1425
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
1 1 1.00 60.00 120.00
5100 4050 6300 4050 6300 3450 6600 3450
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
1 1 1.00 60.00 120.00
5100 4200 6300 4200 6300 5550 6600 5550
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
1 1 1.00 60.00 120.00
5100 4350 6000 4350 6000 7350 6675 7350
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
1 1 1.00 60.00 120.00
5100 4500 5700 4500 5700 9150 6675 9150
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8
6675 6675 6975 6375 7875 6375 7875 7875 6675 7875 6675 6675
6975 6675 6975 6375
2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5
3300 3750 5100 3750 5100 4650 3300 4650 3300 3750
2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5
8775 450 10800 450 10800 1575 8775 1575 8775 450
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
9075 900 10650 900 10650 1425 9075 1425 9075 900
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
7800 1350 8775 1350
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
10800 1350 11475 1350
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
7800 3150 9000 3150
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
7800 3525 9000 3525
2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5
9000 2925 10800 2925 10800 3675 9000 3675 9000 2925
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
10800 3150 11475 3150
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
10800 3525 11475 3525
2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5
9000 6900 10800 6900 10800 7650 9000 7650 9000 6900
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
7875 7275 9000 7275
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
10800 7275 11400 7275
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
7875 9150 9000 9150
2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5
9000 8775 10875 8775 10875 9525 9000 9525 9000 8775
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
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
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
1 1 1.00 60.00 120.00
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
8700 6450 11850 6450 11850 9975 8700 9975 8700 6450
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 2850 3975 read\001
4 0 0 50 0 0 12 0.0000 4 135 330 2850 4650 read\001
4 0 0 50 0 0 12 0.0000 4 180 810 3975 6450 Tag file(s)\001
4 0 0 50 0 0 12 0.0000 4 180 915 3750 750 Doxywizard\001
4 0 0 50 0 0 12 0.0000 4 150 660 4425 5175 generate\001
4 0 0 50 0 0 12 0.0000 4 135 330 3675 5175 read\001
4 0 0 50 0 0 12 0.0000 4 180 990 4350 1425 generate/edit\001
4 0 0 50 0 0 12 0.0000 4 135 780 6900 1350 XML files\001
4 0 0 50 0 0 12 0.0000 4 135 810 6900 3300 Latex files\001
4 0 0 50 0 0 12 0.0000 4 135 675 6900 3750 Makefile\001
4 0 0 50 0 0 12 0.0000 4 75 105 7200 3525 +\001
4 0 0 50 0 0 12 0.0000 4 180 675 3900 4275 Doxygen\001
4 0 0 50 0 0 12 0.0000 4 180 1245 9225 750 Your application\001
4 0 0 50 0 0 12 0.0000 4 180 1155 9300 1275 doxmlparser lib\001
4 0 0 50 0 0 12 0.0000 4 180 690 8175 3750 make pdf\001
4 0 0 50 0 0 12 0.0000 4 180 630 8175 3000 make ps\001
4 0 0 50 0 0 12 0.0000 4 135 375 9675 3375 latex\001
4 0 0 50 0 0 12 0.0000 4 105 555 11025 825 custom\001
4 0 0 50 0 0 12 0.0000 4 150 480 11025 1050 output\001
4 0 0 50 0 0 12 0.0000 4 180 765 11025 3000 postscript\001
4 0 0 50 0 0 12 0.0000 4 135 345 11025 3825 PDF\001
4 0 0 50 0 0 12 0.0000 4 135 750 6900 7350 refman.rtf\001
4 0 0 50 0 0 12 0.0000 4 135 795 9525 7350 MS-Word\001
4 0 0 50 0 0 12 0.0000 4 135 270 11100 7200 doc\001
4 0 0 50 0 0 12 0.0000 4 180 480 8175 7200 import\001
4 0 0 50 0 0 12 0.0000 4 135 510 6975 9075 HTML\001
4 0 0 50 0 0 12 0.0000 4 135 450 6975 9300 pages\001
4 0 0 50 0 0 12 0.0000 4 180 1740 9075 9225 HTML Help Workshop\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 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 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 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 615 1200 4200 Sources\001
4 0 0 50 0 0 12 0.0000 4 135 585 1275 5775 Custom\001
......@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time.
Currently (version 1.2.14-20020317), 28 languages
Currently (version 1.3-rc2-20021224), 28 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish,
......
......@@ -32,6 +32,12 @@ engine. See section \ref doxysearch_usage for more detailed usage information.
Optionally, the executable \c doxywizard is a GUI front-end for editing
the configuration files that are used by doxygen.
The following figure shows the relation between the tools and the flow
of information between them:
\image html infoflow.gif "Doxygen information flow"
\image latex infoflow.eps "Doxygen information flow" width=14cm
\section step1 Step 1: Creating a configuration file
Doxygen uses a configuration file to determine all of its settings.
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3_rc2_20021224
Version: 1.3_rc2_20030106
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -124,6 +124,7 @@ ClassDef::~ClassDef()
delete m_innerClasses;
delete m_templateInstances;
delete m_templBaseClassNames;
delete m_tempArgs;
}
QCString ClassDef::displayName() const
......@@ -1525,7 +1526,6 @@ void ClassDef::setTemplateArguments(ArgumentList *al)
if (al==0) return;
if (!m_tempArgs) delete m_tempArgs; // delete old list if needed
m_tempArgs=new ArgumentList;
m_tempArgs->setAutoDelete(TRUE);
ArgumentListIterator ali(*al);
Argument *a;
for (;(a=ali.current());++ali)
......@@ -1981,7 +1981,11 @@ void ClassDef::mergeMembers()
void ClassDef::addUsedClass(ClassDef *cd,const char *accessName)
{
if (m_usesImplClassDict==0) m_usesImplClassDict = new UsesClassDict(17);
if (m_usesImplClassDict==0)
{
m_usesImplClassDict = new UsesClassDict(17);
m_usesImplClassDict->setAutoDelete(TRUE);
}
UsesClassDef *ucd=m_usesImplClassDict->find(cd->name());
if (ucd==0 /*|| ucd->templSpecifiers!=templSpec*/)
{
......@@ -2065,7 +2069,11 @@ void ClassDef::determineImplUsageRelation()
if (cd) // class exists
{
found=TRUE;
if (m_usesImplClassDict==0) m_usesImplClassDict = new UsesClassDict(257);
if (m_usesImplClassDict==0)
{
m_usesImplClassDict = new UsesClassDict(257);
m_usesImplClassDict->setAutoDelete(TRUE);
}
UsesClassDef *ucd=m_usesImplClassDict->find(cd->name());
if (ucd==0 || ucd->templSpecifiers!=templSpec)
{
......
......@@ -126,12 +126,6 @@ class ClassDef : public Definition
*/
ArgumentList *templateArguments() const { return m_tempArgs; }
/*! Returns the template arguments that this nested class "inherits"
* from its outer class (doxygen assumes there is only one!).
* Will return 0 if not applicable.
*/
//ArgumentList *outerTemplateArguments() const;
/*! Returns the namespace this compound is in, or 0 if it has a global
* scope.
*/
......
......@@ -338,6 +338,11 @@ class Config
if (m_instance==0) m_instance = new Config;
return m_instance;
}
/*! Delete the instance */
static void deleteInstance()
{
delete m_instance;
}
/*! Returns an iterator that can by used to iterate over the
* configuration options.
......
......@@ -128,8 +128,8 @@ static void docParserPopContext()
//---------------------------------------------------------------------------
/*! search for an image in the imageNameDict and if found
* copies the image to the output directory (which is the
* html directory if type==0 or the latex directory if type==1)
* copies the image to the output directory (which depends on the \a type
* parameter).
*/
static QCString findAndCopyImage(const char *fileName,DocImage::Type type)
{
......@@ -225,14 +225,20 @@ static QCString findAndCopyImage(const char *fileName,DocImage::Type type)
return result;
}
/*! Collects the parameters found with @param or @retval commands
* in a global list g_paramsFound. If \a isParam is set to TRUE
* and the parameter is not an actual parameter of the current
* member g_memberDef, than a warning is raised (unless warnings
* are disabled altogether).
*/
static void checkArgumentName(const QString &name,bool isParam)
{
if (!Config_getBool("WARN_IF_DOC_ERROR")) return;
if (g_memberDef==0) return; // not a member
ArgumentList *al=g_memberDef->isDocsForDefinition() ?
g_memberDef->argumentList() :
g_memberDef->declArgumentList();
if (al==0) return; // no argument list
if (!Config_getBool("WARN_IF_DOC_ERROR")) return;
static QRegExp re("[a-zA-Z0-9_]+\\.*");
int p=0,i=0,l;
......@@ -270,6 +276,11 @@ static void checkArgumentName(const QString &name,bool isParam)
}
}
/*! Checks if the parameters that have been specified using @param are
* indeed all paramters.
* Must be called after checkArgumentName() has been called for each
* argument.
*/
static void checkUndocumentedParams()
{
if (g_memberDef && g_hasParamCommand && Config_getBool("WARN_IF_DOC_ERROR"))
......@@ -317,6 +328,7 @@ static void checkUndocumentedParams()
//---------------------------------------------------------------------------
/*! Strips know html and tex extensions from \a text. */
static QString stripKnownExtensions(const char *text)
{
QString result=text;
......@@ -414,6 +426,7 @@ static bool findDocsForMemberOrCompound(const char *commandName,
QString *pDoc,
Definition **pDef)
{
//printf("findDocsForMemberOrCompound(%s)\n",commandName);
*pDoc="";
*pDef=0;
QString cmdArg=commandName;
......@@ -422,10 +435,7 @@ static bool findDocsForMemberOrCompound(const char *commandName,
int funcStart=cmdArg.find('(');
if (funcStart==-1) funcStart=l;
//int lastScopeStart=cmdArg.findRev("::",funcStart);
//int lastScopeEnd = lastScopeStart==-1 ? 0 : lastScopeStart+2;
//QString scope=cmdArg.left(QMAX(lastScopeStart,0));
//QString name=cmdArg.mid(lastScopeEnd,funcStart-lastScopeEnd);
QString name=cmdArg.left(funcStart);
QString args=cmdArg.right(l-funcStart);
......@@ -441,6 +451,7 @@ static bool findDocsForMemberOrCompound(const char *commandName,
name.latin1(),
args.isEmpty()?0:args.latin1(),
md,cd,fd,nd,gd,FALSE,0,TRUE);
//printf("found=%d context=%s name=%s\n",found,g_context.data(),name.data());
if (found && md)
{
*pDoc=md->documentation();
......@@ -1289,7 +1300,14 @@ void DocCopy::parse()
if (g_copyStack.findRef(def)==-1) // definition not parsed earlier
{
docParserPushContext();
if (def->definitionType()==Definition::TypeMember && def->getOuterScope())
{
g_context=def->getOuterScope()->name();
}
else
{
g_context=def->name();
}
g_styleStack.clear();
g_nodeStack.clear();
g_copyStack.append(def);
......@@ -3728,13 +3746,6 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
retval=RetVal_ListItem;
}
break;
//case HTML_PRE:
// {
// DocHtmlPre *pre = new DocHtmlPre(this,tagHtmlAttribs);
// m_children.append(pre);
// retval=pre->parse();
// }
// break;
case HTML_BOLD:
handleStyleEnter(this,m_children,DocStyleChange::Bold,&g_token->attribs);
break;
......@@ -3836,7 +3847,7 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
g_insideHtmlLink=FALSE;
break;
}
else // unsupport option for tag a
else // unsupported option for tag a
{
}
}
......@@ -4054,6 +4065,7 @@ int DocPara::parse()
{
DBG(("DocPara::parse() start\n"));
g_nodeStack.push(this);
// handle style commands "inherited" from the previous paragraph
handleInitialStyleCommands(this,m_children);
int tok;
int retval=0;
......@@ -4083,7 +4095,7 @@ reparsetoken:
{
// prevent leading whitespace and collapse multiple whitespace areas
DocNode::Kind k;
if (insidePRE(this) || // all whitespace is relavant
if (insidePRE(this) || // all whitespace is relevant
(
// remove leading whitespace
!m_children.isEmpty() &&
......@@ -4197,12 +4209,7 @@ reparsetoken:
}
if (cmd&SIMPLESECT_BIT)
{
if (n // already in a simple section
//|| // no section or root as parent
// (parent()->kind()!=DocNode::Kind_Root &&
// parent()->kind()!=DocNode::Kind_Section
// )
)
if (n) // already in a simple section
{
// simple section cannot start in this paragraph, need
// to unwind the stack and remember the command.
......
......@@ -142,7 +142,7 @@ static int computeIndent(const char *str,int length)
*/
static void parseHtmlAttribs(const char *att)
{
//printf("parseHtmlAttribs(%s)\n",opt.data());
//printf("parseHtmlAttribs(%s)\n",att);
QCString attribs=att;
int len = attribs.length();
char c;
......@@ -173,7 +173,7 @@ static void parseHtmlAttribs(const char *att)
// search for matching quote
while (i<len && c!='\'') { c=attribs.at(++i); }
endAttrib=i;
c=attribs.at(++i);
if (i<len) c=attribs.at(++i);
}
else if (attribs.at(i)=='"') // option "..."
{
......@@ -182,7 +182,7 @@ static void parseHtmlAttribs(const char *att)
// search for matching quote
while (i<len && c!='"') { c=attribs.at(++i); }
endAttrib=i;
c=attribs.at(++i);
if (i<len) c=attribs.at(++i);
}
else // value without any quotes
{
......@@ -190,7 +190,7 @@ static void parseHtmlAttribs(const char *att)
// search for separator
while (i<len && c!=' ') { c=attribs.at(++i); }
endAttrib=i;
c=attribs.at(++i);
if (i<len) c=attribs.at(++i);
}
opt.value = attribs.mid(startAttrib,endAttrib-startAttrib);
}
......@@ -198,7 +198,7 @@ static void parseHtmlAttribs(const char *att)
{
}
//printf("=====> Adding option name=<%s> value=<%s>\n",
// opt->name.data(),opt->value.data());
// opt.name.data(),opt.value.data());
g_token->attribs.append(&opt);
}
}
......
......@@ -881,9 +881,9 @@ void DotGfxHierarchyTable::addClassList(ClassSDict *cl)
for (cli.toLast();(cd=cli.current());--cli)
{
//printf("Trying %s subClasses=%d\n",cd->name().data(),cd->subClasses()->count());
if (!hasVisibleRoot(cd->baseClasses()))
{
if (cd->isVisibleInHierarchy()) // root node in the forest
if (!hasVisibleRoot(cd->baseClasses()) &&
cd->isVisibleInHierarchy()
) // root node in the forest
{
QCString tmp_url="";
if (cd->isLinkable())
......@@ -891,8 +891,7 @@ void DotGfxHierarchyTable::addClassList(ClassSDict *cl)
//printf("Inserting root class %s\n",cd->name().data());
DotNode *n = new DotNode(m_curNodeNumber++,
cd->displayName(),
tmp_url.data()
);
tmp_url.data());
//m_usedNodes->clear();
m_usedNodes->insert(cd->name(),n);
......@@ -904,15 +903,14 @@ void DotGfxHierarchyTable::addClassList(ClassSDict *cl)
}
}
}
}
}
DotGfxHierarchyTable::DotGfxHierarchyTable()
{
m_curNodeNumber=0;
m_rootNodes = new QList<DotNode>;
//m_rootNodes->setAutoDelete(TRUE); // rootNodes owns the nodes
m_usedNodes = new QDict<DotNode>(1009); // virtualNodes only aliases nodes
m_usedNodes = new QDict<DotNode>(1009);
m_usedNodes->setAutoDelete(TRUE);
m_rootSubgraphs = new DotNodeList;
// build a graph with each class as a node and the inheritance relations
......@@ -964,7 +962,9 @@ DotGfxHierarchyTable::DotGfxHierarchyTable()
DotGfxHierarchyTable::~DotGfxHierarchyTable()
{
//printf("DotGfxHierarchyTable::~DotGfxHierarchyTable\n");
SDict<DotNode> skipNodes(17);
#if 0 // TODO: delete this
SDict<DotNode> skipNodes(1009);
skipNodes.setAutoDelete(TRUE);
DotNode *n = m_rootNodes->first();
while (n)
......@@ -980,6 +980,15 @@ DotGfxHierarchyTable::~DotGfxHierarchyTable()
deleteNodes(n,&skipNodes);
n=m_rootNodes->next();
}
#endif
//QDictIterator<DotNode> di(*m_usedNodes);
//DotNode *n;
//for (;(n=di.current());++di)
//{
// printf("Node %p: %s\n",n,n->label().data());
//}
delete m_rootNodes;
delete m_usedNodes;
delete m_rootSubgraphs;
......
......@@ -26,6 +26,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <qtextcodec.h>
#include "version.h"
#include "doxygen.h"
......@@ -61,6 +62,7 @@
//#include "packagedef.h"
#include "bufstr.h"
#include "commentcnv.h"
#include "cmdmapper.h"
#if defined(_MSC_VER) || defined(__BORLANDC__)
#define popen _popen
......@@ -104,8 +106,6 @@ StringDict Doxygen::tagDestinationDict(257); // all tag locations
QDict<void> Doxygen::expandAsDefinedDict(257); // all macros that should be expanded
QIntDict<MemberGroupInfo> Doxygen::memGrpInfoDict(1009); // dictionary of the member groups heading
//QIntDict<QCString> Doxygen::memberHeaderDict(1009); // dictionary of the member groups heading
//QIntDict<QCString> Doxygen::memberDocDict(1009); // dictionary of the member groups heading
PageInfo *Doxygen::mainPage = 0;
QTextStream Doxygen::tagFile;
......@@ -3095,6 +3095,7 @@ static bool findTemplateInstanceRelation(Entry *root,
findUsedClassesForClass(templateRoot,templateClass,instanceClass,
isArtificial,templArgs,templateNames);
delete templArgs;
}
else
{
......@@ -4468,7 +4469,6 @@ static void findMember(Entry *root,
* of the function definition before matching.
*/
argList = new ArgumentList;
argList->setAutoDelete(TRUE);
substituteTemplatesInArgList(declTemplArgs,*defTemplArgs,
md->argumentList(),argList);
......@@ -7048,6 +7048,37 @@ void initDoxygen()
initPreprocessor();
Doxygen::sectionDict.setAutoDelete(TRUE);
Doxygen::inputNameList.setAutoDelete(TRUE);
Doxygen::memberNameSDict.setAutoDelete(TRUE);
Doxygen::functionNameSDict.setAutoDelete(TRUE);
Doxygen::hiddenClasses.setAutoDelete(TRUE);
Doxygen::classSDict.setAutoDelete(TRUE);
Doxygen::pageSDict->setAutoDelete(TRUE);
Doxygen::exampleSDict->setAutoDelete(TRUE);
excludeNameDict.setAutoDelete(TRUE);
Doxygen::memGrpInfoDict.setAutoDelete(TRUE);
Doxygen::tagDestinationDict.setAutoDelete(TRUE);
}
void cleanUpDoxygen()
{
delete Doxygen::inputNameDict;
delete Doxygen::includeNameDict;
delete Doxygen::exampleNameDict;
delete Doxygen::imageNameDict;
delete Doxygen::dotFileNameDict;
delete Doxygen::mainPage;
delete Doxygen::pageSDict;
delete Doxygen::exampleSDict;
delete Doxygen::globalScope;
delete Doxygen::specialLists;
cleanUpPreprocessor();
Config::deleteInstance();
QTextCodec::deleteAllCodecs();
delete theTranslator;
delete outputList;
CmdMapper::freeInstance();
HtmlTagMapper::freeInstance();
}
void readConfiguration(int argc, char **argv)
......@@ -7093,6 +7124,7 @@ void readConfiguration(int argc, char **argv)
if (!formatName)
{
err("Error:option -e is missing format specifier rtf.\n");
cleanUpDoxygen();
exit(1);
}
if (stricmp(formatName,"rtf")==0)
......@@ -7100,6 +7132,7 @@ void readConfiguration(int argc, char **argv)
if (optind+1>=argc)
{
err("Error: option \"-e rtf\" is missing an extensions file name\n");
cleanUpDoxygen();
exit(1);
}
QFile f;
......@@ -7107,9 +7140,11 @@ void readConfiguration(int argc, char **argv)
{
RTFGenerator::writeExtensionsFile(f);
}
cleanUpDoxygen();
exit(1);
}
err("Error: option \"-e\" has invalid format specifier.\n");
cleanUpDoxygen();
exit(1);
break;
case 'w':
......@@ -7117,6 +7152,7 @@ void readConfiguration(int argc, char **argv)
if (!formatName)
{
err("Error: option -w is missing format specifier rtf, html or latex\n");
cleanUpDoxygen();
exit(1);
}
if (stricmp(formatName,"rtf")==0)
......@@ -7124,6 +7160,7 @@ void readConfiguration(int argc, char **argv)
if (optind+1>=argc)
{
err("Error: option \"-w rtf\" is missing a style sheet file name\n");
cleanUpDoxygen();
exit(1);
}
QFile f;
......@@ -7131,6 +7168,7 @@ void readConfiguration(int argc, char **argv)
{
RTFGenerator::writeStyleSheetFile(f);
}
cleanUpDoxygen();
exit(1);
}
else if (stricmp(formatName,"html")==0)
......@@ -7140,6 +7178,7 @@ void readConfiguration(int argc, char **argv)
if (!Config::instance()->parse(argv[optind+4]))
{
err("Error opening or reading configuration file %s!\n",argv[optind+4]);
cleanUpDoxygen();
exit(1);
}
Config::instance()->substituteEnvironmentVars();
......@@ -7153,6 +7192,7 @@ void readConfiguration(int argc, char **argv)
if (optind+3>=argc)
{
err("Error: option \"-w html\" does not have enough arguments\n");
cleanUpDoxygen();
exit(1);
}
......@@ -7177,6 +7217,7 @@ void readConfiguration(int argc, char **argv)
{
HtmlGenerator::writeStyleSheetFile(f);
}
cleanUpDoxygen();
exit(0);
}
else if (stricmp(formatName,"latex")==0)
......@@ -7199,6 +7240,7 @@ void readConfiguration(int argc, char **argv)
if (optind+2>=argc)
{
err("Error: option \"-w latex\" does not have enough arguments\n");
cleanUpDoxygen();
exit(1);
}
......@@ -7218,11 +7260,13 @@ void readConfiguration(int argc, char **argv)
{
LatexGenerator::writeStyleSheetFile(f);
}
cleanUpDoxygen();
exit(0);
}
else
{
err("Error: Illegal format specifier %s: should be one of rtf, html, or latex\n",formatName);
cleanUpDoxygen();
exit(1);
}
break;
......@@ -7234,6 +7278,7 @@ void readConfiguration(int argc, char **argv)
else if (strcmp(&argv[optind][2],"version")==0)
{
msg("%s\n",versionString);
cleanUpDoxygen();
exit(0);
}
break;
......@@ -7257,6 +7302,7 @@ void readConfiguration(int argc, char **argv)
if (genConfig)
{
generateConfigFile(configName,shortList);
cleanUpDoxygen();
exit(0);
}
......@@ -7295,12 +7341,14 @@ void readConfiguration(int argc, char **argv)
if (!Config::instance()->parse(configName))
{
err("Error: could not open or read configuration file %s!\n",configName);
cleanUpDoxygen();
exit(1);
}
if (updateConfig)
{
generateConfigFile(configName,shortList,TRUE);
cleanUpDoxygen();
exit(0);
}
......@@ -7370,8 +7418,6 @@ void readConfiguration(int argc, char **argv)
void parseInput()
{
Doxygen::classSDict.setAutoDelete(TRUE);
Doxygen::inputNameDict = new FileNameDict(10007);
Doxygen::includeNameDict = new FileNameDict(10007);
Doxygen::exampleNameDict = new FileNameDict(1009);
......@@ -7602,6 +7648,8 @@ void parseInput()
if (input.isEmpty())
{
err("No input read, no output generated!\n");
delete root;
cleanUpDoxygen();
exit(1);
}
else
......@@ -7628,6 +7676,8 @@ void parseInput()
{
err("Error: tag OUTPUT_DIRECTORY: Output directory `%s' does not "
"exist and cannot be created\n",outputDirectory.data());
delete root;
cleanUpDoxygen();
exit(1);
}
else if (!Config_getBool("QUIET"))
......@@ -7654,6 +7704,8 @@ void parseInput()
if (generateHtml && !htmlDir.exists() && !htmlDir.mkdir(htmlOutput))
{
err("Could not create output directory %s\n",htmlOutput.data());
delete root;
cleanUpDoxygen();
exit(1);
}
......@@ -7671,6 +7723,8 @@ void parseInput()
if (generateLatex && !latexDir.exists() && !latexDir.mkdir(latexOutput))
{
err("Could not create output directory %s\n",latexOutput.data());
delete root;
cleanUpDoxygen();
exit(1);
}
......@@ -7688,6 +7742,8 @@ void parseInput()
if (generateRtf && !rtfDir.exists() && !rtfDir.mkdir(rtfOutput))
{
err("Could not create output directory %s\n",rtfOutput.data());
delete root;
cleanUpDoxygen();
exit(1);
}
......@@ -7705,6 +7761,8 @@ void parseInput()
if (generateMan && !manDir.exists() && !manDir.mkdir(manOutput))
{
err("Could not create output directory %s\n",manOutput.data());
delete root;
cleanUpDoxygen();
exit(1);
}
......@@ -7855,6 +7913,7 @@ void generateOutput()
* Initialize output generators *
**************************************************************************/
outputList = new OutputList(TRUE);
if (Config_getBool("GENERATE_HTML"))
{
......@@ -7894,6 +7953,7 @@ void generateOutput()
err("Error: cannot open tag file %s for writing\n",
generateTagFile.data()
);
cleanUpDoxygen();
exit(1);
}
Doxygen::tagFile.setDevice(tag);
......@@ -8069,5 +8129,6 @@ void generateOutput()
}
QDir::setCurrent(oldDir);
}
cleanUpDoxygen();
}
......@@ -88,8 +88,6 @@ class Doxygen
static StringDict tagDestinationDict;
static StringDict aliasDict;
static QIntDict<MemberGroupInfo> memGrpInfoDict;
//static QIntDict<QCString> memberHeaderDict; // dictionary of the member groups heading
//static QIntDict<QCString> memberDocDict; // dictionary of the member groups heading
static QDict<void> expandAsDefinedDict;
static NamespaceDef *globalScope;
static QDict<RefList> *specialLists; // array of special lists: todo, test, bug, deprecated ...
......
......@@ -103,7 +103,7 @@ class ArgumentList : public QList<Argument>
ArgumentList() : QList<Argument>(),
constSpecifier(FALSE),
volatileSpecifier(FALSE),
pureSpecifier(FALSE) {}
pureSpecifier(FALSE) { setAutoDelete(TRUE); }
/*! Destroys the argument list */
~ArgumentList() {}
bool hasDocumentation() const;
......
......@@ -73,6 +73,8 @@ FileDef::~FileDef()
delete classSDict;
delete includeDict;
delete includeList;
delete includedByDict;
delete includedByList;
delete namespaceSDict;
delete srcDefDict;
delete srcMemberDict;
......
......@@ -20,6 +20,7 @@
FileName::FileName(const char *fn,const char *n) : FileList()
{
setAutoDelete(TRUE);
fName=fn;
name=n;
}
......
......@@ -1399,7 +1399,7 @@ void writeAlphabeticalClassList(OutputList &ol)
{
QCString namesp;
if (cd->getNamespaceDef()) namesp=cd->getNamespaceDef()->displayName();
QCString cname=cd->displayName();
QCString cname=cd->className();
ol.writeObjectLink(cd->getReference(),
cd->getOutputFileBase(),0,cname);
......
......@@ -127,7 +127,7 @@ void writeInstallScript()
t << "}\n";
t << "\n";
t << "if ( ! @files ) {\n";
t << " print STDERR \"Warning: No input files given and non found!\\n\";\n";
t << " print STDERR \"Warning: No input files given and none found!\\n\";\n";
t << "}\n";
t << "\n";
t << "foreach $f (@files)\n";
......
......@@ -23,6 +23,7 @@
MemberName::MemberName(const char *n) : QList<MemberDef>()
{
name=n;
setAutoDelete(TRUE);
}
MemberName::~MemberName()
......
......@@ -115,7 +115,7 @@ class PageSDict : public SDict<PageInfo>
{
public:
PageSDict(int size) : SDict<PageInfo>(size) {}
~PageSDict() {}
virtual ~PageSDict() {}
int compareItems(GCI i1,GCI i2)
{
return stricmp(((PageInfo *)i1)->name,((PageInfo *)i2)->name);
......
......@@ -106,6 +106,7 @@ void PngEncoder::write(const char *name)
PNG_COLOR_TYPE_PALETTE, PNG_INTERLACE_NONE,
PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE
);
free(png_palette);
ti[0] = transIndex;
png_set_tRNS(png_ptr,info_ptr,ti,1,NULL);
rows = (unsigned char **) calloc(sizeof(unsigned char*),height);
......
......@@ -25,6 +25,7 @@
class BufStr;
void initPreprocessor();
void cleanUpPreprocessor();
void addSearchDir(const char *dir);
void preprocessFile(const char *fileName,BufStr &output);
......
......@@ -1919,7 +1919,7 @@ void initPreprocessor()
g_fileDefineDict = new DefineDict(1009);
}
void cleanupPreprocessor()
void cleanUpPreprocessor()
{
//delete fileDefineCache;
delete g_fileDefineDict; g_fileDefineDict=0;
......
......@@ -2733,6 +2733,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
lastCContext = YY_START;
BEGIN(SkipCxxComment);
}
<SkipInits>; {
warn(yyFileName,yyLineNr,
"Warning: Found ';' while parsing initializer list! "
"(doxygen could be confused by a macro call without semicolon)"
);
BEGIN( FindMembers );
}
<SkipInits,SkipCurly,SkipCurlyCpp>. {
//addToBody(yytext);
}
......
......@@ -74,7 +74,7 @@ class SList : public QList<T>
{
public:
SList(SDict<T> *owner) : m_owner(owner) {}
~SList() {}
virtual ~SList() {}
int compareItems(GCI item1,GCI item2)
{
return m_owner->compareItems(item1,item2);
......@@ -280,7 +280,7 @@ class SIntList : public QList<T>
{
public:
SIntList(SIntDict<T> *owner) : m_owner(owner) {}
~SIntList() {}
virtual ~SIntList() {}
int compareItems(GCI item1,GCI item2)
{
return m_owner->compareItems(item1,item2);
......
......@@ -186,6 +186,8 @@ class TagFileParser : public QXmlDefaultHandler
m_endElementHandlers(17),
m_tagName(tagName)
{
m_startElementHandlers.setAutoDelete(TRUE);
m_endElementHandlers.setAutoDelete(TRUE);
}
void startCompound( const QXmlAttributes& attrib )
......@@ -305,7 +307,8 @@ class TagFileParser : public QXmlDefaultHandler
void endMember()
{
m_state = *m_stateStack.pop();
m_state = *m_stateStack.top();
m_stateStack.remove();
switch(m_state)
{
case InClass: m_curClass->members.append(m_curMember); break;
......@@ -884,6 +887,7 @@ void TagFileParser::buildMemberList(Entry *ce,QList<TagMemberInfo> &members)
me->args = tmi->arglist;
if (!me->args.isEmpty())
{
delete me->argList;
me->argList = new ArgumentList;
stringToArgumentList(me->args,me->argList);
}
......@@ -1006,11 +1010,16 @@ void TagFileParser::buildLists(Entry *root)
// transfer base class list
if (tci->bases)
{
delete ce->extends;
ce->extends = tci->bases; tci->bases = 0;
}
if (tci->templateArguments)
{
if (ce->tArgLists==0) ce->tArgLists = new QList<ArgumentList>;
if (ce->tArgLists==0)
{
ce->tArgLists = new QList<ArgumentList>;
ce->tArgLists->setAutoDelete(TRUE);
}
ArgumentList *al = new ArgumentList;
ce->tArgLists->append(al);
......
......@@ -103,13 +103,20 @@
" \n"
"function hideFolder() \n"
"{ \n"
" if (browserVersion == 1 || browserVersion == 3) { \n"
" if (browserVersion == 1 || browserVersion == 3) \n"
" { \n"
" if (this.navObj.style.display == \"none\") \n"
" return \n"
" {\n"
" return\n"
" }\n"
" this.navObj.style.display = \"none\" \n"
" } else { \n"
" } \n"
" else \n"
" { \n"
" if (this.navObj.visibility == \"hidden\") \n"
" {\n"
" return \n"
" }\n"
" this.navObj.visibility = \"hidden\" \n"
" } \n"
" \n"
......@@ -118,11 +125,11 @@
" \n"
"function initializeFolder(level, lastNode, leftSide) \n"
"{ \n"
"var j=0 \n"
"var i=0 \n"
"var numberOfFolders \n"
"var numberOfDocs \n"
"var nc \n"
" var j=0 \n"
" var i=0 \n"
" var numberOfFolders \n"
" var numberOfDocs \n"
" var nc \n"
" \n"
" nc = this.nChildren \n"
" \n"
......@@ -166,9 +173,12 @@
" \n"
"function drawFolder(leftSide) \n"
"{ \n"
" if (browserVersion == 2) { \n"
" if (!doc.yPos) \n"
" if (browserVersion == 2) \n"
" { \n"
" if (!doc.yPos)\n"
" {\n"
" doc.yPos=8 \n"
" }\n"
" doc.write(\"<layer id='folder\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n"
" } \n"
" if (browserVersion == 3) \n"
......@@ -178,7 +188,9 @@
" \n"
" doc.write(\"\\n<table \") \n"
" if (browserVersion == 1) \n"
" {\n"
" doc.write(\" id='folder\" + this.id + \"' style='position:block;' \") \n"
" }\n"
" doc.write(\" border=0 cellspacing=0 cellpadding=0>\") \n"
" doc.write(\"\\n<tr><td>\") \n"
" doc.write(leftSide) \n"
......@@ -192,7 +204,9 @@
" doc.write(this.desc + \"</a>\") \n"
" } \n"
" else \n"
" {\n"
" doc.write(this.desc) \n"
" }\n"
" if (this.tagName!=\"\")\n"
" {\n"
" doc.write(\" [external]\")\n"
......@@ -200,23 +214,30 @@
" doc.write(\"</td>\") \n"
" doc.write(\"\\n</table>\\n\") \n"
" \n"
" if (browserVersion == 2) { \n"
" if (browserVersion == 2) \n"
" { \n"
" doc.write(\"</layer>\") \n"
" } \n"
" if (browserVersion == 3) { \n"
" if (browserVersion == 3) \n"
" { \n"
" doc.write(\"</div>\") \n"
" } \n"
" \n"
" if (browserVersion == 1) { \n"
" if (browserVersion == 1) \n"
" { \n"
" this.navObj = doc.all[\"folder\"+this.id] \n"
" this.iconImg = doc.all[\"folderIcon\"+this.id] \n"
" this.nodeImg = doc.all[\"nodeIcon\"+this.id] \n"
" } else if (browserVersion == 2) { \n"
" } \n"
" else if (browserVersion == 2) \n"
" { \n"
" this.navObj = doc.layers[\"folder\"+this.id] \n"
" this.iconImg = this.navObj.document.images[\"folderIcon\"+this.id] \n"
" this.nodeImg = this.navObj.document.images[\"nodeIcon\"+this.id] \n"
" doc.yPos=doc.yPos+this.navObj.clip.height \n"
" } else if (browserVersion == 3) {\n"
" } \n"
" else if (browserVersion == 3) \n"
" {\n"
" this.navObj = doc.getElementById(\"folder\"+this.id)\n"
" this.iconImg = doc.images.namedItem(\"folderIcon\"+this.id)\n"
" this.nodeImg = doc.images.namedItem(\"nodeIcon\"+this.id)\n"
......@@ -303,6 +324,7 @@
" this.createIndex() \n"
" \n"
" if (level>0) \n"
" {\n"
" if (lastNode) //the last 'brother' in the children array \n"
" { \n"
" this.renderOb(leftSide + \"<img src='ftv2lastnode.png' width=16 height=22>\") \n"
......@@ -313,20 +335,29 @@
" this.renderOb(leftSide + \"<img src='ftv2node.png' width=16 height=22>\") \n"
" leftSide = leftSide + \"<img src='ftv2vertline.png' width=16 height=22>\" \n"
" } \n"
" }\n"
" else \n"
" {\n"
" this.renderOb(\"\") \n"
" }\n"
"} \n"
" \n"
"function drawItem(leftSide) \n"
"{ \n"
" if (browserVersion == 2) \n"
" doc.write(\"<layer id='item\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n"
" if (browserVersion == 3) \n"
" doc.write(\"<div id='item\" + this.id + \"' style='display:block;'>\") \n"
" if (browserVersion == 2)\n"
" {\n"
" doc.write(\"<layer id='item\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\")\n"
" }\n"
" else if (browserVersion == 3)\n"
" {\n"
" doc.write(\"<div id='item\" + this.id + \"' style='display:block;'>\")\n"
" }\n"
" \n"
" doc.write(\"\\n<table \") \n"
" if (browserVersion == 1) \n"
" doc.write(\" id='item\" + this.id + \"' style='position:block;' \") \n"
" if (browserVersion == 1)\n"
" {\n"
" doc.write(\" id='item\" + this.id + \"' style='position:block;' \")\n"
" }\n"
" doc.write(\" border=0 cellspacing=0 cellpadding=0>\\n\") \n"
" doc.write(\"<tr><td>\") \n"
" doc.write(leftSide) \n"
......@@ -342,9 +373,13 @@
" } \n"
" doc.write(\"</td>\\n<td valign=middle nowrap>\") \n"
" if (USETEXTLINKS && this.link!=\"\") \n"
" {\n"
" doc.write(\"<a href=\" + this.link + \">\" + this.desc + \"</a>\") \n"
" }\n"
" else \n"
" {\n"
" doc.write(this.desc) \n"
" }\n"
" if (this.tagName!=\"\")\n"
" {\n"
" doc.write(\" [external]\");\n"
......@@ -352,18 +387,27 @@
" doc.write(\"\\n</table>\\n\") \n"
" \n"
" if (browserVersion == 2) \n"
" {\n"
" doc.write(\"</layer>\") \n"
" if (browserVersion == 3) \n"
" }\n"
" else if (browserVersion == 3) \n"
" {\n"
" doc.write(\"</div>\")\n"
" }\n"
" \n"
" if (browserVersion == 1) { \n"
" if (browserVersion == 1) \n"
" { \n"
" this.navObj = doc.all[\"item\"+this.id] \n"
" this.iconImg = doc.all[\"itemIcon\"+this.id] \n"
" } else if (browserVersion == 2) { \n"
" } \n"
" else if (browserVersion == 2) \n"
" { \n"
" this.navObj = doc.layers[\"item\"+this.id] \n"
" this.iconImg = this.navObj.document.images[\"itemIcon\"+this.id] \n"
" doc.yPos=doc.yPos+this.navObj.clip.height \n"
" } else if (browserVersion == 3) {\n"
" } \n"
" else if (browserVersion == 3) \n"
" {\n"
" this.navObj = doc.getElementById(\"item\"+this.id)\n"
" this.iconImg = doc.images.namedItem(\"itemIcon\"+this.id)\n"
" }\n"
......@@ -376,9 +420,13 @@
"function display() \n"
"{ \n"
" if (browserVersion == 1 || browserVersion == 3) \n"
" {\n"
" this.navObj.style.display = \"block\" \n"
" }\n"
" else \n"
" this.navObj.visibility = \"show\" \n"
" {\n"
" this.navObj.visibility = \"show\"\n"
" }\n"
"} \n"
" \n"
"function createEntryIndex() \n"
......@@ -429,18 +477,49 @@
" clickedFolder.setState(!state) //open<->close \n"
"} \n"
" \n"
"function preLoadIcons() \n"
"{\n"
" var auxImg\n"
" auxImg = new Image();\n"
" auxImg.src = \"ftv2blank.png\";\n"
" auxImg.src = \"ftv2doc.png\";\n"
" auxImg.src = \"ftv2folderclosed.png\";\n"
" auxImg.src = \"ftv2folderopen.png\";\n"
" auxImg.src = \"ftv2lastnode.png\";\n"
" auxImg.src = \"ftv2link.png\";\n"
" auxImg.src = \"ftv2mlastnode.png\";\n"
" auxImg.src = \"ftv2mnode.png\";\n"
" auxImg.src = \"ftv2node.png\";\n"
" auxImg.src = \"ftv2plastnode.png\";\n"
" auxImg.src = \"ftv2pnode.png\";\n"
" auxImg.src = \"ftv2vertline.png\";\n"
"}\n"
"\n"
"function initializeDocument() \n"
"{ \n"
" doc = document;\n"
" if (doc.all) \n"
" browserVersion = 1 //IE4 \n"
" else \n"
" if (doc.layers) \n"
" browserVersion = 2 //NS4 \n"
" else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)\n"
" browserVersion = 3 //mozilla\n"
" else \n"
" browserVersion = 0 //other \n"
" preLoadIcons()\n"
"\n"
" var ua = window.navigator.userAgent.toLowerCase();\n"
" if ((ua.indexOf('msie')!=-1) && (navigator.version>=4))\n"
" {\n"
" browserVersion = 1 // IE >= 4.x\n"
" }\n"
" else if (ua.indexOf('opera')!=-1)\n"
" {\n"
" browserVersion = 3; // Opera\n"
" }\n"
" else if (ua.indexOf('gecko')!=-1)\n"
" {\n"
" browserVersion = 3; // NS6 or Mozilla\n"
" }\n"
" else if (ua.indexOf('mozilla')!=-1)\n"
" {\n"
" browserVersion = 2; // NS4\n"
" }\n"
" else\n"
" {\n"
" browserVersion = 0; // unknown or old browser\n"
" }\n"
"\n"
" foldersTree.initialize(0, 1, \"\") \n"
" foldersTree.display()\n"
......@@ -460,6 +539,7 @@
"// Auxiliary Functions for Folder-Treee backward compatibility \n"
"// ********************************************************* \n"
" \n"
" \n"
"function gFld(description, tagName, hreference) \n"
"{ \n"
" folder = new Folder(description, tagName, hreference) \n"
......@@ -492,9 +572,10 @@
"// Global variables \n"
"// **************** \n"
" \n"
"USETEXTLINKS = 1\n"
"indexOfEntries = new Array \n"
"nEntries = 0 \n"
"doc = document \n"
"browserVersion = 0 \n"
"selectedFolder=0\n"
"var USETEXTLINKS = 1\n"
"var indexOfEntries = new Array \n"
"var nEntries = 0 \n"
"var doc = document \n"
"var browserVersion = 0 \n"
"var selectedFolder=0\n"
"\n"
......@@ -103,13 +103,20 @@ function propagateChangesInState(folder)
function hideFolder()
{
if (browserVersion == 1 || browserVersion == 3) {
if (browserVersion == 1 || browserVersion == 3)
{
if (this.navObj.style.display == "none")
{
return
}
this.navObj.style.display = "none"
} else {
}
else
{
if (this.navObj.visibility == "hidden")
{
return
}
this.navObj.visibility = "hidden"
}
......@@ -118,11 +125,11 @@ function hideFolder()
function initializeFolder(level, lastNode, leftSide)
{
var j=0
var i=0
var numberOfFolders
var numberOfDocs
var nc
var j=0
var i=0
var numberOfFolders
var numberOfDocs
var nc
nc = this.nChildren
......@@ -166,9 +173,12 @@ var nc
function drawFolder(leftSide)
{
if (browserVersion == 2) {
if (browserVersion == 2)
{
if (!doc.yPos)
{
doc.yPos=8
}
doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
}
if (browserVersion == 3)
......@@ -178,7 +188,9 @@ function drawFolder(leftSide)
doc.write("\n<table ")
if (browserVersion == 1)
{
doc.write(" id='folder" + this.id + "' style='position:block;' ")
}
doc.write(" border=0 cellspacing=0 cellpadding=0>")
doc.write("\n<tr><td>")
doc.write(leftSide)
......@@ -192,7 +204,9 @@ function drawFolder(leftSide)
doc.write(this.desc + "</a>")
}
else
{
doc.write(this.desc)
}
if (this.tagName!="")
{
doc.write(" [external]")
......@@ -200,23 +214,30 @@ function drawFolder(leftSide)
doc.write("</td>")
doc.write("\n</table>\n")
if (browserVersion == 2) {
if (browserVersion == 2)
{
doc.write("</layer>")
}
if (browserVersion == 3) {
if (browserVersion == 3)
{
doc.write("</div>")
}
if (browserVersion == 1) {
if (browserVersion == 1)
{
this.navObj = doc.all["folder"+this.id]
this.iconImg = doc.all["folderIcon"+this.id]
this.nodeImg = doc.all["nodeIcon"+this.id]
} else if (browserVersion == 2) {
}
else if (browserVersion == 2)
{
this.navObj = doc.layers["folder"+this.id]
this.iconImg = this.navObj.document.images["folderIcon"+this.id]
this.nodeImg = this.navObj.document.images["nodeIcon"+this.id]
doc.yPos=doc.yPos+this.navObj.clip.height
} else if (browserVersion == 3) {
}
else if (browserVersion == 3)
{
this.navObj = doc.getElementById("folder"+this.id)
this.iconImg = doc.images.namedItem("folderIcon"+this.id)
this.nodeImg = doc.images.namedItem("nodeIcon"+this.id)
......@@ -303,6 +324,7 @@ function initializeItem(level, lastNode, leftSide)
this.createIndex()
if (level>0)
{
if (lastNode) //the last 'brother' in the children array
{
this.renderOb(leftSide + "<img src='ftv2lastnode.png' width=16 height=22>")
......@@ -313,20 +335,29 @@ function initializeItem(level, lastNode, leftSide)
this.renderOb(leftSide + "<img src='ftv2node.png' width=16 height=22>")
leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>"
}
}
else
{
this.renderOb("")
}
}
function drawItem(leftSide)
{
if (browserVersion == 2)
{
doc.write("<layer id='item" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
if (browserVersion == 3)
}
else if (browserVersion == 3)
{
doc.write("<div id='item" + this.id + "' style='display:block;'>")
}
doc.write("\n<table ")
if (browserVersion == 1)
{
doc.write(" id='item" + this.id + "' style='position:block;' ")
}
doc.write(" border=0 cellspacing=0 cellpadding=0>\n")
doc.write("<tr><td>")
doc.write(leftSide)
......@@ -342,9 +373,13 @@ function drawItem(leftSide)
}
doc.write("</td>\n<td valign=middle nowrap>")
if (USETEXTLINKS && this.link!="")
{
doc.write("<a href=" + this.link + ">" + this.desc + "</a>")
}
else
{
doc.write(this.desc)
}
if (this.tagName!="")
{
doc.write(" [external]");
......@@ -352,18 +387,27 @@ function drawItem(leftSide)
doc.write("\n</table>\n")
if (browserVersion == 2)
{
doc.write("</layer>")
if (browserVersion == 3)
}
else if (browserVersion == 3)
{
doc.write("</div>")
}
if (browserVersion == 1) {
if (browserVersion == 1)
{
this.navObj = doc.all["item"+this.id]
this.iconImg = doc.all["itemIcon"+this.id]
} else if (browserVersion == 2) {
}
else if (browserVersion == 2)
{
this.navObj = doc.layers["item"+this.id]
this.iconImg = this.navObj.document.images["itemIcon"+this.id]
doc.yPos=doc.yPos+this.navObj.clip.height
} else if (browserVersion == 3) {
}
else if (browserVersion == 3)
{
this.navObj = doc.getElementById("item"+this.id)
this.iconImg = doc.images.namedItem("itemIcon"+this.id)
}
......@@ -376,9 +420,13 @@ function drawItem(leftSide)
function display()
{
if (browserVersion == 1 || browserVersion == 3)
{
this.navObj.style.display = "block"
}
else
{
this.navObj.visibility = "show"
}
}
function createEntryIndex()
......@@ -429,18 +477,49 @@ function clickOnNode(folderId)
clickedFolder.setState(!state) //open<->close
}
function preLoadIcons()
{
var auxImg
auxImg = new Image();
auxImg.src = "ftv2blank.png";
auxImg.src = "ftv2doc.png";
auxImg.src = "ftv2folderclosed.png";
auxImg.src = "ftv2folderopen.png";
auxImg.src = "ftv2lastnode.png";
auxImg.src = "ftv2link.png";
auxImg.src = "ftv2mlastnode.png";
auxImg.src = "ftv2mnode.png";
auxImg.src = "ftv2node.png";
auxImg.src = "ftv2plastnode.png";
auxImg.src = "ftv2pnode.png";
auxImg.src = "ftv2vertline.png";
}
function initializeDocument()
{
doc = document;
if (doc.all)
browserVersion = 1 //IE4
else
if (doc.layers)
browserVersion = 2 //NS4
else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)
browserVersion = 3 //mozilla
preLoadIcons()
var ua = window.navigator.userAgent.toLowerCase();
if ((ua.indexOf('msie')!=-1) && (navigator.version>=4))
{
browserVersion = 1 // IE >= 4.x
}
else if (ua.indexOf('opera')!=-1)
{
browserVersion = 3; // Opera
}
else if (ua.indexOf('gecko')!=-1)
{
browserVersion = 3; // NS6 or Mozilla
}
else if (ua.indexOf('mozilla')!=-1)
{
browserVersion = 2; // NS4
}
else
browserVersion = 0 //other
{
browserVersion = 0; // unknown or old browser
}
foldersTree.initialize(0, 1, "")
foldersTree.display()
......@@ -460,6 +539,7 @@ function initializeDocument()
// Auxiliary Functions for Folder-Treee backward compatibility
// *********************************************************
function gFld(description, tagName, hreference)
{
folder = new Folder(description, tagName, hreference)
......@@ -492,9 +572,10 @@ function insDoc(parentFolder, document)
// Global variables
// ****************
USETEXTLINKS = 1
indexOfEntries = new Array
nEntries = 0
doc = document
browserVersion = 0
selectedFolder=0
var USETEXTLINKS = 1
var indexOfEntries = new Array
var nEntries = 0
var doc = document
var browserVersion = 0
var selectedFolder=0
......@@ -766,6 +766,9 @@ void linkifyText(const TextGeneratorIntf &out,const char *scName,const char *nam
// );
// check if `word' is a documented class name
if (!word.isEmpty() &&
!(isdigit(word.at(0)) || word.at(0)=='-') &&
// do not try to link digits
// (saves a lot of time for large arrays)
!rightScopeMatch(word,searchName) &&
!rightScopeMatch(scopeName,word)
)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment