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. 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 ...@@ -24,7 +24,7 @@ distclean: clean
-rm -f src/Makefile.doxygen src/Makefile.doxytag src/Makefile.doxysearch qtools/Makefile.qtools -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 Makefile qtools/Makefile src/Makefile examples/Makefile doc/Makefile
-rm -f .makeconfig .tmakeconfig -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 -f src/version.cpp
-rm -r addon/configgen/Makefile addon/doxywizard/Makefile -rm -r addon/configgen/Makefile addon/doxywizard/Makefile
-rm -f addon/configgen/Makefile.configgen -rm -f addon/configgen/Makefile.configgen
......
DOXYGEN Version 1.2.2-20001015 DOXYGEN Version 1.2.3
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at ...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (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) ...@@ -140,8 +140,12 @@ static FILE *tryPath(const char *path,const char *fileName)
return 0; return 0;
} }
static void substEnvVarsInStrList(QStrList &sl);
static void substEnvVarsInString(QCString &s);
static FILE *findFile(const char *fileName) static FILE *findFile(const char *fileName)
{ {
substEnvVarsInStrList(includePathList);
char *s=includePathList.first(); char *s=includePathList.first();
while (s) // try each of the include paths while (s) // try each of the include paths
{ {
...@@ -162,6 +166,7 @@ static void readIncludeFile(const char *incName) ...@@ -162,6 +166,7 @@ static void readIncludeFile(const char *incName)
} }
QCString inc = incName; QCString inc = incName;
substEnvVarsInString(inc);
inc = inc.stripWhiteSpace(); inc = inc.stripWhiteSpace();
uint incLen = inc.length(); uint incLen = inc.length();
if (inc.at(0)=='"' && inc.at(incLen-1)=='"') // strip quotes if (inc.at(0)=='"' && inc.at(incLen-1)=='"') // strip quotes
...@@ -430,6 +435,23 @@ void configStrToVal() ...@@ -430,6 +435,23 @@ void configStrToVal()
} }
Config::colsInAlphaIndex=cols; 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()) if (maxDotGraphWidthString.isEmpty())
{ {
...@@ -441,7 +463,7 @@ void configStrToVal() ...@@ -441,7 +463,7 @@ void configStrToVal()
int width =maxDotGraphWidthString.toInt(&ok); int width =maxDotGraphWidthString.toInt(&ok);
if (!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"); "Using the default of 1024 pixels!\n");
width=1024; width=1024;
} }
...@@ -466,7 +488,7 @@ void configStrToVal() ...@@ -466,7 +488,7 @@ void configStrToVal()
int height =maxDotGraphHeightString.toInt(&ok); int height =maxDotGraphHeightString.toInt(&ok);
if (!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"); "Using the default of 1024 pixels!\n");
height=1024; height=1024;
} }
......
...@@ -775,8 +775,8 @@ void init() ...@@ -775,8 +775,8 @@ void init()
"information to generate all constant output in the proper language. \n" "information to generate all constant output in the proper language. \n"
"The default language is English, other supported languages are: \n" "The default language is English, other supported languages are: \n"
"Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n" "Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n"
"Korean, Hungarian, Spanish, Romanian, Russian, Croatian, Polish, \n" "Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian, \n"
"Portuguese and Slovene.\n" "Polish, Portuguese and Slovene.\n"
); );
ConfigString::addFixedValue("outputLanguage","Croatian"); ConfigString::addFixedValue("outputLanguage","Croatian");
ConfigString::addFixedValue("outputLanguage","Czech"); ConfigString::addFixedValue("outputLanguage","Czech");
...@@ -789,6 +789,7 @@ void init() ...@@ -789,6 +789,7 @@ void init()
ConfigString::addFixedValue("outputLanguage","Italian"); ConfigString::addFixedValue("outputLanguage","Italian");
ConfigString::addFixedValue("outputLanguage","Japanese"); ConfigString::addFixedValue("outputLanguage","Japanese");
ConfigString::addFixedValue("outputLanguage","Korean"); ConfigString::addFixedValue("outputLanguage","Korean");
ConfigString::addFixedValue("outputLanguage","Norwegian");
ConfigString::addFixedValue("outputLanguage","Romanian"); ConfigString::addFixedValue("outputLanguage","Romanian");
ConfigString::addFixedValue("outputLanguage","Russian"); ConfigString::addFixedValue("outputLanguage","Russian");
ConfigString::addFixedValue("outputLanguage","Polish"); ConfigString::addFixedValue("outputLanguage","Polish");
...@@ -1169,6 +1170,14 @@ void init() ...@@ -1169,6 +1170,14 @@ void init()
"to standard output. \n", "to standard output. \n",
ConfigString::File 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"); ConfigInfo::add( "Index","configuration options related to the alphabetical class index");
...@@ -1279,6 +1288,15 @@ void init() ...@@ -1279,6 +1288,15 @@ void init()
"the value YES disables it. \n" "the value YES disables it. \n"
); );
addDependency("noIndexFlag","generateHtml"); 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"); ConfigInfo::add( "LaTeX","configuration options related to the LaTeX output");
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
......
...@@ -126,6 +126,10 @@ Wizard::Wizard(int argc,char **argv) : ...@@ -126,6 +126,10 @@ Wizard::Wizard(int argc,char **argv) :
new QToolButton( QPixmap( filesave_xpm ), "Save File", QString::null, new QToolButton( QPixmap( filesave_xpm ), "Save File", QString::null,
this, SLOT(saveFile()), fileTools, "save file" ); 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 ); QWhatsThis::whatsThisButton( fileTools );
...@@ -142,10 +146,10 @@ Wizard::Wizard(int argc,char **argv) : ...@@ -142,10 +146,10 @@ Wizard::Wizard(int argc,char **argv) :
file->insertItem( "&Quit", this, SLOT(quit()), CTRL+Key_Q ); file->insertItem( "&Quit", this, SLOT(quit()), CTRL+Key_Q );
// Doxygen popupmenu // Doxygen popupmenu
//QPopupMenu* doxygen = new QPopupMenu; QPopupMenu* doxygen = new QPopupMenu;
//int itemIndex = doxygen->insertItem( "&Run" ); int itemIndex = doxygen->insertItem( QIconSet(QPixmap(rundoxygen_xpm)),
//doxygen->setWhatsThis ( itemIndex, "Run doxygen with the current configuration file..." ); "&Run", this, SLOT(runDoxygen()), CTRL+Key_R );
//doxygen->setItemEnabled( itemIndex, FALSE ); doxygen->setWhatsThis ( itemIndex, "Run doxygen with the current configuration file..." );
// Help popupmenu // Help popupmenu
QPopupMenu* help = new QPopupMenu; QPopupMenu* help = new QPopupMenu;
...@@ -154,7 +158,7 @@ Wizard::Wizard(int argc,char **argv) : ...@@ -154,7 +158,7 @@ Wizard::Wizard(int argc,char **argv) :
// menubar definition // menubar definition
menuBar()->insertItem( "&File", file ); menuBar()->insertItem( "&File", file );
//menuBar()->insertItem( "&Doxygen", doxygen ); menuBar()->insertItem( "&Doxygen", doxygen );
menuBar()->insertSeparator(); menuBar()->insertSeparator();
menuBar()->insertItem( "&Help", help ); menuBar()->insertItem( "&Help", help );
...@@ -262,10 +266,20 @@ void Wizard::saveAsFile() ...@@ -262,10 +266,20 @@ void Wizard::saveAsFile()
} }
saveConfig(configFileName); 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; hasChanged = FALSE;
refreshCaption(); refreshCaption();
} }
void Wizard::quit() void Wizard::quit()
{ {
......
...@@ -43,6 +43,7 @@ class Wizard : public QMainWindow ...@@ -43,6 +43,7 @@ class Wizard : public QMainWindow
void quit(); void quit();
void changed(); void changed();
void about(); void about();
void runDoxygen(); // Micha
signals: signals:
......
...@@ -201,4 +201,38 @@ static const char *filesave_xpm_data[] = ...@@ -201,4 +201,38 @@ static const char *filesave_xpm_data[] =
"b............." "b............."
}; };
const char **filesave_xpm = (const char **)filesave_xpm_data; 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; ...@@ -22,5 +22,6 @@ extern const char** del_xpm;
extern const char** update_xpm; extern const char** update_xpm;
extern const char** fileopen_xpm; extern const char** fileopen_xpm;
extern const char** filesave_xpm; extern const char** filesave_xpm;
extern const char** rundoxygen_xpm;
#endif #endif
...@@ -351,26 +351,26 @@ touch .tmakeconfig ...@@ -351,26 +351,26 @@ touch .tmakeconfig
if test "$f_shared" = NO; then if test "$f_shared" = NO; then
if test "$f_platform" = "osf1-cxx" -o "$f_platform" = "irix-n32"; then if test "$f_platform" = "osf1-cxx" -o "$f_platform" = "irix-n32"; then
cat >> .tmakeconfig <<EOF cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -non_shared TMAKE_LFLAGS += -non_shared
EOF EOF
elif test "$f_platform" = "solaris-cc"; then elif test "$f_platform" = "solaris-cc"; then
cat >> .tmakeconfig <<EOF cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -Bstatic TMAKE_LFLAGS += -Bstatic
EOF EOF
elif test "$f_platform" = "hpux-cc"; then elif test "$f_platform" = "hpux-cc"; then
cat >> .tmakeconfig <<EOF cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -noshared TMAKE_LFLAGS += -noshared
EOF EOF
else else
cat >> .tmakeconfig <<EOF cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -static TMAKE_LFLAGS += -static
EOF EOF
fi fi
fi fi
if test "$f_english" = YES; then if test "$f_english" = YES; then
cat >> .tmakeconfig <<EOF cat >> .tmakeconfig <<EOF
TMAKE_CXXFLAGS = -DENGLISH_ONLY TMAKE_CXXFLAGS += -DENGLISH_ONLY
EOF EOF
fi fi
......
...@@ -13,7 +13,8 @@ ...@@ -13,7 +13,8 @@
# input used in their production; they are not affected by this license. # input used in their production; they are not affected by this license.
all: FORCE all: FORCE
set DOXYGEN_DOCDIR=file:///$(DOXYGEN) @xcopy /s /q ..\examples ..\html\examples
set DOXYGEN_DOCDIR=.
set VERSION=$(VERSION) set VERSION=$(VERSION)
$(DOXYGEN)\bin\doxygen $(DOXYGEN)\bin\doxygen
@del ..\latex\refman.tex @del ..\latex\refman.tex
......
...@@ -952,7 +952,8 @@ Public/Protected/Private/... section. ...@@ -952,7 +952,8 @@ Public/Protected/Private/... section.
\e not in other documentation blocks! \e not in other documentation blocks!
\sa \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> <hr>
\subsection cmdsubsection \subsection <subsection-name> (subsection title) \subsection cmdsubsection \subsection <subsection-name> (subsection title)
...@@ -966,7 +967,8 @@ Public/Protected/Private/... section. ...@@ -966,7 +967,8 @@ Public/Protected/Private/... section.
\e not in other documentation blocks! \e not in other documentation blocks!
\sa \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> <hr>
......
...@@ -87,6 +87,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -87,6 +87,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_doc_url DOC_URL <li> \refitem cfg_doc_url DOC_URL
<li> \refitem cfg_dot_path DOT_PATH <li> \refitem cfg_dot_path DOT_PATH
<li> \refitem cfg_enable_preprocessing ENABLE_PREPROCESSING <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_enabled_sections ENABLED_SECTIONS
<li> \refitem cfg_example_path EXAMPLE_PATH <li> \refitem cfg_example_path EXAMPLE_PATH
<li> \refitem cfg_example_patterns EXAMPLE_PATTERNS <li> \refitem cfg_example_patterns EXAMPLE_PATTERNS
...@@ -212,15 +213,6 @@ followed by the descriptions of the tags grouped by category. ...@@ -212,15 +213,6 @@ followed by the descriptions of the tags grouped by category.
Dutch, French, Italian, Czech, Swedish, German, Finnish, Hungarian, Japanese, Dutch, French, Italian, Czech, Swedish, German, Finnish, Hungarian, Japanese,
Korean, Spanish, Russian, Croatian, Polish and Portuguese. 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 \anchor cfg_extract_all
<dt>\c EXTRACT_ALL <dd> <dt>\c EXTRACT_ALL <dd>
\addindex EXTRACT_ALL \addindex EXTRACT_ALL
...@@ -578,6 +570,13 @@ followed by the descriptions of the tags grouped by category. ...@@ -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 input file. Doxygen will then use the output that the filter program writes
to standard output. 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> </dl>
\subsection alphabetical_index Alphabetical index options \subsection alphabetical_index Alphabetical index options
...@@ -723,6 +722,21 @@ followed by the descriptions of the tags grouped by category. ...@@ -723,6 +722,21 @@ followed by the descriptions of the tags grouped by category.
(which basically renders \c doxysearch obsolete on Windows). (which basically renders \c doxysearch obsolete on Windows).
The HTML workshop also contains a viewer for compressed HTML files. 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> </dl>
\subsection latex_output LaTeX related options \subsection latex_output LaTeX related options
\anchor cfg_generate_latex \anchor cfg_generate_latex
......
...@@ -41,10 +41,6 @@ See the ...@@ -41,10 +41,6 @@ See the
GNU General Public License</a> GNU General Public License</a>
for more details. for more details.
<p> <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 Documents produced by Doxygen are derivative works derived from the
input used in their production; they are not affected by this license. input used in their production; they are not affected by this license.
......
This diff is collapsed.
...@@ -46,8 +46,8 @@ Here is a list of the languages and their current maintainers: ...@@ -46,8 +46,8 @@ Here is a list of the languages and their current maintainers:
Jens Breitenstein Jens Breitenstein
</TD> </TD>
<TD> <TD>
<a href="mailto:j@NOSPAM.js-b.de"> <a href="mailto:Jens.Breitenstein@NOSPAM.tlc.de">
j@NOSPAM.js-b.de</a> Jens.Breitenstein@NOSPAM.tlc.de</a>
</TD> </TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
...@@ -227,7 +227,7 @@ Here is a list of the languages and their current maintainers: ...@@ -227,7 +227,7 @@ Here is a list of the languages and their current maintainers:
\hline \hline
{\bf Language} & {\bf Maintainer} & {Contact address} \\ {\bf Language} & {\bf Maintainer} & {Contact address} \\
\hline \hline
German & Jens Breitenstein & {\tt j@jb-s.de} \\ German & Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} \\
\hline \hline
French & Christophe Bordeux & {\tt bordeux@lig.di.epfl.ch} \\ French & Christophe Bordeux & {\tt bordeux@lig.di.epfl.ch} \\
\hline \hline
......
...@@ -168,7 +168,9 @@ PREDEFINED = DECLARE_REGISTRY_RESOURCEID=// \ ...@@ -168,7 +168,9 @@ PREDEFINED = DECLARE_REGISTRY_RESOURCEID=// \
"ATL_NO_VTABLE= "\ "ATL_NO_VTABLE= "\
"__declspec(a)= "\ "__declspec(a)= "\
BEGIN_CONNECTION_POINT_MAP=/* \ BEGIN_CONNECTION_POINT_MAP=/* \
END_CONNECTION_POINT_MAP=*/// END_CONNECTION_POINT_MAP=*/// \
"DECLARE_AGGREGATABLE(Class)= " \
"DECLARE_REGISTRY_RESOURCEID(id)= "
\endverbatim \endverbatim
As you can see doxygen's preprocessor is quite powerful, but if you want As you can see doxygen's preprocessor is quite powerful, but if you want
......
Name: doxygen Name: doxygen
Version: 1.2.2-20001015 Version: 1.2.3
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 1 Release: 1
Source0: doxygen-%{version}.src.tar.gz Source0: doxygen-%{version}.src.tar.gz
......
...@@ -727,7 +727,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -727,7 +727,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ClassDef *cd=bcd->classDef; ClassDef *cd=bcd->classDef;
if (cd->isLinkable()) 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); ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,cd->name()+bcd->templSpecifiers);
} }
else else
......
...@@ -127,12 +127,9 @@ static QCString g_saveType; ...@@ -127,12 +127,9 @@ static QCString g_saveType;
* is TRUE. If a definition starts at the current line, then the line * is TRUE. If a definition starts at the current line, then the line
* number is linked to the documentation of that definition. * number is linked to the documentation of that definition.
*/ */
static void startCodeLine(OutputList &ol) static void startCodeLine()
{ {
if (g_currentFontClass) //if (g_currentFontClass) { g_code->endFontClass(); }
{
g_code->endFontClass();
}
if (g_sourceFileDef) if (g_sourceFileDef)
{ {
QCString lineNumber,lineAnchor; QCString lineNumber,lineAnchor;
...@@ -149,25 +146,32 @@ static void startCodeLine(OutputList &ol) ...@@ -149,25 +146,32 @@ static void startCodeLine(OutputList &ol)
g_searchingForBody = TRUE; g_searchingForBody = TRUE;
g_bodyCurlyCount = 0; g_bodyCurlyCount = 0;
if (g_currentMemberDef) anchor=g_currentMemberDef->anchor(); if (g_currentMemberDef) anchor=g_currentMemberDef->anchor();
ol.startCodeAnchor(lineAnchor); g_code->startCodeAnchor(lineAnchor);
ol.writeCodeLink(d->getReference(),d->getOutputFileBase(), g_code->writeCodeLink(d->getReference(),d->getOutputFileBase(),
anchor,lineNumber); anchor,lineNumber);
ol.endCodeAnchor(); g_code->endCodeAnchor();
ol.codify(" "); g_code->codify(" ");
} }
else else
{ {
ol.codify(lineNumber); g_code->codify(lineNumber);
ol.codify(" "); g_code->codify(" ");
} }
} }
ol.startCodeLine(); g_code->startCodeLine();
if (g_currentFontClass) if (g_currentFontClass)
{ {
g_code->startFontClass(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 /*! write a code fragment `text' that may span multiple lines, inserting
* line numbers for each line. * line numbers for each line.
*/ */
...@@ -185,10 +189,10 @@ static void codifyLines(char *text) ...@@ -185,10 +189,10 @@ static void codifyLines(char *text)
g_yyLineNr++; g_yyLineNr++;
*(p-1)='\0'; *(p-1)='\0';
g_code->codify(sp); g_code->codify(sp);
g_code->endCodeLine(); endCodeLine();
if (g_yyLineNr<g_inputLines) if (g_yyLineNr<g_inputLines)
{ {
startCodeLine(*g_code); startCodeLine();
} }
} }
else else
...@@ -219,10 +223,10 @@ static void writeMultiLineCodeLink(OutputList &ol, ...@@ -219,10 +223,10 @@ static void writeMultiLineCodeLink(OutputList &ol,
g_yyLineNr++; g_yyLineNr++;
*(p-1)='\0'; *(p-1)='\0';
ol.writeCodeLink(ref,file,anchor,sp); ol.writeCodeLink(ref,file,anchor,sp);
ol.endCodeLine(); endCodeLine();
if (g_yyLineNr<g_inputLines) if (g_yyLineNr<g_inputLines)
{ {
startCodeLine(ol); startCodeLine();
} }
} }
else else
...@@ -1241,10 +1245,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1241,10 +1245,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
} }
<RemoveSpecialCComment>"*/"{B}*\n({B}*\n)*({B}*(("//@"[{}])|("/*@"[{}]"*/")){B}*\n)? { <RemoveSpecialCComment>"*/"{B}*\n({B}*\n)*({B}*(("//@"[{}])|("/*@"[{}]"*/")){B}*\n)? {
g_yyLineNr+=QCString(yytext).contains('\n'); g_yyLineNr+=QCString(yytext).contains('\n');
g_code->endCodeLine(); endCodeLine();
if (g_yyLineNr<g_inputLines) if (g_yyLineNr<g_inputLines)
{ {
startCodeLine(*g_code); startCodeLine();
} }
if (g_lastSpecialCContext==SkipCxxComment) if (g_lastSpecialCContext==SkipCxxComment)
{ // force end of C++ comment here { // force end of C++ comment here
...@@ -1267,10 +1271,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1267,10 +1271,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
if (Config::stripCommentsFlag) if (Config::stripCommentsFlag)
{ {
g_yyLineNr+=((QCString)yytext).contains('\n'); g_yyLineNr+=((QCString)yytext).contains('\n');
g_code->endCodeLine(); endCodeLine();
if (g_yyLineNr<g_inputLines) if (g_yyLineNr<g_inputLines)
{ {
startCodeLine(*g_code); startCodeLine();
} }
} }
else else
...@@ -1284,10 +1288,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1284,10 +1288,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
if (Config::stripCommentsFlag) if (Config::stripCommentsFlag)
{ {
g_yyLineNr+=2; g_yyLineNr+=2;
g_code->endCodeLine(); endCodeLine();
if (g_yyLineNr<g_inputLines) if (g_yyLineNr<g_inputLines)
{ {
startCodeLine(*g_code); startCodeLine();
} }
} }
else else
...@@ -1320,10 +1324,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1320,10 +1324,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
if (Config::stripCommentsFlag) if (Config::stripCommentsFlag)
{ {
g_yyLineNr++; g_yyLineNr++;
g_code->endCodeLine(); endCodeLine();
if (g_yyLineNr<g_inputLines) if (g_yyLineNr<g_inputLines)
{ {
startCodeLine(*g_code); startCodeLine();
} }
} }
else else
...@@ -1355,10 +1359,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1355,10 +1359,10 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
if (Config::stripCommentsFlag) if (Config::stripCommentsFlag)
{ {
g_yyLineNr++; g_yyLineNr++;
g_code->endCodeLine(); endCodeLine();
if (g_yyLineNr<g_inputLines) if (g_yyLineNr<g_inputLines)
{ {
startCodeLine(*g_code); startCodeLine();
} }
} }
else else
...@@ -1527,7 +1531,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s, ...@@ -1527,7 +1531,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
g_bracketCount = 0; g_bracketCount = 0;
g_exampleFile = convertFileName(g_exampleName)+"-example"; g_exampleFile = convertFileName(g_exampleName)+"-example";
g_includeCodeFragment = inlineFragment; g_includeCodeFragment = inlineFragment;
startCodeLine(*g_code); startCodeLine();
g_type.resize(0); g_type.resize(0);
g_name.resize(0); g_name.resize(0);
g_args.resize(0); g_args.resize(0);
...@@ -1537,7 +1541,6 @@ void parseCode(OutputList &ol,const char *className,const QCString &s, ...@@ -1537,7 +1541,6 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
BEGIN( Body ); BEGIN( Body );
codeYYlex(); codeYYlex();
endFontClass(); endFontClass();
//if (g_yyLineNr<=g_inputLines) code->endCodeLine();
ol+=*g_code; ol+=*g_code;
delete g_code; delete g_code;
return; 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 * from config_templ.h
* *
* DO NOT EDIT! * DO NOT EDIT!
...@@ -84,6 +84,7 @@ struct Config ...@@ -84,6 +84,7 @@ struct Config
static QStrList examplePatternList; // list of example patterns static QStrList examplePatternList; // list of example patterns
static QStrList imagePath; // list of image paths static QStrList imagePath; // list of image paths
static QCString inputFilter; // a filter command that is applied to input files 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 bool alphaIndexFlag; // should an alphabetical index be generated?
static int colsInAlphaIndex; // number of columns in the alphabetical index static int colsInAlphaIndex; // number of columns in the alphabetical index
static QStrList ignorePrefixList; // list of prefixes to ignore for the alphabetical index static QStrList ignorePrefixList; // list of prefixes to ignore for the alphabetical index
...@@ -95,6 +96,7 @@ struct Config ...@@ -95,6 +96,7 @@ struct Config
static bool htmlAlignMemberFlag; // align members in HTML using tables. static bool htmlAlignMemberFlag; // align members in HTML using tables.
static bool htmlHelpFlag; // should html help files be generated? static bool htmlHelpFlag; // should html help files be generated?
static bool noIndexFlag; // generate condensed index flag 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 bool generateLatex; // generate Latex output
static QCString latexOutputDir; // the directory to put the Latex files static QCString latexOutputDir; // the directory to put the Latex files
static bool compactLatexFlag; // generate compact LaTeX documentation. 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 * from config_templ.l
* *
* DO NOT EDIT! * DO NOT EDIT!
...@@ -121,6 +121,7 @@ QStrList Config::examplePath; ...@@ -121,6 +121,7 @@ QStrList Config::examplePath;
QStrList Config::examplePatternList; QStrList Config::examplePatternList;
QStrList Config::imagePath; QStrList Config::imagePath;
QCString Config::inputFilter; QCString Config::inputFilter;
bool Config::filterForSourceFlag = FALSE;
bool Config::alphaIndexFlag = FALSE; bool Config::alphaIndexFlag = FALSE;
int Config::colsInAlphaIndex = 5; int Config::colsInAlphaIndex = 5;
QStrList Config::ignorePrefixList; QStrList Config::ignorePrefixList;
...@@ -132,6 +133,7 @@ QCString Config::htmlStyleSheet; ...@@ -132,6 +133,7 @@ QCString Config::htmlStyleSheet;
bool Config::htmlAlignMemberFlag = TRUE; bool Config::htmlAlignMemberFlag = TRUE;
bool Config::htmlHelpFlag = FALSE; bool Config::htmlHelpFlag = FALSE;
bool Config::noIndexFlag = FALSE; bool Config::noIndexFlag = FALSE;
int Config::enumValuesPerLine = 4;
bool Config::generateLatex = TRUE; bool Config::generateLatex = TRUE;
QCString Config::latexOutputDir = "latex"; QCString Config::latexOutputDir = "latex";
bool Config::compactLatexFlag = FALSE; bool Config::compactLatexFlag = FALSE;
...@@ -211,6 +213,7 @@ static int includeDepth; ...@@ -211,6 +213,7 @@ static int includeDepth;
static QCString tabSizeString; static QCString tabSizeString;
static QCString colsInAlphaIndexString; static QCString colsInAlphaIndexString;
static QCString enumValuesPerLineString;
static QCString maxDotGraphWidthString; static QCString maxDotGraphWidthString;
static QCString maxDotGraphHeightString; static QCString maxDotGraphHeightString;
...@@ -253,8 +256,12 @@ static FILE *tryPath(const char *path,const char *fileName) ...@@ -253,8 +256,12 @@ static FILE *tryPath(const char *path,const char *fileName)
return 0; return 0;
} }
static void substEnvVarsInStrList(QStrList &sl);
static void substEnvVarsInString(QCString &s);
static FILE *findFile(const char *fileName) static FILE *findFile(const char *fileName)
{ {
substEnvVarsInStrList(includePathList);
char *s=includePathList.first(); char *s=includePathList.first();
while (s) // try each of the include paths while (s) // try each of the include paths
{ {
...@@ -275,6 +282,7 @@ static void readIncludeFile(const char *incName) ...@@ -275,6 +282,7 @@ static void readIncludeFile(const char *incName)
} }
QCString inc = incName; QCString inc = incName;
substEnvVarsInString(inc);
inc = inc.stripWhiteSpace(); inc = inc.stripWhiteSpace();
uint incLen = inc.length(); uint incLen = inc.length();
if (inc.at(0)=='"' && inc.at(incLen-1)=='"') // strip quotes if (inc.at(0)=='"' && inc.at(incLen-1)=='"') // strip quotes
...@@ -389,6 +397,7 @@ static void readIncludeFile(const char *incName) ...@@ -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; l->clear(); elemStr=""; }
<Start>"IMAGE_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::imagePath; elemStr=""; } <Start>"IMAGE_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::imagePath; elemStr=""; }
<Start>"INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&Config::inputFilter; s->resize(0); } <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>"ALPHABETICAL_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::alphaIndexFlag; }
<Start>"COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); } <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=""; } <Start>"IGNORE_PREFIX"[ \t]*"=" { BEGIN(GetStrList); l=&Config::ignorePrefixList; l->clear(); elemStr=""; }
...@@ -401,6 +410,7 @@ static void readIncludeFile(const char *incName) ...@@ -401,6 +410,7 @@ static void readIncludeFile(const char *incName)
<Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } <Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; }
<Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; } <Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; }
<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; } <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>"GENERATE_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateLatex; }
<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); } <Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); }
<Start>"COMPACT_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactLatexFlag; } <Start>"COMPACT_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactLatexFlag; }
...@@ -678,6 +688,7 @@ void dumpConfig() ...@@ -678,6 +688,7 @@ void dumpConfig()
} }
} }
printf("inputFilter=`%s'\n",Config::inputFilter.data()); printf("inputFilter=`%s'\n",Config::inputFilter.data());
printf("filterForSourceFlag=`%d'\n",Config::filterForSourceFlag);
printf("# configuration options related to the alphabetical class index\n"); printf("# configuration options related to the alphabetical class index\n");
printf("alphaIndexFlag=`%d'\n",Config::alphaIndexFlag); printf("alphaIndexFlag=`%d'\n",Config::alphaIndexFlag);
printf("colsInAlphaIndex=`%d'\n",Config::colsInAlphaIndex); printf("colsInAlphaIndex=`%d'\n",Config::colsInAlphaIndex);
...@@ -698,6 +709,7 @@ void dumpConfig() ...@@ -698,6 +709,7 @@ void dumpConfig()
printf("htmlAlignMemberFlag=`%d'\n",Config::htmlAlignMemberFlag); printf("htmlAlignMemberFlag=`%d'\n",Config::htmlAlignMemberFlag);
printf("htmlHelpFlag=`%d'\n",Config::htmlHelpFlag); printf("htmlHelpFlag=`%d'\n",Config::htmlHelpFlag);
printf("noIndexFlag=`%d'\n",Config::noIndexFlag); printf("noIndexFlag=`%d'\n",Config::noIndexFlag);
printf("enumValuesPerLine=`%d'\n",Config::enumValuesPerLine);
printf("# configuration options related to the LaTeX output\n"); printf("# configuration options related to the LaTeX output\n");
printf("generateLatex=`%d'\n",Config::generateLatex); printf("generateLatex=`%d'\n",Config::generateLatex);
printf("latexOutputDir=`%s'\n",Config::latexOutputDir.data()); printf("latexOutputDir=`%s'\n",Config::latexOutputDir.data());
...@@ -853,6 +865,7 @@ void Config::init() ...@@ -853,6 +865,7 @@ void Config::init()
Config::examplePatternList.clear(); Config::examplePatternList.clear();
Config::imagePath.clear(); Config::imagePath.clear();
Config::inputFilter.resize(0); Config::inputFilter.resize(0);
Config::filterForSourceFlag = FALSE;
Config::alphaIndexFlag = FALSE; Config::alphaIndexFlag = FALSE;
Config::colsInAlphaIndex = 5; Config::colsInAlphaIndex = 5;
Config::ignorePrefixList.clear(); Config::ignorePrefixList.clear();
...@@ -864,6 +877,7 @@ void Config::init() ...@@ -864,6 +877,7 @@ void Config::init()
Config::htmlAlignMemberFlag = TRUE; Config::htmlAlignMemberFlag = TRUE;
Config::htmlHelpFlag = FALSE; Config::htmlHelpFlag = FALSE;
Config::noIndexFlag = FALSE; Config::noIndexFlag = FALSE;
Config::enumValuesPerLine = 4;
Config::generateLatex = TRUE; Config::generateLatex = TRUE;
Config::latexOutputDir = "latex"; Config::latexOutputDir = "latex";
Config::compactLatexFlag = FALSE; Config::compactLatexFlag = FALSE;
...@@ -1534,6 +1548,17 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1534,6 +1548,17 @@ void writeTemplateConfig(QFile *f,bool sl)
writeStringValue(t,Config::inputFilter); writeStringValue(t,Config::inputFilter);
t << "\n"; t << "\n";
if (!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";
} }
...@@ -1671,6 +1696,16 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1671,6 +1696,16 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::noIndexFlag); writeBoolValue(t,Config::noIndexFlag);
t << "\n"; t << "\n";
if (!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";
} }
...@@ -2286,6 +2321,23 @@ void configStrToVal() ...@@ -2286,6 +2321,23 @@ void configStrToVal()
} }
Config::colsInAlphaIndex=cols; 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()) if (maxDotGraphWidthString.isEmpty())
{ {
...@@ -2297,7 +2349,7 @@ void configStrToVal() ...@@ -2297,7 +2349,7 @@ void configStrToVal()
int width =maxDotGraphWidthString.toInt(&ok); int width =maxDotGraphWidthString.toInt(&ok);
if (!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"); "Using the default of 1024 pixels!\n");
width=1024; width=1024;
} }
...@@ -2322,7 +2374,7 @@ void configStrToVal() ...@@ -2322,7 +2374,7 @@ void configStrToVal()
int height =maxDotGraphHeightString.toInt(&ok); int height =maxDotGraphHeightString.toInt(&ok);
if (!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"); "Using the default of 1024 pixels!\n");
height=1024; height=1024;
} }
......
...@@ -136,7 +136,7 @@ ID ([a-z_A-Z][a-z_A-Z0-9]*)|(@[0-9]+) ...@@ -136,7 +136,7 @@ ID ([a-z_A-Z][a-z_A-Z0-9]*)|(@[0-9]+)
<Start>{B}+ { <Start>{B}+ {
addType(); addType();
} }
<Start>{B}*"("({ID}"::")*{B}*"*" { <Start>{B}*"("({ID}"::")*{B}*"*"({B}*("const"|"volatile"){B}+)? {
addType(); addType();
QCString text=yytext; QCString text=yytext;
type+=text.stripWhiteSpace(); type+=text.stripWhiteSpace();
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include "qtbc.h" #include "qtbc.h"
#include <qdict.h> #include <qdict.h>
#include "util.h" #include <qlist.h>
class FileDef; class FileDef;
......
...@@ -1307,6 +1307,7 @@ void buildVarList(Entry *root) ...@@ -1307,6 +1307,7 @@ void buildVarList(Entry *root)
) || ) ||
(root->section==Entry::FUNCTION_SEC && // function variable (root->section==Entry::FUNCTION_SEC && // function variable
!root->type.isEmpty() && root->type.find(re,0)!=-1 && !root->type.isEmpty() && root->type.find(re,0)!=-1 &&
// special case to catch function pointers
root->type.find("operator")==-1 && root->type.find(")(")==-1 root->type.find("operator")==-1 && root->type.find(")(")==-1
) )
) )
......
...@@ -422,11 +422,6 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -422,11 +422,6 @@ void FileDef::writeDocumentation(OutputList &ol)
/*! Write a source listing of this file to the output */ /*! Write a source listing of this file to the output */
void FileDef::writeSource(OutputList &ol) void FileDef::writeSource(OutputList &ol)
{ {
//QCString fn=name();
//if (Config::fullPathNameFlag)
//{
// fn.prepend(stripFromPath(getPath().copy()));
//}
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
startFile(ol,sourceName(),docname+" Source File"); startFile(ol,sourceName(),docname+" Source File");
startTitle(ol,0); startTitle(ol,0);
...@@ -440,11 +435,9 @@ void FileDef::writeSource(OutputList &ol) ...@@ -440,11 +435,9 @@ void FileDef::writeSource(OutputList &ol)
ol.endTextLink(); ol.endTextLink();
} }
//parseText(ol,theTranslator->trVerbatimText(incFile->name()));
//ol.writeRuler();
initParseCodeContext(); initParseCodeContext();
ol.startCodeFragment(); ol.startCodeFragment();
parseCode(ol,0,fileToString(absFilePath()),FALSE,0,this); parseCode(ol,0,fileToString(absFilePath(),TRUE),FALSE,0,this);
ol.endCodeFragment(); ol.endCodeFragment();
endFile(ol); endFile(ol);
ol.enableAll(); ol.enableAll();
......
...@@ -1199,7 +1199,7 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections) ...@@ -1199,7 +1199,7 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections)
{ {
char lastChar=0; char lastChar=0;
bool first=TRUE; bool first=TRUE;
ol.startItemList(); //ol.startItemList();
MemberName *mn=functionNameList.first(); MemberName *mn=functionNameList.first();
while (mn) while (mn)
{ {
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include "translator_ro.h" #include "translator_ro.h"
#include "translator_si.h" #include "translator_si.h"
#include "translator_cn.h" #include "translator_cn.h"
#include "translator_no.h"
#endif #endif
#define L_EQUAL(a) !stricmp(langName,a) #define L_EQUAL(a) !stricmp(langName,a)
......
...@@ -1198,7 +1198,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1198,7 +1198,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
bmd->anchor(),bcd->name()); bmd->anchor(),bcd->name());
if ( bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ ) if ( bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ )
{ {
writePageRef(ol,bcd->name(),bmd->anchor()); writePageRef(ol,bcd->getOutputFileBase(),bmd->anchor());
} }
} }
else else
...@@ -1207,7 +1207,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1207,7 +1207,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
0,bcd->name()); 0,bcd->name());
if (bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ ) if (bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ )
{ {
writePageRef(ol,bcd->name(),0); writePageRef(ol,bcd->getOutputFileBase(),0);
} }
} }
parseText(ol,reimplFromLine.right( parseText(ol,reimplFromLine.right(
...@@ -1273,7 +1273,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1273,7 +1273,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
bmd->anchor(),bcd->name()); bmd->anchor(),bcd->name());
if (bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ ) if (bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ )
{ {
writePageRef(ol,bcd->name(),bmd->anchor()); writePageRef(ol,bcd->getOutputFileBase(),bmd->anchor());
} }
} }
++mli; ++mli;
......
...@@ -302,7 +302,6 @@ void MemberList::writePlainDeclarations(OutputList &ol, ...@@ -302,7 +302,6 @@ void MemberList::writePlainDeclarations(OutputList &ol,
typeDecl.writeChar(' '); typeDecl.writeChar(' ');
} }
const uint MAX_ENUM_VALUES_FOR_ONE_LINE = 4;
int enumMemCount=0; int enumMemCount=0;
typeDecl.docify("{ "); typeDecl.docify("{ ");
...@@ -313,8 +312,8 @@ void MemberList::writePlainDeclarations(OutputList &ol, ...@@ -313,8 +312,8 @@ void MemberList::writePlainDeclarations(OutputList &ol,
while (fmd) while (fmd)
{ {
/* in html we start a new line after a number of items */ /* in html we start a new line after a number of items */
if (fmdl->count()>MAX_ENUM_VALUES_FOR_ONE_LINE if (fmdl->count()>(uint)Config::enumValuesPerLine
&& (enumMemCount%MAX_ENUM_VALUES_FOR_ONE_LINE)==0 && (enumMemCount%(uint)Config::enumValuesPerLine)==0
) )
{ {
typeDecl.pushGeneratorState(); typeDecl.pushGeneratorState();
...@@ -348,7 +347,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, ...@@ -348,7 +347,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
typeDecl.enable(OutputGenerator::Man); typeDecl.enable(OutputGenerator::Man);
enumMemCount++; enumMemCount++;
} }
if (fmdl->count()>MAX_ENUM_VALUES_FOR_ONE_LINE) if (fmdl->count()>(uint)Config::enumValuesPerLine)
{ {
typeDecl.pushGeneratorState(); typeDecl.pushGeneratorState();
typeDecl.disableAllBut(OutputGenerator::Html); typeDecl.disableAllBut(OutputGenerator::Html);
......
...@@ -92,6 +92,7 @@ static int g_findDefArgContext; ...@@ -92,6 +92,7 @@ static int g_findDefArgContext;
static QCString g_lastGuardName; static QCString g_lastGuardName;
static QCString g_incName; static QCString g_incName;
static QCString g_guardExpr; static QCString g_guardExpr;
static int g_curlyCount;
static void setFileName(const char *name) static void setFileName(const char *name)
{ {
...@@ -818,12 +819,12 @@ void addDefine() ...@@ -818,12 +819,12 @@ void addDefine()
static void outputChar(char c) 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) 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) static void readIncludeFile(const QCString &inc)
...@@ -917,6 +918,7 @@ BN [ \t\r\n] ...@@ -917,6 +918,7 @@ BN [ \t\r\n]
%x SkipCommand %x SkipCommand
%x SkipLine %x SkipLine
%x CopyLine %x CopyLine
%x CopyString
%x Include %x Include
%x IncludeID %x IncludeID
%x DefName %x DefName
...@@ -967,6 +969,41 @@ BN [ \t\r\n] ...@@ -967,6 +969,41 @@ BN [ \t\r\n]
outputArray(yytext,yyleng); 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}*"(" { <CopyLine>{ID}/{BN}*"(" {
Define *def=0; Define *def=0;
//printf("Search for define %s\n",yytext); //printf("Search for define %s\n",yytext);
...@@ -1726,6 +1763,7 @@ void preprocessFile(const char *fileName,BufStr &output) ...@@ -1726,6 +1763,7 @@ void preprocessFile(const char *fileName,BufStr &output)
uint orgOffset=output.curPos(); uint orgOffset=output.curPos();
//#endif //#endif
g_curlyCount=0;
g_outputBuf=&output; g_outputBuf=&output;
g_includeStack.setAutoDelete(TRUE); g_includeStack.setAutoDelete(TRUE);
g_includeStack.clear(); g_includeStack.clear();
......
...@@ -1615,7 +1615,14 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -1615,7 +1615,14 @@ TITLE [tT][iI][tT][lL][eE]
} }
<FuncPtr>{SCOPENAME} { <FuncPtr>{SCOPENAME} {
current->name = yytext; current->name = yytext;
BEGIN( EndFuncPtr ); if (current->name=="const" || current->name=="volatile")
{
funcPtrType += current->name;
}
else
{
BEGIN( EndFuncPtr );
}
} }
<FuncPtr>. { <FuncPtr>. {
//printf("Error: FuncPtr `%c' unexpected at line %d of %s\n",*yytext,yyLineNr,yyFileName); //printf("Error: FuncPtr `%c' unexpected at line %d of %s\n",*yytext,yyLineNr,yyFileName);
...@@ -2337,7 +2344,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2337,7 +2344,7 @@ TITLE [tT][iI][tT][lL][eE]
} }
<Comment>. { current->program += *yytext ; } <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); //printf("Start doc block at %d\n",yyLineNr);
removeSlashes=(yytext[1]=='/'); removeSlashes=(yytext[1]=='/');
tmpDocType=-1; tmpDocType=-1;
...@@ -2350,7 +2357,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2350,7 +2357,7 @@ TITLE [tT][iI][tT][lL][eE]
current->inside = current_root->name+"::"; current->inside = current_root->name+"::";
BEGIN( Doc ); BEGIN( Doc );
} }
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits>("//"{B}*)?"/**"/[^/*] { <FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits,Bases>("//"{B}*)?"/**"/[^/*] {
removeSlashes=(yytext[1]=='/'); removeSlashes=(yytext[1]=='/');
lastDocContext = YY_START; lastDocContext = YY_START;
if (current_root->section & Entry::SCOPE_MASK) if (current_root->section & Entry::SCOPE_MASK)
...@@ -2382,7 +2389,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -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); current->brief.resize(0);
tmpDocType=-1; tmpDocType=-1;
lastDocContext = YY_START; lastDocContext = YY_START;
...@@ -2390,7 +2397,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2390,7 +2397,7 @@ TITLE [tT][iI][tT][lL][eE]
current->inside = current_root->name+"::"; current->inside = current_root->name+"::";
BEGIN( LineDoc ); BEGIN( LineDoc );
} }
<FindMembers,FindFields,MemberSpec,FuncQual,Operator,ClassVar>"///"/[^/] { <FindMembers,FindFields,MemberSpec,FuncQual,Operator,ClassVar,Bases>"///"/[^/] {
current->brief.resize(0); current->brief.resize(0);
tmpDocType=-1; tmpDocType=-1;
lastDocContext = YY_START; lastDocContext = YY_START;
...@@ -3181,9 +3188,8 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -3181,9 +3188,8 @@ TITLE [tT][iI][tT][lL][eE]
current->brief=current->brief.stripWhiteSpace(); current->brief=current->brief.stripWhiteSpace();
BEGIN( lastBriefContext ); BEGIN( lastBriefContext );
} }
<ClassDocBrief>{BS}/{CMD}("brief"|"short"){BN}+ { <ClassDocBrief>{BS}{CMD}("brief"|"short"){BN}+ {
lastBriefContext=YY_START; lastBriefContext=YY_START;
BEGIN( ClassDocBrief );
} }
<ClassDocBrief>. { current->brief += *yytext; } <ClassDocBrief>. { current->brief += *yytext; }
<ClassDocDefine>{ID}/"(" { <ClassDocDefine>{ID}/"(" {
......
...@@ -70,6 +70,9 @@ ...@@ -70,6 +70,9 @@
// - Update for "new since 1.2.1" version. The text of trDCOPMethods() // - Update for "new since 1.2.1" version. The text of trDCOPMethods()
// was translated rather blindly (not knowing what exactly // was translated rather blindly (not knowing what exactly
// the DCOP means). // the DCOP means).
//
// 2000/10/17 (Petr Prikryl)
// - Update for "new since 1.2.2" version.
// //
// Notices: // Notices:
// -------- // --------
...@@ -1108,6 +1111,21 @@ class TranslatorCzech : public Translator ...@@ -1108,6 +1111,21 @@ class TranslatorCzech : public Translator
{ {
return Decode("Metody DCOP"); 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 #endif // TRANSLATOR_CZ_H
...@@ -25,6 +25,9 @@ class TranslatorJapanese : public Translator ...@@ -25,6 +25,9 @@ class TranslatorJapanese : public Translator
public: public:
QCString idLanguage() QCString idLanguage()
{ return "japanese"; } { return "japanese"; }
QCString idLanguageCharset()
{ return "euc-jp"; }
/*! returns the name of the package that is included by LaTeX */ /*! returns the name of the package that is included by LaTeX */
QCString latexBabelPackage() QCString latexBabelPackage()
{ return "a4j"; } { return "a4j"; }
......
...@@ -48,6 +48,11 @@ ...@@ -48,6 +48,11 @@
extern char **environ; extern char **environ;
#endif #endif
#if defined(_MSC_VER) || defined(__BORLANDC__)
#define popen _popen
#define pclose _pclose
#endif
//------------------------------------------------------------------------ //------------------------------------------------------------------------
// TextGeneratorOLImpl implementation // TextGeneratorOLImpl implementation
//------------------------------------------------------------------------ //------------------------------------------------------------------------
...@@ -954,7 +959,7 @@ void setAnchors(char id,MemberList *ml,int groupId) ...@@ -954,7 +959,7 @@ void setAnchors(char id,MemberList *ml,int groupId)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// read a file with `name' to a string. // 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; if (name==0 || name[0]==0) return 0;
QFile f; QFile f;
...@@ -989,19 +994,47 @@ QCString fileToString(const char *name) ...@@ -989,19 +994,47 @@ QCString fileToString(const char *name)
err("Error: file `%s' not found\n",name); err("Error: file `%s' not found\n",name);
return ""; return "";
} }
f.setName(name); if (Config::inputFilter.isEmpty() || !filter)
fileOpened=f.open(IO_ReadOnly);
if (fileOpened)
{ {
int fsize=f.size(); f.setName(name);
QCString contents(fsize+2); fileOpened=f.open(IO_ReadOnly);
f.readBlock(contents.data(),fsize); if (fileOpened)
if (fsize==0 || contents[fsize-1]=='\n') {
contents[fsize]='\0'; int fsize=f.size();
else QCString contents(fsize+2);
contents[fsize]='\n'; // to help the scanner f.readBlock(contents.data(),fsize);
contents[fsize+1]='\0'; if (fsize==0 || contents[fsize-1]=='\n')
f.close(); 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; return contents;
} }
} }
...@@ -2340,7 +2373,8 @@ bool generateRef(OutputList &ol,const char *scName, ...@@ -2340,7 +2373,8 @@ bool generateRef(OutputList &ol,const char *scName,
if (!rt && (md->isFunction() || md->isPrototype() || md->isSignal() || md->isSlot() || md->isDefine())) if (!rt && (md->isFunction() || md->isPrototype() || md->isSignal() || md->isSlot() || md->isDefine()))
{ {
if (argsStr.isEmpty() && (!md->isDefine() || md->argsString()!=0)) if (argsStr.isEmpty() && (!md->isDefine() || md->argsString()!=0))
ol.writeString("()"); // ol.writeString("()")
;
else else
ol.docify(argsStr); ol.docify(argsStr);
} }
...@@ -2732,7 +2766,7 @@ void extractNamespaceName(const QCString &scopeName, ...@@ -2732,7 +2766,7 @@ void extractNamespaceName(const QCString &scopeName,
{ {
QCString clName=scopeName.copy(); QCString clName=scopeName.copy();
//QCString nsName; //QCString nsName;
NamespaceDef *nd; NamespaceDef *nd = 0;
if (!clName.isEmpty() && (nd=getResolvedNamespace(clName)) && getClass(clName)==0) if (!clName.isEmpty() && (nd=getResolvedNamespace(clName)) && getClass(clName)==0)
{ // the whole name is a namespace (and not a class) { // the whole name is a namespace (and not a class)
namespaceName=nd->name().copy(); namespaceName=nd->name().copy();
......
...@@ -83,7 +83,7 @@ extern void linkifyText(const TextGeneratorIntf &ol,const char *clName,const cha ...@@ -83,7 +83,7 @@ extern void linkifyText(const TextGeneratorIntf &ol,const char *clName,const cha
const char *text,bool autoBreak=FALSE,bool external=TRUE); const char *text,bool autoBreak=FALSE,bool external=TRUE);
extern void setAnchors(char id,MemberList *ml,int groupId=-1); 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 QCString dateToString(bool);
extern bool getDefs(const QCString &scopeName, extern bool getDefs(const QCString &scopeName,
const QCString &memberName, 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