Commit 1c68fd3f authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.3

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