Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
doxverilog
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
doxverilog
Commits
19119105
Commit
19119105
authored
Feb 08, 2000
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mods for doxygen-1.0.0
parent
ea506045
Changes
41
Show whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
10783 additions
and
9321 deletions
+10783
-9321
INSTALL
INSTALL
+22
-4
README
README
+2
-2
VERSION
VERSION
+1
-1
autolink.doc
doc/autolink.doc
+1
-1
commands.doc
doc/commands.doc
+59
-99
config.doc
doc/config.doc
+31
-10
features.doc
doc/features.doc
+14
-9
history.doc
doc/history.doc
+14
-11
index.doc
doc/index.doc
+16
-8
install.doc
doc/install.doc
+2
-1
starting.doc
doc/starting.doc
+12
-5
classdef.cpp
src/classdef.cpp
+16
-2
config.cpp
src/config.cpp
+1
-1
config.l
src/config.l
+1
-1
defargs.cpp
src/defargs.cpp
+33
-28
defargs.l
src/defargs.l
+1
-0
diagram.cpp
src/diagram.cpp
+32
-4
doxygen.cpp
src/doxygen.cpp
+84
-75
example.h
src/example.h
+1
-0
filedef.cpp
src/filedef.cpp
+15
-4
formula.cpp
src/formula.cpp
+15
-3
htmlgen.cpp
src/htmlgen.cpp
+40
-39
htmlgen.h
src/htmlgen.h
+1
-0
htmlhelp.cpp
src/htmlhelp.cpp
+2
-0
index.cpp
src/index.cpp
+1
-1
instdox.cpp
src/instdox.cpp
+2
-1
latexgen.cpp
src/latexgen.cpp
+11
-1
latexgen.h
src/latexgen.h
+1
-0
mangen.cpp
src/mangen.cpp
+5
-0
mangen.h
src/mangen.h
+1
-0
memberdef.h
src/memberdef.h
+0
-1
membername.h
src/membername.h
+2
-0
outputgen.h
src/outputgen.h
+1
-0
outputlist.h
src/outputlist.h
+2
-0
scanner.cpp
src/scanner.cpp
+10119
-8866
scanner.l
src/scanner.l
+188
-143
section.h
src/section.h
+1
-0
translator.h
src/translator.h
+9
-0
translator_nl.h
src/translator_nl.h
+9
-0
util.cpp
src/util.cpp
+14
-0
util.h
src/util.h
+1
-0
No files found.
INSTALL
View file @
19119105
DOXYGEN Version
0.49-991205
DOXYGEN Version
1.0.0
CONTENTS
--------
...
...
@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
gunzip doxygen-
0.49-991205
.src.tar.gz # uncompress the archive
tar xf doxygen-
0.49-991205
.src.tar # unpack it
gunzip doxygen-
1.0.0
.src.tar.gz # uncompress the archive
tar xf doxygen-
1.0.0
.src.tar # unpack it
2. Run the configure script:
...
...
@@ -135,6 +135,21 @@ The manual should now be here latex/doxygen_manual.ps
KNOWN CONFIGURATION PROBLEMS
QT RELATED PROBLEMS:
- The Qt include files and libraries are not a sub directory of the
directory pointed to by QTDIR on some systems.
(for instance on Red Hat 6.0 includes are in /usr/include/qt and
libs are in /usr/lib)
The solution:
- goto the root of doxygen distribution
- do "mkdir qt"
- do "cd qt"
- do "ln -s your-qt-include-dir-here include",
- do "ln -s your-qt-lib-dir-here lib",
- do "export QTDIR=$PWD" (or "setenv QTDIR $PWD if you have a csh)
Now install doxygen as described above.
- Qt-2.01 contains a bug that makes some special characters appear as
question marks (?) in the HTML output.
...
...
@@ -215,6 +230,9 @@ HP-UX / DIGITAL UNIX PROBLEMS:
#if defined (MSDOS) && !defined (__TURBOC__)
------------------------------------------------------------------------------
The generated scanner.cpp that comes with doxygen is build with this
patch applied.
GCC 2.7.2.X PROBLEMS
Old versions of the GNU compiler have problems with constant strings
...
...
@@ -234,4 +252,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (
05
December 1999)
Dimitri van Heesch (
27
December 1999)
README
View file @
19119105
DOXYGEN Version
0.49-991205
DOXYGEN Version
1.0.0
Please read INSTALL for compilation instructions.
...
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (
05
December 1999)
Dimitri van Heesch (
27
December 1999)
VERSION
View file @
19119105
0.49-991205
1.0.0
doc/autolink.doc
View file @
19119105
...
...
@@ -61,7 +61,7 @@
\par Note 1:
The patterns above should not contain spaces, tabs or newlines.
\par Note 2:
For JavaDoc compatibility a \
c # may be used instead of a \c
:: in
For JavaDoc compatibility a \
# may be used instead of a
:: in
the patterns above.
For non overloaded members the argument list may be omitted.
...
...
doc/commands.doc
View file @
19119105
...
...
@@ -18,7 +18,9 @@
\section commands Special Commands
All commands in the documentation start with a backslash (<b>\\</b>) or an
at-sign (<b>\@</b>).
at-sign (<b>\@</b>). If you prefer you can replace all commands starting with a
backslash below, by their counterparts that start with an at-sign.
Some commands have one or more arguments.
Each argument has a certain range:
<ul>
...
...
@@ -54,6 +56,7 @@ documentation:
<li> \refitem cmddate \date
<li> \refitem cmddef \def
<li> \refitem cmddefgroup \defgroup
<li> \refitem cmddeprecated \deprecated
<li> \refitem cmddontinclude \dontinclude
<li> \refitem cmde \e
<li> \refitem cmdendcode \endcode
...
...
@@ -147,7 +150,7 @@ Doxygen. Unrecognized commands are treated as normal text.
<hr>
\subsection cmdcode \code
\addindex \
\
code
\addindex \code
Starts a block of code. A code block is treated differently
from ordinary text. It is interpreted as C/C++ code. The names of the
classes and members that are documented are automatically replaced by
...
...
@@ -489,8 +492,6 @@ Doxygen. Unrecognized commands are treated as normal text.
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\sa Section \ref cmdjdauthor "@author".
<hr>
\subsection cmdbrief \brief {brief description}
...
...
@@ -505,7 +506,7 @@ Doxygen. Unrecognized commands are treated as normal text.
\\brief commands are present they will be joined. See section
\ref cmdauthor "\\author" for an example.
\sa Section \ref cmdjdshort "@short"
.
Synonymous to \\short
.
<hr>
\subsection cmdbug \bug { bug description }
...
...
@@ -537,7 +538,13 @@ Doxygen. Unrecognized commands are treated as normal text.
sectioning command is encountered. See section \ref cmdauthor "\\author"
for an example.
\sa Section \ref cmdjddate "@date".
<hr>
\subsection cmddeprecated \deprecated { description }
\addindex \deprecated
Starts a paragraph indicating that this documentation block belongs to
a deprecated entity. Can be used to describe alternatives,
expected life span, etc.
<hr>
\subsection cmdpar \par (paragraph title) { paragraph }
...
...
@@ -573,8 +580,6 @@ Doxygen. Unrecognized commands are treated as normal text.
sectioning command is encountered. See section \ref cmdfn "\\fn" for an
example.
\sa Section \ref cmdjdparam "@param".
<hr>
\subsection cmdexception \exception <exception-object> { exception description }
...
...
@@ -593,13 +598,11 @@ Doxygen. Unrecognized commands are treated as normal text.
\par Note:
the tag \\exceptions is a synonym for this tag.
\sa Section \ref cmdjdexception "@exception".
<hr>
\subsection cmdthrow \throw <exception-object> { exception description }
\addindex \throw
Equivalent
to \\exception (see section \ref cmdexception "\\exception").
Synonymous
to \\exception (see section \ref cmdexception "\\exception").
\par Note:
the tag \\throws is a synonym for this tag.
...
...
@@ -616,9 +619,6 @@ Doxygen. Unrecognized commands are treated as normal text.
sectioning command is encountered. See section \ref cmdfn "\\fn" for an
example.
\sa Section \ref cmdjdreturn "@return".
<hr>
\subsection cmdretval \retval <return value> { description }
...
...
@@ -633,8 +633,6 @@ Doxygen. Unrecognized commands are treated as normal text.
The \\retval description ends when a blank line or some other
sectioning command is encountered.
\sa Section \ref cmdjdretval "@retval".
<hr>
\subsection cmdsa \sa { references }
...
...
@@ -646,8 +644,10 @@ Doxygen. Unrecognized commands are treated as normal text.
may be selected by including a parenthesized list of argument types after
the method.
\sa section \ref autolink "\\autolink" for information on how to create links to objects
and section \ref cmdjdsee "@see" for the JavaDoc version of this command.
Synonymous to \\see.
\sa section \ref autolink "\\autolink" for information on how to create links
to objects.
<hr>
\subsection cmdversion \version { version number }
...
...
@@ -664,8 +664,6 @@ Doxygen. Unrecognized commands are treated as normal text.
sectioning command is encountered. See section \ref cmdauthor "\\author"
for an example.
\sa Section \ref cmdjdversion "@version".
<hr>
\subsection cmdwarning \warning { warning message }
...
...
@@ -1024,7 +1022,7 @@ Doxygen. Unrecognized commands are treated as normal text.
<hr>
\subsection cmdfdollar \f$
\addindex \
\
f$
\addindex \f$
Marks the start and end of an in-text formula.
\sa section \ref formulas "formulas" for an example.
...
...
@@ -1032,7 +1030,7 @@ Doxygen. Unrecognized commands are treated as normal text.
<hr>
\subsection cmdfbropen \f[
\addindex \
\
f[
\addindex \f[
Marks the start of a long formula that is displayed
centered on a separate line.
...
...
@@ -1041,7 +1039,7 @@ Doxygen. Unrecognized commands are treated as normal text.
<hr>
\subsection cmdfbrclose \f]
\addindex \
\
f]
\addindex \f]
Marks the end of a long formula that is displayed
centered on a separate line.
...
...
@@ -1204,44 +1202,6 @@ Doxygen. Unrecognized commands are treated as normal text.
character has to be escaped because it has a special meaning in HTML.
<hr>
<h2>\htmlonly <center> --- \endhtmlonly
Commands included for JavaDoc compatibility
\htmlonly --- </center>\endhtmlonly</h2>
The following command JavaDoc command are support.
\subsection cmdjdauthor @author { list of authors }
\addindex @author
Equivalent to \\author (see section \ref cmdauthor "\\author").
\subsection cmdjddate @date { date description }
\addindex @date
Equivalent to \\date (see section \ref cmddate "\\date").
\subsection cmdjdparam @param <parameter-name> { parameter-description }
\addindex @param
Equivalent to \\param (see section \ref cmdparam "\\param").
\subsection cmdjdexception @exception <exception-object> { exception-description }
\addindex @exception
Equivalent to \\exception (see section \ref cmdexception "\\exception").
Also synonymous to \@exceptions and \\exceptions.
\subsection cmdjdthrows @throw <exception-object> { exception-description }
Equivalent to \\throw (see section \ref cmdthrow "\\throw").
Also synonymous to \@exception and \\exception.
\subsection cmdjdreturn @return { description of the return value }
\addindex @return
Equivalent to \\return (see section \ref cmdreturn "\\return").
\subsection cmdjdretval @retval <return value name> { return value description }
\addindex @retval
Equivalent to \\retval (see section \ref cmdretval "\\retval").
\subsection cmdjdsee @see { references }
\addindex @see
Equivalent to \\sa (see section \ref cmdsa "\\sa").
\subsection cmdjdshort @short { brief description }
\addindex @short
Equivalent to \\brief (see section \ref cmdbrief "\\brief").
\subsection cmdjdversion @version { version number }
\addindex @version
Equivalent to \\version (see section \ref cmdversion "\\version").
<h2>\htmlonly <center> --- \endhtmlonly
Commands included for Qt compatibility
\htmlonly --- </center>\endhtmlonly</h2>
...
...
doc/config.doc
View file @
19119105
...
...
@@ -303,7 +303,7 @@ followed by the descriptions of the tags grouped by category.
\
anchor
cfg_javadoc_autobrief
<
dt
>\
c
JAVADOC_AUTOBRIEF
<
dd
>
\
addindex
JAVADOC_AUTOBRIEF
If
the
\
c
JAVADOC_
NO_
AUTOBRIEF
is
set
to
\
c
YES
(
the
default
)
then
Doxygen
If
the
\
c
JAVADOC_AUTOBRIEF
is
set
to
\
c
YES
(
the
default
)
then
Doxygen
will
interpret
the
first
line
(
until
the
first
dot
)
of
a
JavaDoc
-
style
comment
as
the
brief
description
.
If
set
to
NO
,
the
Javadoc
-
style
will
behave
just
like
the
Qt
-
style
comments
.
...
...
@@ -444,10 +444,12 @@ followed by the descriptions of the tags grouped by category.
The following commands have a special meaning inside the header:
<code>\$title</code>, <code>\$datetime</code>, <code>\$date</code>,
<code>\$doxygenversion</code>.
<code>\$doxygenversion</code>, <code>\$projectname</code>,
<code>\$projectnumber</code>.
Doxygen will replace them by respectively
the title of the page, the current date and time, only the current date,
or the version number of doxygen.
the version number of doxygen, the project name (see PROJECT_NAME), or the
project number (see PROJECT_NUMBER).
\anchor cfg_html_footer
<dt>\c HTML_FOOTER <dd>
...
...
@@ -461,10 +463,15 @@ followed by the descriptions of the tags grouped by category.
\endverbatim
If the tag is left blank doxygen will generate a standard footer.
The following commands have a special meaning inside the footer:
<code>\$title</code>, <code>\$datetime</code>, <code>\$date</code>.
The following commands have a special meaning inside the header:
<code>\$title</code>, <code>\$datetime</code>, <code>\$date</code>,
<code>\$doxygenversion</code>, <code>\$projectname</code>,
<code>\$projectnumber</code>.
Doxygen will replace them by respectively
the title of the page, the current date and time, or only the current date.
the title of the page, the current date and time, only the current date,
the version number of doxygen, the project name (see PROJECT_NAME), or the
project number (see PROJECT_NUMBER).
\anchor cfg_html_stylesheet
<dt>\c HTML_STYLESHEET <dd>
...
...
@@ -477,14 +484,19 @@ followed by the descriptions of the tags grouped by category.
\verbatim
H1 { text-align: center }
A.qindex {}
A.qindexRef {}
A.el { text-decoration: none; font-weight: bold }
A.elRef { font-weight: bold }
A.code { text-decoration: none; font-weight: normal; color: #4444ee }
A.codeRef { font-weight: normal; color: #4444ee }
A.gl:link { color: #ffffff }
A.gl:visited { color: #ffffff }
A.gl { text-decoration: none; font-weight: bold; background-color: #ff8080 }
DL.el { margin-left: -1cm }
DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
DIV.in { margin-left: 16 }
DIV.ah { background-color: black; margin-bottom: 3; margin-top: 3 }
A.gl:link { color: #ffffff }
A.gl:visited { color: #ffffff }
A.gl { text-decoration: none; font-weight: bold; background-color: #ff8080 }
TD.md { background-color: #f2f2ff }
\endverbatim
...
...
@@ -622,6 +634,15 @@ EXTRA_PACKAGES = times
\
par
Note
:
Only
use
a
user
defined
header
if
you
know
what
you
are
doing
!
The
following
commands
have
a
special
meaning
inside
the
header
:
<
code
>\$
title
</
code
>,
<
code
>\$
datetime
</
code
>,
<
code
>\$
date
</
code
>,
<
code
>\$
doxygenversion
</
code
>,
<
code
>\$
projectname
</
code
>,
<
code
>\$
projectnumber
</
code
>.
Doxygen
will
replace
them
by
respectively
the
title
of
the
page
,
the
current
date
and
time
,
only
the
current
date
,
the
version
number
of
doxygen
,
the
project
name
(
see
PROJECT_NAME
),
or
the
project
number
(
see
PROJECT_NUMBER
).
</
dl
>
\
subsection
man_output
Man
page
related
options
...
...
@@ -842,7 +863,7 @@ DOC_ABSPATH = /home/dimitri/.html/qdbttabular
BIN_ABSPATH = /home/dimitri/bin
\endverbatim
To regenerate the Qt documentation from the sources, you could use the
To regenerate the Qt
-1.44
documentation from the sources, you could use the
following config file:
\verbatim
PROJECT_NAME = Qt
...
...
doc/features.doc
View file @
19119105
...
...
@@ -22,6 +22,15 @@
<li>Requires very little overhead from the writer of the documentation.
Plain text will do, but for more fancy or structured output HTML tags
and/or some of doxygen's special commands can be used.
<li>Supports C++, (Corba or Microsoft) IDL and C sources.
<li>Supports documentation of files, namespaces, classes, structs, unions,
templates, variables, functions, typedefs, enums and defines.
<li>JavaDoc (1.1), Qt-Doc, and KDOC compatible.
<li>Automatically generates class diagrams in HTML (as clickable
image maps) and \f$\mbox{\LaTeX}\f$ (as encapsulated postscript images).
<li>Allows you to put documentation in the header file (before the
declaration of an entity), source file (before the definition of an entity)
or in a separate file.
<li>Outputs documentation in on-line format (HTML and UNIX man page) and
off-line format (\f$\mbox{\LaTeX}\f$) simultaniously
(any one can be disabled if desired). Both formats are optimized for
...
...
@@ -29,23 +38,18 @@
Furthermore, compressed HTML can be generated from HTML output using
Microsoft's HTML help workshop (Windows only) and PDF can be generated
from the \f$\mbox{\LaTeX}\f$ output.
<li>Allows documentation of files, namespaces, classes, structs, unions,
templates, variables, functions, typedefs, enums and defines.
<li>Includes a full C preprocessor to allow proper parsing of conditional
code fragments and to allow expansion of all or part of
the define macro
s.
code fragments and to allow expansion of all or part of
macros definition
s.
<li>Automatically detects public, protected and private sections, as well as
the Qt specific signal and slots sections. Extraction of private class
members is optional.
<li>Automatically generates
of class diagrams in HTML (as clickable
image maps) and \f$\mbox{\LaTeX}\f$ (as encapsulated postscript images).
<li>JavaDoc (1.1) and Qt-Doc compatible
.
<li>Automatically generates
references to documented classes, files, namespaces
and members. Documentation of global functions, globals variables,
typedefs, defines and enumerations is also supported
.
<li>References to base/super classes and inherited/overridden members are
generated automatically.
<li>Includes a fast, rank based search engine to search for strings or words
in the class and member documentation.
<li>Automatic generation of references to documented classes, files and
members. Documentation of global functions, globals variables,
typedefs, defines and enumerations is also supported.
<li>Documentation may be placed either at the declaration or at the definition
of a member function or class. Most documentation systems (such as Javadoc) only
support the former, others (such as Qt) only the latter.
...
...
@@ -61,6 +65,7 @@
looking into the implementation details.
<li>Allows automatic cross-referencing of (documented) entities with their
definition in the source code.
<li>Allows inclusion of function/member/class definitions in the documentation.
<li>All options are read from an easy to edit and documented
configuration file.
<li>Documentation and search engine can be transferred to another
...
...
doc/history.doc
View file @
19119105
...
...
@@ -16,18 +16,21 @@
/*! \page history Doxygen History
<h3>Features scheduled for version 1.0</h3>
<h3>Version 1.0.0</h3>
<h4>New features:</h4>
<ul>
<li>Include LaTeX style formulas in LaTeX and HTML output (in HTML as a gif).
<li>Multi-lingual support: currently supported languages are: English,
Dutch, French, German, Italian, Swedish, Czech, Japanese.
<li>Generation of class diagrams (clickable image maps in HTML, eps images
in postscript).
<li>Output generator for the man page format.
<li>Proper support for template classes, members, functions and specializations.
<li>Proper support for namespaces.
<li>Reintroduction of the multi-column class list (and file list) to quickly
select a class or file
<li>Support for templates and namespaces.
<li>Internationalization support. Currently supported languages are:
English, Czech, German, Spanish, Finnish, French, Italian, Japanse,
Dutch, and Swedish.
<li>Automatic generation of inheritance diagrams for sub & super classes.
<li>Support for man page, compressed HTML help, and hyperlinked PDF output.
<li>Cross-referencing documentation with source code and source inlining.
<li>LaTeX formulas can be included in the documentation.
<li>Support for parsing Corba & Microsoft IDL.
<li>Images can be included in the documentation.
<li>Improved parsing & preprocessing.
</ul>
<h3>Version 0.4</h3>
...
...
doc/index.doc
View file @
19119105
...
...
@@ -41,15 +41,15 @@ for more details.
All output generated by Doxygen is not covered by this license.
<h2>Introduction</h2>
Doxygen is a documentation system for C
and C++. It can generate an on-line
class browser (in HTML) and/or an off-line reference manual
Doxygen is a documentation system for C
, C++ and IDL. It can generate an
on-line
class browser (in HTML) and/or an off-line reference manual
(in \f$\mbox{\LaTeX}\f$) from a set
of documented source files. There is also support for generating
man pages and for converting the generated output into
Postscript, hyperlinked PDF or compressed HTML.
The documentation is extracted directly from the
sources. Doxygen is developed on
a <a href="http://www.linux.org">Linux</a>
platform,
but it runs on most other UNIX flavors as well.
sources. Doxygen is developed on
<a href="http://www.linux.org">Linux</a>,
but it runs on most other UNIX flavors as well.
An executable for Windows 9x/NT is also available.
Doxygen can also be configured to extract the code-structure from undocumented
...
...
@@ -127,15 +127,19 @@ of possible and/or requested enhancements.
Thanks go to:
<ul>
\addindex Doc++
<li>Malte Zöckler and Roland Wunderling, authors of D
oc
++.
The first version of Doxygen
was based on an old version of Doc
++.
Although I have rewritten practically all code since then, D
oc
++ has still
<li>Malte Zöckler and Roland Wunderling, authors of D
OC
++.
The first version of Doxygen
borrowed some code of an old version of DOC
++.
Although I have rewritten practically all code since then, D
OC
++ has still
given me a good start in writing Doxygen.
<li>All people at Troll Tech, for creating a beautiful GUI Toolkit
.
<li>All people at Troll Tech, for creating a beautiful GUI Toolkit
(which is even useful for GUI-less applications like doxygen :-)
<li>My brother <a href="http://www.stack.nl/~fidget/index.html">Frank</a>
for rendering the logos.
<li>Harm van der Heijden for adding HTML help support.
<li>Jens Breitenstein, Christophe Bordeaux, Samuel Hägglund, Xet Erixon,
Vlastimil Havran, Ahmed Also Faisal, Alessandro Falappa, Kenji Nagamatsu,
Francisco Oltra Thennet, Olli Korhonen for providing translations into
various languages.
<li>
Arnt Gulbrandsen,
Adam P. Jenkins,
...
...
@@ -201,6 +205,10 @@ Jacques Tremblay,
John Sturton,
Moshe Kruger,
David Wong,
Peter Garner,
Fred Labrosse,
Frank Schimmel,
Reinhard Nissl
and many others for suggestions, patches and bug reports.
</ul>
*/
...
...
doc/install.doc
View file @
19119105
...
...
@@ -57,7 +57,7 @@ To override the auto detected platform you can specify
\verbatim
configure --platform platform-type
\endverbatim
See the
\c PLATFORMS file
for a list of possible platforms.
See the
file \c PLATFORMS
for a list of possible platforms.
For more configuration options use <code>configure --help</code>
To compile and link the sources enter
...
...
@@ -102,6 +102,7 @@ Doxygen was developed and tested under Linux using the following tools:
<li>Netscape 4.61
<li>Troll Tech's tmake version 1.3 (included in the distribution)
<li>teTeX version 0.9
<li>CVS 1.10.7
</ul>
\htmlonly
...
...
doc/starting.doc
View file @
19119105
...
...
@@ -99,7 +99,7 @@ the output directory.
As the names suggest the \c html directory contains the
generated documentation in HTML format and the \c latex directory contains the
generated documentation in \f$\mbox{\LaTeX}\f$ format. Man pages are put
in a man3 directory inside the \c man directory.
in a
\c
man3 directory inside the \c man directory.
The default output directory is the directory in which \c doxygen
is started. The directory to which the output is written can be changed
...
...
@@ -123,11 +123,11 @@ By typing \c make in the \c latex directory the dvi file \c refman.dvi
will be generated (provided that you have a make tool called
<code>make</code> ofcourse). This file can then be viewed using \c xdvi or
converted into a postscript file \c refman.ps by typing <code>make ps</code>
(this requires
\c dvips
). The Postscript file can be send to a postscript
(this requires
<code>dvips</code>
). The Postscript file can be send to a postscript
printer. If you do not have a postscript printer, you can try to use
ghostscript to convert postscript into something your printer understands.
Conversion to PDF is also possible; just type
<code>make pdf</code>.
<code>make pdf</code>
(this required <code>ps2pdf</code>)
.
To get the best results for PDF output you should set the
\c PDF_HYPERLINKS tag to \c YES.
...
...
@@ -208,6 +208,13 @@ The following types of special documentation blocks are supported by doxygen:
\endverbatim
</ul>
Doxygen only allows one brief and one detailed description. If there is
one brief description before a declaration and one before a
definition, only the one before the \e declaration will be used. If
the same situation occurs for a detail description,
the one before the \e definition is preferred and the one before the
declaration will be ignored.
Here is an example of a documented piece of C++ code using the Qt style:
\verbinclude qtstyle.cpp
\htmlonly
...
...
@@ -551,9 +558,9 @@ after the \c INPUT_FILTER tag.
\subsection moreinfo More information
\addindex QdbtTabular
For a more elaborate example see <a href="http://www.stack.nl/~dimitri/qdbttabular/html/index.html">
For a more elaborate example see <a href="http://www.stack.nl/~dimitri/qdbttabular/
doc/
html/index.html">
the documentation of QdbtTabular</a> \latexonly
({\tt http://www.stack.nl/$\sim$dimitri/qdbttabular/html})\endlatexonly.
({\tt http://www.stack.nl/$\sim$dimitri/qdbttabular/
doc/
html})\endlatexonly.
\htmlonly
I hope that was clear. If not, please let me know, so I can improve this document. If you have problems
take a look at the <a href="faq.html">faq</a> and the <a href="trouble.html">troubleshooting</a> sections.
...
...
src/classdef.cpp
View file @
19119105
...
...
@@ -262,7 +262,14 @@ void ClassDef::writeDocumentation(OutputList &ol)
if
(
incFile
)
{
QCString
nm
=
incName
.
copy
();
if
(
incName
.
isEmpty
())
nm
=
incFile
->
name
();
if
(
incName
.
isEmpty
())
{
nm
=
incFile
->
name
();
if
(
Config
::
fullPathNameFlag
)
{
nm
.
prepend
(
stripFromPath
(
incFile
->
getPath
().
copy
()));
}
}
ol
.
startTypewriter
();
ol
.
docify
(
"#include <"
);
ol
.
disable
(
OutputGenerator
::
Html
);
...
...
@@ -837,7 +844,14 @@ void ClassDef::writeIncludeFile(OutputList &ol)
startFile
(
ol
,
fileName
+
"-include"
,
name
()
+
" Include File"
);
startTitle
(
ol
,
0
);
QCString
n
=
incName
.
copy
();
if
(
incName
.
isEmpty
())
n
=
incFile
->
name
();
if
(
incName
.
isEmpty
())
{
n
=
incFile
->
name
();
if
(
Config
::
fullPathNameFlag
)
{
n
.
prepend
(
stripFromPath
(
incFile
->
getPath
().
copy
()));
}
}
parseText
(
ol
,
n
);
endTitle
(
ol
,
0
,
0
);
parseText
(
ol
,
theTranslator
->
trVerbatimText
(
incFile
->
name
()));
...
...
src/config.cpp
View file @
19119105
src/config.l
View file @
19119105
src/defargs.cpp
View file @
19119105
...
...
@@ -304,39 +304,39 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
*yy_cp = '\0'; \
yy_c_buf_p = yy_cp;
#define YY_NUM_RULES 3
2
#define YY_END_OF_BUFFER 3
3
static
yyconst
short
int
yy_acclist
[
13
2
]
=
#define YY_NUM_RULES 3
3
#define YY_END_OF_BUFFER 3
4
static
yyconst
short
int
yy_acclist
[
13
3
]
=
{
0
,
2
,
2
,
3
3
,
31
,
32
,
32
,
1
,
31
,
32
,
25
,
31
,
32
,
20
,
25
,
31
,
32
,
25
,
31
,
32
,
27
,
31
,
32
,
13
,
27
,
31
,
32
,
14
,
27
,
31
,
32
,
26
,
27
,
31
,
32
,
15
,
27
,
31
,
32
,
16
,
27
,
31
,
32
,
18
,
27
,
31
,
32
,
17
,
27
,
31
,
32
,
24
,
31
,
32
,
2
,
24
,
31
,
32
,
12
,
24
,
31
,
32
,
22
,
24
,
31
,
32
,
12
,
24
,
31
,
32
,
21
,
2
4
,
31
,
32
,
23
,
24
,
31
,
32
,
24
,
31
,
32
,
7
,
25
,
31
,
32
,
25
,
31
,
32
,
12
,
25
,
31
,
32
,
22
,
25
,
31
,
32
,
11
,
24
,
31
,
32
,
9
,
23
,
24
,
31
,
32
,
31
,
32
,
31
,
32
,
31
,
32
,
19
,
26
,
2
,
16392
,
23
,
3
,
10
,
9
,
23
,
30
,
16392
,
8200
,
6
,
6
,
8200
,
5
,
4
,
5
,
4
,
28
,
29
2
,
2
,
3
4
,
32
,
33
,
31
,
33
,
1
,
32
,
33
,
25
,
32
,
33
,
20
,
25
,
32
,
33
,
25
,
32
,
33
,
27
,
32
,
33
,
13
,
27
,
32
,
33
,
14
,
27
,
32
,
33
,
26
,
27
,
32
,
33
,
15
,
27
,
32
,
33
,
16
,
27
,
32
,
33
,
18
,
27
,
32
,
33
,
17
,
27
,
32
,
33
,
24
,
32
,
33
,
2
,
24
,
32
,
33
,
12
,
24
,
32
,
33
,
22
,
24
,
32
,
33
,
12
,
24
,
32
,
33
,
2
1
,
24
,
32
,
33
,
23
,
24
,
32
,
33
,
24
,
32
,
33
,
7
,
25
,
32
,
33
,
25
,
32
,
33
,
12
,
25
,
32
,
33
,
22
,
25
,
32
,
33
,
11
,
24
,
32
,
33
,
9
,
23
,
24
,
32
,
33
,
32
,
33
,
32
,
33
,
32
,
33
,
19
,
26
,
2
,
16392
,
23
,
3
,
10
,
9
,
23
,
30
,
16392
,
8200
,
6
,
6
,
8200
,
5
,
4
,
5
,
4
,
2
8
,
2
9
}
;
static
yyconst
short
int
yy_accept
[
100
]
=
{
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
4
,
6
,
7
,
10
,
13
,
17
,
20
,
2
3
,
27
,
31
,
35
,
39
,
43
,
47
,
51
,
54
,
58
,
6
2
,
66
,
70
,
74
,
78
,
81
,
85
,
88
,
92
,
96
,
10
0
,
105
,
107
,
109
,
111
,
112
,
113
,
114
,
114
,
114
,
11
5
,
116
,
116
,
117
,
117
,
117
,
117
,
118
,
120
,
120
,
12
1
,
121
,
121
,
121
,
121
,
121
,
122
,
123
,
124
,
124
,
12
5
,
125
,
125
,
125
,
125
,
126
,
127
,
129
,
129
,
129
,
1
29
,
130
,
130
,
131
,
131
,
131
,
131
,
132
,
132
3
,
3
,
3
,
4
,
6
,
8
,
11
,
14
,
18
,
21
,
2
4
,
28
,
32
,
36
,
40
,
44
,
48
,
52
,
55
,
59
,
6
3
,
67
,
71
,
75
,
79
,
82
,
86
,
89
,
93
,
97
,
10
1
,
106
,
108
,
110
,
112
,
113
,
114
,
115
,
115
,
115
,
11
6
,
117
,
117
,
118
,
118
,
118
,
118
,
119
,
121
,
121
,
12
2
,
122
,
122
,
122
,
122
,
122
,
123
,
124
,
125
,
125
,
12
6
,
126
,
126
,
126
,
126
,
127
,
128
,
130
,
130
,
130
,
1
30
,
131
,
131
,
132
,
132
,
132
,
132
,
133
,
133
}
;
...
...
@@ -1175,7 +1175,12 @@ YY_RULE_SETUP
YY_BREAK
case
32
:
YY_RULE_SETUP
#line 282 "defargs.l"
#line 281 "defargs.l"
YY_BREAK
case
33
:
YY_RULE_SETUP
#line 283 "defargs.l"
ECHO
;
YY_BREAK
case
YY_STATE_EOF
(
INITIAL
):
...
...
@@ -2067,7 +2072,7 @@ int main()
return
0
;
}
#endif
#line 28
2
"defargs.l"
#line 28
3
"defargs.l"
/* ----------------------------------------------------------------------------
...
...
src/defargs.l
View file @
19119105
...
...
@@ -277,6 +277,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
<FuncQual>"="{B}*"0" {
argList->pureSpecifier=TRUE;
}
<*>\n
<*>.
%%
...
...
src/diagram.cpp
View file @
19119105
...
...
@@ -31,6 +31,7 @@
#include "util.h"
#include "latexgen.h"
#include "htmlgen.h"
#include "doxygen.h"
//-----------------------------------------------------------------------------
...
...
@@ -150,9 +151,21 @@ static void writeMapArea(QTextStream &t,ClassDef *cd,int x,int y,int w,int h)
{
if
(
cd
->
isLinkable
())
{
QCString
*
dest
;
QCString
ref
=
cd
->
getReference
();
t
<<
"<area "
;
if
(
cd
->
getReference
())
t
<<
"doxygen=
\"
"
<<
cd
->
getReference
()
<<
":
\"
"
;
t
<<
"href=
\"
"
<<
cd
->
getOutputFileBase
()
<<
".html
\"
"
;
if
(
!
ref
.
isEmpty
())
{
t
<<
"doxygen=
\"
"
<<
ref
<<
":"
;
if
((
dest
=
tagDestinationDict
[
ref
]))
t
<<
*
dest
<<
"/"
;
t
<<
"
\"
"
;
}
t
<<
"href=
\"
"
;
if
(
!
ref
.
isEmpty
())
{
if
((
dest
=
tagDestinationDict
[
ref
]))
t
<<
*
dest
<<
"/"
;
}
t
<<
cd
->
getOutputFileBase
()
<<
".html
\"
"
;
t
<<
"ALT=
\"
"
<<
cd
->
name
();
t
<<
"
\"
shape=
\"
rect
\"
coords=
\"
"
<<
x
<<
","
<<
y
<<
","
;
t
<<
(
x
+
w
)
<<
","
<<
(
y
+
h
)
<<
"
\"
>"
<<
endl
;
...
...
@@ -217,8 +230,10 @@ void DiagramItem::addChild(DiagramItem *di)
void
DiagramRow
::
insertClass
(
DiagramItem
*
parent
,
ClassDef
*
cd
,
bool
doBases
,
Protection
prot
,
Specifier
virt
,
const
char
*
ts
)
{
if
(
cd
->
visited
)
return
;
// error in the class diagram
DiagramItem
*
di
=
new
DiagramItem
(
parent
,
diagram
->
at
(
level
)
->
count
(),
cd
,
prot
,
virt
,
ts
);
cd
->
visited
=
TRUE
;
if
(
parent
)
parent
->
addChild
(
di
);
di
->
move
(
count
()
*
gridWidth
,
level
*
gridHeight
);
append
(
di
);
...
...
@@ -229,7 +244,7 @@ void DiagramRow::insertClass(DiagramItem *parent,ClassDef *cd,bool doBases,
while
(
bcd
)
{
ClassDef
*
ccd
=
bcd
->
classDef
;
if
(
ccd
&&
ccd
->
isVisibleInHierarchy
())
count
++
;
if
(
ccd
&&
ccd
->
isVisibleInHierarchy
()
&&
!
ccd
->
visited
)
count
++
;
bcd
=
bcl
->
next
();
}
if
(
count
>
0
&&
(
prot
!=
Private
||
!
doBases
))
...
...
@@ -249,7 +264,7 @@ void DiagramRow::insertClass(DiagramItem *parent,ClassDef *cd,bool doBases,
while
(
bcd
)
{
ClassDef
*
ccd
=
bcd
->
classDef
;
if
(
ccd
&&
ccd
->
isVisibleInHierarchy
())
if
(
ccd
&&
ccd
->
isVisibleInHierarchy
()
&&
!
ccd
->
visited
)
{
row
->
insertClass
(
di
,
ccd
,
doBases
,
bcd
->
prot
,
doBases
?
bcd
->
virt
:
Normal
,
...
...
@@ -883,10 +898,23 @@ void TreeDiagram::drawConnectors(QTextStream &t,Image *image,
}
}
void
clearVisitFlags
()
{
ClassListIterator
cli
(
classList
);
ClassDef
*
cd
;
for
(;(
cd
=
cli
.
current
());
++
cli
)
{
cd
->
visited
=
FALSE
;
}
}
ClassDiagram
::
ClassDiagram
(
ClassDef
*
root
)
{
clearVisitFlags
();
base
=
new
TreeDiagram
(
root
,
TRUE
);
base
->
computeLayout
();
clearVisitFlags
();
super
=
new
TreeDiagram
(
root
,
FALSE
);
super
->
computeLayout
();
DiagramItem
*
baseItem
=
base
->
first
()
->
first
();
...
...
src/doxygen.cpp
View file @
19119105
...
...
@@ -265,7 +265,8 @@ void buildFileList(Entry *root)
void
addIncludeFile
(
ClassDef
*
cd
,
FileDef
*
ifd
,
Entry
*
root
)
{
if
(
(
!
root
->
doc
.
isEmpty
()
||
!
root
->
brief
.
isEmpty
()
||
(
!
root
->
doc
.
stripWhiteSpace
().
isEmpty
()
||
!
root
->
brief
.
stripWhiteSpace
().
isEmpty
()
||
Config
::
extractAllFlag
)
&&
root
->
protection
!=
Private
)
...
...
@@ -313,8 +314,11 @@ void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
// set include supplied name
cd
->
setIncludeName
(
root
->
includeName
);
if
(
cd
->
name
().
find
(
'@'
)
==-
1
)
{
fd
->
setIncludeName
(
cd
->
getOutputFileBase
()
+
"-include"
);
if
(
includeDict
[
fd
->
absFilePath
()]
==
0
)
// include not inserted earlier
}
if
(
!
fd
->
absFilePath
().
isEmpty
()
&&
includeDict
[
fd
->
absFilePath
()]
==
0
)
// include not inserted earlier
{
includeFiles
.
inSort
(
fd
);
includeDict
.
insert
(
fd
->
absFilePath
(),
fd
);
...
...
@@ -1551,6 +1555,9 @@ bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix,
{
QCString
baseClassName
=
removeRedundantWhiteSpace
(
scopePrefix
+
bi
->
name
);
ClassDef
*
baseClass
=
getClass
(
baseClassName
);
if
(
baseClassName
!=
root
->
name
)
// check for base class with the same name,
// look in the outer scope for a match
{
//printf("baseClass %s of %s found (%s and %s)\n",
// baseClassName.data(),
// root->name.data(),
...
...
@@ -1567,8 +1574,8 @@ bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix,
templSpec
=
baseClassName
.
right
(
baseClassName
.
length
()
-
i
);
baseClassName
=
baseClassName
.
left
(
i
);
baseClass
=
getClass
(
baseClassName
);
//printf("
baseClass=%s templSpec=%s\n",
//
baseClassName.data(),templSpec.data());
//printf("baseClass=%p
baseClass=%s templSpec=%s\n",
// baseClass,
baseClassName.data(),templSpec.data());
}
bool
found
=
baseClass
!=
0
;
...
...
@@ -1628,7 +1635,8 @@ bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix,
classList
.
inSort
(
baseClass
);
//printf("ClassDict.insert(%s)\n",resolveDefines(fullName).data());
//classDict.insert(resolveDefines(bi->name),baseClass);
classDict
.
insert
(
bi
->
name
,
baseClass
);
classDict
.
insert
(
baseClassName
,
baseClass
);
}
}
bi
=
baseList
->
next
();
}
...
...
@@ -1660,10 +1668,9 @@ void computeClassRelations(Entry *root)
if
((
cd
=
getClass
(
bName
)))
{
//printf("Class %s %d\n",cd->name().data(),root->extends->count());
if
(
!
cd
->
visited
)
if
(
!
cd
->
visited
)
// check integrity of the tree
{
cd
->
visited
=
TRUE
;
// mark class as used (in case the are multiple classes
// with the same name!)
cd
->
visited
=
TRUE
;
// mark class as used
if
(
root
->
extends
->
count
()
>
0
)
// there are base classes
{
Entry
*
p
=
root
->
parent
;
...
...
@@ -1957,7 +1964,7 @@ static bool findUnrelatedFunction(Entry *root,
}
else
// got docs for an undefined member!
{
warn
(
"Warning: documented function `%s'
in file %s at line %d "
warn
(
"Warning: documented function `%s'
\n
in file %s at line %d "
"was not defined
\n
"
,
decl
,
root
->
fileName
.
data
(),
root
->
startLine
);
}
...
...
@@ -4145,7 +4152,9 @@ void readTagFile(const char *tl)
{
fileName
=
tagLine
.
left
(
eqPos
).
stripWhiteSpace
();
destName
=
tagLine
.
right
(
tagLine
.
length
()
-
eqPos
-
1
).
stripWhiteSpace
();
tagDestinationDict
.
insert
(
fileName
,
new
QCString
(
destName
));
QFileInfo
fi
(
fileName
);
tagDestinationDict
.
insert
(
fi
.
fileName
(),
new
QCString
(
destName
));
//printf("insert tagDestination %s->%s\n",fileName.data(),destName.data());
}
else
{
...
...
@@ -4155,9 +4164,9 @@ void readTagFile(const char *tl)
QFileInfo
fi
(
fileName
);
if
(
!
fi
.
exists
()
||
!
fi
.
isFile
())
{
err
(
"Error: Tag file `%s' does not exist or is not a file
\n
"
,
warn
(
"Warning: Tag file `%s' does not exist or is not a file. Skipping it...
\n
"
,
fileName
.
data
());
exit
(
1
)
;
return
;
}
if
(
!
destName
.
isEmpty
())
...
...
src/example.h
View file @
19119105
...
...
@@ -45,6 +45,7 @@ class ExampleDict : public QDict<Example>
{
public
:
ExampleDict
(
int
size
=
17
)
:
QDict
<
Example
>
(
size
)
{}
~
ExampleDict
()
{}
};
#endif
src/filedef.cpp
View file @
19119105
...
...
@@ -78,11 +78,17 @@ void FileDef::writeDocumentation(OutputList &ol)
{
//funcList->countDecMembers();
QCString
fn
=
name
();
if
(
Config
::
fullPathNameFlag
)
{
fn
.
prepend
(
stripFromPath
(
getPath
().
copy
()));
}
QCString
pageTitle
=
name
()
+
" File Reference"
;
startFile
(
ol
,
diskname
,
pageTitle
);
startTitle
(
ol
,
getOutputFileBase
());
parseText
(
ol
,
theTranslator
->
trFileReference
(
name
()
));
endTitle
(
ol
,
getOutputFileBase
(),
name
()
);
parseText
(
ol
,
theTranslator
->
trFileReference
(
fn
));
endTitle
(
ol
,
getOutputFileBase
(),
fn
);
//ol.newParagraph();
if
(
Config
::
genTagFile
.
length
()
>
0
)
tagFile
<<
"&"
<<
name
()
<<
":
\n
"
;
...
...
@@ -322,10 +328,15 @@ void FileDef::writeDocumentation(OutputList &ol)
/*! Write a source listing of this file to the output */
void
FileDef
::
writeSource
(
OutputList
&
ol
)
{
QCString
fn
=
name
();
if
(
Config
::
fullPathNameFlag
)
{
fn
.
prepend
(
stripFromPath
(
getPath
().
copy
()));
}
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
sourceName
(),
name
()
+
" Source File"
);
startFile
(
ol
,
sourceName
(),
fn
+
" Source File"
);
startTitle
(
ol
,
0
);
parseText
(
ol
,
name
()
);
parseText
(
ol
,
fn
);
endTitle
(
ol
,
0
,
0
);
//parseText(ol,theTranslator->trVerbatimText(incFile->name()));
//ol.writeRuler();
...
...
src/formula.cpp
View file @
19119105
...
...
@@ -90,7 +90,11 @@ void FormulaList::generateBitmaps(const char *path)
{
//printf("Running latex...\n");
//system("latex _formulas.tex </dev/null >/dev/null");
system
(
"latex _formulas.tex"
);
if
(
system
(
"latex _formulas.tex"
)
!=
0
)
{
err
(
"Problems running latex. Check your installation or look at _formulas.tex!
\n
"
);
return
;
}
//printf("Running dvips...\n");
QListIterator
<
int
>
pli
(
pagesToGenerate
);
int
*
pagePtr
;
...
...
@@ -106,7 +110,11 @@ void FormulaList::generateBitmaps(const char *path)
// encapsulated postscript.
sprintf
(
dviCmd
,
"dvips -q -D 600 -E -n 1 -p %d -o %s.eps _formulas.dvi"
,
pageIndex
,
formBase
.
data
());
system
(
dviCmd
);
if
(
system
(
dviCmd
)
!=
0
)
{
err
(
"Problems running dvips. Check your installation!
\n
"
);
return
;
}
// now we read the generated postscript file to extract the bounding box
QFileInfo
fi
(
formBase
+
".eps"
);
if
(
fi
.
exists
())
...
...
@@ -164,7 +172,11 @@ void FormulaList::generateBitmaps(const char *path)
);
#endif
//printf("Running ghostscript...\n");
system
(
gsCmd
);
if
(
system
(
gsCmd
)
!=
0
)
{
err
(
"Problem running ghostscript. Check your installation!
\n
"
);
return
;
}
f
.
setName
(
formBase
+
".pnm"
);
uint
imageX
=
0
,
imageY
=
0
;
// we read the generated image again, to obtain the pixel data.
...
...
src/htmlgen.cpp
View file @
19119105
...
...
@@ -79,25 +79,19 @@ void HtmlGenerator::startFile(const char *name,const char *title,bool external)
else
t
<<
"href=
\"
"
;
if
(
Config
::
htmlStyleSheet
.
isEmpty
())
{
t
<<
"doxygen.css"
;
}
else
{
t
<<
Config
::
htmlStyleSheet
;
}
t
<<
"
\"
rel=
\"
stylesheet
\"
type=
\"
text/css
\"
>
\n
"
"</head><body bgcolor=
\"
#ffffff
\"
>
\n
"
;
}
else
{
t
<<
substitute
(
substitute
(
substitute
(
substitute
(
header
,
"$title"
,
lastTitle
),
"$datetime"
,
dateToString
(
TRUE
)
),
"$date"
,
dateToString
(
FALSE
)
),
"$doxygenversion"
,
versionString
);
t
<<
substituteKeywords
(
header
,
lastTitle
);
}
t
<<
"<!-- Generated by Doxygen "
<<
versionString
<<
" on "
<<
dateToString
(
TRUE
)
<<
" -->"
<<
endl
;
...
...
@@ -138,16 +132,7 @@ void HtmlGenerator::writeFooter(int part,bool external)
if
(
footer
.
length
()
==
0
)
t
<<
"<hr><address><small>"
;
else
t
<<
substitute
(
substitute
(
substitute
(
substitute
(
footer
,
"$title"
,
lastTitle
),
"$datetime"
,
dateToString
(
TRUE
)
),
"$date"
,
dateToString
(
FALSE
)
),
"$doxygenversion"
,
versionString
);
t
<<
substituteKeywords
(
footer
,
lastTitle
);
break
;
case
1
:
if
(
footer
.
length
()
==
0
)
...
...
@@ -194,6 +179,8 @@ void HtmlGenerator::endProjectNumber()
void
HtmlGenerator
::
writeStyleInfo
(
int
part
)
{
if
(
part
==
0
)
{
if
(
Config
::
htmlStyleSheet
.
isEmpty
())
// write default style sheet
{
startPlainFile
(
"doxygen.css"
);
t
<<
"H1 { text-align: center }"
<<
endl
;
...
...
@@ -214,6 +201,13 @@ void HtmlGenerator::writeStyleInfo(int part)
t
<<
endl
;
endPlainFile
();
}
else
// write user defined style sheet
{
startPlainFile
(
Config
::
htmlStyleSheet
);
t
<<
fileToString
(
Config
::
htmlStyleSheet
);
endPlainFile
();
}
}
}
void
HtmlGenerator
::
startDoxyAnchor
(
const
char
*
,
const
char
*
,
...
...
@@ -372,6 +366,13 @@ void HtmlGenerator::writeHtmlLink(const char *url,const char *text)
t
<<
"</a>"
;
}
void
HtmlGenerator
::
writeMailLink
(
const
char
*
url
)
{
t
<<
"<a href=
\"
mailto:"
<<
url
<<
"
\"
>"
;
docify
(
url
);
t
<<
"</a>"
;
}
void
HtmlGenerator
::
startGroupHeader
()
{
t
<<
"<h2>"
;
...
...
src/htmlgen.h
View file @
19119105
...
...
@@ -80,6 +80,7 @@ class HtmlGenerator : public OutputGenerator
void
startTextLink
(
const
char
*
file
,
const
char
*
anchor
);
void
endTextLink
();
void
writeHtmlLink
(
const
char
*
url
,
const
char
*
text
);
void
writeMailLink
(
const
char
*
url
);
void
startTypewriter
()
{
t
<<
"<code>"
;
}
void
endTypewriter
()
{
t
<<
"</code>"
;
}
void
startGroupHeader
();
...
...
src/htmlhelp.cpp
View file @
19119105
...
...
@@ -43,6 +43,7 @@ class IndexFieldList : public QList<IndexField>
{
return
stricmp
(((
IndexField
*
)
item1
)
->
name
,((
IndexField
*
)
item2
)
->
name
);
}
~
IndexFieldList
()
{}
};
class
IndexFieldListIterator
:
public
QListIterator
<
IndexField
>
...
...
@@ -56,6 +57,7 @@ class IndexFieldDict : public QDict<IndexField>
{
public
:
IndexFieldDict
(
int
size
)
:
QDict
<
IndexField
>
(
size
)
{}
~
IndexFieldDict
()
{}
};
/*! A helper class for HtmlHelp that manages a two level index in
...
...
src/index.cpp
View file @
19119105
...
...
@@ -55,7 +55,7 @@ QCString abbreviate(const char *s,const char *name)
QCString
start1
=
(
QCString
)
"The "
+
name
+
" class "
;
QCString
start2
=
(
QCString
)
"The "
+
name
+
" widget "
;
QCString
start3
=
(
QCString
)
"The "
+
name
+
" file "
;
result
=
result
.
s
implify
WhiteSpace
();
result
=
result
.
s
trip
WhiteSpace
();
// strip trailing .
if
(
result
.
length
()
>
0
&&
result
.
at
(
result
.
length
()
-
1
)
==
'.'
)
result
=
result
.
left
(
result
.
length
()
-
1
);
...
...
src/instdox.cpp
View file @
19119105
...
...
@@ -50,7 +50,8 @@ void writeInstallScript()
{
fileName
=
tagLine
;
}
t
<<
"
\"
"
<<
fileName
<<
"
\"
,
\"\"
"
;
QFileInfo
fi
(
fileName
);
t
<<
"
\"
"
<<
fi
.
fileName
()
<<
"
\"
,
\"\"
"
;
s
=
Config
::
tagFileList
.
next
();
if
(
s
)
t
<<
", "
;
}
...
...
src/latexgen.cpp
View file @
19119105
...
...
@@ -217,7 +217,8 @@ void LatexGenerator::startIndexSection(IndexSections is)
}
else
{
t
<<
fileToString
(
Config
::
latexHeaderFile
);
QCString
header
=
fileToString
(
Config
::
latexHeaderFile
);
t
<<
substituteKeywords
(
header
,
0
);
}
}
break
;
...
...
@@ -657,7 +658,9 @@ void LatexGenerator::writeIndexItem(const char *ref,const char *fn,
void
LatexGenerator
::
writeHtmlLink
(
const
char
*
url
,
const
char
*
text
)
{
t
<<
"{
\\
tt "
;
docify
(
text
);
t
<<
"}"
;
if
(
url
)
{
// t << " {\\tt (";
...
...
@@ -666,6 +669,13 @@ void LatexGenerator::writeHtmlLink(const char *url,const char *text)
}
}
void
LatexGenerator
::
writeMailLink
(
const
char
*
url
)
{
t
<<
"{
\\
tt "
;
docify
(
url
);
t
<<
"}"
;
}
void
LatexGenerator
::
writeStartAnnoItem
(
const
char
*
,
const
char
*
,
const
char
*
path
,
const
char
*
name
)
{
...
...
src/latexgen.h
View file @
19119105
...
...
@@ -76,6 +76,7 @@ class LatexGenerator : public OutputGenerator
void
startTextLink
(
const
char
*
,
const
char
*
);
void
endTextLink
();
void
writeHtmlLink
(
const
char
*
,
const
char
*
);
void
writeMailLink
(
const
char
*
);
void
startTypewriter
()
{
t
<<
"{
\\
tt "
;
}
void
endTypewriter
()
{
t
<<
"}"
;
}
void
startGroupHeader
();
...
...
src/mangen.cpp
View file @
19119105
...
...
@@ -150,6 +150,11 @@ void ManGenerator::writeHtmlLink(const char *,const char *text)
docify
(
text
);
}
void
ManGenerator
::
writeMailLink
(
const
char
*
url
)
{
docify
(
url
);
}
void
ManGenerator
::
startGroupHeader
()
{
if
(
!
firstCol
)
t
<<
endl
;
...
...
src/mangen.h
View file @
19119105
...
...
@@ -76,6 +76,7 @@ class ManGenerator : public OutputGenerator
void
startTextLink
(
const
char
*
,
const
char
*
)
{}
void
endTextLink
()
{}
void
writeHtmlLink
(
const
char
*
url
,
const
char
*
text
);
void
writeMailLink
(
const
char
*
url
);
void
startTypewriter
()
{
t
<<
"
\\
fC"
;
firstCol
=
FALSE
;
}
void
endTypewriter
()
{
t
<<
"
\\
fR"
;
firstCol
=
FALSE
;
}
void
startGroupHeader
();
...
...
src/memberdef.h
View file @
19119105
...
...
@@ -33,7 +33,6 @@ class ExampleList;
class
ExampleDict
;
class
OutputList
;
class
MemberDef
:
public
Definition
{
public
:
...
...
src/membername.h
View file @
19119105
...
...
@@ -59,6 +59,7 @@ struct MemberInfo
{
MemberInfo
(
MemberDef
*
md
,
Protection
p
,
Specifier
v
)
:
memberDef
(
md
),
prot
(
p
),
virt
(
v
)
{}
~
MemberInfo
()
{}
MemberDef
*
memberDef
;
Protection
prot
;
Specifier
virt
;
...
...
@@ -70,6 +71,7 @@ class MemberNameInfo : public QList<MemberInfo>
{
public
:
MemberNameInfo
(
const
char
*
name
);
~
MemberNameInfo
()
{}
const
char
*
memberName
()
const
{
return
name
;
}
int
compareItems
(
GCI
item1
,
GCI
item2
);
private
:
...
...
src/outputgen.h
View file @
19119105
...
...
@@ -81,6 +81,7 @@ class OutputGenerator
virtual
void
startTextLink
(
const
char
*
file
,
const
char
*
anchor
)
=
0
;
virtual
void
endTextLink
()
=
0
;
virtual
void
writeHtmlLink
(
const
char
*
url
,
const
char
*
text
)
=
0
;
virtual
void
writeMailLink
(
const
char
*
url
)
=
0
;
virtual
void
startTypewriter
()
=
0
;
virtual
void
endTypewriter
()
=
0
;
virtual
void
startGroupHeader
()
=
0
;
...
...
src/outputlist.h
View file @
19119105
...
...
@@ -120,6 +120,8 @@ class OutputList
{
forall
(
&
OutputGenerator
::
endTextLink
);
}
void
writeHtmlLink
(
const
char
*
url
,
const
char
*
text
)
{
forall
(
&
OutputGenerator
::
writeHtmlLink
,
url
,
text
);
}
void
writeMailLink
(
const
char
*
url
)
{
forall
(
&
OutputGenerator
::
writeMailLink
,
url
);
}
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
const
char
*
path
,
const
char
*
name
)
{
forall
(
&
OutputGenerator
::
writeStartAnnoItem
,
type
,
file
,
path
,
name
);
}
...
...
src/scanner.cpp
View file @
19119105
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/scanner.l
View file @
19119105
...
...
@@ -121,6 +121,7 @@ static bool inExceptionBlock;
static bool inSeeBlock;
static bool inReturnBlock;
static bool inAuthorBlock;
static bool inDeprecatedBlock;
static bool inVersionBlock;
static bool inDateBlock;
static bool inBugBlock;
...
...
@@ -146,6 +147,7 @@ static int argSharpCount;
static int currentArgumentContext;
static int lastCopyArgStringContext;
static int lastCopyArgContext;
static int currentListIndentLevel;
static QCString *copyArgString;
static ArgumentList *currentArgumentList;
...
...
@@ -193,6 +195,7 @@ static void initParser()
inSeeBlock = FALSE;
inReturnBlock = FALSE;
inAuthorBlock = FALSE;
inDeprecatedBlock = FALSE;
inVersionBlock = FALSE;
inDateBlock = FALSE;
inBugBlock = FALSE;
...
...
@@ -538,7 +541,7 @@ static bool inBlock()
{
return inParamBlock || inRetValBlock || inSeeBlock || inReturnBlock || inAuthorBlock ||
inVersionBlock || inDateBlock || inWarningBlock || inBugBlock ||
inParBlock || inExceptionBlock;
inParBlock || inExceptionBlock
|| inDeprecatedBlock
;
}
static void endBlock()
...
...
@@ -551,7 +554,7 @@ static void endBlock()
outDoc->endDescList();
inParamBlock=inRetValBlock=inSeeBlock=inReturnBlock=inAuthorBlock=
inVersionBlock=inDateBlock=inBugBlock=inWarningBlock=
inParBlock=inExceptionBlock=FALSE;
inParBlock=inExceptionBlock=
inDeprecatedBlock=
FALSE;
}
static void addSection()
...
...
@@ -738,6 +741,7 @@ static int yyread(char *buf,int max_size)
//ATTR ((({BN}+[^\>]+)/">")?)
%}
CMD ("\\"|"@")
BN [ \t\n\r]
BL [ \t\r]*"\n"
B [ \t]
...
...
@@ -799,6 +803,7 @@ VAR [vV][aA][rR]
%x Include
%x ClassName
%x ClassVar
%x ClassTemplSpec
%x Bases
%x BasesProt
%x NextSemi
...
...
@@ -992,15 +997,15 @@ VAR [vV][aA][rR]
envvar=envvar.left(envvar.length()-1);
outDoc->docify(getenv(envvar));
}
<DocScan>
("\\"|"@")
"htmlonly"/[^a-z_A-Z0-9] {
<DocScan>
{CMD}
"htmlonly"/[^a-z_A-Z0-9] {
outDoc->disableAllBut(OutputGenerator::Html);
BEGIN(DocHtmlScan);
}
<DocHtmlScan>
("\\"|"@")
"endhtmlonly"/[^a-z_A-Z0-9] {
<DocHtmlScan>
{CMD}
"endhtmlonly"/[^a-z_A-Z0-9] {
outDoc->enableAll();
BEGIN(DocScan);
}
<DocScan>
("\\"|"@")
"latexonly"/[^a-z_A-Z0-9] {
<DocScan>
{CMD}
"latexonly"/[^a-z_A-Z0-9] {
outDoc->disableAllBut(OutputGenerator::Latex);
BEGIN(DocLatexScan);
}
...
...
@@ -1012,7 +1017,7 @@ VAR [vV][aA][rR]
c[0]=*yytext;c[1]='\0';
outDoc->writeString(c);
}
<DocLatexScan>
("\\"|"@")
"endlatexonly"/[^a-z_A-Z0-9] {
<DocLatexScan>
{CMD}
"endlatexonly"/[^a-z_A-Z0-9] {
outDoc->enableAll();
BEGIN(DocScan);
}
...
...
@@ -1023,16 +1028,16 @@ VAR [vV][aA][rR]
<DocScan>"\\headerfilelist"/{BN} { /*TODO: fix this writeHeaderFileList(*outDoc); */ }
<DocScan>"\\header"/{BN} { BEGIN( DocSkipWord ); }
<DocScan>"\\define"/{BN} { BEGIN( DocSkipWord ); }
<DocScan>
("\\"|"@")
"verbinclude"/{BN} { BEGIN( DocVerbInc ); }
<DocScan>
{CMD}
"verbinclude"/{BN} { BEGIN( DocVerbInc ); }
<DocVerbInc>{FILE} {
verbIncludeFile(*outDoc,stripQuotes(yytext));
BEGIN( DocScan );
}
<DocScan>
("\\"|"@")
"verbatim"/[^a-z_A-Z0-9] {
<DocScan>
{CMD}
"verbatim"/[^a-z_A-Z0-9] {
outDoc->startCodeFragment();
BEGIN(DocVerbatim);
}
<DocVerbatim>
("\\"|"@")
"endverbatim"/[^a-z_A-Z0-9] {
<DocVerbatim>
{CMD}
"endverbatim"/[^a-z_A-Z0-9] {
outDoc->endCodeFragment();
BEGIN(DocScan);
}
...
...
@@ -1048,7 +1053,7 @@ VAR [vV][aA][rR]
char c[2];c[0]=*yytext;c[1]='\0';
outDoc->codify(c);
}
<DocScan>
("\\"|"@")
"internal"/{BN} {
<DocScan>
{CMD}
"internal"/{BN} {
if (!Config::internalDocsFlag)
{
outDoc->newParagraph();
...
...
@@ -1061,7 +1066,7 @@ VAR [vV][aA][rR]
outDoc->newParagraph();
scanString(theTranslator->trReimplementedForInternalReasons()+"\n");
}
<DocScan>
("\\"|"@")
"link"/{BN} { BEGIN( DocLink ); }
<DocScan>
{CMD}
"link"/{BN} { BEGIN( DocLink ); }
<DocSkipWord>[a-z_A-Z0-9.:()]+ { BEGIN( DocScan ); }
<DocLink>[a-z_A-Z0-9:#.~/()\-\+]+ {
linkRef = stripKnownExtensions(yytext);
...
...
@@ -1070,7 +1075,7 @@ VAR [vV][aA][rR]
}
<DocLinkText>. { linkText += *yytext; }
<DocLinkText>"\n" { linkText += " "; }
<DocLink,DocLinkText>
("\\"|"@")
"endlink" { // <- needed for things like \endlink.
<DocLink,DocLinkText>
{CMD}
"endlink" { // <- needed for things like \endlink.
//printf("GenerateLink className=`%s' linkRef=`%s' linkText=`%s'\n",
// className.data(),linkRef.data(),linkText.data());
generateLink(*outDoc,className,linkRef,inSeeBlock,linkText);
...
...
@@ -1085,10 +1090,10 @@ VAR [vV][aA][rR]
BEGIN( DocScan );
}
*/
<DocScan>
("\\"|"@")
"endlink"/[^a-z_A-Z0-9] { warn("Warning: \\endlink without \\link "
<DocScan>
{CMD}
"endlink"/[^a-z_A-Z0-9] { warn("Warning: \\endlink without \\link "
"in documentation of %s\n", refName.data());
}
<DocScan>
("\\"|"@")
"addindex"/{BN} {
<DocScan>
{CMD}
"addindex"/{BN} {
BEGIN(DocIndexWord);
}
<DocScan>"\\form#"[0-9]+ {
...
...
@@ -1105,7 +1110,7 @@ VAR [vV][aA][rR]
outDoc->addToIndex(yytext,0);
BEGIN(DocScan);
}
<DocScan>
("\\"|"@")
"arg"{BN}+ {
<DocScan>
{CMD}
"arg"{BN}+ {
if (insideArgumentList)
{
outDoc->writeListItem();
...
...
@@ -1117,7 +1122,7 @@ VAR [vV][aA][rR]
insideArgumentList=TRUE;
}
}
<DocScan>
("\\"|"@")
"par"{B}+ {
<DocScan>
{CMD}
"par"{B}+ {
BEGIN(DocPar);
}
<DocPar>[^\n]*{BN}+ {
...
...
@@ -1132,7 +1137,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem();
BEGIN(DocScan);
}
<DocScan>
("\\"|"@")
"warning"{BN}+ {
<DocScan>
{CMD}
"warning"{BN}+ {
endArgumentList();
if (!inWarningBlock)
{
...
...
@@ -1151,7 +1156,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem();
}
}
<DocScan>
("\\"|"@")
"bug"[s]?{BN}+ {
<DocScan>
{CMD}
"bug"[s]?{BN}+ {
endArgumentList();
if (!inBugBlock)
{
...
...
@@ -1169,7 +1174,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem();
}
}
<DocScan>
("\\"|"@")"version"{BN}+
{
<DocScan>
{CMD}"version"{BN}+
{
endArgumentList();
if (!inVersionBlock)
{
...
...
@@ -1188,7 +1193,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem();
}
}
<DocScan>
("\\"|"@")
"date"{BN}+ {
<DocScan>
{CMD}
"date"{BN}+ {
endArgumentList();
if (!inDateBlock)
{
...
...
@@ -1207,7 +1212,25 @@ VAR [vV][aA][rR]
outDoc->writeDescItem();
}
}
<DocScan>("\\"|"@")"author"{BN}+ {
<DocScan>{CMD}"deprecated"{BN}+ {
endArgumentList();
if (!inDeprecatedBlock)
{
if (inBlock()) endBlock();
inDeprecatedBlock=TRUE;
outDoc->startDescList();
outDoc->startBold();
scanString(theTranslator->trDeprecated()+": ");
outDoc->endBold();
outDoc->endDescTitle();
outDoc->writeDescItem();
}
else
{
outDoc->writeDescItem();
}
}
<DocScan>{CMD}"author"{BN}+ {
endArgumentList();
if (!inAuthorBlock)
{
...
...
@@ -1226,7 +1249,7 @@ VAR [vV][aA][rR]
outDoc->docify(", ");
}
}
<DocScan>
("\\"|"@")
("return"([s])?|"result"){BN}+ {
<DocScan>
{CMD}
("return"([s])?|"result"){BN}+ {
endArgumentList();
if (!inReturnBlock)
{
...
...
@@ -1241,7 +1264,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem();
}
}
<DocScan>
("\\sa"|"@see"){BN}+
{
<DocScan>
{CMD}("sa"|"see"){BN}+
{
endArgumentList();
if (!inSeeBlock)
{
...
...
@@ -1261,7 +1284,7 @@ VAR [vV][aA][rR]
outDoc->docify(", ");
}
}
<DocScan>
("\\"|"@")
"param"{BN}+ {
<DocScan>
{CMD}
"param"{BN}+ {
endArgumentList();
if (!inParamBlock)
{
...
...
@@ -1281,7 +1304,7 @@ VAR [vV][aA][rR]
}
BEGIN(DocParam);
}
<DocScan>
("\\"|"@")"retval"{BN}+
{
<DocScan>
{CMD}"retval"{BN}+
{
endArgumentList();
if (!inRetValBlock)
{
...
...
@@ -1301,7 +1324,7 @@ VAR [vV][aA][rR]
}
BEGIN(DocParam);
}
<DocScan>
("\\"|"@")
("exception"|"throw")s?{BN}+ {
<DocScan>
{CMD}
("exception"|"throw")s?{BN}+ {
endArgumentList();
if (!inExceptionBlock)
{
...
...
@@ -1340,7 +1363,7 @@ VAR [vV][aA][rR]
outDoc->startDescTableData();
BEGIN(DocScan);
}
<DocScan>
"\\
section "{ID}"\n" {
<DocScan>
{CMD}"
section "{ID}"\n" {
QCString secName=&yytext[9]; // skip "\section "
secName=secName.left(secName.length()-1); // remove \n
//printf("SectionName %s found\n",secName.data());
...
...
@@ -1352,7 +1375,7 @@ VAR [vV][aA][rR]
sec->type==SectionInfo::Subsection);
}
}
<DocScan>
"\\
anchor "{ID}"\n" {
<DocScan>
{CMD}"
anchor "{ID}"\n" {
QCString secName=&yytext[8];
secName=secName.left(secName.length()-1);
SectionInfo *sec;
...
...
@@ -1361,10 +1384,10 @@ VAR [vV][aA][rR]
outDoc->writeAnchor(sec->label);
}
}
<DocScan>
("\\"|"@")
"ref" {
<DocScan>
{CMD}
"ref" {
BEGIN(DocRefName);
}
<DocScan>
"\\
refitem" {
<DocScan>
{CMD}"
refitem" {
BEGIN(DocRefItem);
}
<DocRefName>{SCOPENAME} {
...
...
@@ -1429,9 +1452,10 @@ VAR [vV][aA][rR]
}
<DocRefItemName>.*/"\n" {
SectionInfo *sec;
QCString text=yytext;
if ((sec=sectionDict[sectionRef]))
{
outDoc->writeSectionRefItem(sec->fileName,sec->label,
yytext
);
outDoc->writeSectionRefItem(sec->fileName,sec->label,
text.stripWhiteSpace()
);
}
else
{
...
...
@@ -1440,7 +1464,7 @@ VAR [vV][aA][rR]
}
BEGIN(DocScan);
}
<DocScan>
("\\"|"@")
"image"{B}+ {
<DocScan>
{CMD}
"image"{B}+ {
BEGIN(DocImage);
}
<DocImage>[hH][tT][mM][lL] {
...
...
@@ -1496,12 +1520,12 @@ VAR [vV][aA][rR]
outDoc->enableAll();
BEGIN(DocScan);
}
<DocScan>
("\\"|"@")"code"({BN}*"\n"|{B}*)
{
<DocScan>
{CMD}"code"({BN}*"\n"|{B}*)
{
outDoc->startCodeFragment();
codeBlock.resize(0);
BEGIN( DocCodeBlock );
}
<DocScan>
("\\"|"@")
"endcode"/[^a-z_A-Z0-9] {
<DocScan>
{CMD}
"endcode"/[^a-z_A-Z0-9] {
warn("Warning: \\endcode without <PRE> or \\code "
"in the documentation of %s\n",refName.data());
}
...
...
@@ -1521,10 +1545,12 @@ VAR [vV][aA][rR]
generateRef(*outDoc,className,
removeRedundantWhiteSpace(oName),inSeeBlock);
}
<DocScan>("http:"|"ftp:"){URLMASK} { outDoc->writeHtmlLink(yytext,yytext); }
<DocScan>[a-zA-Z\.]+"@"[a-zA-Z\.]+ { outDoc->writeMailLink(yytext); }
<DocScan>{FILEMASK} {
generateFileRef(*outDoc,yytext);
}
<DocCodeBlock>{BN}*
("\\"|"@")
"endcode"/[^a-z_A-Z0-9] { // needed to match things like \endcode. (note the dot)
<DocCodeBlock>{BN}*
{CMD}
"endcode"/[^a-z_A-Z0-9] { // needed to match things like \endcode. (note the dot)
parseCode(*outDoc,className,codeBlock,exampleDoc,exampleName);
//printf("Code block\n-------------\n%s\n--------------\n",codeBlock.data());
outDoc->endCodeFragment();
...
...
@@ -1536,17 +1562,17 @@ VAR [vV][aA][rR]
outDoc->endCodeFragment();
BEGIN( DocScan );
}
<DocScan>
("\\"|"@")
"e"{BN}+ { BEGIN( DocEmphasis ); }
<DocScan>
("\\"|"@")
"a"{BN}+ { BEGIN( DocEmphasis ); }
<DocScan>
("\\"|"@")
"b"{BN}+ { BEGIN( DocBold ); }
<DocScan>
("\\"|"@")
"c"{BN}+ { BEGIN( DocCode ); }
<DocScan>
("\\"|"@")
"l"{BN}+
<DocScan>
("\\"|"@")
"include"{BN}+ { BEGIN( DocInclude ); }
<DocScan>
("\\"|"@")
"dontinclude"{BN}+ { BEGIN( DocDontInclude ); }
<DocScan>
("\\"|"@")
"skip"{BN}+ { BEGIN( DocSkipKey ); }
<DocScan>
("\\"|"@")
"skipline"{BN}+ { BEGIN( DocSkiplineKey ); firstLine=TRUE; }
<DocScan>
("\\"|"@")
"line"{BN}+ { BEGIN( DocLineKey ); firstLine=TRUE; }
<DocScan>
("\\"|"@")
"until"{BN}+ { BEGIN( DocUntilKey ); firstLine=TRUE; }
<DocScan>
{CMD}
"e"{BN}+ { BEGIN( DocEmphasis ); }
<DocScan>
{CMD}
"a"{BN}+ { BEGIN( DocEmphasis ); }
<DocScan>
{CMD}
"b"{BN}+ { BEGIN( DocBold ); }
<DocScan>
{CMD}
"c"{BN}+ { BEGIN( DocCode ); }
<DocScan>
{CMD}
"l"{BN}+
<DocScan>
{CMD}
"include"{BN}+ { BEGIN( DocInclude ); }
<DocScan>
{CMD}
"dontinclude"{BN}+ { BEGIN( DocDontInclude ); }
<DocScan>
{CMD}
"skip"{BN}+ { BEGIN( DocSkipKey ); }
<DocScan>
{CMD}
"skipline"{BN}+ { BEGIN( DocSkiplineKey ); firstLine=TRUE; }
<DocScan>
{CMD}
"line"{BN}+ { BEGIN( DocLineKey ); firstLine=TRUE; }
<DocScan>
{CMD}
"until"{BN}+ { BEGIN( DocUntilKey ); firstLine=TRUE; }
<DocSkipKey>[^ \t\r\n]+ {
if (includeFileLength>0)
skipUntil(yytext);
...
...
@@ -1591,9 +1617,9 @@ VAR [vV][aA][rR]
BEGIN( DocScan );
}
}
<DocKeyEnd>
("\\"|"@")
"line"{BN}+ { BEGIN(DocLineKey); }
<DocKeyEnd>
("\\"|"@")
"until"{BN}+ { BEGIN(DocUntilKey); }
<DocKeyEnd>
("\\"|"@")
"skipline"{BN}+ { BEGIN(DocSkiplineKey); }
<DocKeyEnd>
{CMD}
"line"{BN}+ { BEGIN(DocLineKey); }
<DocKeyEnd>
{CMD}
"until"{BN}+ { BEGIN(DocUntilKey); }
<DocKeyEnd>
{CMD}
"skipline"{BN}+ { BEGIN(DocSkiplineKey); }
<DocKeyEnd>\n
<DocKeyEnd><<EOF>> {
if (!firstLine) outDoc->endCodeFragment();
...
...
@@ -1656,10 +1682,18 @@ VAR [vV][aA][rR]
<DocScan>"</"{TR}{ATTR}">"
<DocScan>"<"{TD}{ATTR}">" { if (curTable) curTable->newElem(); }
<DocScan>"</"{TD}{ATTR}">"
<DocScan>"<"{OL}{ATTR}">" { outDoc->startEnumList(); }
<DocScan>"</"{OL}{ATTR}">" { outDoc->endEnumList(); }
<DocScan>"<"{UL}{ATTR}">" { outDoc->startItemList(); }
<DocScan>"</"{UL}{ATTR}">" { outDoc->endItemList(); }
<DocScan>"<"{OL}{ATTR}">" { outDoc->startEnumList();
currentListIndentLevel++;
}
<DocScan>"</"{OL}{ATTR}">" { outDoc->endEnumList();
currentListIndentLevel--;
}
<DocScan>"<"{UL}{ATTR}">" { outDoc->startItemList();
currentListIndentLevel++;
}
<DocScan>"</"{UL}{ATTR}">" { outDoc->endItemList();
currentListIndentLevel--;
}
<DocScan>"<"{LI}{ATTR}">" { outDoc->writeListItem(); }
<DocScan>"</"{LI}{ATTR}">"
<DocScan>"<"{TT}{ATTR}">" { outDoc->startTypewriter(); }
...
...
@@ -1667,8 +1701,12 @@ VAR [vV][aA][rR]
<DocScan>"<"{EM}{ATTR}">" { outDoc->startEmphasis(); }
<DocScan>"</"{EM}{ATTR}">" { outDoc->endEmphasis(); }
<DocScan>"<"{HR}{ATTR}">" { outDoc->writeRuler(); }
<DocScan>"<"{DL}{ATTR}">" { outDoc->startDescription(); }
<DocScan>"</"{DL}{ATTR}">" { outDoc->endDescription(); }
<DocScan>"<"{DL}{ATTR}">" { outDoc->startDescription();
currentListIndentLevel++;
}
<DocScan>"</"{DL}{ATTR}">" { outDoc->endDescription();
currentListIndentLevel--;
}
<DocScan>"<"{DT}{ATTR}">" { outDoc->startDescItem(); }
<DocScan>"</"{DT}{ATTR}">"
<DocScan>"<"{DD}{ATTR}">" { outDoc->endDescItem(); }
...
...
@@ -1696,7 +1734,7 @@ VAR [vV][aA][rR]
htmlUrl.resize(0);
htmlText.resize(0);
BEGIN(DocHtmlHref1); }
<DocHtmlHref1>{URLMASK}
+
{
<DocHtmlHref1>{URLMASK}
{
htmlUrl=yytext;
}
<DocHtmlHref1>">" { BEGIN(DocHtmlHref2); }
...
...
@@ -1710,30 +1748,8 @@ VAR [vV][aA][rR]
BEGIN(DocScan);
}
<DocHtmlLink,DocHtmlAnchor>">" { BEGIN(DocScan); }
<DocScan>"\\\\" {
outDoc->docify("\\");
}
<DocScan>"\\@" {
outDoc->docify("@");
}
<DocScan>"\\<" {
outDoc->docify("<");
}
<DocScan>"\\>" {
outDoc->docify(">");
}
<DocScan>"\\&" {
outDoc->docify("&");
}
<DocScan>"\\$" {
outDoc->docify("$");
}
<DocScan>"\\#" {
outDoc->docify("#");
}
<DocScan>"\\%" {
outDoc->docify("%");
<DocScan>{CMD}("\\"|"@"|"<"|">"|"&"|"$"|"#"|"%") {
outDoc->docify(&yytext[1]);
}
<DocScan>"%"[a-zA-Z_0-9\-]+ {
outDoc->docify(yytext+1);
...
...
@@ -2610,6 +2626,12 @@ VAR [vV][aA][rR]
current->type+=funcPtrType+")";
BEGIN(FindMembers);
}
<EndFuncPtr>")"{BN}*/"[" {
lineCount();
current->type+=funcPtrType.data();
current->args += ")";
BEGIN(FindMembers);
}
<EndFuncPtr>"(" { // a function returning a function
current->args += *yytext ;
bracketCount=0;
...
...
@@ -3036,6 +3058,26 @@ VAR [vV][aA][rR]
current->argList->clear();
BEGIN( FindMembers ) ;
}
<ClassName>{SCOPENAME}{BN}*/"<" {
sharpCount = 0;
current->name = yytext ;
lineCount();
BEGIN( ClassTemplSpec );
}
<ClassTemplSpec>">"({BN}*{SCOPENAME})? {
current->name += yytext;
if (--sharpCount<=0)
{
BEGIN( ClassVar );
}
}
<ClassTemplSpec>"<" {
current->name += yytext;
sharpCount++;
}
<ClassTemplSpec>. {
current->name += yytext;
}
<ClassName>{SCOPENAME} {
current->name = yytext ;
lineCount();
...
...
@@ -3240,11 +3282,7 @@ VAR [vV][aA][rR]
BEGIN( SkipCurlyBlock );
}
<JavaDoc>"@short"{B}+ {
lastBriefContext=Doc;
BEGIN( ClassDocBrief );
}
<JavaDoc>"\\brief"{B}+ {
<JavaDoc>{CMD}("brief"|"short"){B}+ {
lastBriefContext=tmpDocType;
BEGIN( ClassDocBrief );
}
...
...
@@ -3280,24 +3318,24 @@ VAR [vV][aA][rR]
current->brief+=".";
BEGIN( tmpDocType );
}
<JavaDoc>
("\\"|"@")
("image"|"author"|"internal"|"version"|"date"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see") {
<JavaDoc>
{CMD}
("image"|"author"|"internal"|"version"|"date"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see") {
current->doc+=yytext;
BEGIN( tmpDocType );
}
<Doc,JavaDoc>{B}*
("\\"|"@")
("fn"|"var"|"typedef"){B}* {
<Doc,JavaDoc>{B}*
{CMD}
("fn"|"var"|"typedef"){B}* {
current->section = Entry::MEMBERDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocFunc );
}
<Doc,JavaDoc>{B}*
("\\"|"@")
"def"{B}+ {
<Doc,JavaDoc>{B}*
{CMD}
"def"{B}+ {
nextDefContext = YY_START==LineDoc ? DefLineDoc : ClassDoc;
current->section = Entry::DEFINEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocDefine );
}
<LineDoc,Doc,JavaDoc>{B}*
("\\"|"@")
"overload"{B}* {
<LineDoc,Doc,JavaDoc>{B}*
{CMD}
"overload"{B}* {
overloadContext = YY_START;
BEGIN( ClassDocOverload );
}
...
...
@@ -3321,67 +3359,67 @@ VAR [vV][aA][rR]
current->startLine = yyLineNr;
BEGIN( ClassDocFunc );
}
<Doc,JavaDoc>{B}*
("\\"|"@")
"enum"{B}* {
<Doc,JavaDoc>{B}*
{CMD}
"enum"{B}* {
current->section = Entry::ENUMDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( EnumDocArg1 );
}
<Doc,JavaDoc>{B}*
("\\"|"@")
"defgroup"{B}* {
<Doc,JavaDoc>{B}*
{CMD}
"defgroup"{B}* {
current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( GroupDocArg1 );
}
<Doc,JavaDoc>{B}*
("\\"|"@")
"namespace"{B}* {
<Doc,JavaDoc>{B}*
{CMD}
"namespace"{B}* {
current->section = Entry::NAMESPACEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( NameSpaceDocArg1 );
}
<Doc,JavaDoc>{B}*
("\\"|"@")"class"{B}*
{
<Doc,JavaDoc>{B}*
{CMD}"class"{B}*
{
current->section = Entry::CLASSDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*
("\\"|"@")"union"{B}*
{
<Doc,JavaDoc>{B}*
{CMD}"union"{B}*
{
current->section = Entry::UNIONDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*
("\\"|"@")"struct"{B}*
{
<Doc,JavaDoc>{B}*
{CMD}"struct"{B}*
{
current->section = Entry::STRUCTDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*
("\\"|"@")"interface"{B}*
{
<Doc,JavaDoc>{B}*
{CMD}"interface"{B}*
{
current->section = Entry::INTERFACEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*
("\\"|"@")"page"{B}*
{
<Doc,JavaDoc>{B}*
{CMD}"page"{B}*
{
current->section = Entry::PAGEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( PageDocArg1 );
}
<Doc,JavaDoc>{B}*
("\\"|"@")"mainpage"{B}*
{
<Doc,JavaDoc>{B}*
{CMD}"mainpage"{B}*
{
current->section = Entry::MAINPAGEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( PageDocArg2 );
}
<Doc,JavaDoc>{B}*
("\\"|"@")
"file"{B}* {
<Doc,JavaDoc>{B}*
{CMD}
"file"{B}* {
current->section = Entry::FILEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( FileDocArg1 );
}
<Doc,JavaDoc>{B}*
("\\"|"@")"example"{B}*
{
<Doc,JavaDoc>{B}*
{CMD}"example"{B}*
{
current->section = Entry::EXAMPLE_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
...
...
@@ -3391,7 +3429,7 @@ VAR [vV][aA][rR]
current->name = stripQuotes(yytext);
BEGIN( ExampleDoc );
}
<ClassDoc,Doc,JavaDoc>{B}*
("\\"|"@")
"relate"[sd]{B}* {
<ClassDoc,Doc,JavaDoc>{B}*
{CMD}
"relate"[sd]{B}* {
lastDocRelContext = YY_START;
BEGIN( ClassDocRelates );
}
...
...
@@ -3497,18 +3535,18 @@ VAR [vV][aA][rR]
yyLineNr++;
BEGIN( Doc );
}
<PageDoc>
"\\
refitem".*"\n" {
<PageDoc>
{CMD}"
refitem".*"\n" {
current->doc+=yytext;
}
<PageDoc>
("\\"|"@")"section"{B}+
{
<PageDoc>
{CMD}"section"{B}+
{
sectionType=SectionInfo::Section;
BEGIN(SectionLabel);
}
<PageDoc>
("\\"|"@")"subsection"{B}+
{
<PageDoc>
{CMD}"subsection"{B}+
{
sectionType=SectionInfo::Subsection;
BEGIN(SectionLabel);
}
<Doc,PageDoc,JavaDoc,ClassDoc>
("\\"|"@")mgroup
{B}+ {
<Doc,PageDoc,JavaDoc,ClassDoc>
{CMD}"mgroup"
{B}+ {
//printf("--> mgroup found!\n");
lastMemberGroupContext = YY_START;
if (memberGroupId!=-1)
...
...
@@ -3525,7 +3563,7 @@ VAR [vV][aA][rR]
}
BEGIN(GroupHeader);
}
<Doc,PageDoc,JavaDoc,ClassDoc>
("\\"|"@")endmgroup
/[^a-z_A-Z0-9] {
<Doc,PageDoc,JavaDoc,ClassDoc>
{CMD}"endmgroup"
/[^a-z_A-Z0-9] {
//printf("--> endmgroup found!\n");
memberGroupId = -1;
current->mGrpId = -1;
...
...
@@ -3537,26 +3575,26 @@ VAR [vV][aA][rR]
);
BEGIN(lastMemberGroupContext);
}
<Doc,PageDoc,JavaDoc,ClassDoc>
("\\"|"@")anchor
{B}+ {
<Doc,PageDoc,JavaDoc,ClassDoc>
{CMD}"anchor"
{B}+ {
lastAnchorContext = YY_START;
sectionType=SectionInfo::Anchor;
BEGIN(AnchorLabel);
}
<Doc,PageDoc,JavaDoc,ClassDoc>
"\\\\
verbatim"/[^a-z_A-Z0-9] {
<Doc,PageDoc,JavaDoc,ClassDoc>
("\\\\"|"@@")"
verbatim"/[^a-z_A-Z0-9] {
current->doc+="\\\\verbatim";
}
<Doc,PageDoc,JavaDoc,ClassDoc>
("\\"|"@")
"verbatim"/[^a-z_A-Z0-9] {
<Doc,PageDoc,JavaDoc,ClassDoc>
{CMD}
"verbatim"/[^a-z_A-Z0-9] {
lastVerbState=YY_START;
current->doc+="\\verbatim";
BEGIN(SkipVerbatim);
}
<Doc,PageDoc,JavaDoc,ClassDoc>
"\\
addindex"{B}+[^\n]+ {
<Doc,PageDoc,JavaDoc,ClassDoc>
{CMD}"
addindex"{B}+[^\n]+ {
current->doc+=yytext;
}
<Doc,PageDoc,JavaDoc,ClassDoc>
"\\\\
code"/[^a-z_A-Z0-9] {
<Doc,PageDoc,JavaDoc,ClassDoc>
("\\\\"|"@@")"
code"/[^a-z_A-Z0-9] {
current->doc+="\\\\code";
}
<Doc,PageDoc,JavaDoc,ClassDoc>
("\\"|"@")
"code"/[^a-z_A-Z0-9] {
<Doc,PageDoc,JavaDoc,ClassDoc>
{CMD}
"code"/[^a-z_A-Z0-9] {
lastCodeState=YY_START;
current->doc+="\\code";
BEGIN(SkipCode);
...
...
@@ -3566,7 +3604,7 @@ VAR [vV][aA][rR]
current->doc+="<PRE>";
BEGIN(SkipCode);
}
<SkipVerbatim>
("\\"|"@")
"endverbatim"/[^a-z_A-Z0-9] {
<SkipVerbatim>
{CMD}
"endverbatim"/[^a-z_A-Z0-9] {
current->doc+=yytext;
BEGIN(lastVerbState);
}
...
...
@@ -3594,7 +3632,7 @@ VAR [vV][aA][rR]
<SkipVerbatim>. {
current->doc+=*yytext;
}
<SkipCode>
("\\"|"@")
"endcode" {
<SkipCode>
{CMD}
"endcode" {
current->doc+="\\endcode";
BEGIN(lastCodeState);
}
...
...
@@ -3646,20 +3684,20 @@ VAR [vV][aA][rR]
<ExampleDoc,PageDoc,ClassDoc>. { current->doc += yytext; }
<Doc,JavaDoc,LineDoc,ExampleDoc,PageDoc,ClassDoc>^{B}*"//"
<Doc,JavaDoc,LineDoc,ExampleDoc,PageDoc,ClassDoc>"//" { current->doc += yytext; }
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>
"\\\\
f"[$\[\]] {
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>
("\\\\"|"@@")"
f"[$\[\]] {
current->doc += &yytext[1];
}
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>
"\\
f$" {
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>
{CMD}"
f$" {
lastFormulaContext = YY_START;
formulaText="$";
BEGIN(ReadFormulaShort);
}
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>
"\\
f[" {
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>
{CMD}"
f[" {
lastFormulaContext = YY_START;
formulaText="\\[";
BEGIN(ReadFormulaLong);
}
<ReadFormulaShort>
"\\
f$" {
<ReadFormulaShort>
{CMD}"
f$" {
formulaText+="$";
if (lastFormulaContext==ClassDocBrief ||
lastFormulaContext==LineDoc ||
...
...
@@ -3670,7 +3708,7 @@ VAR [vV][aA][rR]
current->doc += addFormula();
BEGIN(lastFormulaContext);
}
<ReadFormulaLong>
"\\
f]" {
<ReadFormulaLong>
{CMD}"
f]" {
formulaText+="\\]";
if (lastFormulaContext==ClassDocBrief ||
lastFormulaContext==LineDoc ||
...
...
@@ -3719,7 +3757,7 @@ VAR [vV][aA][rR]
<PageDocTitle>\n { yyLineNr++; current->args+=" "; }
<PageDocTitle>[^\n\<] { current->args+=yytext; }
<PageDocTitle>"</"{TITLE}">" { BEGIN( PageDoc ); }
<ClassDoc,Doc,JavaDoc>
("\\"|"@")
"ingroup"{B}+ {
<ClassDoc,Doc,JavaDoc>
{CMD}
"ingroup"{B}+ {
lastGroupContext = YY_START;
lineCount();
BEGIN( GroupName );
...
...
@@ -3732,7 +3770,7 @@ VAR [vV][aA][rR]
<GroupName>\n {
yyLineNr++; BEGIN( lastGroupContext );
}
<ClassDoc,Doc>{B}*
("\\brief"|"@
short") {
<ClassDoc,Doc>{B}*
{CMD}("brief"|"
short") {
lastBriefContext=YY_START;
BEGIN( ClassDocBrief );
}
...
...
@@ -3751,27 +3789,14 @@ VAR [vV][aA][rR]
}
<ClassDocBrief>"\n" { yyLineNr++ ; current->brief += " "; }
<ClassDocBrief>"<"{BR}{ATTR}">"
<ClassDocBrief>{BS}/
("\\"|"@")
"ingroup" {
<ClassDocBrief>{BS}/
{CMD}
"ingroup" {
current->brief=current->brief.stripWhiteSpace();
BEGIN( lastBriefContext );
}
<ClassDocBrief>{BS}/
("\\"|"@")("image"|"author"|"internal"|"version"|"date
"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see") {
<ClassDocBrief>{BS}/
{CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated
"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see") {
BEGIN( lastBriefContext );
}
/*
<ClassDocBrief>{BS}/("\\"|"@")"author" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"internal" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"version" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"date" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"param" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"exception" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"return" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\sa"|"@see") { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"bug" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"warning" { BEGIN( lastBriefContext ); }
<ClassDocBrief>{BS}/("\\"|"@")"par"{BN}+ { BEGIN( lastBriefContext ); }
*/
<ClassDocBrief>{BS}/("\\brief"|"@short"){BN}+ {
<ClassDocBrief>{BS}/{CMD}("brief"|"short"){BN}+ {
lastBriefContext=YY_START;
BEGIN( ClassDocBrief );
}
...
...
@@ -3860,7 +3885,7 @@ VAR [vV][aA][rR]
newDocState();
}
<Doc>[a-z_A-Z0-9]+ { current->doc += yytext; }
<Doc,AfterDoc,LineDoc,ClassDoc>
"\\\\"
{ current->doc += yytext; }
<Doc,AfterDoc,LineDoc,ClassDoc>
("\\\\"|"@@")
{ current->doc += yytext; }
<Doc>. { current->doc += *yytext; }
<DefLineDoc,LineDoc>. { current->brief += *yytext; }
<Doc>\n { yyLineNr++; current->doc += *yytext; }
...
...
@@ -3897,13 +3922,13 @@ VAR [vV][aA][rR]
BEGIN(lastAfterDocContext);
}
<AfterDocBrief>"."/{BN} { BEGIN(AfterDoc); }
<LineDoc,AfterDocBrief,AfterDocLine>
("\\"|"@")
"internal" {
<LineDoc,AfterDocBrief,AfterDocLine>
{CMD}
"internal" {
current->brief+="\\internal";
}
<Doc,AfterDoc>
("\\"|"@")"internal"
{
<Doc,AfterDoc>
{CMD}"internal"
{
current->doc+="\\internal";
}
<AfterDoc>
("\\"|"@")"brief"
{ BEGIN(AfterDocBrief); }
<AfterDoc>
{CMD}"brief"
{ BEGIN(AfterDocBrief); }
<AfterDoc>"/*"|"//" { current->doc+=yytext; }
<AfterDoc>^{B}*"*"+/[^/]
<AfterDoc>\n { current->doc+=yytext; yyLineNr++; }
...
...
@@ -3937,8 +3962,8 @@ VAR [vV][aA][rR]
BEGIN( lastCContext ) ;
}
<SkipComment>[^\*\n]+
<*>.
<*>\n { yyLineNr++ ; }
<*>.
<SkipComment>"//"|"/*"
<*>"/*" { lastCContext = YY_START ;
BEGIN( SkipComment ) ;
...
...
@@ -4062,7 +4087,6 @@ void parseMain(Entry *rt)
global_root = rt;
current = new Entry;
inputString = rt->program;
//printf("parseDoc=`%s'\n",inputString);
inputPosition = 0;
ifCount=0;
scanYYrestart( scanYYin );
...
...
@@ -4083,6 +4107,7 @@ void parseDocument(OutputList &ol,const QCString &docString)
currentIncludeFile.resize(0);
includeFileOffset=0;
includeFileLength=0;
currentListIndentLevel=0;
if (!docString) return;
linkRef = "";
linkText = "";
...
...
@@ -4094,6 +4119,26 @@ void parseDocument(OutputList &ol,const QCString &docString)
scanYYlex();
if (insideArgumentList) { insideArgumentList=FALSE; outDoc->endItemList(); }
if (inBlock()) endBlock();
if (currentListIndentLevel!=0)
{
if (!refName.isEmpty())
{
warn("Warning: Documentation block of %s ended in the middle "
"of a list (indent level %d)!\n",refName.data(),
currentListIndentLevel);
}
else if (!exampleName.isEmpty())
{
warn("Warning: Documentation block of %s ended in the middle "
"of a list (indent level %d)!\n",exampleName.data(),
currentListIndentLevel);
}
else
{
warn("Warning: Documentation block ended in the middle "
"of a list (indent level %d)!\n",currentListIndentLevel);
}
}
ol+=*outDoc;
delete outDoc;
return;
...
...
src/section.h
View file @
19119105
...
...
@@ -29,6 +29,7 @@ struct SectionInfo
enum
SectionType
{
Section
,
Subsection
,
Anchor
};
SectionInfo
(
const
char
*
l
,
const
char
*
t
,
SectionType
st
)
{
label
=
l
;
title
=
t
;
type
=
st
;
definition
=
0
;
}
~
SectionInfo
()
{}
QCString
label
;
QCString
title
;
SectionType
type
;
...
...
src/translator.h
View file @
19119105
...
...
@@ -733,6 +733,15 @@ class Translator
{
return
"Definition in file @0."
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.0.0
//////////////////////////////////////////////////////////////////////////
virtual
QCString
trDeprecated
()
{
return
"Deprecated"
;
}
};
#endif
src/translator_nl.h
View file @
19119105
...
...
@@ -450,6 +450,15 @@ class TranslatorDutch : public Translator
{
return
"De definitie bevindt zich in de file @0."
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.0.0
//////////////////////////////////////////////////////////////////////////
virtual
QCString
trDeprecated
()
{
return
"Verouderd"
;
}
};
#endif
src/util.cpp
View file @
19119105
...
...
@@ -32,6 +32,7 @@
#include "config.h"
#include "htmlhelp.h"
#include "example.h"
#include "version.h"
// an inheritance tree of depth of 100000 should be enough for everyone :-)
const
int
maxInheritanceDepth
=
100000
;
...
...
@@ -1878,3 +1879,16 @@ void setFileNameForSections(QList<QCString> *anchorList,const char *fileName)
}
}
//----------------------------------------------------------------------
QCString
substituteKeywords
(
QCString
&
s
,
const
char
*
title
)
{
if
(
title
)
s
=
substitute
(
s
,
"$title"
,
title
);
s
=
substitute
(
s
,
"$datetime"
,
dateToString
(
TRUE
));
s
=
substitute
(
s
,
"$date"
,
dateToString
(
FALSE
));
s
=
substitute
(
s
,
"$doxygenversion"
,
versionString
);
s
=
substitute
(
s
,
"$projectname"
,
Config
::
projectName
);
s
=
substitute
(
s
,
"$projectnumber"
,
Config
::
projectNumber
);
return
s
;
}
src/util.h
View file @
19119105
...
...
@@ -77,5 +77,6 @@ QCString stripFromPath(const QCString &path);
bool
rightScopeMatch
(
const
QCString
&
scope
,
const
QCString
&
name
);
bool
leftScopeMatch
(
const
QCString
&
scope
,
const
QCString
&
name
);
void
writePageRef
(
OutputList
&
ol
,
const
char
*
cn
,
const
char
*
mn
);
QCString
substituteKeywords
(
QCString
&
s
,
const
char
*
title
);
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment