Doxygen latest release v1.2.18 - last update 18 Sep 2002

Doxygen Release 1.2.18

Changes

  • Running doxygen with the "-d Validate" option will activate a new documentation parser. The parser will produce output for Html, Latex, XML and RTF output (man page output still needs to be done). For XML output this new parser will always be used. Please try it and let me know if you see unexpected errors or invalid output. This parser will replace the old one in the next release.

    The main advantages of the new parser are that it actually checks the syntax of the documentation blocks and will produce valid output by design.

    For debugging purposes, adding "-d PrintTree" along with "-d Validate" will let doxygen dump the abstract syntax tree of each documentation block to the output in a pretty printed way (this reflects the structure built-up by the parser).

  • A number of new XML tags are introduced along with the new parser, these include: umlaut, acute, grave, circ, tilde, szlig, cedil, ring nonbreakablespace, toclist, tocitem, xrefsect, xrefdescription, and xreftitle.
  • Changed the way code fragments are represented in XML to simplify validation.
  • Changed the way \page, \section, and \subsection are handled in LaTeX (and RTF).
    • \page now results in a section in latex (of the related pages chapter)
    • \section is now a subsection within that page section (used to be a section, so at the same level as \page)
    • \subsection is now a subsubsection within a subsection (used to be a subsection).
  • Included a number of patches by Kristian Ede:
    • Undocumented private friend classes no longer cause warnings
    • Undocumented private classes no longer cause warnings
    • Undocumented members are now hidden if they are default constuctors, destructors or reimplemented.
  • Pages introduced via \page are now context aware. This means that if you put them inside a class or namespace, names do not have to be prefixed with a full scope to create a link in the documentation.
  • Boolean values in doxywizard can no longer be toggled by clicking anywhere on the line on which they appear, but only by clicking on the name or checkbox.

New features

  • @deprecated is now treated as @todo, @test, and @bug, which means that a list of all deprecated items is generated. Thanks to Angela Marshall for the patch.
  • Enum value documentation was added to the XML output.
  • Files ending with ".inc" are now recognised as PHP files (thanks to Marcus Ahlfors).
  • Included updated documentation for language translators (thanks to Petr Prikryl).
  • Included language updates for Czech, Slovak, Brazillan, Croatian, Portuguese, Russian, Polish, Japanese and Serbian. Include language support for Catalan (thanks to Albert Mora)
  • Included .dsp update by Simon Goodwin (already needs to be updated again :-( )
  • Added new configuration options XML_DTD and XML_SCHEMA to set the DTD or Schema used in the XML output.
  • Include new commands \subsubsection and \paragraph which add two section level below \section and \subsection (thanks to Dirk Reiners for the patch)

Bug fixes

  • Fixed lock-up bug in RTF output when using tables.
  • The internal comment conversion routine was confused by lines of the form //*************
  • Fixed recursive lockup for template arguments of the form "typename A = ::A"
  • Description part of @name did not (always) appear in the resulting documentation.
  • Alphabetic index showed package scope using "::" even when OPTIMIZE_OUTPUT_JAVA was set to YES. The same happened for class and namespace HTML page titles.
  • New versions of dot (graphviz >=1.8.8) broke clickable images for versions of doxygen <=1.2.17. Now fixed for newer doxygen releases in a backwards compatible way thanks to a patch by John Ellson.
  • Fixed compile problem for 64 bit machines (pointer to int cast).
  • Included patch to build Doxygen 1.2.17 on AIX 4.3 by Russ Allbery
  • \if ... \else ... \endif blocks now also work in //!< style comments.
  • Fixed a couple of memory leaks in the code parser.
  • Fixed case where member function was put in the member variable section (thanks to Mahadevan R)
  • Fixed bug causing link targets not to appear in the output.
  • Setting BRIEF_MEMBER_DESC set to NO for a member that did not have a detailed description while setting ALWAYS_DETAILED to YES caused the documentation not to appear in the output at all.
  • Fixed todo list linking problems for hyperlinked pdf output and grouped pages.
  • Putting a function declaration and its definition in the same group could lead to wrong links using @ref.
  • Undocumented but grouped members did not appear in the output.
  • The declaration and definition of overloaded global functions was not always properly matched, causing functions not to appear in the documentation.
  • Nested C-comments were confusing the preprocessor, causing it to incorrectly skip comment blocks.
  • An empty line was not always being recognized as a paragraph break (thanks to Stephen Pope for the fix).
  • An aliased \endif in a skipped section was not handled properly.

Doxygen Release 1.2.17

Changes

  • XML: The index of the XML output now has @refid instead of @id's, and includes a "kind" attribute for the compounds and members for easier filtering.
  • Improved dot image generation speed for large projects by changing the way the best-fitting graph is computed (thanks to Philip Bergen for the suggestion).
  • @name now automatically starts a member group section (previously a @{ command was needed). The member group continues until a new @name command is found or until the end of a compound is reached. @{ ... @} commands can still be used for backward compatibility or to end a member group before the end of a compound. @defgroup and friends still require explicit @{ ... @} blocks.
  • Changed the way \todo, \bug, and \test are handled internally. This should have no visible effect on the outside, but makes it much easier to add similar commands and also saves a bit of memory on average.

New features

  • Added initial support for parsing PHP code (thanks to a patch by Jan Borsodi). For a PHP file the following additional commands are available:
    \private
    makes the current item private
    \protected
    makes the current item protected
    \public
    makes the current item public
    \privatesection
    changes to private section(same as private: in C++)
    \protectedsection
    changes to protected section(same as protected: in C++)
    \publicsection
    changes to public section(same as public: in C++)
    \static
    changes the current item to static
    \pure
    changes the current item to pure virtual
  • New command @copydoc that can be used to copy a documentation block of some item and paste it in another documentation block.
  • i18n: Added support for the Serbian language (thanks to Dejan Milosavljevic). Included a new language option Japanese-en for combined Japanese and english.
  • Included patch for dealing with variable argument macros in @param (thanks to Alfred Heggestad).
  • Added new option MULTILINE_CPP_IS_BRIEF to make doxygen treat a multi-line brief comment block as a brief description. Set this to YES to obtain the behaviour of version 1.2.15 and earlier. Default as of version 1.2.16 is to treat multi-line C++ comment block as a detailed description.
  • New option CHM_FILE to set the .chm file (and path) to use for Html Help output.
  • New option HHC_LOCATION to set the location of the Html Help compiler. If given doxygen will automatically run the compiler to create the .chm file.
  • Included .dsp & .dsw files to build doxygen from DevStudio in the wintools dir. Thanks to Simon Goodwin for providing these.
  • Included new command $year that can be use in header and footer files to produce the current year (thanks to Michael Beck for the patch).

Bug fixes

  • Fixed lock-up bug when writing RTF output with verbatim sections.
  • The tree view showed entries in C++ style even if OPTIMIZE_OUTPUT_JAVA was set to YES.
  • Documentation blocks for function arguments in a documented header file did not show up if the function definition was parsed first.
  • Inheritance relations in Java where not always correctly resolved if the base class was explicitly scoped.
  • Fixed some non-standard conformance issues in the HTML output (thanks to John Levon for the patch).
  • Usage relations for variables whose type was a qualified typedef were not properly resolved.
  • Fixed potential crash bug (null-pointer dereference) in source browser parser.
  • Comment blocks ending with an empty /// comment line were not properly handled by the comment conversion code.
  • @relates is no longer needed for a friend function documented in the source file (thanks to Johan Eriksson for the fix).
  • Doxygen could link include files to non-existing source files, if they pointed to external files but were also found in the include path.
  • "make install_docs" was broken.
  • Fixed parse bug for conversion operators of the form "operator ::X*()"
  • XML output fixes:
    • derivedcompoundref was not terminated properly.
    • innerpage and innergroup were closed twice.
    • Removed auto-generated section titles from the detailed descriptions in the XML output.
    • para tags in simple section in the XML output were not properly matched
  • PDF output fixes:
    • Fixed pdflatex reruns in the Makefile when USE_PDFLATEX was YES. It should now run the proper amount of times (thanks to Simon Goodwin for the fix).
    • Links to items in the bug list were broken for the PDF output.
    • Fixed bug in PDF output that resulted in links to non-existing source pages.
    • Fixed bug in URL parsing that caused invalid PDF output for the doxygen manual.
    • Doxygen logo did not appear in the PDF manual.
  • RTF output fixes/improvements by Janet Swisher, Gordon Machel & Martin Vuille:
    • Included fix for loading RTF style-sheets
    • reference list and title were merged
    • First word of company name was lost.
    • Main page title was not substituted.
    • There were two pages numbered "i" in the document.
    • Added a heading to the table of contents page.
    • Depending on the order in which things are documented, there were extra, empty paragraphs thrown in.
    • Added a number of debugging comments and changed some existing ones to make it easier to relate the comment in the RTF to the name of the method that generates it.
  • operator|() caused invalid entries in the latex index.
  • Fixed bug parsing URLs with curly braces in documentation blocks.
  • Html help output now uses the correct language code if non english language is selected.
  • Fixed bug in generate makefile for latex output (thanks to Petr Prikryl)
  • Fixed source browser bug: a comment just before a function body confused the parser.
  • Fixed problem handling function typedefs.
  • \endif appeared in output when used via ALIASES in a brief description.
  • Included heuristic to distiguish between a variable definition with initialization via a constructor and a function prototype (e.g. "Test var(initVal);", v.s. "Test func(SomeType);").
  • Fixed lock-up problem when to @brief were put after each other in a comment block.
  • Images for include dependency graphs were unclickable.
  • Members in source fragments and examples were not linked to their member group documentation if available.
  • For initializers of the form ' ', the space was removed in the output.
  • \dotfile generated files did not get generated correctly because dot could not find the specified font.
  • Third argument of \class did not always work.
  • The pattern argument for the @skip, @skipline, @until and @line commands now extents until the end of the line (as suggested by the documentation) instead of just the first word.

Doxygen Release 1.2.16

Changes

  • Verbatim and preformatted sections are now represented with a new "preformatted" tag in the XML output.
  • The HIDE_UNDOC_RELATIONS option is no longer depending on HAVE_DOT being set to YES.
  • A dot is only added after a brief description if it starts with a capital (thanks to Ondrej Jombik for the patch).
  • Doxygen now treats blocks of C++ comments such as //! Detailed //! Description as a detailed description (such blocks used to be treated as brief descriptions!). A single line C++ comments still represents a brief description, for multiline brief description an explicit @brief can be used. See the updated documentation for more examples.
  • XML: Added class name to inheritance relations that are written to the XML output.
  • Images included with \dotfile are now centered in the latex output (thanks to Nils Strom for the patch).

New features

  • Included language update for Slovene.
  • CGI_URL now allows URLs that start with cgi: (for KDE KIO slave support)
  • Made include dependency graphs available from the XML parser API.
  • Added patch to support multi-byte RTF output (thanks to Sato Ryunosuke)
  • Gary Lee added language support for Chinese-Traditional.
  • Thanks to a patch by Loïc the RTF output now supports (non-nested) tables.
  • Added compilation support for cygwin (win32-g++ target). Thanks to Ryunosuke Sato for the patch.
  • Added new option DETAILS_AT_TOP to put the detailed documentation at the top of a documentation page where normally only the brief descriptions would be shown (based on a patch by Elliott Hughes).
  • XML: Added member template parameters to the XML output.

Bug fixes

  • Improved portability of the png code: updated zlib to version 1.1.4, replaced K&R style code by ansi code, fixed compile problem with pngenc.cpp on some platforms.
  • Fixed recursive lock-up problem that could occur for certain cases in which recursive template inheritance was used.
  • The cross-package inheritance relations were broken for Java code. I fixed this by treating Java import statement as C++ using statements. Please report any problems that remain.
  • Alias commands put in separate parameter documentation blocks were not resolved.
  • The documentation for arguments, documented with a seperate documentation block, was not consistently shown in source and header files, depending on the order of the input files.
  • The characters '(', ')', '$', ''', and ';' were not recognised as part of an URL.
  • Grouped enum values could not share the same documentation block even when DISTRIBUTE_GROUP_DOC is YES.
  • The end caption tag was missing a closing > in the XML output.
  • Fixed bug with table captions in XML output.
  • Removed warning when documenting include guard-like defines.
  • The \package command was broken. Fixed cases where :: appeared in the output when OPTIMIZE_OUTPUT_JAVA was set to YES.
  • Fixed scoping problem using \class for documenting nested classes inside template classes.
  • Fixed invalid output bug when putting "-" items inside @arg or @li lists.
  • Fixed problem referencing functions using {@link ... } with explicit argument lists.
  • Fixed bug when parsing "typedef struct{}TypeName;" (i.e. without a space before the struct).
  • Fixed argument matching bug for global functions having undocumented classes, imported via using declarations, as their parameter type.
  • Fixed bug in conditional section handling for cases like: @if guard text @else more text @endif
  • The html help files did not honour the HTML_FILE_EXTENSION settings.
  • Removed bogus warning when using @param for function-type parameters.
  • Include statements in the source browser output now link to the right include file in case of ambiguities.
  • The include lines in the file documentation didn't link to files that were imported from tag files.
  • The include dependency graph did not show include files if they were directly or indirectly imported from tag files. Existing tag files need to be regenerated to make use of this.
  • XML: The refid of members in listofallmembers section in the XML output was wrong. The ulink tag did not end properly in the XML output. The Value of ambiguityscope in the XML output was not properly escaped. LaTeX page reference texts appeared in the XML output.
  • Included language update for Brazilian.
  • Doxygen now treats "const int *" and "int const *" (i.e. with reordered const) as equivalent types.
  • The preprocessor now avoids recursive includes, which helps to parse files that do not have proper #ifndef-#define .. #endif guards.
  • Matching arguments with types "unsigned long int" and "unsigned long int blah" removed argument name. Same for "int" and "const int blah".
  • Fixed LaTeX output bug that occurs when using \dotfile in combination with USE_PDFLATEX = YES (thanks to Nils Strom for the patch).
  • Links to static functions in the documentation, now point to the local file in case of ambiguities.
  • Comments of the form /*/**/ confused the source browser.
  • Fixed bug parsing "class C : public ::C {};" inside a namespace.
  • Fixed bug in tag file reader when parsing includes.
  • The include dependencies were wrong if an include file name was part of the input but the #include specifically asked for another file not part of the input but with the same name.

Doxygen Release 1.2.15

Changes

  • On request of Richard Stallman and others I replaced all generated GIF images with PNG images. See http://www.burnallgifs.org for the motivation.
  • The Documentation of function definitions and declarations are now always merged. References/Referenced by relations are now equal for function declarations and definitions.
  • When @retval commands are used to document parameters, doxygen will no longer produce a warning message for that parameter. @retval can still be used to document non parameters such as the return values of a function.
  • #define A(x) x /**< a define */
    will document a define, while
    #define A(x) /** an argument */ x
    will document the argument of the define
  • Links in the documentation to const/volatile members are now possible by explicitly specifying "f() const" or "f() volatile" in case a non-const/volatile "f()" also exists.
  • Doxygen now warns about undocumented compounds (thanks to Itai Frenkel for the patch).

New features

  • Included language update for Russian and Romanian translations.
  • EPS images included with "\image latex" are automatically converted to pdf's when USE_PDFLATEX is set to YES.
  • Added two new commands: LATEX_CMD_NAME and MAKEINDEX_CMD_NAME to set the name of the latex and makeindex tools to be used for latex output (thanks to Konno Akihisa for the patch).
  • Improved support for Java. Packages are now treated like C++ namespaces and there is a new option OPTIMIZE_OUTPUT_JAVA that, when enabled, provides more Java-oriented output. Please report any Java-related problems that remain.
  • Extended XML parser API (see addon/doxmlparser/include/doxmlintf.h) with full access to documentation blocks. Made inheritance/collaboration diagrams accessible via the XML parser API (see addon/doxmlparser/include/doxmlintf.h). Reorganised the internals of the XML parser so the API does not require destructors. Made the parser more portable (it should compile with gcc and M$ visual C++ now).

Bug fixes

  • Using "@param x,y,z" resulted bogus warnings about undocumented parameters.
  • "doxygen -w latex header.tex doxygen.sty Doxyfile" caused a segmentation fault (thanks to Aric Cyr for the patch).
  • Fixed argument matching problem that occurred in some rare cases that involved "using" of namespaces.
  • Using /**< Brief.\ more brief. Details. */ with ENABLE_JAVADOC = YES, now removes the slash just like it did with /**...*/ style comments.
  • Using an ordered, html-style list inside a @param command resulted in invalid output if list item contained blank lines.
  • STRIP_FROM_PATH now also works with Windows style paths (e.g. C:\MyPath\)
  • A module can now appear more than once in the module tree (thanks to Itai Frenkel for the patch).
  • In some cases the tree view showed leaf elements as non-leafs.
  • Fixed a number of cases where illegal characters could end up in the XML output.
  • If a function in a base class was (re)implemented by serveral classes only one of them appeared in the "(re)implemented in" list.
  • graph_legend.gif was hardcoded in translator_*.h files. Note to translators: this has affected all translator files, so please update your local translator file!
  • In some cases a grouped member within a namespace did not appear in the group's documentation.
  • Namespace members were not properly cross-referenced with in the source browser output.
  • Using directives inside anonymous namespaces had no effect.
  • Fixed bug in the preprocessor when parsing '"' as the argument to a function macro.
  • The argument of commands like \c did not produce a link to external documentation if possible, while links to local documentation were generated.

Doxygen Release 1.2.14

Changes

  • Split up the XML output into an index (index.xml) and one page per compound. This allows for faster processing and less memory consumption, when using DOM style parsers.
  • Include files are now shown in the class documentation if and only if SHOW_INCLUDE_FILES is YES.
  • Doxygen-style C comments inside macro definitions are now preserved in the output. Example:
             #define INIT(x) /*! Initializes x. */ void Init() { x = 0; }
           
  • When deriving from pure virtual members or IDL interfaces, doxygen will now put an "implements/implemented in" list in the documentation instead of "reimplements/reimplemented by".
  • Doxygen now filters out duplicate input files.

New features

  • Added a very simple metrics utility (see addon/doxmlparser/examples/metrics) which can compute some figures based on the XML output generated by doxygen.
  • Added autodetection for Darwin (MacOSX) to the configure script.
  • Added option EXCLUDE_SYMLINKS. The EXCLUDE_SYMLINKS tag can be used to select whether or not files or directories that are symbolic links (a Unix filesystem feature) are excluded.
  • Added option 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. (thanks to Darren Oldag for the patch).
  • Included update for translator.pl (thanks to Petr Prikryl)
  • updated .spec file (thanks to Emilio Riva).
  • Included patch by Jochen Hanff to make the index headings configurable via style-sheets.
  • If a comment block contains at least one @param command, doxygen now produces warnings if not all parameters of a function are documented or if the names of the parameters do not match the argumentlist. (Please report any false alarms).
  • Added new command \~language_id to create sections that are outputted for the language >language_id> only: Example:
           /** \~czech Cesky komentar \~english English comment text \~dutch 
                Nederlands commentaar \~ Common comment for all languages, 
                this tag switches off the language filter...
           */
           
    Which of the language specific fragments is outputed depends on the setting of OUTPUT_LANGUAGE (Thanks to Milan Rusek for the patch).
  • Added build support for Cygwin (thanks to Ryunosuke Sato).
  • Added new option HTML_FILE_EXTENSION to allow different file extension for the html file outputted by doxygen (like .php). Thanks to Rob Olsthoorn for the patch.
  • Added option DOT_IMAGE_FORMAT that can be used to set the image format of images generated by dot (possible formats: gif, png, jpg).
  • In the documentation of class, namespace, file and group items a list of groups to which the item belongs is put between brackets ([..]) under the title (HTML only).
  • Added "list of all members" and template parameter lists for classes to the XML output.
  • Included language updates for Chinese, Czech, French, Italian, Brazilian, Japanese, Russian and German.

Bug fixes

  • The start of a comment (/*) embedded in a page or example block caused parse problems.
  • operator%= member caused latex error when in pdf hyperlink mode.
  • fixed parse problem for global function typedefs like "typedef int f()"
  • Qt slots weren't included in the reference/referenced by relations (thanks to Gordon Machel for the patch).
  • Fixed parse problem that occurred when the <SUP> tag was used in a brief description.
  • Private members sometimes showed up in the all member list even though EXTRACT_PRIVATE was NO.
  • Doxygen now exits with code 0 if there is no error (previously it returned 1 in some cases were no error occurred).
  • Calling "doxygen -g -" now writes the config file to stdout (this already worked when using "doxygen -g-").
  • Undocumented classes exposed when setting EXTRACT_ALL to YES, could result in broken links in the class hierarchy.
  • Exception specifications in Java were not parsed properly.
  • If INLINE_INHERITED_MEMB was YES, pure vitual members of base classes reachable via multiple paths appeared more than once in the documentation.
  • Removed potential recursive loop when computing reimplements relations for template instances.
  • Fixed argument matching problem when matching "a<int *>" with a<int * >"
  • Links in the documentation of grouped namespace members were not pointing to the group but to the namespace.
  • For template specializations the title of an html page contained plain < and > characters.
  • When computing source references undocumented members could introduce non-existing relations for documented members in front of it.
  • Fixed escaping problem in Makefile generated for latex output.
  • File names were sometimes prefixed for undocumented classes in the class hierarchy.
  • When computing the list of all members, interface members are now treated as virtual.
  • Protected members of a base class did not appear as such in the list of all members of derived classes.
  • Fixed problem with ending itemized lists before paragraph commands (like @see), which resulted in invalid output.
  • The version number in config files generated by doxywizard was always 0.1.
  • Having a macro function and typedef with the same name confused doxygen.
  • An \endverbatim command at the end of a \name section was not parsed.
  • Stars (*) at the start of a line in /**< ... */ style comments after a parameter were included in the result.
  • Putting a C-style comment in a @code block was not handled properly.

Doxygen Release 1.2.13.1

Bug fixes

  • Links to grouped members were broken.
  • The Module index was broken in HTML and subgroups were still not sorted properly.
  • Selecting a non-default language was not possible in doxywizard (thanks to Heiko Schaefer for the patch).
  • Ending a dash-style list was not possible by starting a new paragraph anymore.
  • Fixed "exceptions" tag mismatch in the XML output.
  • extern "C" blocks inside source files incorrectly included header files during preprocessing.
  • Compiling doxywizard on Unix with Qt-3.x didn't work because libdoxycfg was linked with qtools from Qt-2.x.
  • Fixed potential memory corruption when generation the graphical class hierarchy (nodes were deleted more than once).

New features

  • Added support for multi-method declarations such as: int func1(),func2();
  • Included updated DTD for validating the XML output produced by doxygen, thanks to Angelo Hulshout.
  • Included support for Japanese-ShiftJIS translation, thanks to Ryunosuke Sato.
  • Included update for Slovak translator, thanks to Stanislav Kudlac.
  • Thanks to a patch by Pascal Flammant tables in the documentation can now have captions using <caption> ... </caption> within a table definition.
  • A dash-style list can now be ended without ending the paragraph. See the list-section of the documentation for an example.

Doxygen Release 1.2.13

Changes

  • Changed the way @internal works. The "For internal use only" message, now appears (along with the internal documentation) if and only if INTERNAL_DOCS = YES.
  • Subgroups are no longer sorted but presented in declaration order.
  • Members inside todo/test/bug lists are now shown with qualified names again.
  • Reorganized the XML parser. It is now structured as a library, a header file, and a test application. See addon/doxmlparser for details.

New features

  • Included languages updates for French, Portuguese, Korean, Italian, Dutch, Slovene, Brazil, German and Portuguese. Thanks to Harry Kalogirou doxygen now has support for output in the Greek language.
  • Included patch by Adam Doppelt to make doxysearch work better with windows/IIS.
  • Added more info to the XML output: include dependencies, member groups, re-implement relations, const/volatile specifiers, namespace info, related pages, inner classes, inner namespaces.
  • Added some logic to deal with member specializations. They should now be added as additional members to a class instead of being ignored and producing a warning.
  • Thanks to a patch by Bruce Korb, author of autogen, doxygen now has output support for producing autogen definition files. To do this set GENERATE_AUTOGEN_DEF to YES in the config file.
  • The \relates command can now be used for macros as well.
  • New option INLINE_INHERITED_MEMB which can be enabled to include all directly and indirectly inherited members inside the documentation of a class as if they were real members (inspired by a patch sent by Ted Drain).
  • Added option EXTRACT_LOCAL_CLASSES which can be used to show or hide classes and structs defined in source files.
  • Thanks to an install script written by David Greig, the windows version of doxygen now comes with a windows installer based on Jordan Russell's Inno Setup.

Bug fixes

  • Fixed potential bogus link in the references list.
  • Auto detection of idl files was broken.
  • Preprocessor did not parse hexadecimal values correctly.
  • Fixed XML output problem (too many </highlight> tags).
  • Documentation for nested classes inside other nested classes was not written to the output.
  • Fixed problem mixing paragraph commands (like \param) with hyphen-style lists.
  • Modules index in LaTeX was broken.
  • STRIP_FROM_PATH now works for windows-style paths as well. Thanks to Joël Conraud for the patch.
  • For functions whose declaration was grouped and whose definition contained a documentation block with a todo/test/bug item, the item did not appear in the todo/test/bug list.
  • In the source browser output, the "=" in variable initializers was outputted as "==".
  • Fixed parse problem for typedefs of function pointers returning a template instance.
  • Fixed bug in parsing method pointer function arguments of the form "void f(void (C::*m)() const)"

Doxygen Release 1.2.12

Changes

  • Improved the speed of the todo/test/bug list generation considerably.
  • The list of all members of a class now shows for each member, the class in which the member is defined.
  • Rewrote a substantial part of the source code parser (SOURCE_BROWSER = YES). It is now more context sensitive and will generate more/better links.

New features

  • Added new option HIDE_UNDOC_RELATIONS that can be set to NO to show any undocumented inheritance and usage relations from the various graphs.
  • Included updates for translations to Chinese (thanks to Charlie Liu) Slovene (thanks to Matjaz Ostroversnik), Russian (thanks to Alexandr Chelpanov), Czech (thanks to Petr Prikryl) and Croatian (thanks to Boris Bralo). Included Petr's translator adapter simplifications. Included Latin2 patch by Mitja Udovc.
  • Updated the graph legend page.
  • Added option REFERENCES_RELATION that can be enabled in combination with SOURCE_BROWSER to produce for each function a list of all called/used members/functions/variables. The reverse list can now be enabled/disabled using the new REFERENCED_BY_RELATION option.
  • Added native support for typedefs of the form "typedef void (__stdcall *name)()", where __stdcall can be any identifier.
  • Included a patch by Stephen Goudge which adds an option EXAMPLE_RECURSIVE to indicate whether or not example files should be searched recursively.
  • Included patch by Erik Zeek to add EOL translation to the config file output.
  • Doxygen now searches the current directory for source files if the INPUT and FILE_PATTERNS are empty (thanks to Johan Eriksson for ideas and code)
  • Reference to/referenced by information is now included in the XML output.

Bug fixes

  • Fixed more RTF problems and added an RTF integrity check that is performed on the generated RTF output (bracket matching).
  • Refined the macro detection in the preprocessor a little, so it does not match constructors and functions so easily.
  • the % prefix didn't work for scoped items.
  • References to groups defined in tag files did not work.
  • documentation for classes inside namespaces was generated multiple times.
  • Running doxytag on qt-3.0.0 resulted in a tag file containing non-breakable spaces.
  • The \package statement did not work correctly for packages whose name contained a dot.
  • Fixed Parser bug for java initializers of the form = "\"/*";
  • Fixed LaTeX output problem when using \par followed by a (-) list.
  • Fixed LaTeX output bug in the related page index.
  • Commands inside a conditional section would still appear in the result even if the section was disabled.
  • Included idea by Roberto Bagnara to make running "make" in the LaTeX output autodetect how many times latex has to be run.
  • Included a patch by Johan Eriksson to fix a link problem in the "list of all member" for grouped members.
  • Fixed potential crash when \todo was used without arguments.
  • The HIDE_UNDOC_CLASSES option did not work correctly for template instances when set to YES.
  • \line, \skipline and \until introduced too many new lines.
  • Doxygen did not parse "struct {} typedef S;" correctly.

Doxygen Release 1.2.11.1

Changes

  • Included update for Slovak translation (thanks to Stanislav Kudlac)

Bug fixes

  • Fixed RTF output bugs.
  • When preprocessing was disabled, the input was truncated for sources containing CR's (i.e. sources edited on Windows).
  • Syntax highlighting C-style comments was broken.
  • Links to members in undocumented groups were broken.
  • Deep class hierarchies caused "nested too deep" error in LaTeX output.
  • providing one documentation block for grouped, related members did not work.
  • Documentation pages for documented classes nested inside undocumented classes or namespaces were not generated.

Doxygen Release 1.2.11

Changes

  • Undocumented friend class declarations now link to their class if documented.
  • Undocumented template classes (and other "used" types) are now shown in the collaboration diagram.
  • Changed the look of the various indices (file/class/namespace/...) in the HTML output.

New features

  • The source browser option now generates links to (documented) globals and fields. Especially useful for C code.
  • Input containing CR+LF (DOS/Windows) or CR only (Mac) are now automatically converted to LF.
  • New config option SKIP_FUNCTION_MACROS that when set to YES (the default) makes doxygen's preprocessor automatically remove all function macros that are alone on a line and do not end with a semicolon. These are typically used as boiler-plate code and confuse the parser if not removed.
  • Added class collaboration and inheritance diagram descriptions to the XML output. Also added source browser output for each file.
  • Added a developers part to the manual, with some information on how doxygen is structured internally.

Bug fixes

  • Using HIDE_UNDOC_MEMBERS=YES and ENUM_VALUES_PER_LINE=1 resulted in blank lines in the HTML-output.
  • "friend class A::B" caused a bogus warning.
  • Fixed problem generating tag files for the Qt-3.0.0 beta releases.
  • Fixed parameter list layout problem in the HTML output.
  • Fixed some (all?) compile problems on Solaris.
  • Class hierarchy was not correct if a template class inherited from a template argument, which was also a documented class.
  • When substituting template arguments, default values of template arguments were not substituted themselves.
  • Fixed a number of XML output bugs (thanks to Christian Hammond).
  • Fixed bug parsing character literals.
  • Fixed bug in RTF output (bracket mismatch).
  • Inializer of the last enum value of an enum did not always appear.
  • Dots were removed from return types in Java.
  • In some cases a broken "More..." link was generated after a brief class description.
  • Text of a section title containing was truncated if it contained an asterix.
  • Fixed crash bug when filtering CR+LF's from input (thanks to Petr Prykril).
  • Fixed generated makefile dependencies for USE_PDFLATEX = YES (thanks to Marcus Holland-Moritz)
  • "\retval #VALUE" now links to VALUE if documented. The same works for \exception and \throws (and since the argument is a class no # is needed).
  • Sorting the alphabetical list was broken for nested classes.

Doxygen Release 1.2.10

New features

  • Relations between templates and their instances are now visualized in the inheritance and collaboration graphs. Can be disabled by setting TEMPLATE_RELATIONS to NO in the config file.
  • A Java package can now be documented using a comment block containing a @package command or by putting a documentation block in front of a package statement.
  • Added new command \dotfile which can be used to include a user specified dot file as an image in the documentation. The new config option DOTFILE_DIRS should be used to specify directories in which doxygen should look for dot files (thanks to Samit Basu for the patch).
  • Added new build target macosx-c++ to build doxygen for Mac OS X (Thanks to Jason Harris for telling me what needed to be changed).
  • Added --enable-langs option to the configure script which can be used to compile-in support for a specified set of languages (thanks to Vitaly Repin for the patch).
  • Included update for Russian & Italian translation.
  • Included translator.pl update received from Petr.

Bug fixes

  • Fix compile problem for the Irix compiler (thanks to Dirk Reiners)
  • Some generated &nsbp; entities where missing a ; in the HTML output. For some browsers this resulted in argument types & names being glued together.
  • The heading of parameter and return value lists was not bold anymore in the HTML output.
  • "Reimplemented to/from" member links now work between template base classes and their derived classes.
  • Not all documented templates class were regarded as documented (unless EXTRACT_ALL was set to YES).
  • Fixed recursive lock-up problem for recursive templates of the form: template<class T> class A : public A<typename T::B> {}
  • The labels in the alphabetical list were broken when namespaces were used.
  • An error was given for import statements in Java sources.
  • The "list of all members" was no longer generated for nested classes.
  • Fixed bug in XML output causing mis matched <para> tags.
  • Fixed parse problem for enum initializers like: "enumVal = A<T,C>::val"
  • \hideinitializer did not hide the initializer of enum values.
  • Undocumented enums and enum values now behave correctly when HIDE_UNDOC_MEMBERS is set to YES.
  • Fixed a problem with using \if inside alias definitions.
  • Fixed & changed the layout of function arguments a little.
  • Typedef struct{}Name was not parsed properly without adding more spaces.
  • Static initializer blocks were not properly parsed in Java classes.
  • Members of an unnamed namespace are now treated as static, and will only appear in the documentation if EXTRACT_STATIC is set to YES.
  • Classes are sorted by their name, i.s.o. full scope again.
  • Improved argument matching for members defined within (nested) namespaces.

Doxygen Release 1.2.9.1

Changes

  • Bug/test/todo items of members are now grouped together with their compound.

New features

  • Added three new conditional commands: \ifnot, \else and \elseif (thanks to Fabian Cenedese).

Bug fixes

  • The .spec file still assumed the --with-xmlgen switch was available.
  • Template instances caused double entries in the class list (in LaTeX) and broke RTF output.
  • \if and \endif can now be used to make structural commands like \brief, \ingroup, and \defgroup conditional.
  • The "const" in "func(B * const)" was parsed as a variable name.
  • Template specializations of the form A<N::C> where not handled properly.
  • Putting \relates in a function documentation block that was within a namespace, while referring to another namespace did not work.
  • Doxywizard always complained it could not read the config file.
  • Doxywizard did not properly update boolean and integer values.
  • Fixed recursive lock-up problem when recursive templates were used.
  • LaTeX output was broken when PDF_HYPERLINKS was enabled and templates were used.
  • Private friends were hidden even though friends have no access control.
  • Argument matching was sensitive to spaces in some cases.
  • Bug/test/todo item in class members did not always result in the generation of the list.

Doxygen Release 1.2.9

Changes

  • Friend class declarations are now treated as normal members.
  • Completely rewrote the way templates are handled. Doxygen now (internally) computes all template instances it encounters. This has the following advantages:
    • Template instances are now shown in the hierarchical index and in all class diagrams in a uniform way.
    • The list of all members is now correct for classes deriving from a template.
    Since there is a lot of new code, some more testing won't hurt to mature the code. If you are using templates, please try this version for me and report any problems.
  • Started moving the XML output generator back into doxygen. As a result the GENERATE_XML option has reappeared.
  • Function arguments names are now nicely aligned in the generated HTML output. Thanks to Joe Bester for doing most of the work.

New features

  • Added GNU install tool auto detection to the configure script.
  • Included update for French translation (thanks to Xavier Outhier) Olexij Tkatchenko has added support for the Ukrainian language. Included update for Portuguese and Brazillian.
  • Added --docdir option to the configure script.
  • Using the non-commercial version of Qt for windows, it is now possible to build doxywizard for windows.
  • Made preprocessor parse error messages somewhat more informative.

Bug fixes

  • Image references to dot images were broken in the RTF output (thanks to Henning Moll for the fix).
  • Linebreaks are now done with \par instead of \line in the RTF output (thanks to Henning Moll).
  • Removed bogus warnings when parsing tag files.
  • The detailed description in a @name block can now be more than plain text.
  • Included fix for the tree view script for the mozilla browser (thanks to Alec Panovici).
  • Grouping members with the same signature but with a different scopes is now possible.
  • Related functions could not be grouped.
  • MAN_LINKS option was broken (fixed by Patrick Ohly).
  • Including a file with \include in LaTeX caused the leading text to appear in a smaller font size.
  • Improved the documentation and spec file (thanks to Jens Seidel). Fixed some typos in the docs. Thanks to Wouter Slegers.
  • JavaDoc style links such as @{link #var} and @{link #var label} now work.
  • "doxygen -g -s" now creates a file named Doxyfile i.s.o "-s"
  • Fixed a null pointer referencing problem (thanks to Nick Pratt)
  • 8-bits characters are now correctly handled within the argument of \b, \c or \e.
  • Reimplemented links were broken for grouped members (thanks to Johan Eriksson for the fix).
  • Enabling the Tree view didn't result in proper RTF and LaTeX output (thanks to Paul Sydney for the fix).
  • Merged patches by Joe Bester:
    • Could not link to @anchors in the main page on external packages.
    • All external modules and pages were linked to or appended (even the TODO page, etc), even when EXTRACT_ALL is set to NO.
    • The section containing structs and unions is labeled "Class Documentation" (in the English translation) even when the OPTIMIZE_OUTPUT_FOR_C was set to YES.
  • using the IDL keyword "import" in other languages did not work correctly.
  • members of a privately inherited base class were not shown in the list of all members, while they were accessible from the derived class.
  • Reworked part of the template handling. Doxygen should now be capable of handling nested template classes correctly. Please test this if you are using these contructs. Thanks to Christoph Koegl for providing some difficult test cases.
  • Fixed parse problem when parsing << as part of the first argument of a typedef.
  • Further improved typedef resolution.
  • The LATEX_HEADER-config option disabled the \mainpage-output (thanks to Eric Reinhart for the fix).
  • Merged a patch by Erik Zeek, to allow compilation under BCB5
  • Spaces in arguments of preprocessor macros were not treated properly.
  • Fixed argument matching bug that caused doxygen to treat f(type t) and f(type_t t) as the same function. "void func(const ::A)" was interpreted as "void func(const::A)", where "const" would have to be a class name.
  • static file members were not auto-linked even if EXTRACT_STATIC was set to YES.

Doxygen Release 1.2.8.1

Changes

  • Enum values of a grouped (with @ingroup) enum are now automatically added to the same group.

New features

  • Included update for Brazilian translation.
  • Add support for &lt; &gt; &amp; &apos; &quot; in the documentation, since these commands after occur in Java documentation.

Bug fixes

  • Parameters appeared in the documentation for undocumented arguments (and twice if they were also documented with @param).
  • Specifying boolean tags twice in the config file resulted in an invalid value (both boolean values were appended).
  • Fixed a number of typos (thanks to Jens Seidel).
  • When a paragraph header was directly followed by an item list doxygen did not render the first item properly.
  • The "More..." link was often omitted for grouped members.
  • "dangerous" characters like ":" are now escaped from man page file names

Doxygen Release 1.2.8

Changes

  • Doxygen now uses a more natural naming scheme for man pages.
  • Man page and rtf output are now disabled by default.

New features

  • The dot generated inheritance and collaboration graphs for classes should now show the proper template instantation for the derived/used classes. For instance it should show that class S uses class V (indirectly) in the following example:
               class V {};
               template<class T> class U1 { T *m_t; };
               template<class T> class U2 { U1<T> *m_t; };
               template<class T> class B1 { U2<T> *m_t; };
               template<class T> class B2 : public B1<T> {};
               class S : public B2<V> {};
           
    Please report any example of class hierarchies that are not shown properly.
  • Added doc/translator.pl script created by Petr Prikryl. Its main purpose is to extract information from doxygen's sources related to internationalization (i.e. the translator classes), to avoid duplication of information (i.e. doc/language.doc is now generated) and to generate reports about the status of the translations (e.g. missing methods).
  • Stanislav Kudlac added support for Slovak language and Erik Søe Sørensen added support for Danish. Applied language updates for Italian, Croatian, Spanish, Czech, German & Russian.
  • Added support for "KBD" HTML tags (thanks to Albin Wu).
  • Added man patch by Patrick Ohly which allows to create freestyle man pages using \page and puts man page with non-default extension in the correct directory.
  • Added MAN_LINKS option (thanks to Patrick Ohly for the patch).
  • Added grouping patches by Patrick Ohly: There are now three commands to define a group:
             \defgroup name title
             \addtogroup name [title]
             \weakgroup name [title]
           
    \defgroup must be used exactly once for a group, so you should provide a title. Without the title you will get a warning and doxygen will use the name as title (this is the old behaviour).

           /** \addtogroup name */
           
    can be used to add documentation or members to a group (as in 1.2.7), but the group is created if it doesn't exist yet. You can provide the title later with another block:
           /**
            * \addgroup name title
            * documentation
            */
           
    Setting different titles will trigger a warning without overwriting the title once more.

    \weakgroup is exactly the same as \addtogroup, but if a member is put into such a group with \weakgroup name @{ @} and into another group with \[def|addto]group @{ @}, then it will be placed into the other group without issuing a warning.

    Actually there is a four-level hierarchy for grouping with (from strongest to weakest) \ingroup, \defgroup, \addtogroup, \weakgroup. You will get warnings when putting members into groups with commands of the same level, but only when you really document this member. This will not trigger a warning and put variable a into Group1:

           /** \addtogroup Group1 */
           /*@{*/
           /** this is the real group */
           extern int a;
           /*@}*/
    
           /** \addtogroup Group2 */
           /*@{*/
           extern int a;
           /*@}*/
           

Bug fixes

  • Fixed a bug in the LaTeX output generation (empty lists).
  • Doxygen can now distiguishing f(const A) from f(const B) even though they match from a syntactical point of view.
  • A template base class that is actually an inherited template argument of the derived class is no longer shown in the output indices and hierarchies.
  • TOC_EXPAND could result in a broken tree view (patch by Alexandr Chalpanov).
  • If a base class had member names which has the same name as enumerator values in a derived class, the enumerator values did not show up in the documentation (thanks to John Harris for reporting this).
  • Applied a number of patches sent by Jens Seidel.
  • Fixed compiler limit problem on Windows (thanks to Trevor Robinson).
  • Add -dBATCH in system calls to ghostscipt (needed for formulas) to avoid a command prompt for newer versions of ghostscript (thanks to Marvin Wolfthal).
  • In some situations doxygen wanted to write a files containing a \n.
  • Environment variables can now also be used for non-string values in the config file, like for example QUIET = $(QUIET_ON)
  • Fixed a number of typo's in the docs (thanks to Philippe Lhoste & Jens Seidel).
  • Inheritance through typedefs within a namespace did not yield the correct inheritance diagram.
  • References to anchors in grouped members or pages were not correctly resolved.
  • Fixed a problem with argument matching for arguments that contained classes imported via a using declaration.

Doxygen Release 1.2.7

Changes

  • The configgen tool is now replaced by a more dynamic parser. This will allow future output generators to add specific options without changing or recompiling the doxygen engine. Doxywizard has also been updated to use this new parser. Developers that wish to add new configuration options, please look at Config::create() in src/config.l
  • Changed the way the translators work internally (thanks to Petr Prikryl for ideas and code) and updated the documentation regarding language support and maintenance. Users of languages other than English will get a warning message if the translation for their language is not up to date.
  • Did some internal cleaning up to make things more consistent and easier to maintain. Please let me know if you think something has been broken in the process.
  • Doxygen now uses a more unique output file name mangling scheme, which generates unique file names even if entity names (like class names) only differ in case.
  • Setting ALLEXTERNALS = NO now hides external pages in the page index.

New features

  • \image is now supported for RTF output (thanks to Joe Ninety).
  • New RTF_EXTENSIONS_FILE that can be used to configure the RTF output (thanks to Joe Ninety for the patch).
  • Added new command \htmlinclude that can be used to include a HTML file as is in the HTML documentation. (thanks to Uwe Wojak for the patch)
  • &nbsp; can now be put in the documentation to force a non-breakable space.
  • Included support for the gcc extension #include_next (thanks to Jac Goudsmit for the patch).
  • Included translation for Brazilian Portuguese sent by Fabio Jun Takada Chino. Add update for the Czech translation (thanks to Petr Prikryl). Also included updates for German (thanks to Jens Seidel), Russian (thanks to Alexandr Chelpanov) and Croatian (thanks to Boris Bralo).
  • Added RPM spec file update by Jens Seidel.
  • Added SHORT_NAMES option which can be set to YES to make doxygen generate short (but non-informative) output file names.
  • Added new command \addtogroup that can be used to extend a group defined with \defgroup with extra members and/or documentation.

Bug fixes

  • Inline sources weren't appearing for undocumented non-inline members.
  • Doxygen did not subgroup in case the parent group was found after the child group. (thanks to Johan Eriksson for the patch that fixes this).
  • Specifying a directory at the INPUT that ends with a \ did not make doxygen recurse the down the directory tree in Windows.
  • Fixed two small bugs that caused segfaults on NetBSD and Linux on 64bit Alpha's (thanks to Rex McMaster and Ovidiu Toader).
  • "Referenced by" section now starts at a new paragraph (thanks to Joe Ninety).
  • Setting OPTIMIZE_OUTPUT_FOR_C still produced some C++-ish sentences for the list of all struct/union fields.
  • Undocumented friend functions were listed as friend classes.
  • A CORBA IDL union with a switch was not always recognised correctly.
  • doxygen did not handle try-function-blocks with multiple catch clauses properly.
  • \bug and co. were not working for static members.
  • Formulas weren't correctly re-generated when changed.
  • relative include paths containing /../ were not linked, since they were not normalized.
  • Locally included files where not searched in the directory containing the file that did the inclusion, only in the paths specified with INCLUDE_PATH.
  • Fixed problem with numbers in the generated eps file for non-english systems (thanks to Vsevolod Novikov).
  • Generated bookmarks in the RTF output not starting with a letter caused problems (thanks to Jonathan Beaupre for the fix).
  • Putting &aring; in the docs wasn't working as expected.
  • Fixed a number of typo's in the docs (thanks to Jens Seidel and Philippe Lhoste).
  • Autolinking could create links inside user defined HTML links.
  • Email addresses in the docs starting with an "a" and put inside sharp brackets were not properly displayed (thanks to Abramo Bagnara for the fix).
  • Fix several man page output bugs (thanks a patch by Patrick Ohly).

Doxygen Release 1.2.6

Changes

  • The \bug command now works like the \todo and \test commands; each item documented with \bug will be cross-referenced with a bug list. The list can be disabled by setting GENERATE_BUGLIST to NO in the config file.

New features

  • Included updates for Croatian, Czech and German, Japanese, Italian and Russian translations.
  • Added option GENERATE_CHI that can be used to control whether or not an .chi file should be generated by the HtmlHelp compiler (default is NO).
  • Added option DOT_CLEANUP that when set to NO leaves the intermediate dot files in the output directory.
  • Added option BINARY_TOC to enable/disable use of a binary table of contents in a .chm file (thanks to Martin Slater for the patch).
  • Added option TOC_EXPAND to when enabled shows the members of a group in the treeview and HTML help table of contents (thanks again to Martin Slater).
  • Included group support for man page output (thanks to Joe Bester for the patch).
  • Added option SHOW_USED_FILES that can be used to disable the list of used files normally generated at bottom of the documentation of classes and structs (thanks to Joe Bester).
  • Updated the doxbar tool:
    • the addin no longer requires administrator privileges to work (thanks to Michael Beck)
    • the existance of files is now checked (thanks to Pekka Pessi).
    • .odl and .inl files are recognised (thanks to Pekka Pessi).

Bug fixes

  • doxygen.css was also used by the treeview even if the user specified his/her own stylesheet.
  • Inline source blocks (INLINE_SOURCES=YES) were sometimes truncated at the wrong closing bracket (thanks to Jac Goudsmit for the fix).
  • Some references to subsections were not correctly generated (thanks to Stefan Ruppert for the fix).
  • Fixed IDL union parse problem (thanks to Richard Hash).
  • Latex output sometimes contained $\ast$ for code fragments.
  • lonely *'s were not removed inside a <pre> and <code> blocks.
  • Applied patch sent by Joe Bester to make the treeview javascript work with Mozilla. Still has some problems though.
  • Fixed a bug in code parser regarding string detection, inside the argument list of a function.
  • Using a command alias starting with \class (or other structural commands) did not give the expected result.
  • A function pointer returned as the template argument of a template class that itself is the return type of a function was not parsed properly.
  • In IDL, typedef's followed by an attribute list where not parsed properly.
  • The list of all members now shows all privately accessible members if EXTRACT_PRIVATE is set to YES, instead of just the non-inherited private members.
  • Fixed autolink problem for grouped members.
  • Mutliple static global functions with the same name (but in different files), which were forward declared, could make doxygen put the wrong documentation block at the wrong global function.
  • Support for Norwegian was not enabled.
  • The correct charset is now set when the treeview is used (thanks to Boris Bralo).
  • For inline source fragments of member functions, the types of the arguments are now also taken into account for cross-referencing.
  • A sentence ending with a dot, directly followed by a \n was not handled correctly.
  • File reference extracted from a tag file could something cause doxygen to generate a bogus warning.
  • Parsing large arrays of hex numbers took very long when the source browser was enabled.
  • Fixed install rule in the Makefile
  • Doxygen now parses try-function-blocks correctly.
  • A zero initialized function pointer inside a namespace was misinterpreted as a pure virtual function.
  • Applied Joe Bester's patch that fixes some LaTeX output problems.
  • Java Package info was not correctly read from a tag file.
  • Todo items in the documentation of grouped members were not correctly referenced from the todo list.
  • Removed bogus "a" entries from appearing in doxysearch's search results.
  • Putting <a href="..."><img src="..."></a> in the docs will now work as expected for HTML.
  • Fixed problems with >pre>...>/pre> block in LaTeX.
  • Putting &ccedil; in the docs now preduces a c-cedille.

Doxygen Release 1.2.5

Changes

  • Split up doxygen into a library and an executable part, and moved the XML generation part to a separate front-end (see addon/xmlgen).
  • Having SOURCE_BROWSER set to YES does not automatically imply that a member is documented.
  • Typedefs of classes are now shown in (dot) inheritance graphs with their typedef name instead of the resolved name.
  • Upgraded Qt files to 2.2.3 to fix some compile issues.

New features

  • Added initial support for Java. The parsing of Java code should be ok. There is a new "packages" index, with a list of all parsed Java packages, each of which can be documented (but not yet in the Java way using package.html) and contains links to the interfaces and classes in the package. The code parser still needs work (It doesn't do much cross-referencing yet). Also any explicit package scope for classes is basically ignored, so you cannot have two classes with the same name in different packages. Let me know if you know of other improvements.
  • Added support for the Java style of linking (using {@link package.object#item()} as syntax)
  • Added file, compound and namespace members to the treeview index.
  • New configuration option MAX_INITIALIZER_LINES that can be used to control when/if the initial values of variable and defines are shown in the documentation.
  • OPTIMIZE_OUTPUT_FOR_C flag that when set to YES makes doxygen produce output that looks more natural for C programmers.
  • Included Czech language update sent by Petr Prikryl.
  • Added "Binary TOC=YES" and "Create CHI file=YES" to the HtmlHelp project file for better integration with MSDN.
  • I've updated the doxbar tool:
    • sources are appended to the INPUT line of the template config file
    • sources mentioned in the .dsp with quotes (i.e. "c:\bla.cpp") are now handled properly (thanks to Robert Radtke for the fix).

Bug fixes

  • Fixed 0-pointer bug that could crash doxygen in some cases.
  • Starting a list in a brief JavaDoc-style description splitted the list into two invalid parts if a list item ended with a dot.
  • Fixed a problem with linking to grouped class members.
  • Indenting of code fragment in LaTeX output was not always correct. Also for code lines starting with a * the * was removed.
  • Typedefs where not properly extracted from tag files.
  • Links to operators in a "See also" section did only work if the arguments list was given.
  • Fixed parse bug in the code parser for the case where "<" and ">" were found on a line but couldn't possibly be a template scope.
  • The "More..." links was incorrect for members of class grouped with @ingroup.
  • Fixed preprocessor parse bug that occurred when parsing string literal "...\\" as an macro argument.
  • Fixed buffer overflow problems when parsing very long input lines (thanks to Arnault Bonafos).
  • References to pages and anchors imported via tag files did not work.
  • Local references to page anchors did not work.
  • Windows only: doxygen leaked process handles while running dot (thanks to Jeroen ter Hofstede for the fix).
  • Undefining (with #undef) a define set using PREDEFINED now longer has an effect.
  • Functions appeared twice in modules if the prototype and definition did not match exactly.
  • the word "operator" in todo items caused problems.
  • Fixed some more problems with references to external pages, local references to sections, and naming conflicts with multiple todo/test lists.
  • "char a:1, b:2" resulting in output including both bitfields for b.
  • The protection level of the members in the all-member list was not always correct.
  • Fixed some typos in the Dutch and German translations.
  • \todo's in the docs of #define did not end up on the todo list.
  • "typedef volatile struct {} name;" was not handled properly.
  • HTML header and footer file are now read only once.
  • Fixed 2 memory leaks.

Doxygen Release 1.2.4

Changes

  • New XML-based tag file format.

    Note: If you are already using tag files, you need to regenerate them, because the old format is no longer supported!

  • Removed the "No description available" for classes without brief description in the compound list.
  • User defined groups (a.k.a. modules) are now shown in a hierarchy.
  • If a function and its prototype are both inside different documented files then they may both be documented separately and will appear as such in their file documentation If you only document the header file and not the source file you can still put your documentation in front of the function definition as before.
  • For unresolved base classes of a class inside a namespace, doxygen now guesses they are defined outside the namespace (was inside).
  • Performance: replaced O(n^2) sort routines for member lists with O(nlog(n)) versions.

New features

  • There is now an HTML Help like tree view, that can be enabled by setting GENERATE_TREEVIEW to YES. This feature requires a browser that supports frames and javascript. Note that frame/page-resizing requires a manual reload with Netscape 4.x at the moment (it is a known netscape bug). (thanks to Ken Wong for providing the code to generate the tree in the proper format).
  • Added new option TREEVIEW_WIDTH that can be used to set the initial with of the treeview frame.
  • A warning is now generated for invalid \link targets (again thanks to Ken Wong).
  • Wang Weihan sent an update for the Chinese translation which is now included. Included update for the Russian and Italian language as well.
  • Support for Borland C++ and MINGW compilers for Windows (thanks to Oliver Brandt for the patch).
  • Groups and pages defined in external documentation (i.e. with tag files) can now be referenced using \ref.
  • Pages can now be put into groups using \ingroup (thanks to Ken Wong). A group with only pages is rendered as a page (the group itself) with subsections (the inserted pages).
  • \ingroup can now be put in a one line comments (thanks to Patrick Ohly)
  • \ingroup in a comment block before a comma separated list of variables is now applied to all variables (as is the documentation itself). (thanke to Patrick Ohly for the patch)
  • @{ .. @} blocks can now be used for normal groups as well (thanks to Trevor Robinson for the patch). Here is an example:
           /** @defgroup mygrp My Own Group
            *  @brief My brief group description.
            *  @{
            */
    
           /** @name My member group 
            *  @{
            */
           /** This is a function */
           void func1();
    
           /** Another function */
           void func2();
    
           /** This is a typedef */
           typedef int Int;
    
           /** @} */
    
           /** This is a variable */
           int var;
    
           /** This is a define */
           #define DEF def
    
           /** @} */
           
  • Normal groups can now also be nested using /*@{*/ ... /*@}*/ blocks (thanks to Patrick Ohly for the patch)

Bug fixes

  • If source files were put in the input before header files, the declaration against definition matching did not work for global functions (thanks to Frank Warmerdam for reporting this).
  • The template argument type and name of template functions were not separated by a space.
  • A comma separated list of member reference variables (like int &i,&j;) was not parsed correctly.
  • Removed bogus warning when excluding non-existent files or directories
  • Fixed problem parsing nameless bit padding fields.
  • Fixed a pointer bug in the XML generation that could crash doxygen.
  • The code parser did not cross-reference functions inside namespaces and nested classes.
  • Only the first member of a member group was shown in a group definition.
  • REPEAT_BRIEF = NO now works for class, namespace and file documentation as well.
  • No macro-expansion was done on a file that was #include'd in a body of a class or enum.
  • Fixed macro concatenation bug in the preprocessor.
  • Global functions that were \ingroup'd could appear twice in a group in some cases.
  • % and & can now be used in the URL in the documentation.
  • \c,\e and \b now also generate a link if they have the name of a documented file as their argument.
  • Made the FILTER_SOURCE_FILES actually do something (it was always treated as enabled).
  • Fixed two bugs in the autolist feature (thanks to Ken Wong)
  • Fix macro expansion bug in the preprocessor, when macro's where used as the argument of an #include.
  • // did not work inside the argument of a \todo or \test command.
  • Doxygen did not parse arrays of function pointers properly.
  • Fixed parse bug for templates with nested template arguments.
  • Fixed parsing problem for template arguments containing << or >> operators
  • Fixed some problems with the DOT_PATH config option on windows.
  • Group title and file names are now shown in the latex index instead of the label names.
  • Portability: Added workaround for SGI MipsPro compiler, that (hopefully) prevents it from crashing while compiling doxygen. Worked around a number of compile problems with HP's C++ compiler.
  • Fixed problem with doxygen calling epstopdf.bat in Windows.
  • Fixed some problems that occurred when regenerating the doxygen manual on Windows.
  • Fixed some output formatting problems regarding templates.
  • Global functions, typedefs, and enums did not get linked when were read in via a tag file.
  • Using /* inside an \code ... \endcode block confused the parser.

Doxygen Release 1.2.3

Changes

  • enum values are now packed in groups of 4 in the declaration part of the HTML docs.
  • JAVADOC_AUTOBRIEF is now set to NO by default, because too many people expect the JavaDoc-style to behave as the Qt-style and not in the way described in the JavaDoc spec.
  • The distribution now includes the part of Qt-2.2.0 that is needed for compilation of doxygen, doxytag, and doxysearch. I've also created the missing files for Windows. This allows compilation of doxygen on systems without X11 or the full Qt. For doxywizard Qt-2.2.x is still required however.

New features

  • Support for the Slovene language (thanks to Matjaz Ostroversnik)
  • Bit fields for struct members are now shown in the documentation.
  • Enabled "favourites" and "Full text-search" for the generated HTML Help browser files.
  • Added support for M$-IDL properties. The "methods:" section now also works.
  • Added support for Borland C++ builder "__published:" and "__property:" sections. (__published: is just treated as public:).
  • Included update for the Czech language. Thanks to Wang Weihan there is also support for Chinese output now.
  • Added a config option WARN_LOGFILE to log warnings to a file for those people that have to use certain "operating systems" that do not support redirection of stderr to file.
  • Added a config option GENERATE_LEGEND that can be used to disable the legend page normally generated for explaining dot graphs.
  • Thanks to a patch send by Micha Bieber, doxygen can now be run from inside doxywizard.
  • Environment variables can now be used in the @INCLUDE_PATH and @INCLUDE tags in the config file (thanks to Stephen Goudge).
  • Windows compilation/installation instructions are updated (thanks to Petr Prikryl)
  • New config tag ENUM_VALUES_PER_LINE to set the number of enum values that are grouped on one line (default=4).
  • #include's inside the body of a class are now expanded.
  • The source browser files can now by filtered using the INPUT_FILTER if FILTER_SOURCE_FILES is set to YES (thanks to Paul Strauss).

Bug fixes

  • For #foo in member documentation doxygen was trying to find a global variable named foo instead of a member. Use ::foo to make an explicit link to a global variable in case there is also a member named foo.
  • A bullet list ending with a \par sometimes caused the paragraph to be indented.
  • When STRIP_CODE_COMMENTS was set to NO, and /*!< .. */ style comments were used, the code parser got out of sync with the documentation parser.
  • (Hopefully) fixed some Solaris compile problems (thanks to John Sturton).
  • documentation for private slots appeared in the documentation even though EXTRACT_PRIVATE was set to NO.
  • \relates was not working for nested classes or classes defined within a namespace.
  • namespace alias support was broken with respect to inheritance relations containing aliased namespace names.
  • The documentation of members that are put into a group (with \ingroup) is now removed from the natural container of the member. Also the links are now corrected.
  • Links from the code parser to static global functions are now always pointing to the correct file (thanks to Bill Soudan for the patch).
  • Fixed HTML bug in non-indexed namespace member lists.
  • Using `:' inside ID's caused problems for some XML parsers. I'm now using "__" instead. Also removed @ from appearing in the output when annonymous compounds were used.
  • Fixed output bug that is caused by nesting paragraph commands inside autolists.
  • Doxygen no longer generates source files for input files that end with .doc or .txt
  • Fixed argument matching problem that could result in parameter name changes for overloaded functions. Also fixed buglet for matching things like "unsigned int" against "unsigned int name"
  • Fixed qtools compile problem with ./configure --english-only problem
  • Putting documentation between the class and its body now also works if the class has base classes.
  • Fixed parse problem for const function pointers like "int* (* const name)(long);"
  • Slightly changed the HTML output to work around display "bugs" in Konquerer and Opera (thanks to Achim Spangler).
  • Examples in compress HTML help of doxygen's manual has absolute links.

Doxygen Release 1.2.2

Changes

  • Verbatim headers are now also created if a documented header file does not contain a struct or class (unless VERBATIM_HEADERS = NO of course).
  • For member groups, where only the first member is documented, that documentation is no longer automatically copied to all other members of the group. You can still enble this by setting DISTRIBUTE_GROUP_DOC to YES in the config file.
  • The \mainpage block now gets its own chapter in Latex/RTF

New features

  • Added support for KDE-2 IDL (more specific: k_dcop member sections).
  • New ALIASES config option which allows you to add one or more user defined aliases (a.k.a. macros) that can be used as commands in the documentation. For instance:
           ALIASES = "sideeffect=\par Side Effects:\n"
           
    allows you to put @sideeffect in the documentation, which doxygen will replace by "\par Side Effects:", before parsing. As a result a formatted paragraph with a "Side Effects" header will appear. Note that the \n's are replaced by real newlines, so in the example you can put your paragraph text directly after the sideeffect command.
  • Added language support for Hungarian (Thanks to György Földvári), Korean (thanks to Richard Kim), and Romanian (thanks to Alexandru Iosup). Received language updates for Italian, Polish, Croatian, Czech, Hungarian and Russian.
  • Added support for namespace aliases.
  • Added RTF patch from Alexander Bartolich. Here is his description of the changes: "The following patch of rtgen.cpp allows to read *complete* style definitions from rtfstyle. This includes \sbasedon, \snext, \additive and actual style names. If this data is missing the default value is used. This means old rtfstyle-files can be used without change, with one exception: Reset is no longer considered a style. Since unknown style names are simply ignored I don't consider this a big problem. There is no means to write rtfstyle in old format, however. "
  • Documentation can now also be put after the initializer of a constructor but before the body.

Bug fixes

  • RTF output was broken w.r.t. dot generated images.
  • Spacing and blanks inside <pre> ... </pre> block were not properly preserved.
  • Fixed lock-up when parsing "enum A { A };"
  • If INLINE_INFO was set to NO an empty property list could be put after the function definitions.
  • Fixed source code linking for the following cases: A::func().func2() and a[2]->func().
  • \em %className did not remove the %
  • In some cases namespace members ended up multiple times in the documentatation.
  • Fixed a bug in the auto list generation.
  • \latexonly inside brief description did not work properly.
  • "Referenced By" list did not include constructors with inline initializers.
  • &auml; and such were not parsed when used as the argument of a section.
  • A struct inheriting from a base class was marked as private inheritance while it should be public inheritance.
  • The autobreak routine for long return types was sometimes skipping characters.
  • Class usage relations should now also appear in the collaboration diagrams for classes within the same namespace, without explicitly having to mention the namespace.

Doxygen Release 1.2.1

Changes

  • I have completely rewritten the \todo code. Now a \todo command have a paragraph as argument. The todo list has a header for each item indicating where the todo item was found. The todo list (and all todo items) can be disabled by setting GENERATE_TODOLIST to NO.
  • <pre> ... </pre> blocks now behave as in plain HTML instead of \code ... \endcode blocks. This also works for LaTeX ofcourse. These blocks differ from \verbatim ... \endverbatim blocks in that commands can be used inside these blocks.

New features

  • Added rudimentary support for XML output. Still very much work in progress... You can enable it by setting GENERATE_XML to YES. There is a small utility (based on Qt & Xerces-C) in addon/xmlread that uses the SAX interface to read a generated XML file and then dumps the class hierarchy contained in it.
  • Thanks to a patch sent by Christophe Prud'homme, doxygen now has a new option USE_PDFLATEX that when set to YES makes doxygen use pdflatex instead of latex to generate refman.pdf. The result is a document with higher quality fonts.
  • Added a \test command that works similar to \todo and can be used to describe test cases. Doxygen will generate a page containing a list of all test cases. To disable the list set GENERATE_TESTLIST to NO. Thanks to Dave Murrell for the idea and the initial code.
  • For each list option in the config file += can now be used to append something to a list. Thanks to Joerg Baumann for adding this.
  • Numbered items are now supported like this:
           /*!
             This is nested list:
              - It can be either one of following:
                -# An apple
                  - Green or
                  - Red
                -# An orange
              - Or one of the following:
                -# A plane
                -# A bird
    
             More text follows.
           */
           
    Credits go to Joerg Baumann.
  • Included French and Czech language updates from Mathieu Despriée and Petr Prikryl. Also included a language update for german from Raimund Klein.
  • Doxygen will now do give proper warnings for formulas that do not end properly.
  • Improved error reporting for illegal list combinations (thanks to Joerg Baumann for the patch)
  • Comments from the code example in the dot graph "legend page" was stripped if STRIP_CODE_COMMENTS was set to YES.
  • In the config file "@INCLUDE = file" can now be used to include part of a configuration file. "@INCLUDEPATH = dir1 dir2 ..." can be put in front of it to add search paths (default is $PWD). Thanks to Joerg Baumann for the patch.
  • Added alphabetical quick indices for compound, file and namespace member lists.

Bug fixes

  • Running ghostscript on Windows for generating formulas was done asynchronously, resulting in ghostscript trying to access temporary files that may already have been deleted by doxygen. Thanks to Robert Golias for the code to fix this.
  • Include dependency graphs failed to get included in LaTeX because \includegraphics did not like the dots in the generated file names. Those dots are now escaped by underscores.
  • The \remark did not end a brief description in JavaDoc comments, resulting in a error in the generated LaTeX.
  • "operator >>" was not matched against "operator>>"
  • the (required) space after \addindex ended up in the LaTeX index, causing all generated entries to be placed after the user added entries.
  • "typedef class A<B> a;" is now correctly handled in inheritance relations.
  • Fixed some typos in the manual
  • \c Class::func(arg) was not autolinked.
  • Doxygen stopped reading from stdin after 4096 bytes.
  • In code fragments no autolinks for local variables or dereferenced arguments were generated for template classes.
  • autolinking to a namespace member foo from within a class scope also having a member foo did not work.
  • The brief description was prepended before \todo and \test. The reference from the todo and test lists back to the documentation did not work for overloaded members.
  • specifying width or height for \images was not handled properly. (width and height were repeated). Now you can also use commands like \textwidth as the width or height.
  • After expanding an environment variable in the config file, the next environment variable was searched starting at the wrong position.
  • Fixed LaTeX/RTF labelname collisions between members of files and groups, and between classes and groups with the same name.
  • HTML image map partly appeared in RTF output when built-in class diagrams were used causing the RTF file to be truncated.
  • Inheritance relation was not determined correctly in case a base class was imported from another namespace via a using declaration.
  • Todo and test items defined with \class or related block, where sometimes missing from The todo & test
  • Preprocessor: Multi-line #define's where not properly parsed & colored on windows due to \r's
  • Preprocessor: expansion of M(x)A, where M is a macro that expands to mx, resulted in "mxA", instead of "mx A"
  • Fixed compile problem with Qt-2.2.0beta1

Doxygen Release 1.2.0

Changes

  • CASE_SENSE_NAMES is now enabled by default.
  • In LaTeX .eps images are now included using the graphicx package instead of epsfig to simplify the use of pdflatex (thanks to Pier Giorgio for showing me how that works).
  • Reimplemented the system() call for Unix, so doxygen becomes interruptable when calling external tools such as dot.
  • Changed the way -w works. It can now also be used to generate template header and footers.

New features

  • Grzegorz Kowal added support for the Polish language. His patch is now included.
  • A \par command without title argument can now be used to add a new paragraph with the same indent under the heading of another command (such as \par, \param, \note, etc...)
  • Added a legend page explaining the various arrows and box colorings for the class diagrams generated by dot.
  • Merged update for Croatian language.
  • Relative paths are now also allowed for the STRIP_FROM_PATH tag.
  • Added a new section to the manual explaining the use of tag files in more detail. Also move the contents of the INSTALL file into the "installation" section of the manual.
  • Added ps_2on1 and pdf_2on1 targets to the Makefile generated in the LaTeX directory. These can be used to generate manual with 2 logical pages on 1 physical pages (Thanks to Onno).
  • Merged Czech language update from Petr Prikryl. Merged Spanish language update sent by Lucas Cruz.
  • Added standard GNU long options --help and --version.
  • Added a -w option that can be used to generate template style sheet files for RTF, HTML, Latex. Thanks to Alexander Bartolich for the idea and part of the implementation.
  • Merged patch from Steve Hespelt, which adds a new configuration option: INCLUDE_FILE_PATTERNS. This tag can be used to set the file patterns for the include files (if left empty the FILE_PATTERNS will be used, which was also the old behaviour).
  • Added a couple of commands for kdoc compatability: @p, @li, @em. Also made @ref a bit less strict.
  • Portuguese translation by Rui Lopes.

Bug fixes

  • Documenting member function pointers with \var like this:
           /*! class B */
           class B
           {
             public:
               void (B::*pmf)();       
           };
    
           /*! \var void (B::*B::pmf)()
            *  docs for this class member.
            */
           
    did not work.
  • Library blocks inside M$-IDL files are now also processed (a library is treated as a namespace at the moment).
  • Argument matching did not work for array argument with different amounts of whitespace.
  • If a namespace definition was found before its documentation than grouping it (with @ingroup) did not work.
  • Global functions within anonymous namespace scopes did appear in the documentation with the anonymous scope marker used internally by doxygen.
  • "namespace{}",so without space was not recognised as a namespace.
  • If the search engine was used then running installdox on the generated html resulted in bogus links to the search engine.
  • Fixed some compiler warning on Solaris.
  • Changed grey by grey50 in dot.cpp to avoid PDF conversion problems.
  • A </pre> that was not preceeded by a whitespace was ignored
  • The methods operator<() and operator<<() were not automatically linked anymore.
  • Some special characters in LaTeX were eating up the blanks that followed them.
  • The built-in C preprocessor did not evaluate the following to TRUE:
           #define A
           #define TO_BE_EVALUATED defined A
           #if TO_BE_EVALUATED
             ...
           #endif
           
  • Improved code parsing a bit: things like getClass()->func() and (*pb)->func() should now work. Also the scope of the body is correctly detected in case of inline constructor initializers like: A() : m_a(10) { ... }
  • File index is now in (path,name) lexical order, instead of (name,path) order. The file index is also only generated once instead of twice ;-)
  • Typedefs to structs in C-style did (still) not get resolved as "usage" relations for the collaboration diagrams.
  • Fixed some HTML output typos reported by Onno Kortmann (who used the tool "html tidy" on the generated output).
  • Merged a patch from Paul Lieverse that should solve the empty image map problems on Solaris.
  • If the title of a \defgroup contained a documented class, a nested (and thus broken) link was generated.
  • Externally defined variable were treated as variable definitions.
  • If a file only had a verbatim header but no documentation, a link broken link was added to the HTML help TOC.
  • Fixed "member with no name" warning that occurred when a enum's last value ended with a comma and the enum was inside a member group.
  • A <dl> type of list with multiple <dd>'s did not give the correct output in LaTeX.
  • SORT_MEMBER_DOCS is NO only worked for class members.
  • Both the prototype and the definition of a global function appeared in a \defgroup.
  • Fixed some visual problems with operator links in source code fragments.
  • Code parser got confused by template specifiers. Also improved linking of typedef'ed classes.
  • A warning was generated if the same function was defined both inside and outside a namespace.

Doxygen Release 1.1.5

Changes

  • If DISABLE_INDEX = YES and a user defined main was specified (with \mainpage), then no index will be generated anymore.
  • RTF output is now enabled by default.
  • LaTeX output now uses fancyhdr instead of fancyheader.
  • If the search engine is enabled, the default config values will be put into the generated HTML files, so you do not need to run the installdox script, if the initial values are ok.

New features

  • Added a new config option HIDE_SCOPE_NAMES that can be set to YES to hide the namespace and class scopes that are put in the documentation and diagrams.
  • added a new type of graph, that can be used to visualize which files #include (i.e. depend on) a given file. This graph is enabled by setting HAVE_DOT and INCLUDED_BY_GRAPH to YES.
  • added new configuration option EXTRACT_STATIC that can be used to enable/disable the extraction of static file members. The behaviour of this option used to be linked with EXTRACT_PRIVATE.
  • Added two new configuration options MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT that let the user configure how big the generated dot graph may become.
  • Added a new configuration option EXPAND_AS_DEFINED that can be used in combination with PREPROCESSING = YES, MACRO_EXPANSION = YES, and EXPAND_PREDEF_ONLY = YES, to expand a given list of macro names, as they are defined in the sources.
  • Merged Alexander Bartolich's RTF style sheet patch. A new config option RTF_STYLESHEET_FILE is now available with which you can specify a style sheet file. The style sheet file should contain a list of assignments. The assignments can be used to overwrite the definitions of the various styles with user defined settings.
  • Added a new command @since for JavaDoc compatibility.
  • Added two new commands: \remarks and \attention that work in a similar way as \warning, \pre, \post, et al.
  • If SOURCE_BROWSER = YES, each member function documentation now includes a list of member functions that call the member somewhere in their body.
  • RCS/CVS tags of the form $word:text$ are now nicely typeset in the documentation.
  • Providing all members of an enum with the same documentation can now be done with member grouping like this:
           /*!
            * Rotation values
            */
           enum
           {
             //@{ rotation value
             Up=0,
             Left=-90,
             Right=90,
             Down=180,
             //@}
           };
           
  • Member grouping can by denoted more compactly like this:
           //@{ Same documentation for each function
           int getFunc1();
           int getFunc2();
           //@}
    
           /*@{ @name Set functions 
            *   Functions for setting values.
            */
           void setFunc1(int v);
           void setFunc2(int v);
           /*@}*/
           
  • Merged Czech language support patches send by Petr Prikryl. Also removed some obsolete methods from the translator files.
  • Call chains like a->b()->c() are now followed by the code parser so c() is linked if documented.

Bug fixes

  • the warning message in case of ambigous file matches was containing a bogus %s, which could even crash doxygen.
  • An autolist followed by a \retval, \param, or \exception did produced invalid output, resulting in a compile error in LaTeX.
  • " has a special meaning in LaTeX when the german babel package is loaded. Doxygen now produces proper output for text containing quotes.
  • The title of a related page was not properly parsed, causing HTML special characters to end up in the output for some languages (German for instance).
  • The hierarchy shown in the "Contents" part of the html help browser did not properly show the hierarchy when it contained undocumented classes.
  • explict compound specifiers in the return type could lead to parse problems. Example:
           enum SomeEnumType_e Func()
           {
             ...
           }
           
    This was parsed as an enum definition.
  • A user defined style sheet did not get included properly, if it was specified with a (partial) path in HTML_STYLESHEET.
  • Linking in code fragments now works with nested classes and links to the correct reimplemented member are generated.
  • \ingroup did not work when grouping enums
  • members of a module were not cross-referenced with the sources.
  • Function pointers like void ( *func )() where not c orrectly parsed because of the extra spacing between the `(' and the `*'.
  • The const in void func(int * const val /*< a value. */); was named part of the name, instead of the type.
  • Removed bogus warning in case of global function pointer variables. Function pointers inside namespaces and member function pointers did also produce bogus warnings.
  • Fixed a misalignment problem with inline source fragments. Also the initializer list after a colon is now included in an inline source fragment.
  • Case sensitivity of file names was set before the configuration file was parsed, causing the default value of CASE_SENSE_NAMES to be used in any case.
  • added a space after "file" in the groupdef docs (thanks Hauke)
  • Documentation blocks can now also be put just after a class name, like in:
              class C
              /*! documentation here */
              {
                ...
              };
           
    This was already possible for functions.
  • Due to a bracket counting bug, throw clauses where not always parsed properly.
  • Fixed a parse bug for the following code-pattern:
             void Class::
             // Comment
             method() {}
           
  • With the newer Qt versions (2.1.x), passing a null string as the first argument of QRegExp::match seems no longer be allowed, so I added some extra checks to avoid potential crashes.
  • The title of the documentation of a template class now explicitly states that it is a template. (For non-English languages, this still requires a change to trCompoundReference() in translator_xx.h).
  • Fixed a problem with matching methods of template classes.
  • commenting out a section or subsection with <!-- --> did not work.
  • Fixed some inconsistencies in the configuration page of the documentation.
  • Some operators like operator[](), operator|() and operator!() did not appear correctly in the LaTeX index.
  • If an include file name matched a directory name, then the directory could be found first in the INCLUDE_PATH. This resulted in a scanner error.
  • Fixed parse problems that occurred when << or >> was part of a template argument list.
  • Fixed some more parse problems that occurred when parsing base classes that were nested templates.
  • variables whose name started with an _ like struct {int x; } _var; where not properly parsed.
  • LaTeX formulas did not work in the brief description of a JavaDoc style block that was put after an item.
  • Empty group definitions were not properly handled.
  • References to pages using \ref did not work in LaTeX.
  • Members that are typedef's to classes are now shown in the collaboration diagram.

Doxygen Release 1.1.4

Changes

  • The member definition that is put before the detailed documentation section should now be layouted a bit better for members of classes with lots of template arguments.
  • The HTML pages now have a new doxygen logo at the bottom. This logo has a transparent background and no shadow or anti-aliasing, so it looks equally nice on all backgrounds.
  • If the first member of a member group is documented, this documentation is now repeated for all undocumented members of that group.
  • The following is now treated as one parameter list with two parameters, instead of two lists with one parameter each.
           /*!
            * @param a the first parameter
            *
            * @param b the second parameter
            */
           
    The same goes for the @retval and @exception commands.

New features

  • In code fragments: added different colors for keywords that are types, and for keywords that deal with the flow control. Also added colors for string and character literals.
  • Added a new command \nosubgrouping that 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. Example:
             /*! A class.
              *  \nosubgrouping
              */
             class Test
             {
               public:
                 /*! \name A member group
                  */
                 //@{
                 /*! Docs for both members in the group. */
                 void Member1();
                 void Member2();
                 //@}
                 /*! A member outside of the group. */
                 void Member3();
             };
           
  • Added three new configuration options:
    • WARN_IF_UNDOCUMENTED which can be used to turn on or off warning message related to undocumented entities. This works independently of the WARNING tag, which is there to enable/disable all other warning messages.
    • WARN_FORMAT which can be used to specify the format of the warnings produced by doxygen. The argument is a free form string that must contain a $file, $line and $text marker. The $file and $line markers will be replaced by the file name and line number from where the warning originated. The $text marker will be replaced by the actual warning text. The default argument format string is: "$file:$line: $text".
    • DOT_PATH that can be used to specify the path where the dot tool is to be found, in case it is not in the default search path.
  • Added rudimentary support for using declarations. The following now works:
             /*! Docs for the namespace. */
             namespace N
             {
               /*! Docs for class Test. */
               class Test
               {
                 public:
                   void func();
               };
             };
    
             using N::Test;
    
             /*! The documentation for func is here */
             void Test::func() {}
           
    Using of individual functions remains unsupported.
  • collaboration and include dependency graph are now also included in the LaTeX documentation.
  • Thanks to Tim Mensch, doxygen has now has a \todo command, which can be used put todo items in the documentation. All items will automatically be cross-referenced with a (generated) todo list. Here is an example:
           /*! \mainpage 
            * \todo write something useful here.
            */
    
           /*! A class
            * \todo Add more comments here 
            */
           class Test
           {
             public:
               //! \todo implement this function
               void func();
    
               /*! Computes stuff.
                *  \todo can we combine this with Test::func()?
                *  More docs.
                */
               void func2();
           };
           
    Note that the arguments of the \todo command ends at the end of the line.
  • membergroups in files can now also be header-less. Example:
           /*! @file */
    
           /*! A macro */
           #define AMACRO 11
    
           //@{ 
           /*! F1 macros */
           #define F1_0 0                                   
           #define F1_1 (F1_0 + 1)   
           #define F1_2 (F1_1 + 2)
           //@}
    
           /*! Yet another macro */
           #define YAMACRO 10
           
  • The `explicit' and `mutable' keywords are now recognized as member attributes instead of return types.
  • the index page is now added to the HTML help contents.
  • In case "no matching member" is found, a list of possible (but non-matching) candidates is generated along with the warning. This makes it much easier to see what's wrong.
  • added two new commands:
    • \hideinitializer which can be put in the documentation to a variable or the define to hide the initializer or define value.
    • \showinitializer which can be used to explicitly show the initializer of a variable or the value of a define even if it is longer than 30 lines.

Bug fixes

  • Fixed a lock-up problem, that occurred when parsing a code fragment containing something like:
           //
           /*!
            blah
           */
           
    while STRIP_CODE_COMMENTS was set to NO
  • The auto list feature was still broken. Due to a bad scanner rule, things like -1 at the start of a line were treated as a list items (again) and a list at the end of a comment block did not always work either.
  • If an non-existent config file was specified, the directories "html", "man" and "latex" were created anyway.
  • A fragment like: os << ">" was misinterpreted by doxygen's code parser.
  • Parameter declarations that differ only in the presence or absence of const and/or volatile are now treated as equivalent, as is dictated by the C++ standard.
  • The inline function body was wrong in the following example:
            void f(                                               
               int i    ///< Parameter                                          
            )   
            {                                                            
                return 1;                            
            }  
           
    Thanks to Alexander Gidon for the fix.
  • typedef'ed classes are now also resolved in code fragments (again thanks to Alexander).
  • Fixed a bug related to base classes with nested template specifiers, like class SB in the following:
             template <class T> class C  {};
             template <class T> class S  {};
             template <class T> class SB {};
             template <class T> class S<C<T> > : public SB<C<T> > {};
           
  • #includes in code fragments where not hyperlinked. Operator methods were also not correctly recognised.
  • C/C++ comments inside initializers where not handled properly.
  • If the type of an argument of a member definition was prefixed with a (redudant) scope name of an indirect base class, then it was not matched against the member declaration if that omitted the scope.
  • \name did not work within //! comments
  • When FULL_PATH_NAMES was set to YES, doxygen did no longer distinguish between files with the same name (but in different directories).
  • The file match routine now does an case-insensitive lookup if CASE_SENSE_NAMES = NO. Hopefully this is enough to let doxygen ignore case differences in file names on Windows.
  • The constructors and destructors of classes inside namespaces or other classes did not end up in the constructor/destructor section of the documentation.
  • If an environment variable in the config file starts with a space followed by a list of words, the space ends up in the first word after expansion.
  • A <table> inside a JavaDoc style comment block caused a bogus warning.
  • Using member groups could result in an empty list generated in LaTeX, causing a error while compiling the documentation.
  • Fixed a missing stdlib.h problem in doxywizard, which occurred on non-Linux systems.
  • The generation of dot include graphs did not work properly in case file names with space were used.
  • back-references from source-lines to documentation only worked for those members of a member group that were explicitly documented.
  • doxygen did not distriguish between func(int a) and func(int a[]) which could cause documentation to end up at the wrong member in case over overloading.

Doxygen Release 1.1.3

Changes

  • Changed the way anonymous enums are handled: they are now handled just like named enums, which makes the "Enumeration Values" section obsolete.
  • If
             /*! \file */ 
           
    is put into a file (thus without further documentation) then the file is treated as being documented.

New features

  • Doxygen now has a GUI frontend to create and edit the configuration file. It is called doxywizard. To build it from sources use:
             ./configure --with-doxywizard
           
    The front-end requires Qt 2.x to build. I've only tested with Qt-2.1. Sources can be found in the addon directory.
  • To make it very easy to add new configuration options, doxygen now has an additional tool called configgen. All options supported by doxygen are now located in one place (in configgen.cpp). From this the configuration parser and part of the GUI are generated. You only need configgen if you want to add new options to doxygen. Thanks go to Joerg Baumann for providing the ideas and part of the code.
  • Added a bit of syntax highlighting to the generated source fragments in HTML (only keywords, comments and preprocessor directives are colored for now). The font color & style is determined by the style sheet, so it is easy to customize :-)
  • Typedefs of classes are now resolved when the inheritance and usage relation of classes is determined.
  • Waechter Parker made the following improvements on the RTF generator:
    1. Now it uses the translator for the table of contents entry names for the sections.
    2. writeSection now puts braces around the entry so the formatting doesn't get messed up so easily.
    3. removed extra newline in startDescList
    4. writeSectionRef now writes out "title (p.pagnum)" like it should.
    5. writeSectionRefAnchor now just calls writeSectionRef.
  • Doxygen's preprocessor now supports the non-ANSI "#else if" preprocessor construction, which some other preprocessors seem to accept as well.
  • Boris Bralo added language support for the Croatian language. Nickolay Semyonov has finished the translation to Russian, which is now included.
  • Added documentation for the commands \if and \endif, the configuration tag ENABLED_SECTIONS, and the ways to groups things together.
  • In the brief part of a JavaDoc style comment block, putting a backslash after a space, prevents switching to the detailed description. Example: i.e.\ this.
  • Class diagrams can now also be rendered with dot by setting CLASS_GRAPH to YES (this will disable the build-in class graphs). The advantages:
    • More compact diagrams.
    • Correctly looking diagrams in case of virtual inheritance.
    • A more consistent look w.r.t. the other graphs.
  • Groups can now contain namespaces and other groups.
  • operator% caused problems with LaTeX when PDF_HYPERLINKS was set to YES.

Bug fixes

  • \c func() did not autolink to function "func" anymore.
  • template members with multiple arguments were misaligned in the HTML output.
  • Since 1.1.2, environment variable expansion in the config file always resulted in a single string for each expanded variable (just as if quotes were put around the environment variable). The old behaviour is restored again.
  • removed redundant spaces in the man page output and fixed the tab alignment in code fragments.
  • typedef ( bla::*proc)(); was not properly parsed because of the space after the first opening bracket.
  • fixed a problem in the namespace strip routine that could potentially lock up doxygen.
  • Long pre-initialized arrays ended up in the documentation.
  • Friend functions that were documented at the declaration were cross-referenced to the wrong file when using SOURCE_BROWSER=YES.
  • When EXTRACT_ALL=YES was used, classes that were documented with \class appeared twice in the namespace documentation.
  • Setting HIDE_UNDOC_CLASS=YES could result in an incorrectly indented textual class hierarchy. This should now be fixed.
  • Members with very long return types caused all member names to be pushed to the right in the HTML documentation (if HTML_ALIGN_MEMBERS was YES). Now some line breaks are inserted at the proper places.
  • A couple of people reported that doxygen crashed while it was generating dot graphs. The cause was likely to be multiple frees of the same pointer (but I have not been able to reproduce the crash myself). I've now reimplemented the deletion routine of the dot graph respresentation, which hopefully fixes this problem.
  • Elements of the configuration options in lists, which used quotes were broken up into smaller pieces anyway. This most notably broke PREDEFINED in some cases that worked before.
  • Detailed description was present for classes, files and namespaces even if there was only a brief description and REPEAT_BRIEF was NO.
  • LaTeX: For German output "deutsch" was used as an option for the babel package, while it should be "german". For Russian output an encoding option is added.
  • The inheritance relation was incorrect for the inner class of B in the following situation:
           template <class T> class A { public: class inner { }; };
           template <class T> class B : public A<T> 
                  { public: class inner : public A<T>::inner { }; }; 
           
  • Fixed a bug that prevented the header links of the search engine from working.
  • Undocumented classes & enums made it in the file documentation even if HIDE_UNDOC_MEMBERS was set to YES.
  • Backslashes in includes like
           #include "..\blah.h" 
           
    did not end up in the include dependency graph.
  • If ALPHABETICAL_INDEX=YES but there were no documented classes, part of the LaTeX output (doxygen.sty a.o.) was not generated (Thanks to Markus Lepper for reporting this).
  • Doxygen can now match arguments containing an explicit namespace qualifier against arguments containing an implicit qualitifier (i.e. imported via a using directive). An example (thanks to Karl Stroetmann):
           /*! a class */
           class Test
           {
             public:
               void resolve(const std::vector<int>&);
           };                                                                              
           using namespace std;                 
           /*! a member */
           void Test::resolve(const vector<int>&) {}                                
           
  • Template specifiers are now shown in dot generated collaboration graphs.

Doxygen Release 1.1.2

Changes

  • Having the source browser set to YES does not longer imply that a member with a reference to the sources is automatically documented.
  • Base classes are shown in declaration order in the class diagrams
  • The arguments of a function now each get their own line in the header above the detailed description. This makes function with lots of argument much more readable.
  • Changed the look of the LaTeX output a bit.

New features

  • Thanks to Joerg Baumann, doxygen now has two new commands:
    • \if label
    • \endif
    These commands can be used to create conditional documentation blocks. Sections are disabled by default. To enable them add a guarding "label" to the ENABLED_SECTIONS tag in the config file. Conditional blocks can be nested. Example:
           /*! Normal docs.
    	*  \if Cond1
    	*    Only included if Cond1 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.
    	*/
            
  • Again thanks to Joerg Baumann, URLs and mail addresses are now hyperlinked in the PDF output (=latex with PDF_HYPERLINKS = YES).
  • Added support for member grouping. I reimplemented this from scratch. I decided to follow the doc++ syntax for the member grouping. Here are two examples.

    Usage: A group is defined by a //@{ .. //@} block (or /*@{*/../*@}*/ if you're addited to C style comments :-) Nesting of groups is not allowed. Before the opening marker of a block a separate comment block should be placed. This block should contain the @name (or \name) command to specify the header of the group.

    If all members of a user defined member group are in same section (for instance all are public methods), then the group as a whole will be listed as subsection of that section.

    Example1: Two ways to grouping member of a class

           /** A class. Details */
           class Test
           {
             public:
               /** @name Group1
                *  Description of group 1. Details.
                */
               //@{
               /** Function 1 in group 1. Details. */
               void func1InGroup1();
               /** Function 2 in group 1. Details. */
               void func2InGroup1();
               //@}
    
               void func1InGroup2();
               void func2InGroup2();
               /** Function without group. Details. */
               void ungroupedFunction();
           };
    
           void Test::func1InGroup1() {}
           void Test::func2InGroup1() {}
    
           /** @name Group2 */
           //@{
           /** Function 2 in group 2. Details. */
           void Test::func2InGroup2() {}
           /** Function 1 in group 2. Details. */
           void Test::func1InGroup2() {}
           //@}
           
    Example2: Combining member groups with @defgroup.
           /** @defgroup globals Global Functions 
            *  Functions that may be used in any translation unit.
            */
    
           /** @name Debug Functions */
           /*@{*/
    
           /** @ingroup globals
            *  debug printf function.
            */
           void debugPrint(const char *s /**< the message to print. */
                          );
    
           /** @ingroup globals
            *  assert function.
            */
           void my_assert(const char *f, /**< current file. */
                          int l,         /**< current line. */
                          BOOL e         /**< expression to evaluate. */
                         );
           /*@}*/
    
           /** @name Test Functions */
           /*@{*/
    
           /** @ingroup globals
            *  test on-board memory.
            *  @returns TRUE if successful.
            */
           bool testRam();
    
           /** @ingroup globals
            *  perform CPU self-test.
            *  @returns TRUE if successful.
            */
           bool testCPU();
    
           /*@}*/
           
  • Documented variables (e.g. constants) that are used as initializers of function parameters are now also cross-referenced.
  • Lucas Cruz sent an update for the Spanish translation. This is now included. Jens Breitenstein sent an update for the German translation. Philippe Lhoste sent some bug fixes for the French translation. Alessandro Falappa sent an updated of the Italian translation, which is now included. Nickolay Semyonov added initial support for the Russian language. I updated the Dutch translation.
  • Thanks to Matthias Andree, the doxygen source package now contains a .spec file. This can be used to build an .rpm package for doxygen. doing:
             rpm -ta doxygen-x.y.z.src.tar.gz
           
    will create the rpm (in /usr/src/packages/RPMS/i386/ on my machine). Running rpm -Uhv as root on the .rpm file will install/update doxygen. After that you can use rpm -e doxygen to uninstall it again.
  • Umlauts and other accents in the documentation now appear properly in generated RTF output.

Bug fixes

  • Fixed bug in the generated config file (LATEX_BATCHMODE)
  • When updating the config file, TAB_SIZE and COLS_IN_ALPHA_INDEX were reset to their default values. Environment variables in the config file are no longer replaced by their value when updating the config file.
  • The version.cpp file is now automatically updated when creating a source/cvs package.
  • The types of arguments that are prefixed with a namespace scope are now be matched against non-prefixed names. Example:
           namespace std { class string {}; }
           //! A class
           class Test { 
             public:
               void test(std::string a);
           };
           using std::string;
           //! A member
           void Test::test(string a);
           
    Note: The namespace definition has to be part of the input sources for this to work!
  • Fixed a bug in structure of the graphical class hierarchy (thanks to Paul Bohme for pointing me at this bug)
  • Non-function members can now also be documented if they are inside annonymous namespaces, which themselves are nested in named namespaces.
  • #defines can now grouped with \defgroup and \ingroup as well.
  • fixed a bug in the latex output of groups (thanks to Gregory Kurz for reporting this)
  • Doing a \ref to a \anchor in an example did not work.
  • static file & namespace members were cross-referenced even though they were not visible if EXTRACT_PRIVATE is set to NO.
  • The following code fragment made doxygen crash, because the table was split between the brief and detailed section:
           /** <table><tr><td>a. </td><tr></table> */
           class Test {};
           
    Doxygen now ends the brief description when a <table> tag is encountered.
  • \c and \b now also accept numbers and other printable characters, instead of only identifiers.
  • Autolinking did not work if a member with arguments was specified in the documentation and that member had a const or volatile postfix in the code. Autolinking did not also not work if a member with arguments contained digits (thanks to Fred Labrosse for pointing me at this bug).
  • The first line was missed if @code was used for generating man pages. (Thanks to Joe Bester for the patch).
  • \link create_link(long,int&) bla \endlink now works (doxygen was confused by the arguments before).
  • A brief description after a function definition, followed by a detailed description now works as expected. Example:
             bool func()
             {
             }
             //!< Brief.
             /*!< Details. */
           
  • Multi-line brief descriptions after a function declaration or definition now work as excepted. Example:
             bool func()
             //!< Brief.
             //!< More brief.
           
  • \latexonly fragments were put on a single line causing problems when latex comments (%'s) are used.
  • The license file that came with doxygen was of LGPL, while it should be GPL. The correct license file is included now.
  • The heading of the alphabetical index was duplicated if classes were present in both upper and lower case.
  • If ENABLE_PREPROCESSING=NO and the INPUT_FILTER was used, doxygen did not filter properly can could even block on input!
  • Internationalization should now output proper characters with qt-2.1x.
  • If namespace contained a function prototype & a function definition they both ended up in the documentation.
  • <table> without </table> could cause doxygen to crash. Now a warning is given.
  • Multiline variable and enum initializers with lots of spaces were shown in an ugly way.

Doxygen Release 1.1.1

Changes

  • "Reimplements" for a member now points to the most direct base class that overrides the member instead of the base class containing the vtable.
  • classes, namespaces, and members are now sorted in a case insensitive way (like in a dictionary). Was case sensitive.
  • Kenji Nagamatsu has send me an update for the Japanese translation which is now included.

New features

  • new option SHOW_INCLUDE_FILES, which can be set to NO to turn of the list of include files that is generated for each documented file.
  • new option STRIP_CODE_COMMENTS, which can be set to NO to keep any special comment blocks in the generated code fragments.
  • Added a new tag to the configuration file: SORT_MEMBER_DOCS. If this is set to NO the member documentation will appear in declaration order (as was the case with version 1.0.0 and older).
  • Corba IDL exceptions are now also supported by doxygen. If you do not want to put the documentation in front of the exception you can use \idlexcept command which behaves like \class.
  • Local file:/// URLs are now automatically linked when put in the documentation.
  • For \class and other structural commands you can now use a backslash (\) at the end of a line to continue the command on the next line. Example:
             \class Abstract_Server_Session_Implementation  \
                    Abstract_Server_Session_Implementation.h \
                    ATD/Abstract_Server_Session_Implementation.h     
           
  • "make distclean" now removes all generated stuff and results in a package that is more clean than a normal source package (i.e. the generated flex & bison code is removed).
  • Added command \note (and @note) for a "Note:" paragraph.
  • Multi arguments can now be given as a comma separated list after a \param or \retval command. Example:
           void Zoom( int aX1, int aY1, int aX2, int aY2 );  
           /*! Zoom into the data.                                        
            *  \param aX1, aY1 Upper left corner.                         
            *  \param aX2, aY2 Lower right corner. 
            */
           
  • Added 9 new class declaration sections: Public/Protected/Private Types, for member typedefs & variables. [Static] Public/Protected/Private Attributes, for member variables.
  • Doxygen now has a new command line option -u, that can be used to upgrade an old configuration file without losing the values that where edited. In combination with the -s option this can also be used to strip comments from or add comments to a configuration file.
  • Added a new tag LATEX_BATCHMODE that makes latex run in batch mode. This will run latex non-interactively, and not stop at the first problem encountered. If the tag is enabled this mode will also be used when generation formulas for inclusion in the HTML documentation.
  • The \ingroup command can now also be used to group a number of members. The only limitation is that a member can currently be in one group only (classes, files & namespaces do not have this limitation).

Bug fixes

  • The graphical class hierarchy was not properly generated when template classes were used.
  • Template specialization could not be documented using the \class command. This is now fixed. Example:
           /*!
            * \class T<A,int>
            * My template specialization of template T.
            */
           
  • Fixed a bug when parsing M$-IDL code, containing helpstring("bla") attributes. The attributes of a method are no longer shown in the documentation (the attributes of method arguments still visible however).
  • Improved the search algorithm that tries to connect classes with their base classes. It should now (hopefully) work correct in all cases where nested classes and/or namespaces are used.
  • Fixed a scanner problem that could cause doxygen to get confused after parsing struct initializers.
  • the DOTFONTPATH environment variable is now automatically set for Windows. This should make any "missing doxfont.ttf" messages disappear.
  • the extra LaTeX packages specified with EXTRA_PACKAGES can now also be used when generating formulas for HTML.
  • The documentation of a parameters that is part of a member definition, is now used in the documentation as well.
  • Fixed a HTML output bug in the class/file group-pages.
  • Links to example files generated with \link ... \endlink where not correct.
  • made the bullet list generation more robust. A space is now required after the - sign. A list can now start a paragraph.
  • the configure script now detects whether or not dot is installed.
  • The VERBATIM_HEADERS option didn't have any effect any more. It should now work again as advertised.
  • The IGNORE_PREFIX option can now also deal with a list of prefixes.
  • @verbatim ... @endverbatim blocks did not work.
  • removed some \n's from the systems calls that run dot. This appears to cause problems for some people and was not what I intended anyway :^)
  • The following construct was not working:
           namespace foo { class bar; }
           /*! let's go to the bar */
           class foo::bar { };
           
  • Members inside annonymous namespaces nested inside named namespaces were not properly handled.
  • When documenting template specializations with the \class command, the second argument was not interpreted correctly.
  • Interface inheritance relations are now always public for IDL interfaces.
  • Templetized related functions showed a double `template' line.
  • Related function that had a declaration and a definition also appeared in file documentation but without documentation.
  • Links to files of the include dependency graph were non existent in some situations.
  • Removed warning generated for undocumented friend classes.
  • Class reference in the main page ended up in refman.tex
  • Source files were generated for files mentioned in tag files.
  • The graphical class hierarchy always contained all external class, regardless of the ALLEXTERNALS flag.
  • operator~() was grouped with the constructor/destructors.
  • In a number of cases, documented include files, that were shown in the include dependency diagram where not found to be documented. As a result the diagram was often not clickable and incomplete.
  • Fixed the graphical class hierarchy. Sometimes classes were missing.
  • Added support for the cpp_quote hack inside M$-IDL code.
  • The typedef in:
             struct MyStruct { int i; };
             typedef struct MyStruct * MyStructPtr;
           
    was mistaken for a variable.
  •         /** @file
            *  @brief
            *  Brief.
            *
            *  Details.
            */
           
    was not properly handled.
  • Corba IDL unions now work. Example:
           /** \union XYZ
            *  \brief The XYZ union.
            */                       
           union XYZ switch ( ABC ) 
           {
             case A: D_VAR m_d; ///< Docs for a member in case A
             case B: E_VAR m_e; ///< Docs for a member in case B
           };
           
  • Classes documented with \class and using \ingroup where not always put into the group.
  • In Latex & RTF references to undocumented files where put in the index.

Doxygen Release 1.1.0

Changes

  • Static file members are now hidden if EXTRACT_PRIVATE is set to NO.
  • the documentation of members in the class/file descriptions are now alphabetically sorted by member name for each section. There is a new section for constructors & destructors.
  • merged file, header and source indices into one file index. As a result, doxygen will generate a hyperlinked source code only once. This should greatly increase speed and reduce memory usage for large projects.

New features

  • Thanks to Parker Waechter, doxygen now has a new output format: RTF. This is Microsoft's "portable" document format. Due to the great "portability" of this format the output produced by doxygen will probably only look nice with Microsoft's Word 97.

    RTF is currently disabled by default. You can set GENERATE_RTF to YES to enable it. The directory where the RTF output is put, can be specified using the RTF_OUTPUT tag in the configuration file. COMPACT_RTF can be enabled to generate more compact RTF. RTF_HYPERLINKS can be used to generate HTML like cross references in the document.

  • Doxygen can now use the "dot" tool from graphviz 1.5, which is an open-sourced, cross-platform graph drawing toolkit from AT&T and Lucent Bell Labs.

    Graphviz can be found at http://www.research.att.com/sw/tools/graphviz/ If you have the "dot" tool available in the path, you can set HAVE_DOT to YES in the configuration file to let doxygen use it.

    Doxygen uses the "dot" tool to generate the following graphs:

    • if GRAPHICAL_HIERARCHY is set to YES, a graphical representation of the overall inheritance diagram will be drawn, along with the textual one (currently supported for HTML only).
    • if INCLUDE_GRAPH is set to YES, an include dependency graph is generated for each documented file that includes at least one other file (currently supported for HTML and RTF only).
    • if COLLABORATION_GRAPH is set to YES, a graph is drawn for each documented class and struct that shows:
      • the inheritance relation with base classes (using solid blue/green/red arrows, for public,protected,private inheritance).
      • the containment relations with other structs and class (using purple dashed arrows with variable names as labels) (currently supported for HTML and RTF only)
    For the include dependency graph and the collaboration graph, doxygen will render a transitive closure of the relation. If the diagram becomes too large (currently wider than 1024 pixels), only the maximum graph depth (as seen from the root of the graph) that still fits will be drawn. (the nodes that can still be expanded are shown with a red border in this case).

    For HTML all graphs are drawn as client side clickable image maps.

  • Each file now has a list the files it includes (with links to the sources if available)
  • For class documentation it is now possible to choose how the #include statement should look like (i.e. like "stdio.h" or <stdio.h>). This can be done using the third argument of the \class command. Example:
    \class myclass myclass.h "mydir/myclass.h"
  • If the - character is used as the first character in a comment line it is interpreted as an item of a bullet list. Subitems are also possible. Here is an example:
           /*!
    	* A list:
    	*      - item 1
    	*        - subitem 1
    	*      - item 2
    	*        - subitem 1
    	*          - subsubitem
    	*        - subitem 2
    	*      - item 3
    	*      - item 4
    	*
    	* Starting a new paragraph in a top level item ends the list!
    	*/
           
    Notice: tabs can be used for indenting, but the TAB_SIZE tag in the configuration file must be set correctly!
  • Function/member arguments can now be documented, like this
           /*! This function finds the first occurrence of a 
            *  substring in a string.  
            */
           char *strstr(const char *haystack, /*!< the string to search in. */
                        const char *needle)   /*!< the substring to search for. */                  
           {
           }
           
  • Three new section commands \pre, \post and \invariant are added to describe preconditions, postcondictions and invariants respectively.
  • Variable/enum initializers and define definitions are now included in documentation (unless the initializer/definition is more than 30 lines long)
  • Added new configuration option IGNORE_PREFIX that can be used to ignore a specified prefix while generating the alphabetical class index.

Bug fixes

  • All defines were shown as function macros in the documentation section.
  • Fixed bug with parsing multi-line defines on Windows (\r problem).
  • Protection level of members inside nested anonymous compounds was not set correctly.
  • Class diagram was not correct in case the same class was inherited via two different paths (bug introduced in 1.0.0).
  • If a tag is specified two times in the config file, then the second definition will correctly overwrite the value of the first occurrence.
  • For multiple defines with comments after them only the first was cross-referenced with the sources.
  • Autolinks to #defines looked like function macro even if they weren't.
  • Members that were hidden deep in an inheritance tree, got multiple scope prefixes in the "all members list", while a scope prefix to the member in the base class was enough to use it unambiguishly.
  • \latexonly ... \endlatexonly in the main page produced erroneous text in refman.tex
  • The keywords in header and footer were only evaluated once.
  • Formulas now also work in documentation blocks that are put after an item.
  • The source code could produce links to the wrong class for a code fragment like a.f() in case two classes have the same member variable `a', but with a different class types and those classes both had the member function `f'.
  • array type arguments (like int a[2]) where not matched if the argument name of declaration and definition were different.
  • memory in code.l is now returned at the appropriate times.


Go back to the main page.