diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/Doxyfile | 2 | ||||
-rw-r--r-- | doc/arch.doc | 240 | ||||
-rw-r--r-- | doc/archoverview.eps | 380 | ||||
-rw-r--r-- | doc/archoverview.gif | bin | 0 -> 7822 bytes | |||
-rw-r--r-- | doc/config.doc | 9 | ||||
-rw-r--r-- | doc/doxygen_manual.tex | 3 | ||||
-rw-r--r-- | doc/index.doc | 10 | ||||
-rw-r--r-- | doc/language.doc | 2 |
8 files changed, 642 insertions, 4 deletions
diff --git a/doc/Doxyfile b/doc/Doxyfile index ca536a7..637b172 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -36,7 +36,7 @@ INPUT = index.doc install.doc starting.doc docblocks.doc lists.doc \ doxygen_usage.doc doxytag_usage.doc doxysearch_usage.doc \ doxywizard_usage.doc \ installdox_usage.doc output.doc autolink.doc \ - config.doc commands.doc htmlcmds.doc language.doc + config.doc commands.doc htmlcmds.doc language.doc arch.doc FILE_PATTERNS = *.cpp *.h *.doc EXAMPLE_PATH = ../examples RECURSIVE = NO diff --git a/doc/arch.doc b/doc/arch.doc new file mode 100644 index 0000000..3000bc5 --- /dev/null +++ b/doc/arch.doc @@ -0,0 +1,240 @@ +/****************************************************************************** + * + * + * + * Copyright (C) 1997-2001 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ +/*! \page arch + +\section arch Doxygen's Internals + +<B>Note that this section is still under construction!</B> + +The following picture shows how source files are processed by doxygen. + +\image html archoverview.gif "Data flow overview" +\image latex archoverview.eps "Data flow overview" width=14cm + +The following sections explain the steps above in more detail. + +<h3>Config parser</h3> + +The configuration file that controls the settings of a project is parsed +and the settings are stored in the singleton class \c Config +in \c src/config.h. The parser itself is written using \c flex and can be +found in \c src/config.l. This parser is also used directly by \c doxywizard, +so it is put in a separate library. + +Each configuration option has one of 5 possible types: \c String, +\c List, \c Enum, \c Int, or \c Bool. The values of these options are +available through the global functions \c Config_getXXX(), where \c XXX is the +type of the option. The argument of these function is a string naming +the option as it appears in the configuration file. For instance: +\c Config_getBool("GENERATE_TESTLIST") returns a reference to a boolean +value that is \c TRUE if the test list was enabled in the config file. + +The function \c readConfiguration() in \c src/doxygen.cpp +reads the command line options and then calls the configuration parser. + +<h3>C Preprocessor</h3> + +The input files mentioned in the config file are (by default) fed to the +C Preprocessor (after being piped through a user defined filter if available). + +The way the preprocessor works differs somewhat from a standard C Preprocessor. +By default it does not do macro expansion, although it can be configured to +expand all macros. Typical usage is to only expand a user specified set +of macros. This is to allow macro names to appear in the type of +function parameters for instance. + +Another difference is that the preprocessor parses, but not actually includes +code when it encounters a #include (with the exception of #include +found inside { ... } blocks). The reasons behind this deviation from +the standard is to prevent feeding multiple definitions of the +same functions/classes to doxygen's parser. If all source files would +include a common header file for instance, the class and type +definitions (and their documentation) would be present in each +translation unit. + +The preprocessor is written using \c flex and can be found in +\c src/pre.l. For condition blocks (#if) evaluation of constant expressions +is needed. For this a \c yacc based parser is used, which can be found +in \c src/constexp.y and \c src/constexp.l. + +The preprocessor is invoked for each file using the \c preprocessFile() +function declared in \c src/pre.h, and will append the preprocessed result +to a character buffer. The format of the character buffer is + +\verbatim +0x06 file name 1 +0x06 preprocessed contents of file 1 +... +0x06 file name n +0x06 preprocessed contents of file n +\endverbatim + +<h3>Language parser</h3> + +The preprocessed input buffer is fed to the language parser, which is +implemented as a big state machine using \c flex. It can be found +in the file \c src/scanner.l. There is one parser for all +languages (C/C++/Java/IDL). The state variables \c insideIDL +and \c insideJava are uses at some places for language specific choices. + +The task of the parser is to convert the input buffer into a tree of entries +(basically an abstract syntax tree). An entry is defined in \c src/entry.h +and is a blob of loosely structured information. The most important field +is \c section which specifies the kind of information contained in the entry. + +Possible improvements for future versions: + - Use one scanner/parser per language instead of one big scanner. + - Move the first pass parsing of documentation blocks to a separate module. + - Parse defines (these are currently gathered by the preprocessor, and + ignored by the language parser). + +<h3>Data organizer</h3> + +This step consists of many smaller steps, that build +dictionaries of the extracted classes, files, namespaces, +variables, functions, packages, pages, and groups. Besides building +dictionaries, during this step relations (such as inheritance relations), +between the extracted entities are computed. + +Each step has a function defined in \c src/doxygen.cpp, which operates +on the tree of entries, built during language parsing. Look at the +"Gathering information" part of \c parseInput() for details. + +The result of this step is a number of dictionaries, which can be +found in the Doxygen "namespace" defined in \c src/doxygen.h. Most +elements of these dictionaries are derived from the class \c Definition; +The class \c MemberDef, for instance, holds all information for a member. +An instance of such a class can be part of a file ( class \c FileDef ), +a class ( class \c ClassDef ), a namespace ( class \c NamespaceDef ), +a group ( class \c GroupDef ), or a Java package ( class \c PackageDef ). + +<h3>Tag file parser</h3> + +If tag files are specified in the configuration file, these are parsed +by a SAX based XML parser, which can be found in \c src/tagreader.cpp. +The result of parsing a tag file is the insertion of \c Entry objects in the +entry tree. The field \c Entry::tagInfo is used to mark the entry as +external, and holds information about the tag file. + +<h3>Documentation parser</h3> + +Special comment blocks are stored as strings in the entities that they +document. There is a string for the brief description and a string +for the detailed description. The documentation parser reads these +strings and executes the commands it finds in it (this is the second pass +in parsing the documentation). It writes the result directly to the output +generators. + +The parser is written using \c flex and can be found in \c src/doc.l +Code fragments found in the comment blocks are passed on to the source parser. + +The main entry point for the documentation parser is \c parseDoc() +declared in \c src/doc.h. For simple texts with special +commands \c parseText() is used. + +<h3>Source parser</h3> + +If source browsing is enabled or if code fragments are encountered in the +documentation, the source parser is invoked. + +The code parser tries to cross-reference to source code it parses with +documented entities. It also does syntax highlighting of the sources. The +output is directly written to the output generators. + +The main entry point for the code parser is \c parseCode() +declared in \c src/code.h. + +<h3>Output generators</h3> + +After data is gathered and cross-referenced, doxygen generates +output in various formats. For this it uses the methods provided by +the abstract class \c OutputGenerator. In order to generate output +for multiple formats at once, the methods of \c OutputList are called +instead. This class maintains a list of concrete output generators, +where each method called is delegated to all generators in the list. + +To allow small deviations in what is written to the output for each +concrete output generator, it is possible to temporarily disable certain +generators. The OutputList class contains various \c disable() and \c enable() +methods for this. The methods \c OutputList::pushGeneratorState() and +\c OutputList::popGeneratorState() are used to temporarily save the +set of enabled/disabled output generators on a stack. + +The XML is generated directly from the gathered data structures. In the +future XML will be used as an intermediate language (IL). The output +generators will then use this IL as a starting point to generate the +specific output formats. The advantage of having an IL is that various +independently developed tools written in various languages, +could extract information from the XML output. Possible tools could be: +- an interactive source browser +- a class diagram generator +- computing code metrics. + +<h3>Debugging</h3> + +Since doxygen uses a lot of \c flex code it is important to understand +how \c flex works (for this one should read the man page) +and to understand what it is doing when \c flex is parsing some input. +Fortunately, when flex is used with the -d option it outputs what rules +matched. This makes it quite easy to follow what is going on for a +particular input fragment. + +To make it easier to toggle debug information for a given flex file I +wrote the following perl script, which automatically adds or removes -d +from the correct line in the Makefile: + +\verbatim +#!/usr/local/bin/perl + +$file = shift @ARGV; +print "Toggle debugging mode for $file\n"; + +# add or remove the -d flex flag in the makefile +unless (rename "Makefile.libdoxygen","Makefile.libdoxygen.old") { + print STDERR "Error: cannot rename Makefile.libdoxygen!\n"; + exit 1; +} +if (open(F,"<Makefile.libdoxygen.old")) { + unless (open(G,">Makefile.libdoxygen")) { + print STDERR "Error: opening file Makefile.libdoxygen for writing\n"; + exit 1; + } + print "Processing Makefile.libdoxygen...\n"; + while (<F>) { + if ( s/\(LEX\) -P([a-z]+)YY -t $file/(LEX) -d -P\1YY -t $file/g ) { + print "Enabling debug info for $file\n"; + } + elsif ( s/\(LEX\) -d -P([a-z]+)YY -t $file/(LEX) -P\1YY -t $file/g ) { + print "Disabling debug info for $file\n"; + } + print G "$_"; + } + close F; + unlink "Makefile.libdoxygen.old"; +} +else { + print STDERR "Warning file Makefile.libdoxygen.old does not exist!\n"; +} + +# touch the file +$now = time; +utime $now, $now, $file +\endverbatim + +*/ + + diff --git a/doc/archoverview.eps b/doc/archoverview.eps new file mode 100644 index 0000000..b41d36c --- /dev/null +++ b/doc/archoverview.eps @@ -0,0 +1,380 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: archoverview.eps +%%Creator: fig2dev Version 3.2 Patchlevel 1 +%%CreationDate: Sat Sep 8 19:41:40 2001 +%%For: root@blizzard (root) +%%Orientation: Portrait +%%BoundingBox: 0 0 733 511 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%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 + +end +save +-31.0 537.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 + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n -1000 9949 m -1000 -1000 l 13719 -1000 l 13719 9949 l cp clip + 0.06000 0.06000 sc +7.500 slw +% Ellipse +n 4425 1725 900 900 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 5100 4200 900 900 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 10500 4275 900 900 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 2402 4198 900 900 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 7863 8104 837 837 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 5113 6622 887 887 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 9375 6450 837 837 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 7800 4200 900 900 0 360 DrawEllipse gs col0 s gr + +% Polyline +gs clippath +1380 4170 m 1500 4200 l 1380 4230 l 1515 4230 l 1515 4170 l cp +clip +n 600 4200 m 1500 4200 l gs col0 s gr gr + +% arrowhead +n 1380 4170 m 1500 4200 l 1380 4230 l 1380 4200 l 1380 4170 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4080 4170 m 4200 4200 l 4080 4230 l 4215 4230 l 4215 4170 l cp +clip +n 3300 4200 m 4200 4200 l gs col0 s gr gr + +% arrowhead +n 4080 4170 m 4200 4200 l 4080 4230 l 4080 4200 l 4080 4170 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9480 4170 m 9600 4200 l 9480 4230 l 9615 4230 l 9615 4170 l cp +clip +n 8700 4200 m 9600 4200 l gs col0 s gr gr + +% arrowhead +n 9480 4170 m 9600 4200 l 9480 4230 l 9480 4200 l 9480 4170 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +11881 3482 m 12000 3450 l 11910 3535 l 12028 3469 l 11999 3416 l cp +clip +n 11325 3825 m 12000 3450 l gs col0 s gr gr + +% arrowhead +n 11881 3482 m 12000 3450 l 11910 3535 l 11895 3508 l 11881 3482 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +11876 4050 m 12000 4050 l 11891 4108 l 12022 4075 l 12007 4017 l cp +clip +n 11400 4200 m 12000 4050 l gs col0 s gr gr + +% arrowhead +n 11876 4050 m 12000 4050 l 11891 4108 l 11884 4079 l 11876 4050 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +11900 5028 m 12000 5100 l 11877 5083 l 12003 5133 l 12025 5078 l cp +clip +n 11250 4800 m 12000 5100 l gs col0 s gr gr + +% arrowhead +n 11900 5028 m 12000 5100 l 11877 5083 l 11889 5055 l 11900 5028 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +11891 4517 m 12000 4575 l 11876 4575 l 12007 4608 l 12022 4550 l cp +clip +n 11400 4425 m 12000 4575 l gs col0 s gr gr + +% arrowhead +n 11891 4517 m 12000 4575 l 11876 4575 l 11884 4546 l 11891 4517 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +11880 2820 m 12000 2850 l 11880 2880 l 12015 2880 l 12015 2820 l cp +clip +n 7800 3300 m 7800 2850 l 12000 2850 l gs col0 s gr gr + +% arrowhead +n 11880 2820 m 12000 2850 l 11880 2880 l 11880 2850 l 11880 2820 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +10470 5295 m 10500 5175 l 10530 5295 l 10530 5160 l 10470 5160 l cp +clip +n 8700 8100 m 10500 8100 l 10500 5175 l gs col0 s gr gr + +% arrowhead +n 10470 5295 m 10500 5175 l 10530 5295 l 10500 5295 l 10470 5295 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4455 705 m 4425 825 l 4395 705 l 4395 840 l 4455 840 l cp +clip +n 4425 450 m 4425 825 l gs col0 s gr gr + +% arrowhead +n 4455 705 m 4425 825 l 4395 705 l 4425 705 l 4455 705 l cp gs 0.00 setgray ef gr col0 s +% Polyline + [60] 0 sd +gs clippath +3405 1695 m 3525 1725 l 3405 1755 l 3540 1755 l 3540 1695 l cp +clip +n 3525 1725 m 2400 1725 l 2400 3300 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 3405 1695 m 3525 1725 l 3405 1755 l 3405 1725 l 3405 1695 l cp gs 0.00 setgray ef gr col0 s +% Polyline + [60] 0 sd +gs clippath +5445 1680 m 5325 1650 l 5445 1620 l 5310 1620 l 5310 1680 l cp +clip +n 5325 1650 m 7575 1650 l 7575 3300 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 5445 1680 m 5325 1650 l 5445 1620 l 5445 1650 l 5445 1680 l cp gs 0.00 setgray ef gr col0 s +% Polyline + [60] 0 sd +gs clippath +4845 2670 m 4875 2550 l 4905 2670 l 4905 2535 l 4845 2535 l cp +clip +n 4875 2550 m 4875 3300 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 4845 2670 m 4875 2550 l 4905 2670 l 4875 2670 l 4845 2670 l cp gs 0.00 setgray ef gr col0 s +% Polyline + [60] 0 sd +n 7575 1650 m 10500 1650 l 10500 3375 l gs col0 s gr [] 0 sd +% Polyline +gs clippath +6930 8070 m 7050 8100 l 6930 8130 l 7065 8130 l 7065 8070 l cp +clip +n 2400 5100 m 2400 8100 l 7050 8100 l gs col0 s gr gr + +% arrowhead +n 6930 8070 m 7050 8100 l 6930 8130 l 6930 8100 l 6930 8070 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6780 4170 m 6900 4200 l 6780 4230 l 6915 4230 l 6915 4170 l cp +clip +n 6000 4200 m 6900 4200 l gs col0 s gr gr + +% arrowhead +n 6780 4170 m 6900 4200 l 6780 4230 l 6780 4200 l 6780 4170 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7090 4932 m 7200 4875 l 7130 4977 l 7231 4887 l 7191 4843 l cp +clip +n 5850 6075 m 7200 4875 l gs col0 s gr gr + +% arrowhead +n 7090 4932 m 7200 4875 l 7130 4977 l 7110 4955 l 7090 4932 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7830 7155 m 7800 7275 l 7770 7155 l 7770 7290 l 7830 7290 l cp +clip +n 7800 7275 m 7800 5100 l gs col0 s gr gr + +% arrowhead +n 7830 7155 m 7800 7275 l 7770 7155 l 7800 7155 l 7830 7155 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +8886 5583 m 8925 5700 l 8835 5615 l 8908 5729 l 8958 5697 l cp +clip +n 8400 4875 m 8925 5700 l gs col0 s gr gr + +% arrowhead +n 8886 5583 m 8925 5700 l 8835 5615 l 8861 5599 l 8886 5583 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +8575 7427 m 8475 7500 l 8529 7389 l 8442 7492 l 8488 7531 l cp +clip +n 8850 7050 m 8475 7500 l gs col0 s gr gr + +% arrowhead +n 8575 7427 m 8475 7500 l 8529 7389 l 8552 7408 l 8575 7427 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +10106 5255 m 10200 5175 l 10155 5290 l 10233 5180 l 10184 5145 l cp +clip +n 9825 5700 m 10200 5175 l gs col0 s gr gr + +% arrowhead +n 10106 5255 m 10200 5175 l 10155 5290 l 10130 5273 l 10106 5255 l cp gs 0.00 setgray ef gr col0 s +/Helvetica ff 180.00 scf sf +3900 1725 m +gs 1 -1 sc (Config parser) col0 sh gr +/Helvetica ff 180.00 scf sf +4425 4275 m +gs 1 -1 sc (Language parser) col0 sh gr +/Helvetica ff 180.00 scf sf +1725 4275 m +gs 1 -1 sc (C Preprocessor) col0 sh gr +/Helvetica ff 180.00 scf sf +12150 3525 m +gs 1 -1 sc (HTML) col0 sh gr +/Helvetica ff 180.00 scf sf +12150 4125 m +gs 1 -1 sc (LaTeX) col0 sh gr +/Helvetica ff 180.00 scf sf +12150 4650 m +gs 1 -1 sc (RTF) col0 sh gr +/Helvetica ff 180.00 scf sf +12150 2925 m +gs 1 -1 sc (XML) col0 sh gr +/Helvetica ff 180.00 scf sf +3450 4500 m +gs 1 -1 sc (input) col0 sh gr +/Helvetica ff 180.00 scf sf +3450 4725 m +gs 1 -1 sc (string) col0 sh gr +/Helvetica ff 180.00 scf sf +6150 4500 m +gs 1 -1 sc (entry) col0 sh gr +/Helvetica ff 180.00 scf sf +6150 4725 m +gs 1 -1 sc (tree) col0 sh gr +/Helvetica ff 180.00 scf sf +525 3975 m +gs 1 -1 sc (input files) col0 sh gr +/Helvetica ff 180.00 scf sf +12150 5175 m +gs 1 -1 sc (Man) col0 sh gr +/Helvetica ff 180.00 scf sf +4650 750 m +gs 1 -1 sc (config file) col0 sh gr +/Helvetica ff 180.00 scf sf +7950 5475 m +gs 1 -1 sc (drives) col0 sh gr +/Helvetica ff 180.00 scf sf +8850 4050 m +gs 1 -1 sc (drives) col0 sh gr +/Helvetica ff 180.00 scf sf +2475 3150 m +gs 1 -1 sc (get settings) col0 sh gr +/Helvetica ff 180.00 scf sf +6675 5550 m +gs 1 -1 sc (entry) col0 sh gr +/Helvetica ff 180.00 scf sf +6675 5775 m +gs 1 -1 sc (tree) col0 sh gr +/Helvetica ff 180.00 scf sf +9525 5325 m +gs 1 -1 sc (drives) col0 sh gr +/Helvetica ff 180.00 scf sf +8700 7500 m +gs 1 -1 sc (drives) col0 sh gr +/Helvetica ff 180.00 scf sf +4575 6675 m +gs 1 -1 sc (tag file parser) col0 sh gr +/Helvetica ff 180.00 scf sf +8925 6525 m +gs 1 -1 sc (Doc Parser) col0 sh gr +/Helvetica ff 180.00 scf sf +7275 8175 m +gs 1 -1 sc (Source Parser) col0 sh gr +/Helvetica ff 180.00 scf sf +7200 4275 m +gs 1 -1 sc (Data organiser) col0 sh gr +/Helvetica ff 180.00 scf sf +9750 4275 m +gs 1 -1 sc (Output generators) col0 sh gr +/Helvetica ff 180.00 scf sf +8775 8325 m +gs 1 -1 sc (drives) col0 sh gr +$F2psEnd +rs diff --git a/doc/archoverview.gif b/doc/archoverview.gif Binary files differnew file mode 100644 index 0000000..f404076 --- /dev/null +++ b/doc/archoverview.gif diff --git a/doc/config.doc b/doc/config.doc index dbb0e53..b9f0e56 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -166,6 +166,7 @@ followed by the descriptions of the tags grouped by category. <li> \refitem cfg_short_names SHORT_NAMES <li> \refitem cfg_show_include_files SHOW_INCLUDE_FILES <li> \refitem cfg_show_used_files SHOW_USED_FILES +<li> \refitem cfg_skip_function_macros SKIP_FUNCTION_MACROS <li> \refitem cfg_sort_member_docs SORT_MEMBER_DOCS <li> \refitem cfg_source_browser SOURCE_BROWSER <li> \refitem cfg_strip_code_comments STRIP_CODE_COMMENTS @@ -1070,6 +1071,14 @@ EXTRA_PACKAGES = times The macro definition that is found in the sources will be used. Use the \c PREDEFINED tag if you want to use a different macro definition. +\anchor cfg_skip_function_macros +<dt>\c SKIP_FUNCTION_MACROS <dd> + \addindex SKIP_FUNCTION_MACROS + If the \c SKIP_FUNCTION_MACROS tag is set to \c YES (the default) then + doxygen's preprocessor will remove all function-like macros that are alone + on a line and do not end with a semicolon. Such function macros are typically + used for boiler-plate code, and will confuse the parser if not removed. + </dl> \subsection config_extref External reference options \anchor cfg_tagfiles diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex index be93b99..bc1dfbb 100644 --- a/doc/doxygen_manual.tex +++ b/doc/doxygen_manual.tex @@ -16,6 +16,7 @@ \usepackage{a4wide} \usepackage{makeidx} \usepackage{fancyhdr} +\usepackage{graphicx} \usepackage{epsf} \usepackage{doxygen} \usepackage{multicol} @@ -68,6 +69,8 @@ Written by Dimitri van Heesch\\[2ex] \input{config} \input{commands} \input{htmlcmds} +\part{Developers Manual} +\input{arch} \input{langhowto} \printindex \end{document} diff --git a/doc/index.doc b/doc/index.doc index 9c030cb..47248d1 100644 --- a/doc/index.doc +++ b/doc/index.doc @@ -73,7 +73,7 @@ but is set-up to be highly portable. As a result, it runs on most other Unix flavors as well. Furthermore, an executable for Windows 9x/NT is also available. -This manual is divided into two parts, each of which is divided into several +This manual is divided into three parts, each of which is divided into several sections. The first part forms a user manual: @@ -117,11 +117,17 @@ The second part forms a reference manual: used within the documentation. <li>Section \ref htmlcmds shows an overview of the HTML commands that can be used within the documentation. +</ul> + +The third part provides information for developers: + +<ul> +<li>Section \ref arch gives a global overview of how doxygen is internally + structured. <li>Section \ref langhowto explains how to add support for new output languages. </ul> - <h2>Projects using doxygen</h2> I have compiled a diff --git a/doc/language.doc b/doc/language.doc index 91046f2..101273f 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -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.9-20010819), 24 languages +Currently (version 1.2.10), 24 languages are supported (sorted alphabetically): Brazilian Portuguese, Chinese, Croatian, Czech, Danish, Dutch, English, Finnish, French, German, |