Commit 1f15cdfe authored by dimitri's avatar dimitri

Release-1.2.3

parent 00340144
DOXYGEN Version 1.2.2-20001015
DOXYGEN Version 1.2.3
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (15 October 2000)
Dimitri van Heesch (30 October 2000)
......@@ -24,7 +24,7 @@ distclean: clean
-rm -f src/Makefile.doxygen src/Makefile.doxytag src/Makefile.doxysearch qtools/Makefile.qtools
-rm -f Makefile qtools/Makefile src/Makefile examples/Makefile doc/Makefile
-rm -f .makeconfig .tmakeconfig
-rm -f src/doxygen.pro src/doxytag.pro src/doxysearch.pro
-rm -f src/doxygen.pro src/doxytag.pro src/doxysearch.pro qtools/qtools.pro
-rm -f src/version.cpp
-rm -r addon/configgen/Makefile addon/doxywizard/Makefile
-rm -f addon/configgen/Makefile.configgen
......
DOXYGEN Version 1.2.2-20001015
DOXYGEN Version 1.2.3
Please read INSTALL for compilation instructions.
......@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (15 October 2000)
Dimitri van Heesch (30 October 2000)
1.2.2-20001015
1.2.3
......@@ -140,8 +140,12 @@ static FILE *tryPath(const char *path,const char *fileName)
return 0;
}
static void substEnvVarsInStrList(QStrList &sl);
static void substEnvVarsInString(QCString &s);
static FILE *findFile(const char *fileName)
{
substEnvVarsInStrList(includePathList);
char *s=includePathList.first();
while (s) // try each of the include paths
{
......@@ -162,6 +166,7 @@ static void readIncludeFile(const char *incName)
}
QCString inc = incName;
substEnvVarsInString(inc);
inc = inc.stripWhiteSpace();
uint incLen = inc.length();
if (inc.at(0)=='"' && inc.at(incLen-1)=='"') // strip quotes
......@@ -430,6 +435,23 @@ void configStrToVal()
}
Config::colsInAlphaIndex=cols;
}
if (enumValuesPerLineString.isEmpty())
{
Config::enumValuesPerLine=4;
}
else
{
bool ok;
int cols = enumValuesPerLineString.toInt(&ok);
if (!ok || cols<1 || cols>20)
{
warn_cont("Warning: argument of ENUM_VALUES_PER_LINE is not a valid number in the range [1..20]!\n"
"Using the default of 4!\n");
cols = 4;
}
Config::enumValuesPerLine=cols;
}
if (maxDotGraphWidthString.isEmpty())
{
......@@ -441,7 +463,7 @@ void configStrToVal()
int width =maxDotGraphWidthString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [100..30000]!\n"
"Using the default of 1024 pixels!\n");
width=1024;
}
......@@ -466,7 +488,7 @@ void configStrToVal()
int height =maxDotGraphHeightString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [100..30000]!\n"
"Using the default of 1024 pixels!\n");
height=1024;
}
......
......@@ -775,8 +775,8 @@ void init()
"information to generate all constant output in the proper language. \n"
"The default language is English, other supported languages are: \n"
"Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n"
"Korean, Hungarian, Spanish, Romanian, Russian, Croatian, Polish, \n"
"Portuguese and Slovene.\n"
"Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian, \n"
"Polish, Portuguese and Slovene.\n"
);
ConfigString::addFixedValue("outputLanguage","Croatian");
ConfigString::addFixedValue("outputLanguage","Czech");
......@@ -789,6 +789,7 @@ void init()
ConfigString::addFixedValue("outputLanguage","Italian");
ConfigString::addFixedValue("outputLanguage","Japanese");
ConfigString::addFixedValue("outputLanguage","Korean");
ConfigString::addFixedValue("outputLanguage","Norwegian");
ConfigString::addFixedValue("outputLanguage","Romanian");
ConfigString::addFixedValue("outputLanguage","Russian");
ConfigString::addFixedValue("outputLanguage","Polish");
......@@ -1169,6 +1170,14 @@ void init()
"to standard output. \n",
ConfigString::File
);
ConfigBool::add( "filterForSourceFlag",
"FILTER_SOURCE_FILES",
"FALSE",
"do we filter source files?",
"If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using \n"
"INPUT_FILTER) will be used to filter the input files when producing source \n"
"files to browse. \n"
);
//-----------------------------------------------------------------------------------------------
ConfigInfo::add( "Index","configuration options related to the alphabetical class index");
......@@ -1279,6 +1288,15 @@ void init()
"the value YES disables it. \n"
);
addDependency("noIndexFlag","generateHtml");
ConfigInt::add( "enumValuesPerLine",
"ENUM_VALUES_PER_LINE",
"4",
"number of enum values that are put on one line",
"This tag can be used to set the number of enum values (range [1..20]) \n"
"that doxygen will group on one line in the generated HTML documentation. \n",
1,20
);
addDependency("enumValuesPerLine","generateHtml");
//-----------------------------------------------------------------------------------------------
ConfigInfo::add( "LaTeX","configuration options related to the LaTeX output");
//-----------------------------------------------------------------------------------------------
......
......@@ -126,6 +126,10 @@ Wizard::Wizard(int argc,char **argv) :
new QToolButton( QPixmap( filesave_xpm ), "Save File", QString::null,
this, SLOT(saveFile()), fileTools, "save file" );
//Micha: QToolButton * =
new QToolButton( QPixmap( rundoxygen_xpm ), "Save and Run doxygen", QString::null,
this, SLOT(runDoxygen()), fileTools, "save and run doxygen" );
QWhatsThis::whatsThisButton( fileTools );
......@@ -142,10 +146,10 @@ Wizard::Wizard(int argc,char **argv) :
file->insertItem( "&Quit", this, SLOT(quit()), CTRL+Key_Q );
// Doxygen popupmenu
//QPopupMenu* doxygen = new QPopupMenu;
//int itemIndex = doxygen->insertItem( "&Run" );
//doxygen->setWhatsThis ( itemIndex, "Run doxygen with the current configuration file..." );
//doxygen->setItemEnabled( itemIndex, FALSE );
QPopupMenu* doxygen = new QPopupMenu;
int itemIndex = doxygen->insertItem( QIconSet(QPixmap(rundoxygen_xpm)),
"&Run", this, SLOT(runDoxygen()), CTRL+Key_R );
doxygen->setWhatsThis ( itemIndex, "Run doxygen with the current configuration file..." );
// Help popupmenu
QPopupMenu* help = new QPopupMenu;
......@@ -154,7 +158,7 @@ Wizard::Wizard(int argc,char **argv) :
// menubar definition
menuBar()->insertItem( "&File", file );
//menuBar()->insertItem( "&Doxygen", doxygen );
menuBar()->insertItem( "&Doxygen", doxygen );
menuBar()->insertSeparator();
menuBar()->insertItem( "&Help", help );
......@@ -262,10 +266,20 @@ void Wizard::saveAsFile()
}
saveConfig(configFileName);
statusBar()->message("Saved as "+ configFileName, messageTimeout );
statusBar()->message("Saved as "+ configFileName, messageTimeout );
}
//Micha
void Wizard::runDoxygen()
{
saveFile();
QString s = "doxygen " + configFileName;
system((const char*)s);
statusBar()->message("doxygen completed: "+ configFileName, messageTimeout );
hasChanged = FALSE;
refreshCaption();
}
}
void Wizard::quit()
{
......
......@@ -43,6 +43,7 @@ class Wizard : public QMainWindow
void quit();
void changed();
void about();
void runDoxygen(); // Micha
signals:
......
......@@ -201,4 +201,38 @@ static const char *filesave_xpm_data[] =
"b............."
};
const char **filesave_xpm = (const char **)filesave_xpm_data;
/* XPM */
static const char *rundoxygen_xpm_data[] =
{
"16 16 11 1",
" c None",
". c #000000",
"+ c #DCDCDC",
"@ c #A0A0A0",
"# c #C3C3C3",
"$ c #808080",
"% c #FFA858",
"& c #FFDCA8",
"* c #FFFFC0",
"= c #FFFFFF",
"- c #585858",
" .. ",
" .. .++. .. ",
" .+@.@##@.@+. ",
" .@+$@%%@$+@. ",
" .$%%&%&%$. ",
" ..+@%&$$%&@+.. ",
".+#@%&%@@&*%@#+.",
".$@+$&*&&=*$+@$.",
" .--+$&*=&$+--. ",
" .$#++$$++#$. ",
" .@=$-$++$-$=@. ",
" .+@-..@@..-@+. ",
" ... .+=. ... ",
" .-$. ",
" .. ",
" "
};
const char **rundoxygen_xpm = (const char **)rundoxygen_xpm_data;
......@@ -22,5 +22,6 @@ extern const char** del_xpm;
extern const char** update_xpm;
extern const char** fileopen_xpm;
extern const char** filesave_xpm;
extern const char** rundoxygen_xpm;
#endif
......@@ -351,26 +351,26 @@ touch .tmakeconfig
if test "$f_shared" = NO; then
if test "$f_platform" = "osf1-cxx" -o "$f_platform" = "irix-n32"; then
cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -non_shared
TMAKE_LFLAGS += -non_shared
EOF
elif test "$f_platform" = "solaris-cc"; then
cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -Bstatic
TMAKE_LFLAGS += -Bstatic
EOF
elif test "$f_platform" = "hpux-cc"; then
cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -noshared
TMAKE_LFLAGS += -noshared
EOF
else
cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -static
TMAKE_LFLAGS += -static
EOF
fi
fi
if test "$f_english" = YES; then
cat >> .tmakeconfig <<EOF
TMAKE_CXXFLAGS = -DENGLISH_ONLY
TMAKE_CXXFLAGS += -DENGLISH_ONLY
EOF
fi
......
......@@ -13,7 +13,8 @@
# input used in their production; they are not affected by this license.
all: FORCE
set DOXYGEN_DOCDIR=file:///$(DOXYGEN)
@xcopy /s /q ..\examples ..\html\examples
set DOXYGEN_DOCDIR=.
set VERSION=$(VERSION)
$(DOXYGEN)\bin\doxygen
@del ..\latex\refman.tex
......
......@@ -952,7 +952,8 @@ Public/Protected/Private/... section.
\e not in other documentation blocks!
\sa
Section \ref cmdpage "\\page" for an example of the \\cmdsection command.
Section \ref cmdpage "\\page" for an example of the
\ref cmdsection "\\section" command.
<hr>
\subsection cmdsubsection \subsection <subsection-name> (subsection title)
......@@ -966,7 +967,8 @@ Public/Protected/Private/... section.
\e not in other documentation blocks!
\sa
Section \ref cmdpage "\\page" for an example of the \\cmdsubsection command.
Section \ref cmdpage "\\page" for an example of the
\ref cmdsubsection "\\cmdsubsection" command.
<hr>
......
......@@ -87,6 +87,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_doc_url DOC_URL
<li> \refitem cfg_dot_path DOT_PATH
<li> \refitem cfg_enable_preprocessing ENABLE_PREPROCESSING
<li> \refitem cfg_enum_values_per_line ENUM_VALUES_PER_LINE
<li> \refitem cfg_enabled_sections ENABLED_SECTIONS
<li> \refitem cfg_example_path EXAMPLE_PATH
<li> \refitem cfg_example_patterns EXAMPLE_PATTERNS
......@@ -212,15 +213,6 @@ followed by the descriptions of the tags grouped by category.
Dutch, French, Italian, Czech, Swedish, German, Finnish, Hungarian, Japanese,
Korean, Spanish, Russian, Croatian, Polish and Portuguese.
\anchor cfg_disable_index
<dt>\c DISABLE_INDEX <dd>
\addindex DISABLE_INDEX
If you want full control over the layout of the generated HTML pages it
might be necessary to disable the index and replace it with your own.
The \c DISABLE_INDEX tag can be used to turn on/off the condensed index at
top of each page. A value of NO (the default) enables the index and the
value YES disables it.
\anchor cfg_extract_all
<dt>\c EXTRACT_ALL <dd>
\addindex EXTRACT_ALL
......@@ -578,6 +570,13 @@ followed by the descriptions of the tags grouped by category.
input file. Doxygen will then use the output that the filter program writes
to standard output.
\anchor cfg_filter_source_files
<dt>\c FILTER_SOURCE_FILES <dd>
\addindex FILTER_SOURCE_FILES
If the \c FILTER_SOURCE_FILES tag is set to \c YES, the input filter (if set using
\c INPUT_FILTER ) will be used to filter the input files when producing source
files to browse.
</dl>
\subsection alphabetical_index Alphabetical index options
......@@ -723,6 +722,21 @@ followed by the descriptions of the tags grouped by category.
(which basically renders \c doxysearch obsolete on Windows).
The HTML workshop also contains a viewer for compressed HTML files.
\anchor cfg_disable_index
<dt>\c DISABLE_INDEX <dd>
\addindex DISABLE_INDEX
If you want full control over the layout of the generated HTML pages it
might be necessary to disable the index and replace it with your own.
The \c DISABLE_INDEX tag can be used to turn on/off the condensed index at
top of each page. A value of NO (the default) enables the index and the
value YES disables it.
\anchor cfg_enum_values_per_line
<dt>\c ENUM_VALUES_PER_LINE <dd>
\addindex ENUM_VALUES_PER_LINE
This tag can be used to set the number of enum values (range [1..20])
that doxygen will group on one line in the generated HTML documentation.
</dl>
\subsection latex_output LaTeX related options
\anchor cfg_generate_latex
......
......@@ -41,10 +41,6 @@ See the
GNU General Public License</a>
for more details.
<p>
It is hereby explicitly allowed that this program may be linked against
<a href="http://www.trolltech.com/products/qt.html">Troll Tech's Qt library</a>,
and distributed, without the GPL applying to Qt.
<p>
Documents produced by Doxygen are derivative works derived from the
input used in their production; they are not affected by this license.
......
......@@ -22,18 +22,21 @@ First go to the
\latexonly({\tt http://www.stack.nl/$\sim$dimitri/doxygen/download.html})\endlatexonly
to get the latest distribution, if you did not have it already.
This section is divided into the following subsections:
<ul>
<li>\ref install_src_unix "Compiling from source on Unix"
<li>\ref install_bin_unix "Installating the binaries on Unix"
<li>\ref unix_problems "Known compilation problems for Unix"
<li>\ref install_src_windows "Compiling from source on Windows"
<li>\ref install_bin_windows "Installating the binaries on Windows"
<li>\ref build_tools "Tools used to develop doxygen"
</ul>
\subsection install_src_unix Compiling from source on Unix
If you downloaded the source distribution, you need at least the
following to build the executable:
<ul>
<li>Troll Tech's GUI toolkit
<A HREF="http://www.trolltech.com/products/qt.html">Qt</A>
\latexonly(see {\tt http://www.trolltech.com/products/qt.html})\endlatexonly.
\addindex Qt
You can download either version 1.44 or version 2.1.x.
If want to build the GUI front-end you will need Qt 2.1.x. If you do
not need it, using Qt 1.44 will result in a somewhat smaller executable.
<li>The <a href="ftp://prep.ai.mit.edu/pub/gnu">GNU</a> tools
flex, bison and make
\addindex flex
......@@ -49,14 +52,18 @@ To take full advantage of doxygen's features the following additional
tools should be installed.
<ul>
<li>Troll Tech's GUI toolkit version 2.x.y
<A HREF="http://www.trolltech.com/products/qt.html">Qt</A>
\latexonly(see {\tt http://www.trolltech.com/products/qt.html})\endlatexonly.
\addindex Qt
This is needed to build the GUI front-end.
<li>A \f$\mbox{\LaTeX}\f$ distribution: for instance
<a href="http://www.tug.org">teTeX 1.0</a>.<br>
This is needed for generating LaTeX, Postscript, and PDF output.
<li><a href="http://www.research.att.com/sw/tools/graphviz/">
the Graph visualization toolkit version 1.5</a><br>
Needed for the include dependency graphs,
the graphical inheritance graphs,
and the collaboration graphs.
the graphical inheritance graphs, and the collaboration graphs.
<li>The ghostscript interpreter.
</ul>
......@@ -76,8 +83,8 @@ Compilation is now done by performing the following steps:
sh ./configure
\endverbatim
The script tries to determine the platform you use, the location
of the Qt library, the make tool (which \e must be GNU make) and the perl
The script tries to determine the platform you use, the make tool
(which \e must be GNU make) and the perl
interpreter. It will report what it finds.
To override the auto detected platform and compiler you can run
......@@ -331,17 +338,36 @@ doxygen for Windows.
Here is what is required:
<ul>
<li>WinZip to unpack the tar source distribution. This can be found at
http://www.winzip.com
http://www.winzip.com/ .
The good, tested, and free alternative is the <code>tar</code> utility
supplied with <a href="http://sourceware.cygnus.com/cygwin/">cygwin
tools</a>. Anyway, the cygwin's flex, bison, and sed are also
recommended below.
Notice (not related to tar): The good alternative to the WinZip,
concerning the zipping/unzipping are the Zip/UnZip utilities by
Info-ZIP which are available for free from
ftp://ftp.freesoftware.com/pub/infozip/index.html .
There also are archives with binaries for Windows. The tip is to
download the unz540xN.exe and zip23xN.zip (they were used without
problems here) which
contain UnZip, Zip, and other auxiliary (but not necessary)
utilities related to the UnZip and Zip.
It may be the case that
<li>Microsoft Visual C++ (I only tested with version 6.0).
Use the <code>vcvars32.bat</code> batch file to set the environment
variables (if you did not select to do this automatically during
installation).
<li>Perl 5.0 or higher for Windows. This can be download from:
http://www.ActiveState.com/Products/ActivePerl/
<li>The GNU tools flex, bison and sed.
<li>The GNU tools flex, bison, and sed.
To get these working on Windows you should install the
<a href="http://sourceware.cygnus.com/cygwin/">cygwin tools</a>
\latexonly(see {\tt http://sourceware.cygnus.com/cygwin/})\endlatexonly.
<a href="http://sources.redhat.com/cygwin/">cygwin tools</a>
\latexonly(see {\tt http://sources.redhat.com/cygwin/})\endlatexonly.
Make sure the <code>BISONLIB</code> environment variable points to the
location where the files <code>bison.simple</code> and
......@@ -349,55 +375,67 @@ Here is what is required:
Also make sure the tools are available from a dos box, by adding
the directory they are in to the search path.
<li>A professional license of
For those of you who are very new to cygwin (if you are going to
install it from scratch), you should notice that there is an
archive file <code>bootstrap.zip</code> which also contains the
<code>tar</code> utility (<code>tar.exe</code>), <code>gzip</code>
utilities, and the <code>cygwin1.dll</code> core. This also means
that you have the <code>tar</code> in hands from the start. It
can be used to unpack the tar source distribution instead of
using WinZip -- as mentioned at the beginning of this list of
steps.
<li>Since Doxygen-1.2.2-20001015, the distribution includes the part
of Qt-2.2.0 that is needed for compilation of doxygen, doxytag,
and doxysearch. The missing files for Windows were also created.
This allows compilation of doxygen on systems without X11 or the
full Qt. For doxywizard Qt-2.2 is still required however.
You may be interested in the professional license of
<A HREF="http://www.trolltech.com/products/qt.html">Qt for Windows</A>
\latexonly\par (see {\tt http://www.trolltech.com/products/qt.html})\endlatexonly.
\latexonly\par (see
{\tt http://www.trolltech.com/products/qt.html})\endlatexonly.
If you do not have that and you can live without the GUI front-end
you can also download Qt-1.44 for X11. Doxygen only the depends on
the tools section of the Qt library, which happens also to compile
on Windows. (Qt version 2.1.x does not work anymore, at least not
without adding some window's specific code).
Now create the following directories:
\verbatim
qtools/src
qtools/include
qtools/lib
\endverbatim
Copy the contents of the <code>src/tools</code> directory of the
Qt-1.44 for X11 archive to <code>qtools/src</code>. Also copy the include
files in <code>src/tools</code> to <code>qtools/include</code>. Create a
static library project resulting in <code>qtools/lib/qt.lib</code> and
add the files in <code>qtools/src</code> to that project. Then
build the library and set the environment variable <code>QTDIR</code>
to the absolute path of the qtools directory.
<li>To generate LaTeX documentation or formulas in HTML you need the tools:
latex, dvips and gswin32
To get these working under Windows install the fpTeX distribution
You can download it at:
<li>To generate LaTeX documentation or formulas in HTML you need the tools:
<code>latex</code>, <code>dvips</code> and <code>gswin32</code>.
To get these working under Windows
install the fpTeX distribution You can download it at:
ftp://ctan.tug.org/tex-archive/systems/win32/web2c/fptex-0.3/
Make sure the tools are available from a dos box, by adding the
directory they are in to the search path.
For your information, the LaTeX is freely available set of so
called macros and styles on the top of the famous TeX program
(by famous Donald Knuth) and the accompanied utilities (all
available for free). It is used to for high quality
typesetting. The result -- in the form of so called
<code>DVI</code> (DeVice Independent) file -- can be printed or
displayed on various devices preserving exactly the same look up
to the capability of the device. The <code>dvips</code> allows you
to convert the <code>dvi</code> to the high quality PostScript
(i.e. PostScript that can be processed by utilities like
<code>psnup</code>, <code>psbook</code>, <code>psselect</code>,
and others). The derived version of TeX (the pdfTeX) can be used
to produce PDF output instead of DVI, or the PDF can be produced
from PostScript using the utility <code>ps2pdf</code>.
<li>If you want to generate compressed HTML help
(see \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP") in the
config file, then you need the Microsoft HTML help workshop.
You can download it at:
http://msdn.microsoft.com/workshop/author/htmlhelp
<li>If you used WinZip to extract the tar archive it will (apparently) not
create empty folders, so you have to add the folders
<code>objects</code> and <code>bin</code> manually in the root of the
distribution before compiling.
<li><a href="http://www.research.att.com/sw/tools/graphviz/">
the Graph visualization toolkit version 1.5</a><br>
Needed for the include dependency graphs, the graphical inheritance graphs,
and the collaboration graphs.<br>
and the collaboration graphs.
</ul>
Compilation is now done by performing the following steps:
......@@ -406,10 +444,15 @@ Compilation is now done by performing the following steps:
<li>Open a dos box.
Make sure all tools (i.e. <code>nmake</code>, <code>latex</code>,
<code>gswin32</code>, <code>dvips</code>, <code>sed</code>,
<code>flex</code>, <code>bison</code>,
<code>cl</code>, <code>rm</code> and <code>perl</code>), are accessible from the command-line
(add them to the PATH environment variable if needed).
<code>flex</code>, <code>bison</code>, <code>cl</code>,
<code>rm</code>, and <code>perl</code>), are accessible from
the command-line (add them to the PATH environment variable if
needed).
Notice: The use of LaTeX is optional and only needed for compilation
of the documentation into PostScript or PDF.
It is \e not needed for compiling the doxygen's binaries.
<li>goto the doxygen root dir and type:
\verbatim
......@@ -421,29 +464,28 @@ Compilation is now done by performing the following steps:
<code>doxysearch.exe</code> (The compiler should not produce any
serious warnings or errors).
<li>To build the examples type:
\verbatim
nmake examples
\endverbatim
<li>To generate the HTML documentation type:
<li>To build the examples, go to the <code>examples</code> subdirectory
and type:
\verbatim
nmake docs
nmake
\endverbatim
The generated docs are located in the html directory.
<li>
To generate the postscript and PDF manual type:
<li>To generate the doxygen documentation, do ensure, that the
<code>html</code> and <code>latex</code> subdirectories exist.
Then go to the <code>doc</code> subdirectory and type:
\verbatim
nmake pdf
doxygen
nmake
\endverbatim
The manual should now be in <code>latex/doxygen_manual.pdf</code>
The generated docs int HTML are located in the <code>html</code>
subdirectory.
The sources for LaTeX documentation are located in <code>latex</code>
subdirectory. From those sources, the DVI, PostScript, and PDF
documentation can be generated.
</ol>
\subsection install_bin_windows Installating the binaries on Windows
......
......@@ -46,8 +46,8 @@ Here is a list of the languages and their current maintainers:
Jens Breitenstein
</TD>
<TD>
<a href="mailto:j@NOSPAM.js-b.de">
j@NOSPAM.js-b.de</a>
<a href="mailto:Jens.Breitenstein@NOSPAM.tlc.de">
Jens.Breitenstein@NOSPAM.tlc.de</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -227,7 +227,7 @@ Here is a list of the languages and their current maintainers:
\hline
{\bf Language} & {\bf Maintainer} & {Contact address} \\
\hline
German & Jens Breitenstein & {\tt j@jb-s.de} \\
German & Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} \\
\hline
French & Christophe Bordeux & {\tt bordeux@lig.di.epfl.ch} \\
\hline
......
......@@ -168,7 +168,9 @@ PREDEFINED = DECLARE_REGISTRY_RESOURCEID=// \
"ATL_NO_VTABLE= "\
"__declspec(a)= "\
BEGIN_CONNECTION_POINT_MAP=/* \
END_CONNECTION_POINT_MAP=*///
END_CONNECTION_POINT_MAP=*/// \
"DECLARE_AGGREGATABLE(Class)= " \
"DECLARE_REGISTRY_RESOURCEID(id)= "
\endverbatim
As you can see doxygen's preprocessor is quite powerful, but if you want
......
Name: doxygen
Version: 1.2.2-20001015
Version: 1.2.3
Summary: documentation system for C, C++ and IDL
Release: 1
Source0: doxygen-%{version}.src.tar.gz
......
......@@ -727,7 +727,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ClassDef *cd=bcd->classDef;
if (cd->isLinkable())
{
if (!Config::genTagFile.isEmpty()) tagFile << cd->getOutputFileBase() << "?";
if (!Config::genTagFile.isEmpty()) tagFile << cd->name() << "?";
ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,cd->name()+bcd->templSpecifiers);
}
else
......
......@@ -127,12 +127,9 @@ static QCString g_saveType;
* is TRUE. If a definition starts at the current line, then the line
* number is linked to the documentation of that definition.
*/
static void startCodeLine(OutputList &ol)
static void startCodeLine()
{
if (g_currentFontClass)
{
g_code->endFontClass();
}
//if (g_currentFontClass) { g_code->endFontClass(); }
if (g_sourceFileDef)
{
QCString lineNumber,lineAnchor;
......@@ -149,25 +146,32 @@ static void startCodeLine(OutputList &ol)
g_searchingForBody = TRUE;
g_bodyCurlyCount = 0;
if (g_currentMemberDef) anchor=g_currentMemberDef->anchor();
ol.startCodeAnchor(lineAnchor);
ol.writeCodeLink(d->getReference(),d->getOutputFileBase(),
g_code->startCodeAnchor(lineAnchor);
g_code->writeCodeLink(d->getReference(),d->getOutputFileBase(),
anchor,lineNumber);
ol.endCodeAnchor();
ol.codify(" ");
g_code->endCodeAnchor();
g_code->codify(" ");
}
else
{
ol.codify(lineNumber);
ol.codify(" ");
g_code->codify(lineNumber);
g_code->codify(" ");
}
}
ol.startCodeLine();
g_code->startCodeLine();
if (g_currentFontClass)
{
g_code->startFontClass(g_currentFontClass);
}
}
static void endCodeLine()
{
if (g_currentFontClass) { g_code->endFontClass(); }
g_code->endCodeLine();
}
/*! write a code fragment `text' that may span multiple lines, inserting
* line numbers for each line.
*/
......@@ -185,10 +189,10 @@ static void codifyLines(char *text)
g_yyLineNr++;
*(p-1)='\0';
g_code->codify(sp);
g_code->endCodeLine();
endCodeLine();
if (g_yyLineNr<g_inputLines)
{
startCodeLine(*g_code);
startCodeLine();
}
}
else
......@@ -219,10 +223,10 @@ static void writeMultiLineCodeLink(OutputList &ol,
g_yyLineNr++;
*(p-1)='\0';
ol.writeCodeLink(ref,file,anchor,sp);
ol.endCodeLine();
endCodeLine();
if (g_yyLineNr<g_inputLines)
{
startCodeLine(ol);
startCodeLine();
}
}
else
......@@ -1241,10 +1245,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
}
<RemoveSpecialCComment>"*/"{B}*\n({B}*\n)*({B}*(("//@"[{}])|("/*@"[{}]"*/")){B}*\n)? {
g_yyLineNr+=QCString(yytext).contains('\n');
g_code->endCodeLine();
endCodeLine();
if (g_yyLineNr<g_inputLines)
{
startCodeLine(*g_code);
startCodeLine();
}
if (g_lastSpecialCContext==SkipCxxComment)
{ // force end of C++ comment here
......@@ -1267,10 +1271,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
if (Config::stripCommentsFlag)
{
g_yyLineNr+=((QCString)yytext).contains('\n');
g_code->endCodeLine();
endCodeLine();
if (g_yyLineNr<g_inputLines)
{
startCodeLine(*g_code);
startCodeLine();
}
}
else
......@@ -1284,10 +1288,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
if (Config::stripCommentsFlag)
{
g_yyLineNr+=2;
g_code->endCodeLine();
endCodeLine();
if (g_yyLineNr<g_inputLines)
{
startCodeLine(*g_code);
startCodeLine();
}
}
else
......@@ -1320,10 +1324,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
if (Config::stripCommentsFlag)
{
g_yyLineNr++;
g_code->endCodeLine();
endCodeLine();
if (g_yyLineNr<g_inputLines)
{
startCodeLine(*g_code);
startCodeLine();
}
}
else
......@@ -1355,10 +1359,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
if (Config::stripCommentsFlag)
{
g_yyLineNr++;
g_code->endCodeLine();
endCodeLine();
if (g_yyLineNr<g_inputLines)
{
startCodeLine(*g_code);
startCodeLine();
}
}
else
......@@ -1527,7 +1531,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
g_bracketCount = 0;
g_exampleFile = convertFileName(g_exampleName)+"-example";
g_includeCodeFragment = inlineFragment;
startCodeLine(*g_code);
startCodeLine();
g_type.resize(0);
g_name.resize(0);
g_args.resize(0);
......@@ -1537,7 +1541,6 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
BEGIN( Body );
codeYYlex();
endFontClass();
//if (g_yyLineNr<=g_inputLines) code->endCodeLine();
ol+=*g_code;
delete g_code;
return;
......
/* This file was generated by configgen on Tue Oct 10 22:16:03 2000
/* This file was generated by configgen on Sat Oct 28 15:42:39 2000
* from config_templ.h
*
* DO NOT EDIT!
......@@ -84,6 +84,7 @@ struct Config
static QStrList examplePatternList; // list of example patterns
static QStrList imagePath; // list of image paths
static QCString inputFilter; // a filter command that is applied to input files
static bool filterForSourceFlag; // do we filter source files?
static bool alphaIndexFlag; // should an alphabetical index be generated?
static int colsInAlphaIndex; // number of columns in the alphabetical index
static QStrList ignorePrefixList; // list of prefixes to ignore for the alphabetical index
......@@ -95,6 +96,7 @@ struct Config
static bool htmlAlignMemberFlag; // align members in HTML using tables.
static bool htmlHelpFlag; // should html help files be generated?
static bool noIndexFlag; // generate condensed index flag
static int enumValuesPerLine; // number of enum values that are put on one line
static bool generateLatex; // generate Latex output
static QCString latexOutputDir; // the directory to put the Latex files
static bool compactLatexFlag; // generate compact LaTeX documentation.
......
/* This file was generated by configgen on Tue Oct 10 22:16:03 2000
/* This file was generated by configgen on Sat Oct 28 15:42:39 2000
* from config_templ.l
*
* DO NOT EDIT!
......@@ -121,6 +121,7 @@ QStrList Config::examplePath;
QStrList Config::examplePatternList;
QStrList Config::imagePath;
QCString Config::inputFilter;
bool Config::filterForSourceFlag = FALSE;
bool Config::alphaIndexFlag = FALSE;
int Config::colsInAlphaIndex = 5;
QStrList Config::ignorePrefixList;
......@@ -132,6 +133,7 @@ QCString Config::htmlStyleSheet;
bool Config::htmlAlignMemberFlag = TRUE;
bool Config::htmlHelpFlag = FALSE;
bool Config::noIndexFlag = FALSE;
int Config::enumValuesPerLine = 4;
bool Config::generateLatex = TRUE;
QCString Config::latexOutputDir = "latex";
bool Config::compactLatexFlag = FALSE;
......@@ -211,6 +213,7 @@ static int includeDepth;
static QCString tabSizeString;
static QCString colsInAlphaIndexString;
static QCString enumValuesPerLineString;
static QCString maxDotGraphWidthString;
static QCString maxDotGraphHeightString;
......@@ -253,8 +256,12 @@ static FILE *tryPath(const char *path,const char *fileName)
return 0;
}
static void substEnvVarsInStrList(QStrList &sl);
static void substEnvVarsInString(QCString &s);
static FILE *findFile(const char *fileName)
{
substEnvVarsInStrList(includePathList);
char *s=includePathList.first();
while (s) // try each of the include paths
{
......@@ -275,6 +282,7 @@ static void readIncludeFile(const char *incName)
}
QCString inc = incName;
substEnvVarsInString(inc);
inc = inc.stripWhiteSpace();
uint incLen = inc.length();
if (inc.at(0)=='"' && inc.at(incLen-1)=='"') // strip quotes
......@@ -389,6 +397,7 @@ static void readIncludeFile(const char *incName)
<Start>"IMAGE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; }
<Start>"IMAGE_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::imagePath; elemStr=""; }
<Start>"INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&Config::inputFilter; s->resize(0); }
<Start>"FILTER_SOURCE_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::filterForSourceFlag; }
<Start>"ALPHABETICAL_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::alphaIndexFlag; }
<Start>"COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); }
<Start>"IGNORE_PREFIX"[ \t]*"=" { BEGIN(GetStrList); l=&Config::ignorePrefixList; l->clear(); elemStr=""; }
......@@ -401,6 +410,7 @@ static void readIncludeFile(const char *incName)
<Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; }
<Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; }
<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; }
<Start>"ENUM_VALUES_PER_LINE"[ \t]*"=" { BEGIN(GetString); s=&enumValuesPerLineString; s->resize(0); }
<Start>"GENERATE_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateLatex; }
<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); }
<Start>"COMPACT_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactLatexFlag; }
......@@ -678,6 +688,7 @@ void dumpConfig()
}
}
printf("inputFilter=`%s'\n",Config::inputFilter.data());
printf("filterForSourceFlag=`%d'\n",Config::filterForSourceFlag);
printf("# configuration options related to the alphabetical class index\n");
printf("alphaIndexFlag=`%d'\n",Config::alphaIndexFlag);
printf("colsInAlphaIndex=`%d'\n",Config::colsInAlphaIndex);
......@@ -698,6 +709,7 @@ void dumpConfig()
printf("htmlAlignMemberFlag=`%d'\n",Config::htmlAlignMemberFlag);
printf("htmlHelpFlag=`%d'\n",Config::htmlHelpFlag);
printf("noIndexFlag=`%d'\n",Config::noIndexFlag);
printf("enumValuesPerLine=`%d'\n",Config::enumValuesPerLine);
printf("# configuration options related to the LaTeX output\n");
printf("generateLatex=`%d'\n",Config::generateLatex);
printf("latexOutputDir=`%s'\n",Config::latexOutputDir.data());
......@@ -853,6 +865,7 @@ void Config::init()
Config::examplePatternList.clear();
Config::imagePath.clear();
Config::inputFilter.resize(0);
Config::filterForSourceFlag = FALSE;
Config::alphaIndexFlag = FALSE;
Config::colsInAlphaIndex = 5;
Config::ignorePrefixList.clear();
......@@ -864,6 +877,7 @@ void Config::init()
Config::htmlAlignMemberFlag = TRUE;
Config::htmlHelpFlag = FALSE;
Config::noIndexFlag = FALSE;
Config::enumValuesPerLine = 4;
Config::generateLatex = TRUE;
Config::latexOutputDir = "latex";
Config::compactLatexFlag = FALSE;
......@@ -1534,6 +1548,17 @@ void writeTemplateConfig(QFile *f,bool sl)
writeStringValue(t,Config::inputFilter);
t << "\n";
if (!sl)
{
t << "\n";
t << "# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using \n";
t << "# INPUT_FILTER) will be used to filter the input files when producing source \n";
t << "# files to browse. \n";
t << "\n";
}
t << "FILTER_SOURCE_FILES = ";
writeBoolValue(t,Config::filterForSourceFlag);
t << "\n";
if (!sl)
{
t << "\n";
}
......@@ -1671,6 +1696,16 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::noIndexFlag);
t << "\n";
if (!sl)
{
t << "\n";
t << "# This tag can be used to set the number of enum values (range [1..20]) \n";
t << "# that doxygen will group on one line in the generated HTML documentation. \n";
t << "\n";
}
t << "ENUM_VALUES_PER_LINE = ";
writeIntValue(t,Config::enumValuesPerLine);
t << "\n";
if (!sl)
{
t << "\n";
}
......@@ -2286,6 +2321,23 @@ void configStrToVal()
}
Config::colsInAlphaIndex=cols;
}
if (enumValuesPerLineString.isEmpty())
{
Config::enumValuesPerLine=4;
}
else
{
bool ok;
int cols = enumValuesPerLineString.toInt(&ok);
if (!ok || cols<1 || cols>20)
{
warn_cont("Warning: argument of ENUM_VALUES_PER_LINE is not a valid number in the range [1..20]!\n"
"Using the default of 4!\n");
cols = 4;
}
Config::enumValuesPerLine=cols;
}
if (maxDotGraphWidthString.isEmpty())
{
......@@ -2297,7 +2349,7 @@ void configStrToVal()
int width =maxDotGraphWidthString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [100..30000]!\n"
"Using the default of 1024 pixels!\n");
width=1024;
}
......@@ -2322,7 +2374,7 @@ void configStrToVal()
int height =maxDotGraphHeightString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [100..30000]!\n"
"Using the default of 1024 pixels!\n");
height=1024;
}
......
......@@ -136,7 +136,7 @@ ID ([a-z_A-Z][a-z_A-Z0-9]*)|(@[0-9]+)
<Start>{B}+ {
addType();
}
<Start>{B}*"("({ID}"::")*{B}*"*" {
<Start>{B}*"("({ID}"::")*{B}*"*"({B}*("const"|"volatile"){B}+)? {
addType();
QCString text=yytext;
type+=text.stripWhiteSpace();
......
......@@ -20,7 +20,7 @@
#include "qtbc.h"
#include <qdict.h>
#include "util.h"
#include <qlist.h>
class FileDef;
......
......@@ -1307,6 +1307,7 @@ void buildVarList(Entry *root)
) ||
(root->section==Entry::FUNCTION_SEC && // function variable
!root->type.isEmpty() && root->type.find(re,0)!=-1 &&
// special case to catch function pointers
root->type.find("operator")==-1 && root->type.find(")(")==-1
)
)
......
......@@ -422,11 +422,6 @@ void FileDef::writeDocumentation(OutputList &ol)
/*! Write a source listing of this file to the output */
void FileDef::writeSource(OutputList &ol)
{
//QCString fn=name();
//if (Config::fullPathNameFlag)
//{
// fn.prepend(stripFromPath(getPath().copy()));
//}
ol.disableAllBut(OutputGenerator::Html);
startFile(ol,sourceName(),docname+" Source File");
startTitle(ol,0);
......@@ -440,11 +435,9 @@ void FileDef::writeSource(OutputList &ol)
ol.endTextLink();
}
//parseText(ol,theTranslator->trVerbatimText(incFile->name()));
//ol.writeRuler();
initParseCodeContext();
ol.startCodeFragment();
parseCode(ol,0,fileToString(absFilePath()),FALSE,0,this);
parseCode(ol,0,fileToString(absFilePath(),TRUE),FALSE,0,this);
ol.endCodeFragment();
endFile(ol);
ol.enableAll();
......
......@@ -1199,7 +1199,7 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections)
{
char lastChar=0;
bool first=TRUE;
ol.startItemList();
//ol.startItemList();
MemberName *mn=functionNameList.first();
while (mn)
{
......
......@@ -36,6 +36,7 @@
#include "translator_ro.h"
#include "translator_si.h"
#include "translator_cn.h"
#include "translator_no.h"
#endif
#define L_EQUAL(a) !stricmp(langName,a)
......
......@@ -1198,7 +1198,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
bmd->anchor(),bcd->name());
if ( bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ )
{
writePageRef(ol,bcd->name(),bmd->anchor());
writePageRef(ol,bcd->getOutputFileBase(),bmd->anchor());
}
}
else
......@@ -1207,7 +1207,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
0,bcd->name());
if (bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ )
{
writePageRef(ol,bcd->name(),0);
writePageRef(ol,bcd->getOutputFileBase(),0);
}
}
parseText(ol,reimplFromLine.right(
......@@ -1273,7 +1273,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
bmd->anchor(),bcd->name());
if (bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ )
{
writePageRef(ol,bcd->name(),bmd->anchor());
writePageRef(ol,bcd->getOutputFileBase(),bmd->anchor());
}
}
++mli;
......
......@@ -302,7 +302,6 @@ void MemberList::writePlainDeclarations(OutputList &ol,
typeDecl.writeChar(' ');
}
const uint MAX_ENUM_VALUES_FOR_ONE_LINE = 4;
int enumMemCount=0;
typeDecl.docify("{ ");
......@@ -313,8 +312,8 @@ void MemberList::writePlainDeclarations(OutputList &ol,
while (fmd)
{
/* in html we start a new line after a number of items */
if (fmdl->count()>MAX_ENUM_VALUES_FOR_ONE_LINE
&& (enumMemCount%MAX_ENUM_VALUES_FOR_ONE_LINE)==0
if (fmdl->count()>(uint)Config::enumValuesPerLine
&& (enumMemCount%(uint)Config::enumValuesPerLine)==0
)
{
typeDecl.pushGeneratorState();
......@@ -348,7 +347,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
typeDecl.enable(OutputGenerator::Man);
enumMemCount++;
}
if (fmdl->count()>MAX_ENUM_VALUES_FOR_ONE_LINE)
if (fmdl->count()>(uint)Config::enumValuesPerLine)
{
typeDecl.pushGeneratorState();
typeDecl.disableAllBut(OutputGenerator::Html);
......
......@@ -92,6 +92,7 @@ static int g_findDefArgContext;
static QCString g_lastGuardName;
static QCString g_incName;
static QCString g_guardExpr;
static int g_curlyCount;
static void setFileName(const char *name)
{
......@@ -818,12 +819,12 @@ void addDefine()
static void outputChar(char c)
{
if (g_includeStack.isEmpty()) g_outputBuf->addChar(c);
if (g_includeStack.isEmpty() || g_curlyCount>0) g_outputBuf->addChar(c);
}
static void outputArray(const char *a,int len)
{
if (g_includeStack.isEmpty()) g_outputBuf->addArray(a,len);
if (g_includeStack.isEmpty() || g_curlyCount>0) g_outputBuf->addArray(a,len);
}
static void readIncludeFile(const QCString &inc)
......@@ -917,6 +918,7 @@ BN [ \t\r\n]
%x SkipCommand
%x SkipLine
%x CopyLine
%x CopyString
%x Include
%x IncludeID
%x DefName
......@@ -967,6 +969,41 @@ BN [ \t\r\n]
outputArray(yytext,yyleng);
}
*/
<CopyLine>"{" { // count brackets inside the main file
if (g_includeStack.isEmpty())
g_curlyCount++;
outputChar(*yytext);
}
<CopyLine>"}" { // count brackets inside the main file
if (g_includeStack.isEmpty())
g_curlyCount--;
outputChar(*yytext);
ASSERT(g_curlyCount>=0);
}
<CopyLine>"'"\\[0-7]{1,3}"'" {
outputArray(yytext,yyleng);
}
<CopyLine>"'"\\."'" {
outputArray(yytext,yyleng);
}
<CopyLine>"'"."'" {
outputArray(yytext,yyleng);
}
<CopyLine>\" {
outputChar(*yytext);
BEGIN( CopyString );
}
<CopyString>[^\"\\]+ {
outputArray(yytext,yyleng);
}
<CopyString>\\. {
outputArray(yytext,yyleng);
}
<CopyString>\" {
outputChar(*yytext);
BEGIN( CopyLine );
}
<CopyLine>{ID}/{BN}*"(" {
Define *def=0;
//printf("Search for define %s\n",yytext);
......@@ -1726,6 +1763,7 @@ void preprocessFile(const char *fileName,BufStr &output)
uint orgOffset=output.curPos();
//#endif
g_curlyCount=0;
g_outputBuf=&output;
g_includeStack.setAutoDelete(TRUE);
g_includeStack.clear();
......
......@@ -1615,7 +1615,14 @@ TITLE [tT][iI][tT][lL][eE]
}
<FuncPtr>{SCOPENAME} {
current->name = yytext;
BEGIN( EndFuncPtr );
if (current->name=="const" || current->name=="volatile")
{
funcPtrType += current->name;
}
else
{
BEGIN( EndFuncPtr );
}
}
<FuncPtr>. {
//printf("Error: FuncPtr `%c' unexpected at line %d of %s\n",*yytext,yyLineNr,yyFileName);
......@@ -2337,7 +2344,7 @@ TITLE [tT][iI][tT][lL][eE]
}
<Comment>. { current->program += *yytext ; }
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits>("//"{B}*)?"/*!" {
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits,Bases>("//"{B}*)?"/*!" {
//printf("Start doc block at %d\n",yyLineNr);
removeSlashes=(yytext[1]=='/');
tmpDocType=-1;
......@@ -2350,7 +2357,7 @@ TITLE [tT][iI][tT][lL][eE]
current->inside = current_root->name+"::";
BEGIN( Doc );
}
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits>("//"{B}*)?"/**"/[^/*] {
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits,Bases>("//"{B}*)?"/**"/[^/*] {
removeSlashes=(yytext[1]=='/');
lastDocContext = YY_START;
if (current_root->section & Entry::SCOPE_MASK)
......@@ -2382,7 +2389,7 @@ TITLE [tT][iI][tT][lL][eE]
}
}
}
<FindMembers,FindFields,MemberSpec,FuncQual,Operator,ClassVar>"//!" {
<FindMembers,FindFields,MemberSpec,FuncQual,Operator,ClassVar,Bases>"//!" {
current->brief.resize(0);
tmpDocType=-1;
lastDocContext = YY_START;
......@@ -2390,7 +2397,7 @@ TITLE [tT][iI][tT][lL][eE]
current->inside = current_root->name+"::";
BEGIN( LineDoc );
}
<FindMembers,FindFields,MemberSpec,FuncQual,Operator,ClassVar>"///"/[^/] {
<FindMembers,FindFields,MemberSpec,FuncQual,Operator,ClassVar,Bases>"///"/[^/] {
current->brief.resize(0);
tmpDocType=-1;
lastDocContext = YY_START;
......@@ -3181,9 +3188,8 @@ TITLE [tT][iI][tT][lL][eE]
current->brief=current->brief.stripWhiteSpace();
BEGIN( lastBriefContext );
}
<ClassDocBrief>{BS}/{CMD}("brief"|"short"){BN}+ {
<ClassDocBrief>{BS}{CMD}("brief"|"short"){BN}+ {
lastBriefContext=YY_START;
BEGIN( ClassDocBrief );
}
<ClassDocBrief>. { current->brief += *yytext; }
<ClassDocDefine>{ID}/"(" {
......
......@@ -70,6 +70,9 @@
// - Update for "new since 1.2.1" version. The text of trDCOPMethods()
// was translated rather blindly (not knowing what exactly
// the DCOP means).
//
// 2000/10/17 (Petr Prikryl)
// - Update for "new since 1.2.2" version.
//
// Notices:
// --------
......@@ -1108,6 +1111,21 @@ class TranslatorCzech : public Translator
{
return Decode("Metody DCOP");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.2
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for IDL properties */
virtual QCString trProperties()
{
return Decode("Vlastnosti");
}
/*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation()
{
return Decode("Dokumentace k vlastnosti");
}
};
#endif // TRANSLATOR_CZ_H
......@@ -25,6 +25,9 @@ class TranslatorJapanese : public Translator
public:
QCString idLanguage()
{ return "japanese"; }
QCString idLanguageCharset()
{ return "euc-jp"; }
/*! returns the name of the package that is included by LaTeX */
QCString latexBabelPackage()
{ return "a4j"; }
......
......@@ -48,6 +48,11 @@
extern char **environ;
#endif
#if defined(_MSC_VER) || defined(__BORLANDC__)
#define popen _popen
#define pclose _pclose
#endif
//------------------------------------------------------------------------
// TextGeneratorOLImpl implementation
//------------------------------------------------------------------------
......@@ -954,7 +959,7 @@ void setAnchors(char id,MemberList *ml,int groupId)
//----------------------------------------------------------------------------
// read a file with `name' to a string.
QCString fileToString(const char *name)
QCString fileToString(const char *name,bool filter)
{
if (name==0 || name[0]==0) return 0;
QFile f;
......@@ -989,19 +994,47 @@ QCString fileToString(const char *name)
err("Error: file `%s' not found\n",name);
return "";
}
f.setName(name);
fileOpened=f.open(IO_ReadOnly);
if (fileOpened)
if (Config::inputFilter.isEmpty() || !filter)
{
int fsize=f.size();
QCString contents(fsize+2);
f.readBlock(contents.data(),fsize);
if (fsize==0 || contents[fsize-1]=='\n')
contents[fsize]='\0';
else
contents[fsize]='\n'; // to help the scanner
contents[fsize+1]='\0';
f.close();
f.setName(name);
fileOpened=f.open(IO_ReadOnly);
if (fileOpened)
{
int fsize=f.size();
QCString contents(fsize+2);
f.readBlock(contents.data(),fsize);
if (fsize==0 || contents[fsize-1]=='\n')
contents[fsize]='\0';
else
contents[fsize]='\n'; // to help the scanner
contents[fsize+1]='\0';
f.close();
return contents;
}
}
else // filter the input
{
QCString cmd=Config::inputFilter+" "+name;
FILE *f=popen(cmd,"r");
if (!f)
{
err("Error: could not execute filter %s\n",Config::inputFilter.data());
return "";
}
const int bSize=4096;
QCString contents(bSize);
int totalSize=0;
int size;
while ((size=fread(contents.data()+totalSize,1,bSize,f))==bSize)
{
totalSize+=bSize;
contents.resize(totalSize+bSize);
}
totalSize+=size+2;
contents.resize(totalSize);
contents.at(totalSize-2)='\n'; // to help the scanner
contents.at(totalSize-1)='\0';
pclose(f);
return contents;
}
}
......@@ -2340,7 +2373,8 @@ bool generateRef(OutputList &ol,const char *scName,
if (!rt && (md->isFunction() || md->isPrototype() || md->isSignal() || md->isSlot() || md->isDefine()))
{
if (argsStr.isEmpty() && (!md->isDefine() || md->argsString()!=0))
ol.writeString("()");
// ol.writeString("()")
;
else
ol.docify(argsStr);
}
......@@ -2732,7 +2766,7 @@ void extractNamespaceName(const QCString &scopeName,
{
QCString clName=scopeName.copy();
//QCString nsName;
NamespaceDef *nd;
NamespaceDef *nd = 0;
if (!clName.isEmpty() && (nd=getResolvedNamespace(clName)) && getClass(clName)==0)
{ // the whole name is a namespace (and not a class)
namespaceName=nd->name().copy();
......
......@@ -83,7 +83,7 @@ extern void linkifyText(const TextGeneratorIntf &ol,const char *clName,const cha
const char *text,bool autoBreak=FALSE,bool external=TRUE);
extern void setAnchors(char id,MemberList *ml,int groupId=-1);
extern QCString fileToString(const char *name);
extern QCString fileToString(const char *name,bool filter=FALSE);
extern QCString dateToString(bool);
extern bool getDefs(const QCString &scopeName,
const QCString &memberName,
......
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