summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2000-10-30 21:12:45 (GMT)
committerdimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2000-10-30 21:12:45 (GMT)
commit1f15cdfe735375f781fddf5e3e483887b7f481bd (patch)
tree7d5c1ef91e61313f10266a746afd0d903d1e5f2a
parent00340144fa3b240a602f008e01b6283fa7f1fd4e (diff)
downloadDoxygen-1f15cdfe735375f781fddf5e3e483887b7f481bd.zip
Doxygen-1f15cdfe735375f781fddf5e3e483887b7f481bd.tar.gz
Doxygen-1f15cdfe735375f781fddf5e3e483887b7f481bd.tar.bz2
Release-1.2.3
-rw-r--r--INSTALL4
-rw-r--r--Makefile.in2
-rw-r--r--README4
-rw-r--r--VERSION2
-rw-r--r--addon/configgen/config_templ.l26
-rw-r--r--addon/configgen/configgen.cpp22
-rw-r--r--addon/doxywizard/doxywizard_templ.cpp28
-rw-r--r--addon/doxywizard/doxywizard_templ.h1
-rw-r--r--addon/doxywizard/pixmaps.cpp34
-rw-r--r--addon/doxywizard/pixmaps.h1
-rwxr-xr-xconfigure10
-rw-r--r--doc/Makefile.win.in3
-rw-r--r--doc/commands.doc6
-rw-r--r--doc/config.doc32
-rw-r--r--doc/index.doc4
-rw-r--r--doc/install.doc168
-rw-r--r--doc/language.doc6
-rw-r--r--doc/preprocessing.doc4
-rw-r--r--packages/rpm/doxygen.spec2
-rw-r--r--src/classdef.cpp2
-rw-r--r--src/code.l59
-rw-r--r--src/config.h4
-rw-r--r--src/config.l58
-rw-r--r--src/declinfo.l2
-rw-r--r--src/define.h2
-rw-r--r--src/doxygen.cpp1
-rw-r--r--src/filedef.cpp9
-rw-r--r--src/index.cpp2
-rw-r--r--src/language.cpp1
-rw-r--r--src/memberdef.cpp6
-rw-r--r--src/memberlist.cpp7
-rw-r--r--src/pre.l42
-rw-r--r--src/scanner.l20
-rw-r--r--src/translator_cz.h18
-rw-r--r--src/translator_jp.h3
-rw-r--r--src/util.cpp64
-rw-r--r--src/util.h2
37 files changed, 479 insertions, 182 deletions
diff --git a/INSTALL b/INSTALL
index c9fffeb..740a762 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,6 +1,6 @@
-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)
diff --git a/Makefile.in b/Makefile.in
index 812c91b..d6b6096 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -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
diff --git a/README b/README
index c67bd3b..21c9314 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-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)
diff --git a/VERSION b/VERSION
index fdad0e7..0495c4a 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.2.2-20001015
+1.2.3
diff --git a/addon/configgen/config_templ.l b/addon/configgen/config_templ.l
index 98a688f..81d4acf 100644
--- a/addon/configgen/config_templ.l
+++ b/addon/configgen/config_templ.l
@@ -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;
}
diff --git a/addon/configgen/configgen.cpp b/addon/configgen/configgen.cpp
index c9d5a2d..95aab45 100644
--- a/addon/configgen/configgen.cpp
+++ b/addon/configgen/configgen.cpp
@@ -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");
//-----------------------------------------------------------------------------------------------
diff --git a/addon/doxywizard/doxywizard_templ.cpp b/addon/doxywizard/doxywizard_templ.cpp
index 00ed10c..4ba932a 100644
--- a/addon/doxywizard/doxywizard_templ.cpp
+++ b/addon/doxywizard/doxywizard_templ.cpp
@@ -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()
{
diff --git a/addon/doxywizard/doxywizard_templ.h b/addon/doxywizard/doxywizard_templ.h
index e0c228e..9df50bf 100644
--- a/addon/doxywizard/doxywizard_templ.h
+++ b/addon/doxywizard/doxywizard_templ.h
@@ -43,6 +43,7 @@ class Wizard : public QMainWindow
void quit();
void changed();
void about();
+ void runDoxygen(); // Micha
signals:
diff --git a/addon/doxywizard/pixmaps.cpp b/addon/doxywizard/pixmaps.cpp
index e3631c5..6ae7f60 100644
--- a/addon/doxywizard/pixmaps.cpp
+++ b/addon/doxywizard/pixmaps.cpp
@@ -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;
diff --git a/addon/doxywizard/pixmaps.h b/addon/doxywizard/pixmaps.h
index 6c0bb97..b95b75f 100644
--- a/addon/doxywizard/pixmaps.h
+++ b/addon/doxywizard/pixmaps.h
@@ -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
diff --git a/configure b/configure
index 9f5021a..7105cfb 100755
--- a/configure
+++ b/configure
@@ -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
diff --git a/doc/Makefile.win.in b/doc/Makefile.win.in
index fffaad7..fd2dbc7 100644
--- a/doc/Makefile.win.in
+++ b/doc/Makefile.win.in
@@ -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
diff --git a/doc/commands.doc b/doc/commands.doc
index 46f01f4..78ba52f 100644
--- a/doc/commands.doc
+++ b/doc/commands.doc
@@ -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>
diff --git a/doc/config.doc b/doc/config.doc
index 1d3046f..231cbe9 100644
--- a/doc/config.doc
+++ b/doc/config.doc
@@ -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
diff --git a/doc/index.doc b/doc/index.doc
index 0f7023f..682d921 100644
--- a/doc/index.doc
+++ b/doc/index.doc
@@ -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.
diff --git a/doc/install.doc b/doc/install.doc
index 3b0c6b2..1bb1dd2 100644
--- a/doc/install.doc
+++ b/doc/install.doc
@@ -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
diff --git a/doc/language.doc b/doc/language.doc
index 83787e3..8a6fcf6 100644
--- a/doc/language.doc
+++ b/doc/language.doc
@@ -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
diff --git a/doc/preprocessing.doc b/doc/preprocessing.doc
index 2e1ee36..2300525 100644
--- a/doc/preprocessing.doc
+++ b/doc/preprocessing.doc
@@ -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
diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec
index ee917cc..1410ae0 100644
--- a/packages/rpm/doxygen.spec
+++ b/packages/rpm/doxygen.spec
@@ -1,5 +1,5 @@
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
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 9289375..49846b6 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -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
diff --git a/src/code.l b/src/code.l
index 10d706f..9323361 100644
--- a/src/code.l
+++ b/src/code.l
@@ -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;
diff --git a/src/config.h b/src/config.h
index a85fc68..a3165d7 100644
--- a/src/config.h
+++ b/src/config.h
@@ -1,4 +1,4 @@
-/* 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.
diff --git a/src/config.l b/src/config.l
index 86b6578..d158cdb 100644
--- a/src/config.l
+++ b/src/config.l
@@ -1,4 +1,4 @@
-/* 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;
@@ -1536,6 +1550,17 @@ void writeTemplateConfig(QFile *f,bool sl)
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";
}
t << "#---------------------------------------------------------------------------\n";
t << "# configuration options related to the alphabetical class index\n";
@@ -1673,6 +1698,16 @@ void writeTemplateConfig(QFile *f,bool sl)
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";
}
t << "#---------------------------------------------------------------------------\n";
t << "# configuration options related to the LaTeX output\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;
}
diff --git a/src/declinfo.l b/src/declinfo.l
index a6cafc4..84e2abd 100644
--- a/src/declinfo.l
+++ b/src/declinfo.l
@@ -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();
diff --git a/src/define.h b/src/define.h
index 09e0140..060270e 100644
--- a/src/define.h
+++ b/src/define.h
@@ -20,7 +20,7 @@
#include "qtbc.h"
#include <qdict.h>
-#include "util.h"
+#include <qlist.h>
class FileDef;
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 621039d..6d390b5 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -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
)
)
diff --git a/src/filedef.cpp b/src/filedef.cpp
index 6ce4c86..c4fe0f1 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -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();
diff --git a/src/index.cpp b/src/index.cpp
index f470341..383b41f 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -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)
{
diff --git a/src/language.cpp b/src/language.cpp
index e7a9576..0711aa3 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -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)
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 1c2e940..7a20e12 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -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;
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index 3e7b7a0..17b9226 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -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);
diff --git a/src/pre.l b/src/pre.l
index f08aaa9..e18c61e 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -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();
diff --git a/src/scanner.l b/src/scanner.l
index a12189b..5d8484e 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -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}/"(" {
diff --git a/src/translator_cz.h b/src/translator_cz.h
index 9b758c4..bad2bf2 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -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
diff --git a/src/translator_jp.h b/src/translator_jp.h
index 650dc5d..4946379 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.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"; }
diff --git a/src/util.cpp b/src/util.cpp
index 02188c4..72701d2 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -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();
diff --git a/src/util.h b/src/util.h
index 2c1ab3d..edcebe8 100644
--- a/src/util.h
+++ b/src/util.h
@@ -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,