Commit e3782826 authored by mueller's avatar mueller

mods for doxygen-0.49-991205

parent 74cc4d70
DOXYGEN Version 0.49-991117
DOXYGEN Version 0.49-991205
CONTENTS
--------
......@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
gunzip doxygen-0.49-991117.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-991117.src.tar # unpack it
gunzip doxygen-0.49-991205.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-991205.src.tar # unpack it
2. Run the configure script:
......@@ -234,4 +234,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (17 November 1999)
Dimitri van Heesch (05 December 1999)
DOXYGEN Version 0.49-991117
DOXYGEN Version 0.49-991205
Please read INSTALL for compilation instructions.
......@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (17 November 1999)
Dimitri van Heesch (05 December 1999)
0.49-991117
0.49-991205
......@@ -93,6 +93,7 @@ documentation:
<li> \refitem cmdskipline \skipline
<li> \refitem cmdstruct \struct
<li> \refitem cmdsubsection \subsection
<li> \refitem cmdthrow \throw
<li> \refitem cmdtypedef \typedef
<li> \refitem cmdunion \union
<li> \refitem cmduntil \until
......@@ -229,6 +230,12 @@ Doxygen. Unrecognized commands are treated as normal text.
documentation contained in the comment block. All examples are placed
in a list. The source code is scanned for documented members and classes.
If any are found, the names are cross-referenced with the documentation.
Source files or directories can be specified using the
\c EXAMPLE_PATH tag of Doxygen's configuration file.
If \<file-name\> itself is not unique for the set of example files specified
by the \c EXAMPLE_PATH tag, you can include part of the absolute path
to disambiguate it.
If more that one source file is needed for the example,
the \\include command can be used.
......@@ -583,8 +590,20 @@ Doxygen. Unrecognized commands are treated as normal text.
sectioning command is encountered. See section \ref cmdfn "\\fn" for an
example.
\par Note:
the tag \\exceptions is a synonym for this tag.
\sa Section \ref cmdjdexception "@exception".
<hr>
\subsection cmdthrow \throw <exception-object> { exception description }
\addindex \throw
Equivalent to \\exception (see section \ref cmdexception "\\exception").
\par Note:
the tag \\throws is a synonym for this tag.
<hr>
\subsection cmdreturn \return { description of the return value }
......@@ -799,6 +818,10 @@ Doxygen. Unrecognized commands are treated as normal text.
Source files or directories can be specified using the
\c EXAMPLE_PATH tag of Doxygen's configuration file.
If \<file-name\> itself is not unique for the set of example files specified
by the \c EXAMPLE_PATH tag, you can include part of the absolute path
to disambiguate it.
Using the \\include command is equivalent to inserting the file into
the documentation block and surrounding it
with \\code and \\endcode commands.
......@@ -1199,6 +1222,10 @@ The following command JavaDoc command are support.
\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").
......
......@@ -91,6 +91,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_include_path INCLUDE_PATH
<li> \refitem cfg_inherit_docs INHERIT_DOCS
<li> \refitem cfg_inline_info INLINE_INFO
<li> \refitem cfg_inline_sources INLINE_SOURCES
<li> \refitem cfg_input INPUT
<li> \refitem cfg_input_filter INPUT_FILTER
<li> \refitem cfg_internal_docs INTERNAL_DOCS
......@@ -273,9 +274,14 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_source_browser
<dt>\c SOURCE_BROWSER <dd>
\addindex SOURCE_BROWSER
If the \c SOURCE_BROWSER tag is set to \c YES than the body of a member or
function will be appended as a block of code to the documentation of.
that member or function.
If the \c SOURCE_BROWSER tag is set to \c YES then a list of source files will
be generated. Documented entities will be cross-referenced with these sources.
\anchor cfg_inline_sources
<dt>\c INLINE_SOURCES <dd>
\addindex INLINE_SOURCES
Setting the \c INLINE_SOURCES tag to \c YES will include the body
of functions, classes and enums directly into the documentation.
\anchor cfg_case_sense_names
<dt>\c CASE_SENSE_NAMES <dd>
......@@ -698,9 +704,23 @@ EXTRA_PACKAGES = times
<dt>\c TAGFILES <dd>
\addindex TAGFILES
The \c TAGFILES tag can be used to specify one or more tagfiles.
See section \ref doxytag_usage for more information about the usage of
tag files.
Optionally an initial location of the external documentation
can be added for each tagfile.
The format of a tag file without this location is as follows:
<pre>
TAGFILES = file1 file2 ... </pre>
Adding location for the tag files is done as follows:
<pre>
TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
where \c loc1 and \c loc2 can be relative or absolute paths or URLs,
If a location is present for each tag, the installdox tool (see
section \ref installdox_usage for more information) does not
have to be run to correct the links.
\par Note:
Each tag file most have a unique name and if a tag file is not located
in the directory in which doxygen is run, you must also specify the
......
......@@ -85,7 +85,7 @@ doxytag -t example.tag example/html
documentation. Because the tag file does not specify where the
documentation is located, you will have to specify that by running the
installdox script that doxygen generates
(See \ref installdox_usage for more information).
(See section \ref installdox_usage for more information).
Note that this is actually a feature because if you (or someone else)
moves the external documentation to a different
......
......@@ -75,6 +75,33 @@ To make doxygen put <br><br>
in the documentation of the class MyClassName regardless of the name of the actual
header file in which the definition of MyClassName is contained.
<li><b>How can I use tag files in combination with compressed HTML</b>
If you want to refer from one compressed HTML file
\c a.chm to another compressed HTML file
called \c b.chm, the
link in \c a.chm must have the following format:
\verbatim
<a href="b.chm::/file.html">
\endverbatim
Unfortunately this only works if both compressed HTML files are in the same
directory.
As a result you must rename the generated \c index.chm files for all projects
into something unique and put all \c .chm files in one directory.
Suppose you have a project \e a referring to a project \e b using tag file
\c b.tag, then you could rename the \c index.chm for project \e a into
\c a.chm and the \c index.chm for project \e b into \c b.chm. In the
configuration file for project \e a you write:
\verbatim
TAGFILES = b.tag=b.chm::
\endverbatim
or you can use \c installdox to set the links as follows:
\verbatim
installdox -lb.tag@b.chm::
\endverbatim
</ol>
*/
......@@ -33,7 +33,10 @@ Permission to use, copy, modify, and distribute this software and its
documentation under the terms of the GNU General Public License is hereby
granted. No representations are made about the suitability of this software
for any purpose. It is provided "as is" without express or implied warranty.
See the GNU General Public License for more details.
See the
<a href="http://www.gnu.org/copyleft/gpl.html">
GNU General Public License</a>
for more details.
<p>
All output generated by Doxygen is not covered by this license.
......@@ -41,11 +44,13 @@ All output generated by Doxygen is not covered by this license.
Doxygen is a documentation system for C and C++. It can generate an on-line
class browser (in HTML) and/or an off-line reference manual
(in \f$\mbox{\LaTeX}\f$) from a set
of documented source files. There is also some support for generating
man pages. The documentation is extracted directly from the
of documented source files. There is also support for generating
man pages and for converting the generated output into
Postscript, hyperlinked PDF or compressed HTML.
The documentation is extracted directly from the
sources. Doxygen is developed on a <a href="http://www.linux.org">Linux</a>
platform, but it runs on most other UNIX flavors as well.
An executable for Windows 95/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
source files. This can be very useful to quickly find your way in large
......@@ -106,6 +111,17 @@ list of projects that use doxygen (see {\tt http://www.stack.nl/$\sim$dimitri/do
\endlatexonly
If you know other projects, let me know and I'll add them.
<h2>Future work</h2>
Although doxygen is used successfully by a lot of people already,
there is always room for improvement. Therefore, I have compiled a
\htmlonly
<a href="http://www.stack.nl/~dimitri/doxygen/todo.html">todo/wish list</a>
\endhtmlonly
\latexonly
todo/wish list (see {\tt http://www.stack.nl/$\sim$dimitri/doxygen/todo.html})
\endlatexonly
of possible and/or requested enhancements.
<h2>Acknowledgements</h2>
\addindex acknowledgements
Thanks go to:
......
......@@ -29,7 +29,6 @@ following to build the executable:
\addindex Qt
<LI>The <a href="ftp://prep.ai.mit.edu/pub/gnu">GNU</a> tools
flex, bison and make
\latexonly(see {\tt ftp://prep.ai.mit.edu/pub/gnu})\endlatexonly.
\addindex flex
\addindex bison
\addindex make
......@@ -38,6 +37,8 @@ following to build the executable:
\latexonly(see {\tt http://www.perl.com})\endlatexonly.
\addindex perl
</UL>
For platform specific installation instructions see the \c INSTALL file
that is included in the package.
\addindex HTTP
\addindex CGI
......@@ -45,17 +46,25 @@ To use the search engine \c doxysearch, you will also need
a HTTP daemon running on the target system and permission to execute a
CGI binary.
Once you have Qt installed correctly, you can simply enter:
If you are running Unix, and have Qt installed correctly, you can simply enter
\verbatim
make
configure
\endverbatim
to get a list of all supported platforms/compilers.
Typing <tt>make</tt> followed by your platform will compile doxygen.
For Linux you can enter the following:
to set up the makefiles for your platform. For Windows this step can be
skipped.
To override the auto detected platform you can specify
\verbatim
make linux-g++
configure --platform platform-type
\endverbatim
See the \c PLATFORMS file for a list of possible platforms.
For more configuration options use <code>configure --help</code>
To compile and link the sources enter
\verbatim
make
\endverbatim
in the root of the distribution.
Doxygen should compile without errors or warnings.
If it does not, please send the compilation errors or warnings along
with a description of your platform to
......@@ -67,6 +76,11 @@ You may want to copy these files to a location in your path
(\c /usr/local/bin for instance) or add the \c bin
directory of the distribution to your search path.
On Unix you can also type:
\verbatim
make install
\endverbatim
The following binaries should now be available:
<UL>
<LI>\c doxygen: for generating the class browser.
......@@ -85,8 +99,8 @@ Doxygen was developed and tested under Linux using the following tools:
<li>GNU make version 3.76.1
<li>Perl version 5.005_02
<li>VIM version 5.4
<li>Netscape 4.04 & 4.5
<li>Troll Tech's tmake version 1.2 (included in the distribution)
<li>Netscape 4.61
<li>Troll Tech's tmake version 1.3 (included in the distribution)
<li>teTeX version 0.9
</ul>
......
......@@ -22,11 +22,11 @@
The following output formats are \e directly supported by doxygen:
<dl>
<dt><b>HTML</b>
<dd>Generated if GENERATE_HTML is set to YES in the configuration file.
<dd>Generated if \c GENERATE_HTML is set to \c YES in the configuration file.
<dt>\f$\mbox{\LaTeX}\f$
<dd>Generated if GENERATE_LATEX is set to YES in the configuration file.
<dd>Generated if \c GENERATE_LATEX is set to \c YES in the configuration file.
<dt><b>Man pages</b>
<dd>Generated if GENERATE_MAN is set to YES in the configuration file.
<dd>Generated if \c GENERATE_MAN is set to \c YES in the configuration file.
</dl>
The following output formats are \e indirectly supported by doxygen:
......@@ -42,7 +42,7 @@ The following output formats are \e indirectly supported by doxygen:
<dd>Generated from the \f$\mbox{\LaTeX}\f$ output by
running <code>make pdf</code> in the output directory.
In order to get hyperlinks in the pdf file,
\c PDF_HYPERLINKS should be set to \c YES.
\c PDF_HYPERLINKS should be set to \c YES in the configuration file.
</dl>
*/
......@@ -46,8 +46,9 @@ where \<config-file\> is the name of the configuration file. If you omit
the file name, a file named \c Doxyfile will be created. If a file with the
name \<config-file\> already exists, doxygen will rename it to
\<config-file\>.bak before generating the configuration template.
If you use <code>-</code> as the file name then doxygen will try to read
the configuration file from standard input (<code>stdin</code>).
If you use <code>-</code> (i.e. the minus sign) as the file name then
doxygen will try to read the configuration file from standard
input (<code>stdin</code>).
The configuration file has a format that is similar to that of a (simple)
Makefile. It contains of a number of assignments (tags) of the form:
......@@ -82,7 +83,9 @@ to \c YES.
To analyse an existing piece of software it is useful to cross-reference
a (documented) entity with its definition in the source files. Doxygen will
generate such cross-references if you set the SOURCE_BROWSER tag to YES.
generate such cross-references if you set the \c SOURCE_BROWSER tag to \c YES.
It can also include the sources directly into the documentation by setting
\c INLINE_SOURCES to \c YES (this can be handly for code reviews for instance).
\subsection step2 Step 2: Running doxygen
......@@ -120,10 +123,11 @@ By typing \c make in the \c latex directory the dvi file \c refman.dvi
will be generated (provided that you have a make tool called
<code>make</code> ofcourse). This file can then be viewed using \c xdvi or
converted into a postscript file \c refman.ps by typing <code>make ps</code>
(this requires \c dvips ). Conversion to PDF is also possible; just type
<code>make pdf</code>. The Postscript file can be send to a postscript
(this requires \c dvips ). The Postscript file can be send to a postscript
printer. If you do not have a postscript printer, you can try to use
ghostscript to convert postscript into something your printer understands.
Conversion to PDF is also possible; just type
<code>make pdf</code>.
To get the best results for PDF output you should set the
\c PDF_HYPERLINKS tag to \c YES.
......@@ -436,7 +440,7 @@ Then by default doxygen will feed the following to its parser:
#define VERSION
#define CONST_STRING
static CONST_STRING version = "1.xx";
static CONST_STRING version = "2.xx";
\endverbatim
You can disable all preprocessing by setting \c ENABLE_PREPROCESSING to \c
......@@ -541,8 +545,8 @@ PREDEFINED = QListT:=QList
\endverbatim
As you can see doxygen's preprocessor is quite powerful, but if you want
even more flexibility you can always write an input filter and specify it on
the \c INPUT_FILTER flag.
even more flexibility you can always write an input filter and specify it
after the \c INPUT_FILTER tag.
\subsection moreinfo More information
......
......@@ -3,9 +3,9 @@
<title>Annotated Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>Grouping Compound List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<ul>
<li><a class="el" href="class_c1.html">C1</a> (Class C1 in group 1)
<li><a class="el" href="class_c2.html">C2</a> (Class C2 in group 1)
......@@ -14,10 +14,10 @@
<li><a class="el" href="class_c5.html">C5</a> (Class C5 in <a href="group_group3.html"> the third group</a>)
<li><a class="el" href="class_c6.html">C6</a> (Class C6 in all groups)
</ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,9 +3,9 @@
<title>C1 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>C1 Class Reference</h1>class C1 in group 1.
<a href="#_details">More...</a>
<p>
......@@ -16,10 +16,10 @@ class C1 in group 1.
<p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,9 +3,9 @@
<title>C2 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>C2 Class Reference</h1>class C2 in group 1.
<a href="#_details">More...</a>
<p>
......@@ -16,10 +16,10 @@ class C2 in group 1.
<p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,9 +3,9 @@
<title>C3 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>C3 Class Reference</h1>class C3 in group 2.
<a href="#_details">More...</a>
<p>
......@@ -16,10 +16,10 @@ class C3 in group 2.
<p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,9 +3,9 @@
<title>C4 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>C4 Class Reference</h1>class C4 in group 2.
<a href="#_details">More...</a>
<p>
......@@ -16,10 +16,10 @@ class C4 in group 2.
<p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,9 +3,9 @@
<title>C5 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>C5 Class Reference</h1>class C5 in <a href="group_group3.html"> the third group</a>.
<a href="#_details">More...</a>
<p>
......@@ -16,10 +16,10 @@ class C5 in <a href="group_group3.html"> the third group</a>.
<p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,9 +3,9 @@
<title>C6 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>C6 Class Reference</h1>class C6 in all groups.
<a href="#_details">More...</a>
<p>
......@@ -18,10 +18,10 @@ class C6 in all groups.
<b>See also: </b><dd>
<a href="group_group1.html"> The first group</a>, <a href="group_group2.html">The Second Group</a>, <a href="group_group3.html">The Third Group</a> </dl><hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
H1 { text-align: center }
A.qindex {}
A.qindexRef {}
A.el { text-decoration: none; font-weight: bold }
A.elRef { font-weight: bold }
A.code { text-decoration: none; font-weight: normal; color: #4444ee }
A.codeRef { font-weight: normal; color: #4444ee }
A.gl:link { color: #ffffff }
A.gl:visited { color: #ffffff }
A.gl { text-decoration: none; font-weight: bold; background-color: #ff8080 }
DL.el { margin-left: -1cm }
DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
DIV.in { margin-left: 16 }
DIV.ah { background-color: black; margin-bottom: 3; margin-top: 3 }
A.gl:link { color: #ffffff }
A.gl:visited { color: #ffffff }
A.gl { text-decoration: none; font-weight: bold; background-color: #ff8080 }
TD.md { background-color: #f2f2ff }
......@@ -3,9 +3,9 @@
<title>File Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>Grouping File List</h1>
<p>
Here is a list of all documented files with brief descriptions:
......@@ -13,10 +13,10 @@ Here is a list of all documented files with brief descriptions:
<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a> (This file in group 3)
</ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,9 +3,9 @@
<title>group.cpp File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>group.cpp File Reference</h1>this file in group 3.
<a href="#_details">More...</a>
<p>
......@@ -19,10 +19,10 @@
<tr><td><img src="null.gif"></td><td><img src="null.gif"></td><td nowrap align=right valign=top>class &nbsp;</td><td valign=top><a class="el" href="class_c6.html">C6</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
this file in group 3.<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
this file in group 3.<hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,9 +3,9 @@
<title>The First Group</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>The First Group</h1><tr><td colspan=4><br><h2>Compounds</h2></td></tr>
<ul>
<li><a class="el" href="class_c1.html">C1</a>
......@@ -13,10 +13,10 @@
<li><a class="el" href="class_c6.html">C6</a>
</ul>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This is the first group <hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
This is the first group <hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,9 +3,9 @@
<title>The Second Group</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>The Second Group</h1><tr><td colspan=4><br><h2>Compounds</h2></td></tr>
<ul>
<li><a class="el" href="class_c3.html">C3</a>
......@@ -13,10 +13,10 @@
<li><a class="el" href="class_c6.html">C6</a>
</ul>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This is the second group <hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
This is the second group <hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,9 +3,9 @@
<title>The Third Group</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>The Third Group</h1><tr><td colspan=4><br><h2>Files</h2></td></tr>
<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a>
......@@ -16,10 +16,10 @@
<li><a class="el" href="class_c6.html">C6</a>
</ul>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This is the third group <hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
This is the third group <hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,15 +3,15 @@
<title>Main Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>Grouping Documentation</h1>
<p>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -3,9 +3,9 @@
<title>Module Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<!-- Generated by Doxygen 0.49-991106 on Sat Dec 4 22:01:06 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<a class="qindex"href="index.html">Main Page</a> &nbsp; <a class="qindex"href="modules.html">Modules</a> &nbsp; <a class="qindex"href="annotated.html">Compound List</a> &nbsp; <a class="qindex"href="files.html">File List</a> &nbsp; </center>
<hr><h1>Grouping Modules</h1>Here is a list of all modules:
<dl compact>
<dt><a href="group_group1.html">The First Group</a><dd>
......@@ -16,10 +16,10 @@
<p>
</dl>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<hr><address><small>Generated at Sat Dec 4 22:01:06 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
width=118 height=53></a> 0.49-991106 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -262,7 +262,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (incFile)
{
QCString nm=incName.copy();
if (incName.isNull()) nm=incFile->name();
if (incName.isEmpty()) nm=incFile->name();
ol.startTypewriter();
ol.docify("#include <");
ol.disable(OutputGenerator::Html);
......@@ -418,7 +418,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
bool exampleFlag=hasExamples();
if (!briefDescription().isEmpty() ||
!documentation().isEmpty() ||
(bodyLine!=-1 && bodyDef) ||
(startBodyLine!=-1 && bodyDef) ||
exampleFlag)
{
ol.writeRuler();
......@@ -494,7 +494,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
//ol.endDescItem();
ol.endDescList();
}
writeSourceRef(ol);
writeSourceRef(ol,name());
}
pubMembers.countDocMembers();
......@@ -837,7 +837,7 @@ void ClassDef::writeIncludeFile(OutputList &ol)
startFile(ol,fileName+"-include",name()+" Include File");
startTitle(ol,0);
QCString n=incName.copy();
if (incName.isNull()) n=incFile->name();
if (incName.isEmpty()) n=incFile->name();
parseText(ol,n);
endTitle(ol,0,0);
parseText(ol,theTranslator->trVerbatimText(incFile->name()));
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -24,6 +24,7 @@ class OutputList;
class FileDef;
extern void parseCode(OutputList &,const char *,const QCString &,
bool ,const char *,FileDef *fd=0);
bool ,const char *,FileDef *fd=0,
int startLine=-1,int endLine=-1,bool inlineFragment=FALSE);
extern void initParseCodeContext();
#endif
This diff is collapsed.
This diff is collapsed.
......@@ -102,6 +102,7 @@ struct Config
static bool alwaysDetailsFlag; // show details description even if there is only a brief description?
static int tabSize; // number of spaces in a tab
static int colsInAlphaIndex; // number of columns in the alphabetical index
static bool inlineSourceFlag; // inline the definition bodies in the docs?
};
#endif
......@@ -118,6 +118,7 @@ bool Config::htmlHelpFlag = FALSE;
bool Config::alphaIndexFlag = FALSE;
bool Config::pdfHyperFlag = FALSE;
bool Config::alwaysDetailsFlag = FALSE;
bool Config::inlineSourceFlag = FALSE;
bool Config::autoBriefFlag = TRUE;
bool Config::warningFlag = TRUE;
bool Config::generateHtml = TRUE;
......@@ -256,6 +257,7 @@ static int yyread(char *buf,int max_size)
<Start>"PDF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::pdfHyperFlag; }
<Start>"INHERIT_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::inheritDocsFlag; }
<Start>"INLINE_INFO"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineInfoFlag; }
<Start>"INLINE_SOURCES"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineSourceFlag; }
<Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); }
<GetString,GetBool>\n { yyLineNr++; BEGIN(Start); }
<GetStrList>\n {
......@@ -448,6 +450,7 @@ void Config::init()
Config::alphaIndexFlag = FALSE;
Config::pdfHyperFlag = FALSE;
Config::alwaysDetailsFlag = FALSE;
Config::inlineSourceFlag = FALSE;
Config::warningFlag = TRUE;
Config::generateHtml = TRUE;
Config::generateLatex = TRUE;
......@@ -651,13 +654,20 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
t << "# If the SOURCE_BROWSER tag is set to YES than the body of a member or\n";
t << "# function will be appended as a block of code to the documentation of.\n";
t << "# that member or function.\n";
t << "# If the SOURCE_BROWSER tag is set to YES then a list of source files will\n";
t << "# be generated. Documented entities will be cross-referenced with these sources.\n";
t << "\n";
}
t << "SOURCE_BROWSER = NO\n";
if (!sl)
{
t << "\n";
t << "# Setting the INLINE_SOURCES tag to YES will include the body\n";
t << "# of functions and classes directly in the documentation.\n";
t << "\n";
}
t << "INLINE_SOURCES = NO\n";
if (!sl)
{
t << "\n";
t << "# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen\n";
......
......@@ -503,7 +503,7 @@ static void addType()
//printf("addType() type=`%s' scope=`%s' name=`%s'\n",
// type.data(),scope.data(),name.data());
if (name.isEmpty() && scope.isEmpty()) return;
if (!type.isNull()) type+=' ';
if (!type.isEmpty()) type+=' ';
if (!scope.isEmpty()) type+=scope+"::";
type+=name;
scope.resize(0);
......@@ -515,7 +515,7 @@ static void addTypeName()
//printf("addTypeName() type=`%s' scope=`%s' name=`%s'\n",
// type.data(),scope.data(),name.data());
if (name.isEmpty()) return;
if (!type.isNull()) type+=' ';
if (!type.isEmpty()) type+=' ';
type+=name;
name.resize(0);
}
......
......@@ -55,7 +55,7 @@ static void addType()
//printf("addType() type=`%s' scope=`%s' name=`%s'\n",
// type.data(),scope.data(),name.data());
if (name.isEmpty() && scope.isEmpty()) return;
if (!type.isNull()) type+=' ';
if (!type.isEmpty()) type+=' ';
if (!scope.isEmpty()) type+=scope+"::";
type+=name;
scope.resize(0);
......@@ -67,7 +67,7 @@ static void addTypeName()
//printf("addTypeName() type=`%s' scope=`%s' name=`%s'\n",
// type.data(),scope.data(),name.data());
if (name.isEmpty()) return;
if (!type.isNull()) type+=' ';
if (!type.isEmpty()) type+=' ';
type+=name;
name.resize(0);
}
......
......@@ -26,7 +26,7 @@
Definition::Definition(const char *name,const char *b,const char *d)
{
n=name; brief=b; doc=d; sectionList=0, bodyLine=-1, bodyDef=0;
n=name; brief=b; doc=d; sectionList=0, startBodyLine=endBodyLine=-1, bodyDef=0;
}
Definition::~Definition()
......@@ -93,11 +93,76 @@ void Definition::setBriefDescription(const char *b)
}
}
/*! Reads a fragment of code from file \a fileName starting at
* line \a startLine and ending at line \a endLine. The fragment is
* stored in \a result. If FALSE is returned the code fragment could not be
* found.
*
* The file is scanned for a opening bracket ('{') from \a startLine onward.
* The line actually containing the bracket is returned via startLine.
* The file is scanned for a closing bracket ('}') from \a endLine backward.
* The line actually containing the bracket is returned via endLine.
*/
static bool readCodeFragment(const char *fileName,
int &startLine,int &endLine,QCString &result)
{
//printf("readCodeFragment(%s,%d,%d)\n",fileName,startLine,endLine);
if (fileName==0 || fileName[0]==0) return FALSE; // not a valid file name
QFile f(fileName);
if (f.open(IO_ReadOnly))
{
int c=0;
int lineNr=1;
// skip until the startLine has reached
while (lineNr<startLine && !f.atEnd())
{
while ((c=f.getch())!='\n' && c!=-1) /* skip */;
lineNr++;
}
if (!f.atEnd())
{
// skip until the opening bracket is found
while (lineNr<=endLine && !f.atEnd() && c!='{')
{
while ((c=f.getch())!='{' && c!=-1) if (c=='\n') lineNr++;
}
if (c=='{')
{
// copy until end of line
result+=c;
startLine=lineNr;
const int maxLineLength=4096;
char lineStr[maxLineLength];
char *p=lineStr;
while ((c=f.getch())!='\n' && c!=-1) *p++=c;
//printf("First line str=`%s' atEnd=%d lineNr=%d endLine=%d\n",lineStr.data(),f.atEnd(),lineNr,endLine);
*p++='\n';
*p++='\0';
while (lineNr<endLine && !f.atEnd())
{
//printf("adding line=`%s' lineNr=%d\n",lineStr.data(),lineNr);
result+=lineStr;
f.readLine(lineStr,maxLineLength);
lineNr++;
}
p=lineStr+strlen(lineStr);
while (--p>=lineStr && *p!='}') /* skip */;
*(++p)='\n';
*(++p)='\0';
result+=lineStr;
endLine=lineNr;
return TRUE;
}
}
}
return FALSE;
}
/*! Write a reference to the source code defining this definition */
void Definition::writeSourceRef(OutputList &ol)
void Definition::writeSourceRef(OutputList &ol,const char *scopeName)
{
//printf("Definition::writeSourceRef %d %p\n",bodyLine,bodyDef);
if (Config::sourceBrowseFlag && bodyLine!=-1 && bodyDef)
if (Config::sourceBrowseFlag && startBodyLine!=-1 && bodyDef)
{
ol.newParagraph();
......@@ -107,8 +172,8 @@ void Definition::writeSourceRef(OutputList &ol)
if (lineMarkerPos!=-1 && fileMarkerPos!=-1) // should always pass this.
{
QString lineStr,anchorStr;
lineStr.sprintf("%d",bodyLine);
anchorStr.sprintf("l%05d",bodyLine);
lineStr.sprintf("%d",startBodyLine);
anchorStr.sprintf("l%05d",startBodyLine);
if (lineMarkerPos<fileMarkerPos) // line marker before file marker
{
// write text left from linePos marker
......@@ -179,14 +244,32 @@ void Definition::writeSourceRef(OutputList &ol)
err("Error: translation error: invalid markers in trDefinedInSourceFile()\n");
}
}
if (Config::inlineSourceFlag && startBodyLine!=-1 &&
endBodyLine>=startBodyLine && bodyDef)
{
//printf("Source Fragment %s: %d-%d\n",name().data(),
// startBodyLine,endBodyLine);
QCString codeFragment;
int actualStart=startBodyLine,actualEnd=endBodyLine;
if (readCodeFragment(bodyDef->absFilePath(),
actualStart,actualEnd,codeFragment)
)
{
//printf("Read:\n`%s'\n\n",codeFragment.data());
ol.startCodeFragment();
parseCode(ol,scopeName,codeFragment,FALSE,0,
bodyDef,actualStart,actualEnd,TRUE);
ol.endCodeFragment();
}
}
}
bool Definition::hasDocumentation()
{
return !doc.isNull() || // has detailed docs
!brief.isNull() || // has brief description
return !doc.isEmpty() || // has detailed docs
!brief.isEmpty() || // has brief description
(Config::sourceBrowseFlag &&
bodyLine!=-1 &&
startBodyLine!=-1 &&
bodyDef
) || // has a source reference
Config::extractAllFlag; // extract everything
......
......@@ -77,15 +77,22 @@ class Definition
*/
void addSectionsToDefinition(QList<QCString> *anchorList);
void setBodyLine(int bl) { bodyLine=bl; }
void setBodySegment(int bls,int ble)
{
startBodyLine=bls;
endBodyLine=ble;
}
void setBodyDef(FileDef *fd) { bodyDef=fd; }
int getBodyLine() const { return bodyLine; }
int getStartBodyLine() const { return startBodyLine; }
int getEndBodyLine() const { return endBodyLine; }
FileDef *getBodyDef() { return bodyDef; }
void writeSourceRef(OutputList &ol);
void writeSourceRef(OutputList &ol,const char *scopeName);
protected:
int bodyLine; // line number of the definition
int startBodyLine; // line number of the start of the definition
int endBodyLine; // line number of the end of the definition
FileDef *bodyDef; // file definition containing the function body
private:
QCString n; // name of the definition
QCString brief; // brief description
......
This diff is collapsed.
......@@ -116,6 +116,7 @@ extern FormulaList formulaList;
extern FormulaDict formulaDict;
extern FormulaDict formulaNameDict;
extern PageInfo *mainPage;
extern StringDict tagDestinationDict;
extern int annotatedClasses;
extern int hierarchyClasses;
......
......@@ -2543,7 +2543,7 @@ void parse(QCString &s)
void parseFile(QFileInfo &fi)
{
fprintf(stderr,"Parsing file %s...\n",fi.fileName().data());
QFile f(fi.absFilePath());
QFile f(fi.absFilePath().data());
if (f.open(IO_ReadOnly))
{
yyFileName = fi.fileName();
......
......@@ -422,7 +422,7 @@ void parse(QCString &s)
void parseFile(QFileInfo &fi)
{
fprintf(stderr,"Parsing file %s...\n",fi.fileName().data());
QFile f(fi.absFilePath());
QFile f(fi.absFilePath().data());
if (f.open(IO_ReadOnly))
{
yyFileName = fi.fileName();
......
......@@ -66,6 +66,7 @@ Entry::Entry(const Entry &e)
startLine = e.startLine;
mGrpId = e.mGrpId;
bodyLine = e.bodyLine;
endBodyLine = e.endBodyLine;
inLine = e.inLine;
sublist = new QList<Entry>;
sublist->setAutoDelete(TRUE);
......@@ -203,6 +204,7 @@ void Entry::reset()
scopeSpec.resize(0);
memberSpec.resize(0);
bodyLine = -1;
endBodyLine = -1;
mGrpId = -1;
section = EMPTY_SEC;
sig = FALSE;
......
......@@ -141,8 +141,8 @@ class Entry
QCString scopeSpec; // template specialization of the scope
QCString memberSpec; // template specialization of the member
QCString program; // the program text
//QCString body; // the function body
int bodyLine; // line number of the definition in the source
int endBodyLine; // line number where the definition ends
QCString includeFile; // include file (2 arg of \class, must be unique)
QCString includeName; // include name (3 arg of \class)
QCString doc; // documentation block (partly parsed)
......
......@@ -202,7 +202,8 @@ void FileDef::writeDocumentation(OutputList &ol)
//doc=doc.stripWhiteSpace();
//int bl=brief.length();
//int dl=doc.length();
if (!briefDescription().isEmpty() || !documentation().isEmpty() || bodyLine!=-1)
if (!briefDescription().isEmpty() || !documentation().isEmpty() ||
startBodyLine!=-1)
{
ol.writeRuler();
bool latexOn = ol.isEnabled(OutputGenerator::Latex);
......@@ -329,7 +330,7 @@ void FileDef::writeSource(OutputList &ol)
//parseText(ol,theTranslator->trVerbatimText(incFile->name()));
//ol.writeRuler();
ol.startCodeFragment();
parseCode(ol,name(),fileToString(absFilePath()),FALSE,0,this);
parseCode(ol,0,fileToString(absFilePath()),FALSE,0,this);
ol.endCodeFragment();
endFile(ol);
ol.enableAll();
......
......@@ -105,9 +105,24 @@ void HtmlGenerator::startFile(const char *name,const char *title,bool external)
void HtmlGenerator::startQuickIndexItem(const char *s,const char *l)
{
t << "<a ";
if (s) t << "doxygen=\"" << s << "\" ";
t << "href=\"" << l << "\">";
QCString *dest;
if (s)
{
t << "<a class=\"qindexRef\"";
t << "doxygen=\"" << s << ":";
if ((dest=tagDestinationDict[s])) t << *dest << "/";
t << "\" ";
}
else
{
t << "<a class=\"qindex\"";
}
t << "href=\"";
if (s)
{
if ((dest=tagDestinationDict[s])) t << *dest << "/";
}
t << l << "\">";
}
void HtmlGenerator::endQuickIndexItem()
......@@ -182,14 +197,19 @@ void HtmlGenerator::writeStyleInfo(int part)
{
startPlainFile("doxygen.css");
t << "H1 { text-align: center }" << endl;
t << "A.qindex {}" << endl;
t << "A.qindexRef {}" << endl;
t << "A.el { text-decoration: none; font-weight: bold }" << endl;
t << "A.elRef { font-weight: bold }" << endl;
t << "A.code { text-decoration: none; font-weight: normal; color: #4444ee }" << endl;
t << "A.codeRef { font-weight: normal; color: #4444ee }" << endl;
t << "A.gl:link { color: #ffffff }" << endl;
t << "A.gl:visited { color: #ffffff }" << endl;
t << "A.gl { text-decoration: none; font-weight: bold; background-color: " << GROUP_COLOR << " }" << endl;
t << "DL.el { margin-left: -1cm }" << endl;
t << "DIV.fragment { width: 100%; border: none; background-color: #eeeeee }" << endl;
t << "DIV.in { margin-left: 16 }" << endl;
t << "DIV.ah { background-color: black; margin-bottom: 3; margin-top: 3 }" << endl;
t << "A.gl:link { color: #ffffff }" << endl;
t << "A.gl:visited { color: #ffffff }" << endl;
t << "A.gl { text-decoration: none; font-weight: bold; background-color: " << GROUP_COLOR << " }" << endl;
t << "TD.md { background-color: #f2f2ff }" << endl;
t << endl;
endPlainFile();
......@@ -220,12 +240,26 @@ void HtmlGenerator::writeString(const char *text)
void HtmlGenerator::writeIndexItem(const char *ref,const char *f,
const char *name)
{
QCString *dest;
t << "<li>";
if (ref || f)
{
if (ref)
{
t << "<a class=\"elRef\" ";
t << "doxygen=\"" << ref << ":";
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
t << "\" ";
}
else
{
t << "<a class=\"el\" ";
if (ref) t << "doxygen=\"" << ref << ":\" ";
}
t << "href=\"";
if (ref)
{
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
}
if (f) t << f << ".html\">";
}
else
......@@ -264,18 +298,56 @@ void HtmlGenerator::writeStartAnnoItem(const char *,const char *f,
void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
const char *anchor, const char *name)
{
QCString *dest;
if (ref)
{
t << "<a class=\"elRef\" ";
t << "doxygen=\"" << ref << ":";
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
t << "\" ";
}
else
{
t << "<a class=\"el\" ";
if (ref) t << "doxygen=\"" << ref << ":\" ";
}
t << "href=\"";
if (ref)
{
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
}
if (f) t << f << ".html";
if (anchor) t << "#" << anchor;
t << "\">";
docify(name);
t << "</a>";
//if (Config::htmlHelpFlag && f && htmlHelp->depth()>0)
//{
// htmlHelp->addItem(name,((QCString)f)+".html");
//}
}
void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
const char *anchor, const char *name)
{
QCString *dest;
if (ref)
{
t << "<a class=\"codeRef\" ";
t << "doxygen=\"" << ref << ":";
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
t << "\" ";
}
else
{
t << "<a class=\"code\" ";
}
t << "href=\"";
if (ref)
{
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
}
if (f) t << f << ".html";
if (anchor) t << "#" << anchor;
t << "\">";
docify(name);
t << "</a>";
col+=strlen(name);
}
void HtmlGenerator::startTextLink(const char *f,const char *anchor)
......@@ -666,7 +738,7 @@ void HtmlGenerator::endIndexList()
void HtmlGenerator::startAlphabeticalIndexList()
{
t << "<table align=center width=95% border=0 cellspacing=0 cellpadding=0>" << endl;
t << "<table align=center width=\"95%\" border=0 cellspacing=0 cellpadding=0>" << endl;
}
void HtmlGenerator::endAlphabeticalIndexList()
......
......@@ -76,8 +76,7 @@ class HtmlGenerator : public OutputGenerator
void writeObjectLink(const char *ref,const char *file,
const char *anchor,const char *name);
void writeCodeLink(const char *ref,const char *f,
const char *anchor,const char *name)
{ writeObjectLink(ref,f,anchor,name); col+=strlen(name); }
const char *anchor,const char *name);
void startTextLink(const char *file,const char *anchor);
void endTextLink();
void writeHtmlLink(const char *url,const char *text);
......@@ -161,6 +160,8 @@ class HtmlGenerator : public OutputGenerator
void writeGrave(char c) { t << "&" << c << "grave;"; }
void writeCirc(char c) { t << "&" << c << "circ;"; }
void writeTilde(char c) { t << "&" << c << "tilde;"; }
void writeRing(char c) { t << "&" << c << "ring;"; }
void writeSharpS() { t << "&szlig;"; }
void startDescList() { t << "<dl compact><dt>" << endl; }
void endDescTitle() {}
void writeDescItem() { t << "<dd>" << endl; }
......
......@@ -39,8 +39,18 @@ void writeInstallScript()
char *s=Config::tagFileList.first();
while (s)
{
QFileInfo fi(s);
t << "\"" << fi.fileName() << "\", \"\"";
QCString tagLine=s;
QCString fileName;
int eqPos = tagLine.find('=');
if (eqPos!=-1) // strip destination part
{
fileName = tagLine.left(eqPos).stripWhiteSpace();
}
else
{
fileName = tagLine;
}
t << "\"" << fileName << "\", \"\"";
s=Config::tagFileList.next();
if (s) t << ", ";
}
......
......@@ -24,6 +24,7 @@
#include "translator_de.h"
#include "translator_jp.h"
#include "translator_es.h"
#include "translator_fi.h"
#endif
#define L_EQUAL(a) !stricmp(langName,a)
......@@ -69,6 +70,10 @@ bool setTranslator(const char *langName)
{
theTranslator=new TranslatorSpanish;
}
else if (L_EQUAL("finnish"))
{
theTranslator=new TranslatorFinnish;
}
#endif
else // use the default language (i.e. english)
{
......
......@@ -965,13 +965,13 @@ void LatexGenerator::docify(const char *str)
c = *p++;
t << (char)c;
}
}
else // ascii char => see if we can insert hypenation hint
{
if (isupper(c) && islower(pc) && !insideTabbing) t << "\\-";
t << (char)c;
}
}
}
else // language is other than japanese
{
switch(c)
......
......@@ -160,6 +160,8 @@ class LatexGenerator : public OutputGenerator
t << "\\^{" << c << "}";
}
void writeTilde(char c) { t << "\\~{" << c << "}"; }
void writeRing(char c) { t << "\\" << c << c; }
void writeSharpS() { t << "\"s"; }
void startMemberDescription() { t << "\\begin{CompactList}\\small\\item\\em "; }
void endMemberDescription() { t << "\\item\\end{CompactList}"; }
void startDescList() { t << "\\begin{Desc}\n\\item["; }
......
......@@ -149,6 +149,12 @@ class ManGenerator : public OutputGenerator
void writeGrave(char c) { t << c << "\\*:"; firstCol=FALSE; }
void writeCirc(char c) { t << c << "\\*^"; firstCol=FALSE; }
void writeTilde(char c) { t << c << "\\*~"; firstCol=FALSE; }
void writeRing(char c) { t << c << "\\*0"; /* just a wild guess,
need to check! */
firstCol=FALSE; }
void writeSharpS() { t << "s\\*:"; /* just a wild guess,
need to check! */
firstCol=FALSE; }
void startMemberDescription() { t << "\n.RI \"\\fI"; firstCol=FALSE; }
void endMemberDescription() { t << "\\fR\""; firstCol=FALSE; }
void startDescList();
......
......@@ -445,6 +445,7 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
{
int i,l;
bool hasDocs=hasDocumentation();
//printf("%s MemberDef::writeDeclaration(): hasDocs %d\n",name().data(),hasDocs);
//if (cd) printf("MemberDef: %s in class %s annScope=%d annMemb=%p\n",
// name().data(),cd->name().data(),annScope,annMemb);
if (annScope) return;
......@@ -630,7 +631,7 @@ void MemberDef::writeDeclaration(OutputList &ol,ClassDef *cd,NamespaceDef *nd,Fi
if (annMemb)
{
bool latexOn = ol.isEnabled(OutputGenerator::Latex);
bool manOn = ol.isEnabled(OutputGenerator::Latex);
bool manOn = ol.isEnabled(OutputGenerator::Man);
if (latexOn) ol.disable(OutputGenerator::Latex);
if (manOn) ol.disable(OutputGenerator::Man);
ol.writeNonBreakableSpace();
......@@ -738,6 +739,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
MemberType m)
{
bool hasDocs = detailsAreVisible();
//printf("%s MemberDef::writeDocumentation(): hasDocs %d\n",name().data(),hasDocs);
if (
(memberType()==m && // filter member type
(Config::extractAllFlag || hasDocs) &&
......@@ -1168,7 +1170,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
ol.endDescList();
}
// write reference to the source
writeSourceRef(ol);
writeSourceRef(ol,cname);
ol.endIndent();
// enable LaTeX again
//if (Config::extractAllFlag && !hasDocs) ol.enable(OutputGenerator::Latex);
......@@ -1214,7 +1216,7 @@ bool MemberDef::isLinkable()
bool MemberDef::detailsAreVisible() const
{
return !documentation().isEmpty() || // has detailed docs
(Config::sourceBrowseFlag && bodyLine!=-1 && bodyDef) || // has reference to sources
(Config::sourceBrowseFlag && startBodyLine!=-1 && bodyDef) || // has reference to sources
(mtype==Enumeration && docEnumValues) || // has enum values
(mtype==EnumValue && !briefDescription().isEmpty()) || // is doc enum value
(!briefDescription().isEmpty() &&
......
......@@ -147,7 +147,7 @@ class MemberDef : public Definition
// tag file related members
//void setReference(const char *r) { external=r; }
//bool isReference() { return !external.isNull(); }
//bool isReference() { return !external.isEmpty(); }
// argument related members
ArgumentList *argumentList() const { return argList; }
......
......@@ -77,9 +77,9 @@ void MemberGroup::writeDocumentation(OutputList &ol)
if (!documentation().isEmpty() || Config::repeatBriefFlag)
{
bool htmlEnabled = ol.isEnabled(OutputGenerator::Html);
bool latexEnabled = ol.isEnabled(OutputGenerator::Html);
if (htmlEnabled) ol.disableAllBut(OutputGenerator::Html);
if (latexEnabled) ol.disableAllBut(OutputGenerator::Html);
bool latexEnabled = ol.isEnabled(OutputGenerator::Latex);
if (htmlEnabled) ol.disable(OutputGenerator::Html);
if (latexEnabled) ol.disable(OutputGenerator::Latex);
ol.startTextLink(0,"_details");
parseText(ol,theTranslator->trMore());
ol.endTextLink();
......
......@@ -64,6 +64,7 @@ class MemberGroupDict : public QIntDict<MemberGroup>
{
public:
MemberGroupDict(int size) : QIntDict<MemberGroup>(size) {}
~MemberGroupDict() {}
};
#endif
......@@ -82,6 +82,8 @@ void MemberList::countDocMembers(bool inGroup)
MemberDef *md=first();
while (md)
{
//printf("%s MemberList::countDocMembers() details=%d\n",
// md->name().data(),md->detailsAreVisible());
if ((Config::extractAllFlag || md->detailsAreVisible()) &&
(md->groupId()==-1 || inGroup))
{
......
......@@ -153,6 +153,8 @@ class OutputGenerator
virtual void writeGrave(char) = 0;
virtual void writeCirc(char) = 0;
virtual void writeTilde(char) = 0;
virtual void writeRing(char) = 0;
virtual void writeSharpS() = 0;
virtual void startMemberDescription() = 0;
virtual void endMemberDescription() = 0;
virtual void startDescList() = 0;
......
......@@ -263,6 +263,10 @@ class OutputList
{ forall(&OutputGenerator::writeCirc,c); }
void writeTilde(char c)
{ forall(&OutputGenerator::writeTilde,c); }
void writeRing(char c)
{ forall(&OutputGenerator::writeRing,c); }
void writeSharpS()
{ forall(&OutputGenerator::writeSharpS); }
void startMemberDescription()
{ forall(&OutputGenerator::startMemberDescription); }
void endMemberDescription()
......
This diff is collapsed.
......@@ -543,7 +543,7 @@ static bool inBlock()
static void endBlock()
{
if (inParamBlock || inRetValBlock)
if (inParamBlock || inRetValBlock || inExceptionBlock)
{
outDoc->endDescTableData();
outDoc->endDescTable();
......@@ -657,7 +657,7 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type)
FileDef *fd;
if ((fd=findFileDef(&imageNameDict,fileName,ambig)))
{
QFile inImage(fd->absFilePath());
QFile inImage(fd->absFilePath().data());
if (inImage.open(IO_ReadOnly))
{
result = fileName;
......@@ -985,6 +985,8 @@ VAR [vV][aA][rR]
<DocScan,Text>"&"[AEIOUaeiou]"grave;" { outDoc->writeGrave(yytext[1]); }
<DocScan,Text>"&"[AEIOUaeiou]"circ;" { outDoc->writeCirc(yytext[1]); }
<DocScan,Text>"&"[ANOano]"tilde;" { outDoc->writeTilde(yytext[1]); }
<DocScan,Text>"&szlig;" { outDoc->writeSharpS(); }
<DocScan,Text>"&[aA]ring;" { outDoc->writeRing(yytext[1]); }
<DocScan,DocHtmlScan,DocLatexScan>"$("[a-z_A-Z]+")" {
QCString envvar=&yytext[2];
envvar=envvar.left(envvar.length()-1);
......@@ -1074,6 +1076,7 @@ VAR [vV][aA][rR]
generateLink(*outDoc,className,linkRef,inSeeBlock,linkText);
BEGIN( DocScan );
}
/*
<DocScan>"@ref"{B}+ {
BEGIN(DocRef);
}
......@@ -1081,6 +1084,7 @@ VAR [vV][aA][rR]
generateLink(*outDoc,className,yytext,TRUE,0);
BEGIN( DocScan );
}
*/
<DocScan>("\\"|"@")"endlink"/[^a-z_A-Z0-9] { warn("Warning: \\endlink without \\link "
"in documentation of %s\n", refName.data());
}
......@@ -1154,7 +1158,6 @@ VAR [vV][aA][rR]
if (inBlock()) endBlock();
inBugBlock=TRUE;
outDoc->startDescList();
//outDoc->writeBoldString("Bugs and limitations: ");
outDoc->startBold();
scanString(theTranslator->trBugsAndLimitations()+": ");
outDoc->endBold();
......@@ -1298,23 +1301,28 @@ VAR [vV][aA][rR]
}
BEGIN(DocParam);
}
<DocScan>("\\"|"@")"exception"{BN}+ {
<DocScan>("\\"|"@")("exception"|"throw")s?{BN}+ {
endArgumentList();
if (!inExceptionBlock)
{
if (inBlock()) endBlock();
inExceptionBlock=TRUE;
outDoc->startDescList();
//outDoc->writeBoldString("Exceptions: ");
outDoc->startBold();
scanString(theTranslator->trExceptions()+": ");
outDoc->endBold();
outDoc->endDescTitle();
outDoc->writeDescItem();
outDoc->startDescTable();
}
else
{
outDoc->endDescTableData();
}
BEGIN(DocException);
}
<DocScan>"\\capt".*
<DocParam>([a-z_A-Z0-9:]+)|("\"".*"\"") {
<DocParam>([a-z_A-Z0-9:\.\-]+)|("\"".*"\"") {
outDoc->startDescTableTitle();
outDoc->startEmphasis();
outDoc->docify(yytext);
......@@ -1324,11 +1332,12 @@ VAR [vV][aA][rR]
BEGIN(DocScan);
}
<DocException>{SCOPENAME} {
outDoc->writeDescItem();
outDoc->startDescTableTitle();
outDoc->startEmphasis();
outDoc->docify(yytext);
outDoc->endEmphasis();
outDoc->docify(" - ");
outDoc->endDescTableTitle();
outDoc->startDescTableData();
BEGIN(DocScan);
}
<DocScan>"\\section "{ID}"\n" {
......@@ -1352,13 +1361,13 @@ VAR [vV][aA][rR]
outDoc->writeAnchor(sec->label);
}
}
<DocScan>"\\ref" {
<DocScan>("\\"|"@")"ref" {
BEGIN(DocRefName);
}
<DocScan>"\\refitem" {
BEGIN(DocRefItem);
}
<DocRefName>{ID} {
<DocRefName>{SCOPENAME} {
QCString ref=yytext;
SectionInfo *sec;
if ((sec=sectionDict[ref]))
......@@ -1378,14 +1387,14 @@ VAR [vV][aA][rR]
outDoc->writeSectionRef(sec->fileName,sec->label,text);
}
}
else
else if (!generateLink(*outDoc,className,yytext,TRUE,0))
{
warn("Warning: reference to unknown section %s!\n",yytext);
outDoc->writeBoldString("unknown reference!");
outDoc->writeBoldString(" unknown reference!");
}
BEGIN(DocScan);
}
<DocRefName>{ID}/{B}+"\"" {
<DocRefName>{SCOPENAME}/{B}+"\"" {
sectionRef=yytext;
BEGIN(DocRefArgStart);
}
......@@ -1407,7 +1416,7 @@ VAR [vV][aA][rR]
outDoc->writeSectionRef(sec->fileName,sec->label,text);
}
}
else
else if (!generateLink(*outDoc,className,yytext,TRUE,text))
{
warn("Warning: reference to unknown section %s!\n",sectionRef.data());
outDoc->writeBoldString("unknown reference!");
......@@ -2053,7 +2062,7 @@ VAR [vV][aA][rR]
<UsingDirective>{SCOPENAME} { current->name=yytext;
current->fileName = yyFileName;
current->section=Entry::USINGDIR_SEC;
printf("Found using directive %s\n",yytext);
//printf("Found using directive %s\n",yytext);
current_root->addSubEntry(current);
current = new Entry ;
current->protection = protection ;
......@@ -2413,6 +2422,7 @@ VAR [vV][aA][rR]
}
else
{
current->endBodyLine = yyLineNr;
QCString &cn = current->name;
//QCString rn = stripAnnonymousScope(current_root->name);
QCString rn = current_root->name.copy();
......@@ -2782,12 +2792,12 @@ VAR [vV][aA][rR]
}
<FuncQual,FuncRound,FuncFunc>. { current->args += *yytext; }
<FuncQual>{BN}*"throw"{BN}*"(" {
current->exception = " throw(" ;
current->exception = " throw (" ;
lineCount() ;
BEGIN( ExcpRound ) ;
}
<FuncQual>{BN}*"raises"{BN}*"(" {
current->exception = " raises(" ;
current->exception = " raises (" ;
lineCount() ;
BEGIN( ExcpRound ) ;
}
......@@ -2843,7 +2853,7 @@ VAR [vV][aA][rR]
tempName=current->name;
else
tempName=current->name.left(tempArg);
if (current->type.isNull() && tempName.find("operator")==-1 &&
if (current->type.isEmpty() && tempName.find("operator")==-1 &&
(tempName.find('*')!=-1 || tempName.find('&')!=-1))
{
//printf("Scanner.l: found in class variable: `%s' `%s' `%s'\n",
......@@ -2861,7 +2871,7 @@ VAR [vV][aA][rR]
{
//printf("Scanner.l: prototype? type=`%s' name=`%s' args=`%s'\n",current->type.data(),current->name.data(),current->args.data());
QRegExp re("([^)]*)");
if (!current->type.isNull() &&
if (!current->type.isEmpty() &&
(current->type.find(re,0)!=-1 || current->type.left(8)=="typedef "))
{
//printf("Scanner.l: found function variable!\n");
......@@ -2920,8 +2930,11 @@ VAR [vV][aA][rR]
if( bracketCount )
--bracketCount ;
else
{
previous->endBodyLine=yyLineNr;
BEGIN( lastCurlyContext ) ;
}
}
<SkipCurly>"}"{BN}*("/*!"|"/**"|"//!"|"///")"<" {
if ( bracketCount )
{
......@@ -2930,6 +2943,7 @@ VAR [vV][aA][rR]
}
else
{
current->endBodyLine=yyLineNr;
lineCount();
tempEntry = current; // temporarily switch to the previous entry
current = previous;
......@@ -3846,6 +3860,7 @@ VAR [vV][aA][rR]
newDocState();
}
<Doc>[a-z_A-Z0-9]+ { current->doc += yytext; }
<Doc,AfterDoc,LineDoc,ClassDoc>"\\\\" { current->doc += yytext; }
<Doc>. { current->doc += *yytext; }
<DefLineDoc,LineDoc>. { current->brief += *yytext; }
<Doc>\n { yyLineNr++; current->doc += *yytext; }
......
......@@ -451,7 +451,7 @@ class TranslatorCzech : public Translator
switch(compType)
{
case ClassDef::Class: result+="tuto tridu"; break;
case ClassDef::Struct: result+="tuto struktury"; break;
case ClassDef::Struct: result+="tuto strukturu"; break;
case ClassDef::Union: result+="tuto unii"; break;
case ClassDef::Interface: result+="toto rozhrani"; break;
}
......@@ -483,7 +483,24 @@ class TranslatorCzech : public Translator
* documentation. It should be an abbreviation of the word page.
*/
QCString trPageAbbreviation()
{ return "p."; }
{ return "str."; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991003
//////////////////////////////////////////////////////////////////////////
virtual QCString trSources()
{
return "Zdrojove soubory";
}
virtual QCString trDefinedAtLineInSourceFile()
{
return "Definice v souboru @1 na radce @0";
}
virtual QCString trDefinedInSourceFile()
{
return "Definice v souboru @0.";
}
};
#endif // TRANSLATOR_CZ_H
......
......@@ -106,11 +106,11 @@ class TranslatorGerman : public Translator
QCString trThisIsTheListOfAllMembers()
// this is the first part of a sentence that is followed by a class name
{ return "Vollst&auml;ndige Aufstellung aller Elemente f&uuml;r"; }
{ return "Vollst&auml;ndige Aufstellung aller Elemente f&uuml;r "; }
QCString trIncludingInheritedMembers()
// this is the remainder of the sentence after the class name
{ return "einschlie&suml;lich aller geerbten Elemente."; }
{ return " einschlie&szlig;lich aller geerbten Elemente."; }
QCString trGeneratedAutomatically(const char *s)
// this is put at the author sections at the bottom of man pages.
......
This diff is collapsed.
......@@ -674,6 +674,42 @@ class TranslatorFrench : public Translator
return "Liste par ordre alphabétique";
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
//////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */
virtual QCString trReturnValues()
{ return "Valeurs retournées"; }
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual QCString trMainPage()
{ return "Page Principale"; }
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual QCString trPageAbbreviation()
{ return "p "; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991003
//////////////////////////////////////////////////////////////////////////
virtual QCString trSources()
{
return "Sources";
}
virtual QCString trDefinedAtLineInSourceFile()
{
return "Définition à la ligne @0 du fichier @1.";
}
virtual QCString trDefinedInSourceFile()
{
return "Définition dans le fichier @0.";
}
};
#endif
This diff is collapsed.
......@@ -141,7 +141,7 @@ int guessSection(const char *name)
// if (n)
// {
// Define *def=defineDict[n];
// if (def && def->nargs==0 && !def->definition.isNull())
// if (def && def->nargs==0 && !def->definition.isEmpty())
// {
// return def->definition;
// }
......@@ -153,7 +153,7 @@ int guessSection(const char *name)
QCString resolveTypedefs(const QCString &n)
{
QCString *subst=typedefDict[n];
if (subst && !subst->isNull())
if (subst && !subst->isEmpty())
{
return *subst;
}
......@@ -863,6 +863,8 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
{
QCString srcAType=trimTemplateSpecifiers(className,srcA->type);
QCString dstAType=trimTemplateSpecifiers(className,dstA->type);
if (srcAType.left(6)=="class ") srcAType=srcAType.right(srcAType.length()-6);
if (dstAType.left(6)=="class ") dstAType=dstAType.right(dstAType.length()-6);
if (srcAType!=dstAType) // check if the argument only differs on name
{
......@@ -1489,7 +1491,7 @@ bool getScopeDefs(const char *docScope,const char *scope,
* instead of :: the # symbol may also be used.
*/
void generateRef(OutputList &ol,const char *scName,
bool generateRef(OutputList &ol,const char *scName,
const char *name,bool inSeeBlock,const char *rt)
{
//printf("generateRef(scName=%s,name=%s,rt=%s)\n",scName,name,rt);
......@@ -1502,7 +1504,7 @@ void generateRef(OutputList &ol,const char *scName,
{
ClassDef *cd=0;
NamespaceDef *nd=0;
if (linkText.isNull()) linkText=tmpName;
if (linkText.isEmpty()) linkText=tmpName;
// check if this is a class or namespace reference
if (scName!=tmpName && getScopeDefs(scName,name,cd,nd))
{
......@@ -1525,13 +1527,13 @@ void generateRef(OutputList &ol,const char *scName,
}
}
// link has been written, stop now.
return;
return TRUE;
}
else if (scName==tmpName || (!inSeeBlock && scopePos==-1)) // nothing to link => output plain text
{
ol.docify(linkText);
// text has been written, stop now.
return;
return FALSE;
}
// continue search...
linkText = rt;
......@@ -1552,7 +1554,7 @@ void generateRef(OutputList &ol,const char *scName,
// create a default link text if none was explicitly given
bool explicitLink=TRUE;
if (linkText.isNull())
if (linkText.isEmpty())
{
//if (!scopeUser.isEmpty()) linkText=scopeUser+"::";
linkText=nameStr;
......@@ -1612,7 +1614,7 @@ void generateRef(OutputList &ol,const char *scName,
// for functions we add the arguments if explicitly specified or else "()"
if (!rt && (md->isFunction() || md->isPrototype() || md->isSignal() || md->isSlot() || md->isDefine()))
{
if (argsStr.isNull())
if (argsStr.isEmpty())
ol.writeString("()");
else
ol.docify(argsStr);
......@@ -1630,7 +1632,7 @@ void generateRef(OutputList &ol,const char *scName,
writePageRef(ol,cName,aName);
}
}
return;
return TRUE;
}
else if (inSeeBlock && !nameStr.isEmpty() && (gd=groupDict[nameStr]))
{ // group link
......@@ -1642,7 +1644,7 @@ void generateRef(OutputList &ol,const char *scName,
ol.docify(gd->groupTitle());
}
ol.endTextLink();
return;
return TRUE;
}
// nothing found
......@@ -1651,9 +1653,9 @@ void generateRef(OutputList &ol,const char *scName,
else
{
ol.docify(linkText);
if (!argsStr.isNull()) ol.docify(argsStr);
if (!argsStr.isEmpty()) ol.docify(argsStr);
}
return;
return FALSE;
}
//----------------------------------------------------------------------
......@@ -1661,8 +1663,9 @@ void generateRef(OutputList &ol,const char *scName,
// file, class or member from text `lr' within the context of class `clName'.
// This link has the text 'lt' (if not 0), otherwise `lr' is used as a
// basis for the link's text.
// returns TRUE if a link could be generated.
void generateLink(OutputList &ol,const char *clName,
bool generateLink(OutputList &ol,const char *clName,
const char *lr,bool inSeeBlock,const char *lt)
{
QCString linkRef=lr;
......@@ -1673,11 +1676,20 @@ void generateLink(OutputList &ol,const char *clName,
GroupDef *gd;
bool ambig;
if (linkRef.length()==0) // no reference name!
{
ol.docify(lt);
return FALSE;
}
else if ((pageDict[linkRef])) // link to a page
{
ol.writeObjectLink(0,linkRef,0,lt);
return TRUE;
}
else if ((exampleDict[linkRef])) // link to an example
{
ol.writeObjectLink(0,linkRef+"-example",0,lt);
return TRUE;
}
else if ((gd=groupDict[linkRef])) // link to a group
{
ol.startTextLink(gd->getOutputFileBase(),0);
......@@ -1686,13 +1698,19 @@ void generateLink(OutputList &ol,const char *clName,
else
ol.docify(gd->groupTitle());
ol.endTextLink();
return TRUE;
}
else if ((fd=findFileDef(&inputNameDict,linkRef,ambig))
&& fd->isLinkable())
{
// link to documented input file
ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0,lt);
return TRUE;
}
else // probably a class or member reference
generateRef(ol,clName,lr,inSeeBlock,lt);
{
return generateRef(ol,clName,lr,inSeeBlock,lt);
}
}
void generateFileRef(OutputList &ol,const char *name,const char *text)
......@@ -1782,7 +1800,7 @@ FileDef *findFileDef(const FileNameDict *fnDict,const char *n,bool &ambig)
ambig=FALSE;
QCString name=n;
QCString path;
if (name.isNull()) return 0;
if (name.isEmpty()) return 0;
int slashPos=QMAX(name.findRev('/'),name.findRev('\\'));
if (slashPos!=-1)
{
......@@ -1790,7 +1808,7 @@ FileDef *findFileDef(const FileNameDict *fnDict,const char *n,bool &ambig)
name=name.right(name.length()-slashPos-1);
}
//printf("findFileDef path=`%s' name=`%s'\n",path.data(),name.data());
if (name.isNull()) return 0;
if (name.isEmpty()) return 0;
FileName *fn;
if ((fn=(*fnDict)[name]))
{
......@@ -1805,7 +1823,7 @@ FileDef *findFileDef(const FileNameDict *fnDict,const char *n,bool &ambig)
FileDef *lastMatch=0;
while (fd)
{
if (path.isNull() || fd->getPath().right(path.length())==path)
if (path.isEmpty() || fd->getPath().right(path.length())==path)
{
count++;
lastMatch=fd;
......@@ -1837,7 +1855,7 @@ void showFileDefMatches(const FileNameDict *fnDict,const char *n)
FileDef *fd=fn->first();
while (fd)
{
if (path.isNull() || fd->getPath().right(path.length())==path)
if (path.isEmpty() || fd->getPath().right(path.length())==path)
{
msg(" %s\n",fd->absFilePath().data());
}
......
......@@ -40,9 +40,9 @@ extern void linkifyText(OutputList &ol,const char *clName,const char *name,
extern bool getDefs(const QCString &scopeName,const QCString &memberName,
const char *, MemberDef *&md, ClassDef *&cd,FileDef *&fd,
NamespaceDef *&nd);
extern void generateRef(OutputList &ol,const char *,
extern bool generateRef(OutputList &ol,const char *,
const char *,bool inSeeBlock,const char * =0);
extern void generateLink(OutputList &ol,const char *,
extern bool generateLink(OutputList &ol,const char *,
const char *,bool inSeeBlock,const char *);
extern void generateFileRef(OutputList &ol,const char *,
const char *linkTxt=0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment