Home
Manual for version 1.8.9.1 Written by Dimitri van Heesch ©1997-2015
Contents
1. drives A Doc Parser drives drives Figure 26 1 Data flow overview The following sections explain the steps above in more detail Config parser The configuration file that controls the settings of a project is parsed and the settings are stored in the singleton class Config insrc config h The parser itself is written using flex and can be found in src config 1 This parser is also used directly by doxywizard so it is put in a separate library Each configuration option has one of 5 possible types String List Enum Int or Bool The values of these 200 Doxygen s internals options are available through the global functions Config_getXXX where 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 Config_getBool GENERATE_TESTLIST returns a reference to a boolean value that is TRUE if the test list was enabled in the config file The function readConfiguration insrc doxygen cpp reads the command line options and then calls the configuration parser C Preprocessor 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
2. a 88 17 13 Help get the cryptic message input buffer overflow can t enlarge buffer because scanner uses REJECT oia pios el o da ia dk a as ar a Bo eR 88 17 14 When running make in the latex dir get TeX capacity exceeded Now what 88 17 15 Why are dependencies via STL classes not shown in the dot graphs 88 17 16 have problems getting the search engine to work with PHP5 and or windows 88 17 17 Can I configure doxygen from the commandline 2 2 0 o ee 88 17 18 How did doxygen get its name ooo ee 89 17 19 What was the reason to develop doxygen 2 2 ee ee 89 18 Troubleshooting 91 T81 Kriown POBEMS lt A A A a ee ee eR Re RO 91 T82 dd sl 2 co a anandi ak anso Sk es ee ee ek as da 92 18 8 How toreporta Dug s c carare erriei tieda ki a devas 92 ll Reference Manual 93 19 Features 95 20 Doxygen usage 97 20 4 Fingetuning Ie OUIPAL sor ae eS eR A a E a we ae 8 97 21 Doxywizard usage 99 22 Configuration 105 Bed POMAR Sed ae ee we Gee ee Ge dee Gd a 105 22 2 Project related configuration options o ee sacc a ero wa e wu ee 107 22 3 Build related configuration pti ns lt soo se a sa eose aa a a a a a a 111 22 4 Configuration options related to warning and progress Messages o oo 115 Generated by Doxygen CONTENTS Vv 22 5 Configuration options related to the input files 0 oo e 116 22 6 Co
3. The default value is NO EXTRACT_LOCAL CLASSES If the EXTRACT_LOCAL_CLASSES tag is set to YES classes and structs de fined locally in source files will be included in the documentation If set to NO only classes defined in header files are included Does not have any effect for Java sources The default value is YES EXTRACT_LOCAL_METHODS This flag is only useful for Objective C code If set to YES local methods which are defined in the implementation section but not in the interface are included in the documentation If set to NO only methods in the interface are included The default value is NO EXTRACT_ANON_NSPACES If this flag is set to YES the members of anonymous namespaces will be extracted and appear in the documentation as a namespace called anonymous_namespaceffile where file will be replaced with the base name of the file that contains the anonymous namespace By default anonymous namespace are hidden The default value is NO HIDE_UNDOC_MEMBERS Ifthe HIDE_UNDOC_MEMBERS tag is set to YES doxygen will hide all undocumented members inside documented classes or files If set to NO these members will be included in the various overviews but no documentation section is generated This option has no effect if EXTRACT_ALL is enabled The default value is NO HIDE_UNDOC_CLASSES Ifthe HIDE_UNDOC_CLASSES tag is set to YES doxygen will hide all undocumented classes that are
4. 22 3 OUTPUT LANGUAGE 2 22 2 SHOW NAMESPACES oaoa naaa ua unana 22 3 PAPER TYPE cio aaa ga a 22 9 SHOW_USED FILES 0 22 3 PDF HYPERLINKS n i dea de ah esa on ha Bowe eee 22 9 SIP SUPPORT 2 2008 22 2 PERLMOD LATEX csie dos vee ESEG p aR a e ewe 22 15 SKIP_FUNCTION_MACROS 22 16 PERLMOD_MAKEVAR_PREFIX 22 15 SORT_BRIEF_DOCS 00 223 PERLMOD PREITY gt paa da fe bs ee oe bee we 22 15 SORT_BY_SCOPE NAME 223 PERL_PATH ooo 22 17 SORT_GROUP_NAMES 22 3 PLANTUML_INCLUDE PATH 22 18 SORT MEMBERS CTORS 1ST 223 PLANTUML_JAR_PATH 22 18 SORT MEMBER DOCS 223 PREDEFINED ET E E A TN E O T a a te a 22 1 6 SOURCE_BROWSER OY 22 6 PAOUECTOBRIES gt ce cau o en eR bm 22 2 SOURCE TOOLTIPS aay PROJECT LOGO aaua eee eee 22 2 STRICT_PROTO MATCHING 22 3 AAA 0 rs ee pas STRIP_CODE_COMMENTS 22 6 ret oO CREE WADE E BAe STRIP_FROM_INC_PATH 22 2 geen pes e ok Bi th ak oo STRIP_FROM PATH oaoa aa aaa aaau aa 22 2 A PA SS SUBGROUPNG 4 625 dera 225 QHP_CUST FILTER_ATTRS 22 8 cgi shila pee QHP_CUST FILTER_NAME 22 8 O A a i TAGRLES p Lio a e ea aa sd 22 17 QHP_NAMESPACE 22 8 ye wine ro Bee Ge Py E occ hh Beavis dace Oh a HA a wh Sek pi eee a s ei TEMPLA
5. 22 8 RAVE DOT 066 babi Ci wt ae dd 22 18 DOCSET_PUBLISHER_NAME 22 8 BMG LOGATION o fe ec eed fe a 22 8 DOTALE DIRS o ooo en a ee Pk 22 18 HIDE_COMPOUND_REFERENCE 22 3 DOT CLEANUP 2 c o ore ee eee ee 22 18 HIDE_FRIEND_COMPOUNDS 22 3 DOT_FONTNAME o ccoo air 22 18 HIDE IN BOOBY DOCS cacon eee es 22 3 DOT FONTPATH 2 che eg ee eg eee ee eee 22 18 HIDE SCOPE_NAMES 2 2 20 55 605 0 22 3 DOT_FONTSIZE iio osoni ee eee 22 18 HIDE UNDOC CLASSES 2 5 2 ooo ee 22 3 DOT_GRAPH_MAX_NODES 22 18 HIDE_UNDOC_MEMBERS 22 3 DOT_IMAGE_FORMAT 22 18 HIDE_UNDOC_RELATIONS 22 18 DOT_MULTILTARGETS 22 18 HTML_COLORSTYLE_GAMMA 22 8 DOT_NUM_THREADS 22 18 HTML_COLORSTYLE_HUE 22 8 DOT PAT o og one go ee a oe Eee ee 22 18 HTML_COLORSTYLE_SAT 2 22 cece eae es 22 8 DOT_TRANSPARENT 22 18 HTML_DYNAMIC_SECTIONS 22 8 DOXYFILE ENCODING co cirer ceo 22 2 HTML EXTRA RILES ooo cocoa 22 8 EGLIPSE DOG JD osod eregi rep ea 22 8 HTML_EXTRA_STYLESHEET lt caccaru 22 8 ENABLED SECTIONS girre coo 22 3 HTML_FILE EXTENSION ooo 22 8 ENABLE_PREPROCESSING 22 16 HTML FOOTER a sians pi ei be ees 22 8 ENUM_VALUES_PER_LINE 22 8 HTML_HEADER 2 2256 cei eee eee es 22 8 EXAMPLE PATH ooo ee bees 22 5 HTML_INDEX_NUM_ENTRI
6. Starts a block of text that will be verbatim included in the generated HTML documentation only The block ends with a endhtmlonly command This command can be used to include HTML code that is too complex for doxygen i e applets java scripts and HTML tags that require specific attributes Normally the contents between htmlonly and endhtmlonly is inserted as is When you want to insert a HTML fragment that has block scope like a table or list which should appear outside lt p gt lt p gt this can lead to invalid HTML You can use htmlonly block to make doxygen end the current paragraph and restart it after endhtmlonly Note environment variables like HOME are resolved inside a HTML only block See also section manonly latexonly rtfonly xmlonly and docbookonly 23 155 image lt format gt lt file gt caption lt sizeindication gt lt size gt Inserts an image into the documentation This command is format specific so if you want to insert an image for more than one format you ll have to repeat this command for each format The first argument specifies the output format in which the image should be embedded Currently the following values are supported html latex docbook and rtf The second argument specifies the file name of the image doxygen will look for files in the paths or files that you specified after the IMAGE_PATH tag If the image is found it will be copied to the correct o
7. Gl CLASS _GRAPH Ifthe CLASS_GRAPH tag is set to Y class showing the direct and indirect inheritance relations Setting this tag to Y AGRAMS tag to NO ES then doxygen will generate a graph for each documented ES will force the CLASS_Dl The default value is Y This tag requires that the tag HAVE_DOT is set to Y COLLABORATION_GRAPH ES ES If the COLLABORATION_GRAPH tag is set to Y ES then doxygen will generate a graph for each documented class showing the direct and indirect implementation dependencies inheritance GROUP_GRAPHS containment and class references variables of the class with other documented classes The default value is YES This tag requires that the tag HAVE_DOT is set to Y If the GROUP_GRAPHS tag is set to Y ing the direct groups dependencies The default value is YES This tag requires that the tag HAVE_DOT is set to Y ES ES then doxygen will generate a graph for groups show Gl Generated by Doxygen 22 18 Configuration options related to the dot tool 135 UML_LOOK If the UML_LOOK tag is set to YES doxygen will generate inheritance and collaboration diagrams in a style similar to the OMG s Unified Modeling Language The default value is NO This tag requires that the tag HAVE_DOT is set to YES UML_LIMIT_NUM_FIELDS If the UML_LOOK tag is enabled the fields and methods are shown inside the class node If
8. The file essentially consists of a list of assignment statements Each statement consists of a TAG_NAME written in capitals followed by the equal sign and one or more values If the same tag is assigned more than once the last assignment overwrites any earlier assignment For tags that take a list as their argument the operator can be used instead of to append new values to the list Values are sequences of non blanks If the value should contain one or more blanks it must be surrounded by quotes Multiple lines can be concatenated by inserting a backslash as the last character of a line Environment variables can be expanded using the pattern S ENV_VARIABLE_NAME You can also include part of a configuration file from another configuration file using a INCLUDE tag as follows INCLUDE config_file_name The include file is searched in the current working directory You can also specify a list of directories that should be searched before looking in the current working directory Do this by putting a INCLUDE_PATH tag with these paths before the INCLUDE tag e g T INCLUDE_PATH my_config_dir The configuration options can be divided into several categories Below is an alphabetical index of the tags that are recognized followed by the descriptions of the tags grouped by category ABBREVIATE BRIEF ooo cor E a a ae i 22 2 CLANG_ASSISTED_PARSING 22 6 ALASES ac ba ER a e ee Be
9. _PROPERTY_MAP x ROPERTY_MAP x OBJECT_MAP x JECT_MAP x ECLARE_VIEW_STATUS STDMETHOD a HRESULT a ATL_NO_VTABLE _declspec a BEGIN_CONNECTION_POINT_MAP x END_CONNECTION_POINT_MAP x ti H zZ Q e ZOQOzZxzxz ol Hz az e Qu YZZ v 2 00 oz w DECLARE_DYNAMIC class IMPLEMENT_DYNAMIC classl class2 NM DECLARE_DYNCREATE class IMPLEMENT_DYNCREATE class1 class2 IMPLEMENT_SERIAL class1 class2 class3 DECLARE_MESSAGE_MAP A TRY try CATCH_ALL e catch END_CATCH_ALL THROW_LAST throw RUNTIME _CLASS class class MAKEINTRESOURCE nId nId IMPLEMENT_REGISTER v w X Y z NM ASSERT x assert x ASSERT_VALID x assert x TRACEO x printf x A OS_ERR A B A B __ cplusplus Y DECLARE_OLECREATE class BEGIN_DISPATCH_MAP class1l class2 BEGIN_INTERFACE_MAP class1 class2 INTERFACE_PART class id name Generated by Doxygen 60 Preprocessing END_INTERFACE_MAP DISP_FUNCTION class name function result id END_DISPATCH_MAP IMPLEMENT_OLECREATE2 class name idl id2 id3 id4 id5 id6 id7 id8 id9 idl0 idl1 As you can see doxygen s preprocessor is quite powerful but if you want even more flexibility you can always write an input filter and specify it a
10. 116 Configuration WARN_FORMAT The WARN_FORMAT tag determines the format of the warning messages that doxygen can pro duce The string should contain the file line and text tags which will be replaced by the file and line number from which the warning originated and the warning text Optionally the format may contain Sversion which will be replaced by the version of the file if it could be obtained via FILE_VERSION_ Fl LTER The default value is Sfile line text WARN_LOGFILE The WARN_LOGFILE tag can be used to specify a file to which warning and error messages should be written If left blank the output is written to standard error stderr 22 5 Configuration options related to the input files INPUT The INPUT tag is used to specify the files and or directories that contain documented source files You may enter file names like myfile cpp or directories like usr src myproject Separate the files or directories with spaces Note If this tag is empty the current directory is searched INPUT_ENCODING This tag can be used to specify the character encoding of the source files that doxygen parses Internally doxygen uses the UTF 8 encoding Doxygen uses libiconv or the iconv built into libc for the transcoding See the libiconv documentation for the list of possible encodings The default value is UTF 8 FILE PATTERNS If the value of the INPUT tag contains directories you can use the FILE_PATTERNS tag to s
11. S LATEX_HEADER The LATEX_HEADER tag can be used to specify a personal IATEX header for the generated ATEX document The header should contain everything until the first chapter If it is left blank doxygen will generate a standard header See section Doxygen usage for information on how to let doxygen write the default header to a separate file Note Only use a user defined header if you know what you are doing The following commands have a special meaning inside the header title datetime date Sdoxygenversion projectname Sprojectnumber projectbrief projectlogo Doxygen will replace title with the empty string for the replacement values of the other commands the user is referred to HTML_HEADER This tag requires that the tag GENERATE_LATEX is set to Y Gl Ss LATEX_FOOTER The LATEX_FOOTER tag can be used to specify a personal lAT X footer for the generated lATEX document The footer should contain everything after the last chapter If it is left blank doxygen will generate a standard footer See LATEX_HEADER for more information on how to generate a default footer and what special commands can be used inside the footer Note Only use a user defined footer if you know what you are doing This tag requires that the tag GENERATE_LATEX is set to YES LATEX_EXTRA_STYLESHEET The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user defined IATEX sty
12. Manual for version 1 8 9 1 Written by Dimitri van Heesch 1997 2015 Contents 1 2 2 1 22 2 3 2 4 25 2 6 User Manual Introduction Installation Gompiling from source 9m UNIX ociosa a A a a a a Installing the binaries CRUE gt aro a dd ida e eh a ek der dd SS Known compilation problems for UNIX o e ee Compiling from source on Windows 2 e e Installing the binaries DN VIII gt ete cae a ak Bo da ee Sa ok he we a ee ee ae ow Tools used to develop doxygen 2 2 ee 3 Getting Started 3 1 3 2 3 3 3 4 Step 0 Check if doxygen supports your programming language o Step 1 Creating a configuration file gt lt se ee eee ew ee ee Sle El REI IRON ono ce ek ee a a OS bod ee a a a Sal 3 3 1 HTML output 3 3 2 LaTeX output 3 3 3 RTF output 3 3 4 XML output 399 Manpage OUIDUL i gion bate a Sek RG A Sw ea e Bb eS 39 6 DocBook ouiput 6 5 4 0028 a ewe bee be ee ee Ba ee Step 3 Documenting 4 Documenting the code 4 1 WE SOLICES o o e kek ae ae RB a Ee a Re ec da Special comment blocks 4 1 1 Comment blocks for C like languages C C C Objective C PHP Java 4 1 1 1 Putting documentation after members Le EXIMPRES on cle acne Gf a eh AG A A eet ee 4 11 9 Documentation al oiher places o oroo core ira ee bee be ees 41 2 Comment blocks im PYINON lt s
13. lt div gt lt table gt lt pre gt lt p gt etc must be separated from surrounding content by blank lines and the start and end tags of the block should not be indented with tabs or spaces Doxygen does not have this requirement and will also process Markdown formatting inside such HTML blocks The only exception is lt pre gt blocks which are passed untouched handy for ASCII art Doxygen will not process Markdown formatting inside verbatim or code blocks and in other sections that need to be processed without changes for instance formulas or inline dot graphs 5 3 3 Code Block Indentation Markdown allows both a single tab or 4 spaces to start a code block Since doxygen already replaces tabs by spaces before doing Markdown processing the effect will only be same if TAB_SIZE in the config file has been set to 4 When it is set to a higher value spaces will be present in the code block A lower value will prevent a single tab to be interpreted as the start of a code block With Markdown any block that is indented by 4 spaces and 8 spaces inside lists is treated as a code block This indentation amount is absolute i e counting from the start of the line Since doxygen comments can appear at any indentation level that is required by the programming language it uses a relative indentation instead The amount of indentation is counted relative to the preceding paragraph In case there is no preceding paragraph i e you wan
14. note 158 overload 148 p 181 package 149 page 149 par 159 paragraph 167 param 159 parblock 160 post 160 pre 160 private 150 privatesection 150 property 150 protected 150 protectedsection 151 protocol 151 public 151 publicsection 151 pure 151 ref 164 refitem 165 related 152 relatedalso 152 relates 152 relatesalso 152 remark 161 remarks 161 result 161 return 161 returns 161 retval 161 rtfonly 181 sa 161 secreflist 165 section 166 see 162 short 162 showinitializer 152 since 162 skip 168 skipline 169 snippet 169 startuml 174 static 153 struct 153 subpage 165 subsection 166 subsubsection 166 tableofcontents 166 test 162 throw 162 throws 162 todo 162 tparam 160 typedef 153 union 153 until 170 var 153 verbatim 182 verbinclude 170 version 162 vhdiflow 153 warning 163 xmlonly 182 xrefitem 163 ABBREVIATE_BRIEF 108 acknowledgments 5 ALIASES 109 ALLEXTERNALS 133 ALLOW_UNICODE_NAMES 108 ALPHABETICAL_INDEX 119 ALWAYS_DETAILED_SEC 108 AUTOLINK_SUPPORT 110 BINARY_TOC 123 bison 7 BRIEF_MEMBER_DESC 108 browser 15 BUILTIN _STL_SUPPORT 110 CALL_GRAPH 135 CALLER_GRAPH 135 CASE_SENSE_NAMES 113 CHM_FILE 123 CHM_INDEX_ENCODING 123 CITE_BIB_FILES 115 CLANG_ASSISTED_ PARSING 118 CLANG_OPTIONS 118 CLASS_ DIAGRAMS 133 CLASS_GRAPH 134 CO
15. 00025 205 aes 22 8 MANL LINKS onda eae Soe a 22 11 GENERATE_ECLIPSEHELP 22 8 MAN OUTPUT e saii bee ee ee weed 22 11 GENERATE_HTML 2 00005 22 8 MAN SUBDIR oo cdo a e 22 11 GENERATE_HTMLHELP 22 8 MARKDOWN_SUPPORT 0 5 22 2 GENERATE_LATEX 2 ence eee ee 22 9 MATHJAX_CODEFILE pe ee ee ne i 22 8 GENERATE_LEGEND 2 0405 22 18 MATHJAX_EXTENSIONS 2 20 5 22 8 GENERATE_MAN 222 2 ee ee 22 11 MATHJAX_FORMAT ooo 22 8 GENERATE_PERLMOD 22 15 MATHJAX_RELPATH 2 0 5 22 8 GENERATE_QHP 0 0 0 0 5 22 8 MAX_DOT_GRAPH_DEPTH 22 18 GENERATE_RTF ooo 22 10 MAX_INITIALIZER_LINES 22 3 GENERATE_TAGFILE 2 22 17 MSOFILE DIRS o ne eae ek ee ee ee 22 18 GENERATE_TESTLIST 0 22 3 MSCGENLPATH c oo el ee ee ee et 22 18 GENERATE_TODOLIST 2 22 3 MULTILINE_CPP_IS BRIEF 22 2 GENERATE_TREEVIEW o ooo 22 8 OPTIMIZE_FOR_FORTRAN 2 22 2 Generated by Doxygen 22 2 Project related configuration options 107 OPTIMIZE_OUTPUT FOR C 22 2 SHORT NAMES 0 0000 225 OPTIMIZE OUTPUT JAVA 0 22 2 SHOW_FILES 0 0e00e ee eee 22 3 OPTIMIZE_OUTPUT_ VHDL 22 2 SHOW_GROUPED MEMB_INC 22 3 OUTPUT _DIRECTORY 22 2 SHOW_INCLUDE FILES
16. 115 RECURSIVE 116 REFERENCED_BY_RELATION 118 REFERENCES_LINK_SOURCE 118 REFERENCES_RELATION 118 REPEAT_BRIEF 108 RTF 16 RTF_EXTENSIONS_FILE 130 RTF_HYPERLINKS 129 RTF_OUTPUT 129 RTF_SOURCE_CODE 130 RTF_STYLESHEET_FILE 130 SEARCH_INCLUDES 132 SEARCHDATA_FILE 127 SEARCHENGINE 126 SEARCHENGINE_URL 127 SEPARATE_MEMBER_PAGES 109 SERVER_BASED_SEARCH 126 SHORT_NAMES 109 SHOW_FILES 114 SHOW_GROUPED_MEMB_INC 113 SHOW_INCLUDE_FILES 113 SHOW_NAMESPACES 114 SHOW _USED FILES 114 SIP_SUPPORT 111 SKIP_FUNCTION_MACROS 133 SORT_BRIEF_DOCS 113 SORT_BY_SCOPE_NAME 113 SORT_GROUP_NAMES 113 SORT_MEMBER_DOCS 113 SORT_MEMBERS_CTORS_1ST 113 SOURCE_BROWSER 117 SOURCE_TOOLTIPS 118 STRICT_PROTO_MATCHING 114 strip 7 STRIP_CODE_COMMENTS 117 STRIP_FROM_INC_PATH 109 Generated by Doxygen INDEX 217 STRIP_FROM_PATH 109 SUBGROUPING 111 TAB_SIZE 109 TAGFILES 133 TCL_SUBST 110 TEMPLATE_RELATIONS 135 TOC_EXPAND 123 TREEVIEW_WIDTH 125 TYPEDEF_HIDES_STRUCT 111 UML_LIMIT_NUM_FIELDS 135 UML_LOOK 135 USE_HTAGS 118 USE_MATHJAX 125 USE_MDFILE_AS_MAINPAGE 117 USE_PDFLATEX 129 VERBATIM_HEADERS 118 WARN_FORMAT 116 WARN_IF_DOC_ERROR 115 WARN_IF_UNDOCUMENTED 115 WARN_LOGFILE 116 WARN_NO_PARAMDOC 115 WARNINGS 115 XML 16 XML_OUTPUT 131 XML_PROGRAMLISTING 131 Generated by Doxygen
17. Receiver Sender gt Receiver label Command URL ref Receiver Command Sender lt Receiver label Ack URL ref Ack ID 1 endmsc class Sender public Acknowledgment from server void Ack bool ok y Receiver class Can be used to receive and execute commands After execution of a command the receiver will send an acknowledgment Amsc Receiver Sender Receiver lt Sender label Command URL ref Command Receiver gt Sender label Ack URL ref Sender Ack ID 1 endmsc class Receiver public x Executable a command on the server x void Command int commandId i See also section mscfile 23 132 startumi file caption lt sizeindication gt lt size gt Starts a text fragment which should contain a valid description of a PlantUML diagram See http plantuml sourceforge net for examples The text fragment ends with enduml Note You need to install Java and the PlantUML s jar file if you want to use this command The location of the jar file should be specified using PLANTUML_JAR_PATH The first argument is optional and is for compatibility with running PlantUML as a preprocessing step before running doxygen you can also add the name of the image file after st artum1 and inside curly brackets i e Generated by Doxygen 23 133 dotfile lt file gt caption lt sizeindication gt lt size
18. The value divided by 100 is the actual gamma applied so 80 represents a gamma of 0 8 The value 220 represents a gamma of 2 2 and 100 does not change the gamma E Minimum value 40 maximum value 240 default value 80 This tag requires that the tag GENERATE_HTML is set to Y GI S HTML TIMESTAMP If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML page will contain the date and time when the page was generated Setting this to NO can help when comparing the output of multiple runs The default value is YES This tag requires that the tag GENERATE_HTML is set to Y Gl S HTML DYNAMIC_SECTIONS Ifthe HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML documentation will contain sections that can be hidden and shown after the page has loaded The default value is NO This tag requires that the tag GENERATE_HTML is set to YES HTML_INDEX_NUM_ENTRIES With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries shown in the various tree structured indices initially the user can expand and collapse entries dynam ically later on Doxygen will expand the tree to such a level that at most the specified number of entries are visible unless a fully collapsed tree already exceeds this amount So setting the number of entries 1 will produce a full collapsed tree by default 0 is a special value representing an infinite number of entries and will resul
19. int open const char int int close int size_t write int const char size_t int read int char size_t Because each comment block in the example above contains a structural command all the comment blocks could be moved to another location or input file the source file for instance without affecting the generated documentation The disadvantage of this approach is that prototypes are duplicated so all changes have to be made twice Because of this you should first consider if this is really needed and avoid structural commands if possible often receive examples that contain fn command in comment blocks which are place in front of a function This is clearly a case where the fn command is redundant and will only lead to problems When you place a comment block in a file with one of the following extensions dox t xt or doc then doxygen will hide this file from the file list If you have a file that doxygen cannot parse but still would like to document it you can show it as is using verbin clude e g file myscript sh Look at this nice script verbinclude myscript sh Make sure that the script is explicitly listed in the INPUT or that FILE_PATTERNS includes the sh extention and the the script can be found in the path set via EXAMPLE_PATH 4 1 2 Comment blocks in Python For Python there is a standard way of documenting the code using so called documentation strings Such strings are st
20. lt name gt Equivalent to relatesalso 23 44 showinitializer By default the value of a define and the initializer of a variable are only displayed if they are less than 30 lines long By putting this command in a comment block of a define or variable the initializer is shown unconditionally The maximum number of initialization lines can be changed by means of the configuration parameter MAX_INITIALIZ ER_LINES the default value is 30 Generated by Doxygen 23 45 static 153 See also section hideinitializer 23 45 static Indicates that the member documented by the comment block is static i e it works on a class instead of on an instance of the class This command is intended for use only when the language does not support the concept of static methods natively e g C 23 46 struct lt name gt lt header file gt lt header name gt Indicates that a comment block contains documentation for a struct with name lt name gt The arguments are equal to the arguments of the class command See also section class 23 47 typedef typedef declaration Indicates that a comment block contains documentation for a typedef either global or as a member of a class This command is equivalent to Y n property and War See also section fn property and War 23 48 union lt name gt lt header file gt lt header name gt Indicates that a comment block contains documentation for a uni
21. ordf e amp laquo amp not amp shy no break space non breaking space inverted exclamation mark cent sign pound sign currency sign JU yen sign yuan sign Y broken bar broken vertical bar section sign diaeresis spacing diaeresis copyright sign feminine ordinal indicator left pointing double angle quotation mark left pointing guillemet not sign soft hyphen discretionary hyphen Generated by Doxygen 188 HTML commands amp reg amp macr amp deg amp plusmn sup2 amp sup3 acute micro para middot gcedil amp supl amp ordm amp raquo amp fracl4 amp fracl2 amp frac34 amp iquest amp Agrave amp Aacute amp Acirc Atilde Auml sAring AElig amp Ccedil amp amp amp Euml Egrave Eacute Ecirc amp I grave amp lacute amp lcirc amp Tuml registered sign registered trade mark sign O macron spacing macron overline APL overbar degree sign plus minus sign plus or minus sign superscript two superscript digit two squared 2 superscript three superscript digit three cubed 3 acute accent spacing acute micro sign u pilcrow sign paragraph sign middle dot Georgian comma Greek middle dot cedilla spacing cedilla superscript one
22. 117 flex 7 FORCE_LOCAL_INCLUDES 113 FORMULA_FONTSIZE 125 FORMULA_TRANSPARENT 125 FULL_PATH_NAMES 108 GENERATE_AUTOGEN_DEF 131 GENERATE_BUGLIST 114 GENERATE_CHI 123 GENERATE_DEPRECATEDLIST 114 GENERATE_DOCBOOK 131 GENERATE_DOCSET 122 GENERATE_ECLIPSEHELP 124 GENERATE_HTML 119 GENERATE_HTMLHELP 123 GENERATE_LATEX 127 GENERATE_LEGEND 137 GENERATE_MAN 130 GENERATE_PERLMOD 131 GENERATE_QHP 123 GENERATE_RTF 129 GENERATE_TAGFILE 133 GENERATE_TESTLIST 114 GENERATE_TODOLIST 114 GENERATE_TREEVIEW 124 GENERATE_XML 130 GPL 4 GRAPHICAL_HIERARCHY 135 GROUP_GRAPHS 134 HAVE_DOT 134 HHC_LOCATION 123 HIDE_COMPOUND_REFERENCE 113 HIDE_FRIEND_COMPOUNDS 112 HIDE_IN_BODY_DOCS 112 HIDE_SCOPE_NAMES 113 HIDE_UNDOC_CLASSES 112 HIDE_UNDOC_MEMBERS 112 HIDE_UNDOC_RELATIONS 134 HTML_COLORSTYLE_GAMMA 122 HTML_COLORSTYLE_HUE 121 HTML_COLORSTYLE_SAT 121 HTML_DYNAMIC_SECTIONS 122 HTML_EXTRA_FILES 121 HTML_EXTRA_STYLESHEET 121 HTML_FILE_EXTENSION 119 HTML_FOOTER 120 HTML_HEADER 119 HTML_INDEX_NUM_ENTRIES 122 HTML_OUTPUT 119 HTML_STYLESHEET 120 HTML_TIMESTAMP 122 IDL_PROPERTY_SUPPORT 111 IGNORE_PREFIX 119 IMAGE_PATH 117 INCLUDE_FILE_PATTERNS 132 INCLUDE_GRAPH 135 INCLUDE_PATH 132 INCLUDED_BY_GRAPH 135 INHERIT_DOCS 109 INLINE_GROUPED_CLASSES 111 INLINE_INFO 113 INLINE_INHERITED_MEMB 108 INLINE_SIMPLE_STRUCTS 111 Generated by Doxygen 216 INDEX INLINE_SOURCES 117 I
23. Documenta tion blocks can be put on the lines before the command Generated by Doxygen 4 1 Special comment blocks 29 namespace eval Namespace e proc Function variable Variable common Common variable e itcl class Class e itcl body Class method body definition e oo class create Class e o0 define OO Class definition method Class method definitions constructor Class constructor destructor Class destructor e public Set protection level e protected Set protection level e private Set protection level Following is an example using doxygen style comments 1 file tclexample tcl 2 File documentation 3 verbatim 5 Startup code 6 exec tclsh 0 sq 7 endverbatim 8 Documented namespace lc ns 9 The code is inserted here 0 code 1 namespace eval ns 2 Documented proc de ns_proc 3 param in arg some argument 4 proc ns_proc arg 5 Documented var lc ns_var 6 Some documentation 7 variable ns_var 8 Documented itcl class lc itcl_class 9 itcl class itcl_class 20 Create object 21 constructor args eval args 22 Destroy object 23 destructor exit 24 Documented itcl method c itcl_method_x 25 param in arg Argument Generated by Doxygen 30 Documenting the code 26 private method itcl_method_x arg 27 Documented itcl method lc itcl_method_y 28 param
24. English translation only is to configure doxygen with the english on1y option On some platforms such as OpenBSD using some versions of gcc with O2 can lead to eating all memory during the compilation of files such as config cpp As a workaround use debug as a configure option or omit the 02 for the particular files in the Makefile Gcc versions before 2 95 may produce broken binaries due to bugs in these compilers Dot problems Due to a change in the way image maps are generated older versions of doxygen lt 1 2 17 will not work correctly with newer versions of graphviz gt 1 8 8 The effect of this incompatibility is that generated graphs in HTML are not properly clickable For doxygen 1 3 it is recommended to use at least graphviz 1 8 10 or higher For doxygen 1 4 7 or higher it is recommended to use GraphViz 2 8 or higher to avoid font issues Red Hat 9 0 problems If you get the following error after running make Generated by Doxygen 10 Installation tmake error qtools pro 70 Syntax error then first type export LANG before running make 2 4 Compiling from source on Windows From version 1 7 0 onwards build files are provided for Visual Studio 2008 Also the free as in beer Express version of Developer Studio can be used to compile doxygen Alternatively you can compile doxygen the UNIX way using Cygwin or MinGW The next step is to install modern versions of bison and flex see http sourcef
25. General part of the Settings of the Properties window of lang_cfg py by default Your language will be on Rebuild doxygen and doxywizard now 6 Now you can use OUTPUT_LANGUAGE your_language_name in the config file to generate output in your language 7 Send translator_xx h to me so can add it to doxygen Send also your name and e mail address to be included in the maintainers txt list You can also clone the doxygen repository at GitHub and make a Pull Request later Generated by Doxygen 210 Internationalization Maintaining a language New versions of doxygen may use new translated sentences In such situation the Translator class requires implementation of new methods its interface changes Of course the English sentences need to be translated to the other languages At least new methods have to be implemented by the language related translator class otherwise doxygen wouldn t even compile Waiting until all language maintainers have translated the new sentences and sent the results would not be very practical The following text describes the usage of translator adapters to solve the problem The role of Translator Adapters Whenever the Translator class interface changes in the new release the new class TranslatorAdapter_x_y_ zisaddedtothetranslator_adapter h file here x y and z are numbers that correspond to the current official version of doxygen All translators that previously derived from the Translat
26. Markdown syntax is simply passed on as is In the subsequent parsing phase this could lead to errors which may not always be obvious as they are based on the intermediate format To see the result after Markdown processing you can run doxygen with the d Markdown option It will then print each comment block before and after Markdown processing Generated by Doxygen Chapter 6 Lists Doxygen provides a number of ways to create lists of items Using dashes By putting a number of column aligned minus signs at the start of a line a bullet list will automatically be gener ated Instead of the minus sign also plus or asterisk x can be used Numbered lists can also be generated by using a minus followed by a hash or by using a number followed by a dot Nesting of lists is allowed and is based on indentation of the items Here is an example A list of events mouse events mouse move event mouse click event n More info about the click event mouse double click event keyboard events 1 key down event 2 key up event More text here F FF FF F FF OF The result will be A list of events mouse events 1 mouse move event 2 mouse click event More info about the click event 3 mouse double click event e keyboard events 1 key down event 2 key up event More text here If you use tabs for indentation within lists please make sure that TAB_SIZE in the configuration f
27. T options on the command line This makes dot run faster but since only newer versions of dot gt 1 8 10 support this this feature is disabled by default The default value is NO This tag requires that the tag HAVE_DOT is set to YES GENERATE_LEGEND If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page ex plaining the meaning of the various boxes and arrows in the dot generated graphs The default value is YES This tag requires that the tag HAVE_DOT is set to YES DOT_CLEANUP If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot files that are used to generate the various graphs The default value is Y Gl S This tag requires that the tag HAVE_DOT is set to Y E wn 22 19 Examples Suppose you have a simple project consisting of two files a source file example cc and a header file example h Then a minimal configuration file is as simple as INPUT example cc example h Assuming the example makes use of Qt classes and per1 is located in usr bin a more realistic configuration file would be PROJECT_NAME Example INPUT example cc example h WARNINGS YES TAGFILES qt tag PERL_PATH usr local bin perl SEARCHENGINE NO To generate the documentation for the Odbt Tabul ar package have used the following configuration file PROJECT_NAME QdbtTabular OUTPUT_DIRECTORY html WARNINGS YES IN
28. VarInA TRE Adefgroup IntVariables Global integer variables x x x x an integer variable extern int IntegerVariable xx x xx Adefgroup Variables Global variables xx gt xx a variable in group A x int VarInA int IntegerVariable xx The ref command can be used to refer to a group The first argument of the ref command should be group s label To use a custom link name you can put the name of the links in double quotes after the label as shown by the following example This is the ref group_label link to this group The priorities of grouping definitions are from highest to lowest ingroup defgroup addtogroup weakgroup The last command is exactly like addtogroup with a lower priority It was added to allow lazy grouping definitions you can use commands with a higher priority in your h files to define the hierarchy and weakgroup in c files without having to duplicate the hierarchy exactly Example defgroup groupl The First Group This is the first group xx brief class Cl in group 1 class Cl brief class C2 in group 1 x class C2 function in group 1 x void func xx end of groupl kx x defgroup group2 The Second Group This is the second group x x defgroup group3 The Third Group This is the third group xx defgroup group4 The Fourth Group Generated by Doxygen
29. XML_OUTPUT tag is used to specify where the XML pages will be put If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it The default directory is xm1 This tag requires that the tag GENERATE_XML is set to YES XML PROGRAMLISTING If the XML _PROGRAMLISTING tag is set to YES doxygen will dump the program listings including syntax highlighting and cross referencing information to the XML output Note that enabling this will significantly increase the size of the XML output The default value is YES This tag requires that the tag GENERATE_XML is set to YES 22 13 Configuration options related to the DOCBOOK output GENERATE_DOCBOOK If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files that can be used to generate PDF The default value is NO DOCBOOK_OUTPUT The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it The default directory is docbook This tag requires that the tag GENERATE_DOCBOOK is set to YES DOCBOOK PROGRAMLISTING If the DOCBOOK_PROGRAMLISTING tag is set to YES doxygen will include the program listings including syntax highlighting and cross referencing information to the DOCBOOK out put Note that enabling this will significantly increase the size of the DOCBOOK output The default value is NO This tag requires
30. akiss at users dot sourceforge dot net 1 4 6 F ldv ri Gy rgy unreachable foldvari lost at cyberspace Indonesian Hendy Irawan ceefour at gauldong dot net 1 8 0 Italian Alessandro Falappa alessandro at falappa dot net 1 8 2 Ahmed Aldo Faisal aaf23 at cam dot ac dot uk Japanese Suzumizaki Kimikata szmml at h12u com up to date Hiroki Iseri goyoki at gmail dot com 208 Internationalization Ryunosuke Satoh sun594 at hotmail dot com Kenji Nagamatsu unreachable naga at joyful dot club dot ne dot jp Iwasa Kazmi unreachable iwasa at cosmo system dot 3p JapaneseEn see the Japanese language English based Korean Kim Taedong fly1004 at gmail dot com up to date SooYoung Jung jung5000 at gmail dot com Richard Kim unreachable ryk at dspwiz dot com KoreanEn see the Korean language English based Latvian Lauris lauris at nix lv 1 8 4 Lithuanian Tomas Simonaitis unreachable haden at homelan dot 1t 1 4 6 Mindaugas Radzius unreachable mindaugasradzius at takas dot lt Aidas Berukstis unreachable aidasber at takas dot lt searching for the maintainer Please try to help to find someone Macedonian Slave Jovanovski slavejovanovski at yahoo dot com 1 6 0 Norwegian Lars Erik Jordet lejordet at gmail dot com 1 4 6 Persian Ali Nadalizadeh nadalizadeh at gmail dot com 1 7 5 Polish Piotr Kaminski unreachable Piotr dot Kaminski at ctm dot gdynia dot pl 1 8 2 Grze
31. al SSE GIGS ores wee a Rls HL ae Ro Se ee a A A a 81 18 2 Aliases withargqumenis e s eo 00 6 e bY Ree De ER DR eA ee ee 81 15 3 Nesting RUSIGMCOMMANG 2 nw eee a ea RR a Rok oe Ge a 82 16 Link to external documentation 83 Generated by Doxygen IV CONTENTS 17 Frequently Asked Questions 85 17 1 Howto get information on the index page in HTML o o o eee 85 17 2 Help some all of the members of my class file namespace are not documented 85 17 3 I set EXTRACT_ALL to NO none of my functions are shown in the documentation 85 17 4 How can make doxygen ignore some code fragment o ee 86 17 5 How can change what is after the lt code gt include lt code gt in the class documentation 86 17 6 How can use tag files in combination with compressed HTML o o o 86 17 7 don t like the quick index that is put above each HTML page whatdold0 87 17 8 The overall HTML output looks different while only wanted to use my own html header file 87 17 9 Why does doxygen use Qt 2 2 ee 87 17 10 How can exclude all test directories from my directory tree 2 2 ee ee 87 17 11 Doxygen automatically generates a link to the class MyClass somewhere in the running text How do prevent that ata certain place cocer a aidai daria rare 87 17 12 My favorite programming language is X Can still use doxygen
32. alias definition of 1 in the example above 15 3 Nesting custom command You can use commands as arguments of aliases including commands defined using aliases As an example consider the following alias definitions ALIASES Bold 1 lt b gt 1 lt b gt ALIASES Emph 1 lt em gt 1 lt em gt Inside a comment block you can now use xx This is a Bold bold Emph and Emphasized text fragment which will expand to x x This is a lt b gt bold lt em gt and lt em gt Emphasized lt b gt text fragment Generated by Doxygen Chapter 16 Link to external documentation If your project depends on external libraries or tools there are several reasons to not include all sources for these with every run of doxygen Disk space Some documentation may be available outside of the output directory of doxygen already for instance somewhere on the web You may want to link to these pages instead of generating the documentation in your local output directory Compilation speed External projects typically have a different update frequency from your own project It does not make much sense to let doxygen parse the sources for these external project over and over again even if nothing has changed Memory For very large source trees letting doxygen parse all sources may simply take too much of your system s memory By dividing the sources into several packages the sources of one package can be parsed by doxygen whil
33. and 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 src entry h and is a blob of loosely structured information The most important field is 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 e Move the first pass parsing of documentation blocks to a separate module e Parse defines these are currently gathered by the preprocessor and ignored by the language parser Data organizer This step consists of many smaller steps that build dictionaries of the extracted classes files namespaces vari ables 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 src doxygen cpp which operates on the tree of entries built during language parsing Look at the Gathering information part of parseInput for details Generated by Doxygen 201 The result of this step is a number of dictionaries which can be found in the Doxygen namespace defined in src doxygen h Most elements of these dictionaries are derived from the class Definition The class MemberDef for instance holds all information for
34. and or HTML_FOO TER files to load these files In the HTML_STYLESHEET file use the file name only Also note that the files will be copied as is there are no commands or markers available This tag requires that the tag GENERATE_HTML is set to YES HTML COLORSTYLE_HUE The HTML_COLORSTYLE_HUE tag controls the color of the HTML output Doxygen will adjust the colors in the style sheet and background images according to this color Hue is specified as an angle on a colorwheel see http en wikipedia org wiki Hue for more information For instance the value 0 represents red 60 is yellow 120 is green 180 is cyan 240 is blue 300 purple and 360 is red again Minimum value 0 maximum value 359 default value 220 This tag requires that the tag GENERATE_HTML is set to YES T HTML_COLORSTYLE_SAT The HTML_COLORSTYLE_SAT tag controls the purity or saturation of the colors in the HTML output For a value of O the output will use grayscales only A value of 255 will produce the most vivid colors Generated by Doxygen 122 Configuration Minimum value 0 maximum value 255 default value 100 This tag requires that the tag GENERATE_HTML is set to YES HTML _COLORSTYLE_GAMMA The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the luminance component of the colors in the HTML output Values below 100 gradually make the output lighter whereas values above 100 make the output darker
35. ask help on the users mailing list first sub scription is required If you send only a vague description of a bug you are usually not very helpful and it will cost me much more time to figure out what you mean In the worst case your bug report may even be completely ignored by me so always try to include the following information in your bug report The version of doxygen you are using for instance 1 5 3 use doxygen version if you are not sure The name and version number of your operating system for instance SuSE Linux 6 4 e Itis usually a good idea to send along the configuration file as well but please use doxygen with the s flag while generating it to keep it small use doxygen s u configName to strip the comments from an existing config file The easiest and often the only way for me to fix bugs is if you can attach a small example demonstrating the problem you have to the bug report so can reproduce it on my machine Please make sure the example is valid source code could potentially compile and that the problem is really captured by the example I often get examples that do not trigger the actual bug If you intend to send more than one file please zip or tar the files together into a single file for easier processing Note that when reporting a new bug you ll get a chance to attach a file to it only after submitting the initial bug description You can and are encouraged to add a patch for a bug If you
36. avoid code duplication in case of example blocks that consist of multiple source and header files For a line by line description of a source files use the dontinclude command in combination with the line skip skipline and until commands Alternatively the snippet command can be used to include only a fragment of a source file For this to work the fragment has to be marked Note Doxygen s special commands do not work inside blocks of code It is allowed to nest C style comments inside a code block though See also sections example dontinclude and verbatim 23 112 includelineno lt file name gt This command works the same way as include but will add line numbers to the included file See also section include 23 113 line pattern This command searches line by line through the example that was last included using include or dontinclude until it finds a non blank line If that line contains the specified pattern it is written to the output The internal pointer that is used to keep track of the current line in the example is set to the start of the line following the non blank line that was found or to the end of the example if no such line could be found See section dontinclude for an example 23 114 skip pattern This command searches line by line through the example that was last included using include or dontinclude until it finds a line that contains the specified pattern Gene
37. brief A brief description ends when a blank line or another sectioning command is encountered If multiple brief commands are present they will be joined See section author for an example Synonymous to short 23 56 bug bug description Starts a paragraph where one or more bugs may be reported The paragraph will be indented The text of the paragraph has no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent lbug commands will be joined into a single paragraph Each bug description will start on a new line Alternatively one bug command may mention several bugs The bug command ends when a blank line or some other sectioning command is encountered See section author for an example 23 57 1 cond section label Starts a conditional section that ends with a corresponding endcond command which is typically found in another comment block The main purpose of this pair of commands is to conditionally exclude part of a file from processing in older version of doxygen this could only be achieved using C preprocessor commands The section between Acond and endcond can be included by adding its section label to the ENABLED_SECTIOw NS configuration option If the section label is omitted the section will be excluded from processing unconditionally The section label can be a logical expression build of section labels round brackets 8 8 AND OR and NOT If yo
38. but also relative paths which will be relative from the directory where doxygen is started This tag requires that the tag FULL_PATH_NAMES is set to Y1 Gl S STRIP_FROM_INC_PATH The STRIP_FROM_INC_PATH tag can be used to strip a user defined part of the path mentioned in the documentation of a class which tells the reader which header file to include in order to use a class If left blank only the name of the header file containing the class definition is used Otherwise one should specify the list of include paths that are normally passed to the compiler using the I flag SHORT_NAMES If the SHORT_NAMES tag is set to YES doxygen will generate much shorter but less readable file names This can be useful is your file systems doesn t support long names like on DOS Mac or CD ROM The default value is NO JAVADOC_AUTOBRIEF Ifthe JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the first line until the first dot of a Javadoc style comment as the brief description If set to NO the Javadoc style will behave just like regular Qt style comments thus requiring an explicit brief command for a brief description The default value is NO QT_AUTOBRIEF Ifthe OT_AUTOBRIEF tag is set to YES then doxygen will interpret the first line until the first dot of a Qt style comment as the brief description If set to NO the Qt style will behave just like regular Qt style comments thus requiring an explicit brief
39. can be used to enable Y ES or disable NO the bug list This list is created by putting bug commands in the documentation E The default value is YES F GENERATE_DEPRECATEDLIST The GEN ERAT D EPR ECAT EDLIST tag can be used to enable YES or disable NO the deprecated list This list is created by putting deprecated commands in the documentation E The default value is YES ENABLED_SECTIONS The ENABLED_S tions marked by if lt section_label gt ECTIONS tag can be used to enable conditional documentation sec endif and cond lt section_label gt endcond blocks MAX INITIALIZER_LINES The MAX_INITIALIZ ER_LIN ES tag determines the maximum number of lines that the initial value of a variable or macro define can have for it to appear in the documentation If the initializer consists of more lines than specified here it will be hidden Use a value of 0 to hide initializers completely The appearance of the value of individual variables and macros defines can be controlled using showinitializer or hideinitializer command in the documentation regardless of this setting Minimum value 0 maximum value 10000 default value 30 SHOW_USED_FILES Setthe SHOW_USED_FIL of the documentation of classes and structs generate the documentation If set ES tag to N to YES O to disable the list of file
40. can span multiple paragraphs if each paragraph starts with the proper indentation and lists can be nested You can also make a numbered list like so 1 First item 2 Second item Make sure to also read Lists Extensions for doxygen specifics 5 1 5 Code Blocks Preformatted verbatim blocks can be created by indenting each line in a block of text by at least 4 extra spaces This a normal paragraph This is a code block We continue with a normal paragraph again Doxygen will remove the mandatory indentation from the code block Note that you cannot start a code block in the middle of a paragraph i e the line preceding the code block must be empty See section Code Block Indentation for more info how doxygen handles indentation as this is slightly different than standard Markdown Generated by Doxygen 5 1 Standard Markdown 35 5 1 6 Horizontal Rulers A horizontal ruler will be produced for lines containing at least three or more hyphens asterisks or underscores The line may also include any amount of whitespace Examples Note that using asterisks in comment blocks does not work See Use of asterisks for details 5 1 7 Emphasis To emphasize a text fragment you start and end the fragment with an underscore or star Using two stars or underscores will produce strong emphasis Examples single asterisks _single underscores_ double asterisksxx double underscores See section Emphasis limits for more info how
41. comment blocks from generated source code fragments Normal C C and Fortran comments will always remain visible Fl un The default value is Y Generated by Doxygen 118 Configuration REFERENCED_BY RELATION If the REFERENCED_BY_RELATION tag is set to YES then for each docu mented function all documented functions referencing it will be listed The default value is NO REFERENCES_RELATION Ifthe REFERENCES_RELATION tag is set to YES then for each documented func tion all documented entities called used by that function will be listed The default value is NO REFERENCES_LINK_SOURCE If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BRO WSER tag is set to YES then the hyperlinks from functions in REFERENCES RELATION and REFEREN CED_BY_RELATION lists will link to the source code Otherwise they will link to the documentation S The default value is Y E SOURCE_TOOLTIPS If SOURCE_TOOLTIPS is enabled the default then hovering a hyperlink in the source code will show a tooltip with additional information such as prototype brief description and links to the defini tion and documentation Since this will make the HTML file larger and loading of large files a bit slower you can opt to disable this feature The default value is YES This tag requires that the tag SOURCE_BROWSER is set to Y Gl S USE_HTAGS lf the USE_HTAGS tag is
42. created for words corresponding to documented classes unless the word is preceded by a then the word will not be linked and the sign is removed e Links to members are created when certain patterns are found in the text See section Automatic link gener ation for more information on how the automatic link generation works e HTML tags that are in the documentation are interpreted and converted to IATEX equivalents for the IATEX output See section HTML Commands for an overview of all supported HTML tags Generated by Doxygen 18 Getting Started Generated by Doxygen Chapter 4 Documenting the code This chapter covers two topics 1 How to put comments in your code such that doxygen incorporates them in the documentation it generates This is further detailed in the next section 2 Ways to structure the contents of a comment block such that the output looks good as explained in section Anatomy of a comment block 4 1 Special comment blocks A special comment block is a C or C style comment block with some additional markings so doxygen knows it is a piece of structured text that needs to end up in the generated documentation The next section presents the various styles supported by doxygen For Python VHDL Fortran and Tcl code there are different commenting conventions which can be found in sec tions Comment blocks in Python Comment blocks in VHDL Comment blocks in Fortran and Comment blocks in Tcl
43. do so please use PATCH as a keyword in the bug entry form If you have ideas how to fix existing bugs and limitations please discuss them on the developers mailing list subscription required Patches can also be sent directly to dimit ri stack n1 if you prefer not to send them via the bug tracker or mailing list For patches please use diff uN or include the files you modified If you send more than one file please tar or zip everything so only have to save and download one file Generated by Doxygen Part Il Reference Manual Chapter 19 Features Requires very little overhead from the writer of the documentation Plain text will do Markdown is support and for more fancy or structured output HTML tags and or some of doxygen s special commands can be used Cross platform works on Windows and many Unix flavors including Linux and MacOSX Indexes organizes and generates browsable and cross referenced output even from undocumented code Generates structured XML output for parsed sources which can be used by external tools Supports C C Java Corba and Microsoft Java Python VHDL PHP IDL C Fortran TCL Objective C 2 0 and to some extent D sources Supports documentation of files namespaces packages classes structs unions templates variables func tions typedefs enums and defines JavaDoc 1 1 qdoc3 partially and ECMA 334 C spec compatible Comes with a GUI frontend Doxywizard to ease
44. doxygen Project This tag requires that the tag GENERATE_DOCSET is set to YES DOCSET_PUBLISHER_ID The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify the documentation publisher This should be a reverse domain name style string e g com mycompany MyDocSet documentation Generated by Doxygen 22 8 Configuration options related to the HTML output 123 The default value is org doxygen Publisher This tag requires that the tag GENERATE_DOCSET is set to YES DOCSET_PUBLISHER_NAME The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher The default value is Publisher This tag requires that the tag GENERATE_DOCSET is set to YES GENERATE _HTMLHELP If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three addi tional HTML index files index hhp index hhc and index hhk The index hhp is a project file that can be read by Microsoft s HTML Help Workshop on Windows The HTML Help Workshop contains a compiler that can convert all HTML output generated by doxygen into a single compiled HTML file chm Compiled HTML files are now used as the Windows 98 help format and will replace the old Windows help format h1p on all Windows platforms in the future Compressed HTML files also contain an index a table of contents and you can search for words in the documentation The HTML workshop also contains a viewer for compressed HTML
45. doxygen handles emphasis spans slightly different than standard Markdown 5 1 8 code spans To indicate a span of code you should wrap it in backticks Unlike code blocks code spans appear inline in a paragraph An example Use the printf function To show a literal backtick inside a code span use double backticks i e To assign the output of command ls to var use var 1s See section Code Spans Limits for more info how doxygen handles code spans slightly different than standard Markdown 5 1 9 Links Doxygen supports both styles of make links defined by Markdown inline and reference For both styles the link definition starts with the link text delimited by square brackets 5 1 9 1 Inline Links For an inline link the link text is followed by a URL and an optional link title which together are enclosed in a set of regular parenthesis The link title itself is surrounded by quotes Examples The link text The link text The link text The link text http example net http example net Link title relative path to index html Link title somefile html Generated by Doxygen 36 Markdown In addition doxygen provides a similar way to link a documented entity The link text ref MyClass 5 1 9 2 Reference Links Instead of putting the URL inline you can also define the link separately and then refer to it from within the text The link definition looks a
46. editing the options and run doxygen The GUI is available on Windows Linux and MacOSX Automatically generates class and collaboration diagrams in HTML as clickable image maps and IATEX as Encapsulated PostScript images Uses the dot tool of the Graphviz tool kit to generate include dependency graphs collaboration diagrams call graphs directory structure graphs and graphical class hierarchy graphs Allows grouping of entities in modules and creating a hierarchy of modules Flexible comment placement Allows you to put documentation in the header file before the declaration of an entity source file before the definition of an entity or in a separate file Generates a list of all members of a class including any inherited members along with their protection level Outputs documentation in on line format XHTML and UNIX man page and off line format ATEX and RTF simultaneously any of these can be disabled if desired All formats are optimized for ease of reading Furthermore compressed HTML can be generated from HTML output using Microsoft s HTML Help Work shop Windows only and PDF can be generated from the IATEX output Support for various third party help formats including HTML Help docsets Qt Help and eclipse help Includes a full C preprocessor to allow proper parsing of conditional code fragments and to allow expansion of all or part of macros definitions Automatically detects public protected and private se
47. file Man pages Generated if GENERATE_MAN is set to YES in the configuration file RTF Generated if GENERATE_RTF is set to YES in the configuration file Note that the RTF output probably only looks nice with Microsoft s Word If you have success with other programs please let me know XML Generated if GENERATE_XML is set to YES in the configuration file Docbook Generated if GENERATE_DOCBOOOK is set to YES in the configuration file The following output formats are indirectly supported by doxygen Compiled HTML Help a k a Windows 98 help Generated by Microsoft s HTML Help workshop from the HTML output if GENERATE_HTMLHELP is set to YES Qt Compressed Help qch Generated by Qt s qhelpgenerator tool from the HTML output if GENERATE _QHP is set to YES Eclipse Help Generated from HTML with a special index file that is generated when GENERATE_ECLIPSEHELP is setto YES XCode DocSets Compiled from HTML with a special index file that is generated when GENERATE_DOCSET is set to YES PostScript Generated from the IATEX output by running make ps in the output directory For the best results PDF_HYPERLINKS should be set to NO PDF Generated from the IATEX output by running make pdf in the output directory To improve the PDF out put you typically would want to enable the use of pdflatex by setting USE _PDFLATEX to YES in the configuration file In order to get hyperlinks in the PDF file you also need to enable PD
48. gt Inserts an image generated by dot from lt file gt into the documentation The first argument specifies the file name of the image doxygen will look for files in the paths or files that you specified after the DOTFILE_DIRS tag If the dot file is found it will be used as an input file to the dot tool The resulting image will be put into the correct output directory If the dot file name contains spaces you ll have to put quotes around it The second argument is optional and can be used to specify the caption that is displayed below the image This argument has to be specified between quotes even if it does not contain any spaces The quotes are stripped before the caption is displayed The third argument is also optional and can be used to specify the width or height of the image For a descriptionm of the possibilities see the paragraph Size indication with the image command See also section dot 23 134 mscfile lt file gt caption lt sizeindication gt lt size gt Inserts an image generated by mscgen from lt file gt into the documentation See http www mcternan me uk mscgen for examples Generated by Doxygen 176 Special Commands The first argument specifies the file name of the image doxygen will look for files in the paths or files that you specified after the MSCFILE_DIRS tag If the msc file is found it will be used as an input file to the mscgen tool The resulting image wil
49. i e it is abstract and has no imple mentation associated with it This command is intended for use only when the language does not support the concept of pure virtual methods natively e g C PHP 4 Generated by Doxygen 152 Special Commands 23 40 relates lt name gt This command can be used in the documentation of a non member function lt name gt It puts the function inside the related function section of the class documentation This command is useful for documenting non friend functions that are nevertheless strongly coupled to a certain class It prevents the need of having to document a file but only works for functions Example A String class class String friend int strcmp const String amp const String Y x x Compares two strings int strcmp const String amp sl const String amp s2 Nrelates String A string debug function void stringDebug 23 41 related lt name gt Equivalent to relates 23 42 relatesalso lt name gt This command can be used in the documentation of a non member function lt name gt It puts the function both inside the related function section of the class documentation as well as leaving it at its normal file documentation location This command is useful for documenting non friend functions that are nevertheless strongly coupled to a certain class It only works for functions 23 43 relatedalso
50. images that are to be included in the documentation see the image commana INPUT_FILTER The INPUT_FILTER tag can be used to specify a program that doxygen should invoke to filter for each input file Doxygen will invoke the filter program by executing via popen the command lt filter gt lt input file gt where lt filter gt is the value of the INPUT_FILTER tag and lt input file gt is the name of an input file Doxygen will then use the output that the filter program writes to standard output If FILTER_PATTERNS is specified this tag will be ignored Note that the filter must not add or remove lines it is applied before the code is scanned but not when the output code is generated If lines are added or removed the anchors will not be placed correctly FILTER_PATTERNS The FILTER_PATTERNS tag can be used to specify filters on a per file pattern basis Doxygen will compare the file name with each pattern and apply the filter if there is a match The filters are a list of the form pattern filter like cop my_cpp_filter See INPUT_FILTER for further information on how filters are used If the FILTER_PATTERNS tag is empty or if none of the patterns match the file name INPUT_FILTER is applied FILTER_SOURCE_FILES lf the FILTER_SOURCE_FILES tag is set to YES the input filter if set using INe PUT_FILTER will also be used to filter the input files that are used for producing the source files to browse i e wh
51. is contains a couple of commands of the form word These will be replaced by doxygen on the fly e footer html is a HTML fragment which doxygen normally uses to end a HTML page Also here special com mands can be used This file contain the link to www doxygen org and the body and html end tags customdoxygen css is the default cascading style sheet used by doxygen It is recommended only to look into this file and overrule some settings you like by putting them in a separate stylesheets and referencing those extra files via HTML_EXTRA_STYLESHEET You should edit these files and then reference them from the config file e HTML_HEADER header html e HTML_FOOTER footer html HTML_EXTRA_STYLESHEET my_customdoxygen css Generated by Doxygen 14 2 Changing the layout of pages 77 Note it is not longer recommended to use HTML_STYLESHEET as it make it difficult to upgrade to a newer version of doxygen Use HTML_EXTRA_STYLESHEET instead See the documentation of the HTML_HEADER tag for more information about the possible meta commands you can use inside your custom header Note You should not put the style sheet in the HTML output directory Treat it as a source file Doxygen will copy it for you If you use images or other external content in a custom header you need to make sure these end up in the HTML output directory yourself for instance by writing a script that runs doxygen can then copies the images to the out
52. is set to YES TOC_EXPAND The TOC_EXPAND flag can be set to YES to add extra items for group members to the table of contents of the HTML help documentation and to the tree view The default value is NO This tag requires that the tag GENERATE_HTMLHELP is set to YES GENERATE _QHP If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL _FOLDER are set an additional index file will be generated that can be used as input for Qt s qhelpgenerator to generate a Qt Compressed Help qch of the generated HTML documentation The default value is NO This tag requires that the tag GENERATE_HTML is set to YES QCH_ FILE lf the QHG_LOCATION tag is specified the QCH_F ILE tag can be used to specify the file name of the resulting qch file The path specified is relative to the HTML output folder This tag requires that the tag GENERATE_QHP is set to YES Generated by Doxygen 124 Configuration QHP_NAMESPACE The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help Project output For more information please see Ot Help Project Namespace The default value is org doxygen Project This tag requires that the tag GENERATE_QHP is set to YES QHP_VIRTUAL_FOLDER The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt Help Project output For more information please see Ot Help Project Virtual Folders The default
53. is the unique identifier for the snippet This is used to delimit the quoted code in the relevant snippet file as shown in the following example that corresponds to the above snippet command QImage image 64 64 QImage Format_RGB32 image fill qRgb 255 160 128 Adding a resource document gt addResource OTextDocument ImageResource QUrl mydata image png OVariant image Adding a resource Note that the lines containing the block markers will not be included so the output will be document gt addResource QTextDocument ImageResource QUrl mydata image png OVariant image Note also that the block_id markers should appear exactly twice in the source file see section dontinclude for an alternative way to include fragments of a source file that does not require markers Generated by Doxygen 170 Special Commands 23 117 until pattern This command writes all lines of the example that was last included using include or dontinclude to the output until it finds a line containing the specified pattern The line containing the pattern will be written as well The internal pointer that is used to keep track of the current line in the example is set to the start of the line following last written line or to the end of the example if the pattern could not be found See section dontinclude for an example 23 118 verbinclude lt file name gt This command includes the fil
54. normally visible in the class hierarchy If set to NO these classes will be included in the various overviews This option has no effect if EXTRACT_ALL is enabled The default value is NO HIDE_FRIEND_COMPOUNDS Ifthe HIDE_FRIEND_COMPOUNDS tag is set to YES doxygen will hide all friend class struct union declarations If set to NO these declarations will be included in the documentation The default value is NO T HIDE_IN_BODY_DOCS If the HIDE_IN_BODY_DOCS tag is set to YES doxygen will hide any documentation blocks found inside the body of a function If set to NO these blocks will be appended to the function s detailed documentation block The default value is NO INTERNAL_DOCS The INTERNAL_DOCS tag determines if documentation that is typed after a internal com mand is included If the tag is set to NO then the documentation will be excluded Set it to YES to include the internal documentation The default value is NO Generated by Doxygen 22 3 Build related configuration options 113 in lower case letters If set to YES upper case letters are also allowed This is useful if you have classes or files whose names only differ in case and if your file system supports case sensitive file names Windows and Mac users are advised to set this option to NO CASE_SENSE_NAMES Ifthe CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file names The d
55. not be generated as long as EXTRACT_ALL is set to YES To analyze an existing piece of software it is useful to cross reference a documented entity with its definition in the source files Doxygen will generate such cross references if you set the SOURCE_BROWSER tag to YES It can also include the sources directly into the documentation by setting INLINE SOURCES to YES this can be handy for code reviews for instance 3 3 Step 2 Running doxygen To generate the documentation you can now enter doxygen lt config file gt Depending on your settings doxygen will create html rtf latex xml man and or docbook directories inside the output directory As the names suggest these directories contain the generated documentation in HTML RTF ATEX XML Unix Man page and DocBook format The default output directory is the directory in which doxygen is started The root directory to which the output is written can be changed using the OUTPUT_DIRECTORY The format specific directory within the output directory can be selected using the HTML_OUTPUT RTF_OUTPUT LATEX_OUTPUT XML_OUTPUT MAN_OUTPUT and DOCBOOK_OUTPUT tags of the configuration file If the output directory does not exist doxygen will try to create it for you but it will not try to create a whole path recursively like mkdir p does 3 3 1 HTML output The generated HTML documentation can be viewed by pointing a HTML browser to the index html file in the html direct
56. of VHDL sources Doxygen will then generate output that is tailored for VHDL The default value is NO EXTENSION_MAPPING Doxygen selects the parser to use depending on the extension of the files it parses With this tag you can assign which parser to use for a given extension Doxygen has a built in mapping but you can override or extend it using this tag The format is ext Language where ext is a file extension and language is one of the parsers supported by doxygen IDL Java Javascript C C C D PHP Objective C Python Fortran fixed format Fortran FortranFixed free formatted Fortran FortranFree unknown formatted Fortran Fortran In the later case the parser tries to guess whether the code is fixed or free formatted code this is the default for Fortran type files VHDL For instance to make doxygen treat inc files as Fortran files default is PHP and files as C default is Fortran use inc Fortran f C Note For files without extension you can use no_extension as a placeholder Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen MARKDOWN_SUPPORT If the MARKDOWN_SUPPORT tag is enabled then doxygen pre processes all com ments according to the Markdown format which allows for more readable documentation See http daringfireball net projects markdown for details The output of markdown processing is further processed by doxygen so you can mix doxygen
57. of typical patterns is used for the types of files doxygen supports For recursive parsing of a source tree you must set the RECURSIVE tag to YES To further fine tune the list of files that is parsed the EXCLUDE and EXCLUDE_PATTERNS tags can be used To omit all test directories from a source tree for instance one could use EXCLUDE_PATTERNS test Doxygen looks at the file s extension to determine how to parse a file using the following table Extension Language idl IDL ddl IDL odl IDL java Java cs CH Generated by Doxygen 3 3 Step 2 Running doxygen 15 da D php PHP php4 PHP php5 PHP inc PHP phtml PHP m Objective C M Objective C mm Objective C py Python f Fortran for Fortran 90 Fortran vhd VHDL vhdl VHDL tcl TCL ucf VHDL qsf VHDL md Markdown markdown Markdown Any other extension is parsed as if it is a C C file If you start using doxygen for an existing project thus without any documentation that doxygen is aware of you can still get an idea of what the structure is and how the documented result would look like To do so you must set the EXTRACT_ALL tag in the configuration file to YES Then doxygen will pretend everything in your sources is documented Please note that as a consequence warnings about undocumented members will
58. pass 25 26 A class variable 27 classVar 0 28 29 var _memVar 30 a member variable Since python looks more like Java than like C or C you should set OPTIMIZE_OUTPUT_JAVA to Y config file 4 1 3 Comment blocks in VHDL ES in the For VHDL a comment normally start with Doxygen will extract comments starting with There are only two types of comment blocks in VHDL a one line comment representing a brief description and a multi line comment where the prefix is repeated for each line representing a detailed description Comments are always located in front of the item that is being documented with one exception for ports the comment can also be after the item and is then treated as a brief description for the port Here is an example VHDL file with doxygen comments 2 1 file 3 brief 2 1 Mux using with select 4 y O A A A A O A O A O 5 6 Use standard library 7 library ieee 8 Use logic elements 9 use ieee std_logic_1164 all 0 1 Mux entity brief description 2 3 Detailed description of this 4 mux design element 5 entity mux_using_with is 6 port 7 din_0 in std logic Mux first input 8 din_1 in std_logic Mux Second input 9 sel in std logic Select input 20 mux_out out std_logic Mux output 21 22 end entity 23 24 brief Architecture definition of the MUX Generated by Doxygen 28 Documenting the
59. plugins directory of eclipse The name of the directory within the plugins directory should be the same as the ECLIPSE_DOC_ID value After copying Eclipse needs to be restarted before the help appears The default value is NO This tag requires that the tag GENERATE_HTML is set to Y E Ss ECLIPSE_DOC_ID A unique identifier for the Eclipse help plugin When installing the plugin the directory name containing the HTML and XML files should also have this name Each documentation set should have its own identifier The default value is org doxygen Project This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES DISABLE_INDEX If you want full control over the layout of the generated HTML pages it might be necessary to disable the index and replace it with your own The DISABLE_INDEX tag can be used to turn on off the condensed index tabs at top of each HTML page A value of NO enables the index and the value YES disables it Since the tabs in the index contain the same information as the navigation tree you can set this option to YES if you also set GENERATE_TREEVIEW to YES The default value is NO This tag requires that the tag GENERATE_HTML is set to Y E Ss GENERATE_TREEVIEW The GENERATE_TREEVIEW tag is used to specify whether a tree like index structure should be generated to display hierarchical information If the tag value is set to YES a sid
60. superscript digit one masculine ordinal indicator right pointing double angle quotation mark right pointing guillemet vulgar fraction one quarter fraction one quarter i vulgar fraction one half fraction one half gt vulgar fraction three quarters fraction three quarters 3 inverted question mark turned question mark latin capital letter A with grave latin capital letter A grave A latin capital letter A with acute A latin capital letter A with circumflex A latin capital letter A with tilde A latin capital letter A with diaeresis A latin capital letter A with ring above latin capital letter A ring A latin capital letter AE latin capital ligature AE AE latin capital letter C with cedilla G latin capital letter E with grave E latin capital letter E with acute E latin capital letter E with circumflex E latin capital letter E with diaeresis E latin capital letter with grave latin capital letter with acute latin capital letter with circumflex latin capital letter with diaeresis latin capital letter ETH D latin capital letter N with tilde Generated by Doxygen 189 e amp Ograve latin capital letter O with grave amp Oacute latin capital letter O with acute e Ocirc latin capital letter O with circumflex O e amp Otilde latin capital letter O with tilde O O0uml latin capital letter O with diaeresis e amp times mult
61. that the tag GENERATE_DOCBOOK is set to YES 22 14 Configuration options for the AutoGen Definitions output GENERATE_AUTOGEN_DEF f the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen Definitions see http autogen sf net file that captures the structure of the code includ ing all documentation Note that this feature is still experimental and incomplete at the moment The default value is NO 22 15 Configuration options related to the Perl module output GENERATE_PERLMOD lf the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module file that captures the structure of the code including all documentation Note that this feature is still experimental and incomplete at the moment The default value is NO PERLMOD_LATEX If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary Makefile rules Per 1 scripts and IATEX code to be able to generate PDF and DVI output from the Perl module output The default value is NO This tag requires that the tag GENERATE_PERLMOD is set to YES PERLMOD_PRETTY Ifthe PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely formatted so it can be parsed by a human reader This is useful if you want to understand what is going on On the other hand if this tag is set to NO the size of the Perl module output will be much smaller and Perl will parse it just t
62. the same semantic group Generated by Doxygen 48 Grouping A member group is defined by a 11 04 1118 block or a JQ lx Jase block if you prefer C style comments Note that the members of the group should be physically inside the member group s body Before the opening marker of a block a separate comment block may be placed This block should contain the name or name command and is used to specify the header of the group Optionally the comment block may also contain more detailed information about the group Nesting of member groups is not allowed If all members of a member group inside a class have the same type and protection level for instance all are static public members then the whole member group is displayed as a subgroup of the type protection level group the group is displayed as a subsection of the Static Public Members section for instance If two or more members have different types then the group is put at the same level as the automatically generated groups If you want to force all member groups of a class to be at the top level you should put a nosubgrouping command inside the documentation of the class Example A class Details class Test public Same documentation for both members Details x void funcliInGroupl void func2InGroupl x Function without group Details x void ungroupedFunction void funclInGroup2 protected void f
63. there are many fields or methods and many nodes the graph may become too big to be useful The UML_LIMIT_NUM_FIELDS threshold limits the number of items for each type to make the size more manageable Set this to 0 for no limit Note that the threshold may be exceeded by 50 before the limit is enforced So when you set the threshold to 10 up to 15 fields may appear but if the number exceeds 15 the total amount of fields shown is limited to 10 Minimum value 0 maximum value 100 default value 10 This tag requires that the tag HAVE_DOT is set to YES TEMPLATE_RELATIONS If the TEMPLATE _RELATIONS tag is set to YES then the inheritance and collabora tion graphs will show the relations between templates and their instances The default value is NO This tag requires that the tag HAVE_DOT is set to YES INCLUDE_GRAPH If the INCLUDE_GRAPH ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to YES then doxygen will generate a graph for each documented file showing the direct and indirect include dependencies of the file with other documented files The default value is YES This tag requires that the tag HAVE_DOT is set to YES INCLUDED_BY_GRAPH If the INCLUDED_BY_GRAPH ENABLE_PREPROCESSING and SEARCH_INCLU gt DES tags are set to YES then doxygen will generate a graph for each documented file showing the direct and indirect include dependencies of the file with other docu
64. this tag can be used to specify a list of macro names that should be expanded The macro definition that is found in the sources will be used Use the PREDEFINED tag if you want to use a different macro definition that overrules the definition found in the source code This tag requires that the tag ENABLE_PREPROCESSING is set to YES Generated by Doxygen 22 17 Configuration options related to external references 133 SKIP_FUNCTION_MACROS Ifthe SKIP_FUNCTION_MACROS tag is set to YES then doxygen s preprocessor will remove all references to function like macros that are alone on a line have an all uppercase name 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 The default value is YES This tag requires that the tag ENABLE_PREPROCESSING is set to YES 22 17 Configuration options related to external references TAGFILES The TAGFILES tag can be used to specify one or more tag files For each tag file the location of the external documentation should be added The format of a tag file without this location is as follows TAGFILES filel file2 Adding location for the tag files is done as follows TAGFILES filel locl file2 loc2 where locl and loc2 can be relative or absolute paths or URLs See the section Linking to external documentation for more information about the use of tag files Note Each tag file must
65. to YES in the configuration file If you enable this option and want to put a dot in the middle of a sentence without ending it you should put a backslash and a space after it Here is an example xx Brief description e g using only a few words Details follow Here is the same piece of code as shown above this time documented using the JavaDoc style and JAVADOC_ AUTOBRIEF set to YES rx A test class A more elaborate class description class Test public jee An enum More detailed enum description enum TEnum TVall lt enum value TVall x TVal2 lt enum value TVal2 x TVal3 lt enum value TVal3 xenumPtr lt enum pointer Details x enumVar lt enum variable Details x xx A constructor A more elaborate description of the constructor Test xx A destructor Generated by Doxygen 24 Documenting the code A more elaborate description of the destructor Test i a normal member taking two arguments and returning an integer value param a an integer argument param s a constant character pointer see Test see Test see testMeToo see publicVar return The test results 4 OF OF OH OF int testMe int a const char xs xx A pure virtual member see testMe param cl the first argument x param c2 the second argument virtual void testMeToo cha
66. to install doxygen If you downloaded the binary distribution for UNIX type configure make install Binaries are installed into the directory lt prefix gt bin Use make install_docs to install the documen tation and examples into lt docdir gt doxygen lt prefix gt defaults to usr local but can be changed with the prefix option of the configure script The default lt docdir gt directory is lt prefix gt share doc packages and can be changed with the docdir option of the configure script Alternatively you can also copy the binaries from the bin directory manually to some bin directory in your search path This is sufficient to use doxygen Note You need the GNU install tool for this to work it is part of the coreutils package Other install tools may put the binaries in the wrong directory If you have a RPM or DEP package then please follow the standard installation procedure that is required for these packages Generated by Doxygen 2 3 Known compilation problems for UNIX 9 2 3 Known compilation problems for UNIX Qt problems The Qt include files and libraries are not a subdirectory of the directory pointed to by OTDIR on some systems for instance on Red Hat 6 0 includes are in usr include qt and libs are in usr 11b The solution go to the root of the doxygen distribution and do mkdir qt cd qt in s your qt include dir here include ln s your qt lib dir here lib in s your qt bin di
67. used in the future to cope with changes that are not backward compatible The first section identified by the navindex element represents the layout of the navigation tabs displayed at the top of each HTML page At the same time it also controls the items in the navigation tree in case GENERATE_T REEVIEW is enabled Each tab is represented by a tab element in the XML file You can hide tabs by setting the visible attribute to no You can also override the default title of a tab by specifying it as the value of the title attribute If the title field is the empty string the default then doxygen will fill in an appropriate language specific title You can reorder the tabs by moving the tab elements in the XML file within the navindex element and even change the tree structure Do not change the value of the type attribute however Only a fixed set of types are supported each representing a link to a specific index You can also add custom tabs using a type with name user Here is an example that shows how to add a tab with title Google pointing to www google com lt navindex gt lt tab type user url http www google com title Google gt lt navindex gt The url field can also be a relative URL If the URL starts with ref the link will point to a documented entities such as a class a function a group or a related page Suppose we have defined a page using page with label mypage then a tab with label My Page to this page wo
68. useful when the programming language does not support the concept of member functions natively e g C It is also possible to use this command together with public protected or private The file manual c in the example directory shows how to use this command See also sections extends implements public protected and private 23 25 name header This command turns a comment block into a header definition of a member group The comment block should be followed by a block containing the members of the group See section Member Groups for an example 23 26 namespace lt name gt Indicates that a comment block contains documentation for a namespace with name lt name gt 23 27 nosubgrouping This command can be put in the documentation of a class It can be used in combination with member grouping to avoid that doxygen puts a member group as a subgroup of a Public Protected Private section See also sections publicsection protectedsection and privatesection 23 28 overload function declaration This command can be used to generate the following standard text for an overloaded member function This is an overloaded member function provided for convenience It differs from the above function only in what argument s it accepts If the documentation for the overloaded member function is not located in front of the function declaration or defini tion the optional argument should
69. value is doc This tag requires that the tag GENERATE_QHP is set to YES QHP_CUST_FILTER_NAME If the QHP_CUST_FILTER_NAME tag is set it specifies the name of a custom filter to add For more information please see Ot Help Project Custom Filters This tag requires that the tag GENERATE_QHP is set to YES QHP_CUST_FILTER_ATTRS The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the custom filter to add For more information please see Ot Help Project Custom Filters This tag requires that the tag GENERATE_QHP is set to YES 1a QHP_SECT_FILTER_ATTRS The OHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project s filter section matches Qt Help Project Filter Attributes This tag requires that the tag GENERATE_QHP is set to YES QHG LOCATION The QHG_LOCATION tag can be used to specify the location of Qt s qhelpgenerator If non GENERATE_ECLIPSEHELP If the GENERATE_ECLIPSEH empty doxygen will try to run qhelpgenerator on the generated qhp file This tag requires that the tag GENERATE_QHP is set to YES T P tag is set to YES additional index files will be generated together with the HTML files they form an Eclipse help plugin To install this plugin and make it available under the help contents menu in Eclipse the contents of the directory containing the HTML and XML files needs to be copied into the
70. will use pdf latex to generate the PDF ES to get a higher quality PDF documentation This tag requires that the tag GENERATE_LATEX is setto YES LATEX_BATCHMODE If the LATEX_BATCHMOD mand to the generated IATEX files This will instruct IATEX to keep running if errors occur instead of asking the user for help This option is also used when generating formulas in HTML The default value is NO This tag requires that the tag GENERATE_LATEX is set to Y LATEX_HIDE_INDICES lf the LATEX_HIDE The default value is NO This tag requires that the tag GENERATE_LATEX is set to Y LATEX_SOURCE_CODE E tag is set to Y ES doxygen will add the bat chmode com ES INDICES tag is set to YES then doxygen will not include the index chapters such as File Index Compound Index etc in the output with syntax highlighting in the IATEX output Note that which sources are shown also depends on other settings such as SOURCE_BROWSER The default value is NO This tag requires that the tag GENERATE_LATEX is set to Y ES If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source code ES LATEX_BIB STYLE The LATEX_BIB_STYLE tag can be used to specify the style to use for the bibliography e g plainnat or ieee info The default value is plain This tag requires that the tag GENERATE_LATEX is set to YE tr See http en wikiped
71. with different arguments the English result is returned and it will be noticed by non English users Here the maintainer of the language translator should implement at least that one particular method Generated by Doxygen 211 What says the base class of a language translator If the language translator class inherits from any adapter class then maintenance is needed In such case the language translator is considered not up to date On the other hand if the language translator derives directly from the abstract class Translator the language translator is up to date The translator adapter classes are chained so that the older translator adapter class uses the one step newer translator adapter as the base class The newer adapter does less adapting work than the older one The oldest adapter class derives indirectly from all of the adapter classes The name of the adapter class is chosen so that its suffix is derived from the previous official version of doxygen that did not need the adapter This way one can say approximately when the language translator class was last updated see details below The newest translator adapter derives from the abstract TranslatorAdapterBase class that derives directly from the abstract Translator class It adds only the private English translator member for easy implementation of the default translation inside the adapter classes and it also enforces implementation of one method for notifying the
72. 17 1 How to get information on the index page in HTML You should use the mainpage command inside a comment block like this x mainpage My Personal Index Page x section intro_sec Introduction This is the introduction x Asection install_sec Installation x subsection stepl Step 1 Opening the box E SEC 17 2 Help some all of the members of my class file namespace are not documented Check the following 1 Is your class file namespace documented If not it will not be extracted from the sources unless EXTR ACT_ALL is set to YES in the config file 2 Are the members private If so you must set EXTRACT_PRIVATE to YES to make them appear in the documentation 3 Is there a function macro in your class that does not end with a semicolon e g MY_MACRO If so then you have to instruct doxygen s preprocessor to remove it This typically boils down to the following settings in the config file ENABLE_PREPROCESSING YES MACRO_EXPANSION YES EXPAND_ONLY_PREDEF YES PREDEFINED MY_MACRO Please read the preprocessing section of the manual for more information 17 3 set EXTRACT ALL to NO none of my functions are shown in the documentation In order for global functions variables enums typedefs and defines to be documented you should document the file in which these commands are located using a comment block containing a file or file command 86 Frequently Asked Que
73. 23 73 parblock For commands that expect a single paragraph as argument such as par param and warning the parblock command allows to start a description that covers multiple paragraphs which then ends with endparblock Example x Example of a param command with a description consisting of two paragraphs x param p parblock First paragraph of the param description Second paragraph of the param description endparblock Rest of the comment block continues A XA A A F Note that the parblock command may also appear directly after param s first argument 23 74 endparblock This ends a block of paragraphs started with parblock 23 75 tparam lt template parameter name gt description Starts a template parameter for a class or function template parameter with name lt template parameter name gt followed by a description of the template parameter Otherwise similar to param 23 76 post description of the postcondition Starts a paragraph where the postcondition of an entity can be described The paragraph will be indented The text of the paragraph has no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent post commands will be joined into a single paragraph Each postcondition will start on a new line Alternatively one post command may mention several postconditions The post command ends when a blank line or some other sectioning co
74. 24 memper o A AN 148 24 20 Mamo Saco sc co A A RARE RR Bm 148 23 20 namespace NAMES vo or a ew ee Ee a A A s 148 Poet WIOSMEQIOUDING ca ita a a A a de A RA AR 148 23 28 toverload function declaration a se oo a ee eee ee 148 2 20 Package NBME 3 6 Goede ee MER we A A See le a Boe G 149 23 30 page lt name gt tiile lt o o so ee ee SEE Oe ER eee ee 149 2391 WORN A ee ee ee el ae Ee ee ae ee es 150 2392 MMADISOOUON o c bok ek ae eR we ER ARA A e OR ee ROR AR 150 23 33 property qualified property name lt o lt e ee ek eee ee ee ee ee 150 2394 NOIR oa Sede Re aie ae ee Boa ea el eae od ke me OO ee ee 150 23 30 OOUECISUSECHON s s re soe ma Da Re ee ee ee Ree See ee 151 23 36 protocol lt name gt lt header file gt lt header name gt o o ee eee 151 28 57 PUBIE Loa rd dd e dd EE EES 151 Boece UGICSCHION a aaa eae a A Be A A e a Bae eS 151 Beg A Soc ae dite ee Me a A eke ee ee 151 ao 40 MIOS NAM rra baw Sok Pk be Pe Pe a RRS ASE a eS 152 2a o NAMB INN 152 Sorte Welaigsalso AMO oca di we Ga ee EAE ENE PEE a ee wes 152 23 43 velategalso AMES essa eae Rb e bee Rha EAD a ee we eh a eS 152 25 44 WSHOWINMANZED o ee a ER ae ee be eee ee ba oe 152 CO Sl hs ak aa Be Re oe ee a a aoe A ee de dee ye ae ea a 153 23 46 struct lt name gt lt header file gt lt header name gt o o ee ee 153 23 47 typedef typedef declaration a 153 23 48 union lt nam
75. 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 Snow time utime Snow Snow file Another way to get rules matching debugging information from the flex code is in the following way touch src lt flex code file gt 1 make LEX flex d to remove the rules debug information again touch src lt flex codefile gt 1 make Note that by running doxygen with d lex you get information about which flex codefile is used Generated by Doxygen Chapter 27 Perl Module Output format Since version 1 2 18 Doxygen can generate a new output format we have called the Perl Module output format It has been designed as an intermediate format that can be used to generate new and customized output without having to modify the Doxygen source Therefore its purpose is similar to the XML output format that can be also generated by Doxygen The XML output format is more standard but the Perl Module output format is possibly simpler and easier to use The Perl Module output format is still experimental at the moment and could be changed in incompatible ways in future versions although this should not be very probable It is also lacking some features of other Doxygen backends However it can be already used to generate useful output as shown by the Perl Module b
76. 58 23 69 invariant description of invariant lt lt cea conoces aa a 158 ESTO MOIS LIA lt eee ee ee ee ee See eee eR ae ee eR ee ee 4 eS 158 23 71 War paragraph title paragraph e s coc ces y e ee A ee es 159 23 72 param dir lt parameter name gt parameter description 0 159 Soe PAI o ii A eel ae ki ee A A ts AO A ao 160 2374 AMADO io a oe a A ee ee A me OO ee a 160 23 75 Mparam lt template parameter name gt description o e ee 160 23 76 post description of the postcondition lt lt e s saos osa saca mooner ee 160 23 77 pre description of the precondition o eo 160 23 78 yemak TEMER aos a a De BRR A A e a Be 161 23 79 emaks remark lexi oc c ecs a a A A OR me a 161 23 80 result description of the result value ee ee 161 23 81 return description of the return value csan e e dna 161 23 82 returns description of the return value 0 e e a 161 23 93 velval lt return value gt description lt lt e e cene a ee a we ee es 161 20 04 SAT IBIBIENCES Ae RE LR ER e ewe de bee ee 161 2380 SGC TSISIENCES ici dee a be ae E La ee e A BASA ip ee a ae a 162 23 86 Short Short description lt c e aa 66327 be bebe de ne bed Be beh ee be ee hed 162 Soar BINGO POX Pe heb eh eee we bb eee bea ee She bd 162 23 88 test paragraph
77. 7 2 Member Groups 47 x ingroup group3 Group 4 is a subgroup of group 3 kx x ingroup group2 x brief class C3 in group 2 class C3 x ingroup group2 x brief class C4 in group 2 class C4 x x ingroup group3 x brief class C5 in link group3 the third group endlink class Ch d x x ingroup groupl group2 group3 group4 namespace N1 is in four groups x sa link groupl The first group endlink group2 group3 group4 Also see ref mypage2 x namespace N1 xx file x ingroup group3 x brief this file in group 3 x defgroup group5 The Fifth Group This is the fifth group x x x page mypagel This is a section in group 5 Text of the first section x x page mypage2 This is another section in group 5 Text of the second section x x end of group5 xx addtogroup groupl More documentation for the first group x f x another function in group 1 x void func2 yet another function in group 1 void func3 xx end of groupl 7 2 Member Groups If a compound e g a class or file has many members it is often desired to group them together Doxygen already automatically groups things together on type and protection level but maybe you feel that this is not enough or that that default grouping is wrong For instance because you feel that members of different syntactic types belong to
78. 75 AD oe RBA Me Wa Ae ato es 23 176 MES Cr Siecle eo ed ite Gt a ie e a e Ge eaea OP 23 177 o a a a A ea 23 178 The following subsections provide a list of all commands that are recognized by doxygen Unrecognized commands are treated as normal text Structural indicators 23 2 addtogroup lt name gt title Defines a group just like defgroup but in contrast to that command using the same lt name gt more than once will not result in a warning but rather one group with a merged documentation and the first title found in any of the commands Generated by Doxygen 23 3 callgraph 141 The title is optional so this command can also be used to add a number of entities to an existing group using and GQ like this addtogroup mygrp Additional documentation for group mygrp x Q A function void func1 Another function void func2 x See also page Grouping sections defgroup ingroup and weakgroup 23 3 callgraph When this command is put in a comment block of a function or method and HAVE_DOT is set to YES then doxygen will generate a call graph for that function provided the implementation of the function or method calls other documented functions The call graph will be generated regardless of the value of CALL_GRAPH Note The completeness and correctness of the call graph depends on the doxygen code parser which is not per
79. 83 182 183 184 182 a 170 addindex 164 addtogroup 140 154 anchor 164 arg 171 attention 154 author 154 authors 154 b 171 prief 154 bug 155 c 171 callergraph 141 callgraph 141 category 142 cite 164 class 142 code 172 cond 155 copybrief 173 copydetails 173 copydoc 172 copyright 156 date 156 def 142 defgroup 143 deprecated 156 details 156 diafile 176 dir 143 docbookonly 173 dontinclude 167 dot 173 dotfile 175 e 176 else 156 elseif 156 em 176 endcode 177 endcond 157 enddocbookonly 177 enddot 177 endhtmlonly 177 endif 157 endinternal 144 endlatexonly 177 endlink 164 endmanonly 178 endmsc 177 endparblock 160 endrtfonly 178 endsecreflist 165 enduml 177 endverbatim 178 endxmlonly 178 enum 143 example 143 exception 157 extends 144 f 178 fL 178 f 179 f 179 f 178 file 144 fn 145 headerfile 146 hideinitializer 146 htmlinclude 170 htmlonly 179 idlexcept 146 if 157 ifnot 158 image 179 implements 146 include 168 includelineno 168 ingroup 147 interface 147 internal 147 invariant 158 latexinclude 170 latexonly 180 li 181 214 INDEX Vine 168 Wink 164 mainpage 147 manonly 180 memberof 148 msc 174 mscfile 175 n 181 name 148 namespace 148 nosubgrouping 148
80. A destructor Generated by Doxygen 4 1 Special comment blocks 23 x A more elaborate description of the destructor Test A normal member taking two arguments and returning an integer value param a an integer argument param s a constant character pointer return The test results sa Test Test testMeToo and publicVar int testMe int a const char xs A pure virtual member Ir Asa testMe param cl the first argument param c2 the second argument virtual void testMeToo char cl char c2 0 A public variable jal Details int publicVar A function variable Ie Details int handler int a int b The brief descriptions are included in the member overview of a class namespace or file and are printed using a small italic font this description can be hidden by setting BRIEF_MEMBER_DESC to NO in the config file By default the brief descriptions become the first sentence of the detailed descriptions but this can be changed by setting the REPEAT_BRIEF tag to NO Both the brief and the detailed descriptions are optional for the Qt style By default a JavaDoc style documentation block behaves the same way as a Qt style documentation block This is not according the JavaDoc specification however where the first sentence of the documentation block is automati cally treated as a brief description To enable this behavior you should set JAVADOC_ AUTOBRIEF
81. APH is set to YES a graphical call graph is drawn for each function showing the functions that the function directly or indirectly calls e if CALLER_GRAPH is set to YES a graphical caller graph is drawn for each function showing the functions that the function is directly or indirectly called by Using a layout file you can determine which of the graphs are actually shown The options DOT_GRAPH_MAX_NODES and MAX_DOT_GRAPH_DEPTH can be used to limit the size of the various graphs The elements in the class diagrams in HTML and RTF have the following meaning A yellow box indicates a class A box can have a little marker in the lower right corner to indicate that the class contains base classes that are hidden For the class diagrams the maximum tree width is currently 8 elements If a tree is wider some nodes will be hidden If the box is filled with a dashed pattern the inheritance relation is virtual 54 Graphs and diagrams A white box indicates that the documentation of the class is currently shown A gray box indicates an undocumented class A solid dark blue arrow indicates public inheritance A dashed dark green arrow indicates protected inheritance A dotted dark green arrow indicates private inheritance The elements in the class diagram in IATEX have the following meaning A white box indicates a class A marker in the lower right corner of the box indicates that the class has base classes that are hidden If
82. ATEX this option is only used for generating bitmaps for formulas in the HTML output but not in the Makefile that is written to the output directory The default file is Latex This tag requires that the tag GENERATE_LATEX is set to YES MAKEINDEX_CMD_NAME The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate index for IATEX The default file is makeindex This tag requires that the tag GENERATE_LATEX is set to YES COMPACT_LATEX If the COMPACT_LATEX tag is set to YES doxygen generates more compact IATEX docu ments This may be useful for small projects and may help to save some trees in general The default value is NO This tag requires that the tag GENERATE_LATEX is set to YES Generated by Doxygen Configuration PAPER_TYPE The PAPER_TYPE tag can be used to set the paper type that is used by the printer Possible values are a4 210 x 297 mm letter 8 5 x 11 inches legal 8 5 x 14 inches and executive 7 25 x 10 5 inches The default value is a4 This tag requires that the tag GENERATE_LATEX is set to YES EXTRA_PACKAGES The EXTRA_PACKAGES tag can be used to specify one or more IATEX package names that should be included in the IATEX output To get the times font for instance you can specify EXTRA_PACKAGES times If left blank no extra packages will be included This tag requires that the tag GENERATE_LATEX is set to Y El
83. CTORY The OUTPUT_DIRECTORY tag is used to specify the relative or absolute path into which the generated documentation will be written If a relative path is entered it will be relative to the location where doxygen was started If left blank the current directory will be used CREATE_SUBDIRS If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub directories in 2 levels under the output directory of each output format and will distribute the generated files over these directories Enabling this option can be useful when feeding doxygen a huge amount of source files where putting all generated files in the same directory would otherwise causes performance problems for the file system The default value is NO ALLOW_UNICODE_NAMES If the ALLOW_UNICODE_NAMES tag is set to YES doxygen will allow non ASCII characters to appear in the names of generated files If set to NO non ASCII characters will be escaped for example _xE3_x81_ x84 will be used for Unicode U 3044 The default value is NO OUTPUT_LANGUAGE The OUTPUT_LANGUAGE tag is used to specify the language in which all documentation generated by doxygen is written Doxygen will use this information to generate all constant output in the proper language Possible values are Afrikaans Arabic Armenian Brazilian Catalan Chinese Chinese Traditional Croatian Czech Danish Dutch English United States Esperanto Farsi Persian
84. Doxygen i pp read read generate Custom e Man pages headers LH footer Tag file s A eee images J Windows only _ import doc refman rtf T MS Word m i HTML read cun i pages gt HTML Help Workshop gt Figure 3 1 Doxygen information flow 14 Getting Started 3 1 Step 0 Check if doxygen supports your programming language First assure that your programming language has a reasonable chance of being recognized by Doxygen These languages are supported by default C C C Objective C IDL Java VHDL PHP Python Tcl Fortran and D It is possible to configure certain file type extensions to use certain parsers see the Configuration Extension Mappings for details Also completely different languages can be supported by using preprocessor programs see the Helpers page for details 3 2 Step 1 Creating a configuration file Doxygen uses a configuration file to determine all of its settings Each project should get its own configuration file A project can consist of a single source file but can also be an entire source tree that is recursively scanned To simplify the creation of a configuration file doxygen can create a template configuration file for you To do this call doxygen from the command line with the g option doxygen g lt config file gt where lt config file gt is the name of the configuration file If you omit the file name a file named Doxyfile will be cre
85. ES 22 8 EXAMPLE_PATTERNS 2 4 22 5 BML OUTPUT o sete ek dados 22 8 EXAMPLE_RECURSIVE 22 5 HTML_STYLESHEET o co 2 ee ee 22 8 EXCWUOR 20 beet Ee aba os Ga ens 22 5 HTML_TIMESTAMP ooo 22 8 EXCLUDE_ PATTERNS occ go rrer eaa iaeei 22 5 IDL_LPROPERTY_SUPPORT 22 2 EXCLUDE_SYMBOLS occo girre pecia 22 5 KGNORE_PREFIX 0 2 65 0 ee edoi n e a 22 7 EXCLUDE SYMLINKS 22 232 eee bees 22 5 IMAGE PATH cic ee ee we Re be ees 22 5 EXPAND_AS DEFINED 2 5 22 16 INCLUDED_BY_GRAPH 22 18 EXPAND_ONLY_PREDEF 22 16 INCLUDE_FILE_PATTERNS 22 16 EXTENSION_MAPPING ooo 22 2 INCLUDE GRAPH cuce tiad eG ba eae bees 22 18 EXTERNAL GROUPS 5 22 17 INCLUDE BATH o ca o d ai ee de ed 22 16 EXTERNAL PAGES 2 0 0 eek cee bees 22 17 a A he eo Re ed 22 2 EXTERNAL_SEARCH 0 0 4 22 8 INLINE GROUPED_CLASSES 22 2 EXTERNAL_SEARCH_ID 22 8 CINE INES i i hg ee oe he ed 22 3 EXTRACT AUL orar ta aw 22 3 INLINE_INHERITED MEMB gee EXTRACT_ANON_NSPACES 22 3 INLINE SIMPLE_STRUCTS 22 2 EXTRACT_LOCAL_CLASSES 22 3 INLINE SOURCES 0 0 0 22 6 EXTRACT_LOCAL_METHODS 22 3 INPUT eb ee ten o agep doh eb ahha ocd 22 5 EXTRACT_PACKAGE 2 4 22 3 INPUT ENCODING 2 020 0005 22 5 EXTRACT P
86. F_HYPERLINKS 66 Output Formats Generated by Doxygen Chapter 13 Searching Doxygen indexes your source code in various ways to make it easier to navigate and find what you are looking for There are also situations however where you want to search for something by keyword rather than browse for it HTML browsers by default have no search capabilities that work across multiple pages so either doxygen or external tools need to help to facilitate this feature Doxygen has 7 different ways to add searching to the HTML output each of which has its own advantages and disadvantages 1 Client side searching The easiest way to enable searching is to enable the built in client side search engine This engine is implemented using Javascript and DHTML only and runs entirely on the clients browser So no additional tooling is required to make it work To enable it set SEARCHENGINE to YES in the config file and make sure SERVER_BASED_SEARCH is set to NO An additional advantage of this method is that it provides live searching i e the search results are presented and adapted as you type This method also has its drawbacks it is limited to searching for symbols only It does not provide full text search capabilities and it does not scale well to very large projects then searching becomes very slow 2 Server side searching If you plan to put the HTML documentation on a web server and that web server has the capability
87. Finnish French German Greek Hungarian Indonesian Italian Japanese Japanese en Japanese with English messages Korean Korean en Korean with English messages Latvian Lithuanian Macedonian Norwegian Persian Farsi Polish Portuguese Romanian Russian Serbian Serbian Cyrillic Slovak Slovene Spanish Swedish Turkish Ukrainian and Vietnamese The default value is English BRIEF_MEMBER_DESC If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member descriptions after the members that are listed in the file and class documentation similar to Javadoc Set to NO to disable this The default value is Y GI S REPEAT_BRIEF Ifthe REPEAT_BRIEF tag is set to YES doxygen will prepend the brief description of a mem ber or function before the detailed description Note If both HIDE _UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO the brief descriptions will be completely suppressed The default value is YES ABBREVIATE_BRIEF This tag implements a quasi intelligent brief description abbreviator that is used to form the text in various listings Each string in this list if found as the leading text of the brief description will be stripped from the text and the result after processing the whole list is used as the annotated text Otherwise the brief description is used as is If left blank the following values are used Sname is automatica
88. HTML and XML commands with Markdown for matting Disable only in case of backward compatibilities issues The default value is YES AUTOLINK_SUPPORT When enabled doxygen tries to link words that correspond to documented classes or namespaces to their corresponding documentation Such a link can be prevented in individual cases by putting a sign in front of the word or globally by setting AUTOLINK_SUPPORT to NO S Gl The default value is Y BUILTIN _STL_ SUPPORT If you use STL classes i e std string std vector etc but do not want to include a tag file for the STL sources as input then you should set this tag to YES in order to let doxy gen match functions declarations and definitions whose arguments contain STL classes e g func std istring versus func std string This also make the inheritance and collaboration dia grams that involve STL classes more complete and accurate The default value is NO CPP_CLI_SUPPORT f you use Microsoft s C CLI language you should set this option to YES to enable pars ing support The default value is NO Generated by Doxygen 22 3 Build related configuration options 111 SIP_SUPPORT Set the SIP_SUPPORT tag to YES if your project consists of sip sources only Doxygen will parse them like normal C but will assume all classes use public instead of private inheritance when no explicit protection keyword is present The default value is
89. IVE EXCLUDE_PATTERNS ALPHABETICAL_ INDEX COLS_IN_ALPHA_INDEX IGNORE_PREFIX ENABLE_PREPROCESSING ES MACRO_EXPANSION YES INCLUDE_PATH QTDIR include PREDEFINED Q PROPERTY x Q_OVERRIDE x Q_EXPORT Q_ENUMS x QT_STATIC_CONST static const i ES ES ES QTDIR src Cpp h qx doc ES codec cpp moc_ compat x 3rdparty x ES KK OWK F KF KK KN _WS_X11_ INCLUDE_MENUITEM_DEF EXPAND_ONLY_PREDEF YES EXPAND_AS_DEFINED Q OBJECT_FAKE Q_OBJECT ACTIVATE_SIGNAL_WITH_PARAM Q_VARIANT_AS Here doxygen s preprocessor is used to substitute some macro names that are normally substituted by the C preprocessor but without doing full macro expansion Generated by Doxygen Chapter 23 Special Commands 23 1 Introduction All commands in the documentation start with a backslash Y or an at sign If you prefer you can replace all commands starting with a backslash below by their counterparts that start with an at sign Some commands have one or more arguments Each argument has a certain range e If lt sharp gt braces are used the argument is a single word If round braces are used the argument extends until the end of the line on which the command was found If curly braces are used the argument extends until the next paragraph Paragraphs are delimited by a blank line or by a section indicator If in addition to the above argument specifiers square
90. LLABORATION_GRAPH 134 COLS_IN_ALPHA INDEX 119 COMPACT_LATEX 127 COMPACT_RTF 129 CPP_CLI_SUPPORT 110 CREATE_SUBDIRS 108 DIA_PATH 134 DIAFILE_DIRS 136 DIRECTORY_GRAPH 135 DISABLE_INDEX 124 DISTRIBUTE_GROUP_DOC 111 Doc 5 docbook 16 Generated by Doxygen INDEX 215 DOCBOOK_OUTPUT 131 DOCBOOK_PROGRAMLISTING 131 DOCSET_BUNDLE_ID 122 DOCSET_FEEDNAME 122 DOCSET_PUBLISHER_ID 122 DOCSET_PUBLISHER_NAME 123 DOT_CLEANUP 137 DOT_FONTNAME 134 DOT_FONTPATH 134 DOT_FONTSIZE 134 DOT_GRAPH_MAX_NODES 136 DOT_IMAGE_FORMAT 136 DOT_MULTI_TARGETS 137 DOT_NUM_THREADS 134 DOT_PATH 136 DOT_TRANSPARENT 137 DOTFILE_DIRS 136 DOXYFILE_ENCODING 107 ECLIPSE_DOC_ID 124 ENABLE_PREPROCESSING 132 ENABLED_ SECTIONS 114 ENUM_VALUES_PER_LINE 125 EXAMPLE_PATH 116 EXAMPLE_PATTERNS 117 EXAMPLE_RECURSIVE 117 EXCLUDE 116 EXCLUDE_PATTERNS 116 EXCLUDE_SYMBOLS 116 EXCLUDE_SYMLINKS 116 EXPAND_AS_ DEFINED 132 EXPAND_ ONLY_PREDEF 132 EXT_LINKS_IN_WINDOW 125 EXTENSION_MAPPING 110 EXTERNAL_GROUPS 133 EXTERNAL PAGES 133 EXTERNAL_SEARCH 126 EXTERNAL_SEARCH_ID 127 EXTRA_PACKAGES 128 EXTRA_SEARCH_MAPPINGS 127 EXTRACT_ALL 111 EXTRACT_ANON_NSPACES 112 EXTRACT_LOCAL_CLASSES 112 EXTRACT_LOCAL_METHODS 112 EXTRACT_PACKAGE 112 EXTRACT_PRIVATE 112 EXTRACT_STATIC 112 features 95 FILE_PATTERNS 116 FILE_VERSION_ FILTER 114 FILTER_PATTERNS 117 FILTER_SOURCE_ FILES 117 FILTER_SOURCE_PATTERNS
91. NO IDL_PROPERTY_SUPPORT For Microsoft s IDL there are propget and propput attributes to indicate getter and setter methods for a property Setting this option to YES will make doxygen to replace the get and set methods by a property in the documentation This will only work if the methods are indeed getting or setting a simple type If this is not the case or you want to show the methods anyway you should set this option to NO The default value is YES DISTRIBUTE_GROUP_DOC f member grouping is used in the documentation and the DISTRIBUTE_GROUe P_DOC tag is set to YES then doxygen will reuse the documentation of the first member in the group if any for the other members of the group By default all members of a group must be documented explicitly The default value is NO SUBGROUPING Set the SUBGROUPING tag to YES to allow class member groups of the same type for instance a group of public functions to be put as a subgroup of that type e g under the Public Functions section Set it to NO to prevent subgrouping Alternatively this can be done per class using the nosubgrouping command The default value is YES INLINE_GROUPED_CLASSES When the INLINE_GROUPED_CLASSES tag is set to YES classes structs and unions are shown inside the group in which they are included e g using ingroup instead of on a separate page for HTML and Man pages or section for ATEX and RTF Note that this feature does not work in co
92. NPUT 116 INPUT_ENCODING 116 INPUT_FILTER 117 installation 7 INTERACTIVE_SVG 136 INTERNAL_DOGS 112 JAVADOC_AUTOBRIEF 109 LaTeX 16 LATEX_BATCHMODE 129 LATEX_BIB_STYLE 129 LATEX_CMD_NAME 127 LATEX_EXTRA_FILES 128 LATEX_EXTRA_STYLESHEET 128 LATEX_FOOTER 128 LATEX_HEADER 128 LATEX_HIDE_INDICES 129 LATEX_OUTPUT 127 LATEX_SOURCE_CODE 129 LAYOUT_FILE 115 libiconv 7 license 4 LOOKUP_CACHE_SIZE 111 MACRO_EXPANSION 132 make 7 MAKEINDEX_CMD_NAME 127 man 16 MAN_EXTENSION 130 MAN_LINKS 130 MAN_OUTPUT 130 MAN_SUBDIR 130 MARKDOWN_SUPPORT 110 MATHJAX_CODEFILE 126 MATHJAX_EXTENSIONS 126 MATHJAX_FORMAT 125 MATHJAX_RELPATH 125 MAX_DOT_GRAPH_DEPTH 136 MAX_INITIALIZER_LINES 114 MSCFILE_DIRS 136 MSCGEN_PATH 134 MULTILINE_CPP_IS_BRIEF 109 OPTIMIZE_FOR_FORTRAN 110 OPTIMIZE_OUTPUT_FOR_C 110 OPTIMIZE_OUTPUT_JAVA 110 OPTIMIZE_OUTPUT_VHDL 110 output formats 65 OUTPUT_DIRECTORY 108 OUTPUT_LANGUAGE 108 PAPER_TYPE 128 parsing 17 PDF_HYPERLINKS 128 perl 7 PERL_PATH 133 perlmod 203 PERLMOD_LATEX 131 PERLMOD_MAKEVAR_PREFIX 132 PERLMOD_PRETTY 131 PLANTUML_INCLUDE_PATH 136 PLANTUML_JAR_PATH 136 PREDEFINED 132 PROJECT_BRIEF 107 PROJECT_LOGO 107 PROJECT_NAME 107 PROJECT_NUMBER 107 QCH_FILE 123 QHG_LOCATION 124 QHP_CUST_FILTER_ATTRS 124 QHP_CUST_FILTER_NAME 124 QHP_NAMESPACE 124 QHP_SECT_FILTER_ATTRS 124 QHP_VIRTUAL_FOLDER 124 Qt 7 QT_AUTOBRIEF 109 QUIET
93. OSES 23 134 Wo 634 ie AAA AAA A PS ORS 23 159 MAME cays asi ee sete Ge a A ee eR Os Bk Hed Gee a WIAMIGSPAOG o o a e ee ee a es ee ie Goa nosubgrouping o o o e Nr Ze Be A he Mound aA ae wl NOVONIOSG 22 ccc Gok Be eee ee a a ee n a en entice te gd ee Get ee sce E 23 160 MORRO iris a ee sn ee BA aS amp SR asad PAI ka ae ae a Ra EN RDN cc ee eee Ge a a Se See a o e AAA a A ee Ga o 23 109 o a ae Bk ee SGT is ae hi tet Sa Ca SR eh ant EE Se DANDO 00 ci ke a iw oe EE DOBLE ur d ee Aiea EA Bee de Re MMS A AAA a ate o Bie Se a ae eG Bio Se ee Ga privates ocio oe a OS oD a naa o cond acitn ee a do Atala bok ay A amp B com 2h a PISA 00 a Sei de a ap hha o protectedsection o e o AA me we te A dane on ee aa a MOWING fae eles hos Sey BE Gash hance wee Ene my Sede tes ee NDUBNICSEGHON o a ee ee ee a DU a Yee tae ek a a Se eS AE Sa a A NE a ee ee at Be a ee EE ee et a 23 100 WONG a A a a A Be ELE 23 101 MOOG aria AAA we RS FOIE a a e rl Ae em WEICIAS oc a a 23 43 WEIAIGSAISO o cw ee a ee ya ia a 23 42 WON se sie r RS eS cis Re HS 23 78 WOKS se Be BAe eRe SES 23 79 VOM cia eek ace ha PA ed ee we od amp oR we e A 23 80 MO 63 en BER ow A a AS 23 81 a 2 6 oe 64 ae a SEAS ble Ree L S 23 82 WI 6 6 36h aaa amp we RR i Ps TG 23 83 MOON A Si Be oh din Ge tlcte Sys lt a ak Ta Nise apa Ge Sea 23 161 A ao eye 8 do A A A G 23 84 SOS aci we See EE Pa we we 23 102 SOCIO 2 2 ao
94. PUT examples examples doc src FILE PATTERNS cc h INCLUDE_PATH examples TAGFILES gt tag PERL_PATH usr bin perl SEARCHENGINE YES To regenerate the Qt 1 44 documentation from the sources you could use the following config file Generated by Doxygen 138 Configuration PROJECT_NAME Qt OUTPUT_DIRECTORY qt_docs HIDE_UNDOC_MEMBERS YES HIDE_UNDOC_CLASSES YES ENABLE _PREPROCESSING YES MACRO_EXPANSION YES EXPAND_ONLY_PREDEF YES SEARCH_INCLUDES YES FULL_PATH_NAMES YES STRIP_FROM_PATH OTDIR PREDEFINED USE_TEMPLATECLASS Q_EXPORT QArrayT QArray QListT QList QDictT QDict QQueueT QQueue QVectorT QVector Q Q Q Q Q Q Q Q Q Q PtrDictT QPtrDict ntDictT QIntDict StackT QStack DictIteratorT QDictIterator ListIteratorT QListIterator CacheT QCache CachelteratorT QCachelterator ntCacheT QIntCache ntCachelIteratorT QIntCachelIterator ntDictIteratorT QIntDictIterator QPtrDictIteratorT QPtrDictIterator INPUT QTDIR doc QTDIR src widgets QTDIR src kernel QTDIR src dialogs QTDIR src tools FILE_PATTERNS cpp h q doc INCLUDE_PATH QTDIR include RECURSIVE YES For the Qt 2 1 sources recommend to use the following settings rt PROJECT_NAME PROJECT_NUMBER HIDE_UNDOC_MEMBERS HIDE_UNDOC_CLASSES SOURCE_BROWSER INPUT FILE_PATTERNS Sl RECURS
95. RA ae o a A ci 23 147 CORBIS iu oa a aa 23 58 ps AA a ees ESS a Ao wade he Be 23 142 WOM a Ht Gee A ie 23 59 E o e aie sa a a a Re RE a ae Se A 23 148 ON aa a A season A A a gh ee 23 7 NORRI aa e Gel wm a aa aa Ee 23 10 IEOU oo es ce he E Gee Be a 23 8 SIMS ana hi rr a EE ah ee Ged 23 11 deprecated ico eb de Ee ee ee ee 23 60 ECONO o i ok a a a a a Se Y 23 66 A o e A Bac Ar at a AS POR A ep ods Mies ey 23 61 a as he cs RA ek ae ew te R 23 13 A acca te ge Pods Me Ga Bay he Se PG Pe a 23 135 Mia io Ne aS ahh at hob gee a cae de aes D 23 149 A a ee Ga a 23 9 Y ants ae ae a Se he a RS Ge eR dete e 23 150 para ne ek ods Bae eed Bae aa 23 129 aaa Shae ating ns GS Hea as E 23 151 140 Special Commands MN e eG ea EE Ie ee A ele wine GO Weegee o occ Ree Ee mee wee Ee hnideinitializer 2 2 2 2 ee ee ee INGUI gc ck ee wee Rew ee Oe wwe e 23 119 o AN 23 154 MUERE a awake Ms a y oe A MS la ad A Se oy aes Se 23 155 Vimplements 2 o ko a a ee a RIGS e Bo ce be ea Beh we Sb ak Bde He 23 111 includelineno c soos s o o e a 23 112 MGM RY 2 a Be GR a Gat Be BA Gem i a WOE A Lo 5 5 6S RES BEDS OR BY OO ew o o cee ek Re we ee RARER ee OES a o o eb oe he ed es date 23 120 o a wk ce eon OE a a a ee e 23 156 Ml Taide Gch DAS Sk a aA ES Gwe Ses 23 158 WTIAINPAYE cee ee ea Ea ee a a et kaa ok ee a A a Re ie ee 23 157 Wihemberl ca ae a eRe eee ee A eee ew Ree ee Su 23 131 WISE 65 SS 6 2 ENB Ee o R
96. RIVATE co cele a 22 3 INPUT FILTER oo cora a ee ait 22 5 EXTRACT STATIG ou cion ade ha oe ae a 22 3 INTERACTIVE SVG ooo 22 18 EXTRA PACKAGES oco coco 22 9 INTERNAL DOGS 2 ee oe a nci 22 3 EXTRA_SEARCH_MAPPINGS 22 8 JAVADOC_AUTOBRIEF 22 2 EXT_LINKS_IN WINDOW 22 8 LATEX BATOBMODE 2 oiei 6208 cadet ad 22 9 PILE PATTERNS ooo iio doe ek ae ae 22 5 LATEX BIB STYLE on pga ene 22 9 FILE_VERSION_FILTER occ 22 3 LATEX OMD NAME co a ee i 22 9 FILTER PATTERNS occa caino ee ee 22 5 LATEX EXTRA FILES pcg pee ia 22 9 FILTER_SOURGE FILES 2 ee ce ne e 22 5 LATEX_EXTRA_STYLESHEET 22 9 FILTER_SOURCE_PATTERNS 22 5 LATEX FOOTER ee ee ee ge 22 9 FORCE_LOCAL_INCLUDES 4 22 3 LATEX_HEADER 2 ou coor ee ee 22 9 FORMULA_FONTSIZE 0 0 5 22 8 LATEX_HIDE_INDICES p o reco ee es 22 9 FORMULA_TRANSPARENT 22 8 LATEX OUROUT ao ei dele eens peers 22 9 FULL_PATH_NAMES 0 4 22 2 LATEX_SOURCE CODE 0 002 002 22 9 GENERATE_AUTOGEN_DEF 22 14 LAYOUT FLE o oca ke it a 22 3 GENERATE BUGLIST o o o o 22 3 LOOKUP_CACHE SIZE 2 ncn ee ee 22 2 GENERATE_CHI e eccede despir ee ee ee 22 8 MACRO_EXPANSION 22 16 GENERATE_DEPRECATEDLIST 22 3 MAKEINDEX_CMD_NAME 22 9 GENERATE_DOCBOOK 22 13 MAN_EXTENSION 22 11 GENERATE_DOCSET
97. S SEARCH_INCLUDES Ifthe SEARCH_INCLUDES tag is set to YES the include files in the INCLUDE_PATH will be searched if a include is found The default value is YES This tag requires that the tag ENABLE_PREPROCESSING is set to YES INCLUDE_PATH The INCLUDE_PATH tag can be used to specify one or more directories that contain include files that are not input files but should be processed by the preprocessor This tag requires that the tag SEARCH_INCLUDES is set to YES INCLUDE_FILE_PATTERNS You can use the INCLUDE_FILE PATTERNS tag to specify one or more wild card patterns like h and hpp to filter out the header files in the directories If left blank the patterns specified with FILE_PATTERNS will be used This tag requires that the tag ENABLE_PREPROCESSING is set to YES PREDEFINED The PREDEFINED tag can be used to specify one or more macro names that are defined before the preprocessor is started similar to the D option of e g gcc The argument of the tag is a list of macros of the form name or name definition no spaces If the definition and the are omitted 1 is assumed To prevent a macro definition from being undefined via undef or recursively expanded use the operator instead of the operator This tag requires that the tag ENABLE_PREPROCESSING is set to YES EXPAND_AS DEFINED If the MACRO_EXPANSION and EXPAND _ONLY_PREDEF tags are set to YES then
98. S SERVER_BASED_SEARCH YES EXTERNAL_SEARCH YES This will make doxygen generate a file called searchdata xml in the output directory configured with OUTP UT_DIRECTORY You can change the file name and location with the SEARCHDATA_FILE option The next step is to put the raw search data into an index for efficient searching You can use doxyindexer for this Simply run it from the command line doxyindexer searchdata xml This will create a directory called doxysearch db with some files in it By default the directory will be created at the location from which doxyindexer was started but you can change the directory using the o option Copy the doxysearch db directory to the same directory as where the doxysearch cgi is located and rerun the browser test by pointing the browser to http yoursite com path to cgi doxysearch cgi test You should now get the following message Test successful Now you should be enable to search for words and symbols from the HTML output 13 1 2 2 Multi project index In case you have more than one doxygen project and these projects are related it may be desirable to allow searching for words in all projects from within the documentation of any of the projects To make this possible all that is needed is to combine the search data for all projects into a single index e g for two projects A and B for which the searchdata xml is generated in directories project_A and project_B run doxyindexer
99. Similar to using da lt value gt Identifies a property Ignored by doxygen Here is an example of a typical piece of code using some of the above commands lt summary gt A search engine lt summary gt class Engine EA ARA 117 114 Air 117 117 117 dot lt summary gt The Search method takes a series of parameters to specify the search criterion and returns a dataset containing the result set lt summary gt lt param name connectionString gt the connection string to connect to the database holding the content to search lt param gt lt param name maxRows gt The maximum number of rows to return in the result set lt param gt lt param name searchString gt The text that we are searching for lt param gt lt returns gt A DataSet instance containing the matching rows It contains a maximum number of rows specified by the maxRows parameter lt returns gt public DataSet Search string connectionString int maxRows int searchString DataSet ds new DataSet return ds Generated by Doxygen Part Ill Developers Manual Chapter 26 Doxygen s internals Doxygen s internals Note that this section is still under construction The following picture shows how source files are processed by doxygen config file Config parser input files C Preprocessor Language parser string tag file parser Data organiser Source Parser
100. TERNAL_SEARCH are both enabled the EXTERNAL_SEARCH_ID tag can be used as an identifier for the project This is useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple projects and redirect the results back to the right project This tag requires that the tag SEARCHENGINE is set to YES EXTRA_SEARCH MAPPINGS The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen projects other than the one defined by this configuration file but that are all added to the same external search index Each project needs to have a unique id set via EXTERNAL_SEARCH_ID The search mapping then maps the id of to a relative location where the documentation can be found The format is EXTRA_SEARCH_MAPPINGS tagnamel locl tagname2 loc2 This tag requires that the tag SEARCHENGINE is set to YES 22 9 Configuration options related to the LaTeX output GENERATE_LATEX If the GENERATE_LATEX tag is set to YES doxygen will generate IATEX output The default value is YES LATEX_OUTPUT The LATEX_OUTPUT tag is used to specify where the IATEX docs will be put If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it The default directory is latex This tag requires that the tag GENERATE_LATEX is set to YES LATEX_CMD_NAME The LATEX_CMD_NAME tag can be used to specify the ATEX command name to be in voked Note that when enabling USE_PDFL
101. TE_RELATIONS o 22 18 OT AUTOBRIEF oon coco a aa 22 2 EA a a ds A 22 8 QUIET ana TREEVIEW_WIDTH 2000 22 8 RECURSIVE ll 225 TYPEDEF HIDES STRUCT 22 2 REFERENCED BY_RELATION 22 6 ni to tee ee Se Bs bons Sa cele REFERENCES LINK SOURCE 22 6 Re AE ores mM Pees a eeng REFERENCES RELATION coo ooo co 22 6 A 28 ae SSNS Ree aan Soa REPEAT_BRIEF Pe caus Sh en aces Sette stat ane carve eke 299 USE_MATHJAX E E E E gt 22 8 RTF_EXTENSIONS FILE 0 5 22 10 USE_MDFILE_AS_MAINPAGE 22 5 RTF_HYPERLINKS 00 000005 22 10 USE_PDFLATEX ooo 22 9 RIF OUTPUT oca a fede eae dso a ed aoe a 22 10 VERBATIM HEADERS 00000 bose La a ele be ee 22 6 RTF_SOURCE_CODE 00 22 10 WARNINGS jc daisi A a wk 22 4 ATF STYLESHEET FILE oco peca nipande 22 10 WARN FORMAT o cc dooi ie A 22 4 SEARCHDATA FILE 000 22 8 WARN_IF_DOC_ERROR 22 4 SEARCHENGINE oa a o os we a 22 8 WARN_IF UNDOCUMENTED 22 4 SEARCHENGINE URL 22 8 WARN_LOGFILE 00002 22 4 SEARCH_INCLUDES 22 16 WARN_NO PARAMDOC 22 4 SEPARATE_MEMBER PAGES 22 2 XML OUTPUT ees ce ha dad 2212 SERVER_BASED SEARCH 22 8 XML_PROGRAMLISTING 0 22 12 22 2 Project related configuration options DOXYFILE_ENCODING This tag specifies the encoding used for all char
102. TML 23 168 This command writes the character to the output This character has to be escaped in some cases because it is used to expand environment variables 23 169 This command writes the character to the output This character has to be escaped in some cases because it is used to refer to documented entities 23 170 lt This command writes the lt character to the output This character has to be escaped because it has a special meaning in HTML 23 171 gt This command writes the gt character to the output This character has to be escaped because it has a special meaning in HTML 23 172 This command writes the character to the output This character has to be escaped in some cases because it is used to prevent auto linking to word that is also a documented class or struct 23 173 This command writes the character to the output This character has to be escaped in some cases because it is used in pairs to indicate an unformatted text fragment 23 174 This command writes a dot to the output This can be useful to prevent ending a brief description when JAVA DOC_AUTOBRIEF is enabled or to prevent starting a numbered list when the dot follows a number at the start of a line 23 175 s This command writes a double colon to the output This character sequence has to be escaped in some cases because it is used to reference to documented entities Generated by Doxyge
103. 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 flex and can be found in src pre 1 For condition blocks 1 f evaluation of constant expressions is needed For this a yace based parser is used which can be found in src constexp y and src constexp 1 The preprocessor is invoked for each file using the preprocessFile function declared in src pre h and will append the preprocessed result to a character buffer The format of the character buffer is 0x06 file name 1 0x06 preprocessed contents of file 1 0x06 file name n 0x06 preprocessed contents of file n Language parser The preprocessed input buffer is fed to the language parser which is implemented as a big state machine using flex It can be found in the file src scanner 1 There is one parser for all languages C C Java IDL The state variables insideIDL
104. U bison version 2 5 Linux and 2 3 MacOSX GNU make version 3 81 Perl version 5 12 Python version 2 7 and 3 4 TeX Live 2009 or later Generated by Doxygen 12 Installation Generated by Doxygen Chapter 3 Getting Started The executable doxygen is the main program that parses the sources and generates the documentation See section Doxygen usage for more detailed usage information Optionally the executable doxywizard can be used which is a graphical front end for editing the configuration file that is used by doxygen and for running doxygen in a graphical environment For Mac OS X doxywizard will be started by clicking on the Doxygen application icon The following figure shows the relation between the tools and the flow of information between them it looks complex but that s only because it tries to be complete gt A EN Doxywizard Your application custo F output rea i generate edit XML files al doxmlparser lib R Config file 7 Layout file Doxyfile N make ps postscript e w m generate generate Latex files latex read upd gt pdate e Makefile make pdf PDF read Lr Sources j
105. _TREEVIEW YES if you already use an external index i e have one of the following options enabled GENERATE_HTMLHELP GE NERATE_ECLIPSEHELP GENERATE_QHP or GENERATE_DOCSET then you can also disable all indices like so e DISABLE_INDEX YES e GENERATE_TREEVIEW NO 14 1 3 Dynamic Content To make the HTML output more interactive doxygen provides a number of options that are disabled by default e enabling HTML_DYNAMIC_SECTIONS will make doxygen hide certain content like graphs in the HTML by default and let the reader expand these sections on request enabling HAVE _DOT along with INTERACTIVE _SVG while setting DOT_IMAGE_FORMAT to svg will make doxygen produce SVG images that will allow the user to zoom and pan this only happens when the size of the images exceeds a certain size 14 1 4 Header Footer and Stylesheet changes To tweak things like fonts or colors margins or other look amp feel aspects of the HTML output in detail you can create a different cascading style sheet You can also let doxygen use a custom header and footer for each HTML page it generates for instance to make the output conform to the style used on the rest of your web site To do this first run doxygen as follows doxygen w html header html footer html customdoxygen css This will create 3 files header html is a HTML fragment which doxygen normally uses to start a HTML page Note that the fragment ends with a body tag and that
106. a Rename TranslatorEnglishto TranslatorYourLanguage In the member idLanguage change english into the name of your language use lower case char acters only Depending on the language you may also wish to change the member functions Latex LanguageSupportCommand and other you will recognize them when you start the work Edit all the strings that are returned by the member functions that start with t r Try to match punctuation and capitals To enter special characters with accents you can Enter them directly if your keyboard supports that Recall that the text is expected to be saved using the UTF 8 encoding Doxygen will translate the characters to proper IATEX and leaves the HTML and man output in UTF 8 Use HTML codes like amp aum1 for an a with an umlaut i e 4 See the HTML specification for the codes On nix systems Rerun the configure script from the root i e in the doxygen directory so that it generates doxygen src lang_cfg h This file should now contain a define for your language code Run make again from the root i e in the doxygen directory of the distribution in order to regenerate the Makefiles On Windows stop Visual Stdio open a command window goto the directory doxygen srce give the command python languages py gt winbuild Languages rules close the command window start Visual Studio again Your language should now be selectable in the
107. a member An instance of such a class can be part of a file class FileDef a class class ClassDef a namespace class NamespaceDef a group class Group Def or a Java package class PackageDef Tag file parser If tag files are specified in the configuration file these are parsed by a SAX based XML parser which can be found in src tagreader cpp The result of parsing a tag file is the insertion of Ent ry objects in the entry tree The field Entry tagInfo is used to mark the entry as external and holds information about the tag file Documentation parser 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 in C and can be found in src docparser cpp The tokens that are eaten by the parser come from src doctokenizer Code fragments found in the comment blocks are passed on to the source parser The main entry point for the documentation parser is val idatingParseDoc declaredinsrc docparser h For simple texts with special commands validatingParseText is used Source parser If source browsing is enabled or if code fragments are encountered in the documentation the source parser
108. a result this works even for very large projects where reading all XML files as one big DOM tree would not fit into memory See the Breathe project for an example that uses doxygen XML output from Python to bridge it with the Sphinx document generator Generated by Doxygen Chapter 15 Custom Commands Doxygen provides a large number of special commands XML commands and HTML commands that can be used to enhance or structure the documentation inside a comment block If you for some reason have a need to define new commands you can do so by means of an al as definition The definition of an alias should be specified in the configuration file using the ALIASES configuration tag 15 1 Simple aliases The simplest form of an alias is a simple substitution of the form name value For example defining the following alias ALIASES sideeffect par Side Effects n will allow you to put the command sideeffect or sideeffect in the documentation which will result in a user defined paragraph with heading Side Effects Note that you can put n s in the value part of an alias to insert newlines Also note that you can redefine existing special commands if you wish Some commands such as xrefitem are designed to be used in combination with aliases 15 2 Aliases with arguments Aliases can also have one or more arguments In the alias definition you then need to specify the number of arguments between curly braces In the value p
109. ackets in this description When a parameter is both input and output in out is used as attribute Here is an example for the function memcpy x Copies bytes from a source memory area to a destination memory area where both areas may not overlap param out dest The memory area to copy to param in src The memory area to copy from param in n The number of bytes to copy void memcpy void dest const void src size_t n The parameter description is a paragraph with no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent param commands will be joined into a single paragraph Each parameter description will start on anew line The param description ends when a blank line or some other sectioning command is encountered See section fn for an example Note that you can also document multiple parameters with a single param command using a comma separated list Here is an example Sets the position param x y z Coordinates of the position in 3D space Generated by Doxygen 160 Special Commands void setPosition double x double y double z double t f Note that for PHP one can also specify the type or types if you separate them with a pipe symbol which are allowed for a parameter as this is not part of the definition The syntax is the same as for phoDocumentor i e param datatypel datatype2 Sparamname description
110. acters in the config file that follow The default is UTF 8 which is also the encoding used for all text before the first occurrence of this tag Doxygen uses 1ibiconv or the iconv built into 1ibc for the transcoding See http www gnu org software libiconv for the list of possible encodings The default value is UTF 8 PROJECT_NAME The PROJECT_NAME tag is a single word or a sequence of words surrounded by double quotes unless you are using Doxywizard that should identify the project for which the documentation is generated This name is used in the title of most generated pages and in a few other places The default value is My Project PROJECT_NUMBER The PROJECT_NUMBER tag can be used to enter a project or revision number This could be handy for archiving the generated documentation or if some version control system is used PROJECT_BRIEF Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project Keep the description short PROJECT_LOGO With the PROJECT_LOGO tag one can specify a logo or an icon that is included in the docu mentation The maximum height of the logo should not exceed 55 pixels and the maximum width should not exceed 200 pixels Doxygen will copy the logo to the output directory Generated by Doxygen 108 Configuration OUTPUT_DIRE
111. ag is set to YES then doxygen will sort the detailed doc umentation of file and class members alphabetically by member name If set to NO the members will appear in declaration order The default value is YES SORT_BRIEF_DOCS lf the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief descriptions of file namespace and class members alphabetically by member name If set to NO the members will appear in declaration order Note that this will also influence the order of the classes in the class list The default value is NO SORT_MEMBERS CTORS_1ST Ifthe SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the brief and detailed documentation of class members so that constructors and destructors are listed first If set to NO the constructors will appear in the respective orders defined by SORT_BRIEF_DOCS and SO RT_MEMBER_DOCS Note If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief member documentation If SORT_MEMBER_DOGS is set to NO this option is ignored for sorting detailed member documentation The default value is NO SORT_GROUP_NAMES f the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy of group names into alphabetical order If set to NO the group names will appear in their defined order The default value is NO SORT_BY SCOPE_NAME Ifthe SORT_BY_SCOPE_NAME tag is set to YES the class list will be sor
112. an be used to overwrite the name of the link that is used in the class documentation to something other than lt header file gt This can be useful if the include name is not located on the default include path like lt X11 X h gt With the lt header name gt argument you can also specify how the include statement should look like by adding either double quotes or sharp brackets around the name By default sharp brackets are used if just the name is given If a pair of double quotes is given for either the lt header file gt or lt header name gt argument the current file in which the command was found will be used but with quotes So for a comment block with a headerfile command inside a file test h the following three commands are equivalent headerfile test h test h headerfile test h headerfile To get sharp brackets you do not need to specify anything but if you want to be explicit you could use any of the following headerfile test h lt test h gt headerfile test h lt gt headerfile lt gt To globally reverse the default include representation to local includes you can set FORCE_LOCAL_INCLUDES to YES To disable the include information altogether set SHOW_INCLUDE_FILES to NO 23 17 hideinitializer By default the value of a define and the initializer of a variable are displayed unless they are longer than 30 lines By putting this command in a comment block of a define or variable the initiali
113. an be useful to avoid cases where a documentation block would otherwise have to be duplicated or it can be used to extend the documentation of an inherited member The link object can point to a member of a class file or group a class a namespace a group a page ora file checked in that order Note that if the object pointed to is a member function variable typedef etc the compound class file or group containing it should also be documented for the copying to work To copy the documentation for a member of a class one can for instance put the following in the documentation x copydoc MyClass myfunction More documentation if the member is overloaded you should specify the argument types explicitly without spaces like in the following copydoc MyClass myfunction typel type2 Qualified names are only needed if the context in which the documentation block is found requires them The copydoc command can be used recursively but cycles in the copydoc relation will be broken and flagged as an error Note that copydoc foo is roughly equivalent to doing Generated by Doxygen 23 127 copybrief lt link object gt 173 brief copybrief foo details copydetails foo See copybrief and copydetails for copying only the brief or detailed part of the comment block 23 127 copybrief lt link object gt Works in a similar way as copydoc but will only copy the brief description not
114. and a related page which will be generated On the related page all sections of the same type will be collected The first argument lt key gt is an identifier uniquely representing the type of the section The second argument is a quoted string representing the heading of the section under which text passed as the fourth argument is put The third argument list title is used as the title for the related page containing all items with the same key The keys todo test bug and deprecated are predefined To get an idea on how to use the xrefitem command and what its effect is consider the todo list which for English output can be seen an alias for the command xrefitem todo Todo Todo List Since it is very tedious and error prone to repeat the first three parameters of the command for each section the command is meant to be used in combination with the ALIASES option in the configuration file To define a new command reminder for instance one should add the following line to the configuration file ALIASES reminder xrefitem reminders Reminder Reminders Note the use of escaped quotes for the second and third argument of the xrefitem command In case parameter heading is the empty string no heading is generated This can be useful when used in combination with the page command e g xx page my_errors My Errors brief Errors page Errors page contents x Nerror ERROR 101 in case a
115. and search engine This has several advantages e For large projects it can have significant performance advantages over doxygen s built in search engine as doxygen uses a rather simple indexing algorithm It allows combining the search data of multiple projects into one index allowing a global search across multiple doxygen projects e It allows adding additional data to the search index i e other web pages not produced by doxygen The search engine needs to run on a web server but clients can still browse the web pages locally To avoid that everyone has to start writing their own indexer and search engine doxygen provides an example tool for each action doxyindexer for indexing the data and doxysearch cgi for searching through the index The data flow is shown in the following diagram Generated by Doxygen 70 Searching doxygen writes searchdata xml i reads doxyindexer Q writes doxysearch db i reads doxysearch cgi HTML page in browser Figure 13 1 External Search Data Flow doxygen produces the raw search data doxyindexer indexes the data into a search database doxysearch db when a user performs a search from a doxygen generated HTML page the CGI binary doxysearch cgi will be invoked e the doxysearch cqgi tool will perform a query on the database and return the results The browser will show the search results 13 1 2 Configuring The first step
116. arameter v Note that these blocks have the same structure and meaning as the special comment blocks in the previous section only the lt indicates that the member is located in front of the block instead of after the block Here is an example of the use of these comment blocks x A test class x class Test public x x An enum type The documentation block cannot be put after the enum enum EnumType int EVall lt enum value 1 int EVal2 lt enum value 2 x y void member lt a member function protected int value lt an integer value i Warning These blocks can only be used to document members and parameters They cannot be used to document files classes unions structs groups namespaces and enums themselves Furthermore the structural commands mentioned in the next section like class are not allowed inside these comment blocks 4 1 1 2 Examples Here is an example of a documented piece of C code using the Qt style A test class fal A more elaborate class description class Test 1 public An enum x More detailed enum description enum TEnum TVal1 lt Enum value TVall TVal2 lt Enum value TVal2 IVal3 lt Enum value TVal3 Enum pointer Details xenumPtr Enum variable Details enumVar A constructor jx A more elaborate description of the constructor Test
117. arning and progress messages QUIET TheQUIETtagc If QUT ET is set to Y an be used to turn on off the messages that are generated to standard output by doxygen ES this implies that the messages are off The default value is NO WARNINGS The WARNINGS tag can be used to turn on off the warning messages that are generated to standard error stderr by doxygen If WARNINGS is set to YES this implies that the warnings are on Tip Turn warnings on while writing the documentation The default value is YES WARN_IF_UNDOCUMENTED If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate warnings for undocumented members If EXTRACT_ALL is set to YES then this flag will automatically be disabled The default value is YES WARN_IF_DOC_ERROR potential errors in the documentation such as not documenting some parameters in a documented function or documenting parameters that don t exist or using markup commands wrongly If the WARN_IF_DOC_ERROR tag is set to YES doxygen will generate warnings for The default value is YES WARN_NO_PARAMDOC This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that are documented but have no documentation for their parameters or return value If set to NO doxygen will only warn about wrong or incomplete parameter documentation but not about the absence of documentation The default value is NO Generated by Doxygen
118. art of the definition you can place x markers where x represents the argument number starting with 1 Here is an example of an alias definition with a single argument ALIASES 1 1 ref M1 Inside a comment block you can use it as follows x x See l SomeClass for more information which would be the same as writing x x See ref SomeClass for more information 82 Custom Commands Note that you can overload an alias by a version with multiple arguments for instance ALIASES 1 1 ref 11 ALIASES 1 2 ref M1 2 Note that the quotes inside the alias definition have to be escaped with a backslash With these alias definitions we can write x See l SomeClass Some Text for more information inside the comment block and it will expand to x See ref SomeClass Some Text for more information x where the command with a single argument would still work as shown before Aliases can also be expressed in terms of other aliases e g a new command reminder can be expressed as a xrefitem via an intermediate Axref1ist command as follows ALIASES xreflist 3 xrefitem M1 2 3 ALIASES reminder xreflist reminders Reminder Reminders Note that if for aliases with more than one argument a comma is used as a separator if you want to put a comma inside the command you will need to escape it with a backslash i e l SomeClass Some text with an escaped comma given the
119. as Doxygen allows you to put IATEX formulas in the output this works only for the HTML and IATEX output not for the RTF nor for the man page output To be able to include formulas as images in the HTML documentation you will also need to have the following tools installed e latex the IATEX compiler needed to parse the formulas To test have used the teTeX 1 0 distribution e dvips a tool to convert DVI files to PostScript files have used version 5 92b from Radical Eye software for testing e gs the GhostScript interpreter for converting PostScript files to bitmaps have used Aladdin GhostScript 8 0 for testing For the HTML output there is also an alternative solution using Mat hJax which does not require the above tools If you enable USE_MATHJAX in the config then the latex formulas will be copied to the HTML as is and a client side javascript will parse them and turn them into interactive images There are three ways to include formulas in the documentation 1 Using in text formulas that appear in the running text These formulas should be put between a pair of f commands so The distance between f x_1l y_1 f and f x_2 y_2 fS is f sqrt x_2 x_1 2 y_2 y_1 2 f results in The distance between x1 y1 and x2 y2 is x2 x1 92 y1 2 Unnumbered displayed formulas that are centered on a separate line These formulas should be put between M and f commands An exampl
120. ase send it to me so can improve doxygen s parsing capabilities Try to make the piece of code you send as small as possible to help me narrow down the search Doxygen does not work properly if there are multiple classes structs or unions with the same name in your code It should not crash however rather it should ignore all of the classes with the same name except one Some commands do not work inside the arguments of other commands Inside a HTML link i e lt a href gt lt a gt for instance other commands including other HTML commands do not work The sectioning commands are an important exception Redundant braces can confuse doxygen in some cases For example void f int is properly parsed as a function declaration but const int a is also seen as a function declaration with name int because only the syntax is analyzed not the semantics If the redundant braces can be detected as in int a 20 then doxygen will remove the braces and correctly parse the result Not all names in code fragments that are included in the documentation are replaced by links for instance when using SOURCE_BROWSER YES and links to overloaded members may point to the wrong member This also holds for the Referenced by list that is generated for each function For a part this is because the code parser isn t smart enough at the moment I ll try to improve this in the future But even with these improvements not everyt
121. ased IATEX generator Please report any bugs or problems you find in the Perl Module backend or the Perl Module based IATEX generator to the doxygen develop mailing list Suggestions are welcome as well 27 1 Usage When the GENERATE_PERLMOD tag is enabled in the Doxyfile running Doxygen generates a number of files in the per1mod subdirectory of your output directory These files are the following DoxyDocs pm This is the Perl module that actually contains the documentation in the Perl Module format described below DoxyModel pm This Perl module describes the structure of DoxyDocs pm independently of the actual documentation See below for details e doxyrules make This file contains the make rules to build and clean the files that are generated from the Doxyfile Also contains the paths to those files and other relevant information This file is intended to be included by your own Makefile e Makefile This is a simple Makefile including doxyrules make To make use of the documentation stored in DoxyDocs pm you can use one of the default Perl Module based generators provided by Doxygen at the moment this includes the Perl Module based IATEX generator see below or write your own customized generator This should not be too hard if you have some knowledge of Perl and it s the main purpose of including the Perl Module backend in Doxygen See below for details on how to do this lt want to use IATEX but not possible in hea
122. asses or a graph collaborationgraph Represents the collaboration graph for a class allmemberslink Represents the link to the list of all members for a class usedfiles Represents the list of files from which documentation for the class was extracted The file page has the following specific elements includes Represents the list of include statements contained in this file includegraph Represents the include dependency graph for the file includedbygraph Represents the included by dependency graph for the file sourcelink Represents the link to the source code of this file The group page has a specific groupgraph element which represents the graph showing the dependencies between groups Similarly the directory page has a specific di rect orygraph element which represents the graph showing the dependencies between the directories based on the include relations of the files inside the directories Some elements have a visible attribute which can be used to hide the fragment from the generated output by setting the attribute s value to no You can also use the value of a configuration option to determine the visibility by using its name prefixed with a dollar sign e g lt includes visible SHOW_INCLUDE_FILES gt This was mainly added for backward compatibility Note that the visible attribute is just a hint for doxygen If no relevant information is available for a certain piece it is omitted even if it is set to yes i e no
123. ated If a file with the name lt config file gt already exists doxygen will rename it to lt config file gt bak before generating the configuration template If you use i e the minus sign as the file name then doxygen will try to read the configuration file from standard input st din which can be useful for scripting The configuration file has a format that is similar to that of a simple Makefile It consists of a number of assignments tags of the form TAGNAME VALUE or TAGNAME VALUE1 VALUE2 You can probably leave the values of most tags in a generated template configuration file to their default value See section Configuration for more details about the configuration file If you do not wish to edit the config file with a text editor you should have a look at doxywizard which is a GUI front end that can create read and write doxygen configuration files and allows setting configuration options by entering them via dialogs For a small project consisting of a few C and or C source and header files you can leave INPUT tag empty and doxygen will search for sources in the current directory If you have a larger project consisting of a source directory or tree you should assign the root directory or directories to the INPUT tag and add one or more file patterns to the FILE_PATTERNS tag for instance x cpp h Only files that match one of the patterns will be parsed if the patterns are omitted a list
124. ation Example page pagel A documentation page tableofcontents Leading text section sec An example section This page contains the subsections ref subsectionl and ref subsection2 For more info see page ref page2 subsection subsectionl The first subsection Text subsection subsection2 The second subsection More text page page2 Another page Even more info Generated by Doxygen 150 Special Commands Note The lt name gt argument consists of a combination of letters and number digits If you wish to use upper case letters e g MYPAGE1 or mixed case letters e g MyPage1 in the lt name gt argument you should set CASE_SENSE_NAMES to YES However this is advisable only if your file system is case sensitive Otherwise and for better portability you should use all lower case letters e g mypage1 for lt name gt in all references to the page See also section section section subsection and section ref 23 31 private Indicates that the member documented by the comment block is private i e should only be accessed by other members in the same class Note that Doxygen automatically detects the protection level of members in object oriented languages This com mand is intended for use only when the language does not support the concept of protection level natively e g C PHP 4 For starting a section of private members in a way similar to the pr
125. ation file The section label can be a logical expression build of section names round brackets amp amp AND OR and NOT See also sections endif if else and elseif and ENABLED_SECTIONS 23 69 invariant description of invariant Starts a paragraph where the invariant of an entity can be described The paragraph will be indented The text of the paragraph has no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent invariant commands will be joined into a single paragraph Each invariant description will start on a new line Alternatively one invariant command may mention several invariants The invariant command ends when a blank line or some other sectioning command is encountered 23 70 Anote text Starts a paragraph where a note can be entered The paragraph will be indented The text of the paragraph has no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent note commands will be joined into a single paragraph Each note description will start on a new line Alternatively one note command may mention several notes The note command ends when a blank line or some other sectioning command is encountered See section par for an example Generated by Doxygen 23 71 par paragraph title paragraph 159 23 71 par paragraph title paragraph If a paragraph title is giv
126. ation file there is a check box For items taking one of a fixed set of values like OUTPUT_LANGUAGE a combo box is used For items taking an integer value from a range a spinbox is used For free form string type options there is a one line edit field e For options taking a lists of strings a one line edit field is available with a button to add this string to the list and a button to remove the selected string from the list There is also a button that when pressed replaces the selected item in the list with the string entered in the edit field e For file and folder entries there are special buttons that start a file selection dialog M REPEAT_BRIEF OUTPUT_LANGUAGE English a TAB_SIZE 8 STRIP_FROM_PATH E Users dimitri Figure 21 6 Some options from the Expert dialog The get additional information about the meaning of an option click on the Help button at the bottom right of the dialog and then on the item A tooltip with additional information will appear Menu options The GUI front end has a menu with a couple of useful items Generated by Doxygen 104 Doxywizard usage Doxywizard Help Open 0 Save As S Recent configurations Users dimitri temp doxygen diagrams cfg Set as default Users dimitri doxygen mail 1 3 7 autolink Doxyfile Reset Users dimitri doxygen examples author cfg Users dimitri doxygen examples autolink cfg U
127. ation on how to generate the default header that doxygen normally uses Note The header is subject to change so you typically have to regenerate the default header when upgrading to a newer version of doxygen The following markers have a special meaning inside the header and footer title will be replaced with the title of the page datetime will be replaced with current the date and time date will be replaced with the current date year will be replaces with the current year doxygenversion will be replaced with the version of doxygen projectname will be replaced with the name of the project see PROJECT_NAME projectnumber will be replaced with the project number see PROJECT_NUMBER projectbrief will be replaced with the project brief description see PROJECT_BRIEF Generated by Doxygen 120 Configuration projectlogo will be replaced with the project logo see PROJECT_LOGO treeview will be replaced with links to the javascript and style sheets needed for the navigation tree or an empty string when GENERATE_TREEVIEW is disabled search will be replaced with a links to the javascript and style sheets needed for the search engine or an empty string when SEARCHENGINE is disabled mathjax will be replaced with a links to the javascript and style sheets needed for the MathJax feature or an empty string when USE_MATHJAX is disabled relpath If CREATE_SUBDIRS is enabled the command relpath can be used t
128. ations between the files in the directories The default value is YES This tag requires that the tag HAVE_DOT is set to Y E un Generated by Doxygen 136 Configuration DOT_IMAGE_FORMAT The DOT_IMAGE_FORMAT tag can be used to set the image format of the images gen erated by dot Note If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files visible in IE 9 other browsers do not have this requirement Possible values are png jpg gif and svg The default value is png This tag requires that the tag HAVE_DOT is set to YES INTERACTIVE_SVG If DOT_IMAGE_FORMAT is set to svg then this option can be set to YES to enable generation of interactive SVG images that allow zooming and panning Note that this requires a modern browser other than Internet Explorer Tested and working are Firefox Chrome Safari and Opera Note For IE 9 you need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files visible Older versions of IE do not have SVG support The default value is NO This tag requires that the tag HAVE_DOT is set to YES DOT_PATH The DOT_PATH tag can be used to specify the path where the dot tool can be found If left blank it is assumed the dot tool can be found in the path This tag requires that the tag HAVE_DOT is set to YES DOTFILE_DIRS The DOTFILE_DIRS tag can be used to specify one or more directories that contain dot files tha
129. be ignored while generating the index headers This tag requires that the tag ALPHABETICAL_INDEX is set to YES 22 8 Configuration options related to the HTML output GENERATE_HTML If the GENERATE_HTML tag is set to YES doxygen will generate HTML output The default value is YES HTML _ OUTPUT The HTML_OUTPUT tag is used to specify where the HTML docs will be put If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it The default directory is html This tag requires that the tag GENERATE_HTML is set to YES HTML _ FILE EXTENSION The HTML_FILE_EXTENSION tag can be used to specify the file extension for each generated HTML page for example htm php asp The default value is html This tag requires that the tag GENERATE_HTML is set to YES HTML HEADER The HTML_HEADER tag can be used to specify a user defined HTML header file for each gen erated HTML page If the tag is left blank doxygen will generate a standard header To get valid HTML the header file that includes any scripts and style sheets that doxygen needs which is dependent on the configuration options used e g the setting GENERATE _TREEVIEW It is highly recom mended to start with a default header using doxygen w html new_header html new_footer html new_stylesheet css YourConfigFile and then modify the file new_header html See also section Doxygen usage for inform
130. be used to specify the correct function Any other documentation that is inside the documentation block will by appended after the generated message Generated by Doxygen 23 29 package lt name gt 149 Note 1 You are responsible that there is indeed an earlier documented member that is overloaded by this one To prevent that document reorders the documentation you should set SORT_MEMBER_DOCS to NO in this case Note 2 The overload command does not work inside a one line comment Example class Test y public void drawRect int int int int void drawRect const Rect amp r void Test drawRect int x int y int w int h void Test drawRect const Rect amp r This command draws a rectangle with a left upper corner at x 23 29 Indicates that a comment block contains documentation for a Java package with name lt name gt 23 30 class Test brief A short description More text fn void Test drawRect int x int y int w int h width a w and height la h 4 overload void Test drawRect const Rect amp r package lt name gt page lt name gt title Indicates that a comment block contains a piece of documentation that is not directly related to one specific class file or member The HTML generator creates a page containing the documentation The IATEX generator starts a new section in the chapter Page document
131. brackets are used the argument is optional Here is an alphabetically sorted list of all commands with references to their documentation A 23 121 Se eila s co di db 23 110 a A PR ea de we 23 95 o A eh Ga a 23 130 NAGGHOQOUP cc a e e a 23 2 A a ite eae eas Gta 23 133 MANGO a a A ee RAS Sins Bue a 23 96 ME A O A UI e ate oe ah 23 136 o e d ac ede cea Sa mw Dee Sea ee 23 122 WISE Sar a a Be wee a ld 23 62 e 2 oe a esa a EA Be ee ae h 23 52 MOBI ES 8 ta Goce AE ahh eed ok WSR eh Ge ace 23 63 SU oc fess a a Rs a Re i ve a 23 53 WEY 22 seca Down Gu A AE vac dete aes 23 137 NAUMNOIS oi eae eee ee ee ea de a 23 54 ps oS ee dee E E oa 23 138 Masa a ane a A 23 123 AAN ia a A 23 64 RN NO 23 55 enddocbookonly lt lt a ore soe toe sd emaa 23 139 UE ii a a ees e ee ae RE 23 56 o AR 23 140 dos ds a e aa 23 124 ACOMODO ooo cc ia a ed 23 143 Nealigraph lt lt co cd Be ee ed a 23 3 NENG ce eee ee ee Se ae SS 23 65 a RS E a i a i 23 4 o AA 23 12 o AE Ge ee Sd 23 5 CORSO aa ik a ena he a Bia a ak 23 144 MONG oa acad ice MR Da a wee a 23 97 SONNE ds aa a a a e E a 23 98 o ao acct Shep at E EE E EE E A 23 6 AEOOMANO Y ooo ee s 23 145 MOMs o a a a Es o a Men 23 125 WEAQINES o A a tek a tes 23 141 CO e e aae e a we eee ae ee ee EES a 23 57 pg o oa a Ss Sw he e a deeb wad 23 74 a GY ha td SR icc 2 De Rae thin Be Ged fave 28 127 o a a a ee AO A Ee e Gee Sod 23 146 COPIAS cei ct we ee ss Bee ee 23 128 o A 23 103 NODPYOOE o a o A 23 126 ROME
132. c o io kh ae abea a ee A A A i a 173 23 131 msc caption lt sizeindication gt lt size gt lt o coocoo ecoa ereo ratar eea a 174 23 132 startuml file caption lt sizeindication gt lt size gt aoao a a 174 23 133 dotfile lt file gt caption lt sizeindication gt lt size gt o 175 23 134 mscfile lt file gt caption lt sizeindication gt lt size gt o a 175 23 135 diafile lt file gt caption lt sizeindication gt lt size gt a 176 a a A NA 176 PSII a e AA A ee a we R a a 176 Bo LISIS ate A ae ee Oe eee Ad a es 177 Bo loo PNGUICOOUNOMIY e Gob RA a a le Se A ge 177 Se Aeneid o o a rr hee eee dd e he ee EES 177 ESSE 2 0 ra SL Sok ae a Bae Ye A A RA ae Re a kw eth ee ek 177 PONSA MONO oy 65 dace okey Hee hs Ge RUE ORS Be Wh ey We lee a EE R S 177 da a A a a Ee eae OR GL Wi ARANA 177 Generated by Doxygen CONTENTS IX e AAN 177 A RA NE 178 PS TAG ERTO os A he a A A RA AA Son eee ah RR dow Oe a o A 178 2 lS NOIA ib ao ae eh a POE be SSA ERLE EE id a EG 178 A AAA ta Bi wae oe a ee eA ee ee Oe BEE A E ee ee i 178 FOAMS vied Poe bee Bo BHA PRO ee GaGa ee Be bene alas 178 BOAO e ste ak dies AA Ee oe eS BS Re ee eR ed ee Sate Boh A A 178 AS 2 naa NS o gees Reva A eh as eT E oe ee a der A hos ee Beads 178 20 a 2a 42254662 eb ee ee be bed hee AE REESE ee he ee eS 179 PONS oc e hae SA OR ae Se ER EES a eae Se ee eee eS 179 23 154 himlon
133. case 23 156 latexonly Starts a block of text that will be verbatim included in the generated IATEX documentation only The block ends with a endlatexonly command This command can be used to include IATEX code that is too complex for doxygen i e images formulas special characters You can use the htmlonly and endhtmlonly pair to provide a proper HTML alternative Note environment variables like HOME are resolved inside a ATEX only block See also sections rtfonly xmlonly manonly htmlonly and docbookonly 23 157 manonly Starts a block of text that will be verbatim included in the generated MAN documentation only The block ends with a endmanonly command This command can be used to include groff code directly into MAN pages You can use the htmlonly and endhtm lonly and latexonly and endlatexonly pairs to provide proper HTML and lAT X alternatives See also sections htmlonly ixmlonly rtfonly latexonly and docbookonly Generated by Doxygen 23 158 Mi item description 181 23 158 li item description This command has one argument that continues until the first blank line or until another 11 is encountered The command can be used to generate a simple not nested list of arguments Each argument should start with a 1i command Example Typing Mi c AlignLeft left alignment Mi c AlignCenter center alignment Mi c AlignRight right alignment No other types of ali
134. ced Usage This page is for advanced users Make sure you have first read ref intro the introduction 23 105 tableofcontents Creates a table of contents at the top of a page listing all sections and subsections in the page Warning This command only works inside related page documentation and not in other documentation blocks and only has effect in the HTML output 23 106 section lt section name gt section title Creates a section with name lt section name gt The title of the section should be specified as the second argument of the section command Warning This command only works inside related page documentation and notin other documentation blocks See also Section page for an example of the sect ion command 23 107 subsection lt subsection name gt subsection title Creates a subsection with name lt subsection name gt The title of the subsection should be specified as the second argument of the subsect ion command Warning This command only works inside a section of a related page documentation block and notin other documenta tion blocks See also Section page for an example of the subsect ion command 23 108 subsubsection lt subsubsection name gt subsubsection title Creates a subsubsection with name lt subsubsection name gt The title of the subsubsection should be specified as the second argument of the subsubsection command Warning This command only works inside a
135. classes with base or super classes Setting the tag to NO turns the diagrams off Note that this option also works with HAVE_DOT disabled but it is recommended to install and use dot since it yields more powerful graphs S CJ The default value is Y1 Generated by Doxygen 134 Configuration MSCGEN_PATH You can define message sequence charts within doxygen comments using the msc command Doxygen will then run the mscgen tool to produce the chart and insert it in the documentation The MSCGEN_PATH tag allows you to specify the directory where the ms cgen tool resides If left empty the tool is assumed to be found in the default search path DIA PATH You can include diagrams made with dia in doxygen documentation Doxygen will then run dia to produce the diagram and insert it in the documentation The DIA_PATH tag allows you to specify the directory where the dia binary resides If left empty dia is assumed to be found in the default search path HIDE _UNDOC_RELATIONS If set to YES the inheritance and collaboration graphs will hide inheritance and usage relations if the target is undocumented or is not a class S E The default value is Y ry HAVE_DOT If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is available from the path This tool is part of Graphviz a graph visualization toolkit from AT amp T and Lucent Bell Labs The other options in this section have no effect if th
136. code 25 details More details about this mux element 26 architecture behavior of mux_using_with is 27 begin 28 with sel select 29 mux_out lt din_0 when 0 30 din_1 when others 31 end architecture To get proper looking output you need to set OPTIMIZE_OUTPUT_VHDL to YES in the config file This will also affect a number of other settings When they were not already set correctly doxygen will produce a warning telling which settings where overruled 4 1 4 Comment blocks in Fortran Gl When using doxygen for Fortran code you should set OPTIMIZE_FOR_FORTRAN to YES The parser tries to guess if the source code is fixed format Fortran or free format Fortran code This may not always be correct If not one should use EXTENSION_MAPPING to correct this By setting EXTENSTON_MAPPING f FortranFixed f90 FortranFree files with extension f are interpreted as fixed format Fortran code and files with extension f 90 are interpreted as free format Fortran code For Fortran gt or lt starts a comment and or gt can be used to continue an one line comment into a multi line comment Here is an example of a documented Fortran subroutine 1 gt Build the restriction matrix for the aggregation 1 method param aggr information about the aggregates todo Handle special case subroutine intrestbuild A aggr Restrict A_ghost implicit none Type semtx intent in a lt our fine lev
137. command for a brief description The default value is NO MULTILINE_CPP_IS_ BRIEF The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a multi line C special comment block i e a block of or comments as a brief description This used to be the default behavior The new default is to treat a multi line C comment block as a detailed description Set this tag to YES if you prefer the old behavior instead Note that setting this tag to YES also means that rational rose comments are not recognized any more The default value is NO INHERIT_DOCS If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the docu mentation from any documented member that it re implements S E The default value is Y SEPARATE_MEMBER_PAGES Ifthe SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new page for each member If set to NO the documentation of a member will be part of the file class namespace that contains it The default value is NO TAB SIZE The TAB_SIZE tag can be used to set the number of spaces in a tab Doxygen uses this value to replace tabs by spaces in code fragments Minimum value 1 maximum value 16 default value 4 ALIASES This tag can be used to specify a number of aliases that act as commands in the documentation An alias has the form name value For example adding sideeffect fpar Sid
138. contains as member 5 amp prod n ary product product sign amp sum n ary sumation Y minus minus sign amp lowast asterisk operator amp radic square root radical sign J amp prop proportional to e amp infin infinity co ang angle Z Sand logical and wedge A SOL logical or vee V Cap intersection cap N CUp union cup U e amp int integral f e amp there4 therefore sim tilde operator varies with similar to Generated by Doxygen 193 amp cong e asymp e amp ne e g equiv le amp ge amp sub amp sup e nsub e amp sube e amp supe e goplus otimes amp perp e amp sdot e amp lceil e amp rceil e lfloor e rfloor e lang amp rang e loz amp spades e amp clubs e amp hearts amp diams amp quot e amp e lt amp gt amp OElig e oelig e amp Scaron e scaron e Yuml Circ approximately equal to S almost equal to asymptotic to not equal to 4 identical to less than or equal to lt greater than or equal to gt subset of C superset of gt not a subset of subset of or equal to C superset of or equal to gt circled plus direct sum circled times vector product amp up tack orthogonal to perpendicular L dot operator left ceiling apl u
139. ction latexonly Generated by Doxygen 178 Special Commands 23 145 lendmanonly Ends a block of text that was started with a imanonly command See also section manonly 23 146 endrtfonly Ends a block of text that was started with a rtfonly command See also section rtfonly 23 147 endverbatim Ends a block of text that was started with a verbatim command See also section verbatim 23 148 lendxmlonly Ends a block of text that was started with a ixmlonly command See also section xmlonly 23 149 f Marks the start and end of an in text formula See also section formulas for an example 23 150 M Marks the start of a long formula that is displayed centered on a separate line See also section f and section formulas 23 151 f Marks the end of a long formula that is displayed centered on a separate line Generated by Doxygen 23 152 f environment 179 See also section f and section formulas 23 152 f environment Marks the start of a formula that is in a specific environment Note The second is optional and is only to help editors such as Vim to do proper syntax highlighting by making the number of opening and closing braces the same See also section f and section formulas 23 153 Af Marks the end of a formula that is in a specific environment See also section f and section formulas 23 154 1 htmlonly block
140. ctions as well as the Qt specific signal and slots sec tions Extraction of private class members is optional Automatically generates references to documented classes files namespaces and members Documentation of global functions global variables typedefs defines and enumerations is also supported 96 Features References to base super classes and inherited overridden members are generated automatically Includes a fast rank based search engine to search for strings or words in the class and member documen tation PHP based Includes an Javascript based live search feature to search for symbols as you type for small to medium sized projects You can type normal HTML tags in your documentation Doxygen will convert them to their equivalent IATEX RTF and man page counterparts automatically Allows references to documentation generated for other doxygen documented projects or another part of the same project in a location independent way Allows inclusion of source code examples that are automatically cross referenced with the documentation Inclusion of undocumented classes is also supported allowing to quickly learn the structure and interfaces of a large piece of code without looking into the implementation details Allows automatic cross referencing of documented entities with their definition in the source code All source code fragments are syntax highlighted for ease of reading Allows inclusion of func
141. cumentation block somewhere else another file or another location and put a structural command in the documentation block A structural command links a documentation block to a certain entity that can be documented e g a member class namespace or file See section Documentation at other places to learn more about structural commands The advantage of the first option is that you do not have to repeat the name of the entity Files can only be documented using the second option since there is no way to put a documentation block before a file Of course file members functions variables typedefs defines do not need an explicit structural command just putting a special documentation block in front or behind them will work fine The text inside a special documentation block is parsed before it is written to the HTML and or TEX output files During parsing the following steps take place Markdown formatting is replaced by corresponding HTML or special commands e The special commands inside the documentation are executed See section Special Commands for an overview of all commands If a line starts with some whitespace followed by one or more asterisks x and then optionally more whites pace then all whitespace and asterisks are removed All resulting blank lines are treated as a paragraph separators This saves you from placing new paragraph commands yourself in order to make the generated documentation readable Links are
142. d symbols If the cache is too small doxygen will become slower If the cache is too large memory is wasted The cache size is given by this formula 2 16 LOOKUP_CACHE_SIZE _ The valid range is 0 9 the default is 0 corresponding to a cache size of 21 65536 symbols At the end of a run doxygen will report the cache usage and suggest the optimal cache size from a speed point of view Minimum value 0 maximum value 9 default value 0 22 3 Build related configuration options EXTRACT_ALL If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in documentation are documented even if no documentation was available Private class members and static file members will be hidden unless the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES Generated by Doxygen 112 Configuration Note This will also disable the warnings about undocumented members that are normally produced when WARNINGS is set to YES The default value is NO EXTRACT _PRIVATE If the EXTRACT_PRIVATE tag is set to YES all private members of a class will be in cluded in the documentation The default value is NO EXTRACT_PACKAGE lf the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation The default value is NO EXTRACT_STATIC Ifthe EXTRACT_STATIC tag is set to YES all static members of a file will be included in the documentation
143. describing a test case ee ee 162 23 89 throw lt exception object gt exception description 2 o 162 23 90 throws lt exception object gt exception description o o e 162 23 91 Modo paragraph describing what is to be done 0 o 20202 eee eee 162 23 32 WersionA Version MUMDEF Y lt lt ciar cc e a A a i 162 23 93 warning Warning Message ooo ee da e a 163 23 94 xrefitem lt key gt heading list title text o o 0 oo e 163 pe II 164 2290 AMADA ON a Pb e A e A A A a A de e e A 164 2397 Me SIS co a PD eR A A ee e ee A E A RA 164 2000 VEN e A A Be A ee a Bae ee 164 2399 Vink lt Unkeoblects e o ca se dop A OR AA ee de eG eo A Ae ee Ra 164 29 100 vel lt name gt 000 ic ea kee ae ewe bE bbb SERRE RAE LOL eee hee 164 ESO VEE NAMIE coin aa a hae BM aS Ye ee BR RA ee Re a dr Be G 165 Pe a se ded Pe Ae ey Be ORR a eS ee ee et ee ee ee a 165 EUROS a E A Rewer OR A a Re a a eb ee ee ee Y 165 Generated by Doxygen vill CONTENTS 29 104 eubpage lt name gt text 2 55 244 be ADEE RE SEEGER eH hE eee A 165 23 AU SUAMEOIOOMONIS 1 oa Fe we Be OR wR A ee oe ee RR a G 166 23 106 section lt section name gt section title 2 bee eee eee 166 23 107 subsection lt subsection name gt subsection title 2 2 2 a ee 166 23 108 subsubsection lt subsubsection name gt subsubsec
144. diagrams and collaboration diagrams which are all generated automatically 3 You can also use doxygen for creating normal documentation as did for the doxygen user manual and web site Doxygen is developed under Mac OS X and Linux but is set up to be highly portable As a result it runs on most other Unix flavors as well Furthermore executables for Windows are available This manual is divided into three parts each of which is divided into several sections The first part forms a user manual e Section Installation discusses how to download compile and install doxygen for your platform e Section Getting started tells you how to generate your first piece of documentation quickly Section Documenting the code demonstrates the various ways that code can be documented e Section Markdown support show the Markdown formatting supported by doxygen e Section Lists shows how to create lists e Section Grouping shows how to group things together e Section Including formulas shows how to insert formulas in the documentation Section Graphs and diagrams describes the diagrams and graphs that doxygen can generate 4 Introduction Section Preprocessing explains how doxygen deals with macro definitions e Section Automatic link generation shows how to put links to files classes and members in the documentation e Section Output Formats shows how to generate the various output formats supported by doxygen e Section Searc
145. dings gt 27 2 Using the LaTeX generator The Perl Module based IATEX generator is pretty experimental and incomplete at the moment but you could find it useful nevertheless It can generate documentation for functions typedefs and variables within files and classes 204 Perl Module Output format and can be customized quite a lot by redefining TEX macros However there is still no documentation on how to do this Setting the PERLMOD_LATEX tag to YES in the Doxyf ile enables the creation of some additional files in the perlmod subdirectory of your output directory These files contain the Perl scripts and IATEX code necessary to generate PDF and DVI output from the Perl Module output using pdf latex and latex respectively Rules to automate the use of these files are also added to doxyrules make and the Makefile The additional generated files are the following 27 2 1 To try 1 doxylatex pl This Perl script uses DoxyDocs pm and DoxyModel pm to generate doxydocs tex a TeX file containing the documentation in a format that can be accessed by IATEX code This file is not directly LaTeXable doxyformat tex This file contains the IATEX code that transforms the documentation from doxydocs tex into IATEX text suitable to be IATEX ed and presented to the user doxylatex template pl This Perl script uses DoxyModel pm to generate doxytemplate tex a TEX file defining default values for some macros doxytemplate te
146. directories for example use the pattern test x EXCLUDE_SYMBOLS The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names names paces classes functions etc that should be excluded from the output The symbol name can be a fully qualified name a word or if the wildcard is used a substring Examples ANamespace AClass Ae Class ANamespace ANamespace Test Note that the wildcards are matched against the file with absolute path so to exclude all test directories use the pattern x test x EXAMPLE_PATH The EXAMPLE_PATH tag can be used to specify one or more files or directories that contain example code fragments that are included see the include commana Generated by Doxygen 22 6 Configuration options related to source browsing 117 EXAMPLE PATTERNS If the value of the EXAMPLE_PATH tag contains directories you can use the EXAMP Le E__PATTERNS tag to specify one or more wildcard pattern like x cpp and h to filter out the source files in the directories If left blank all files are included EXAMPLE RECURSIVE Ifthe EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be searched for input files to be used with the include or dontinclude commands irrespective of the value of the RECURSIVE tag The default value is NO IMAGE_PATH The IMAGE_PATH tag can be used to specify one or more files or directories that contain
147. e NET I_2 left int_ 0 T psi t left u a t int_ gamma t a frac d theta k theta t int_ a theta c xi u_t xi t d xi right dt right f results in ai f won quan cars unas par 3 Formulas or other latex elements that are not in a math environment can be specified using f environment where environment is the name of the TEX environment the corresponding end command is f Here is an example for an equation array 52 Including Formulas f eqnarray g amp amp frac Gm_2 r 2 AM amp amp frac 6 673 times 10 11 mbox m 3 mbox kg 1 mbox s 2 5 9736 times 10 24 mbox kg 6371 01 mbox km 2 amp amp 9 82066032 mbox m s 2 f which results in _ Gm ear 6 673 x 1071 m3 kg s 5 9736 x 10 kg 6371 01 km 9 82066032 m s For the first two commands one should make sure formulas contain valid commands in IATEX s math mode For the third command the section should contain valid command for the specific environment Warning Currently doxygen is not very fault tolerant in recovering from typos in formulas It may be necessary to remove the file formula repository that is written to the html directory to get rid of an incorrect formula Generated by Doxygen Chapter 9 Graphs and diagrams Doxygen has built in support to generate inheritance diagrams for C classes Doxygen can use the dot tool f
148. e definition of MyClassName is contained If you want doxygen to show that the include file should be included using quotes instead of angle brackets you should type x class MyClassName myhdr h path myhdr h Docs for MyClassName 17 6 How can use tag files in combination with compressed HTML If you want to refer from one compressed HTML file a chm to another compressed HTML file called b chm the link in a chm must have the following format Generated by Doxygen 17 7 don t like the quick index that is put above each HTML page what do I do 87 lt a href b chm file html gt Unfortunately this only works if both compressed HTML files are in the same directory As a result you must rename the generated index chm files for all projects into something unique and put all chm files in one directory Suppose you have a project a referring to a project b using tag file b tag then you could rename the index chm for project a into a chm and the index chm for project b into b chm In the configuration file for project a you write TAGFILES b tag b chm 17 7 don t like the quick index that is put above each HTML page what do do You can disable the index by setting DISABLE_INDEX to YES Then you can put in your own header file by writing your own header and feed that to HTML_HEADER 17 8 The overall HTML output looks different while only wanted to use my own html header file Yo
149. e lt file name gt verbatim in the documentation The command is equivalent to pasting the file in the documentation and placing verbatim and endverbatim commands around it Files or directories that doxygen should look for can be specified using the EXAMPLE_PATH tag of doxygen s configuration file 23 119 htmlinclude lt file name gt This command includes the file lt file name gt as is in the HTML documentation The command is equivalent to pasting the file in the documentation and placing ntmlonly and endhtmlonly commands around it Files or directories that doxygen should look for can be specified using the EXAMPLE_PATH tag of doxygen s configuration file 23 120 latexinclude lt file name gt This command includes the file lt file name gt as is in the ATEX documentation The command is equivalent to pasting the file in the documentation and placing latexonly and endlatexonly commands around it Files or directories that doxygen should look for can be specified using the EXAMPLE_PATH tag of doxygen s configuration file Commands for visual enhancements 23 121 a lt word gt Displays the argument lt word gt in italics Use this command to emphasize words Use this command to refer to member arguments in the running text Example the la x and la y coordinates are used to This will result in the following text the x and y coordinates are used to Equivalent to e and em To emphasize multiple wo
150. e A a hae de ee 23 106 WOES a a oe BO aba Ad aS 23 85 WOR a a ee a RS 23 86 WGHOWININGIIZEF i lt lt lt lt lt a 23 44 o pai esa Sa ce SDSS ESSER ew RE RSS 23 87 A Sate a ee Ba a EA Go he A a 23 114 NSWOBIIIG 006 ee ho we ee eR o ate a 23 115 o i ira a a re ee Pe 23 116 o es eee ce a la Be Ee we a we i 23 132 WUC oh A Gg ah eS bee O Me AA 23 46 MOL AG E iio aya RN 23 104 SDSS ia a eee ace 23 107 ISUDSUDEBCI N ooo He a a ee we 23 108 Wableofcontemts lt i o ic a ae te 23 105 MES a a ADA da 23 88 o AN 23 89 Ls 58 Oot A Swe Se ewe ee oe Sone SZ 23 90 MOQO o oon wank APRS See RES eee LEA 23 91 ANON so a Sa a GS A a 23 75 cs coe Gah a er Het SG ew Ses a 23 47 MMO ee we Se ee eee eA eee 23 48 A 23 117 e a e e a e x aoe e Bee a A 23 49 WO a a Ra AR A a 23 162 WeB os a s m a 23 118 WEIN oo GG Fee ak Bis SRO aes GES 23 92 UA E Se Sa na RA GO SS red 23 50 o A we ete ee aes aoe at 23 93 WEAKOTOU co a a d t a a 23 51 OY A Re ead i E a ae athe a 23 163 po A 23 94 BE rapid es rok Re Se kk a pale Nese she oe a deg teckel ates 23 168 MDs ce Be SR Ree ee the ah 23 165 UE AAA oe MOR a ee ee OE Cae Re ee 23 164 Re we toe oe A ae Oe A O ee e riada 23 167 A 23 166 E ai a ORM AS we di SS 23 170 A E dee amp eat a SZ 23171 Ma Bie BURR os Bo ee ae tao e Ye e 23 169 We pole eee EGR Dade a ela a is ew eS Paso ols 23 172 A G she iri E NA aa TE ate AY 23 173 A a he aat e e 23 174 O A a dea oe ot ee hd ae i 23 1
151. e Effects n will allow you to put the command sideeffect or sideeffect in the documentation which will result in a user defined paragraph with heading Side Effects You can put n s in the value part of an alias to insert newlines Generated by Doxygen 110 Configuration TCL_SUBST This tag can be used to specify a number of word keyword mappings TCL only A mapping has the form name value For example adding class itcl class will allow you to use the command class in the itcl class meaning OPTIMIZE _OUTPUT_FOR_C Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources only Doxygen will then generate output that is more tailored for C For instance some of the names that are used will be different The list of all members will be omitted etc The default value is NO OPTIMIZE _OUTPUT_JAVA Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or Python sources only Doxygen will then generate output that is more tailored for that language For instance namespaces will be presented as packages qualified scopes will look different etc The default value is NO OPTIMIZE _FOR_FORTRAN Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran sources Doxygen will then generate output that is tailored for Fortran The default value is NO OPTIMIZE_OUTPUT_VHDL Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists
152. e Output shows how to use the PerlMod output e Section Internationalization explains how to add support for new output languages Doxygen license Copyright 1997 2014 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 Generated by Doxygen User examples Doxygen supports a number of output formats where HTML is the most popular one I ve gathered some nice examples of real life projects using doxygen These are part of a larger List of projects that use doxygen If you know other projects let me know and I ll add them Future work Although doxygen is successfully used by large number of companies and open source projects already there is always room for improvement You can submit enhancement requests in the bug tracker Make sure the severity of the bug report is set to enhancement Acknowledgments Thanks go to Malte Z ckler and Roland Wunderling authors of DOC The first version of doxygen borrowed some code of an old version of DOC Although have r
153. e all other packages that this package depends on are linked in externally This saves a lot of memory Availability For some projects that are documented with doxygen the sources may just not be available Copyright issues 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 not want to be bound by those conditions referring to their copy of their documentation is preferable to including a copy If any of the above apply you can use doxygen s tag file mechanism A tag file is basically a compact representation of the entities found in the external sources Doxygen can both generate and read tag files To generate a tag file for your project simply put the name of the tag file after the GENERATE_TAGFILE option in the configuration file To combine the output of one or more external projects with your own project you should specify the name of the tag files after the TAGFILES option in the configuration file A tag file typically only contains a relative location of the documentation from the point where doxygen was run So when you include a tag file in other project you have to specify where the external documentation is located in r
154. e ee ee E 141 234 CAMA i eG Shea eR AD ae a a ge be we Ee ne Bo aS a EO GE SS ae 141 23 5 category lt name gt lt header file gt lt header name gt o 142 23 6 class lt name gt lt header file gt lt header name gt o ee ee ee 142 237 WELPE AAA 142 23 8 defgroup lt name gt group title lt lt lt ee ee 143 23 Wirepa ragmen lt lt ek alk eae e e A a a A 143 So NUM MAS ea a a o o A O A A A ii 143 23 11 example lt HIOTAMAS she gee a a daa a AR 143 ole VENOMS is Sad Gos a ee KR a we Ol ER a BE Sw a a 144 20 10 Wens MATES 205 66 a a we Sk ee PR ee Bae ee E oa 144 29314 WMP Mame cok cae eae ea REE Ee SE A ee he ee a 144 29 18 Wincom declaran 2 2 68a b240 ky Raed Bee eee he Swe Pe ee eda eS 145 23 16 headerfile lt header file gt lt header name gt o ee eee ee ee 146 ps a 1c ks eh ee ee ke as Bap Gi Pape eG Wh Ape ed ke PAG bk be awe A ees Es 146 2318 QOexCepl CNAME 2 2 b2 a e e eee Sh eee ERE EE Do ed 146 23 19 SIMBIGMENIS lt ame om gee ke ge Moe ee A A A ee 146 23 20 ingroup lt groupname gt lt groupname gt lt groupname gt o o ee 147 23 21 interface lt name gt lt header file gt lt header name gt 0 o 147 Saco MIG cnc ave chun ee ace a Ble SOR owe ae Sel ae et Sa Ee ee d 147 23 29 IMAnpags MWE sex bk ee ae ee WH Bem et Sear A APR a eS 147 Generated by Doxygen VI CONTENTS 293
155. e end of the comment block You can also force the internal section to end earlier by using the endinternal command If the internal command is put inside a section see for example section all subsections after the command are considered to be internal as well Only a new section at the same level will end the fragment that is considered internal You can use INTERNAL_DOCS in the config file to show YES or hide NO the internal documentation See also section endinternal 23 23 mainpage title If the Ama inpage command is placed in a comment block the block is used to customize the index page in HTML or the first chapter in IATEX The title argument is optional and replaces the default title that doxygen normally generates If you do not want any title you can specify notitle as the argument of mainpage Here is an example x mainpage My Personal Index Page x section intro_sec Introduction This is the introduction section install_sec Installation subsection stepl Step 1 Opening the box A A F FH Generated by Doxygen 148 Special Commands x CEC You can refer to the main page using ref index See also section section section subsection and section page 23 24 memberof lt name gt This command makes a function a member of a class in a similar way as relates does only with this command the function is represented as a real member of the class This can be
156. e gt lt header file gt lt header name gt o eee ee eee 153 23 49 Wak variable declaration cos coos a a a e ae eo we ee 153 23 50 whalitow utle for the low Chart o corsa e a A we ee es 153 23 51 wWweakgroup lt name gt fell o oc re 0 be eed hbo bed ee bebe ee et bee 154 23 52 attention attention text ccoo Pe a ae ee a a ag 154 23 39 Authari isto authors x 2 6 Gee we SE Ae ER EO ee ER Ree ea ee S 154 2954 tauthors Sto athos eva ee ee ae Re AA a a ee ee a de ee es 154 22 00 Novel DMONOGSCMDIION ce a ag e a coh de ae BG ee BO RO a a A a ee A 154 232090 pugi DUG OSSCNPIION 2 2455 240 6 fbi A PEGE HEPES ES De OH 155 2397 Cond SechOnAOeN mica a Oe a we ee me a ee E 155 23 58 copyright copyright description 6 06 64 or ee ee ER a ee a e a 156 23 59 Wate dale ASSCOPBICAS 2 ogc ae a aie ao Se a a a A A 156 23 60 deprecated description lt c ee 156 23 61 details detailed deserplion o socs lt os rea a eee a haoa Wo id 156 230A A A NN 156 2303 ISO iSOCUONEADO gt i e ed ae ee l A Re OR PP ay Re a a ew ees 156 Generated by Doxygen CONTENTS Vil ARA AMAIA fd fd ES a ee id SNS ERG EES ESE A 157 2305 AMOS aoe hoe a dome gaa Gee ede PRE A BG are a aod dh eae ek Ee a A wee ee Be 157 23 66 exception lt exception object gt exception description o o 157 23 67 EN 157 23 08 UMot SECIONTADEN 2 ccohomir re ed be a EE ES 1
157. e panel will be generated containing a tree like index structure just like the one that is generated for HTML Help For this to work a browser that supports JavaScript DHTML CSS and frames is required i e any modern browser Windows users are probably better off using the HTML help feature Via custom style sheets see HTML_EXTRA_STYLESHEET one can further fine tune the look of the index As an example the default style sheet generated by doxygen has an example that shows how to put an image at the root of the tree instead of the PROJECT_NAME Generated by Doxygen 22 8 Configuration options related to the HTML output 125 Since the tree basically has the same information as the tab index you could consider setting DISABLE_l NDEX to YES when enabling this option The default value is NO This tag requires that the tag GENERATE_HTML is set to Y E Ss ENUM_VALUES_ PER LINE The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that doxygen will group on one line in the generated HTML documentation Note that a value of 0 will completely suppress the enum values from appearing in the overview section Minimum value 0 maximum value 20 default value 4 This tag requires that the tag GENERATE_HTML is set to YES TREEVIEW_WIDTH f the treeview is enabled see GENERATE_TREEVIEW then this tag can be used to set the initial width in pixels of the frame in which the
158. e relation when the programming language does not support this concept natively e g C The file manual c in the example directory shows how to use this command See also section implements and section memberof 23 14 file lt name gt Indicates that a comment block contains documentation for a source or header file with name lt name gt The file name may include part of the path if the file name alone is not unique If the file name is omitted i e the line after Generated by Doxygen 23 15 fn function declaration 145 file is left blank then the documentation block that contains the file command will belong to the file it is located in Important The documentation of global functions variables typedefs and enums will only be included in the output if the file they are in is documented as well Example x file file h A brief file description A more elaborated file description kk A global integer value x More details about this value extern int globalValue Note In the above example JAVADOC_AUTOBRIEF has been set to YES in the configuration file 23 15 fn function declaration Indicates that a comment block contains documentation for a function either global or as a member of a class This command is only needed if a comment block is not placed in front or behind the function declaration or definition If your comment block is in front of the functio
159. e td 222 OLANG OPTIONS ooo ee ee eee ee A 22 6 ALLEXTERNALS acabes Be a it 22 17 CLASS DIAGRAMS 0 6 anpa ee ee ee 22 18 ALLOW UNICODE NAMES 22 2 CLASS GRAPP ooi i a a as sed a 22 18 ALPHABETIGAL INDEX ou porga ea Bacini a 22 7 COLLABORATION GRAPH 22 18 ALWAYS DETAILED SEC 0 ue o t E EA es 222 OLS IN ALPHA INDEX o ai soea ee su ek 227 AUTOUNK SUPPORT v p bie a p ahpa at i i 22 2 GOMPACGTILSTEA co ga a E aS oe A 225 BINARY TOG ado Pines ee de alien So eae i 22 8 COMPACT RTE o coa we a ey ses a 22 10 BRIEF MEMBER DESO 2 bi cias einen Soup a 22 2 OPP CL SUPPORT o i E ns a 22 2 BUILTIN STE SUPRORT uc ed a ee a 222 DREATE SUBDIRS oca ee eee a a 22 2 CALLER GRAPP coi a pis kank anp i a 22 18 DARLE DIRS y carpa aa a a eana A 22 18 ROP GUARD iaa a an 22 18 DMT 2 a dba a a e eed Ga 22 18 GASE SENSE NAMES oc penta e ee a 22 3 DIRECTORY GRAPH s ia pah a e 22 18 DAM PILE 5 go ts Ete bia ec we ah Sh EA a dour i 22 8 DISABLE INDER sodra na ia a sels ES 22 8 CHM_INDEX_ENCODING i secr enga ee es 22 8 DISTRIBUTE GROUP DOG osos sc ep 22 2 CAVE PIB FEES 032 A jade ee ed GPR jad 22 3 DOGBQOK OUTPUT ccia a a p aai oe SS 22 13 106 Configuration DOCBOOK_PROGRAMLISTING 22 13 GENERATE XML o co oraora ec eee ee 2212 DOCSET_BUNDLEID 2 25 0 65 ere ee 22 8 GRAPHICAL_HIERARCHY 22 18 DOCSET_FEEDNAME o o o 22 8 GROUP_GRAPHS ooo 22 18 DOCSET_PUBLISHER_ID
160. ece of text displayed in a bold font e lt B gt Ends a lt B gt section lt BLO e lt BL CKQUOTE gt Starts a quotation block OCKQUOTE gt Ends the quotation block lt BR gt Forces a line break lt CEN eal TER gt starts a section of centered text e lt CENTER gt ends a section of centered text e lt CAP e lt CA e lt COD equiva lt CO TION gt Starts a caption Use within a table only PTION gt Ends a caption Use within a table only E gt Starts a piece of text displayed in a typewriter font Note that only for C code this command is lent to code DE gt Ends a lt CODE gt section Note that only for C code this command is equivalent to endcode lt DD gt Starts an item description e lt DD lt DEN gt Ends an item description gt Starts a piece of text displayed in a typewriter font e lt DFN gt Ends a lt DFN gt section lt DIV gt Starts a section with a specific style HTML only e lt DIV gt Ends a section with a specific style HTML only e lt DL gt Starts a description list e lt DL gt Ends a description list lt DT gt Starts an item title 186 HTML commands lt DT gt Ends an item title lt ea gt Starts a piece of text displayed in an italic font lt EM gt Ends a lt EM gt section lt HR gt Writes a horizontal ruler lt H1 gt Star
161. ediate s are optional so x a text x is also valid Athird alternative is to use a block of at least two C comment lines where each line starts with an additional slash or an exclamation mark Here are examples of the two cases 117 saa text or Llica CORE nas ft Note that a blank line ends a documentation block in this case Some people like to make their comment blocks more visible in the documentation For this purpose you can use the following KI RR IRR I RR ROKR KR KR RR KR kk a J kk caa text ee ee RRA RAR RRA KR RRA RARA RRA RARA RARA RARA AS note the 2 slashes to end the normal comment block and start a special comment block or AAA AAA AAA AAA AAA AAA AAA AAA AAA AAA 4 text vos AAA AAA AAA AAA AAA AAA AAA AAA For the brief description there are also several possibilities One could use the brief command with one of the above comment blocks This command ends at the end of a paragraph so the detailed description follows after an empty line Here is an example brief Brief description Brief description continued Detailed description starts here If JAVADOC_AUTOBRIEF is set to YES in the configuration file then using JavaDoc style comment blocks will automatically start a brief description which ends at the first dot followed by a space or new line Here is an example x x Brief description which ends at this dot D
162. efault value is system dependent HIDE_SCOPE_NAMES Ifthe HID hes full class and namespace scopes in the documentation If set to YES the scope will be hidden T _SCOPE_NAMES tag is set to NO then doxygen will show members with their The default value is NO HIDE_COMPOUND_REFERENCE Ifthe HIDE_COMPOUND_REFERENCE tag is set to NO default then doxygen will append additional text to a page s title such as Class Reference If set to YES the compound reference will be hidden The default value is NO SHOW_INCLUDE_FILES If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of the files that are included by a file in the documentation of that file S E The default value is Y SHOW_GROUPED_MEMB_INC If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each grouped member an include statement to the documentation telling the reader which file to include in order to use the member The default value is NO FORCE_LOCAL INCLUDES If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include files with double quotes in the documentation rather than with sharp brackets The default value is NO T INLINE_INFO lf the INLINE_INFO tag is set to YES then a tag inline is inserted in the documentation for inline members The default value is YES SORT_MEMBER_ DOCS Ifthe SORT_MEMBER_DOCS t
163. efine ABS x Generated by Doxygen 11 5 Links to other members 63 A link to the destructor of the Test class Test Test A link to the typedef B A link to the enumeration type Test EType A link to some enumeration values Test Vall and GVal2 Since this documentation block belongs to the class Test no link to Test is generated Two ways to link to a constructor are Test and Test Links to the destructor are Test and Test A link to a member in this class member More specific links to the each of the overloaded members member int and member int int A link to the variable var A link to the global typedef B A link to the global enumeration type GlobEnum A link to the define ABS x A link to a variable link var using another textlendlink as a link A link to the enumeration type EType A link to some enumeration values link Test Vall Vall endlink and And last but not least a link to a file autolink cpp sa Inside a see also section any word is checked so EType Vall GVall Test and member will be replaced by links in HTML class Test public Test lt constructor Test lt destructor void member int x lt A member function Details void member int int lt An overloaded member function Details xx An enum type More details x enum EType Vall x x lt enum value 1 x Val2 x x lt enum value 2
164. efinitions from file Syntax is similar to doxygen s config file i e a series of assignments You only have to provide replacements missing definitions are set to their default value See also section Doxygen usage for information on how to generate the default style sheet that doxygen normally uses This tag requires that the tag GENERATE_RTF is set to YES RTF_EXTENSIONS FILE Set optional variables used in the generation of an RTF document Syntax is similar to doxygen s config file A template extensions file can be generated using doxygen e rtf extensionFile This tag requires that the tag GENERATE_RTF is set to YES RTF_SOURCE_CODE If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code with syntax highlighting in the RTF output Note that which sources are shown also depends on other settings such as SOURCE_BROWSER The default value is NO This tag requires that the tag GENERATE_RTF is set to YES 22 11 Configuration options related to the man page output GENERATE_MAN If the GENERATE_MAN tag is set to YES doxygen will generate man pages for classes and files The default value is NO MAN_ OUTPUT The MAN_OUTPUT tag is used to specify where the man pages will be put If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it A directory man3 will be created inside the directory specified by MAN_OUTPUT The default direc
165. el matrix Type aggrs intent in aggr Type spmtx intent out restrict lt Our restriction matrix 1 end subroutine As an alternative you can also use comments in fixed format code C gt Function comment C gt another line of comment function a i C gt input parameter integer i end function A 4 1 5 Comment blocks in Tel Doxygen documentation can be included in normal Tcl comments To start a new documentation block start a line with two hashes All following comment lines and continuation lines will be added to this block The block ends with a line not starting with a hash sign A brief documentation can be added with lt semicolon hash and lower then sign The brief documentation also ends at a line not starting with a hash sign Inside doxygen comment blocks all normal doxygen markings are supported The only exceptions are described in the following two paragraphs If a doxygen comment block ends with a line containing only code or code all code until a line only containing endcode or endcode is added to the generated documentation as code block If a doxygen comment block ends with a line containing only verbatim or verbatin all code until a line only containing tXendverbat im or endverbatim is added verbatim to the generated documentation To detect namespaces classes functions and variables the following Tcl commands are recognized
166. elation this project You can do this in the configuration file by assigning the relative location to the tag files specified after the TAGFILES configuration option If you use a relative path it should be relative with respect to the directory where the HTML output of your project is generated so a relative path from the HTML output directory of a project to the HTML output of the other project that is linked to Example Suppose you have a project proj that uses two external projects called ext1 and ext2 The directory structure looks as follows 84 Link to external documentation lt root gt proj html src proj cpp ext1 html extl tag ext2 html ext2 tag proje cfg extl cfg ext2 cfg HTML output directory sources for proj HTML output directory tag file for ext1 HTML output directory tag file for ext2 doxygen configuration doxygen configuration doxygen configuration for proj for ext1 for ext2 file for proj file for ext1 file for ext2 Then the relevant parts of the configuration files look as follows proj cfg OUTPUT_DIRECTORY INPUT TAGFILES ext1 cfg OUTPUT_DIRECTORY GENERATE_TAGFILE ext2 cfg OUTPUT_DIRECTORY GENERATE_TAGFILE proj proj sre extl extl tag extl html ext2 ext2 tag ext2 html ext1 ext1 ext1 tag ext2 ext2 ext2 tag Generated by Doxygen Chapter 17 Frequently Asked Questions
167. empty sections are generated Some elements have a title attribute This attribute can be used to customize the title doxygen will use as a header for the piece Generated by Doxygen 80 Customizing the Output Warning at the moment you should not remove elements from the layout file as a way to hide information Doing so can cause broken links in the generated output 14 3 Using the XML output If the above two methods still do not provide enough flexibility you can also use the XML output produced by doxygen as a basis to generate the output you like To do this set GENERATE_XML to YES The XML output consists of an index file named index xm1 which lists all items extracted by doxygen with references to the other XML files for details The structure of the index is described by a schema file index xsd All other XML files are described by the schema file named compound xsd If you prefer one big XML file you can combine the index and the other files using the XSLT file combine xslt You can use any XML parser to parse the file or use the one that can be found in the addon doxmlparser directory of doxygen source distribution Look at addon doxmlparser include doxmlintf h for the interface of the parser and in addon doxmlparser example for examples The advantage of using the doxmlparser is that it will only read the index file into memory and then only those XML files that you implicitly load via navigating through the index As
168. en SOURCE_BROWSER is set to YES The default value is NO T FILTER_SOURCE_PATTERNS The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file pattern A pattern will override the setting for FILTER_PATTERN if any and it is also possible to disable source filtering for a specific pattern using ext so without naming a filter This tag requires that the tag FILTER_SOURCE_FILES is set to YES E USE_MDFILE_AS MAINPAGE If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that is part of the input its contents will be placed on the main page index html This can be useful if you have a project on for instance GitHub and want to reuse the introduction page also for the doxygen output 22 6 Configuration options related to source browsing SOURCE_BROWSER f the SOURCE_BROWSER tag is set to YES then a list of source files will be generated Documented entities will be cross referenced with these sources Note To get rid of all source code in the generated output make sure that also VERBATIM_HEADERS is set to NO The default value is NO INLINE_SOURCES Setting the INLINE_SOURCES tag to YES will include the body of functions classes and enums directly into the documentation The default value is NO T STRIP_CODE_COMMENTS Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any special
169. en this command starts a paragraph with a user defined heading The heading extends until the end of the line The paragraph following the command will be indented If no paragraph title is given this command will start a new paragraph This will also work inside other paragraph commands like param or warning without ending that command The text of the paragraph has no special internal structure All visual enhancement commands may be used inside the paragraph The par command ends when a blank line or some other sectioning command is encountered Example x class Test Normal text par User defined paragraph Contents of the paragraph par New paragraph under the same heading note This note consists of two paragraphs This is the first paragraph par And this is the second paragraph More normal text FF FF F FF OF class Test 23 72 param dir lt parameter name gt parameter description Starts a parameter description for a function parameter with name lt parameter name gt followed by a description of the parameter The existence of the parameter is checked and a warning is given if the documentation of this or any other parameter is missing or not present in the function declaration or definition The param command has an optional attribute dir specifying the direction of the parameter Possible values are in in out and out note the square br
170. enhancement commands may be used inside the paragraph Multiple adjacent A return commands will be joined into a single paragraph The return description ends when a blank line or some other sectioning command is encountered See section fn for an example 23 82 returns description of the return value Equivalent to return 23 83 retval lt return value gt description Starts a description for a function s return value with name lt return value gt followed by a description of the return value The text of the paragraph that forms the description has no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent ret val commands will be joined into a single paragraph Each return value description will start on a new line The ret val description ends when a blank line or some other sectioning command is encountered 23 84 sa references Starts a paragraph where one or more cross references to classes functions methods variables files or URL may be specified Two names joined by either or are understood as referring to a class and one of its members One of several overloaded methods or constructors may be selected by including a parenthesized list of argument types after the method name Synonymous to see See also section autolink for information on how to create links to objects Generated by Doxygen 162 Special Commands 23 85 see refere
171. entation is located Generated by Doxygen Chapter 20 Doxygen usage Doxygen is a command line based utility Calling doxygen with the he 1p option at the command line will give you a brief description of the usage of the program All options consist of a leading character followed by one character and one or more arguments depending on the option To generate a manual for your project you typically need to follow these steps 1 You document your source code with special documentation blocks see section Special comment blocks 2 You generate a configuration file see section Configuration by calling doxygen with the g option doxygen g lt config_file gt 3 You edit the configuration file so it matches your project In the configuration file you can specify the input files and a lot of optional information 4 You let doxygen generate the documentation based on the settings in the configuration file doxygen lt config_file gt If you have a configuration file generated with an older version of doxygen you can upgrade it to the current version by running doxygen with the u option doxygen u lt config_file gt All configuration settings in the original configuration file will be copied to the new configuration file Any new options will have their default value Note that comments that you may have added in the original configuration file will be lost 20 1 Fine tuning the output If you want to fine tune
172. ere for the XML commands supported by doxygen If this is still not enough doxygen also supports a subset of the HTML markup language Generated by Doxygen 32 Documenting the code Generated by Doxygen Chapter 5 Markdown Markdown support was introduced in doxygen version 1 8 0 It is a plain text formatting syntax written by John Gruber with the following underlying design goal The design goal for Markdown s formatting syntax is to make it as readable as possible The idea is that a Markdown formatted document should be publishable as is as plain text without looking like it s been marked up with tags or formatting instructions While Markdown s syntax has been influenced by several existing text to HTML filters the single biggest source of inspiration for Markdown s syntax is the format of plain text email In the next section the standard Markdown features are briefly discussed The reader is referred to the Markdown site for more details Some enhancements were made for instance PHP Markdown Extra and GitHub flavored Markdown The section Markdown Extensions discusses the extensions that doxygen supports Finally section Doxygen specifics discusses some specifics for doxygen s implementation of the Markdown stan dard 5 1 Standard Markdown 5 1 1 Paragraphs Even before doxygen had Markdown support it supported the same way of paragraph handling as Markdown to make a paragraph you just separate consecu
173. essed HTML chm _ With search function requires PHP enabled web server M La O as intermediate format for hyperlinked PDF gt as intermediate format for PDF as intermediate format for PostScript Man pages 1 Rich Text Format RTF 2 XML Eo cancel Figure 21 4 Wizard dialog Output to produce You can select one or more of the output formats that doxygen should produce For HTML and lATpX there are additional options Diagrams to generate O No diagrams Use built in class diagram generator Use dot tool from the GraphViz package to generate M Class diagrams M Collaboration diagrams Y Include dependency graphs Y Included by dependency graphs M Overall Class hierarchy _ Call graphs GOD cance Figure 21 5 Wizard dialog Diagrams to generate Generated by Doxygen 103 Doxygen can produce a number of diagrams Using the diagrams tab you can select which ones to generate For most diagrams the dot tool of the GraphViz package is needed if you use the binary packages for MacOSX this tool is already includea Expert dialog The Expert dialog has a number of tab fields one for each section in the configuration file Each tab field contains a number of lines one for each configuration option in that section The kind of input widget depends on the type of the configuration option For each boolean option those options that are answered with YES or NO in the configur
174. etails follow here The option has the same effect for multi line special C comments Generated by Doxygen 4 1 Special comment blocks 21 Brief description which ends at this dot Details follow here 3 A third option is to use a special C style comment which does not span more than one line Here are two examples Brief description x Detailed description or Brief description Detailed description starts here Note the blank line in the last example which is required to separate the brief description from the block containing the detailed description The JAVADOC_AUTOBRIEF should also be set to NO for this case As you can see doxygen is quite flexible If you have multiple detailed descriptions like in the following example Brief description which is really a detailed description since it spans multiple lines Another detailed description They will be joined Note that this is also the case if the descriptions are at different places in the code In this case the order will depend on the order in which doxygen parses the code Unlike most other documentation systems doxygen also allows you to put the documentation of members including global functions in front of the definition This way the documentation can be placed in the source file instead of the header file This keeps the header file compact and allows the implementer of the members more di
175. etter kappa K greek capital letter lambda A greek capital letter mu M greek capital letter nu N greek capital letter xi greek capital letter omicron O greek capital letter pi II greek capital letter rho P greek capital letter sigma Y greek capital letter tau T greek capital letter upsilon Y greek capital letter phi greek capital letter chi X greek capital letter psi Y greek capital letter omega Q greek small letter alpha a Generated by Doxygen 191 beta amp gamma amp delta amp epsilon amp zeta amp eta amp theta amp iota amp kappa amp lambda amp mu amp nu amp xi amp omicron amp pi amp rho amp sigmaf amp sigma amp tau upsilon phi amp chi amp psi amp omega amp thetasym upsih amp piv amp bull amp hellip amp prime amp Prime oline amp frasl weierp amp image amp real greek small letter beta greek small letter gamma y greek small letter delta 6 greek small letter epsilon e greek small letter zeta greek small letter eta n greek small letter theta 0 greek small letter iota 1 greek small letter kappa k greek small letter lambda A greek small letter mu u greek small letter nu v greek small letter xi greek small letter omicron o greek small letter pi 7 greek small letter rho p greek small letter final sigma greek small letter sigma o g
176. ewritten practically all code since then DOC has still given me a good start in writing doxygen All people at Qt Software for creating a beautiful GUI Toolkit which is very useful as a Windows Unix platform abstraction layer My brother Frank for rendering the logos Harm van der Heijden for adding HTML help support Wouter Slegers of Your Creative Solutions for registering the www doxygen org domain e Parker Waechter for adding the RTF output generator Joerg Baumann for adding conditional documentation blocks PDF links and the configuration generator Tim Mensch for adding the todo command Christian Hammond for redesigning the web site Ken Wong for providing the HTML tree view code Talin for adding support for C style comments with XML markup Petr Prikryl for coordinating the internationalization support All language maintainers for providing transla tions into many languages e The band Porcupine Tree for providing hours of great music to listen to while coding many many others for suggestions patches and bug reports Generated by Doxygen Introduction Generated by Doxygen Chapter 2 Installation First go to the download page to get the latest distribution if you have not downloaded doxygen already 2 1 Compiling from source on UNIX If you downloaded the source distribution you need at least the following to build the executable e The GNU tools flex bison libico
177. fect See also section callergraph 23 4 callergraph When this command is put in a comment block of a function or method and HAVE_DOT is set to YES then doxygen will generate a caller graph for that function provided the implementation of the function or method calls other documented functions The caller graph will be generated regardless of the value of CALLER_GRAPH Note The completeness and correctness of the caller graph depends on the doxygen code parser which is not perfect See also section callgraph Generated by Doxygen 142 Special Commands 23 5 category lt name gt lt header file gt lt header name gt For Objective C only Indicates that a comment block contains documentation for a class category with name lt name gt The arguments are equal to the class command See also section class 23 6 class lt name gt lt header file gt lt header name gt Indicates that a comment block contains documentation for a class with name lt name gt Optionally a header file and a header name can be specified If the header file is specified a link to a verbatim copy of the header will be included in the HTML documentation The lt header name gt argument can be used to overwrite the name of the link that is used in the class documentation to something other than lt header file gt This can be useful if the include name is not located on the default include path like lt X11 X h g
178. file can not be opened Check about file system read write access x define MY_ERR_CANNOT_OPEN_FILE 101 x Nerror ERROR 102 in case a file can not be closed Check about file system read write access x define MY_ERR_CANNOT_CLOSE_FILE 102 with error defined as ALIASES error Xxrefitem my_errors WVV Generated by Doxygen 164 Special Commands Commands to create links 23 95 laddindex text This command adds text to the IATEX index 23 96 lanchor lt word gt This command places an invisible named anchor into the documentation to which you can refer with the Wref com mand Note Anchors can currently only be put into a comment block that is marked as a page using page or mainpage mainpage See also section ref 23 97 cite lt label gt Adds a bibliographic reference in the text and in the list of bibliographic references The lt label gt must be a valid BibTeX label that can be found in one of the bib files listed in CITE_BIB_FILES For the IATEX output the formatting of the reference in the text can be configured with LATEX_BIB_STYLE For other output formats a fixed representation is used Note that using this command requires the bibtex tool to be present in the search path 23 98 endlink This command ends a link that is started with the link command See also section link 23 99 link lt link object gt The links that are automatically generated by doxygen al
179. files The default value is NO This tag requires that the tag GENERATE_HTML is set to YES CHM FILE The CHM_FILE tag can be used to specify the file name of the resulting chm file You can add a path in front of the file if the result should not be written to the html output directory This tag requires that the tag GENERATE_HTMLHELP is set to YES HHC_LOCATION The HHC_LOCATION tag can be used to specify the location absolute path including file name of the HTML help compiler hhc exe If non empty doxygen will try to run the HTML help compiler on the generated index hhp The file has to be specified with full path This tag requires that the tag GENERATE_HTMLHELP is set to YES GENERATE_CHI The GENERATE_CHI flag controls if a separate chi index file is generated YES or that it should be included in the master chm file NO The default value is NO This tag requires that the tag GENERATE_HTMLHELP is set to YES CHM_INDEX_ENCODING The CHM_INDEX_ENCODING is used to encode HtmlHelp index hhk content hhc and project file content This tag requires that the tag GENERATE_HTMLHELP is set to YES BINARY_TOC The BINARY_TOC flag controls whether a binary table of contents is generated YES or anormal table of contents NO in the chm file Furthermore it enables the Previous and Next buttons The default value is NO This tag requires that the tag GENERATE_HTMLHELP
180. fter the INPUT_FILTER tag If you are unsure what the effect of doxygen s preprocessing will be you can run doxygen as follows doxygen d Preprocessor This will instruct doxygen to dump the input sources to standard output after preprocessing has been done Hint set QUI KT Y ES and WARNINGS NO in the configuration file to disable any other output Generated by Doxygen Chapter 11 Automatic link generation Most documentation systems have special see also sections where links to other pieces of documentation can be inserted Although doxygen also has a command to start such a section See section sa it does allow you to put these kind of links anywhere in the documentation For lATEX documentation a reference to the page number is written instead of a link Furthermore the index at the end of the document can be used to quickly find the documentation of a member class namespace or file For man pages no reference information is generated The next sections show how to generate links to the various documented entities in a source file 11 1 Links to web pages and mail addresses Doxygen will automatically replace any URLs and mail addresses found in the documentation by links in HTML To manually specify link text use the HTML a tag lt a href linkURL gt link text lt a gt which will be automatically translated to other output formats by Doxygen 11 2 Links to classes All words in the d
181. g Instead the search results are written to an XML file which needs to be processed by an external indexer Doxygen will invoke an external search engine pointed to by the SEARCHENGINE_URL option to obtain the search results Doxygen ships with an example indexer doxyindexer and search engine doxysearch cgi which are based on the open source search engine library Xapian See the section External Indexing and Searching for details The default value is NO This tag requires that the tag SEARCHENGINE is set to Y GI n Generated by Doxygen 22 9 Configuration options related to the LaTeX output 127 SEARCHENGINE_URL The SEARCHENGINE_URL should point to a search engine hosted by a web server which will return the search results when EXTERNAL_SEARCH is enabled Doxygen ships with an example indexer doxyindexer and search engine doxysearch cgi which are based on the open source search engine library Xapian See the section External Indexing and Search ing for details This tag requires that the tag SEARCHENGINE is set to YES SEARCHDATA_FILE When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unin dexed search data is written to a file for indexing by an external tool With the SEARCHDATA_FILE tag the name of this file can be specified The default file is searchdata xml This tag requires that the tag SEARCHENGINE is set to YES EXTERNAL SEARCH ID When SERVER_BASED SEARCH and EX
182. ge For a descriptionm of the possibilities see the paragraph Size indication with the image command 23 136 le lt word gt Displays the argument lt word gt in italics Use this command to emphasize words Example Typing this is a le really good example will result in the following text this is a really good example Equivalent to la and lem To emphasize multiple words use lt em gt multiple words lt em gt 23 137 lem lt word gt Displays the argument lt word gt in italics Use this command to emphasize words Example Typing this is a lem really good example Generated by Doxygen 23 138 endcode 177 will result in the following text this is a really good example Equivalent to la and le To emphasize multiple words use lt em gt multiple words lt em gt 23 138 endcode Ends a block of code See also section code 23 139 lenddocbookonly Ends a block of text that was started with a docbookonly command See also section docbookonly 23 140 lenddot Ends a block that was started with dot 23 141 endmsc Ends a block that was started with msc 23 142 enduml Ends a block that was started with startuml 23 143 endhtmlonly Ends a block of text that was started with a ntmlonly command See also section ntmlonly 23 144 endlatexonly Ends a block of text that was started with a latexonly command See also se
183. get different member functions Note 3 For JavaDoc compatibility a may be used instead of a in the patterns above Note 4 In the documentation of a class containing a member foo a reference to a global variable is made using foo whereas foo will link to the member For non overloaded members the argument list may be omitted If a function is overloaded and no matching argument list is specified i e pattern 2 or 6 is used a link will be created to the documentation of one of the overloaded members For member functions the class scope as used in patterns 4 to 7 may be omitted if 1 The pattern points to a documented member that belongs to the same class as the documentation block that contains the pattern 2 The class that corresponds to the documentation blocks that contains the pattern has a base class that contains a documented member that matches the pattern 11 5 Links to other members All of these entities can be linked to in the same way as described in the previous section For sake of clarity it is advised to only use patterns 3 and 7 in this case Example x file autolink cpp Testing automatic link generation A link to a member of the Test class Test member More specific links to the each of the overloaded members Test member int and Test member int int A link to a protected member variable of Test Test var A link to the global enumeration type GlobEnum A link to the d
184. gnment are supported will result in the following text AlignLeft left alignment e AlignCenter center alignment e AlignRight right alignment No other types of alignment are supported Note For nested lists HTML commands should be used Equivalent to arg 23 159 An Forces a new line Equivalent to lt br gt and inspired by the print f function 23 160 Ap lt word gt Displays the parameter lt word gt using a typewriter font You can use this command to refer to member function parameters in the running text Example the Xp x and p y coordinates are used to This will result in the following text the x and y coordinates are used to Equivalent to c To have multiple words in typewriter font use lt tt gt multiple words lt tt gt 23 161 rtfonly Starts a block of text that will be verbatim included in the generated RTF documentation only The block ends with a endrtfonly command This command can be used to include RTF code that is too complex for doxygen Note environment variables like HOME are resolved inside a RTF only block Generated by Doxygen 182 Special Commands See also sections manonly xmlonly latexonly htmlonly and docbookonly 23 162 verbatim Starts a block of text that will be verbatim included in the documentation The block should end with a endverbatim command All commands are disabled in a verbatim block Warning Make sure yo
185. gorz Kowal unreachable g_kowal at poczta dot onet dot pl Krzysztof Kral krzysztof dot kral at gmail dot com Portuguese Rui Godinho Lopes resigned rgl at ruilopes dot com up to date Fabio FJTC Jun Takada Chino jun chino at uol dot com dot br Romanian lonut Dumitrascu reddumy at yahoo dot com almost up to date Alexandru losup aiosup at yahoo dot com Russian Brilliantov Kirill Vladimirovich brilliantov at byterg dot ru almost up to date Alexandr Chelpanov cav at cryptopro dot ru Serbian Dejan Milosavljevic unreachable dmilos at email dot com 1 6 0 SerbianCyrillic Nedeljko Stefanovic stenedjo at yahoo dot com 1 6 0 Slovak Kali Laco Svec the Slovak language advisors up to date Petr P ikryl prikryl at atlas dot cz Slovene Matja Ostrover nik matjaz dot ostroversnik at ostri dot org 1 4 6 Spanish Bartomeu bartomeu at loteria3cornella dot com up to date Francisco Oltra Thennet unreachable foltra at puc dot cl David Vaquero david at grupoikusnet dot com Swedish Bj rn Palmqvist bjorn palmqvist at aidium se almost up to date Turkish Emin Ilker Cetinbas niw3 at yahoo dot com 175 Ukrainian Olexij Tkatchenko resigned olexij at tkatchenko dot com 1 8 4 Petro Yermolenko python at i dot ua Vietnamese Dang Minh Tuan tuanvietkey at gmail dot com 1 6 0 Most people on the list have indicated that they were also busy doing other things so if you want to help to speed things up please let them or me know If you want to add support for a language t
186. graph 5 3 5 Code Spans Limits Note that unlike standard Markdown doxygen leaves the following untouched A cool word in a nice sentence In other words a single quote cancels the special treatment of a code span wrapped in a pair of backtick characters This extra restriction was added for backward compatibility reasons 5 3 6 Lists Extensions With Markdown two lists separated by an empty line are joined together into a single list which can be rather unexpected and many people consider it to be a bug Doxygen however will make two separate lists as you would expect Example Iteml of list 1 Item2 of list 1 1 Iteml of list 2 2 Item2 of list 2 With Markdown the actual numbers you use to mark the list have no effect on the HTML output Markdown produces l e standard Markdown treats the following as one list with 3 numbered items Generated by Doxygen 5 4 Debugging of problems 41 1 Iteml 1 Item2 1 Item3 Doxygen however requires that the numbers used as marks are in strictly ascending order so the above example would produce 3 lists with one item An item with an equal or lower number than the preceding item will start a new list For example Iteml of list Item2 of list Iteml of list Item2 of list mH WF fi Bo He jH will produce 1 ltem1 of list 1 2 ltem2 of list 1 1 Item1 of list 2 2 ltem2 of list 2 Historically doxygen has an additional way to crea
187. gt lt field name text gt Sets the DTD handler to handler DTDHandler lt field gt lt doc gt lt add gt Each field has a name The following field names are supported e type the type of the search entry can be one of source function slot signal variable typedef enum enumvalue property event related friend define file namespace group package page dir name the name of the search entry for a method this is the qualified name of the method for a class it is the name of the class etc Generated by Doxygen 13 1 External Indexing and Searching 73 args the parameter list in case of functions or methods e tag the name of the tag file used for this project e url the relative URL to the HTML documentation for this entry e keywords important words that are representative for the entry When searching for such keyword this entry should get a higher rank in the search results e text the documentation associated with the item Note that only words are present no markup Note Due to the potentially large size of the XML file it is recommended to use a SAX based parser to process it 13 1 4 2 Search URL format When the search engine is invoked from a doxygen generated HTML page a number of parameters are passed to viathe query string The following fields are passed e q the query text as entered by the user n the number of search results requested p the number of
188. gt 175 startuml myimage png Image Caption width 5cm Alice gt Bob Hello fenduml When the name of the image is specified doxygen will generate an image with that name Without the name doxygen will choose a name automatically The second argument is optional and can be used to specify the caption that is displayed below the image This argument has to be specified between quotes even if it does not contain any spaces The quotes are stripped before the caption is displayed The third argument is also optional and can be used to specify the width or height of the image For a descriptionm of the possibilities see the paragraph Size indication with the image command Here is an example of the use of the st artuml command Sender class Can be used to send a command to the server The receiver will acknowledge the command by calling Ack startuml Sender gt Receiver Command Sender lt Receiver Ack enduml class Sender public x x Acknowledgment from server void Ack bool ok xx Receiver class Can be used to receive and execute commands After execution of a command the receiver will send an acknowledgment startuml Receiver lt Sender Command Receiver gt Sender Ack enduml class Receiver public Executable a command on the server void Command int commandId 5 23 133 dotfile lt file gt caption lt sizeindication gt lt size
189. h can be further restricted by MAX_DOT_GRAPH_DEPTH Minimum value 0 maximum value 10000 default value 50 This tag requires that the tag HAVE_DOT is set to YES MAX _DOT_GRAPH DEPTH The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs generated by dot A depth value of 3 means that only nodes reachable from the root by following a path via at most 3 edges will be shown Nodes that lay further from the root node will be omitted Note that setting this option to 1 or 2 may greatly reduce the computation time needed for large code bases Also note that the size of a graph can be further restricted by DOT_GRAPH_MAX_NODES Using a depth of 0 means no depth restriction Generated by Doxygen 22 19 Examples 137 Minimum value 0 maximum value 1000 default value 0 This tag requires that the tag HAVE_DOT is setto YES DOT_TRANSPARENT Set the DOT_TRANSPARENT tag to YES to generate images with a transparent back ground This is disabled by default because dot on Windows does not seem to support this out of the box Warning Depending on the platform used enabling this option may lead to badly anti aliased labels on the edges of a graph i e they become hard to read The default value is NO This tag requires that the tag HAVE_DOT is setto YES DOT_MULTI_TARGETS Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output files in one run i e multiple o and
190. hat is not yet listed please read the next section Adding a new language to doxygen This short HOWTO explains how to add support for the new language to doxygen Just follow the following steps 1 Tell me for which language you want to add support If no one else is already working on support for that language you will be assigned as the maintainer for the language 2 Create a copy of doxygen src translator_en h and name it doxygen src translator_ lt your_2_letter_country_code gt h I ll use xx in the rest of this document and XX for the upper case version 3 Edit doxygen src language cpp Add the following code ifdef LANG_XX tinclude lt translator_xx h gt tendif Remember to use the same symbol LANG_XX that was added to doxygen src lang_cfg h Now in setTranslator add Generated by Doxygen 209 ifdef LANG_XX else if L_EQUAL your_language_name theTranslator new TranslatorYourLanguage tendif after the if Le it must be placed after the code for creating the English translator at the beginning and beforetheelse partthat creates the translator for the default language English again 4 Edit doxygen src translator_xx h e e Use the UTF 8 capable editor and open the file using the UTF 8 mode Rename TRANSLATOR_EN_H to TRANSLATOR_XX_H twice i e in the ifndef and defin preprocessor commands at the beginning of the file E
191. hat the lt access key gt is depends on the OS and browser but it is typically lt CTRL gt lt ALT gt lt option gt or both Inside the search box use the lt cursor down key gt to jump into the search results window the results can be navigated using the lt cursor keys gt Press lt Enter gt to select an item or lt escape gt to cancel the search The filter options can be selected when the cursor is inside the search box by pressing lt shift gt lt cursor down gt Also here use the lt cursor keys gt to select a filter and lt Enter gt or lt escape gt to activate or cancel the filter option The default value is YES This tag requires that the tag GENERATE_HTML is set to YES SERVER_BASED_SEARCH When the SERVER_BASED_SEARCH tag is enabled the search engine will be im plemented using a web server instead of a web client using Javascript There are two flavors of web server based searching depending on the EXTERNAL_SEARCH setting When disabled doxygen will generate a PHP script for searching and an index file used by the script When EX TERNAL SEARCH is enabled the indexing and searching needs to be provided by external tools See the section External Indexing and Searching for details The default value is NO This tag requires that the tag SEARCHENGINE is set to YES EXTERNAL SEARCH When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP script for searchin
192. have a unique name where the name does NOT include the path If a tag file is not located in the directory in which doxygen is run you must also specify the path to the tagfile here GENERATE_TAGFILE When afile name is specified after GENERATE_TAGF ILE doxygen will create a tag file that is based on the input files it reads See section Linking to external documentation for more information about the usage of tag files ALLEXTERNALS If the ALLEXTERNALS tag is set to YES all external class will be listed in the class index If set to NO only the inherited external classes will be listed The default value is NO EXTERNAL_GROUPS If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in the modules index If set to NO only the current project s groups will be listed The default value is YES EXTERNAL_PAGES f the EXTERNAL_PAGES tag is set to YES all external pages will be listed in the related pages index If set to NO only the current project s pages will be listed The default value is YES PERL_PATH The PERL_PATH should be the absolute path and name of the perl script interpreter i e the result of which perl The default file with absolute path is usr bin perl 22 18 Configuration options related to the dot tool CLASS DIAGRAMS Ifthe CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram in He TML and TEX for
193. he pointer to the first line of the example Example A test class x class Test public a member function void example y x page example x dontinclude example_test cpp Our main function starts like this x skip main x until First we create an object c t of the Test class x Askipline Test Then we call the example member function x line example After that our little test routine ends x NMline Where the example file example_test cpp looks as follows void main Test t t example Alternatively the snippet command can be used to include only a fragment of a source file For this to work the fragment has to be marked Generated by Doxygen 168 Special Commands See also sections Vine skip skipline until and include 23 111 include lt file name gt This command can be used to include a source file as a block of code The command takes the name of an include file as an argument Source files or directories can be specified using the EXAMPLE_PATH tag of doxygen s configuration file If lt file name gt itself is not unique for the set of example files specified by the EXAMPLE_PATH tag you can include part of the absolute path to disambiguate it Using the include command is equivalent to inserting the file into the documentation block and surrounding it with code and endcode commands The main purpose of the include command is to
194. he same Generated by Doxygen 132 Configuration The default value is YES This tag requires that the tag GENERATE_PERLMOD is set to YES PERLMOD_MAKEVAR_ PREFIX The names of the make variables in the generated doxyrules make file are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX This is useful so different doxyrules make files included by the same Makefile don t overwrite each other s variables This tag requires that the tag GENERATE_PERLMOD is set to YES 22 16 Configuration options related to the preprocessor ENABLE_PREPROCESSING If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all C preprocessor directives found in the sources and include files The default value is YES MACRO_EXPANSION If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names in the source code If set to NO only conditional compilation will be performed Macro expansion can be done ina controlled way by setting EXPAND_ONLY_PREDEF to YES The default value is NO This tag requires that the tag ENABLE_PREPROCESSING is set to YES EXPAND _ONLY_PREDEF If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then the macro expansion is limited to the macros specified with the PREDEFINED and EXPAND_AS_DE gt FINED tags The default value is NO This tag requires that the tag ENABLE_PREPROCESSING is set to YE
195. hing can be properly linked to the corresponding documentation because of possible ambiguities or lack of information about the context in which the code fragment is found 92 Troubleshooting e It is not possible to insert a non member function f in a class A using the relates or relatesalso command if class A already has a member with name f and the same argument list There is only very limited support for member specialization at the moment It only works if there is a special ized template class as well Not all special commands are properly translated to RTF Version 1 8 6 of dot and maybe earlier versions too do not generate proper map files causing the graphs that doxygen generates not to be properly clickable PHP only Doxygen requires that all PHP statements i e code is wrapped in a functions methods otherwise you may run into parse problems 18 2 Howto Help The development of Doxygen highly depends on your input If you are trying Doxygen let me know what you think of it do you miss certain features Even if you decide not to use it please let me know why 18 3 How to report a bug Bugs are tracked in GNOME s bugzilla database Before submitting a new bug first search through the database if the same bug has already been submitted by others the doxygen product will be preselected If you believe you have found a new bug please report it If you are unsure whether or not something is a bug please
196. hing shows various ways to search in the HTML documentation e Section External Indexing and Searching shows how use the external search and index tools e Section Customizing the output explains how you can customize the output generated by doxygen e Section Custom Commands show how to define and use custom commands in your comments e Section Linking to external documentation explains how to let doxygen create links to externally generated documentation Section Frequently Asked Questions gives answers to frequently asked questions e Section Troubleshooting tells you what to do when you have problems The second part forms a reference manual e Section Features presents an overview of what doxygen can do e Section Doxygen usage shows how to use the doxygen program e Section Doxywizard usage shows how to use the doxywizard program Section Configuration shows how to fine tune doxygen so it generates the documentation you want e Section Special Commands shows an overview of the special commands that can be used within the docu mentation Section HTML Commands shows an overview of the HTML commands that can be used within the documen tation e Section XML Commands shows an overview of the CH style XML commands that can be used within the documentation The third part provides information for developers Section Doxygen s Internals gives a global overview of how doxygen is internally structured e Section Perl Modul
197. ia org wiki BibTeX and cite for more 22 10 Configuration options related to the RTF output GENERATE_RTF lf the GEN is optimized for Word ERATE_RTF tag is s The default value is NO et to YES doxygen will generate RTF output The RTF output 97 and may not look too pretty with other RTF readers editors RTF_OUTPUT The RTF_OUTPUT tag is used to specify where the RTF docs will be put If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it The default directory is rt f This tag requires that the tag GENERATE_RTF is set to YES COMPACT_RTF Ifthe COMPACT_RTF tag is set to Y ES doxygen generates more compact RTF documents This may be useful for small projects and may help to save some trees in general The default value is NO This tag requires that the tag GENERATE_RTF is set to YES RTF_HYPERLINKS If the RTF_HYP ERLINKS tag is set to Y ES the RTF that is generated will contain hyperlink fields The RTF file will contain links just like the HTML output instead of page references This makes the output suitable for online browsing using Word or some other Word compatible readers that support those fields Note WordPad write and others do not support links The default value is NO This tag requires that the tag GENERATE_RTF is set to YES Generated by Doxygen 130 Configuration RTF_STYLESHEET_FILE Load stylesheet d
198. ich is dependent on the configuration options and may changes when upgrading to a new doxygen release Note If you do not want documentation for each item inside the configuration file then you can use the optional s option This can use be used in combination with the u option to add or strip the documentation from an existing configuration file Please use the s option if you send me a configuration file as part of a bug report To make doxygen read write to standard input output instead of from to a file use for the file name Generated by Doxygen Chapter 21 Doxywizard usage Doxywizard is a GUI front end for configuring and running doxygen Note it is possible to start the doxywizard with as argument the configuration file to be used When you start doxywizard it will display the main window the actual look depends on the OS used 606 Doxygen GUI frontend Step 1 Configure doxygen Choose one of the following ways to configure doxygen Step 2 Save the configuration file Status not saved Step 3 Specify the directory from which to run doxygen Working directory Users dimitri doxygen Step 4 Run doxygen Start Status not running Save log Output produced by doxygen Figure 21 1 Main window The windows shows the steps to take to configure and run doxygen The first step is to choose one of the ways to configure doxygen 100 Doxywizard usage Wizard Click this but
199. ifics Even though doxygen tries to following the Markdown standard as closely as possible there are couple of deviation and doxygen specifics additions Generated by Doxygen 5 3 Doxygen specifics 39 5 3 1 Including Markdown files as pages Doxygen can process files with Markdown formatting For this to work the extension for such a file should be md or markdown see EXTENSION_MAPPING if your Markdown files have a different extension and use md as the name of the parser Each file is converted to a page see the page command for details By default the name and title of the page are derived from the file name If the file starts with a level 1 header however it is used as the title of the page If you specify a label for the header as shown here doxygen will use that as the page name If the label is called index or mainpage doxygen will put the documentation on the front page index html Here is an example of a file README md that will appear as the main page when processed by doxygen My Main Page mainpage Documentation that will appear on the main page If a page has a label you can link to it using ref as is shown above To refer to a markdown page without such label you can simple use the file name of the page e g See the other page other md for more info 5 3 2 Treatment of HTML blocks Markdown is quite strict in the way it processes block level HTML block level HTML elements e g
200. ild of section names round brackets amp amp AND OR and NOT If you use an expression you need to wrap it in round brackets ie Acond LABEL1 amp amp LABEL2 Conditional blocks can be nested A nested section is only enabled if all enclosing sections are enabled as well Example Unconditionally shown documentation if Condl Only included if Condl is set endif if Cond2 Only included if Cond2 is set if Cond3 Only included if Cond2 and Cond3 are set endif More text endif Unconditional text 4 4 F FF FF HF FH HF HF Generated by Doxygen 158 Special Commands You can also use conditional commands inside aliases To document a class in two languages you could for instance use Example 2 Nenglish This is English Nendenglish dutch x Dit is Nederlands enddutch class Example y Where the following aliases are defined in the configuration file ALIASES english 1if english endenglish endif dutch if dutch enddutch endif and ENABLED_SECTIONS can be used to enable either english or dutch See also sections endif ifnot else elseif and ENABLED_SECTIONS 23 68 ifnot section label Starts a conditional documentation section The section ends with a matching endif command This conditional section is enabled by default To disable it you must put the section label after the ENABLED_SECTIONS tag in the configur
201. ile is set to the correct tab size 44 Lists You can end a list by starting a new paragraph or by putting a dot on an empty line at the same indentation level as the list you would like to end Here is an example that speaks for itself kx Text before the list x list item 1 sub item 1 sub sub item 1 sub sub item 2 The dot above ends the sub sub item list More text for the first sub item A AX A F F The dot above ends the first sub item More text for the first list item sub item 2 sub item 3 list item 2 A XA A A F More text in the same paragraph More text in a new paragraph RA A Using HTML commands If you like you can also use HTML commands inside the documentation blocks Here is the above example with HTML commands A list of events lt ul gt lt li gt mouse events lt ol gt lt li gt mouse move event lt li gt mouse click event lt br gt More info about the click event lt li gt mouse double click event lt ol gt lt li gt keyboard events lt ol gt lt li gt key down event lt li gt key up event lt ol gt lt ul gt More text here Note In this case the indentation is not important Using arg or li For compatibility with the Qt Software s internal documentation tool qdoc and with KDoc doxygen has two com mands that can be used to create simple unnested lists See arg and li for mo
202. ile will be included in the documentation just after the documentation contained in Generated by Doxygen 144 Special Commands the comment block All examples are placed in a list The source code is scanned for documented members and classes If any are found the names are cross referenced with the documentation Source files or directories can be specified using the EXAMPLE_PATH tag of doxygen s configuration file If lt file name gt itself is not unique for the set of example files specified by the EXAMPLE_PATH tag you can include part of the absolute path to disambiguate it If more than one source file is needed for the example the include command can be used Example xx A Test class x More details about this class class Test public xx An example member function More details about this function void example y void Test example x x Nexample example_test cpp x This is an example of how to use the Test class More details about this example Where the example file example_test cpp looks as follows void main Test t t example See also section include 23 12 endinternal This command ends a documentation fragment that was started with a internal command The text between internal and endinternal will only be visible if INTERNAL_DOCS is set to YES 23 13 extends lt name gt This command can be used to manually indicate an inheritanc
203. imple Just follow the dialogs After installation it is recommended to also download and install GraphViz version 2 20 or better is highly recom mended Doxygen can use the dot tool of the GraphViz package to render nicer diagrams see the HAVE_DOT option in the configuration file If you want to produce compressed HTML files see GENERATE_HTMLHELP in the config file then you need the Microsoft HTML help workshop You can download it from Microsoft If you want to produce Qt Compressed Help files see QHG_LOCATION in the config file then you need ghelp generator which is part of Qt You can download Qt from Ot Software Downloads In order to generate PDF output or use scientific formulas you will also need to install LaTeX and Ghostscript For lATEX a number of distributions exists Popular ones that should work with doxygen are MikTex and proTeXt Ghostscript can be downloaded from Sourceforge After installing ATEX and Ghostscript you ll need to make sure the tools latex exe pdflatex exe and gswin32c exe are present in the search path of a command box Follow t hese instructions if you are unsure and run the commands from a command box to verify it works Generated by Doxygen 2 6 Tools used to develop doxygen 11 2 6 Tools used to develop doxygen Doxygen was developed and tested under Linux amp MacOSX using the following open source tools GCC version 4 6 3 Linux and 4 2 1 MacOSX GNU flex version 2 5 35 GN
204. in arg Argument 29 protected method itcl_method_y arg 30 Documented itcl method c itcl_method_z 31 param in arg Argument 32 public method itcl_method_z arg 33 Documented common itcl var lc itcl_Var 34 common itcl_Var 35 protectedsection 36 37 variable itcl_varl lt Documented itcl var c itcl_varl 38 variable itcl_var2 39 Documented oo class c oo_class 40 oo class create oo_class 41 Create object 42 Configure with args 43 constructor args eval Sargs 44 Destroy object 45 Exit 46 destructor exit 47 Documented oo var lc oo_var 48 Defined inside class 49 variable oo_var 50 private Documented oo method lc oo_method_x Sil param in arg Argument 52 method oo_method_x arg 53 protected Documented oo method c oo_method_y 54 param in arg Argument 55 method oo_method_y arg 56 public Documented oo method c oo_method_z 57 param in arg Argument 58 method oo_method_z arg 59 60 61 endcode 62 63 itcl body ns itcl_class itcl_method_x argx 64 puts Sargx OK 65 66 67 oo define ns oo_class 68 public Outside defined variable lc oo_var_out Generated by Doxygen 4 2 Anatomy of a comment block 31 69 Inside oo_class 70 variable oo_var_out 71 72 73 Documented global proc lc glob_proc 74 param in arg Argument 75 proc glob_proc arg puts arg 76 77 variable glob_va
205. iplication sign x e Oslash latin capital letter O with stroke latin capital letter O slash e amp Ugrave latin capital letter U with grave Uacute latin capital letter U with acute e Ucirc latin capital letter U with circumflex Uuml latin capital letter U with diaeresis amp Yacute latin capital letter Y with acute Y amp THORN latin capital letter THORN P e szlig latin small letter sharp s ess zed B Sagrave latin small letter a with grave latin small letter a grave a Saacute latin small letter a with acute a Sacirc latin small letter a with circumflex a amp atilde latin small letter a with tilde a gauml latin small letter a with diaeresis a e amp aring latin small letter a with ring above latin small letter a ring a e Saelig latin small letter ae latin small ligature ae amp ccedil latin small letter c with cedilla e egrave latin small letter e with grave eacute latin small letter e with acute gecirc latin small letter e with circumflex geuml latin small letter e with diaeresis e amp igrave latin small letter i with grave i amp lacute latin small letter i with acute e amp icirc latin small letter i with circumflex 7 e iuml latin small letter i with diaeresis seth latin small letter eth 6 amp ntilde latin small letter n with tilde A e Ograve latin small letter o w
206. 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 parseCode declared in src code h Output generators After data is gathered and cross referenced doxygen generates output in various formats For this it uses the methods provided by the abstract class Out putGenerator In order to generate output for multiple formats at once the methods of Output List 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 tem porarily disable certain generators The OutputList class contains various disable and enable methods for this The methods OutputList pushGeneratorState and OutputList popGeneratore State 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 e
207. is option is set to NO The default value is NO DOT_NUM_THREADS The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed to run in parallel When set to 0 doxygen will base this on the number of processors available in the system You can set it explicitly to a value larger than 0 to get control over the balance between CPU load and processing speed Minimum value 0 maximum value 32 default value 0 This tag requires that the tag HAVE_DOT is set to Y ES DOT_FONTNAME When you want a differently looking font in the dot files that doxygen generates you can specify the font name using DOT_FONTNAME You need to make sure dot is able to find the font which can be done by putting it in a standard location or by setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory containing the font The default value is Helvetica This tag requires that the tag HAVE_DOT is set to Y ES DOT_FONTSIZE The DOT_FONTSIZ E tag can be used to set the size in points of the font of dot graphs Minimum value 4 maximum value 24 default value 10 This tag requires that the tag HAVE_DOT is set to YES Gl DOT_FONTPATH By default doxygen will tell dot to use the default font as specified with DOT _FONTNAME If you specify a different font using DOT_FONTNAME you can set the path where dot can find it using this tag This tag requires that the tag HAVE_DOT is set to YES
208. is to make the search engine available via a web server If you use doxysearch cgi this means making the CGI binary available from the web server i e be able to run it from a browser via an URL starting with http How to setup a web server is outside the scope of this document but if you for instance have Apache installed you could simply copy the doxysearch cgii file from doxygen s bin dir to the cgi bin of the Apache web server Read the apache documentation for details To test if doxysearch cgi is accessible start your web browser and point to URL to the binary and add test at the end http yoursite com path to cgi doxysearch cgi test You should get the following message Test failed cannot find search index doxysearch db If you use Internet Explorer you may be prompted to download a file which will then contain this message Since we didn t create or install a doxysearch db it is ok for the test to fail for this reason How to correct this is discussed in the next section Generated by Doxygen 13 1 External Indexing and Searching 71 Before continuing with the next section add the above URL without the test part to the SEARCHENGINE_URL tag in doxygen s configuration file SEARCHENGINE_URL http yoursite com path to cgi doxysearch cgi 13 1 2 1 Single project index To use the external search option make sure the following options are enabled in doxygen s configuration file SEARCHENGINE YE
209. ith grave oacute latin small letter o with acute 6 S ocirc latin small letter o with circumflex 6 otilde latin small letter o with tilde 6 Generated by Doxygen 190 HTML commands gouml divide goslash amp ugrave amp uacute amp ucirc amp uuml amp yacute amp thorn amp yuml amp fnof amp Alpha amp Beta amp Gamma amp amp Delta Epsilon amp Zeta amp Eta amp Theta amp lota amp Kappa amp Lambda amp Mu amp Nu amp Xi amp Omicron amp Pi amp Rho amp Sigma amp Tau amp Upsilon amp Phi amp Chi amp Psi amp Omega salpha latin small letter o with diaeresis 6 division sign latin small letter o with stroke latin small letter o slash latin small letter u with grave latin small letter u with acute latin small letter u with circumflex latin small letter u with diaeresis U latin small letter y with acute y latin small letter thorn p latin small letter y with diaeresis y latin small f with hook function florin f greek capital letter alpha A greek capital letter beta B greek capital letter gamma T greek capital letter delta A greek capital letter epsilon E greek capital letter zeta Z greek capital letter eta H greek capital letter theta O greek capital letter iota greek capital l
210. ivate class marker in C use privatesection See also sections memberof public protected and privatesection 23 32 privatesection Starting a section of private members in a way similar to the private class marker in C Indicates that the member documented by the comment block is private i e should only be accessed by other members in the same class See also sections memberof public protected and private 23 33 property qualified property name Indicates that a comment block contains documentation for a property either global or as a member of a class This command is equivalent to Mn typedef and War See also sections fn typedef and War 23 34 protected Indicates that the member documented by the comment block is protected e should only be accessed by other members in the same or derived classes Note that Doxygen automatically detects the protection level of members in object oriented languages This com mand is intended for use only when the language does not support the concept of protection level natively e g C PHP 4 For starting a section of protected members in a way similar to the protected class marker in C use protect edsection Generated by Doxygen 23 35 protectedsection 151 See also sections memberof public private and protectedsection 23 35 protectedsection Starting a section of protected members in a way similar to the pro
211. l be put into the correct output directory If the msc file name contains spaces you ll have to put quotes around it The second argument is optional and can be used to specify the caption that is displayed below the image This argument has to be specified between quotes even if it does not contain any spaces The quotes are stripped before the caption is displayed The third argument is also optional and can be used to specify the width or height of the image For a descriptionm of the possibilities see the paragraph Size indication with the image command See also section msc 23 135 diafile lt file gt caption lt sizeindication gt lt size gt Inserts an image made in dia from lt file gt into the documentation The first argument specifies the file name of the image doxygen will look for files in the paths or files that you specified after the DIAFILE_DIRS tag If the dia file is found it will be used as an input file dia The resulting image will be put into the correct output directory If the dia file name contains spaces you ll have to put quotes around it The second argument is optional and can be used to specify the caption that is displayed below the image This argument has to be specified between quotes even if it does not contain any spaces The quotes are stripped before the caption is displayed The third argument is also optional and can be used to specify the width or height of the ima
212. l other languages directly supported by doxygen i e Java IDL C PHP e If the grammar of X is somewhat different than you can write an input filter that translates X into some thing similar enough to C C for doxygen to understand this approach is taken for VB Object Pascal and Javascript see http www stack nl dimitri doxygen download html helpers If the grammar is completely different one could write a parser for X and write a backend that produces a similar syntax tree as is done by src scanner and also by src tagreader cpp while reading tag files 17 13 Help get the cryptic message input buffer overflow can t enlarge buffer because scanner uses REJECT This error happens when doxygen s lexical scanner has a rule that matches more than 256K of input characters in one go I ve seen this happening on a very large generated file gt 256K lines where the built in preprocessor converted it into an empty file with gt 256K of newlines Another case where this might happen is if you have lines in your code with more than 256K characters If you have run into such a case and want me to fix it you should send me a code fragment that triggers the message To work around the problem put some line breaks into your file split it up into smaller parts or exclude it from the input using EXCLUDE 17 14 When running make in the latex dir get TeX capacity exceeded Now what You can edit the texmf cfg file to increa
213. l searching you also need to update the search index by re running doxyindexer You could wrap the call to doxygen and doxyindexer together in a script to make this process easier 13 1 4 Programming interface Previous sections have assumed you use the tools doxyindexer and doxysearch cqgi to do the indexing and searching but you could also write your own index and search tools if you like For this 3 interfaces are important The format of the input for the index tool The format of the input for the search engine The format of the output of search engine The next subsections describe these interfaces in more detail 13 1 4 1 Indexer input format The search data produced by doxygen follows the Solr XML index message format The input for the indexer is an XML file which consists of one lt add gt tag containing multiple lt doc gt tags which in turn contain multiple lt field gt tags Here is an example of one doc node which contains the search data and meta data for one method lt add gt lt doc gt lt field name type gt function lt field gt lt field name name gt QXmlReader setDTDHandler lt field gt lt field name args gt QXm1DTDHandler handler 0 lt field gt lt field name tag gt qtools tag lt field gt lt field name url gt de df6 class_q_xml_reader html a0b24b1fe26a4c32a8032d68ee14d5dba lt field gt lt field name keywords gt setDTDHandler QXmlReader setDTDHandler QXmlReader lt field
214. latex pl or doxytemplate latex pl to get an idea on how to use DoxyModel pm Generated by Doxygen 206 Perl Module Output format Generated by Doxygen Chapter 28 Internationalization Support for multiple languages Doxygen has built in support for multiple languages This means that the text fragments generated by doxygen can be produced in languages other than English the default The output language is chosen through the configuration option OUTPUT_LANGUAGE in the configuration file with default name and known as Doxyfile Currently version 1 8 8 40 languages are supported sorted alphabetically Afrikaans Arabic Armenian Brazilian Portuguese Catalan Chinese Chinese Traditional Croatian Czech Danish Dutch English Esperanto Finnish French German Greek Hungarian Indonesian Italian Japanese En Korean En Latvian Lithuanian Mace donian Norwegian Persian Polish Portuguese Romanian Russian Serbian SerbianCyrillic Slovak Slovene Spanish Swedish Turkish Ukrainian and Vietnamese The table of information related to the supported languages follows It is sorted by language alphabetically The Status column was generated from sources and shows approximately the last version when the translator was updated Language Maintainer Contact address Status Afrikaans Johan Prinsloo johan at zippysnoek dot com 1 6 0 Arabic Moa
215. le sheets that are included after the standard style sheets created by doxygen Us ing this option one can overrule certain style aspects Doxygen will copy the style sheet files to the output directory Note The order of the extra style sheet files is of importance e g the last style sheet in the list overrules the setting of the previous ones in the list This tag requires that the tag GENERATE_LATEX is set to YES LATEX_EXTRA_FILES The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or other source files which should be copied to the LATEX_OUTPUT output directory Note that the files will be copied as is there are no commands or markers available This tag requires that the tag GENERATE_LATEX is set to YES PDF_HYPERLINKS lf the PDF_HYPERLINKS tag is set to YES the TEX that is generated is prepared for conversion to PDF using ps2pdf or pdflatex The PDF file will contain links just like the HTML output instead of page references This makes the output suitable for online browsing using a PDF viewer Gl The default value is YES This tag requires that the tag GENERATE_LATEX is set to Y Fl n Generated by Doxygen 22 10 Configuration options related to the RTF output 129 USE_PDFLATEX If the USE file directly from the IATEX files Set this option to Y1 The default value is Y _ PDF LAT ES EX tag is set to YES doxy gen
216. lly re placed with the name of the entity The Sname class The Sname widget The Sname fil is provides specifies contains represents a anand the ALWAYS_DETAILED_SEC lfthe ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to Y then doxygen will generate a detailed section even if there is only a brief description E u The default value is NO INLINE_INHERITED_MEMB If the INLINE_INHERITED_MEMB tag is set to YES doxygen will show all inherited members of a class in the documentation of that class as if those members were ordinary class members Constructors destructors and assignment operators of the base classes will not be shown The default value is NO FULL PATH_NAMES If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path before files name in the file list and in the header files If set to NO the shortest path that makes the file name unique will be used The default value is Y E n Generated by Doxygen 22 2 Project related configuration options 109 STRIP_FROM_PATH The STRIP_FROM_PATH tag can be used to strip a user defined part of the path Strip ping is only done if one of the specified strings matches the left hand part of the path The tag can be used to show relative paths in the file list If left blank the directory from which doxygen is run is used as the path to strip Note that you can specify absolute paths here
217. ly block 2 ers ime kk Re a RRA RE ee ada e eS 179 23 155 image lt format gt lt file gt caption lt sizeindication gt lt size gt 179 ls AE gos moe eso NN 180 Bo Oe MENON ad A ee A ds A EEE EEE AE a 180 SQ ADO MEMOS CIONES es 181 OA ccs eh ee Be Bent a ea ee ey te a ae Re a thd op a Oe Eek ee a ae 181 PO ABO WS WOES a cos a A dds Ge D ao ea das AA eh A a bap eR A ee 181 Serer GROMER ooe o A A Se ace A en ae ae ee ee E E Boe Ce ee Bee le 181 So A62 WDE ct ba ee oe ee ee a AE EE EEE Ee Eh eA E G 182 BAe UU se a ae a Bh ee a a a BG BE a a ee EM a eh de 182 A O Ae Go Ent aces Es a TG Ss See RE Gok ares ee A 182 PIM ais a eee eR eR ee Se ee A ee LR ee de 182 23 166 o A A a EO ee a a 182 o 2 4 4 BAA doa b eh amp ke amp ee OE A OR Oh eho Ee 183 POAGO We aed ey SR OG a Sa Be YR ES ee be 2 eee ae ee ee 183 UMN RR 183 PON IR 183 BO APUN ae RAE AN ei A A A AI a oe ee EE Se 183 OMe 2 ded Be de ce oh ee eek Sheela ee eee PB eee ee ote hed 183 PITSA a a SEA OR a e A ES BEE SEP a See ae Eee Se 183 Ate os RR ee ee ee 183 Pad os ee eee ee ee Ee A OR ee Be eA eee ek RO ae Ree da 183 POLIO otis fo et Ee EOE ROE Ee PE eee ees bob et He Se Se Se 184 EMS db oh BAe hee eee a OSS ESS RE heb be bes 184 A e 22 ead ae ye SR ER ae RGR Oh EE SR ee Se ee eee eS 184 24 HTML commands 185 25 XML commands 195 Generated by Doxygen X CONTENTS lll Developers Manual 197 26 Doxygen s internals 199 27 Perl Module Ou
218. mbination with SEPARATE_MEMBER_PAGES The default value is NO INLINE_SIMPLE_STRUCTS When the INLINE_SIMPLE_STRUCTS tag is set to YES structs classes and unions with only public data fields or simple typedef fields will be shown inline in the documentation of the scope in which they are defined i e file namespace or group documentation provided this scope is docu mented If set to NO structs classes and unions are shown on a separate page for HTML and Man pages or section for ATEX and RTF The default value is NO TYPEDEF_HIDES_STRUCT When TYPEDEF_HIDES_STRUCT tag is enabled a typedef of a struct union or enum is documented as struct union or enum with the name of the typedef So typedef struct TypeS TypeT will appear in the documentation as a struct with name TypeT When disabled the typedef will appear as a member of a file namespace or class And the struct will be named Types This can typically be useful for C code in case the coding convention dictates that all compound types are typedef ed and only the typedef is referenced never the tag name The default value is NO LOOKUP_CACHE_SIZE The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE This cache is used to resolve symbols given their name and scope Since this can be an expensive process and often the same symbol appears multiple times in the code doxygen keeps a cache of pre resolve
219. mented files The default value is YES This tag requires that the tag HAVE_DOT is set to YES CALL_GRAPH every global function or class method If the CALL_GRAPH tag is set to YES then doxygen will generate a call dependency graph for Note that enabling this option will significantly increase the time of a run So in most cases it will be better to enable call graphs for selected functions only using the callgraph command The default value is NO This tag requires that the tag HAVE_DOT is set to YES CALLER_GRAPH for every global function or class method If the CALLER_GRAPH tag is set to Y ES then doxygen will generate a caller dependency graph Note that enabling this option will significantly increase the time of a run So in most cases it will be better to enable caller graphs for selected functions only using the callergraph command The default value is NO This tag requires that the tag HAVE_DOT is set to YES GRAPHICAL HIERARCHY If the GRAPHICAL_HI erarchy of all classes instead of a textual one The default value is YES This tag requires that the tag HAVE_DOT is set to Y DIRECTORY_GRAPH ERARCHY tag is set to YES then doxygen will graphical hi Gl S If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the dependencies a directory has on other directories in a graphical way The dependency relations are determined by the include rel
220. mmand is encountered 23 77 pre description of the precondition Starts a paragraph where the precondition of an entity can be described The paragraph will be indented The text of the paragraph has no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent pre commands will be joined into a single paragraph Each precondition will start on a new line Alternatively one pre command may mention several preconditions The pre command ends when a blank line or some other sectioning command is encountered Generated by Doxygen 23 78 remark remark text 161 23 78 remark remark text Starts a paragraph where one or more remarks may be entered The paragraph will be indented The text of the paragraph has no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent remark commands will be joined into a single paragraph Each remark will start on a new line Alternatively one remark command may mention several remarks The remark command ends when a blank line or some other sectioning command is encountered 23 79 remarks remark text Equivalent to remark 23 80 result description of the result value Equivalent to return 23 81 return description of the return value Starts a return value description for a function The text of the paragraph has no special internal structure All visual
221. n 184 Special Commands 23 176 This command writes a pipe symbol to the output This character has to be escaped in some cases because it is used for Markdown tables 23 177 N This command writes two dashes to the output This allows writing two consecutive dashes to the output instead of one n dash character 23 178 This command writes three dashes to the output This allows writing three consecutuve dashes to the output instead of one m dash character Commands included for Qt compatibility The following commands are supported to remain compatible to the Qt class browser generator Do not use these commands in your own documentation annotatedclasslist classhierarchy define functionindex header headerfilelist inherit eN postheader Generated by Doxygen Chapte HTML Here is a list tags are tran passed on to lt A H r 24 commands of all HTML commands that may be used inside the documentation Note that although these HTML slated to the proper commands for output formats other than HTML all attributes of a HTML tag are the HTML output only the HREF and NAME attributes for the A tag are the only exception REF gt Starts a hyperlink if supported by the output format e lt A NAME gt Starts a named anchor if supported by the output format e lt A gt Ends a link or anchor lt B gt Starts a pi
222. n declaration or definition this command can and to avoid redundancy should be omitted A full function declaration including arguments should be specified after the fn command on a single line since the argument ends at the end of the line This command is equivalent to var typedef and property Warning Do not use this command if it is not absolutely needed since it will lead to duplication of information and thus to errors Example class Test public const char member char int throw std out_of_range y const char Test member char c int n throw std out_of_range x class Test brief Test class Details about Test fn const char Test member char c int n brief A member function param c a character param n an integer exception std out_of_range parameter is out of range return a character pointer 4 FF OF Generated by Doxygen 146 Special Commands See also sections War property and typedef 23 16 headerfile lt header file gt lt header name gt Intended to be used for class struct or union documentation where the documentation is in front of the definition The arguments of this command are the same as the second and third argument of class The lt header file gt name refers to the file that should be included by the application to obtain the definition of the class struct or union The lt header name gt argument c
223. n error message when you use the same group label more than once If you don t want doxygen to enforce unique labels then you can use addtogroup instead of defgroup It can be used exactly like defgroup but when the group has been defined already then it silently merges the existing documentation with the new one The title of the group is optional for this command so you can use xx addtogroup lt label gt Q Ir to add additional members to a group that is defined in more detail elsewhere Note that compound entities like classes files and namespaces can be put into multiple groups but members like variable functions typedefs and enums can only be a member of one group this restriction is in place to avoid ambiguous linking targets in case a member is not documented in the context of its class namespace or file but only visible as part of a group Doxygen will put members into the group whose definition has the highest priority e g An explicit ingroup overrides an implicit grouping definition via Conflicting grouping definitions with the same priority trigger a warning unless one definition was for a member without any explicit documentation The following example puts VarInA into group A and silently resolves the conflict for IntegerVariable by putting it into 46 Grouping group IntVariables because the second instance of IntegerVariable is undocumented kx x ingroup A extern int
224. nces Equivalent to sa Introduced for compatibility with Javadoc 23 86 short short description Equivalent to brief 23 87 since text This command can be used to specify since when version or time an entity is available The paragraph that follows since does not have any special internal structure All visual enhancement commands may be used inside the paragraph The since description ends when a blank line or some other sectioning command is encountered 23 88 test paragraph describing a test case Starts a paragraph where a test case can be described The description will also add the test case to a separate test list The two instances of the description will be cross referenced Each test case in the test list will be preceded by a header that indicates the origin of the test case 23 89 throw lt exception object gt exception description Synonymous exception Note the command throws is a synonym for this command See also section exception 23 90 throws lt exception object gt exception description Equivalent to throw 23 91 todo paragraph describing what is to be done Starts a paragraph where a TODO item is described The description will also add an item to a separate TODO list The two instances of the description will be cross referenced Each item in the TODO list will be preceded by a header that indicates the origin of the item 23 92 version version number Sta
225. ndex list of item created with refitem that each link to a named section 23 103 endsecreflist End an index list started with secreflist 23 104 subpage lt name gt text This command can be used to create a hierarchy of pages The same structure can be made using the defgroup and ingroup commands but for pages the subpage command is often more convenient The main page see mainpage is typically the root of hierarchy This command behaves similar as ref in the sense that it creates a reference to a page labeled lt name gt with the optional link text as specified in the second argument It differs from the ref command in that it only works for pages and creates a parent child relation between pages where the child page or sub page is identified by label lt name gt See the section and subsection commands if you want to add structure without creating multiple pages Note Each page can be the sub page of only one other page and no cyclic relations are allowed i e the page hierarchy must have a tree structure Here is an example mainpage A simple manual Some general info This manual is divided in the following sections subpage intro subpage advanced Advanced usage x page intro Introduction This page introduces the user to the topic Now you can proceed to the ref advanced advanced section Generated by Doxygen 166 Special Commands x Npage advanced Advan
226. nds 23 125 code lt word gt Starts a block of code A code block is treated differently from ordinary text It is interpreted as source code The names of classes and members and other documented entities are automatically replaced by links to the documentation By default the language that is assumed for syntax highlighting is based on the location where the code block was found If this part of a Python file for instance the syntax highlight will be done according to the Python syntax If it unclear from the context which language is meant for instance the comment is ina txt or markdown file then you can also explicitly indicate the language by putting the file extension typically that doxygen associated with the language in curly brackets after the code block Here is an example code py class Python pass endcode code cpp class Cpp endcode If the contents of the code block are in a language that doxygen cannot parse doxygen will just show the output as is You can make this explicit using unparsed or by giving some other extension that doxygen doesn t support e g code unparsed Show this as is please endcode code sh echo This is a shell script endcode See also section endcode and section verbatim 23 126 copydoc lt link object gt Copies a documentation block from the object specified by lt link object gt and pastes it at the location of the com mand This command c
227. ne dot graph dot digraph example node shape record fontname Helvetica fontsize 10 b label class B URL ref B c label class C URL ref 64 AE b gt c arrowhead open style dashed enddot Note that the classes in the above graph are clickable in the HTML output tt tk FF HF HOF Generated by Doxygen 174 Special Commands 23 131 msc caption lt sizeindication gt lt size gt Starts a text fragment which should contain a valid description of a message sequence chart See http www mcternan me uk mscgen for examples The text fragment ends with lendmsc The first argument is optional and can be used to specify the caption that is displayed below the image This argument has to be specified between quotes even if it does not contain any spaces The quotes are stripped before the caption is displayed The second argument is also optional and can be used to specify the width or height of the image For a descriptionm of the possibilities see the paragraph Size indication with the image command Note The text fragment should only include the part of the message sequence chart that is withinthemsc block You need to install the mscgen tool if you want to use this command Here is an example of the use of the msc command xx Sender class Can be used to send a command to the server The receiver will acknowledge the command by calling Ack msc Sender
228. nfiguration options related to source browsing o e es 117 22 7 Configuration options related to the alphabetical class index o o 119 22 8 Configuration options related to the HTML output o e eo 119 22 9 Configuration options related to the LaTeX output o e ee 127 22 10 Configuration options related to the RTF output o o e es 129 22 11 Configuration options related to the man page output o e e e 130 22 12 Configuration options related to the XML output 2 o e eo 130 22 13 Configuration options related to the DOCBOOK output o o e 2 131 22 14 Configuration options for the AutoGen Definitions output o o e 131 22 15 Configuration options related to the Perl module output o e e 131 22 16 Configuration options related to the preprocessor 2 2 0 ee es 132 22 17 Configuration options related to external references 0 0 e 133 22 18 Configuration options related to the dot tool 0 o e o e 133 2219 EXAMS se mera e O O aoe AI ee ee ee Ba eg Be 137 23 Special Commands 139 231 e A amp Ale wore a A GL aoe ah amp Ae hee a d ee a ka 139 232 aciogrop lt Nama Wie oe oo o Set ea bead eee eae Shad bey ROSS BOS 140 eae Wea 2 coe a e g eee ee Oe ee ee oe ER Ree ee
229. ng sections ingroup addtogroup and weakgroup 23 9 1 dir lt path fragment gt Indicates that a comment block contains documentation for a directory The path fragment argument should include the directory name and enough of the path to be unique with respect to the other directories in the project The STRIP_FROM_PATH option determines what is stripped from the full path before it appears in the output 23 10 enum lt name gt Indicates that a comment block contains documentation for an enumeration with name lt name gt If the enum is a member of a class and the documentation block is located outside the class definition the scope of the class should be specified as well If a comment block is located directly in front of an enum declaration the enum comment may be omitted Note The type of an anonymous enum cannot be documented but the values of an anonymous enum can Example class Test public enum TEnum Vall Val2 x Another enum with inline docs x enum AnotherEnum vl lt value 1 x V2 x lt value 2 y y x class Test The class description Nenum Test TEnum x A description of the enum type var Test TEnum Test Vall x The description of the first enum value 23 11 example lt file name gt Indicates that a comment block contains documentation for a source code example The name of the source file is lt file name gt The text of this f
230. nv and GNU make and strip e In order to generate a Makefile for your platform you need perl e The configure script assume the availability of standard UNIX tools such as sed date find uname mv cp cat echo tr cdand rm To take full advantage of doxygen s features the following additional tools should be installed e Qt Software s GUI toolkit Ot version 4 3 or higher but currently Qt 5 x is not supported This is needed to build the GUI front end doxywizard A ATEX distribution for instance TeX Live This is needed for generating IATEX Postscript and PDF output the Graph visualization toolkit version 1 8 10 or higher Needed for the include dependency graphs the graphical inheritance graphs and the collaboration graphs If you compile graphviz yourself make sure you do include freetype support which requires the freetype library and header files otherwise the graphs will not render proper text labels e For formulas or if you do not wish to use pdflatex the ghostscript interpreter is needed You can find it at www ghostscript com In order to generate doxygen s own documentation Python is needed you can find it at www python org Compilation is now done by performing the following steps 1 Unpack the archive unless you already have done that gunzip doxygen VERSION src tar gz uncompress the archive tar xf doxygen SVERSION src tar unpack it 2 Run the configure script sh configure The script
231. o produce a relative path to the root of the HTML output directory e g use Srelpath doxygen css to refer to the standard style sheet To cope with differences in the layout of the header and footer that depend on configuration settings the header can also contain special blocks that will be copied to the output or skipped depending on the configu ration Such blocks have the following form lt BEGIN BLOCKNAME gt Some context copied when condition BLOCKNAME holds lt END BLOCKNAME gt lt BEGIN BLOCKNAME gt Some context copied when condition BLOCKNAME does not hold lt END BLOCKNAME gt The following block names are supported DISABLE_INDEX Content within this block is copied to the output when the DISABLE_INDEX option is enabled so when the index is disabled GENERATE_TREEVIEW Content within this block is copied to the output when the GENERATE_TREEVI EW option is enabled SEARCHENGINE Content within this block is copied to the output when the SEARCHENGINE option is enabled PROJECT_NAME Content within the block is copied to the output when the PROJECT _NAME option is not empty PROJECT_NUMBER Content within the block is copied to the output when the PROJECT_NUMBER option is not empty PROJECT_BRIEF Content within the block is copied to the output when the PROJECT BRIEF option is not empty PROJECT_LOGO Content within the block is copied to the output when the PROJECT _LOGO option is not em
232. oc asses ek a a ee RA E a 413 Commentblocksih VHDL ss kie e ese a ee E RG a a ew a on N 10 10 11 13 14 14 15 15 16 16 16 16 16 17 CONTENTS 4 1 4 Comment blocks in Fortran 4 1 5 Comment blocks in Tcl 4 2 Anatomy of a comment block 5 Markdown 5 1 Standard Markdown 3 1 1 3 1 8 5 1 3 5 1 4 Sales 5 1 6 5 1 7 5 1 8 5 1 9 5 1 10 30 11 52 Markdown Extensions 201 5 2 2 523 5 2 4 5a Doxygen specifics 5 3 1 5 3 2 5 3 3 5 3 4 5 3 5 5 3 6 Dot 5 3 8 5 4 Debugging of problems 6 Lists 7 Grouping 7 1 Modules 7 2 Member Groups 7 3 Subpaging Paragraphs o ec cc bee ke res Headers is goie o a oe Ges Block quotes o USGS ia daa dee e ek ae Code Blocks 2 esha batt de haw eee Horizontal Rulers EMONASIS 1 Don oi ae ae Soe 8 oe a A COCR SHAMS cece a a Bee aca Ae ae Sek Mies bok Sd he Oe A 5 1 9 1 Inline Links 5 1 9 2 Reference Links WAGES o conta tank gon m ak de Automatic Linking Table of Contents TDS ir a Fenced Code Blocks Header Id Attributes Including Markdown files as pages Treatment of HTML blocks Code Block Indentation Emphasis MHS c ek ge a Re ee a Code Spans Limits Lists Extensions 0 Use of asterisks Limits on markup scope Generated by Doxygen CONTENTS lll 8 Including Formulas 51 9 Graphs and diagrams 53 10 Preprocessing 57 11 Automatic link generation 61 11 1 Link
233. oc set consists of a single directory with a special structure containing the HTM L files along with a precompiled search index A doc set can be embedded in Xcode the integrated development environment provided by Apple To enable the creation of doc sets set GENERATE_DOCSET to YES in the config file There are a couple of other doc set related options you may want to set After doxygen has finished you will find a Makefile in the HTML output directory Running make install on this Makefile will compile and install the doc set See this article for more info Advantage of this method is that it nicely integrates with the Xcode development environment allowing for instance to click on an identifier in the editor and jump to the corresponding section in the doxygen documentation Disadvantage is that it only works in combination with Xcode on MacOSX Generated by Doxygen 13 1 External Indexing and Searching 69 6 Qt Compressed Help If you develop for or want to install the Qt application framework you will get an application called Ot assistant This is a help viewer for Qt Compressed Help files qch To enable this feature set GENERATE_QHP to YES You also need to fill in the other Qt help related options such as QHP_NAMESPACE QHG_LOCATION QHP_VIRTUAL_FOLDER See this article for more info Feature wise the Qt compressed help feature is comparable with the CHM output with the additional advantage that compiling
234. ocument the file in which they are defined In other words there must at least be a x file x ora xx file x line in this file Here is an example of a C header named st ructcemd h that is documented using structural commands file structcmd h brief A Documented file Details Ndef MAX a b brief A macro that returns the maximum of la a and la b Details var typedef unsigned int UINT32 brief A type definition fora Details var int errno brief Contains the last error code warning Not thread safe fn int open const char pathname int flags brief Opens a file descriptor param pathname The name of the descriptor param flags Opening flags fn int close int fd brief Closes the file descriptor a fd param fd The descriptor to close fn size_t write int fd const char buf size_t count brief Writes a count bytes from a buf to the filedescriptor a fd param fd The descriptor to write to Generated by Doxygen 26 Documenting the code param buf The data buffer to write param count The number of bytes to write fn int read int fd char buf size_t count brief Read bytes from a file descriptor param fd The descriptor to read from param buf The buffer to read into param count The number of bytes to read define MAX a b a gt b a b typedef unsigned int UINT32 int errno
235. ocumentation that correspond to a documented class and contain at least one non lower case character will automatically be replaced by a link to the page containing the documentation of the class If you want to prevent that a word that corresponds to a documented class is replaced by a link you should put a in front of the word To link to an all lower case symbol use ref 11 3 Links to files All words that contain a dot that is not the last character in the word are considered to be file names If the word is indeed the name of a documented input file a link will automatically be created to the documentation of that file 11 4 Links to functions Links to functions are created if one of the following patterns is encountered 1 lt functionName gt lt argument list gt 2 lt functionName gt 62 Automatic link generation 3 lt functionName gt 4 lt className gt lt functionName gt lt argument list gt 5 lt className gt lt functionName gt lt argument list gt lt modifiers gt 6 lt className gt lt functionName gt 7 lt className gt lt functionName gt where n gt 0 Note 1 Function arguments should be specified with correct types i e fun const std string amp bool or to match any prototype Note 2 Member function modifiers like const and volatile are required to identify the target i e func int const and fun int tar
236. ocumented groups or modules e The directory element represents the layout of all pages generated for documented directories Each XML element within one of the above page elements represents a certain piece of information Some pieces can appear in each type of page others are specific for a certain type of page Doxygen will list the pieces in the order in which they appear in the XML file The following generic elements are possible for each page briefdescription Represents the brief description on a page detaileddescription Represents the detailed description on a page authorsection Represents the author section of a page only used for man pages memberdecl Represents the quick overview of members on a page member declarations This elements has child elements per type of member list The possible child elements are not listed in detail in the document but the name of the element should be a good indication of the type of members that the element represents memberdef Represents the detailed member list on a page member definition Like the memberdec1 ele ment also this element has a number of possible child elements The class page has the following specific elements includes Represents the include file needed to obtain the definition for this class inheritancegraph Represents the inheritance relations for a class Note that the CLASS_DIAGRAM option determines if the inheritance relation is a list of base and derived cl
237. of results returned min n hits first page the page number of the result p hits pages the total number of pages e items an array containing the search data per result Here is an example of how the element of the items array should look like type function name QDir entryInfoList const QString amp nameFilter int filterSpec DefaultFilter int sortSpec DefaultSor tag qtools tag url d5 d8d class_q_dir html a9439ea6b331957 38dbad981c4d050ef fragments Returns a lt span class h1 gt list lt span gt of QFileInfo objects for all files and directories pointer to a QFileInfoList The lt span class hl1 gt list lt span gt is owned by the QDir object to keep the entries of the lt span class h1l gt list lt span gt after a subsequent call to this E The fields for such an item have the following meaning e type the type of the item as found in the field with name type in the raw search data name the name of the item including the parameter list as found in the fields with name name and args in the raw search data e tag the name of the tag file as found in the field with name tag in the raw search data e url the name of the relative URL to the documentation as found in the field with name url in the raw search data fragments an array with O or more fragments of text containing words that have been search for These
238. on with name lt name gt The arguments are equal to the arguments of the class command See also section class 23 49 var variable declaration Indicates that a comment block contains documentation for a variable or enum value either global or as a member of a class This command is equivalent to fn property and typedef See also section fn property and typedef 23 50 vhdlflow title for the flow chart This is a VHDL specific command which can be put in the documentation of a process to produce a flow chart of the logic in the process Optionally a title for the flow chart can be given Generated by Doxygen 154 Special Commands Note Currently the flow chart will only appear in the HTML output 23 51 weakgroup lt name gt title Can be used exactly like laddtogroup but has a lower priority when it comes to resolving conflicting grouping definitions See also page Grouping and section addtogroup Section indicators 23 52 attention attention text Starts a paragraph where a message that needs attention may be entered The paragraph will be indented The text of the paragraph has no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent att ent ion commands will be joined into a single paragraph The attention command ends when a blank line or some other sectioning command is encountered 23 53 author list of auth
239. or class now derive from this adapter class The TranslatorAdapter_x_y_z class implements the new required methods If the new method replaces some similar but obsolete method s e g if the number of arguments changed and or the functionality of the older method was changed or enriched the TranslatorAdapter_x_y_z class may use the obsolete method to get the result which is as close as possible to the older result in the target language If it is not possible the result the default translation is obtained using the English translator which is by definition always up to date For example when the new trFile method with parameters to determine the capitalization of the first letter and the singular plural form was introduced to replace the older method trFiles without arguments the following code appeared in one of the translator adapter classes x This is the default implementation of the obsolete method used in the documentation of a group before the list of x links to documented files This is possibly localized virtual QCString trFiles return Files This is the localized implementation of newer equivalent using the obsolete method trFiles virtual QCString trFile bool first_capital bool singular if first_capital amp amp singular return trFiles possibly localized obsolete method else return english trFile first_capital singular The trFiles is not present in the Tran
240. ored in doc and can be retrieved at runtime Doxygen will extract such comments and assume they have to be represented in a preformatted way 1 package docstring 2 Documentation for this module 3 4 More details 5 num 6 7 def func 8 Documentation for a function 9 0 More details 1 win 2 pass 3 4 class PyClass 5 Documentation for a class 6 7 More details 8 win 9 20 def __init__ self 21 The constructor 22 self _memVar 0 23 24 def PyMethod self 25 Documentation for a method 26 pass 27 Generated by Doxygen 4 1 Special comment blocks 27 Note that in this case none of doxygen s special commands are supported There is also another way to document Python code using comments that start with These type of comment blocks are more in line with the way documentation blocks work for the other languages supported by doxygen and this also allows the use of special commands Here is the same example again but now using doxygen style comments 1 package pyexample 2 Documentation for this module 3 4 More details 5 6 Documentation for a function 7 8 More details 9 def func 0 pass 1 2 Documentation for a class 3 4 More details 5 class PyClass 6 7 The constructor 8 def __init_ self 9 self _memVar 0 20 21 Documentation for a method 22 param self The object pointer 23 def PyMethod self 24
241. orge o net projects winflexbison After installation and adding them to your path rename win_flex exe to flex exe and win_bison exe to bison exe Furthermore you have to install pyt hon version 2 6 or higher see http www python org These packages are needed during the compilation process if you use a GitHub snapshot of doxygen the official source releases come with pre generated sources Download doxygen s source tarball and put it somewhere e g use c tools Now start a new command shell and type cd c tools tar zxvf doxygen x y z src tar gz to unpack the sources you can obtain tar from e g http gnuwin32 sourceforge net packages html Alternatively you can use an unpack program like 7 Zip see http www 7 zip org or use the build in unpack feature of modern Windows systems Now your environment is setup to build doxygen Inside the doxygen x y z directory you will find a winbuild directory containing a Doxygen s1n file Open this file in Visual Studio You can now build the Release or Debug flavor of Doxygen by right clicking the project in the solutions explorer and selecting Build Note that compiling Doxywizard currently requires Qt version 4 see http qt project org Also read the next section for additional tools you may need to install to run doxygen with certain features enabled 2 5 Installing the binaries on Windows Doxygen comes as a self installing archive so installation is extremely s
242. ors Starts a paragraph where one or more author names may be entered The paragraph will be indented The text of the paragraph has no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent author commands will be joined into a single paragraph Each author description will start a new line Alternatively one aut hor command may mention several authors The aut hor command ends when a blank line or some other sectioning command is encountered Example Ir brief Pretty nice class details This class is used to demonstrate a number of section commands x author John Doe x author Jan Doe x version 4 la x date 1990 2011 x pre First initialize the system bug Not all memory is freed when deleting an object of this class x warning Improper use can crash your application copyright GNU Public License class SomeNiceClass 23 54 authors list of authors Equivalent to author 23 55 brief brief description Starts a paragraph that serves as a brief description For classes and files the brief description will be used in lists and at the start of the documentation page For class and file members the brief description will be placed at the Generated by Doxygen 23 56 bug bug description 155 declaration of the member and prepended to the detailed description A brief description may span several lines although it is advised to keep it
243. ory For the best results a browser that supports cascading style sheets CSS should be used I m using Mozilla Firefox Google Chrome Safari and sometimes IE8 IE9 and Opera to test the generated output Some of the features the HTML section such as GENERATE_TREEVIEW or the search engine require a browser that supports Dynamic HTML and Javascript enabled Generated by Doxygen 16 Getting Started 3 3 2 LaTeX output The generated IATEX documentation must first be compiled by a IATEX compiler I use a recent teTeX distribution for Linux and MacOSX and MikTex for Windows To simplify the process of compiling the generated documentation doxygen writes a Makefile into the Latex directory on the Windows platform also a make bat batch file is generated The contents and targets in the Makefile depend on the setting of USE_PDFLATEX If it is disabled set to NO then typing make in the latex directory a dvi file called refman dvi will be generated This file can then be viewed using xdvi or converted into a PostScript file refman ps by typing make ps this requires dvips To put 2 pages on one physical page use make ps_2on1 instead The resulting PostScript file can be send to a PostScript printer If you do not have a PostScript printer you can try to use ghostscript to convert PostScript into something your printer understands Conversion to PDF is also possible if you have installed the ghostscript interpreter just type make
244. pdf ormake pdf_2onl To get the best results for PDF output you should set the PDF_HYPERLINKS and USE_PDFLATEX tags to Y In this case the Makefile will only contain a target to build refman pdf directly E un 3 3 3 RTF output Doxygen combines the RTF output to a single file called refman rtf This file is optimized for importing into the Microsoft Word Certain information is encoded using so called fields To show the actual value you need to select all Edit select all and then toggle fields right click and select the option from the drop down menu 3 3 4 XML output The XML output consists of a structured dump of the information gathered by doxygen Each compound class namespaceffile has its own XML file and there is also an index file called index xml A file called combine xs1t XSLT script is also generated and can be used to combine all XML files into a single file Doxygen also generates two XML schema files index xsd for the index file and compound xsd for the compound files This schema file describes the possible elements their attributes and how they are structured i e it the describes the grammar of the XML files and can be used for validation or to steer XSLT scripts In the addon doxmlparser directory you can find a parser library for reading the XML output produced by doxygen in an incremental way see addon doxmlparser include doxmlint f h for the interface of the library 3 3 5 Man page o
245. pecify one or more wildcard patterns like cpp and h to filter out the source files in the directo ries If left blank the following patterns are tested c cc CXX cpp C x java ii 1XX 1pp 1 inl idl ddl odl h x hh hxx x hpp ht cs x d php php4 php5 phtml inc m markdown md mm dox py 90 f for tcl vhd vhdl ucf qsf asand js RECURSIVE The RECURSIVE tag can be used to specify whether or not subdirectories should be searched for input files as well The default value is NO EXCLUDE The EXCLUDE tag can be used to specify files and or directories that should be excluded from the IN PUT source files This way you can easily exclude a subdirectory from a directory tree whose root is specified with the INPUT tag Note that relative paths are relative to the directory from which doxygen is run EXCLUDE_SYMLINKS The EXCLUDE_SYMLINKS tag can be used to select whether or not files or directories that are symbolic links a Unix file system feature are excluded from the input The default value is NO EXCLUDE_PATTERNS If the value of the INPUT tag contains directories you can use the EXCLUDE_PATTE RNS tag to specify one or more wildcard patterns to exclude certain files from those directories Note that the wildcards are matched against the file with absolute path so to exclude all test
246. pes of nodes strings hashes and lists e Strings These are normal Perl strings They can be of any length can contain any character Their semantics depends on their location within the tree This type of node has no children e Hashes These are references to anonymous Perl hashes A hash can have multiple fields each with a different key The value of a hash field can be a string a hash or a list and its semantics depends on the key of the hash field and the location of the hash within the tree The values of the hash fields are the children of the node e Lists These are references to anonymous Perl lists A list has an undefined number of elements which are the children of the node Each element has the same type string hash or list and the same semantics depending on the location of the list within the tree As you can see the documentation contained in Sdoxydocs does not present any special impediment to be processed by a simple Perl script 27 4 Data structure You might be interested in processing the documentation contained in DoxyDocs pm without needing to take into account the semantics of each node of the documentation tree For this purpose Doxygen generates a Doxy Model pm file which contains a data structure describing the type and children of each node in the documentation tree The rest of this section is to be written yet but in the meantime you can look at the Perl scripts generated by Doxygen such as doxy
247. project_A searchdata xml project_B searchdata xml and then copy the resulting doxysearch db to the directory where also doxysearch cgi is located The searchdata xml file doesn t contain any absolute paths or links so how can the search results from multiple projects be linked back to the right documentation set This is where the EXTERNAL SEARCH_ID and EXTRA_SEARCH_MAPPINGS options come into play To be able to identify the different projects one needs to set a unique ID using EXTERNAL_SEARCH_ID for each project To link the search results to the right project you need to define a mapping per project using the EXTRA_SEAR CH_MAPPINGS tag With this option to can define the mapping from IDs of other projects to the relative location of documentation of those projects So for projects A and B the relevant part of the configuration file could look as follows project_A Doxyfile EXTERNAL _SEARCH_ID EXTRA_SEARCH_MAPPINGS A B project_B html oll Generated by Doxygen 72 Searching for project A and for project B project_B Doxyfile EXTERNAL _SEARCH_ID B EXTRA_SEARCH_MAPPINGS Il D Il project_A html with these settings projects A and B can share the same search database and the search results will link to the right documentation set 13 1 3 Updating the index When you modify the source code you should re run doxygen to get up to date documentation again When using externa
248. pstile right ceiling left floor apl downstile right floor left pointing angle bracket bra right pointing angle bracket ket lozenge black spade suit d black club suit shamrock de black heart suit valentine Y black diamond suit lt gt quotation mark APL quote ampersand amp less than sign lt greater than sign gt latin capital ligature OE CE latin small ligature oe latin capital letter S with caron latin small letter s with caron 8 latin capital letter Y with diaeresis Y modifier letter circumflex accent o Generated by Doxygen 194 HTML commands e tilde e ensp emsp e amp thinsp e amp Zwny e EZWJ e amp lrm e rlm e E ndash e amp mdash e amp lsquo e rsquo e sbquo e amp ldquo e amp rdquo e amp bdquo e amp dagger e amp Dagger e permil e amp lsaquo amp rsaquo euro Doxygen extensions e amp tm Sapos Finally to put invisible comments inside comment blocks HTML style comments can be used small tilde en space em space thin space zero width non joiner zero width joiner left to right mark right to left mark en dash em dash left single quotation mark right single quotation mark single low 9 quotation mark left double quotation mark right double quotation mark double low 9 quotation mark dagger do
249. pty TITLEAREA Content within this block is copied to the output when a title is visible at the top of each page This is the case if either PROJECT NAME PROJECT_BRIEF PROJECT _LOGO is filled in or if both DISABLE_INDEX and SEARCHENGINE are enabled This tag requires that the tag GENERATE_HTML is set to YES HTML FOOTER The HTML_FOOTER tag can be used to specify a user defined HTML footer for each generated HTML page If the tag is left blank doxygen will generate a standard footer See HTML_HEADER for more information on how to generate a default footer and what special commands can be used inside the footer See also section Doxygen usage for information on how to generate the default footer that doxygen normally uses This tag requires that the tag GENERATE_HTML is set to YES HTML STYLESHEET The HTML_STYLESHEET tag can be used to specify a user defined cascading style sheet that is used by each HTML page It can be used to fine tune the look of the HTML output If left blank doxygen will generate a default style sheet See also section Doxygen usage for information on how to generate the style sheet that doxygen normally uses Generated by Doxygen 22 8 Configuration options related to the HTML output 121 Note It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag as it is more robust and this tag HTML_STYLESHEET will in the future become obsolete T This tag re
250. put Warning The structure of headers and footers may change after upgrading to a newer version of doxygen so if you are using a custom header or footer it might not produce valid output anymore after upgrading 14 2 Changing the layout of pages In some cases you may want to change the way the output is structured A different style sheet or custom headers and footers do not help in such case The solution doxygen provides is a layout file which you can modify and doxygen will use to control what information is presented in which order and to some extent also how information is presented The layout file is an XML file The default layout can be generated by doxygen using the following command doxygen 1 optionally the name of the layout file can be specified if omitted DoxygenLayout xml will be used The next step is to mention the layout file in the config file LAYOUT_FILE DoxygenLayout xml To change the layout all you need to do is edit the layout file The toplevel structure of the file looks as follows lt doxygenlayout version 1 0 gt lt navindex gt lt navindex gt lt class gt lt class gt lt namespace gt lt namespace gt lt file gt lt file gt lt group gt lt group gt lt directory gt lt directory gt lt doxygenlayout gt Generated by Doxygen 78 Customizing the Output The root element of the XML file is doxygenlayout it has an attribute named version which will be
251. quires that the tag GENERATE_HTML is set to YES HTML_EXTRA_STYLESHEET The HTML_EXTRA_STYLESHEET tag can be used to specify additional user defined cascading style sheets that are included after the standard style sheets created by doxygen Using this option one can overrule certain style aspects This is preferred over using HTML_STYLESHEET since it does not replace the standard style sheet and is therefore more robust against future updates Doxygen will copy the style sheet files to the output directory T Note The order of the extra style sheet files is of importance e g the last style sheet in the list overrules the setting of the previous ones in the list Here is an example style sheet that gives the contents area a fixed width body background color CCC color black margin 0 div contents margin bottom 10px padding 12px margin left auto margin right auto width 960px background color white border radius 8px titlearea background color white hr footer display none footer background color AAA This tag requires that the tag GENERATE_HTML is set to YES HTML EXTRA FILES The HTML_EXTRA_FILES tag can be used to specify one or more extra images or other source files which should be copied to the HTML output directory Note that these files will be copied to the base HTML output directory Use the relpath marker in the HTML_HEADER
252. r lt Documented global var lc glob_varl with newline lt and continued line 78 with newline lt and continued line 79 lt and continued line 80 81 end of file 4 2 Anatomy of a comment block The previous section focused on how to make the comments in your code known to doxygen it explained the difference between a brief and a detailed description and the use of structural commands In this section we look at the contents of the comment block itself Doxygen supports various styles of formatting your comments The simplest form is to use plain text This will appear as is in the output and is ideal for a short description For longer descriptions you often will find the need for some more structure like a block of verbatim text a list or a simple table For this doxygen supports the Markdown syntax including parts of the Markdown Extra extension Markdown is designed to be very easy to read and write It s formatting is inspired by plain text mail Markdown works great for simple generic formatting like an introduction page for your project Doxygen also supports reading of markdown files directly See here for more details regards Markdown support For programming language specific formatting doxygen has two forms of additional markup on top of Markdown formatting 1 Javadoc like markup See here for a complete overview of all commands supported by doxygen 2 XML markup as specified in the C standard See h
253. r cl char c2 0 xx a public variable Details int publicVar kx a function variable Details int handler int a int b Similarly if one wishes the first sentence of a Qt style documentation block to automatically be treated as a brief description one may set QT_AUTOBRIEF to YES in the configuration file 4 1 1 3 Documentation at other places In the examples in the previous section the comment blocks were always located in front of the declaration or definition of a file class or namespace or in front or after one of its members Although this is often comfortable there may sometimes be reasons to put the documentation somewhere else For documenting a file this is even required since there is no such thing as in front of a file Doxygen allows you to put your documentation blocks practically anywhere the exception is inside the body of a function or inside a normal C style comment block The price you pay for not putting the documentation block directly before or after an item is the need to put a structural command inside the documentation block which leads to some duplication of information So in practice you should avoid the use of structural commands unless other requirements force you to do so Structural commands like all other commands start with a backslash or an at sign if you prefer JavaDoc style followed by a command name and one or more parameters For instance if you
254. r here bin export QTDIR SPWD If you have a csh like shell you should use setenv QTDIR S PWD instead of the export command above Now install doxygen as described above Bison problems Versions 1 31 to 1 34 of bison contain a bug that results in a compiler errors like this ce_parse cpp 348 member class CPPValue yyalloc yyvs with constructor not al lowed in union This problem has been solved in version 1 35 versions before 1 31 will also work Sun compiler problems It appears that doxygen doesn t work properly if it is compiled with Sun s C WorkShop Compiler cannot verify this myself as do not have access to a Solaris machine with this compiler With GNU compiler it does work and installing Sun patch 111679 13 has also been reported as a way to fix the problem when configuring with st atic got Undefined first referenced symbol in file dlclose usr lib libc a nss_deffinder o dlsym usr lib libc a nss_deffinder o dlopen usr lib libc a nss_deffinder o Manually adding Bdynamic after the target rule in Makefile doxygen will fix this TARGET S OBJECTS OBJMOC S LINK S LFLAGS o S TARGET OBJECTS OBJMOC LIBS Bdynamic GCC compiler problems Older versions of the GNU compiler have problems with constant strings containing characters with character codes larger than 127 Therefore the compiler will fail to compile some of the translator_xx h files A workaround if you are planning to use the
255. r of a derived class that reimplements it lt item gt List item Can only be used inside a lt list gt context lt list type type gt Starts a list supported types are bullet or number and table A list con sists of a number of lt item gt tags A list of type table is a two column table which can have a header lt listheader gt Starts the header of a list of type table lt para gt Identifies a paragraph of text lt param name paramName gt Marks a piece of text as the documentation for parameter param Name Similar to using param lt paramref name paramName gt Refers to a parameter with name paramName Similar to using a lt permission gt ldentifies the security accessibility of a member Ignored by doxygen lt remarks gt Identifies the detailed description lt returns gt Marks a piece of text as the return value of a function or method Similar to using return lt s cref member gt Refers to a member Similar to ref lt seealso cref member gt Starts a See also section referring to member Similar to using isa member 196 XML commands lt summary gt Identifies the brief description Similar to using brief lt term gt Part of a lt list gt command lt typeparam name paramName gt Marks a piece of text as the documentation for type parameter paramName Similar to using param lt typeparamref name paramName gt Refers to a parameter with name paramName
256. rated by Doxygen 23 115 skipline pattern 169 The internal pointer that is used to keep track of the current line in the example is set to the start of the line that contains the specified pattern or to the end of the example if the pattern could not be found See section dontinclude for an example 23 115 skipline pattern This command searches line by line through the example that was last included using include or dontinclude until it finds a line that contains the specified pattern It then writes the line to the output The internal pointer that is used to keep track of the current line in the example is set to the start of the line following the line that is written or to the end of the example if the pattern could not be found Note The command skipline pattern is equivalent to skip pattern line pattern See section dontinclude for an example 23 116 snippet lt file name gt block id Where the include command can be used to include a complete file as source code this command can be used to quote only a fragment of a source file In case this is used as lt file name gt the current file is taken as file to take the snippet from For example the putting the following command in the documentation references a snippet in file example cpp residing in a subdirectory which should be pointed to by EXAMPLE_PATH snippet snippets example cpp Adding a resource The text following the file name
257. rds use lt em gt multiple words lt em gt Generated by Doxygen 23 122 arg item description 171 23 122 larg item description This command has one argument that continues until the first blank line or until another arg is encountered The command can be used to generate a simple not nested list of arguments Each argument should start with a arg command Example Typing arg c AlignLeft left alignment arg c AlignCenter center alignment arg c AlignRight right alignment No other types of alignment are supported will result in the following text e AlignLeft left alignment e AlignCenter center alignment AlignRight right alignment No other types of alignment are supported Note For nested lists HTML commands should be used Equivalent to li 23 123 Ab lt word gt Displays the argument lt word gt using a bold font Equivalent to lt b gt word lt b gt To put multiple words in bold use lt b gt multiple words lt b gt 23 124 c lt word gt Displays the argument lt word gt using a typewriter font Use this to refer to a word of code Equivalent to lt tt gt word lt tt gt Example Typing This function returns c void and not c int will result in the following text This function returns void and not int Equivalent to p To have multiple words in typewriter font use lt tt gt multiple words lt tt gt Generated by Doxygen 172 Special Comma
258. re info Generated by Doxygen Chapter 7 Grouping Doxygen has three mechanisms to group things together One mechanism works at a global level creating a new page for each group These groups are called modules in the documentation The second mechanism works within a member list of some compound entity and is referred to as a member groups For pages there is a third grouping mechanism referred to as subpaging 7 1 Modules Modules are a way to group things together on a separate page You can document a group as a whole as well as all individual members Members of a group can be files namespaces classes functions variables enums typedefs and defines but also other groups To define a group you should put the defgroup command in a special comment block The first argument of the command is a label that should uniquely identify the group The second argument is the name or title of the group as it should appear in the documentation You can make an entity a member of a specific group by putting a ingroup command inside its documentation block To avoid putting ingroup commands in the documentation for each member you can also group members together by the open marker before the group and the closing marker after the group The markers can be put in the documentation of the group definition or in a separate documentation block Groups themselves can also be nested using these grouping markers You will get a
259. re still may be some remarks related to your source code In the case the translator is marked as almost up to date Namely the obsolete methods that are not used at all may be listed in the section for your language Simply remove their code and run the translator py again Also you will be informed when you forgot to change the base class of your translator class to some newer adapter class or directly to the Translator class If you do not have time to finish all the updates you should still start with the most radical approach as described above You can always change the base class to the translator adapter class that implements all of the not yet implemented methods If you prefer to update your translator gradually have a look at TranslatorEnglish the translatore _en h file Inside you will find the comments like new since 1 2 4 that separate always a number of methods that were implemented in the stated version Do implement the group of methods that are placed below Generated by Doxygen 212 Internationalization the comment that uses the same version numbers as your translator adapter class For example your translator class have to use the TranslatorAdapter_1_2_4 if it does not implement the methods below the comment new since 1 2 4 When you implement them your class should use a newer translator adapter Run the translator py script occasionally and give it your xx identification from translator_xx h to c
260. reate the translator report shorter also produced faster it will contain only the information related to your trans lator Once you reach the state when the base class should be changed to some newer adapter you will see the note in the translator report Warning Don t forget to compile doxygen to discover whether it is compilable The translator py does not check if everything is correct with respect to the compiler Because of that it may lie sometimes about the necessary base class The most obsolete language translators would lead to implementation of too complicated adapters Because of that doxygen developers may decide to derive such translators from the TranslatorEngli sh class which is by definition always up to date When doing so all the missing methods will be replaced by the English translation This means that not implemented methods will always return the English result Such translators are marked using the word obsolete You should read it really obsolete No guess about the last update can be done Often it is possible to construct better result from the obsolete methods Because of that the translator adapter classes should be used if possible On the other hand implementation of adapters for really obsolete translators brings too much maintenance and run time overhead Generated by Doxygen Index 183 183 183 amp 183 184 184 183 n 183 lt 183 gt 1
261. rect access to the documentation As a compromise the brief description could be placed before the declaration and the detailed description before the member definition 4 1 1 1 Putting documentation after members If you want to document the members of a file struct union class or enum it is sometimes desired to place the documentation block after the member instead of before For this purpose you have to put an additional lt marker in the comment block Note that this also works for the parameters of a function Here are some examples int var x lt Detailed description after the member x This block can be used to put a Qt style detailed documentation block after a member Other ways to do the same are int var lt Detailed description after the member x or int var lt Detailed description after the member lt or int var lt Detailed description after the member lt Most often one only wants to put a brief description after a member This is done as follows int var lt Brief description after the member Generated by Doxygen 22 Documenting the code or int var lt Brief description after the member For functions one can use the param command to document the parameters and then use in out in out to document the direction For inline documentation this is also possible by starting with the direc tion attribute e g void foo int v xx lt in docs for input p
262. reek small letter tau 7 greek small letter upsilon V greek small letter phi greek small letter chi x greek small letter psi y greek small letter omega greek small letter theta symbol 3 greek upsilon with hook symbol Y greek pi symbol bullet black small circle horizontal ellipsis three dot leader prime minutes feet double prime seconds inches overline spacing overscore fraction slash script capital P power set Weierstrass p 2 blackletter capital imaginary part 3 blackletter capital R real part symbol R Generated by Doxygen 192 HTML commands amp trade trade mark sign e amp alefsym alef symbol first transfinite cardinal XN amp larr leftwards arrow lt amp uarr upwards arrow rarr rightwards arrow gt amp darr downwards arrow harr left right arrow lt gt amp crarr downwards arrow with corner leftwards carriage return amp lArr leftwards double arrow lt e amp uArr upwards double arrow amp rArr rightwards double arrow gt amp dArr downwards double arrow J amp hArr left right double arrow e forall for all Y e amp part partial differential 0 e exist there exists 3 Sempty empty set null set diameter e nabla nabla backward difference V e amp isin element of e amp notin not an element of amp ni
263. removing ___ at tr ibute__ expressions from the input ENABLE _PREPROCESSING YES MACRO_EXPANSION YES EXPAND_ONLY_PREDEF YES PREDEFINED __attribute__ x For a more complex example suppose you have the following obfuscated code fragment of an abstract base class called TUnknown A reference to an IID x ifdef _ cplusplus define REFIID const IID amp else define REFIID const IID x endif x The IUnknown interface x DECLARE_INTERFACE IUnknown STDMETHOD HRESULT QueryInterface THIS_ REFIID iid void x ppv PURE STDMETHOD ULONG AddRef THIS PURE STDMETHOD ULONG Release THIS PURE y without macro expansion doxygen will get confused but we may not want to expand the REF IID macro because it is documented and the user that reads the documentation should use it when implementing the interface By setting the following in the config file ENABLE _PREPROCESSING YES MACRO_EXPANSION YES EXPAND_ONLY_PREDEF YES PREDEFINED DECLARE_INTERFACE name class name STDMETHOD result name virtual result name PURE 0 THIS_ THIS cplusplus we can make sure that the proper result is fed to doxygen s parser x A reference to an IID x define REFIID x The IUnknown interface class IUnknown virtual HRESULT QueryInterface REFIID iid void ppv 0 virtual ULONG AddRef 0 virtual ULONG Release 0 y Note that the PREDEFINED tag accept
264. respectively 4 1 1 Comment blocks for C like languages C C C Objective C PHP Java For each entity in the code there are two or in some cases three types of descriptions which together form the documentation for that entity a brief description and detailed description both are optional For methods and functions there is also a third type of description the so called in body description which consists of the concatenation of all comment blocks found within the body of the method or function Having more than one brief or detailed description is allowed but not recommended as the order in which the descriptions will appear is not specified As the name suggest a brief description is a short one liner whereas the detailed description provides longer more detailed documentation An in body description can also act as a detailed description or can describe a collection of implementation details For the HTML output brief descriptions are also used to provide tooltips at places where an item is referenced There are several ways to mark a comment block as a detailed description 1 You can use the JavaDoc style which consist of a C style comment block starting with two s like this kk X re DORU cas 2 or you can use the Qt style and add an exclamation mark after the opening of a C style comment block as shown in this example 20 Documenting the code x re EERE css In both cases the interm
265. rom graphviz to generate more advanced diagrams and graphs Graphviz is an open source cross platform graph drawing toolkit and can be foun If you have the dot tool in the path you can set HAVE_DOT to Y Doxygen uses the dot tool to generate the following graphs dathttp www graphviz org ES in the configuration file to let doxygen use it A graphical representation of the class hierarchy will be drawn along with the textual one Currently this feature is supported for HTML only Warning When you have a very large class hierarchy where many classes derive from a common base class the resulting image may become too big to handle for An inheritance graph will be generated for each documented relations This disables the generation of the built in class in some browsers class showing the direct and indirect inheritance heritance diagrams An include dependency graph is generated for each documented file that includes at least one other file This feature is currently supported for HTML and RTF only An inverse include dependency graph is also generated showing for a header file which other files include it A graph is drawn for each documented class and struct that the inheritance relations with base classes the usage relations with other structs and classes e class B then A has an arrow to B with m_a as label shows g class A has a member variable m_a of type e if CALL_GR
266. rote a GUI widget based on the Qt library it is still available at http sourceforge net projects qdbttabular but hasn t been updated since 2002 Qt had nicely generated documentation using an internal tool which they didn t want to release and wrote similar docs by hand This was a nightmare to maintain so wanted a similar tool looked at Doc but that just wasn t good enough it didn t support signals and slots and did not have the Qt look and feel had grown to like so started to write my own tool Generated by Doxygen 90 Frequently Asked Questions Generated by Doxygen Chapter 18 Troubleshooting 18 1 Known Problems If you have problems building doxygen from sources please read this section first Doxygen is nota real compiler it is only a lexical scanner This means that it can and will not detect errors in your source code Doxygen has a build in preprocessor but this works slightly different than the C preprocessor Doxygen assumes a header file is properly guarded against multiple inclusion and that each include file is standalone i e it could be placed at the top of a source file without causing compiler errors As long as this is true and this is a good design practice you should not encounter problems Since it is impossible to test all possible code fragments it is very well possible that some valid piece of C C code is not handled properly If you find such a piece ple
267. rts a paragraph where one or more version strings may be entered The paragraph will be indented The text of the paragraph has no special internal structure All visual enhancement commands may be used inside the Generated by Doxygen 23 93 warning warning message 163 paragraph Multiple adjacent version commands will be joined into a single paragraph Each version description will start on a new line Alternatively one version command may mention several version strings The version command ends when a blank line or some other sectioning command is encountered See section author for an example 23 93 warning warning message Starts a paragraph where one or more warning messages may be entered The paragraph will be indented The text of the paragraph has no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent warning commands will be joined into a single paragraph Each warning description will start on a new line Alternatively one warning command may mention several warnings The warning command ends when a blank line or some other sectioning command is encountered See section author for an example 23 94 xrefitem lt key gt heading list title text This command is a generalization of commands such as todo and bug It can be used to create user defined text sections which are automatically cross referenced between the place of occurrence
268. s can be nested A nested section is only enabled if all enclosing sections are enabled as well Generated by Doxygen 23 64 lendcond 157 See also sections endif ifnot else and elseif 23 64 endcond Ends a conditional section that was started by cond See also section cond 23 65 lendif Ends a conditional section that was started by if or ifnot For each if or ifnot one and only one matching endif must follow See also sections if and ifnot 23 66 exception lt exception object gt exception description Starts an exception description for an exception object with name lt exception object gt Followed by a description of the exception The existence of the exception object is not checked The text of the paragraph has no spe cial internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent exception commands will be joined into a single paragraph Each exception description will start on a new line The exception description ends when a blank line or some other sectioning command is encountered See section fn for an example 23 67 _ if section label Starts a conditional documentation section The section ends with a matching endif command A conditional section is disabled by default To enable it you must put the section label after the ENABLED_SECTIONS tag in the configuration file The section label can be a logical expression bu
269. s follows link name http www example com Optional title Instead of double quotes also single quotes or parenthesis can be used for the title part Once defined the link looks as follows link text link name If the link text and name are the same also link name or even link name can be used to refer to the link Note that the link name matching is not case sensitive as is shown in the following example I get 10 times more traffic from Google than from Yahoo or MSN google http google com Google yahoo http search yahoo com Yahoo Search msn http search msn com MSN Search Link definitions will not be visible in the output Like for inline links doxygen also supports ref inside a link definition myclass ref MyClass My class 5 1 10 Images Markdown syntax for images is similar to that for links The only difference is an additional before the link text Examples Caption text path to img jpg Caption text path to img jpg Image title Caption text img def img def img def path to img jpg Optional Title Also here you can use ref to link to an image Caption text ref image png img def img def ref image png Caption text The caption text is optional Generated by Doxygen 5 2 Markdown Extensions 37 5 1 11 Automatic Linking To create a link to an URL or e mail address Markdown supports the following s
270. s function like macro definitions like DECLARE_INTERFACE normal macro substitutions like PURE and THIS and plain defines like __ cplusplus Generated by Doxygen 59 Note also that preprocessor definitions that are normally defined automatically by the preprocessor like __ cplusplus have to be defined by hand with doxygen s parser this is done because these defines are often platform compiler specific In some cases you may want to substitute a macro name or function by something else without exposing the result to further macro substitution You can do this but using the operator instead of As an example suppose we have the following piece of code define QList QListT class QListT Then the only way to get doxygen interpret this as a class definition for class QList is to define PREDEFINED QListT QList Here is an example provided by Valter Minute and Reyes Ponce that helps doxygen to wade through the boilerplate code in Microsoft s ATL amp MFC libraries PREDEFINED DECLARE_INTERFACE name class name STDMETHOD result name virtual result name PURE 0 THIS_ THIS DECLARE_REGISTRY_RESOURCEID DECLARE_PROTECT_FINAL_CONSTRUCT DECLARE_AGGREGATABLE Class DECLARE_REGISTRY_RESOURCEID Id ECLARE_MESSAGE_MAP EGIN_MESSAGE_MAP x MX ESSAGE_MAP x COM_MAP x _COM_MAP x PROP_MAP x ROP_MAP x MSG_MAP x G_MAP x
271. s generated at the bottom the list will mention the files that were used to E The default value is YES SHOW_FILES Setthe SHOW_FIL ES tag to NO to disable the generation of the Files page This will remove the Files entry from the Quick Index and from the Folder Tree View if specified Gl The default value is YES SHOW_NAMESPACES Set the SHOW_NAM ESPAC ES tag to NO to disable the generation of the Namespaces page This will remove the Namespaces entry from the Quick Index and from the Folder Tree View if speci fied The default value is Y Gl S FILE_VERSION_FILTER The FIL doxygen should invoke to get F _VERSION_FILTER tag can be used to specify a program or script that the current version for each file typically from the version control system Doxygen will invoke the program by executing via popen the command command input file where command is the value of the FIL input file provided by doxygen Example of using a shell script F VERSION_FILTER tag and input file is the name of an Whatever the program writes to standard output is used as the file version as a filter for Unix FILE_VERSION_FILTER bin sh versionfilter sh Generated by Doxygen 22 4 Configuration options related to warning and progress messages 115 Example shell script for CVS bin sh cvs status 1 sed n s Working re
272. s to web pages and mailaddresses 2 ee et 61 A gt bt PR RoR Re ee eh GAGS See PEER RE oe Sb 61 TU IRSE on bcos ee Ow a Be EERE AS E pe eee eae ew ees 61 Ma IKE TO TUINCTIONS oe bk ore Ae a ee Ee E ee gp ee G 61 11 8 Links ta otermenbers c c cso oaa asia daw bbb eade tet ates tedebdau be hee 62 WG pedel os cr ean A wa le Gea RO a de A Ea be ee Al a A 64 12 Output Formats 65 13 Searching 67 13 1 External Indexing and Searching o e 69 SAA IPPO lt a A A A A A Pe A e a 69 ILL COMING oi ce0 eae ee ca a a A AE E 70 WALZA gl Project INGE sone ss ke ak hed eR ee aoe ae ae ae dw 71 13122 Muhi project ingek s s ee hehe Shh PRE RED 71 13 1 Updating ihe ihgeX os e ce 46 84 we hae ee ee ER Re ee ee E 72 131 4 Programming wenmace csi 8 aeos ag ke ae he oe a ee a a a O a 72 13 1 4 1 Indexerinputformat e kedi tind titta 72 144 2 Search WAL TOME 0000 ns a a AA 73 13 1 4 3 Search results format o es 73 14 Customizing the Output 75 14 1 Minot TWeakS i osaera a a a a e ae ee we ee ee 75 MAT WINE dee ee a he ir A Re sI ee ae h 75 E 6 8 23 8 ee aR eed Be ea Pee Be bi bet y 75 141 8 Dinamie COME lt o oc a bog ds Roe anata ec ee ae Ba a A ace ke a d 76 14 1 4 Header Footer and Stylesheet changes 2 2 0000 eee eee 76 14 2 Changing the layout of pages a 77 143 Using ite AMLouIOU cies a Ee ep a ee a Ee ee le Ee a 80 15 Custom Commands 81
273. s_b h ifndef _DIAGRAMS_B_H define _DIAGRAMS_B_H class A class B public A m_a fendif diagrams_c h ifndef _DIAGRAMS_C_H define _DIAGRAMS_C_H include diagrams_c h class D class C public A public D m_d endif Generated by Doxygen 55 diagrams_d h ifndef _DIAGRAM_D_H define _DIAGRAM_D_H include diagrams_a h include diagrams_b h class C class D virtual protected A private B public tfendif diagrams_e h ifndef _DIAGRAM_E_H define _DIAGRAM_E_H include diagrams_d h class E public D fendif C m_c y Generated by Doxygen 56 Graphs and diagrams Generated by Doxygen Chapter 10 Preprocessing Source files that are used as input to doxygen can be parsed by doxygen s built in C preprocessor By default doxygen does only partial preprocessing That is it evaluates conditional compilation statements like 1 and evaluates macro definitions but it does not perform macro expansion So if you have the following code fragment define VERSION 200 define CONST_STRING const char if VERSION gt 200 static CONST_STRING version 2 xx else static CONST_STRING version 1 xx fendif Then by default doxygen will feed the following to its parser define VERSION define CONST_STRING static CONST_STRING version 2 xx You can disable all preprocessing by setting ENABLE _PREPROCESSING to NO in the configura
274. se the default values of the various buffers and then run texconfig init 17 15 Why are dependencies via STL classes not shown in the dot graphs Doxygen is unaware of the STL classes unless the option BUILTIN_STL_SUPPORT is turned on 17 16 Ihave problems getting the search engine to work with PHP5 and or windows Please read this for hints on where to look 17 17 Can I configure doxygen from the command line Not via command line options but doxygen can read from stdin so you can pipe things through it Here s an ex ample how to override an option in a configuration file from the command line assuming a UNIX like environment cat Doxyfile echo PROJECT_NUMBER 1 0 doxygen For Windows the following would do the same type Doxyfile echo PROJECT_NUMBER 1 0 doxygen exe Generated by Doxygen 17 18 How did doxygen get its name 89 If multiple options with the same name are specified then doxygen will use the last one To append to an existing option you can use the operator 17 18 How did doxygen get its name Doxygen got its name from playing with the words documentation and generator documentation gt docs gt dox generator gt gen At the time was looking into 1ex and yacc where a lot of things start with yy so the y slipped in and made things pronounceable the proper pronouncement is Docs ee gen so with a long e 17 19 What was the reason to develop doxygen once w
275. search page for which to return the results Each page has n values cb the name of the callback function used for JSON with padding see the next section From the complete list of search results the range nxp nx p 1 1 should be returned Here is an example of how a query looks like http yoursite com path to cgi doxysearch cgi q list amp n 20 amp p 1 amp cb dummy It represents a query for the word list q list requesting 20 search results n 20 starting with the result number 20 p 1 and using callback dummy cb dummy Note The values are URL encoded so they have to be decoded before they can be used 13 1 4 3 Search results format When invoking the search engine as shown in the previous subsection it should reply with the results The format of the reply is JSON with padding which is basically a javascript struct wrapped in a function call The name of function should be the name of the callback as passed with the cb field in the query With the example query as shown the previous subsection the main structure of the reply should look as follows dummy Whats 21795 MEI ESE 520i count 20 page 1 pages 9 query List items TE The fields have the following meaning Generated by Doxygen 74 Searching hits the total number of search results could be more than was requested e first the index of first result returned min n x p hits e count the actual number
276. sers dimitri doxygen examples diagrams cfg Users dimitri doxygen Doxyfile Figure 21 7 File menu Open This is the same as the Load button in the main window and allows to open a configuration file from disk Save as This is the same as the Save button in the main window and can be used to save the current configu ration settings to disk Recent configurations Allow to quickly load a recently saved configuration Set as default Stores the current configuration settings as the default to use next time the GUI is started You will be asked to confirm the action Reset Restores the factory defaults as the default settings to use You will be asked to confirm the action Generated by Doxygen Chapter 22 Configuration 22 1 Format A configuration file is a free form ASCII text file with a structure that is similar to that of a Makefile with the default name Doxyfile ltis parsed by doxygen The file may contain tabs and newlines for formatting purposes The statements in the file are case sensitive Comments may be placed anywhere within the file except within quotes Comments beginning with two hash characters are kept when updating the configuration file and are placed in front of the TAG are in front of Comments beginning with two hash characters at the end of the configuration file are also kept and placed at the end of the file Comments begin with the hash character and ends at the end of the line
277. set to YES then the references to source code will point to the HTML generated by the htags 1 tool instead of doxygen built in source browser The htags tool is part of GNU s global source tagging system see http www gnu org software global global e html You will need version 4 8 6 or higher To use it do the following Install the latest version of global Enable SOURCE_BROWSER and USE_HTAGS in the config file Make sure the INPUT points to the root of the source tree P 0O NY gt Run doxygen as normal Doxygen will invoke ht ags and that will in turn invoke gt ags so these tools must be available from the command line i e in the search path The result instead of the source browser generated by doxygen the links to source code will now point to the output of htags The default value is NO This tag requires that the tag SOURCE_BROWSER is set to Y GI S VERBATIM_HEADERS lf the VERBATIM_HEADERS tag is set the YES then doxygen will generate a verbatim copy of the header file for each class for which an include is specified Set to NO to disable this See also Section class The default value is YES CLANG_ASSISTED_PARSING lf the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the clang parser for more accurate parsing at the cost of reduced performance This can be particularly helpful with template rich C code for which doxygen s built in parser lacks the necessary
278. slatorEnglish class because it was removed as obsolete How ever it was used until now and its call was replaced by trFile true false in the doxygen source files Probably many language translators implemented the obsolete method so it perfectly makes sense to use the same language dependent result in those cases The TranslatorEnglish does not implement the old method It derives from the abstract Translator class On the other hand the old translator for a different language does not implement the new trFile method Because of that it is derived from another base class TranslatorAdapter_x_y_z The TranslatorAdapter_x_y_z class has to implement the new required trFile method However the translator adapter would not be compiled if the trFiles method was not implemented This is the reason for implementing the old method in the translator adapter class using the same code that was removed from the TranslatorEnglish The simplest way would be to pass the arguments to the English translator and to return its result Instead the adapter uses the old trFiles in one special case when the newtrFile true false is called This is the mostly used case at the time of introducing the new method see above While this may look too complicated the technique allows the developers of the core sources to change the Translator interface while the users may not even notice the change Of course when the new trF ile is used
279. stions Alternatively you can put all members in a group or module using the ingroup command and then document the group using a comment block containing the defgroup command For member functions or functions that are part of a namespace you should document either the class or names pace 17 4 How can make doxygen ignore some code fragment The new and easiest way is to add one comment block with a cond command at the start and one comment block with a endcond command at the end of the piece of code that should be ignored This should be within the same file of course But you can also use Doxygen s preprocessor for this If you put ifndef DOXYGEN_SHOULD_SKIP_THIS code that must be skipped by Doxygen endif DOXYGEN_SHOULD_SKIP_THIS around the blocks that should be hidden and put PREDEFINED DOXYGEN_SHOULD_SKIP_THIS in the config file then all blocks should be skipped by Doxygen as long as ENABLE_PREPROCESSING is set to YES 17 5 How can change what is after the lt code gt include lt code gt in the class docu mentation In most cases you can use STRIP_FROM_INC_PATH to strip a user defined part of a path You can also document your class as follows class MyClassName include h path include h Docs for MyClassName To make doxygen put include lt path include h gt in the documentation of the class MyClassName regardless of the name of the actual header file in which th
280. subsection of a related page documentation block and not in other docu mentation blocks Generated by Doxygen 23 109 paragraph lt paragraph name gt paragraph title 167 See also Section page for an example of the section command and subsection command 23 109 paragraph lt paragraph name gt paragraph title Creates a named paragraph with name lt paragraph name gt The title of the paragraph should be specified as the second argument of the paragraph command Warning This command only works inside a subsubsection of a related page documentation block and not in other documentation blocks Commands for displaying examples 23 110 A dontinclude lt file name gt This command can be used to parse a source file without actually verbatim including it in the documentation as the include command does This is useful if you want to divide the source file into smaller pieces and add documen tation between the pieces Source files or directories can be specified using the EXAMPLE_PATH tag of doxygen s configuration file The class and member declarations and definitions inside the code fragment are remembered during the parsing of the comment block that contained the dont include command For line by line descriptions of source files one or more lines of the example can be displayed using the line skip skipline and until commands An internal pointer is used for these commands The dont include command sets t
281. t With the lt header name gt argument you can also specify how the include statement should look like by adding either quotes or sharp brackets around the name Sharp brackets are used if just the name is given Note that the last two arguments can also be specified using the headerfile command Example A dummy class class Test y class Test class h inc class h x brief This is a test class Some details about the Test class 23 7 def lt name gt Indicates that a comment block contains documentation for a define macro Example file define h brief testing defines This is to test the documentation of defines x def MAX x y Computes the maximum of a x and a y Computes the absolute value of its argument a x define ABS x x gt 0 x x define MAX x y x gt y x y define MIN x y x gt y y x lt Computes the minimum of Na x and la y Generated by Doxygen 23 8 defgroup lt name gt group title 143 23 8 defgroup lt name gt group title Indicates that a comment block contains documentation for a group of classes files or namespaces This can be used to categorize classes files or namespaces and document those categories You can also use groups as members of other groups thus building a hierarchy of groups The lt name gt argument should be a single word identifier See also page Groupi
282. t are included in the documentation see the dotfile command This tag requires that the tag HAVE_DOT is set to YES MSCFILE_DIRS The MSCFILE_DIRS tag can be used to specify one or more directories that contain msc files that are included in the documentation see the mscfile command DIAFILE_DIRS The DIAFILE_DIRS tag can be used to specify one or more directories that contain dia files that are included in the documentation see the diafile command PLANTUML_JAR_PATH When using plantuml the PLANTUML_JAR_PATH tag should be used to specify the path where java can find the plantum1 jar file If left blank it is assumed PlantUML is not used or called during a preprocessing step Doxygen will generate a warning when it encounters a startuml command in this case and will not generate output for the diagram PLANTUML_INCLUDE_PATH When using plantuml the specified paths are searched for files specified by the include statement in a plantuml block DOT_GRAPH MAX NODES The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes that will be shown in the graph If the number of nodes in a graph becomes larger than this value doxygen will truncate the graph which is visualized by representing a node as a red box Note that doxygen if the number of direct children of the root node in a graph is already larger than DOT_GRAPH_MAX_NO DES then the graph will not be shown at all Also note that the size of a grap
283. t in a full expanded tree by default Minimum value 0 maximum value 9999 default value 100 This tag requires that the tag GENERATE_HTML is set to YES GENERATE_DOCSET If the GENERATE_DOCSET tag is set to YES additional index files will be generated that can be used as input for Apple s Xcode 3 integrated development environment introduced with OSX 10 5 Leopard To create a documentation set doxygen will generate a Makefile in the HTML output directory Running make will produce the docset in that directory and running make install will install the docset in Library Developer Shared Documentation DocSets so that Xcode will find it at startup See http developer apple com tools creatingdocsetswithdoxygen html for more information The default value is NO This tag requires that the tag GENERATE_HTML is set to YES DOCSET_FEEDNAME This tag determines the name of the docset feed A documentation feed provides an um brella under which multiple documentation sets from a single provider such as a company or product suite can be grouped The default value is Doxygen generated docs This tag requires that the tag GENERATE_DOCSET is set to YES DOCSET_BUNDLE_ID This tag specifies a string that should uniquely identify the documentation set bundle This should be a reverse domain name style string e g com mycompany MyDocSet Doxygen will append docset to the name The default value is org
284. t the project you are documenting Project name Project version or id Specify the directory to scan for source code Source code directory Select Scan recursively Specify the directory where doxygen should put the generated documentation Destination directory Select ox Cancel Figure 21 2 Wizard dialog Project settings The fields in the project tab speak for themselves Once doxygen has finished the Destination directory is where to look for the results Doxygen will put each output format in a separate sub directory Generated by Doxygen 101 Project Output Diagrams Select the desired extraction mode Documented entities only All entities FT Include cross referenced source code in the output Select programming language to optimize the results for Optimize for C output Optimize for Java output O Optimize for C output GOD a Figure 21 3 Wizard dialog Mode of operating The mode tab allows you to select how doxygen will look at your sources The default is to only look for things that have been documented You can also select how doxygen should present the results The latter does not affect the way doxygen parses your source code Generated by Doxygen 102 Doxywizard usage Output format s to generate M HTML plain HTML with frames and a navigation tree prepare for compr
285. t the tag USE_MATHJAX is set to YES MATHJAX_EXTENSIONS The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax ex tension names that should be enabled during MathJax rendering For example MATHJAX_EXTENSIONS TeX AMSmath TeX AMSsymbols This tag requires that the tag USE_MATHJAX is set to YES MATHJAX_CODEFILE The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces of code that will be used on startup of the MathJax code See the MathJax site for more details As an example to disable the Math Renderer menu item in the Math Settings menu of MathJax MATHJAX_CODEFILE disableRenderer js with in the file disableRenderer js MathJax Hub Config menuSettings showRenderer false This tag requires that the tag USE_MATHJAX is set to YES SEARCHENGINE When the SEARCHENGINE tag is enabled doxygen will generate a search box for the HTML output The underlying search engine uses javascript and DHTML and should work on any modern browser Note that when using HTML help GENERATE_HTMLHELP Qt help GENERATE_QHP or docsets G ENERATE_DOCSET there is already a search function so this one should typically be disabled For large projects the javascript based search engine can be slow then enabling SERVER_BASED_SEARCH may provide a better solution It is possible to search using the keyboard to jump to the search box use lt access key gt S w
286. t to start with a code block the minimal amount of indentation of the whole comment block is used as a reference In most cases this difference does not result in different output Only if you play with the indentation of paragraphs the difference is noticeable text text text code Generated by Doxygen 40 Markdown In this case Markdown will put the word code in a code block whereas Doxygen will treat it as normal text since although the absolute indentation is 4 the indentation with respect to the previous paragraph is only 1 Note that list markers are not counted when determining the relative indent Ie Iteml More text for iteml 2 Item2 Code block for item2 For Item1 the indentation is 4 when treating the list marker as whitespace so the next paragraph More text starts at the same indentation level and is therefore not seen as a code block 5 3 4 Emphasis limits Unlike standard Markdown doxygen will not touch internal underscores or stars so the following will appear as is a_nice_identifier Furthermore a x or _ only starts an emphasis if e it is followed by an alphanumerical character and e it is preceded by a space newline or one the following characters lt An emphasis ends if e it is not followed by an alphanumerical character and e it is not preceded by a space newline or one the following characters lt Lastly the span of the emphasis is limited to a single para
287. te numbered lists by using markers iteml item2 5 3 7 Use of asterisks Special care has to be taken when using s in a comment block to start a list or make a ruler Doxygen will strip off any leading x s from the comment before doing Markdown processing So although the following works fine x A list x x itemi x item2 When you remove the leading s doxygen will strip the other stars as well making the list disappear Rulers created with s will not be visible at all They only work in Markdown files 5 3 8 Limits on markup scope To avoid that a stray or _ matches something many paragraphs later and shows everything in between with emphasis doxygen limits the scope of a x and _ to a single paragraph For a code span between the starting and ending backtick only two new lines are allowed Also for links there are limits the link text and link title each can contain only one new line the URL may not contain any newlines 5 4 Debugging of problems When doxygen parses the source code it first extracts the comments blocks then passes these through the Mark down preprocessor The output of the Markdown preprocessing consists of text with special commands and HTML commands A second pass takes the output of the Markdown preprocessor and converts it into the various output formats Generated by Doxygen 42 Markdown During Markdown preprocessing no errors are produced Anything that does not fit the
288. tead of using pre rendered bitmaps Use this if you do not have IATEX installed or if you want to formulas look prettier in the HTML out put When enabled you may also need to install MathJax separately and configure the path to it using the MATHJAX_RELPATH option The default value is NO This tag requires that the tag GENERATE_HTML is set to Y GI S MATHJAX_FORMAT When MathJax is enabled you can set the default output format to be used for the MathJax output See the MathJax site for more details Possible values are HTML CSS which is slower but has the best compatibility Nat iveMML i e MathML and SVG The default value is HTML CSS This tag requires that the tag USE_MATHJAX is set to YES MATHJAX_RELPATH When MathJax is enabled you need to specify the location relative to the HTML output directory using the MATHJAX_RELPATH option The destination directory should contain the MathJax js script For instance if the math jax directory is located at the same level as the HTML output directory then MATHJAX_RELPATH should be mathjax The default value points to the MathJax Content Delivery Network so you can quickly see the result without installing MathJax However it is strongly recommended to install a local copy of MathJax from http www mathjax org before deployment Generated by Doxygen 126 Configuration The default value is http cdn mathjax org mathjax latest This tag requires tha
289. tected class marker in C Indicates that the member documented by the comment block is protected i e should only be accessed by other members in the same or derived classes See also sections memberof public private and protected 23 36 protocol lt name gt lt header file gt lt header name gt Indicates that a comment block contains documentation for a protocol in Objective C with name lt name gt The arguments are equal to the class command See also section class 23 37 public Indicates that the member documented by the comment block is public i e can be accessed by any other class or function Note that Doxygen automatically detects the protection level of members in object oriented languages This com mand is intended for use only when the language does not support the concept of protection level natively e g C PHP 4 For starting a section of public members in a way similar to the public class marker in C use publicsection See also sections memberof protected private and publicsection 23 38 publicsection Starting a section of public members in a way similar to the public class marker in C Indicates that the member documented by the comment block is public i e can be accessed by any other class or function See also sections memberof protected private and public 23 39 pure Indicates that the member documented by the comment block is pure virtual
290. ted by fully qualified names including namespaces If set to NO the class list will be sorted only by class name not including the namespace part Generated by Doxygen 114 Configuration Note This option is not very useful if HIDE_SCOPE_NAMES is set to Y This option applies only to The default value is NO ES the class list not to the alphabetical list STRICT_PROTO_MATCHING If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper type resolution of all parameters of a function it will reject a match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match By disabling STRICT_PROTO_MATCHING doxygen will still accept a match between prototype and implementation in such cases The default value is NO EN h GENERATE_TODOLIST TheG ERATE_ TODOLIST tag can be used to enable Y ES or disable NO the todo list This list is created by putting todo commands in the documentation The default value is Y GENERATE_TESTLIST TheG ES EN h ERATE I ESTLIST tag can be used to enable YES or disable NO the test list This list is created by putting West commands in the documentation The default value is Y ES GENERATE_BUGLIST The GENERATE EN __BUGLIST tag
291. text of the paragraph has no special internal structure All visual enhancement commands may be used inside the paragraph Multiple adjacent date commands will be joined into a single paragraph Each date description will start on a new line Alternatively one date command may mention several dates The date command ends when a blank line or some other sectioning command is encountered See section author for an example 23 60 deprecated description Starts a paragraph indicating that this documentation block belongs to a deprecated entity Can be used to describe alternatives expected life span etc 23 61 details detailed description Just like brief starts a brief description details starts the detailed description You can also start a new paragraph blank line then the det ails command is not needed 23 62 else Starts a conditional section if the previous conditional section was not enabled The previous section should have been started with a if ifnot or elseif command See also if ifnot elseif endif 23 63 elseif section label Starts a conditional documentation section if the previous section was not enabled A conditional section is disabled by default To enable it you must put the section label after the ENABLED SECTIONS tag in the configuration file The section label can be a logical expression build of section names round brackets amp amp AND OR and NOT Conditional block
292. the QCH file is not limited to Windows Disadvantage is that it requires setting up a Qt 4 5 or better for each user or distributing the Qt help assistant along with the documentation which is complicated by the fact that it is not available as a separate package at this moment 7 Eclipse Help Plugin If you use eclipse you can embed the documentation generated by doxygen as a help plugin It will then appear as a topic in the help browser that can be started from Help contents in the Help menu Eclipse will generate a search index for the documentation when you first search for a keyword To enable the help plugin set GENERATE _ECLIPSEHELP to YES and define a unique identifier for your project via ECLIPSE_DOC_ID i e GENERATE_ECLIPSEHELP ECLIPSE_DOC_ID YES com yourcompany yourproject then create the com yourcompany yourproject directory so with the same name as the value of ECLI PSE_DOC_ID inthe plugin directory of eclipse and after doxygen completes copy to contents of the help output directory to the com yourcompany yourproject directory Then restart eclipse to make let it find the new plugin The eclipse help plugin provides similar functionality as the Qt compressed help or CHM output but it does require that Eclipse is installed and running 13 1 External Indexing and Searching 13 1 1 Introduction With release 1 8 3 doxygen provides the ability to search through HTML using an external indexing tool
293. the box has a dashed border this indicates virtual inheritance A solid arrow indicates public inheritance A dashed arrow indicates protected inheritance A dotted arrow indicates private inheritance The elements in the graphs generated by the dot tool have the following meaning A white box indicates a class or struct or file A box with a red border indicates a node that has more arrows than are shown In other words the graph is truncated with respect to this node The reason why a graph is sometimes truncated is to prevent images from becoming too large For the graphs generated with dot doxygen tries to limit the width of the resulting image to 1024 pixels A black box indicates that the class documentation is currently shown A dark blue arrow indicates an include relation for the include dependency graph or public inheritance for the other graphs A dark green arrow indicates protected inheritance A dark red arrow indicates private inheritance A purple dashed arrow indicated a usage relation the edge of the arrow is labeled with the variable s responsible for the relation Class A uses class B if class A has a member variable m of type C where B is a subtype of C e g C could be B Bk T lt B gt x Here are a couple of header files that together show the various diagrams that doxygen can generate diagrams_a h ifndef _DIAGRAMS_A_H define _DIAGRAMS_A_H class A public A m_self fendif diagram
294. the detailed documentation 23 128 copydetails lt link object gt Works in a similar way as copydoc but will only copy the detailed documentation not the brief description 23 129 docbookonly Starts a block of text that will be verbatim included in the generated docbook documentation only The block ends with a enddocbookonly command See also section manonly latexonly rtfonly xmlonly and htmlonly 23 130 dot caption lt sizeindication gt lt size gt Starts a text fragment which should contain a valid description of a dot graph The text fragment ends with enddot Doxygen will pass the text on to dot and include the resulting image and image map into the output The first argument is optional and can be used to specify the caption that is displayed below the image This argument has to be specified between quotes even if it does not contain any spaces The quotes are stripped before the caption is displayed The second argument is also optional and can be used to specify the width or height of the image For a descriptionm of the possibilities see the paragraph Size indication with the image command The nodes of a graph can be made clickable by using the URL attribute By using the command ref inside the URL value you can conveniently link to an item inside doxygen Here is an example fet Class Bia class B x class C x class C mainpage Class relations expressed via an inli
295. the search engine is done makes it possible to search from local HTML pages Also the search results have better ranking and show context information if available Disadvantages are that is requires a web server that can execute a CGI binary and an additional indexing step after running doxygen 4 Windows Compiled HTML Help If you are running doxygen on Windows then you can make a compiled HTML Help file chm out of the HTML files produced by doxygen This is a single file containing all HTML files and it also includes a search index There are viewers for this format on many platforms and Windows even supports it natively To enable this set GENERATE_HTMLHELP to YES in the config file To let doxygen compile the HTML Help file for you you also need to specify the path to the HTML compiler hhc exe using the HHC_LOCATION config option and the name of the resulting CHM file using CHM_FILE An advantage of this method is that the result is a single file that can easily be distributed It also provides full text search Disadvantages are that compiling the CHM file only works on Windows and requires Microsoft s HTML compiler which is not very actively supported by Microsoft Although the tool works fine for most people it can sometimes crash for no apparent reason how typical 5 Mac OS X Doc Sets If you are running doxygen on Mac OS X 10 5 or higher then you can make a doc set out of the HTML files produced by doxygen A d
296. the way the output looks doxygen allows you generate default style sheet header and footer files that you can edit afterwards e For HTML output you can generate the default header file see HTML_HEADER the default footer see HTML_FOOTER and the default style sheet see HTML_STYLESHEET using the following command doxygen w html header html footer html stylesheet css lt config_file gt The config_file is optional When omitted doxygen will search for a file named Doxyf ile and process that When this is also not found it will used the default settings For ATEX output you can generate the first and last part of refman tex see LATEX_HEADER and LA TEX_FOOTER and the style sheet included by that header normally doxygen st y using the following command 98 Doxygen usage doxygen w latex header tex footer tex doxygen sty lt config_file gt If you need non default options for instance to use extra IATEX packages you need to make a config file with those options set correctly and then specify that config file after the generated files make a backup of the configuration file first so you don t loose it in case you forget to specify one of the output files For RTF output you can generate the default style sheet file see RTF_STYLESHEET_FILE using doxygen w rtf rtfstyle cfg Warning When using a custom header you are responsible for the proper inclusion of any scripts and style sheets that doxygen needs wh
297. tion and is defined by a pair of fence lines Such a line consists of 3 or more tilde characters on a line The end of the block should have the same number of tildes Here is an example Generated by Doxygen 38 Markdown This is a paragraph introducing By default the output is the same as for a normal code block For languages supported by doxygen you can also make the code block appear with syntax highlighting To do so you need to indicate the typical file extension that corresponds to the programming language after the opening fence For highlighting according to the Python language for instance you would need to write the following A class class Dummy pass which will produce 1 A class 2 class Dummy 3 pass and for C you would write int func int a int b return axb which will produce int func int a int b return axb The curly braces and dot are optional by the way 5 2 4 Header Id Attributes Standard Markdown has no support for labeling headers which is a problem if you want to link to a section PHP Markdown Extra allows you to label a header by adding the following to the header Header 1 labelid Header 2 labelid2 To link to a section in the same comment block you can use Link text labelid to link to a section in general doxygen allows you to use ref Link text ref labelid Note this only works for the headers of level 1 to 4 5 3 Doxygen spec
298. tion file In the case above doxygen will then read both statements i e static CONST_STRING version static CONST_STRING version W2 RRM YS WL KY In case you want to expand the CONST_STRING macro you should set the MACRO_EXPANSION tag in the config file to YES Then the result after preprocessing becomes define VERSION define CONST_STRING static const char version 1 xx Note that doxygen will now expand all macro definitions recursively if needed This is often too much Therefore doxygen also allows you to expand only those defines that you explicitly specify For this you have to set the EXPAND_ONLY_PREDEF tag to YES and specify the macro definitions after the PREDEFINED or EXPAND_A S_DEFINED tag A typically example where some help from the preprocessor is needed is when dealing with the language extension from Microsoft __declspec The same goes for GNU s __ att ribute__ extension Here is an example function extern C void __declspec dllexport ErrorMsg String aMessage 58 Preprocessing When nothing is done doxygen will be confused and see __ decl spec as some sort of function To help doxygen one typically uses the following preprocessor settings ENABLE_PREPROCESSING YES MACRO_EXPANSION YES EXPAND_ONLY_PREDEF YES PREDEFINED __declspec x This will make sure the ___ dec l spec dl lexport is removed before doxygen parses the source code Similar settings can be used for
299. tion member class definitions in the documentation All options are read from an easy to edit and optionally annotated configuration file Documentation and search engine can be transferred to another location or machine without regenerating the documentation Supports many different character encodings and uses UTF 8 internally and for the generated output Doxygen can generate a layout which you can use and edit to change the layout of each page There more than a 100 configurable options to fine tune the output Can cope with large projects easily Although doxygen can now be used in any project written in a language that is supported by doxygen initially it was specifically designed to be used for projects that make use of Qt Software s Ot toolkit have tried to make doxygen Qt compatible That is Doxygen can read the documentation contained in the Qt source code and create a class browser that looks quite similar to the one that is generated by Qt Software Doxygen understands the C extensions used by Qt such as signals and slots and many of the markup commands used in the Qt sources Doxygen can also automatically generate links to existing documentation that was generated with Doxygen or with Qt s non public class browser generator For a Qt based project this means that whenever you refer to members or classes belonging to the Qt toolkit a link will be generated to the Qt documentation This is done independent of where this docum
300. tion title 166 23 109lparagraph lt paragraph name gt paragraph title o o o eee 167 23 1 10 dontinclude lt WMenames os c s aag Re ee ee A A a 167 2 cid SAMI Soo aa Re a a el A ee ee Oe ae ee es 168 22 112 MMCtUAGINENO lt TIGNaNeS gt oscar a eR A AA 168 ANAL PARO circa A A A AO eS 168 2 LIA L PASA Dice a a a a RA a A E R O ee 168 231 TS SKIpINe patern 62s e684 e a O ee A ee 169 23 1 16 enippet lt ilename gt blocek ID a i ak ecr ee ae ee ea a ee O a 169 ES IU PAWS 2 oe ewe bee Ree be bbe ebb eh ARES EAE be de os 170 23 1 l8 vernede lt le name gt 2 5 c ae Kb e Poe aG RR ee Re a we Shee BOR 170 29 119 Dtmincude a MIG MANNIE lt o 2 a Me Re a a A eee ELE A 170 23120 ONIS lt TIGTAMES oc a haw Son Pa ed ED Se a ES be ee ee eS 170 PO MATA AMOS see oe aa di A ee de me hk eee dy A 170 23122 arg ilemesescrtion cesos Dh Pw aa PEt bee babe ee Pee dad 171 ESOS sl ee Roden Alas BUR a s eee e Ye ee he a ea a eee we he Be eS 171 ESA dt Ee EE AER AA e bee er A E E 171 2312506006 P lt woad aT conos ura ee eR Re ae eh ke Pao ee Ro a 172 23 126 Copydot lt lInk ODjeCl gt oo beh kd be ee be Eh AES he Oe Be beh ee ei bh 172 23 127 copyoriot SlimegBjetlo nce oe ea o edd bo bh ede ae eee eee ba bw 173 23 128 copydetalls lt INKOBJECES gt lt acs ed aoa n m aos RR AA aa G 173 PRA OOOO e a SS boy a a e Ai aa Pa SE Sa E o ae a a E 173 23 130 dot caption lt sizelmdicalion gt SIZES gt e
301. tive lines of text by one or more blank lines An example Here is text for one paragraph We continue with more text in another paragraph 5 1 2 Headers Just like Markdown doxygen supports two types of headers Level 1 or 2 headers can be made as the follows This is a level 1 header 34 Markdown A header is followed by a line containing only s or s Note that the exact amount of s or s is not important as long as there are at least two Alternatively you can use s at the start of a line to make a header The number of s at the start of the line determines the level up to 6 levels are supported You can end a header by any number of s Here is an example This is a level 1 header This is level 3 header 5 1 3 Block quotes Block quotes can be created by starting each line with one or more gt s similar to what is used in text only emails gt This is a block quote gt spanning multiple lines Lists and code blocks see below can appear inside a quote block Quote blocks can also be nested Note that doxygen requires that you put a space after the last gt character to avoid false positives i e when writing 0 if OK n gt 1 if NOK the second line will not be seen as a block quote 5 1 4 Lists Simple bullet lists can be made by starting a line with or x Item 1 More text for this item Item 2 nested list item another nested item Item 3 List items
302. to be taken when updating your language If you are not extremely busy you should always chose the most radical one When the update takes much more time than you expected you can always decide use some suitable translator adapter to finish the changes later and still make your translator working The most radical way of updating the language translator is to make your translator class derive directly from the abstract class Translator and provide translations for the methods that are required to be implemented the compiler will tell you if you forgot to implement some of them If you are in doubt have a look at the Translatore English class to recognize the purpose of the implemented method Looking at the previously used adapter class may help you sometimes but it can also be misleading because the adapter classes do implement also the obsolete methods see the previous trFiles example In other words the up to date language translators do not need the TranslatorAdapter_x_y_z classes at all and you do not need to implement anything else than the methods required by the Translator class i e the pure virtual methods of the Translator they end with 0 If everything compiles fine try to run translator py and have a look at the translator report ASCII file at the doxygen doc directory Your translator is marked as up to date only if the script does not detect anything special If the translator uses the Translator base class the
303. to process PHP code then you can also use doxygen s built in server side search engine To enable this set both SEARCHENGINE and SERVER_BASED_SEARCH to YES in the config file and set EXT ERNAL_SEARCH to NO Advantages over the client side search engine are that it provides full text search and it scales well to medium side projects Disadvantages are that it does not work locally i e using a file URL and that it does not provide live search capabilities 68 Searching Note In the future this option will probably be replaced by the next search option 3 Server side searching with external indexing With release 1 8 3 of doxygen another server based search option has been added With this option doxygen generates the raw data that can be searched and leaves it up to external tools to do the indexing and searching meaning that you could use your own indexer and search engine of choice To make life easier doxygen ships with an example indexer doxyindexer and search engine doxysearch cgi based on the Xapian open source search engine library To enable this search method set SEARCHENGINE SERVER_BASED_SEARCH and EXTERNAL_SEARCH all to YES See External Indexing and Searching for configuration details Advantages over option 2 are that this method potentially scales to very large projects It is also possible to combine multiple doxygen projects and external data into one search index The way the interaction with
304. ton to quickly configure the most important settings and leave the rest of the options to their defaults Expert Click this button to gain access to the full range of configuration options Load Click this button to load an existing configuration file from disk Note that you can select multiple buttons in a row for instance to first configure doxygen using the Wizard and then fine tune the settings via the Expert After doxygen is configured you need to save the configuration as a file to disk This second step allows doxygen to use the configuration and has the additional advantage that the configuration can be reused to run doxygen with the same settings at a later point in time Since some configuration options may use relative paths the next step is to select a directory from which to run doxygen This is typically the root of the source tree and will most of the time already be filled in correctly Once the configuration file is saved and the working directory is set you can run doxygen based on the selected settings Do this by pressing the Start button Once doxygen runs you can cancel it by clicking the same button again The output produced by doxygen is captured and shown in a log window Once doxygen finishes the log can be saved as a text file The Wizard Dialog If you select the Wizard button in step 1 then a dialog with a number of tabs will appear oo Mode Output Diagrams Provide some information abou
305. tory is man This tag requires that the tag GENERATE_MAN is set to YES MAN_EXTENSION The MAN_EXTENSTION tag determines the extension that is added to the generated man pages In case the manual section does not start with a number the number 3 is prepended The dot at the beginning of the MAN_EXTENSION tag is optional The default value is 3 This tag requires that the tag GENERATE_MAN is set to YES MAN SUBDIR The MAN_SUBDIR tag determines the name of the directory created within MAN_OUTPUT in which the man pages are placed If defaults to man followed by MAN_ EXTENSION with the initial removed This tag requires that the tag GENERATE_MAN is set to YES MAN LINKS If the MAN_LINKS tag is set to YES and doxygen generates man output then it will generate one additional man file for each entity documented in the real man page s These additional files only source the real man page but without them the man command would be unable to find the correct page The default value is NO This tag requires that the tag GENERATE_MAN is set to YES 22 12 Configuration options related to the XML output GENERATE_XML If the GENERATE_XML tag is set to YES doxygen will generate an XML file that captures the structure of the code including all documentation The default value is NO Generated by Doxygen 22 13 Configuration options related to the DOCBOOK output 131 XML OUTPUT The
306. tput format 203 a CUIDA sn a oe a ee a e a a A A a 203 ate Using ihe LaTeX generatorn soccer a A a Deea we Oh ee a 203 27 2 1 Creation a PDF and OW OUI lt lt lt usoa e ew a A 204 27 3 DOCUMENTACION IONMAL scine se espos a A a ee RO 205 254 Bald SUSE oie a ek ee he a ae eR we a a a oh a ee a ee 205 28 Internationalization 207 Generated by Doxygen Part User Manual Chapter 1 Introduction Introduction Doxygen is the de facto standard tool for generating documentation from annotated C sources but it also supports other popular programming languages such as C Objective C CH PHP Java Python IDL Corba Microsoft and UNO OpenOffice flavors Fortran VHDL Tcl and to some extent D Doxygen can help you in three ways 1 It can generate an on line documentation browser in HTML and or an off line reference manual in IATEX from a set of documented source files There is also support for generating output in RTF MS Word Post Script hyperlinked PDF compressed HTML and Unix man pages The documentation is extracted directly from the sources which makes it much easier to keep the documentation consistent with the source code 2 You can configure doxygen to extract the code structure from undocumented source files This is very useful to quickly find your way in large source distributions Doxygen can also visualize the relations between the various elements by means of include dependency graphs inheritance
307. tree is shown Minimum value 0 maximum value 1500 default value 250 This tag requires that the tag GENERATE_HTML is set to YES EXT_LINKS_IN_ WINDOW If the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to external symbols imported via tag files in a separate window The default value is NO This tag requires that the tag GENERATE_HTML is set to YES FORMULA_FONTSIZE Use this tag to change the font size of IATEX formulas included as images in the HTML documentation When you change the font size after a successful doxygen run you need to manually remove any form_ png images from the HTML output directory to force them to be regenerated Minimum value 8 maximum value 50 default value 10 This tag requires that the tag GENERATE_HTML is set to YES FORMULA_TRANSPARENT Use the FORMULA_TRANPARENT tag to determine whether or not the images gen erated for formulas are transparent PNGs Transparent PNGs are not supported properly for IE 6 0 but are supported on all modern browsers Note that when changing this option you need to delete any form_x png files in the HTML output directory before the changes have effect The default value is YES This tag requires that the tag GENERATE_HTML is set to Y Gl E Ss USE_MATHJAX Enable the USE_MATHJAX option to render IATEX formulas using MathJax see http www mathjax org which uses client side Javascript for the rendering ins
308. tries to determine the platform you use the make tool which must be GNU make and the perl interpreter It will report what it finds To override the auto detected platform and compiler you can run configure as follows 8 Installation configure platform platform type See the PLATFORMS file for a list of possible platform options If you have Qt 4 3 or higher installed and want to build the GUI front end you should run the configure script with the with doxywizard option configure with doxywizard For an overview of other configuration options use configure help 3 Compile the program by running make make The program should compile without problems and the binaries doxygen and optionally doxywizard should be available in the bin directory of the distribution 4 Optional Generate the user manual make docs To let doxygen generate the HTML documentation The HTML directory of the distribution will now contain the html documentation just point a HTML browser to the file index html in the html directory You will need the python interpreter for this 5 Optional Generate a PDF version of the manual you will need pdflatex makeindex and egrep for this make pdf The PDF manual doxygen_manual pdf will be located in the latex directory of the distribution Just view and print it via the acrobat reader 2 2 Installing the binaries on UNIX After the compilation of the source code do a make install
309. ts an unnumbered section lt H1 gt Ends an unnumbered section lt H2 gt Starts an unnumbered subsection lt H2 gt Ends an unnumbered subsection lt H3 gt Starts an unnumbered subsubsection lt H3 gt Ends an unnumbered subsubsection lt H4 gt Starts an unnumbered subsubsection lt H4 gt Ends an unnumbered subsubsection lt H5 gt Starts an unnumbered subsubsection lt H5 gt Ends an unnumbered subsubsection lt H6 gt Starts an unnumbered subsubsection lt H6 gt Ends an unnumbered subsubsection lt I gt Starts a piece of text displayed in an italic font lt I gt Ends a lt I gt section lt IMG SRC gt This command is written with its attributes to the HTML output only The SRC attribute is mandatory lt LI gt Starts a new list item lt LI gt Ends a list item lt OL gt Starts a numbered item list lt OL gt Ends a numbered item list lt P gt Starts a new paragraph lt P gt Ends a paragraph lt PRE gt Starts a preformatted fragment lt PRE gt Ends a preformatted fragment lt SMALL gt Starts a section of text displayed in a smaller font lt SMALL gt Ends a lt SMALL gt section lt SPAN gt Starts an inline text fragment with a specific style HTML only lt SPAN gt Ends an inline text fragment with a specific style HTML only lt STRONG gt Starts a section of bold text lt STRONG gt Ends a section of bold text lt SUB gt Starts a piece of text displa
310. type information Note The availability of this option depends on whether or not doxygen was compiled with the with libclang option The default value is NO CLANG_OPTIONS If clang assisted parsing is enabled you can provide the compiler with command line options that you would normally use when invoking the compiler Note that the include paths will already be set by doxygen for the files and directories specified with INPUT and INCLUDE_PATH This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES Generated by Doxygen 22 7 Configuration options related to the alphabetical class index 119 22 7 Configuration options related to the alphabetical class index ALPHABETICAL INDEX If the ALPHABETICAL INDEX tag is set to YES an alphabetical index of all com pounds will be generated Enable this if the project contains a lot of classes structs unions or interfaces The default value is YES COLS_IN_ALPHA INDEX The COLS_IN_ALPHA_INDExX tag can be used to specify the number of columns in which the alphabetical index list will be split Minimum value 1 maximum value 20 default value 5 This tag requires that the tag ALPHABETICAL_INDEX is set to YES IGNORE_PREFIX In case all classes in a project start with a common prefix all classes will be put under the same header in the alphabetical index The IGNORE_PREF IX tag can be used to specify a prefix or a list of prefixes that should
311. u include a endverbatim command for each verbatim command or the parser will get con fused See also sections code endverbatim and verbinclude 23 163 xmlonly Starts a block of text that will be verbatim included in the generated XML output only The block ends with a endxmlonly command This command can be used to include custom XML tags See also sections manonly rtfonly latexonly ntmlonly and docbookonly 23 164 AN This command writes a backslash character 1 to the output The backslash has to be escaped in some cases because doxygen uses it to detect commands 23 165 10 This command writes an at sign to the output The at sign has to be escaped in some cases because doxygen uses it to detect JavaDoc commands 23 166 Languageld This command enables disables a language specific filter This can be used to put documentation for different language into one comment block and use the OUTPUT_LANGUAGE tag to filter out only a specific language Use language_id to enable output for a specific language only and to enable output for all languages this is also the default mode Example X english This is English dutch Dit is Nederlands german Dies ist Deutsch output for all languages Generated by Doxygen 23 167 amp 183 23 167 amp This command writes the amp character to the output This character has to be escaped because it has a special meaning in H
312. u probably forgot to include the stylesheet doxygen css that doxygen generates You can include this by putting lt LINK HREF doxygen css REL stylesheet TYPE text css gt in the HEAD section of the HTML page 17 9 Why does doxygen use Qt The most important reason is to have a platform abstraction for most Unices and Windows by means of the QFile QFilelnfo QDir QDate QTime and QlODevice classes Another reason is for the nice and bug free utility classes like QList QDict QString QArray QTextStream QRegExp QXML etc The GUI front end doxywizard uses Qt for well the GUI 17 10 How can exclude all test directories from my directory tree Simply put an exclude pattern like this in the configuration file EXCLUDE_PATTERNS x test x 17 11 Doxygen automatically generates a link to the class MyClass somewhere in the running text How do prevent that at a certain place Put a in front of the class name Like this MyClass Doxygen will then remove the and keep the word unlinked Generated by Doxygen 88 Frequently Asked Questions 17 12 My favorite programming language is X Can still use doxygen No not as such doxygen needs to understand the structure of what it reads If you don t mind spending some time on it there are several options If the grammar of X is close to C or C then it is probably not too hard to tweak src scanner a bit so the language is supported This is done for al
313. u use an expression you need to wrap it in round brackets i e Acond LABEL1 amp amp LABEL2 For conditional sections within a comment block one should use a if endif block Conditional sections can be nested In this case a nested section will only be shown if it and its containing section are included Here is an example showing the commands in action x An interface x class Intf public x A method x virtual void func 0 cond TEST x A method used for testing virtual void test 0 Rendcond cond DEV The implementation of the interface class Implementation public Intf public void func cond TEST void test endcond cond xx This method is obsolete and does not show up in the documentation Generated by Doxygen 156 Special Commands void obsolete endcond endcond The output will be different depending on whether or not ENABLED_SECTIONS contains TEST or DEV See also sections endcond and ENABLED_SECTIONS 23 58 copyright copyright description Starts a paragraph where the copyright of an entity can be described This paragraph will be indented The text of the paragraph has no special internal structure See section author for an example 23 59 date date description Starts a paragraph where one or more dates may be entered The paragraph will be indented The
314. uble dagger per mille sign o single left pointing angle quotation mark single right pointing angle quotation mark euro sign trade mark sign apostrophe x lt This is a comment with a comment block gt Visible text Generated by Doxygen Chapter 25 XML commands Doxygen supports most of the XML commands that are typically used in C code comments The XML tags are defined in Appendix E of the ECMA 334 standard which defines the C language Unfortunately the specification is not very precise and a number of the examples given are of poor quality Here is the list of tags supported by doxygen lt c gt Identifies inline text that should be rendered as a piece of code Similar to using lt tt gt text lt tt gt lt code gt Set one or more lines of source code or program output Note that this command behaves like code endcode for C code but it behaves like the HTML equivalent lt code gt lt code gt for other languages lt description gt Part of a lt 1list gt command describes an item lt example gt Marks a block of text as an example ignored by doxygen lt exception cref member gt Identifies the exception a method can throw lt include gt Can be used to import a piece of XML from an external file Ignored by doxygen at the moment lt inheritdoc gt Can be used to insert the documentation of a member of a base class into the documen tation of a membe
315. uld look as follows lt navindex gt lt tab type user url ref mypage title My Page gt lt navindex gt You can also group tabs together in a custom group using a tab with type usergroup The following example puts the above tabs in a user defined group with title My Group lt navindex gt lt tab type usergroup title My Group gt lt tab type user url http www google com title Google gt lt tab type user url ref mypage title My Page gt lt tab gt lt navindex gt Groups can be nested to form a hierarchy By default a usergroup entry in the navigation tree is a link to a landing page with the contents of the group You can link to a different page using the ur 1 attribute just like you can for the lt tab gt element and prevent any link using url none i e lt tab type usergroup title Group without link url none gt lt tab gt The elements after navindex represent the layout of the different pages generated by doxygen e The class element represents the layout of all pages generated for documented classes structs unions and interfaces The namespace element represents the layout of all pages generated for documented namespaces and also Java packages Generated by Doxygen 14 2 Changing the layout of pages 79 e The file element represents the layout of all pages generated for documented files The group element represents the layout of all pages generated for d
316. unc2InGroup2 y void Test funclInGroupl void Test func2InGroupl name Group2 Description of group 2 1 1 04 x Function 2 in group 2 Details void Test func2InGroup2 x Function 1 in group 2 Details x void Test funclInGroup2 file docs for this file one description for all members of this group because DISTRIBUTE_GROUP_DOC is YES in the config file define A 1 define B 2 void glob_func Generated by Doxygen 7 3 Subpaging 49 Here Group1 is displayed as a subsection of the Public Members And Group2 is a separate section because it contains members with different protection levels i e public and protected 7 3 Subpaging Information can be grouped into pages using the page and mainpage commands Normally this results in a flat list of pages where the main page is the first in the list Instead of adding structure using the approach described in section modules it is often more natural and convenient to add additional structure to the pages using the subpage command For a page A the subpage command adds a link to another page B and at the same time makes page B a subpage of A This has the effect of making two groups GA and GB where GB is part of GA page A is put in group GA and page B is put in group GB Generated by Doxygen 50 Grouping Generated by Doxygen Chapter 8 Including Formul
317. user that the language translation is not up to date because of that some sentences in the generated files may appear in English Once the oldest adapter class is not used by any of the language translators it can be removed from the doxygen project The maintainers should try to reach the state with the minimal number of translator adapter classes To simplify the maintenance of the language translator classes for the supported languages the translator py Python script was developed located in doxygen doc directory It extracts the impor tant information about obsolete and new methods from the source files for each of the languages The information is stored in the translator report ASCII file translator_report txt Looking at the base class of the language translator the script guesses also the status of the translator see the last column of the table with languages above The translator py is called automatically when the doxygen documentation is generated You can also run the script manually whenever you feel that it can help you Of course you are not forced to use the results of the script You can find the same information by looking at the adapter class and its base classes How should update my language translator First you should be the language maintainer or you should let him her know about the changes The following text was written for the language maintainers as the primary audience There are several approaches
318. utput The generated man pages can be viewed using the man program You do need to make sure the man directory is in the man path see the MANPATH environment variable Note that there are some limitations to the capabilities of the man page format so some information like class diagrams cross references and formulas will be lost 3 3 6 DocBook output Doxygen can also generate output in the DocBook format How to process the DocBook output is beyond the scope of this manual Generated by Doxygen 3 4 Step 3 Documenting the sources 17 3 4 Step 3 Documenting the sources Although documenting the sources is presented as step 3 in a new project this should of course be step 1 Here assume you already have some code and you want doxygen to generate a nice document describing the API and maybe the internals and some related design documentation as well If the EXTRACT_ALL option is set to NO in the configuration file the default then doxygen will only generate documentation for documented entities So how do you document these For members classes and namespaces there are basically two options 1 Place a special documentation block in front of the declaration or definition of the member class or names pace For file class and namespace members it is also allowed to place the documentation directly after the member See section Special comment blocks to learn more about special documentation blocks 2 Place a special do
319. utput directory If the Generated by Doxygen 180 Special Commands image name contains spaces you ll have to put quotes around the name You can also specify an absolute URL instead of a file name but then doxygen does not copy the image nor check its existence The third argument is optional and can be used to specify the caption that is displayed below the image This argument has to be specified on a single line and between quotes even if it does not contain any spaces The quotes are stripped before the caption is displayed The fourth argument is also optional and can be used to specify the width or height of the image This can be useful for IATEX or docbook output i e format 1atex or format docbook Size indication The sizeindication can specify the width or height to be used or a combination The size specifier in IATEX for example 10cm or 4in or a symbolic width like textwidth Here is example of a comment block x Here is a snapshot of my new application image html application Jpg image latex application eps My application width 10cm And this is an example of how the relevant part of the configuration file may look IMAGE_PATH my_image_dir Warning The image format for HTML is limited to what your browser supports For IAT X the image format must be Encapsulated PostScript eps Doxygen does not check if the image is in the correct format So you have to make sure this is the
320. vision t 0 9 0 9 1 p Example shell script for Subversion bin sh svn stat v 1 sed n s A Z 1 15 r s 1 15 r 8 p Example filter for ClearCase FILE_VERSION_INFO cleartool desc fmt Vn LAYOUT_FILE The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by doxygen The layout file controls the global structure of the generated output files in an output format independent way To create the layout file that represents doxygen s defaults run doxygen with the 1 option You can optionally specify a file name after the option if omitted DoxygenLayout xm1 will be used as the name of the ayout file Note that if you run doxygen from a directory containing a file called DoxygenLayout xm1 doxygen will parse it automatically even if the LAYOUT_F ILE tag is left empty CITE_BIB FILES The CITE_BIB_FILES tag can be used to specify one or more bib files containing the reference definitions This must be a list of bib files The bib extension is automatically appended if omit ted This requires the bibtex tool to be installed See also http en wikipedia org wiki e BibTeX for more info For IAT X the style of the bibliography can be controlled using LATEX_BIB_STYLE To use this feature you need bibtex and per available in the search path See also cite for info how to create references 22 4 Configuration options related to w
321. want to document the class Test in the example above you could have also put the following documentation block somewhere in the input that is read by doxygen class Test brief A test class A more detailed class description Here the special command class is used to indicate that the comment block contains documentation for the class Test Other structural commands are e Xstruct to document a C struct e union to document a union e enum to document an enumeration type Generated by Doxygen 4 1 Special comment blocks 25 e fn to document a function e var to document a variable or typedef or enum value e def to document a define e typedef to document a type definition e file to document a file namespace to document a namespace e package to document a Java package e interface to document an IDL interface See section Special Commands for detailed information about these and many other commands To document a member of a C class you must also document the class itself The same holds for namespaces To document a global C function typedef enum or preprocessor definition you must first document the file that contains it usually this will be a header file because that file contains the information that is exported to other source files Attention Let s repeat that because it is often overlooked to document global objects functions typedefs enum macros etc you must d
322. ways have the name of the object they point to as link text The link command can be used to create a link to an object a file class or member with a user specified link text The link command should end with an endlink command All text between the 1ink and endlink commands serves as text for a link to the lt link object gt specified as the first argument of link See also Section autolink for more information on automatically generated links and valid link objects 23 100 ref lt name gt text Creates a reference to a named section subsection page or anchor For HTML documentation the reference command will generate a link to the section For a section or subsection the title of the section will be used as the Generated by Doxygen 23 101 refitem lt name gt 165 text of the link For an anchor the optional text between quotes will be used or lt name gt if no text is specified For lATEX documentation the reference command will generate a section number for sections or the text followed by a page number if lt name gt refers to an anchor See also Section page for an example of the ref command 23 101 refitem lt name gt Just like the ref command this command creates a reference to a named section but this reference appears in a list that is started by secreflist and ends with endsecreflist An example of such a list can be seen at the top of the page 23 102 secreflist Starts an i
323. words should be wrapped in lt span class h1 gt and lt span gt tags to highlight them in the output Generated by Doxygen Chapter 14 Customizing the Output Doxygen provides various levels of customization The section Minor Tweaks discusses what to do if you want to do minor tweaking to the look and feel of the output The section Layout show how to reorder and hide certain information on a page The section XML output show how to generate whatever output you want based on the XML output produced by doxygen 14 1 Minor Tweaks The next subsections describe some aspects that can be tweaked with little effort 14 1 1 Overall Color To change the overall color of the HTML output doxygen provides three options e HTML_COLORSTYLE_HUE e HTML_COLORSTYLE_SAT e HTML_COLORSTYLE_GAMMA to change the hue saturation and gamma correction of the colors respectively For your convenience the GUI frontend Doxywizard has a control that allows you to see the effect of changing the values of these options on the output in real time 14 1 2 Navigation By default doxygen shows navigation tabs on top of every HTML page corresponding with the following settings e DISABLE_INDEX NO GENERATE_TREEVIEW NO you can switch to an interactive navigation tree as sidebar using e DISABLE_INDEX YES e GENERATE_TREEVIEW YES or even have both forms of navigation 76 Customizing the Output e DISABLE_INDEX NO e GENERATE
324. x y protected int var x lt A member variable y x details Test Test x details Test Test A global variable int globVar A global enum enum GlobEnum GVall lt global enum value 1 Generated by Doxygen Automatic link generation 64 GVal2 x lt global enum value 2 x y A macro definition x define ABS x x gt 0 x x typedef Test B x fn typedef Test B x A type definition 11 6 typedefs Typedefs that involve classes structs and unions like typedef struct StructName TypeName create an alias for StructName so links will be generated to StructName when either StructName itself or Type Name is encountered Example x file restypedef cpp An example of resolving typedefs x struct CoordStruct x A coordinate pair struct CoordStruct The x coordinate x float x x The y coordinate x float y y x Creates a type name for CoordStruct typedef CoordStruct Coord Ir This function returns the addition of a cl and la c2 k el lxte2sk ol YAOI Coord add Coord cl Coord c2 i e Generated by Doxygen Chapter 12 Output Formats The following output formats are directly supported by doxygen HTML Generated if GENERATE_HTML is set to YES in the configuration file lATEX Generated if GENERATE_LATEX is set to YES in the configuration
325. x is included by doxyformat tex to avoid the need of explicitly defining some macros doxylatex tex This is a very simple IATEX document that loads some packages and includes doxyformat tex and doxydocs tex This document is lATgX ed to produce the PDF and DVI documentation by the rules added to doxyrules make Creation of PDF and DVI output this you need to have installed Latex pdflatex and the packages used by doxylatex tex Update your Doxyf ile to the latest version using doxygen u Doxyfile Set both GENERATE_PERLMOD and PERLMOD_LATEX tags to YES in your Doxyfile Run Doxygen on your Doxyfile doxygen Doxyfile Aperlmod subdirectory should have appeared in your output directory Enter the per 1mod subdirectory and run make pdf This should generate a doxylatex pdf with the documentation in PDF format Run make dvi This should generate a doxylatex dvi with the documentation in DVI format Generated by Doxygen 27 3 Documentation format 205 27 3 Documentation format The Perl Module documentation generated by Doxygen is stored in DoxyDocs pm This is a very simple Perl module that contains only two statements an assignment to the variable doxydocs and the customary 1 statement which usually ends Perl modules The documentation is stored in the variable doxydocs which can then be accessed by a Perl script using DoxyDocs pm Sdoxydocs contains a tree like structure composed of three ty
326. xtract information from the XML output Possible tools could be an interactive source browser e a class diagram generator computing code metrics Generated by Doxygen 202 Doxygen s internals Debugging Since doxygen uses a lot of flex code it is important to understand how flex works for this one should read the man page and to understand what it is doing when 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 wrote the following perl script which automatically adds or removes d from the correct line in the Makefile usr bin perl Sfile 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 lt Makefile libdoxygen old unless open G gt Makefile libdoxygen print STDERR Error opening file Makefile libdoxygen for writing n exit 1 print Processing Makefile libdoxygen n while lt F gt if s LEX i P a zA Z YY t file LEX d 1 P 2YY t S file g print Enabling debug info for file n elsif s LEX d i P a zA Z YY t file LEX 11 P1
327. yed in subscript lt SUB gt Ends a lt SUB gt section Generated by Doxygen 187 e lt SUP gt Starts a piece of text displayed in superscript e lt SUP gt Ends a lt SUP gt section lt TABLE gt starts a table e lt TABLE gt ends a table e lt TD gt Starts a new table data element e lt TD gt Ends a table data element e lt TH gt Starts a new table header e lt TH gt Ends a table header e lt TR gt Starts a new table row e lt TR gt Ends a table row e lt TT gt Starts a piece of text displayed in a typewriter font e lt TT gt Ends a lt TT gt section lt KBD gt Starts a piece of text displayed in a typewriter font e lt KBD gt Ends a lt KBD gt section e lt UL gt Starts an unnumbered item list e lt UL gt Ends an unnumbered item list e lt VAR gt Starts a piece of text displayed in an italic font e lt VAR gt Ends a lt VAR gt section The special HTML4 character entities The list of entities with their descriptions has been taken from Character entity references in HTML 4 Portions International Organization for Standardization 1986 Permission to copy in any form is granted for use with conforming SGML systems and applications as defined in ISO 8879 provided this notice is included in all copies amp nbsp amp iexcl e amp cent pound curren e yen e brvbar e sect e uml COPy e
328. yntax lt http www example com gt lt https www example com gt lt ftp www example com gt lt mailto address example com gt lt address example com gt Note that doxygen will also produce the links without the angle brackets 5 2 Markdown Extensions 5 2 1 Table of Contents Doxygen supports a special link marker TOC which can be placed in a page to produce a table of contents at the start of the page listing all sections Note that using TOC is the same as using a tableofcontents command 5 2 2 Tables Of the features defined by Markdown Extra is support for simple tables A table consists of a header line a separator line and at least one row line Table columns are separated by the pipe character Here is an example First Header Second Header A DD A ss an E ses Sa ee A Content Cell Content Cell Content Cell Content Cell which will produce the following table First Header Second Header Content Cell Content Cell Content Cell Content Cell Column alignment can be controlled via one or two colons at the header separator line Right Center Left 3 5 10 10 10 1000 1000 1000 which will look as follows Right Center Left 10 10 10 1000 1000 1000 5 2 3 Fenced Code Blocks Another feature defined by Markdown Extra is support for fenced code blocks A fenced code block does not require indenta
329. z Reyad resigned moazreyad at yahoo dot com 1 4 6 Muhammad Bashir Al Noimi mbnoimi at gmail dot com Armenian Armen Tangamyan armen dot tangamyan at anu dot edu dot au 1 8 0 Brazilian Portuguese Fabio FJTC Jun Takada Chino jun chino at uol dot com dot br up to date Catalan Maximiliano Pin max dot pin at bitroit dot com 1 8 0 Albert Mora unreachable amora at iua dot upf dot es Chinese Lian Yang lian dot yang dot cn at gmail dot com 1 8 2 Li Daobing lidaobing at gmail dot com Wei Liu liuwei at asiainfo dot com Chinese Traditional Daniel YC Lin dlin dot tw at gmail dot com almost up to date Gary Lee garywlee at gmail dot com Croatian Boris Bralo boris dot bralo at gmail dot com 1 8 2 Czech Petr P ikryl prikryl at atlas dot cz up to date Danish Poul Erik Hansen pouhan at gnotometrics dot dk 1 8 0 Erik S e Sorensen eriksoe doxygen at daimi dot au dot dk Dutch Dimitri van Heesch dimitri at stack dot nl up to date English Dimitri van Heesch dimitri at stack dot nl up to date Esperanto Ander Martinez ander dot basaundi at gmail dot com 1 8 4 Finnish Antti Laine antti dot a dot laine at tut dot fi 1 6 0 French David Martinet contact at e concept applications dot fr up to date Xavier Outhier xouthier at yahoo dot fr Benoit BROSSE Benoit dot BROSSE at ingenico dot com German Peter Grotrian Peter dot Grotrian at pdv FS dot de 1 8 4 Jens Seidel jensseidel at users dot sf dot net Greek Paul Gessos gessos dot paul at yahoo dot gr 1 8 4 Hungarian Akos Kiss
330. zer is always hidden The maximum number of initialization lines can be changed by means of the configuration parameter MAX_INITIALIZER_LINES the default value is 30 See also section showinitializer 23 18 idlexcept lt name gt Indicates that a comment block contains documentation for a IDL exception with name lt name gt 23 19 implements lt name gt This command can be used to manually indicate an inheritance relation when the programming language does not support this concept natively e g C The file manual c in the example directory shows how to use this command Generated by Doxygen 23 20 ingroup lt groupname gt lt groupname gt lt groupname gt 147 See also section extends and section memberof 23 20 ingroup lt groupname gt lt groupname gt lt groupname gt If the ingroup command is placed in a comment block of a class file or namespace then it will be added to the group or groups identified by lt groupname gt See also page Grouping sections defgroup addtogroup and weakgroup 23 21 interface lt name gt lt header file gt lt header name gt Indicates that a comment block contains documentation for an interface with name lt name gt The arguments are equal to the arguments of the class command See also section class 23 22 internal This command starts a documentation fragment that is meant for internal use only The fragment naturally ends at th
Download Pdf Manuals
Related Search
Related Contents
Digitus LC OM3, 5m MANUAL DA AMASSADEIRA ASI 25 / ASI 40 MANUAL DEL USUARIO Cocinas > Recuperadores Analisi dei dati Avaya Configuring SMDS User's Manual Brochure - Luminaire Napert Copyright © All rights reserved.
Failed to retrieve file