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