Linux vps-4302913.novaexata.com.br 3.10.0-1160.139.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Nov 3 13:30:41 UTC 2025 x86_64
Apache
: 162.214.88.42 | : 216.73.216.14
166 Domain
7.3.33
wwnova
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
share /
doc /
doxygen-1.8.5 /
html /
[ HOME SHELL ]
Name
Size
Permission
Action
arch.html
12.27
KB
-rw-r--r--
archoverview.gif
7.64
KB
-rw-r--r--
autolink.html
10.66
KB
-rw-r--r--
bc_s.png
624
B
-rw-r--r--
bdwn.png
139
B
-rw-r--r--
changelog.html
110.51
KB
-rw-r--r--
closed.png
125
B
-rw-r--r--
commands.html
138.41
KB
-rw-r--r--
config.html
201.27
KB
-rw-r--r--
custcmd.html
6.49
KB
-rw-r--r--
customize.html
19.92
KB
-rw-r--r--
diagrams.html
8.7
KB
-rw-r--r--
docblocks.html
64.54
KB
-rw-r--r--
doxygen.png
3.45
KB
-rw-r--r--
doxygen_logo.gif
29.16
KB
-rw-r--r--
doxygen_logo_low.gif
3.86
KB
-rw-r--r--
doxygen_manual.css
18.53
KB
-rw-r--r--
doxygen_usage.html
6.77
KB
-rw-r--r--
doxywizard_expert.png
29.35
KB
-rw-r--r--
doxywizard_main.png
55.86
KB
-rw-r--r--
doxywizard_menu.png
57.29
KB
-rw-r--r--
doxywizard_page1.png
38.72
KB
-rw-r--r--
doxywizard_page2.png
38.13
KB
-rw-r--r--
doxywizard_page3.png
49.71
KB
-rw-r--r--
doxywizard_page4.png
42.69
KB
-rw-r--r--
doxywizard_usage.html
8.22
KB
-rw-r--r--
dynsections.js
2.91
KB
-rw-r--r--
external.html
6.73
KB
-rw-r--r--
extsearch.html
17.38
KB
-rw-r--r--
extsearch_flow.png
20.57
KB
-rw-r--r--
faq.html
14.27
KB
-rw-r--r--
features.html
8.14
KB
-rw-r--r--
form_0.png
354
B
-rw-r--r--
form_1.png
351
B
-rw-r--r--
form_10.png
889
B
-rw-r--r--
form_11.png
456
B
-rw-r--r--
form_12.png
302
B
-rw-r--r--
form_2.png
366
B
-rw-r--r--
form_3.png
702
B
-rw-r--r--
form_4.png
2.12
KB
-rw-r--r--
form_5.png
2.51
KB
-rw-r--r--
form_6.png
538
B
-rw-r--r--
form_7.png
610
B
-rw-r--r--
form_8.png
217
B
-rw-r--r--
form_9.png
368
B
-rw-r--r--
formula.repository
753
B
-rw-r--r--
formulas.html
6.38
KB
-rw-r--r--
ftv2blank.png
86
B
-rw-r--r--
ftv2cl.png
416
B
-rw-r--r--
ftv2doc.png
652
B
-rw-r--r--
ftv2folderclosed.png
493
B
-rw-r--r--
ftv2folderopen.png
505
B
-rw-r--r--
ftv2lastnode.png
86
B
-rw-r--r--
ftv2link.png
652
B
-rw-r--r--
ftv2mlastnode.png
241
B
-rw-r--r--
ftv2mnode.png
241
B
-rw-r--r--
ftv2mo.png
373
B
-rw-r--r--
ftv2node.png
86
B
-rw-r--r--
ftv2ns.png
370
B
-rw-r--r--
ftv2plastnode.png
227
B
-rw-r--r--
ftv2pnode.png
227
B
-rw-r--r--
ftv2splitbar.png
282
B
-rw-r--r--
ftv2vertline.png
86
B
-rw-r--r--
grouping.html
12.63
KB
-rw-r--r--
htmlcmds.html
14.46
KB
-rw-r--r--
index.html
11.39
KB
-rw-r--r--
infoflow.png
98.24
KB
-rw-r--r--
install.html
16.32
KB
-rw-r--r--
jquery.js
133.32
KB
-rw-r--r--
langhowto.html
27.4
KB
-rw-r--r--
lists.html
5.4
KB
-rw-r--r--
markdown.html
26.65
KB
-rw-r--r--
nav_f.png
136
B
-rw-r--r--
nav_g.png
93
B
-rw-r--r--
nav_h.png
93
B
-rw-r--r--
navtree.css
1.99
KB
-rw-r--r--
navtree.js
35.96
KB
-rw-r--r--
navtreeindex0.js
8.87
KB
-rw-r--r--
navtreeindex1.js
2.4
KB
-rw-r--r--
open.png
115
B
-rw-r--r--
output.html
5.52
KB
-rw-r--r--
pages.html
8.48
KB
-rw-r--r--
perlmod.html
11.26
KB
-rw-r--r--
perlmod_tree.html
23.51
KB
-rw-r--r--
preprocessing.html
11.38
KB
-rw-r--r--
resize.js
2.59
KB
-rw-r--r--
searching.html
10.9
KB
-rw-r--r--
searching.js
773
B
-rw-r--r--
starting.html
20.07
KB
-rw-r--r--
sync_off.png
815
B
-rw-r--r--
sync_on.png
809
B
-rw-r--r--
tab_a.png
124
B
-rw-r--r--
tab_b.png
149
B
-rw-r--r--
tab_h.png
145
B
-rw-r--r--
tab_s.png
156
B
-rw-r--r--
tabs.css
1.14
KB
-rw-r--r--
trouble.html
8.82
KB
-rw-r--r--
xmlcmds.html
8.39
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : arch.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.5"/> <title>Doxygen: Doxygen's Internals</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> $(document).ready(initResizable); $(window).load(resizeHeight); </script> <link href="doxygen_manual.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">Doxygen </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.5 --> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> $(document).ready(function(){initNavTree('arch.html','');}); </script> <div id="doc-content"> <div class="header"> <div class="headertitle"> <div class="title">Doxygen's Internals </div> </div> </div><!--header--> <div class="contents"> <div class="textblock"><h3>Doxygen's internals</h3> <p><b>Note that this section is still under construction!</b></p> <p>The following picture shows how source files are processed by doxygen.</p> <div class="image"> <img src="archoverview.gif" alt="archoverview.gif"/> <div class="caption"> Data flow overview</div></div> <p>The following sections explain the steps above in more detail.</p> <h3>Config parser</h3> <p>The configuration file that controls the settings of a project is parsed and the settings are stored in the singleton class <code>Config</code> in <code>src/config.h</code>. The parser itself is written using <code>flex</code> and can be found in <code>src/config.l</code>. This parser is also used directly by <code>doxywizard</code>, so it is put in a separate library.</p> <p>Each configuration option has one of 5 possible types: <code>String</code>, <code>List</code>, <code>Enum</code>, <code>Int</code>, or <code>Bool</code>. The values of these options are available through the global functions <code>Config_getXXX()</code>, where <code>XXX</code> 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: <code>Config_getBool</code>("GENERATE_TESTLIST") returns a reference to a boolean value that is <code>TRUE</code> if the test list was enabled in the config file.</p> <p>The function <code>readConfiguration()</code> in <code>src/doxygen.cpp</code> reads the command line options and then calls the configuration parser.</p> <h3>C Preprocessor</h3> <p>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).</p> <p>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.</p> <p>Another difference is that the preprocessor parses, but not actually includes code when it encounters a <code>#include</code> (with the exception of <code>#include</code> 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.</p> <p>The preprocessor is written using <code>flex</code> and can be found in <code>src/pre.l</code>. For condition blocks (<code>#if</code>) evaluation of constant expressions is needed. For this a <code>yacc</code> based parser is used, which can be found in <code>src/constexp.y</code> and <code>src/constexp.l</code>.</p> <p>The preprocessor is invoked for each file using the <code>preprocessFile()</code> function declared in <code>src/pre.h</code>, and will append the preprocessed result to a character buffer. The format of the character buffer is</p> <pre class="fragment">0x06 file name 1 0x06 preprocessed contents of file 1 ... 0x06 file name n 0x06 preprocessed contents of file n </pre><h3>Language parser</h3> <p>The preprocessed input buffer is fed to the language parser, which is implemented as a big state machine using <code>flex</code>. It can be found in the file <code>src/scanner.l</code>. There is one parser for all languages (C/C++/Java/IDL). The state variables <code>insideIDL</code> and <code>insideJava</code> are uses at some places for language specific choices.</p> <p>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 <code>src/entry.h</code> and is a blob of loosely structured information. The most important field is <code>section</code> which specifies the kind of information contained in the entry.</p> <p>Possible improvements for future versions:</p> <ul> <li>Use one scanner/parser per language instead of one big scanner.</li> <li>Move the first pass parsing of documentation blocks to a separate module.</li> <li>Parse defines (these are currently gathered by the preprocessor, and ignored by the language parser).</li> </ul> <h3>Data organizer</h3> <p>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.</p> <p>Each step has a function defined in <code>src/doxygen.cpp</code>, which operates on the tree of entries, built during language parsing. Look at the "Gathering information" part of <code>parseInput()</code> for details.</p> <p>The result of this step is a number of dictionaries, which can be found in the Doxygen "namespace" defined in <code>src/doxygen.h</code>. Most elements of these dictionaries are derived from the class <code>Definition</code>; The class <code>MemberDef</code>, for instance, holds all information for a member. An instance of such a class can be part of a file ( class <code>FileDef</code> ), a class ( class <code>ClassDef</code> ), a namespace ( class <code>NamespaceDef</code> ), a group ( class <code>GroupDef</code> ), or a Java package ( class <code>PackageDef</code> ).</p> <h3>Tag file parser</h3> <p>If tag files are specified in the configuration file, these are parsed by a SAX based XML parser, which can be found in <code>src/tagreader.cpp</code>. The result of parsing a tag file is the insertion of <code>Entry</code> objects in the entry tree. The field <code>Entry::tagInfo</code> is used to mark the entry as external, and holds information about the tag file.</p> <h3>Documentation parser</h3> <p>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.</p> <p>The parser is written in C++ and can be found in src/docparser.cpp. The tokens that are eaten by the parser come from src/doctokenizer.l. Code fragments found in the comment blocks are passed on to the source parser.</p> <p>The main entry point for the documentation parser is <code>validatingParseDoc()</code> declared in <code>src/docparser.h</code>. For simple texts with special commands <code>validatingParseText()</code> is used.</p> <h3>Source parser</h3> <p>If source browsing is enabled or if code fragments are encountered in the documentation, the source parser is invoked.</p> <p>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.</p> <p>The main entry point for the code parser is <code>parseCode()</code> declared in <code>src/code.h</code>.</p> <h3>Output generators</h3> <p>After data is gathered and cross-referenced, doxygen generates output in various formats. For this it uses the methods provided by the abstract class <code>OutputGenerator</code>. In order to generate output for multiple formats at once, the methods of <code>OutputList</code> are called instead. This class maintains a list of concrete output generators, where each method called is delegated to all generators in the list.</p> <p>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 <code>disable()</code> and <code>enable()</code> methods for this. The methods <code>OutputList::pushGeneratorState()</code> and <code>OutputList::popGeneratorState()</code> are used to temporarily save the set of enabled/disabled output generators on a stack.</p> <p>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:</p> <ul> <li>an interactive source browser</li> <li>a class diagram generator</li> <li>computing code metrics.</li> </ul> <h3>Debugging</h3> <p>Since doxygen uses a lot of <code>flex</code> code it is important to understand how <code>flex</code> works (for this one should read the man page) and to understand what it is doing when <code>flex</code> 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.</p> <p>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:</p> <pre class="fragment">#!/usr/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\) (-i )?-P([a-zA-Z]+)YY -t $file/(LEX) -d \1-P\2YY -t $file/g ) { print "Enabling debug info for $file\n"; } elsif ( s/\(LEX\) -d (-i )?-P([a-zA-Z]+)YY -t $file/(LEX) \1-P\2YY -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</pre> Return to the <a href="index.html">index</a>. </div></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li> </ul> </div> </body> </html>
Close