Commit 74cc4d70 authored by mueller's avatar mueller

mods for doxygen-0.49-991117

parent 5576fbf6
DOXYGEN Version 0.49-991106 DOXYGEN Version 0.49-991117
CONTENTS CONTENTS
-------- --------
...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX: ...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have: 1. Unpack the archive, unless you already have:
gunzip doxygen-0.49-991106.src.tar.gz # uncompress the archive gunzip doxygen-0.49-991117.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-991106.src.tar # unpack it tar xf doxygen-0.49-991117.src.tar # unpack it
2. Run the configure script: 2. Run the configure script:
...@@ -234,4 +234,4 @@ The latest version of doxygen can be obtained at ...@@ -234,4 +234,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (06 November 1999) Dimitri van Heesch (17 November 1999)
...@@ -21,7 +21,9 @@ install: ...@@ -21,7 +21,9 @@ install:
$(INSTTOOL) -d $(INSTALL)/bin $(INSTTOOL) -d $(INSTALL)/bin
$(INSTTOOL) -d $(INSTALL)/doc/doxygen $(INSTTOOL) -d $(INSTALL)/doc/doxygen
$(INSTTOOL) -d $(INSTALL)/doc/doxygen $(INSTTOOL) -d $(INSTALL)/doc/doxygen
$(INSTTOOL) -m 755 bin/doxy* $(INSTALL)/bin $(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxysearch $(INSTALL)/bin
cp -r doc $(INSTALL)/doc/doxygen cp -r doc $(INSTALL)/doc/doxygen
cp -r examples $(INSTALL)/doc/doxygen cp -r examples $(INSTALL)/doc/doxygen
echo "DOXYGEN = $(INSTALL)" > $(INSTALL)/doc/doxygen/doc/Makefile echo "DOXYGEN = $(INSTALL)" > $(INSTALL)/doc/doxygen/doc/Makefile
......
DOXYGEN Version 0.49-991106 DOXYGEN Version 0.49-991117
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 (06 November 1999) Dimitri van Heesch (17 November 1999)
0.49-991106 0.49-991117
...@@ -1057,10 +1057,8 @@ Doxygen. Unrecognized commands are treated as normal text. ...@@ -1057,10 +1057,8 @@ Doxygen. Unrecognized commands are treated as normal text.
The second argument specifies the file name of the image. The second argument specifies the file name of the image.
Doxygen will look for files in the paths (or files) that you specified Doxygen will look for files in the paths (or files) that you specified
after the \ref cfg_image_path "IMAGE_PATH" tag and filter those files through the patterns after the \ref cfg_image_path "IMAGE_PATH" tag.
you specified after the \ref cfg_image_patterns "IMAGE_PATTERNS" tag. If the image is found it will be copied to the correct output directory.
If the image is found it
will be copied to the correct output directory.
If the image name contains spaces you'll have to put quotes (") around it. If the image name contains spaces you'll have to put quotes (") around it.
The third argument can be used to specify the width or height of the The third argument can be used to specify the width or height of the
...@@ -1083,7 +1081,6 @@ Doxygen. Unrecognized commands are treated as normal text. ...@@ -1083,7 +1081,6 @@ Doxygen. Unrecognized commands are treated as normal text.
\verbatim \verbatim
IMAGE_PATH = my_image_dir IMAGE_PATH = my_image_dir
IMAGE_PATTERNS = *.eps *.gif *.jpg
\endverbatim \endverbatim
\warning The image format for HTML is limited to what your \warning The image format for HTML is limited to what your
......
...@@ -88,7 +88,6 @@ followed by the descriptions of the tags grouped by category. ...@@ -88,7 +88,6 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_html_output HTML_OUTPUT <li> \refitem cfg_html_output HTML_OUTPUT
<li> \refitem cfg_html_stylesheet HTML_STYLESHEET <li> \refitem cfg_html_stylesheet HTML_STYLESHEET
<li> \refitem cfg_image_path IMAGE_PATH <li> \refitem cfg_image_path IMAGE_PATH
<li> \refitem cfg_image_patterns IMAGE_PATTERNS
<li> \refitem cfg_include_path INCLUDE_PATH <li> \refitem cfg_include_path INCLUDE_PATH
<li> \refitem cfg_inherit_docs INHERIT_DOCS <li> \refitem cfg_inherit_docs INHERIT_DOCS
<li> \refitem cfg_inline_info INLINE_INFO <li> \refitem cfg_inline_info INLINE_INFO
...@@ -115,6 +114,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -115,6 +114,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_searchengine SEARCHENGINE <li> \refitem cfg_searchengine SEARCHENGINE
<li> \refitem cfg_source_browser SOURCE_BROWSER <li> \refitem cfg_source_browser SOURCE_BROWSER
<li> \refitem cfg_strip_from_path STRIP_FROM_PATH <li> \refitem cfg_strip_from_path STRIP_FROM_PATH
<li> \refitem cfg_tab_size TAB_SIZE
<li> \refitem cfg_tagfiles TAGFILES <li> \refitem cfg_tagfiles TAGFILES
<li> \refitem cfg_verbatim_headers VERBATIM_HEADERS <li> \refitem cfg_verbatim_headers VERBATIM_HEADERS
<li> \refitem cfg_warnings WARNINGS <li> \refitem cfg_warnings WARNINGS
...@@ -314,6 +314,11 @@ followed by the descriptions of the tags grouped by category. ...@@ -314,6 +314,11 @@ followed by the descriptions of the tags grouped by category.
If the \c INLINE_INFO tag is set to \c YES (the default) then a tag [inline] If the \c INLINE_INFO tag is set to \c YES (the default) then a tag [inline]
is inserted in the documentation for inline members. is inserted in the documentation for inline members.
\anchor cfg_tab_size
<dt>\c TAB_SIZE <dd>
the TAB_SIZE tag can be used to set the number of spaces in a tab.
Doxygen uses this value to replace tabs by spaces in code fragments.
</dl> </dl>
\subsection config_input Input related options \subsection config_input Input related options
...@@ -382,14 +387,6 @@ followed by the descriptions of the tags grouped by category. ...@@ -382,14 +387,6 @@ followed by the descriptions of the tags grouped by category.
directories that contain images that are to be included in the directories that contain images that are to be included in the
documentation (see the \ref cmdimage "\image" command). documentation (see the \ref cmdimage "\image" command).
\anchor cfg_image_patterns
<dt>\c IMAGE_PATTERNS <dd>
\addindex IMAGE_PATTERNS
If the value of the \c IMAGE_PATH tag contains directories, you can use the
\c IMAGE_PATTERNS tag to specify one or more wildcard pattern (like *.gif
and *.eps) to filter out the image files in the directories. If left
blank all files are included.
\anchor cfg_input_filter \anchor cfg_input_filter
<dt>\c INPUT_FILTER <dd> <dt>\c INPUT_FILTER <dd>
\addindex INPUT_FILTER \addindex INPUT_FILTER
......
...@@ -56,6 +56,25 @@ as <code>PREPROCESSING = YES</code>. ...@@ -56,6 +56,25 @@ as <code>PREPROCESSING = YES</code>.
Look at section \ref preprocessing for the answer. Look at section \ref preprocessing for the answer.
<li><b>How can I change what's after the <code>#include</code> in class documentation?</b>
You can document your class like
\verbatim
/*! \class MyClassName include.h path/include.h
*
* Docs for MyClassName
*/
\endverbatim
To make doxygen put <br><br>
<code>
#include <path/include.h>
</code>
in the documentation of the class MyClassName regardless of the name of the actual
header file in which the definition of MyClassName is contained.
</ol> </ol>
*/ */
...@@ -14,24 +14,8 @@ ...@@ -14,24 +14,8 @@
* *
*/ */
/*! \page history Doxygen History /*! \page history Doxygen History
<h3>TODO/Wish list</h3>
<ul>
<li>Add support for grouping members, and document then as a group.
<li>Support for K&R-style function arguments.
<li>More ouput formats: suggested are info format and RTF format.
<li>Split long lists in an index to a set of smaller lists.
<li>Add a nice graphical front-end for creating and modifying the
configuration file (it should be flexible enough to quickly add new options).
<li>Improve the search index generation, so it uses less memory and
is easier to get running.
<li>Generate code metrics (Anyone know a good book about code metrics?)
<li>Add features that you think are missing... So if you know any that are
not yet listed here, please let me know.
</ul>
<h3>Features scheduled for version 1.0</h3> <h3>Features scheduled for version 1.0</h3>
<ul> <ul>
<li>Include LaTeX style formulas in LaTeX and HTML output (in HTML as a gif). <li>Include LaTeX style formulas in LaTeX and HTML output (in HTML as a gif).
......
...@@ -184,6 +184,7 @@ Patrick Alberts, ...@@ -184,6 +184,7 @@ Patrick Alberts,
Jacques Tremblay, Jacques Tremblay,
John Sturton, John Sturton,
Moshe Kruger, Moshe Kruger,
David Wong,
and many others for suggestions, patches and bug reports. and many others for suggestions, patches and bug reports.
</ul> </ul>
*/ */
......
...@@ -100,18 +100,6 @@ Here is a list of the languages and their current maintainers: ...@@ -100,18 +100,6 @@ Here is a list of the languages and their current maintainers:
borco@NOSPAM.borco-ei.eng.hokudai.ac.jp</a> borco@NOSPAM.borco-ei.eng.hokudai.ac.jp</a>
</TD> </TD>
</TR> </TR>
<TR BGCOLOR="#ffffff">
<TD>
Polish
</TD>
<TD>
Piotr Piatkowski
</TD>
<TD>
<a href="mailto:kompas@NOSPAM.ceti.com.pl">
kompas@NOSPAM.ceti.com.pl</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD> <TD>
Italian Italian
...@@ -209,8 +197,6 @@ Here is a list of the languages and their current maintainers: ...@@ -209,8 +197,6 @@ Here is a list of the languages and their current maintainers:
\hline \hline
Romanian & Ionutz Borcoman & {\tt borco@borco-ei.eng.hokudai.ac.jp} \\ Romanian & Ionutz Borcoman & {\tt borco@borco-ei.eng.hokudai.ac.jp} \\
\hline \hline
Polish & Piotr Piatkowski & {\tt kompas@ceti.com.pl} \\
\hline
Italian & Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} \\ Italian & Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} \\
& Alessandro Falappa & {\tt a.falappa@flashnet.it} \\ & Alessandro Falappa & {\tt a.falappa@flashnet.it} \\
\hline \hline
......
/******************************************************************************
*
* $Id$
*
* Copyright (C) 1997-1999 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* All output generated with Doxygen is not covered by this license.
*
*/
/*! \page todo Doxygen TODO's
<h3>TODO/Wish list</h3>
<ul>
<li>Expand namespaces in the file docs with the contents that are
specific to the file (maybe also expand the classes inside a namespace).
<li>Add support for grouping members, and document then as a group.
<li>Support for K&R-style function arguments.
<li>More output formats: suggested are info format and RTF format.
<li>Split long lists in an index to a set of smaller lists.
<li>Add a nice graphical front-end for creating and modifying the
configuration file (it should be flexible enough to quickly add new options).
<li>Improve the search index generation, so it uses less memory and
is easier to get running.
<li>Generate code metrics (Anyone know a good book about code metrics?)
<li>Add features that you think are missing... So if you know any that are
not yet listed here, please let me know.
</ul>
*/
...@@ -1201,6 +1201,97 @@ static int anchorCount; ...@@ -1201,6 +1201,97 @@ static int anchorCount;
static FileDef *sourceFileDef; static FileDef *sourceFileDef;
static QCString lastVariable; static QCString lastVariable;
// start a new line of code, inserting a line number if sourceFileDef
// 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)
{
if (sourceFileDef)
{
QCString lineNumber,lineAnchor;
lineNumber.sprintf("%05d ",yyLineNr);
lineAnchor.sprintf("l%05d",yyLineNr);
Definition *d = sourceFileDef->getSourceDefinition(yyLineNr);
QCString anchor = sourceFileDef->getSourceAnchor(yyLineNr);
if (d && d->isLinkableInProject())
{
ol.startCodeAnchor(lineAnchor);
ol.writeCodeLink(d->getReference(),d->getOutputFileBase(),
anchor,lineNumber);
ol.endCodeAnchor();
}
else
{
ol.codify(lineNumber);
}
}
ol.startCodeLine();
}
// write a code fragment `text' that may span multiple lines, inserting
// line numbers for each line.
static void codifyLines(char *text)
{
char *p=text,*sp=p;
char c;
bool done=FALSE;
while (!done)
{
sp=p;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
code->codify(sp);
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine(*code);
}
}
else
{
code->codify(sp);
done=TRUE;
}
}
}
// writes a link to a fragment `text' that may span multiple lines, inserting
// line numbers for each line. If `text' contains newlines, the link will be
// split into multiple links with the same destination, one for each line.
static void writeMultiLineCodeLink(OutputList &ol,
const char *ref,const char *file,
const char *anchor,const char *text)
{
bool done=FALSE;
QCString ts = text;
char *p=ts.data();
while (!done)
{
char *sp=p;
char c;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
ol.writeCodeLink(ref,file,anchor,sp);
ol.endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine(ol);
}
}
else
{
ol.writeCodeLink(ref,file,anchor,sp);
done=TRUE;
}
}
}
static void addType() static void addType()
{ {
if (name=="const") { name.resize(0); return; } if (name=="const") { name.resize(0); return; }
...@@ -1258,7 +1349,7 @@ static void addParameter() ...@@ -1258,7 +1349,7 @@ static void addParameter()
} }
} }
static void generateClassLink(OutputList &ol,const char *clName) static void generateClassLink(OutputList &ol,char *clName)
{ {
QCString className=clName; QCString className=clName;
if (className.length()==0) return; if (className.length()==0) return;
...@@ -1280,11 +1371,12 @@ static void generateClassLink(OutputList &ol,const char *clName) ...@@ -1280,11 +1371,12 @@ static void generateClassLink(OutputList &ol,const char *clName)
anchorCount++; anchorCount++;
} }
} }
ol.writeCodeLink(cd->getReference(),cd->getOutputFileBase(),0,className); //ol.writeCodeLink(cd->getReference(),cd->getOutputFileBase(),0,className);
writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,className);
} }
else else
{ {
ol.codify(clName); codifyLines(clName);
} }
} }
...@@ -1323,8 +1415,10 @@ static bool getLink(const char *className, ...@@ -1323,8 +1415,10 @@ static bool getLink(const char *className,
if (d) if (d)
{ {
//printf("d->getOutputBase()=`%s' name=`%s'\n",d->getOutputFileBase().data(),md->name().data()); //printf("d->getOutputBase()=`%s' name=`%s'\n",d->getOutputFileBase().data(),md->name().data());
result.writeCodeLink(d->getReference(),d->getOutputFileBase(), //result.writeCodeLink(d->getReference(),d->getOutputFileBase(),
md->anchor(),text ? text : memberName); // md->anchor(),text ? text : memberName);
writeMultiLineCodeLink(result,d->getReference(),d->getOutputFileBase(),
md->anchor(),text ? text : memberName);
return TRUE; return TRUE;
} }
} }
...@@ -1346,7 +1440,7 @@ static ClassDef *stripClassName(const char *s) ...@@ -1346,7 +1440,7 @@ static ClassDef *stripClassName(const char *s)
} }
static void generateMemberLink(OutputList &ol,const char *varName, static void generateMemberLink(OutputList &ol,const char *varName,
const char *memName) char *memName)
{ {
//printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n", //printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n",
// varName,memName,classScope.data()); // varName,memName,classScope.data());
...@@ -1393,7 +1487,7 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -1393,7 +1487,7 @@ static void generateMemberLink(OutputList &ol,const char *varName,
} }
else else
{ {
ol.codify(memName); codifyLines(memName);
} }
return; return;
} }
...@@ -1420,34 +1514,51 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -1420,34 +1514,51 @@ static void generateMemberLink(OutputList &ol,const char *varName,
MemberName *mmn=memberNameDict[memName]; MemberName *mmn=memberNameDict[memName];
if (mmn) if (mmn)
{ {
MemberNameIterator mmni(*mmn); MemberNameIterator mmni(*mmn);
MemberDef *mmd; MemberDef *mmd;
for (;(mmd=mmni.current());++mmni) for (;(mmd=mmni.current());++mmni)
{
if (mmd->memberClass()==mcd)
{ {
ol.writeCodeLink(mcd->getReference(),mcd->getOutputFileBase(), if (mmd->memberClass()==mcd)
mmd->anchor(),memName); {
return; //ol.writeCodeLink(mcd->getReference(),mcd->getOutputFileBase(),
// mmd->anchor(),memName);
writeMultiLineCodeLink(ol,mcd->getReference(),
mcd->getOutputFileBase(),mmd->anchor(),memName);
return;
}
} }
} }
}
} }
} }
} }
} }
} }
} }
ol.codify(memName); codifyLines(memName);
return; return;
} }
static void generateFunctionLink(OutputList &ol,const char *funcName) static QCString removeWhiteSpace(const char *s)
{
QCString result;
if (s)
{
const char *p=s;
int c;
while ((c=*p++))
{
if (c!=' ' && c!='\n' && c!='\r' && c!='\t') result+=c;
}
}
return result;
}
static void generateFunctionLink(OutputList &ol,char *funcName)
{ {
OutputList result(&ol); OutputList result(&ol);
CodeClassDef *ccd=0; CodeClassDef *ccd=0;
QCString locScope=classScope.copy(); QCString locScope=classScope.copy();
QCString locFunc=funcName; QCString locFunc=removeWhiteSpace(funcName);
int i=locFunc.findRev("::"); int i=locFunc.findRev("::");
if (i>0) if (i>0)
{ {
...@@ -1475,7 +1586,7 @@ static void generateFunctionLink(OutputList &ol,const char *funcName) ...@@ -1475,7 +1586,7 @@ static void generateFunctionLink(OutputList &ol,const char *funcName)
} }
else else
{ {
ol.codify(funcName); codifyLines(funcName);
} }
return; return;
} }
...@@ -1490,66 +1601,6 @@ static int countLines() ...@@ -1490,66 +1601,6 @@ static int countLines()
return count; return count;
} }
static void startCodeLine()
{
if (sourceFileDef)
{
QCString lineNumber,lineAnchor;
lineNumber.sprintf("%05d ",yyLineNr);
lineAnchor.sprintf("l%05d",yyLineNr);
//MemberDef *md = sourceFileDef->getSourceDefinition(yyLineNr);
//Definition *d=0;
//if (md)
//{
// d=md->memberClass();
// if (!d) d=md->getFileDef();
//}
//if (md && d)
Definition *d = sourceFileDef->getSourceDefinition(yyLineNr);
QCString anchor = sourceFileDef->getSourceAnchor(yyLineNr);
if (d && d->isLinkableInProject())
{
code->startCodeAnchor(lineAnchor);
code->writeCodeLink(d->getReference(),d->getOutputFileBase(),
anchor,lineNumber);
code->endCodeAnchor();
}
else
{
code->codify(lineNumber);
}
}
code->startCodeLine();
}
static void codifyLines(char *text)
{
char *p=text,*sp=p;
char c;
bool done=FALSE;
while (!done)
{
sp=p;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
code->codify(sp);
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine();
}
}
else
{
code->codify(sp);
done=TRUE;
}
}
}
/* ----------------------------------------------------------------- /* -----------------------------------------------------------------
*/ */
#undef YY_INPUT #undef YY_INPUT
...@@ -1749,7 +1800,7 @@ YY_DECL ...@@ -1749,7 +1800,7 @@ YY_DECL
register char *yy_cp, *yy_bp; register char *yy_cp, *yy_bp;
register int yy_act; register int yy_act;
#line 502 "code.l" #line 553 "code.l"
...@@ -1858,12 +1909,12 @@ do_action: /* This label is used only to access EOF actions. */ ...@@ -1858,12 +1909,12 @@ do_action: /* This label is used only to access EOF actions. */
{ /* beginning of action switch */ { /* beginning of action switch */
case 1: case 1:
YY_RULE_SETUP YY_RULE_SETUP
#line 504 "code.l" #line 555 "code.l"
YY_BREAK YY_BREAK
case 2: case 2:
YY_RULE_SETUP YY_RULE_SETUP
#line 505 "code.l" #line 556 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
BEGIN( ReadInclude ); BEGIN( ReadInclude );
...@@ -1871,7 +1922,7 @@ YY_RULE_SETUP ...@@ -1871,7 +1922,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 3: case 3:
YY_RULE_SETUP YY_RULE_SETUP
#line 509 "code.l" #line 560 "code.l"
{ {
codifyLines(yytext); codifyLines(yytext);
//code->codify(yytext); //code->codify(yytext);
...@@ -1880,7 +1931,7 @@ YY_RULE_SETUP ...@@ -1880,7 +1931,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 4: case 4:
YY_RULE_SETUP YY_RULE_SETUP
#line 514 "code.l" #line 565 "code.l"
{ {
//FileInfo *f; //FileInfo *f;
bool ambig; bool ambig;
...@@ -1903,7 +1954,7 @@ YY_RULE_SETUP ...@@ -1903,7 +1954,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 5: case 5:
YY_RULE_SETUP YY_RULE_SETUP
#line 533 "code.l" #line 584 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
BEGIN( SkipCPP ) ; BEGIN( SkipCPP ) ;
...@@ -1911,21 +1962,21 @@ YY_RULE_SETUP ...@@ -1911,21 +1962,21 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 6: case 6:
YY_RULE_SETUP YY_RULE_SETUP
#line 537 "code.l" #line 588 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 7: case 7:
YY_RULE_SETUP YY_RULE_SETUP
#line 540 "code.l" #line 591 "code.l"
{ {
codifyLines(yytext); codifyLines(yytext);
} }
YY_BREAK YY_BREAK
case 8: case 8:
YY_RULE_SETUP YY_RULE_SETUP
#line 543 "code.l" #line 594 "code.l"
{ {
codifyLines(yytext); codifyLines(yytext);
BEGIN( Body ) ; BEGIN( Body ) ;
...@@ -1933,14 +1984,14 @@ YY_RULE_SETUP ...@@ -1933,14 +1984,14 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 9: case 9:
YY_RULE_SETUP YY_RULE_SETUP
#line 547 "code.l" #line 598 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 10: case 10:
YY_RULE_SETUP YY_RULE_SETUP
#line 550 "code.l" #line 601 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
curlyCount++; curlyCount++;
...@@ -1949,7 +2000,7 @@ YY_RULE_SETUP ...@@ -1949,7 +2000,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 11: case 11:
YY_RULE_SETUP YY_RULE_SETUP
#line 555 "code.l" #line 606 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
inClass=FALSE; inClass=FALSE;
...@@ -1962,7 +2013,7 @@ YY_RULE_SETUP ...@@ -1962,7 +2013,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 12: case 12:
YY_RULE_SETUP YY_RULE_SETUP
#line 564 "code.l" #line 615 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
BEGIN( Body ); BEGIN( Body );
...@@ -1970,7 +2021,7 @@ YY_RULE_SETUP ...@@ -1970,7 +2021,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 13: case 13:
YY_RULE_SETUP YY_RULE_SETUP
#line 568 "code.l" #line 619 "code.l"
{ {
addType(); addType();
code->codify(yytext); code->codify(yytext);
...@@ -1978,7 +2029,7 @@ YY_RULE_SETUP ...@@ -1978,7 +2029,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 14: case 14:
YY_RULE_SETUP YY_RULE_SETUP
#line 572 "code.l" #line 623 "code.l"
{ {
ccd.name=yytext; ccd.name=yytext;
addType(); addType();
...@@ -1987,7 +2038,7 @@ YY_RULE_SETUP ...@@ -1987,7 +2038,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 15: case 15:
YY_RULE_SETUP YY_RULE_SETUP
#line 577 "code.l" #line 628 "code.l"
{ {
codifyLines(yytext); codifyLines(yytext);
BEGIN( Bases ); BEGIN( Bases );
...@@ -1995,7 +2046,7 @@ YY_RULE_SETUP ...@@ -1995,7 +2046,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 16: case 16:
YY_RULE_SETUP YY_RULE_SETUP
#line 581 "code.l" #line 632 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
curlyCount++; curlyCount++;
...@@ -2012,35 +2063,35 @@ YY_RULE_SETUP ...@@ -2012,35 +2063,35 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 17: case 17:
YY_RULE_SETUP YY_RULE_SETUP
#line 594 "code.l" #line 645 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 18: case 18:
YY_RULE_SETUP YY_RULE_SETUP
#line 597 "code.l" #line 648 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 19: case 19:
YY_RULE_SETUP YY_RULE_SETUP
#line 600 "code.l" #line 651 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 20: case 20:
YY_RULE_SETUP YY_RULE_SETUP
#line 603 "code.l" #line 654 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 21: case 21:
YY_RULE_SETUP YY_RULE_SETUP
#line 606 "code.l" #line 657 "code.l"
{ {
//printf("%s:addBase(%s)\n",ccd.name.data(),yytext); //printf("%s:addBase(%s)\n",ccd.name.data(),yytext);
ccd.bases.inSort(yytext); ccd.bases.inSort(yytext);
...@@ -2049,7 +2100,7 @@ YY_RULE_SETUP ...@@ -2049,7 +2100,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 22: case 22:
YY_RULE_SETUP YY_RULE_SETUP
#line 611 "code.l" #line 662 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
sharpCount=1; sharpCount=1;
...@@ -2058,7 +2109,7 @@ YY_RULE_SETUP ...@@ -2058,7 +2109,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 23: case 23:
YY_RULE_SETUP YY_RULE_SETUP
#line 616 "code.l" #line 667 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
++sharpCount; ++sharpCount;
...@@ -2066,7 +2117,7 @@ YY_RULE_SETUP ...@@ -2066,7 +2117,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 24: case 24:
YY_RULE_SETUP YY_RULE_SETUP
#line 620 "code.l" #line 671 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
if (--sharpCount<=0) if (--sharpCount<=0)
...@@ -2075,7 +2126,7 @@ YY_RULE_SETUP ...@@ -2075,7 +2126,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 25: case 25:
YY_RULE_SETUP YY_RULE_SETUP
#line 625 "code.l" #line 676 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
...@@ -2085,7 +2136,7 @@ case 26: ...@@ -2085,7 +2136,7 @@ case 26:
yy_c_buf_p = yy_cp -= 1; yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 630 "code.l" #line 681 "code.l"
{ {
codifyLines(yytext); codifyLines(yytext);
name.resize(0);type.resize(0); name.resize(0);type.resize(0);
...@@ -2093,7 +2144,7 @@ YY_RULE_SETUP ...@@ -2093,7 +2144,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 27: case 27:
YY_RULE_SETUP YY_RULE_SETUP
#line 634 "code.l" #line 685 "code.l"
{ {
codifyLines(yytext); codifyLines(yytext);
name.resize(0);type.resize(0); name.resize(0);type.resize(0);
...@@ -2108,7 +2159,7 @@ YY_RULE_SETUP ...@@ -2108,7 +2159,7 @@ YY_RULE_SETUP
*/ */
case 28: case 28:
YY_RULE_SETUP YY_RULE_SETUP
#line 645 "code.l" #line 696 "code.l"
{ {
generateClassLink(*code,yytext); generateClassLink(*code,yytext);
//codifyLines(yytext); //codifyLines(yytext);
...@@ -2118,7 +2169,7 @@ YY_RULE_SETUP ...@@ -2118,7 +2169,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 29: case 29:
YY_RULE_SETUP YY_RULE_SETUP
#line 651 "code.l" #line 702 "code.l"
{ {
addType(); addType();
//if (type.length()==0) //if (type.length()==0)
...@@ -2134,7 +2185,7 @@ YY_RULE_SETUP ...@@ -2134,7 +2185,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 30: case 30:
YY_RULE_SETUP YY_RULE_SETUP
#line 663 "code.l" #line 714 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
lastStringContext=YY_START; lastStringContext=YY_START;
...@@ -2143,21 +2194,21 @@ YY_RULE_SETUP ...@@ -2143,21 +2194,21 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 31: case 31:
YY_RULE_SETUP YY_RULE_SETUP
#line 668 "code.l" #line 719 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 32: case 32:
YY_RULE_SETUP YY_RULE_SETUP
#line 671 "code.l" #line 722 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 33: case 33:
YY_RULE_SETUP YY_RULE_SETUP
#line 674 "code.l" #line 725 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
BEGIN( lastStringContext ); BEGIN( lastStringContext );
...@@ -2165,14 +2216,14 @@ YY_RULE_SETUP ...@@ -2165,14 +2216,14 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 34: case 34:
YY_RULE_SETUP YY_RULE_SETUP
#line 678 "code.l" #line 729 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 35: case 35:
YY_RULE_SETUP YY_RULE_SETUP
#line 681 "code.l" #line 732 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
name.resize(0);type.resize(0); name.resize(0);type.resize(0);
...@@ -2180,14 +2231,14 @@ YY_RULE_SETUP ...@@ -2180,14 +2231,14 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 36: case 36:
YY_RULE_SETUP YY_RULE_SETUP
#line 685 "code.l" #line 736 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 37: case 37:
YY_RULE_SETUP YY_RULE_SETUP
#line 688 "code.l" #line 739 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
BEGIN( MemberCall ); BEGIN( MemberCall );
...@@ -2195,7 +2246,7 @@ YY_RULE_SETUP ...@@ -2195,7 +2246,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 38: case 38:
YY_RULE_SETUP YY_RULE_SETUP
#line 692 "code.l" #line 743 "code.l"
{ {
if (name.length()>0) if (name.length()>0)
generateMemberLink(*code,name,yytext); generateMemberLink(*code,name,yytext);
...@@ -2208,7 +2259,7 @@ YY_RULE_SETUP ...@@ -2208,7 +2259,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 39: case 39:
YY_RULE_SETUP YY_RULE_SETUP
#line 701 "code.l" #line 752 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
type.resize(0); type.resize(0);
...@@ -2218,7 +2269,7 @@ YY_RULE_SETUP ...@@ -2218,7 +2269,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 40: case 40:
YY_RULE_SETUP YY_RULE_SETUP
#line 707 "code.l" #line 758 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
if (type.length()>0) if (type.length()>0)
...@@ -2230,14 +2281,14 @@ YY_RULE_SETUP ...@@ -2230,14 +2281,14 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 41: case 41:
YY_RULE_SETUP YY_RULE_SETUP
#line 715 "code.l" #line 766 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 42: case 42:
YY_RULE_SETUP YY_RULE_SETUP
#line 718 "code.l" #line 769 "code.l"
{ {
addParmType(); addParmType();
parmName=yytext; parmName=yytext;
...@@ -2246,7 +2297,7 @@ YY_RULE_SETUP ...@@ -2246,7 +2297,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 43: case 43:
YY_RULE_SETUP YY_RULE_SETUP
#line 723 "code.l" #line 774 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
addParameter(); addParameter();
...@@ -2255,7 +2306,7 @@ YY_RULE_SETUP ...@@ -2255,7 +2306,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 44: case 44:
YY_RULE_SETUP YY_RULE_SETUP
#line 728 "code.l" #line 779 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
bracketCount++; bracketCount++;
...@@ -2263,7 +2314,7 @@ YY_RULE_SETUP ...@@ -2263,7 +2314,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 45: case 45:
YY_RULE_SETUP YY_RULE_SETUP
#line 732 "code.l" #line 783 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
if (--bracketCount<=0) if (--bracketCount<=0)
...@@ -2274,7 +2325,7 @@ YY_RULE_SETUP ...@@ -2274,7 +2325,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 46: case 46:
YY_RULE_SETUP YY_RULE_SETUP
#line 739 "code.l" #line 790 "code.l"
{ {
codifyLines(yytext); codifyLines(yytext);
bracketCount=0; bracketCount=0;
...@@ -2287,7 +2338,7 @@ YY_RULE_SETUP ...@@ -2287,7 +2338,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 47: case 47:
YY_RULE_SETUP YY_RULE_SETUP
#line 748 "code.l" #line 799 "code.l"
{ {
addParameter(); addParameter();
parmType.resize(0);parmName.resize(0); parmType.resize(0);parmName.resize(0);
...@@ -2300,7 +2351,7 @@ YY_RULE_SETUP ...@@ -2300,7 +2351,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 48: case 48:
YY_RULE_SETUP YY_RULE_SETUP
#line 757 "code.l" #line 808 "code.l"
{ {
addParameter(); addParameter();
parmType.resize(0);parmName.resize(0); parmType.resize(0);parmName.resize(0);
...@@ -2312,7 +2363,7 @@ YY_RULE_SETUP ...@@ -2312,7 +2363,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 49: case 49:
YY_RULE_SETUP YY_RULE_SETUP
#line 765 "code.l" #line 816 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
curlyCount++; curlyCount++;
...@@ -2321,7 +2372,7 @@ YY_RULE_SETUP ...@@ -2321,7 +2372,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 50: case 50:
YY_RULE_SETUP YY_RULE_SETUP
#line 770 "code.l" #line 821 "code.l"
{ {
generateClassLink(*code,yytext); generateClassLink(*code,yytext);
} }
...@@ -2331,14 +2382,14 @@ case 51: ...@@ -2331,14 +2382,14 @@ case 51:
yy_c_buf_p = yy_cp -= 1; yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 773 "code.l" #line 824 "code.l"
{ {
generateFunctionLink(*code,yytext); generateFunctionLink(*code,yytext);
} }
YY_BREAK YY_BREAK
case 52: case 52:
YY_RULE_SETUP YY_RULE_SETUP
#line 776 "code.l" #line 827 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
args=yytext; args=yytext;
...@@ -2347,7 +2398,7 @@ YY_RULE_SETUP ...@@ -2347,7 +2398,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 53: case 53:
YY_RULE_SETUP YY_RULE_SETUP
#line 781 "code.l" #line 832 "code.l"
{ {
if (args.length()>0) if (args.length()>0)
generateMemberLink(*code,args,yytext); generateMemberLink(*code,args,yytext);
...@@ -2359,7 +2410,7 @@ YY_RULE_SETUP ...@@ -2359,7 +2410,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 54: case 54:
YY_RULE_SETUP YY_RULE_SETUP
#line 789 "code.l" #line 840 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
args=yytext; args=yytext;
...@@ -2367,21 +2418,21 @@ YY_RULE_SETUP ...@@ -2367,21 +2418,21 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 55: case 55:
YY_RULE_SETUP YY_RULE_SETUP
#line 793 "code.l" #line 844 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 56: case 56:
YY_RULE_SETUP YY_RULE_SETUP
#line 796 "code.l" #line 847 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
YY_BREAK YY_BREAK
case 57: case 57:
YY_RULE_SETUP YY_RULE_SETUP
#line 799 "code.l" #line 850 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
BEGIN( lastCContext ) ; BEGIN( lastCContext ) ;
...@@ -2389,7 +2440,7 @@ YY_RULE_SETUP ...@@ -2389,7 +2440,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 58: case 58:
YY_RULE_SETUP YY_RULE_SETUP
#line 803 "code.l" #line 854 "code.l"
{ {
codifyLines(yytext); codifyLines(yytext);
BEGIN( lastCContext ) ; BEGIN( lastCContext ) ;
...@@ -2400,49 +2451,49 @@ case 59: ...@@ -2400,49 +2451,49 @@ case 59:
yy_c_buf_p = yy_cp -= 1; yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 807 "code.l" #line 858 "code.l"
{ {
yyLineNr+=QCString(yytext).contains('\n'); yyLineNr+=QCString(yytext).contains('\n');
} }
YY_BREAK YY_BREAK
case 60: case 60:
YY_RULE_SETUP YY_RULE_SETUP
#line 810 "code.l" #line 861 "code.l"
{ {
yyLineNr+=QCString(yytext).contains('\n'); yyLineNr+=QCString(yytext).contains('\n');
code->endCodeLine(); code->endCodeLine();
if (yyLineNr<inputLines) if (yyLineNr<inputLines)
{ {
startCodeLine(); startCodeLine(*code);
} }
BEGIN(lastSpecialCContext); BEGIN(lastSpecialCContext);
} }
YY_BREAK YY_BREAK
case 61: case 61:
YY_RULE_SETUP YY_RULE_SETUP
#line 819 "code.l" #line 870 "code.l"
{ {
BEGIN(lastSpecialCContext); BEGIN(lastSpecialCContext);
} }
YY_BREAK YY_BREAK
case 62: case 62:
YY_RULE_SETUP YY_RULE_SETUP
#line 822 "code.l" #line 873 "code.l"
YY_BREAK YY_BREAK
case 63: case 63:
YY_RULE_SETUP YY_RULE_SETUP
#line 823 "code.l" #line 874 "code.l"
YY_BREAK YY_BREAK
case 64: case 64:
YY_RULE_SETUP YY_RULE_SETUP
#line 824 "code.l" #line 875 "code.l"
{ yyLineNr++; } { yyLineNr++; }
YY_BREAK YY_BREAK
case 65: case 65:
YY_RULE_SETUP YY_RULE_SETUP
#line 825 "code.l" #line 876 "code.l"
YY_BREAK YY_BREAK
/* /*
...@@ -2471,31 +2522,31 @@ YY_RULE_SETUP ...@@ -2471,31 +2522,31 @@ YY_RULE_SETUP
*/ */
case 66: case 66:
YY_RULE_SETUP YY_RULE_SETUP
#line 850 "code.l" #line 901 "code.l"
{ // remove special one-line comment { // remove special one-line comment
yyLineNr+=((QCString)yytext).contains('\n'); yyLineNr+=((QCString)yytext).contains('\n');
code->endCodeLine(); code->endCodeLine();
if (yyLineNr<inputLines) if (yyLineNr<inputLines)
{ {
startCodeLine(); startCodeLine(*code);
} }
} }
YY_BREAK YY_BREAK
case 67: case 67:
YY_RULE_SETUP YY_RULE_SETUP
#line 858 "code.l" #line 909 "code.l"
{ // remove special one-line comment { // remove special one-line comment
yyLineNr++; yyLineNr++;
code->endCodeLine(); code->endCodeLine();
if (yyLineNr<inputLines) if (yyLineNr<inputLines)
{ {
startCodeLine(); startCodeLine(*code);
} }
} }
YY_BREAK YY_BREAK
case 68: case 68:
YY_RULE_SETUP YY_RULE_SETUP
#line 866 "code.l" #line 917 "code.l"
{ // strip special one-line comment { // strip special one-line comment
char c[2]; c[0]='\n'; c[1]=0; char c[2]; c[0]='\n'; c[1]=0;
codifyLines(c); codifyLines(c);
...@@ -2506,7 +2557,7 @@ case 69: ...@@ -2506,7 +2557,7 @@ case 69:
yy_c_buf_p = yy_cp -= 1; yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 870 "code.l" #line 921 "code.l"
{ {
lastSpecialCContext = YY_START; lastSpecialCContext = YY_START;
yyLineNr++; yyLineNr++;
...@@ -2518,7 +2569,7 @@ case 70: ...@@ -2518,7 +2569,7 @@ case 70:
yy_c_buf_p = yy_cp -= 1; yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 875 "code.l" #line 926 "code.l"
{ // special C comment block at a new line { // special C comment block at a new line
lastSpecialCContext = YY_START; lastSpecialCContext = YY_START;
BEGIN(RemoveSpecialCComment); BEGIN(RemoveSpecialCComment);
...@@ -2529,7 +2580,7 @@ case 71: ...@@ -2529,7 +2580,7 @@ case 71:
yy_c_buf_p = yy_cp = yy_bp + 3; yy_c_buf_p = yy_cp = yy_bp + 3;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 879 "code.l" #line 930 "code.l"
{ // special C comment block half way a line { // special C comment block half way a line
lastSpecialCContext = YY_START; lastSpecialCContext = YY_START;
BEGIN(RemoveSpecialCComment); BEGIN(RemoveSpecialCComment);
...@@ -2537,7 +2588,7 @@ YY_RULE_SETUP ...@@ -2537,7 +2588,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 72: case 72:
YY_RULE_SETUP YY_RULE_SETUP
#line 883 "code.l" #line 934 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
lastCContext = YY_START ; lastCContext = YY_START ;
...@@ -2546,7 +2597,7 @@ YY_RULE_SETUP ...@@ -2546,7 +2597,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 73: case 73:
YY_RULE_SETUP YY_RULE_SETUP
#line 888 "code.l" #line 939 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
lastCContext = YY_START ; lastCContext = YY_START ;
...@@ -2555,14 +2606,14 @@ YY_RULE_SETUP ...@@ -2555,14 +2606,14 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 74: case 74:
YY_RULE_SETUP YY_RULE_SETUP
#line 893 "code.l" #line 944 "code.l"
{ {
codifyLines(yytext); codifyLines(yytext);
} }
YY_BREAK YY_BREAK
case 75: case 75:
YY_RULE_SETUP YY_RULE_SETUP
#line 896 "code.l" #line 947 "code.l"
{ {
code->codify(yytext); code->codify(yytext);
} }
...@@ -2578,7 +2629,7 @@ YY_RULE_SETUP ...@@ -2578,7 +2629,7 @@ YY_RULE_SETUP
*/ */
case 76: case 76:
YY_RULE_SETUP YY_RULE_SETUP
#line 909 "code.l" #line 960 "code.l"
ECHO; ECHO;
YY_BREAK YY_BREAK
case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INITIAL):
...@@ -3477,7 +3528,7 @@ int main() ...@@ -3477,7 +3528,7 @@ int main()
return 0; return 0;
} }
#endif #endif
#line 909 "code.l" #line 960 "code.l"
/*@ ---------------------------------------------------------------------------- /*@ ----------------------------------------------------------------------------
...@@ -3500,7 +3551,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s, ...@@ -3500,7 +3551,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
bool exBlock, const char *exName,FileDef *fd) bool exBlock, const char *exName,FileDef *fd)
{ {
code = new OutputList(&ol); code = new OutputList(&ol);
if (s.length()==0) return; if (s.isEmpty()) return;
inputString = s; inputString = s;
inputPosition = 0; inputPosition = 0;
inputLines = countLines(); inputLines = countLines();
...@@ -3513,7 +3564,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s, ...@@ -3513,7 +3564,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
exampleName = exName; exampleName = exName;
sourceFileDef = fd; sourceFileDef = fd;
exampleFile = convertSlashes(exampleName,TRUE)+"-example"; exampleFile = convertSlashes(exampleName,TRUE)+"-example";
startCodeLine(); startCodeLine(*code);
type.resize(0); type.resize(0);
name.resize(0); name.resize(0);
args.resize(0); args.resize(0);
......
...@@ -109,6 +109,97 @@ static int anchorCount; ...@@ -109,6 +109,97 @@ static int anchorCount;
static FileDef *sourceFileDef; static FileDef *sourceFileDef;
static QCString lastVariable; static QCString lastVariable;
// start a new line of code, inserting a line number if sourceFileDef
// 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)
{
if (sourceFileDef)
{
QCString lineNumber,lineAnchor;
lineNumber.sprintf("%05d ",yyLineNr);
lineAnchor.sprintf("l%05d",yyLineNr);
Definition *d = sourceFileDef->getSourceDefinition(yyLineNr);
QCString anchor = sourceFileDef->getSourceAnchor(yyLineNr);
if (d && d->isLinkableInProject())
{
ol.startCodeAnchor(lineAnchor);
ol.writeCodeLink(d->getReference(),d->getOutputFileBase(),
anchor,lineNumber);
ol.endCodeAnchor();
}
else
{
ol.codify(lineNumber);
}
}
ol.startCodeLine();
}
// write a code fragment `text' that may span multiple lines, inserting
// line numbers for each line.
static void codifyLines(char *text)
{
char *p=text,*sp=p;
char c;
bool done=FALSE;
while (!done)
{
sp=p;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
code->codify(sp);
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine(*code);
}
}
else
{
code->codify(sp);
done=TRUE;
}
}
}
// writes a link to a fragment `text' that may span multiple lines, inserting
// line numbers for each line. If `text' contains newlines, the link will be
// split into multiple links with the same destination, one for each line.
static void writeMultiLineCodeLink(OutputList &ol,
const char *ref,const char *file,
const char *anchor,const char *text)
{
bool done=FALSE;
QCString ts = text;
char *p=ts.data();
while (!done)
{
char *sp=p;
char c;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
ol.writeCodeLink(ref,file,anchor,sp);
ol.endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine(ol);
}
}
else
{
ol.writeCodeLink(ref,file,anchor,sp);
done=TRUE;
}
}
}
static void addType() static void addType()
{ {
if (name=="const") { name.resize(0); return; } if (name=="const") { name.resize(0); return; }
...@@ -166,7 +257,7 @@ static void addParameter() ...@@ -166,7 +257,7 @@ static void addParameter()
} }
} }
static void generateClassLink(OutputList &ol,const char *clName) static void generateClassLink(OutputList &ol,char *clName)
{ {
QCString className=clName; QCString className=clName;
if (className.length()==0) return; if (className.length()==0) return;
...@@ -188,11 +279,12 @@ static void generateClassLink(OutputList &ol,const char *clName) ...@@ -188,11 +279,12 @@ static void generateClassLink(OutputList &ol,const char *clName)
anchorCount++; anchorCount++;
} }
} }
ol.writeCodeLink(cd->getReference(),cd->getOutputFileBase(),0,className); //ol.writeCodeLink(cd->getReference(),cd->getOutputFileBase(),0,className);
writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,className);
} }
else else
{ {
ol.codify(clName); codifyLines(clName);
} }
} }
...@@ -231,8 +323,10 @@ static bool getLink(const char *className, ...@@ -231,8 +323,10 @@ static bool getLink(const char *className,
if (d) if (d)
{ {
//printf("d->getOutputBase()=`%s' name=`%s'\n",d->getOutputFileBase().data(),md->name().data()); //printf("d->getOutputBase()=`%s' name=`%s'\n",d->getOutputFileBase().data(),md->name().data());
result.writeCodeLink(d->getReference(),d->getOutputFileBase(), //result.writeCodeLink(d->getReference(),d->getOutputFileBase(),
md->anchor(),text ? text : memberName); // md->anchor(),text ? text : memberName);
writeMultiLineCodeLink(result,d->getReference(),d->getOutputFileBase(),
md->anchor(),text ? text : memberName);
return TRUE; return TRUE;
} }
} }
...@@ -254,7 +348,7 @@ static ClassDef *stripClassName(const char *s) ...@@ -254,7 +348,7 @@ static ClassDef *stripClassName(const char *s)
} }
static void generateMemberLink(OutputList &ol,const char *varName, static void generateMemberLink(OutputList &ol,const char *varName,
const char *memName) char *memName)
{ {
//printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n", //printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n",
// varName,memName,classScope.data()); // varName,memName,classScope.data());
...@@ -301,7 +395,7 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -301,7 +395,7 @@ static void generateMemberLink(OutputList &ol,const char *varName,
} }
else else
{ {
ol.codify(memName); codifyLines(memName);
} }
return; return;
} }
...@@ -328,34 +422,51 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -328,34 +422,51 @@ static void generateMemberLink(OutputList &ol,const char *varName,
MemberName *mmn=memberNameDict[memName]; MemberName *mmn=memberNameDict[memName];
if (mmn) if (mmn)
{ {
MemberNameIterator mmni(*mmn); MemberNameIterator mmni(*mmn);
MemberDef *mmd; MemberDef *mmd;
for (;(mmd=mmni.current());++mmni) for (;(mmd=mmni.current());++mmni)
{
if (mmd->memberClass()==mcd)
{ {
ol.writeCodeLink(mcd->getReference(),mcd->getOutputFileBase(), if (mmd->memberClass()==mcd)
mmd->anchor(),memName); {
return; //ol.writeCodeLink(mcd->getReference(),mcd->getOutputFileBase(),
// mmd->anchor(),memName);
writeMultiLineCodeLink(ol,mcd->getReference(),
mcd->getOutputFileBase(),mmd->anchor(),memName);
return;
}
} }
} }
}
} }
} }
} }
} }
} }
} }
ol.codify(memName); codifyLines(memName);
return; return;
} }
static void generateFunctionLink(OutputList &ol,const char *funcName) static QCString removeWhiteSpace(const char *s)
{
QCString result;
if (s)
{
const char *p=s;
int c;
while ((c=*p++))
{
if (c!=' ' && c!='\n' && c!='\r' && c!='\t') result+=c;
}
}
return result;
}
static void generateFunctionLink(OutputList &ol,char *funcName)
{ {
OutputList result(&ol); OutputList result(&ol);
CodeClassDef *ccd=0; CodeClassDef *ccd=0;
QCString locScope=classScope.copy(); QCString locScope=classScope.copy();
QCString locFunc=funcName; QCString locFunc=removeWhiteSpace(funcName);
int i=locFunc.findRev("::"); int i=locFunc.findRev("::");
if (i>0) if (i>0)
{ {
...@@ -383,7 +494,7 @@ static void generateFunctionLink(OutputList &ol,const char *funcName) ...@@ -383,7 +494,7 @@ static void generateFunctionLink(OutputList &ol,const char *funcName)
} }
else else
{ {
ol.codify(funcName); codifyLines(funcName);
} }
return; return;
} }
...@@ -398,66 +509,6 @@ static int countLines() ...@@ -398,66 +509,6 @@ static int countLines()
return count; return count;
} }
static void startCodeLine()
{
if (sourceFileDef)
{
QCString lineNumber,lineAnchor;
lineNumber.sprintf("%05d ",yyLineNr);
lineAnchor.sprintf("l%05d",yyLineNr);
//MemberDef *md = sourceFileDef->getSourceDefinition(yyLineNr);
//Definition *d=0;
//if (md)
//{
// d=md->memberClass();
// if (!d) d=md->getFileDef();
//}
//if (md && d)
Definition *d = sourceFileDef->getSourceDefinition(yyLineNr);
QCString anchor = sourceFileDef->getSourceAnchor(yyLineNr);
if (d && d->isLinkableInProject())
{
code->startCodeAnchor(lineAnchor);
code->writeCodeLink(d->getReference(),d->getOutputFileBase(),
anchor,lineNumber);
code->endCodeAnchor();
}
else
{
code->codify(lineNumber);
}
}
code->startCodeLine();
}
static void codifyLines(char *text)
{
char *p=text,*sp=p;
char c;
bool done=FALSE;
while (!done)
{
sp=p;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
code->codify(sp);
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine();
}
}
else
{
code->codify(sp);
done=TRUE;
}
}
}
/* ----------------------------------------------------------------- /* -----------------------------------------------------------------
*/ */
#undef YY_INPUT #undef YY_INPUT
...@@ -812,7 +863,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -812,7 +863,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
code->endCodeLine(); code->endCodeLine();
if (yyLineNr<inputLines) if (yyLineNr<inputLines)
{ {
startCodeLine(); startCodeLine(*code);
} }
BEGIN(lastSpecialCContext); BEGIN(lastSpecialCContext);
} }
...@@ -852,7 +903,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -852,7 +903,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
code->endCodeLine(); code->endCodeLine();
if (yyLineNr<inputLines) if (yyLineNr<inputLines)
{ {
startCodeLine(); startCodeLine(*code);
} }
} }
<*>^{B}*"//"[!/][^\n]*\n { // remove special one-line comment <*>^{B}*"//"[!/][^\n]*\n { // remove special one-line comment
...@@ -860,7 +911,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -860,7 +911,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
code->endCodeLine(); code->endCodeLine();
if (yyLineNr<inputLines) if (yyLineNr<inputLines)
{ {
startCodeLine(); startCodeLine(*code);
} }
} }
<*>"//"[!/][^\n]*\n { // strip special one-line comment <*>"//"[!/][^\n]*\n { // strip special one-line comment
...@@ -928,7 +979,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s, ...@@ -928,7 +979,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
bool exBlock, const char *exName,FileDef *fd) bool exBlock, const char *exName,FileDef *fd)
{ {
code = new OutputList(&ol); code = new OutputList(&ol);
if (s.length()==0) return; if (s.isEmpty()) return;
inputString = s; inputString = s;
inputPosition = 0; inputPosition = 0;
inputLines = countLines(); inputLines = countLines();
...@@ -941,7 +992,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s, ...@@ -941,7 +992,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
exampleName = exName; exampleName = exName;
sourceFileDef = fd; sourceFileDef = fd;
exampleFile = convertSlashes(exampleName,TRUE)+"-example"; exampleFile = convertSlashes(exampleName,TRUE)+"-example";
startCodeLine(); startCodeLine(*code);
type.resize(0); type.resize(0);
name.resize(0); name.resize(0);
args.resize(0); args.resize(0);
......
...@@ -3170,7 +3170,7 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -3170,7 +3170,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl) if (!sl)
{ {
t << "\n"; t << "\n";
t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab\n"; t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab.\n";
t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n"; t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n";
t << "\n"; t << "\n";
} }
...@@ -3259,16 +3259,6 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -3259,16 +3259,6 @@ void writeTemplateConfig(QFile *f,bool sl)
} }
t << "IMAGE_PATH =\n"; t << "IMAGE_PATH =\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# If the value of the IMAGE_PATH tag contains directories, you can use the\n";
t << "# IMAGE_PATTERNS tag to specify one or more wildcard pattern (like *.gif \n";
t << "# and *.eps) to filter out the image files in the directories. If left \n";
t << "# blank all files are included.\n";
t << "\n";
}
t << "IMAGE_PATTERNS =\n";
if (!sl)
{ {
t << "\n"; t << "\n";
t << "# The INPUT_FILTER tag can be used to specify a program that doxygen should\n"; t << "# The INPUT_FILTER tag can be used to specify a program that doxygen should\n";
......
...@@ -707,7 +707,7 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -707,7 +707,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl) if (!sl)
{ {
t << "\n"; t << "\n";
t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab\n"; t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab.\n";
t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n"; t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n";
t << "\n"; t << "\n";
} }
...@@ -796,16 +796,6 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -796,16 +796,6 @@ void writeTemplateConfig(QFile *f,bool sl)
} }
t << "IMAGE_PATH =\n"; t << "IMAGE_PATH =\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# If the value of the IMAGE_PATH tag contains directories, you can use the\n";
t << "# IMAGE_PATTERNS tag to specify one or more wildcard pattern (like *.gif \n";
t << "# and *.eps) to filter out the image files in the directories. If left \n";
t << "# blank all files are included.\n";
t << "\n";
}
t << "IMAGE_PATTERNS =\n";
if (!sl)
{ {
t << "\n"; t << "\n";
t << "# The INPUT_FILTER tag can be used to specify a program that doxygen should\n"; t << "# The INPUT_FILTER tag can be used to specify a program that doxygen should\n";
......
...@@ -43,6 +43,8 @@ static int labelToEnumValue(const char *l) ...@@ -43,6 +43,8 @@ static int labelToEnumValue(const char *l)
return Debug::Functions; return Debug::Functions;
else if (label=="Variables") else if (label=="Variables")
return Debug::Variables; return Debug::Variables;
else if (label=="Preprocessor")
return Debug::Preprocessor;
else else
return 0; return 0;
} }
...@@ -61,3 +63,8 @@ void Debug::setPriority(int p) ...@@ -61,3 +63,8 @@ void Debug::setPriority(int p)
{ {
curPrio = p; curPrio = p;
} }
bool Debug::isFlagSet(DebugMask mask)
{
return (curMask & mask)!=0;
}
...@@ -21,14 +21,16 @@ ...@@ -21,14 +21,16 @@
class Debug class Debug
{ {
public: public:
enum DebugMask { Quiet = 0x00000000, enum DebugMask { Quiet = 0x00000000,
FindMembers = 0x00000001, FindMembers = 0x00000001,
Functions = 0x00000002, Functions = 0x00000002,
Variables = 0x00000004 Variables = 0x00000004,
Preprocessor = 0x00000008
}; };
static void print(DebugMask mask,int prio,const char *fmt,...); static void print(DebugMask mask,int prio,const char *fmt,...);
static void setFlag(const char *label); static void setFlag(const char *label);
static void clearFlag(const char *label); static void clearFlag(const char *label);
static bool isFlagSet(DebugMask mask);
static void setPriority(int p); static void setPriority(int p);
private: private:
......
...@@ -207,8 +207,8 @@ void buildFileList(Entry *root) ...@@ -207,8 +207,8 @@ void buildFileList(Entry *root)
FileDef *fd=findFileDef(&inputNameDict,root->name,ambig); FileDef *fd=findFileDef(&inputNameDict,root->name,ambig);
if (fd && !ambig) if (fd && !ambig)
{ {
if ((root->doc.length()>0 && fd->documentation()) || if ((root->doc.length()>0 && !fd->documentation().isEmpty()) ||
(root->brief.length()>0 && fd->briefDescription())) (root->brief.length()>0 && !fd->briefDescription().isEmpty()))
{ {
warn("Warning: file %s already documented\n" warn("Warning: file %s already documented\n"
" skipping documentation in file %s at line %d\n", " skipping documentation in file %s at line %d\n",
...@@ -262,54 +262,61 @@ void buildFileList(Entry *root) ...@@ -262,54 +262,61 @@ void buildFileList(Entry *root)
void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root) void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
{ {
//printf(">>>>>> includeFile=%s\n",root->includeFile.data()); if (
(!root->doc.isEmpty() || !root->brief.isEmpty() ||
bool ambig; Config::extractAllFlag
FileDef *fd=0; ) && root->protection!=Private
// see if we need to include a verbatim copy of the header file
//printf("root->includeFile=%s\n",root->includeFile.data());
if (!root->includeFile.isNull() &&
(fd=findFileDef(&inputNameDict,root->includeFile,ambig))==0
) )
{ // explicit request {
warn("Warning: the name `%s' supplied as " //printf(">>>>>> includeFile=%s\n",root->includeFile.data());
"the second argument in the \\class statement in file "
"%s at line %d ", bool ambig;
root->includeFile.data(), FileDef *fd=0;
root->fileName.data(), // see if we need to include a verbatim copy of the header file
root->startLine); //printf("root->includeFile=%s\n",root->includeFile.data());
if (ambig) // name is ambigious if (!root->includeFile.isNull() &&
{ (fd=findFileDef(&inputNameDict,root->includeFile,ambig))==0
warn("matches the following input files:\n"); )
showFileDefMatches(&inputNameDict,root->includeFile); { // explicit request
warn("Please use a more specific name by " warn("Warning: the name `%s' supplied as "
"including a (larger) part of the path!\n"); "the second argument in the \\class statement in file "
"%s at line %d ",
root->includeFile.data(),
root->fileName.data(),
root->startLine);
if (ambig) // name is ambigious
{
warn("matches the following input files:\n");
showFileDefMatches(&inputNameDict,root->includeFile);
warn("Please use a more specific name by "
"including a (larger) part of the path!\n");
}
else // name is not an input file
warn("is not an input file\n");
} }
else // name is not an input file else if (root->includeFile.isEmpty() && ifd &&
warn("is not an input file\n"); // see if the file extension makes sense
} guessSection(ifd->name())==Entry::HEADER_SEC)
else if (root->includeFile.isEmpty() && ifd && { // implicit assumption
// see if the file extension makes sense fd=ifd;
guessSection(ifd->name())==Entry::HEADER_SEC) }
{ // implicit assumption
fd=ifd; // if a file is found, we mark it for verbatim inclusion.
} if (fd)
// if a file is found, we mark it for verbatim inclusion.
if (fd)
{
//printf("fd->name()=%s fd->absFilePath()=%s\n",fd->name().data(),
// fd->absFilePath().data());
// set include file definition
cd->setIncludeFile(fd);
// set include supplied name
cd->setIncludeName(root->includeName);
if (cd->name().find('@')==-1)
fd->setIncludeName(cd->getOutputFileBase()+"-include");
if (includeDict[fd->absFilePath()]==0) // include not inserted earlier
{ {
includeFiles.inSort(fd); //printf("fd->name()=%s fd->absFilePath()=%s\n",fd->name().data(),
includeDict.insert(fd->absFilePath(),fd); // fd->absFilePath().data());
// set include file definition
cd->setIncludeFile(fd);
// set include supplied name
cd->setIncludeName(root->includeName);
if (cd->name().find('@')==-1)
fd->setIncludeName(cd->getOutputFileBase()+"-include");
if (includeDict[fd->absFilePath()]==0) // include not inserted earlier
{
includeFiles.inSort(fd);
includeDict.insert(fd->absFilePath(),fd);
}
} }
} }
} }
...@@ -322,8 +329,8 @@ void extractNamespaceName(const QCString &scopeName, ...@@ -322,8 +329,8 @@ void extractNamespaceName(const QCString &scopeName,
{ {
QCString clName=scopeName.copy(); QCString clName=scopeName.copy();
QCString nsName; QCString nsName;
if (clName.length()>0 && namespaceDict[clName]) if (clName.length()>0 && namespaceDict[clName] && getClass(clName)==0)
{ // the whole name is a namespace { // the whole name is a namespace (and not a class)
namespaceName=clName.copy(); namespaceName=clName.copy();
className.resize(0); className.resize(0);
//printf("extractNamespace `%s' => `%s|%s'\n",scopeName.data(), //printf("extractNamespace `%s' => `%s|%s'\n",scopeName.data(),
...@@ -332,9 +339,9 @@ void extractNamespaceName(const QCString &scopeName, ...@@ -332,9 +339,9 @@ void extractNamespaceName(const QCString &scopeName,
} }
int i,p=clName.length()-2; int i,p=clName.length()-2;
while (p>=0 && (i=clName.findRev("::",p))!=-1) while (p>=0 && (i=clName.findRev("::",p))!=-1)
// see if the first part is a namespace // see if the first part is a namespace (and not a class)
{ {
if (i>0 && namespaceDict[clName.left(i)]) if (i>0 && namespaceDict[clName.left(i)] && getClass(clName.left(i))==0)
{ {
namespaceName=clName.left(i); namespaceName=clName.left(i);
className=clName.right(clName.length()-i-2); className=clName.right(clName.length()-i-2);
...@@ -445,9 +452,7 @@ void buildClassList(Entry *root) ...@@ -445,9 +452,7 @@ void buildClassList(Entry *root)
cd->addSectionsToDefinition(root->anchors); cd->addSectionsToDefinition(root->anchors);
cd->setName(fullName); // change name to match docs cd->setName(fullName); // change name to match docs
} }
if (cd->includeFile()==0 && if (cd->includeFile()==0)
(!root->doc.isEmpty() || !root->brief.isEmpty())
)
{ {
FileDef *fd=findFileDef(&inputNameDict,root->fileName,ambig); FileDef *fd=findFileDef(&inputNameDict,root->fileName,ambig);
cd->setFileDef(fd); cd->setFileDef(fd);
...@@ -498,8 +503,7 @@ void buildClassList(Entry *root) ...@@ -498,8 +503,7 @@ void buildClassList(Entry *root)
cd->setFileDef(ifd); cd->setFileDef(ifd);
if (!root->doc.isEmpty() || !root->brief.isEmpty()) addIncludeFile(cd,ifd,root);
addIncludeFile(cd,ifd,root);
// if the class is not in a namespace then we insert // if the class is not in a namespace then we insert
// it in the file definition // it in the file definition
...@@ -1458,13 +1462,13 @@ void findFriends() ...@@ -1458,13 +1462,13 @@ void findFriends()
// function is actually a friend. // function is actually a friend.
{ {
mergeArguments(mmd->argumentList(),fmd->argumentList()); mergeArguments(mmd->argumentList(),fmd->argumentList());
if (fmd->documentation()) if (!fmd->documentation().isEmpty())
mmd->setDocumentation(fmd->documentation()); mmd->setDocumentation(fmd->documentation());
else if (mmd->documentation()) else if (!mmd->documentation().isEmpty())
fmd->setDocumentation(mmd->documentation()); fmd->setDocumentation(mmd->documentation());
if (!mmd->briefDescription() && fmd->briefDescription()) if (mmd->briefDescription().isEmpty() && !fmd->briefDescription().isEmpty())
mmd->setBriefDescription(fmd->briefDescription()); mmd->setBriefDescription(fmd->briefDescription());
else if (mmd->briefDescription() && !fmd->briefDescription()) else if (!mmd->briefDescription().isEmpty() && !fmd->briefDescription().isEmpty())
fmd->setBriefDescription(mmd->briefDescription()); fmd->setBriefDescription(mmd->briefDescription());
if (mmd->getBodyLine()==-1 && fmd->getBodyLine()!=-1) if (mmd->getBodyLine()==-1 && fmd->getBodyLine()!=-1)
mmd->setBodyLine(fmd->getBodyLine()); mmd->setBodyLine(fmd->getBodyLine());
...@@ -1532,6 +1536,102 @@ void transferFunctionDocumentation() ...@@ -1532,6 +1536,102 @@ void transferFunctionDocumentation()
} }
} }
//----------------------------------------------------------------------
bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix,
bool insertUndocumented)
{
// The base class could ofcouse also be a non-nested class
QList<BaseInfo> *baseList=root->extends;
BaseInfo *bi=baseList->first();
bool foundAny=FALSE;
while (bi) // for each base class
{
QCString baseClassName=removeRedundantWhiteSpace(scopePrefix+bi->name);
ClassDef *baseClass=getClass(baseClassName);
//printf("baseClass %s of %s found (%s and %s)\n",
// baseClassName.data(),
// root->name.data(),
// (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"),
// (bi->virt==Normal)?"normal":"virtual"
// );
int i;
QCString templSpec;
if (baseClass==0 && (i=baseClassName.find('<'))!=-1)
// base class has template specifiers
{
// TODO: here we should try to find the correct template specialization
// but for now, we only look for the unspecializated base class.
templSpec=baseClassName.right(baseClassName.length()-i);
baseClassName=baseClassName.left(i);
baseClass=getClass(baseClassName);
//printf("baseClass=%s templSpec=%s\n",
// baseClassName.data(),templSpec.data());
}
bool found=baseClass!=0;
NamespaceDef *nd=cd->getNamespace();
if (!found)
{
FileDef *fd=cd->getFileDef();
if (fd)
{
// look for the using statement in this file in which the
// class was found
NamespaceList *nl = fd->getUsedNamespaces();
if (nl) // try to prepend any of the using namespace scopes.
{
NamespaceListIterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst() ; (nd=nli.current()) && !found ; ++nli)
{
found = (baseClass=getClass(nd->name()+"::"+baseClassName))!=0;
}
}
}
if (!found && nd) // class is inside a namespace
{
NamespaceList *nl = nd->getUsedNamespaces();
found = (baseClass=getClass(nd->name()+"::"+baseClassName))!=0;
if (nl) // try to prepend any of the using namespace scopes.
{
NamespaceListIterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst() ; (nd=nli.current()) && !found ; ++nli)
{
found = (baseClass=getClass(nd->name()+"::"+baseClassName))!=0;
}
}
}
}
if (found)
{
// add base class to this class
cd->insertBaseClass(baseClass,bi->prot,bi->virt,templSpec);
// add this class as super class to the base class
baseClass->insertSuperClass(cd,bi->prot,bi->virt,templSpec);
foundAny=TRUE;
}
else if (insertUndocumented)
{
//printf(">>> Undocumented base class = %s\n",bi->name.data());
baseClass=new ClassDef(baseClassName,ClassDef::Class);
// add base class to this class
cd->insertBaseClass(baseClass,bi->prot,bi->virt,templSpec);
// add this class as super class to the base class
baseClass->insertSuperClass(cd,bi->prot,bi->virt,templSpec);
// the undocumented base was found in this file
baseClass->insertUsedFile(root->fileName);
// add class to the list
classList.inSort(baseClass);
//printf("ClassDict.insert(%s)\n",resolveDefines(fullName).data());
//classDict.insert(resolveDefines(bi->name),baseClass);
classDict.insert(bi->name,baseClass);
}
bi=baseList->next();
}
return foundAny;
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// Computes the base and super classes for each class in the tree // Computes the base and super classes for each class in the tree
...@@ -1564,127 +1664,19 @@ void computeClassRelations(Entry *root) ...@@ -1564,127 +1664,19 @@ void computeClassRelations(Entry *root)
// with the same name!) // with the same name!)
if (root->extends->count()>0) // there are base classes if (root->extends->count()>0) // there are base classes
{ {
QCString scopePrefix;
Entry *p=root->parent; Entry *p=root->parent;
bool found=FALSE; bool found=FALSE;
// For nested classes the base class could also be nested! // For nested classes (or classes inside namespaces) the base class
// could also be nested (or inside a namespace)!
// To find the correct scope, we try to prepend the scope to the base // To find the correct scope, we try to prepend the scope to the base
// name, starting with the largest, most inner scope. // name, starting with the largest, most inner scope.
while (p->section&Entry::SCOPE_MASK && !found) while (p && p->section&Entry::SCOPE_MASK &&
{ !(found=findBaseClassRelation(root,cd,p->name+"::",FALSE)))
scopePrefix=p->name+"::"; p=p->parent;
QList<BaseInfo> *baseList=root->extends; // For classes with global scope the same search is preformed
BaseInfo *bi=baseList->first();
while (bi && !found) // for each base class
{
QCString cName=removeRedundantWhiteSpace(scopePrefix+bi->name);
//printf("Base class %s\n",cName.data());
ClassDef *baseClass=getClass(cName);
if (baseClass && cName!=cd->name()) // base class is documented
{
//printf("Adding!\n");
// add base class to this class
cd->insertBaseClass(baseClass,bi->prot,bi->virt);
// add this class as super class to the base class
baseClass->insertSuperClass(cd,bi->prot,bi->virt);
found=TRUE;
}
//else // base class not documented
//{
// warn("Warning: Base class %s referred to in file %s at line %d is not "
// "documented\n",s->data(),root->fileName.data(),root->startLine);
//}
bi=baseList->next();
}
p=p->parent;
}
if (!found) if (!found)
{ {
// The base class could ofcouse also be a non-nested class findBaseClassRelation(root,cd,0,TRUE);
QList<BaseInfo> *baseList=root->extends;
BaseInfo *bi=baseList->first();
while (bi) // for each base class
{
QCString baseClassName=removeRedundantWhiteSpace(bi->name);
ClassDef *baseClass=getClass(baseClassName);
//printf("baseClass %s of %s found (%s and %s)\n",
// baseClassName.data(),
// bName.data(),
// (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"),
// (bi->virt==Normal)?"normal":"virtual"
// );
int i;
QCString templSpec;
if (baseClass==0 && (i=baseClassName.find('<'))!=-1)
// base class has template specifiers
{
// TODO: here we should try to find the correct template specialization
// but for now, we only look for the unspecializated base class.
baseClassName=baseClassName.left(i);
baseClass=getClass(baseClassName);
templSpec=bi->name.right(bi->name.length()-i);
}
bool found=baseClass!=0;
NamespaceDef *nd=cd->getNamespace();
if (!found)
{
FileDef *fd=cd->getFileDef();
if (fd)
{
// look for the using statement in this file in which the
// class was found
NamespaceList *nl = fd->getUsedNamespaces();
if (nl) // try to prepend any of the using namespace scopes.
{
NamespaceListIterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst() ; (nd=nli.current()) && !found ; ++nli)
{
found = (baseClass=getClass(nd->name()+"::"+baseClassName));
}
}
}
if (!found && nd) // class is inside a namespace
{
NamespaceList *nl = nd->getUsedNamespaces();
found = (baseClass=getClass(nd->name()+"::"+baseClassName));
if (nl) // try to prepend any of the using namespace scopes.
{
NamespaceListIterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst() ; (nd=nli.current()) && !found ; ++nli)
{
found = (baseClass=getClass(nd->name()+"::"+baseClassName));
}
}
}
}
if (found)
{
// add base class to this class
cd->insertBaseClass(baseClass,bi->prot,bi->virt,templSpec);
// add this class as super class to the base class
baseClass->insertSuperClass(cd,bi->prot,bi->virt,templSpec);
}
else
{
//printf(">>> Undocumented base class = %s\n",bi->name.data());
baseClass=new ClassDef(baseClassName,ClassDef::Class);
// add base class to this class
cd->insertBaseClass(baseClass,bi->prot,bi->virt,templSpec);
// add this class as super class to the base class
baseClass->insertSuperClass(cd,bi->prot,bi->virt,templSpec);
// the undocumented base was found in this file
baseClass->insertUsedFile(root->fileName);
// add class to the list
classList.inSort(baseClass);
//printf("ClassDict.insert(%s)\n",resolveDefines(fullName).data());
//classDict.insert(resolveDefines(bi->name),baseClass);
classDict.insert(bi->name,baseClass);
}
bi=baseList->next();
}
} // class not nested } // class not nested
} // class has no base classes } // class has no base classes
} // else class is already found } // else class is already found
...@@ -3429,7 +3421,7 @@ void generateSources() ...@@ -3429,7 +3421,7 @@ void generateSources()
while (fn) while (fn)
{ {
FileDef *fd=fn->first(); FileDef *fd=fn->first();
while (fd) while (fd && !fd->isReference())
{ {
msg("Generating source listing for file %s...\n",fd->name().data()); msg("Generating source listing for file %s...\n",fd->name().data());
fd->writeSource(*outputList); fd->writeSource(*outputList);
......
...@@ -60,6 +60,7 @@ void FileName::generateDiskNames() ...@@ -60,6 +60,7 @@ void FileName::generateDiskNames()
while (fd && fd->isReference()) fd=next(); while (fd && fd->isReference()) fd=next();
char c=fd->path.at(i); char c=fd->path.at(i);
if (c=='/') j=i; // remember last position of dirname if (c=='/') j=i; // remember last position of dirname
fd=next();
while (fd && !found) while (fd && !found)
{ {
if (!fd->isReference()) if (!fd->isReference())
...@@ -67,8 +68,8 @@ void FileName::generateDiskNames() ...@@ -67,8 +68,8 @@ void FileName::generateDiskNames()
//printf("i=%d fd->path=`%s' fd->name=`%s'\n",i,fd->path.data(),fd->name().data()); //printf("i=%d fd->path=`%s' fd->name=`%s'\n",i,fd->path.data(),fd->name().data());
if (i==(int)fd->path.length()) if (i==(int)fd->path.length())
{ {
warning("Warning: Input file %s found multiple times!\n" //warning("Warning: Input file %s found multiple times!\n"
" The generated documentation for this file may not be correct!\n",fd->absFilePath().data()); // " The generated documentation for this file may not be correct!\n",fd->absFilePath().data());
found=TRUE; found=TRUE;
} }
else if (fd->path[i]!=c) else if (fd->path[i]!=c)
...@@ -84,8 +85,11 @@ void FileName::generateDiskNames() ...@@ -84,8 +85,11 @@ void FileName::generateDiskNames()
while (fd) while (fd)
{ {
//printf("fd->setName(%s)\n",(fd->path.right(fd->path.length()-j-1)+name).data()); //printf("fd->setName(%s)\n",(fd->path.right(fd->path.length()-j-1)+name).data());
fd->setName(fd->path.right(fd->path.length()-j-1)+name); if (!fd->isReference())
fd->diskname=convertSlashes(fd->name()); {
fd->setName(fd->path.right(fd->path.length()-j-1)+name);
fd->diskname=convertSlashes(fd->name());
}
fd=next(); fd=next();
} }
} }
......
...@@ -93,6 +93,7 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -93,6 +93,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol.disable(OutputGenerator::Latex); ol.disable(OutputGenerator::Latex);
ol.startTextLink(0,"_details"); ol.startTextLink(0,"_details");
parseText(ol,theTranslator->trMore()); parseText(ol,theTranslator->trMore());
ol.endTextLink();
ol.enable(OutputGenerator::Latex); ol.enable(OutputGenerator::Latex);
} }
if (fileList->count()>0) if (fileList->count()>0)
......
...@@ -124,11 +124,14 @@ void HtmlGenerator::writeFooter(int part,bool external) ...@@ -124,11 +124,14 @@ void HtmlGenerator::writeFooter(int part,bool external)
t << "<hr><address><small>"; t << "<hr><address><small>";
else else
t << substitute( t << substitute(
substitute( substitute(
substitute(footer,"$title",lastTitle), substitute(
"$datetime",dateToString(TRUE) substitute(footer,"$title",lastTitle),
"$datetime",dateToString(TRUE)
),
"$date",dateToString(FALSE)
), ),
"$date",dateToString(FALSE) "$doxygenversion",versionString
); );
break; break;
case 1: case 1:
...@@ -663,7 +666,7 @@ void HtmlGenerator::endIndexList() ...@@ -663,7 +666,7 @@ void HtmlGenerator::endIndexList()
void HtmlGenerator::startAlphabeticalIndexList() void HtmlGenerator::startAlphabeticalIndexList()
{ {
t << "<table width=95% border=0 cellspacing=0 cellpadding=0>" << endl; t << "<table align=center width=95% border=0 cellspacing=0 cellpadding=0>" << endl;
} }
void HtmlGenerator::endAlphabeticalIndexList() void HtmlGenerator::endAlphabeticalIndexList()
...@@ -684,9 +687,9 @@ void HtmlGenerator::writeImage(const char *name,const char *,const char *) ...@@ -684,9 +687,9 @@ void HtmlGenerator::writeImage(const char *name,const char *,const char *)
int i; int i;
if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1) if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1)
{ {
baseName=baseName.right(baseName.length()-i); baseName=baseName.right(baseName.length()-i-1);
} }
t << "<img src=" << name << " alt=\"" << baseName << "\">" << endl; t << "<img src=\"" << name << "\" alt=\"" << baseName << "\">" << endl;
} }
void HtmlGenerator::startMemberDoc(const char *,const char *,const char *,const char *) void HtmlGenerator::startMemberDoc(const char *,const char *,const char *,const char *)
......
...@@ -358,7 +358,7 @@ void writeFileIndex(OutputList &ol) ...@@ -358,7 +358,7 @@ void writeFileIndex(OutputList &ol)
fd->name() fd->name()
); );
ol.docify(" ("); ol.docify(" (");
if (fd->briefDescription()) if (!fd->briefDescription().isEmpty())
{ {
OutputList briefOutput(&ol); OutputList briefOutput(&ol);
parseDoc(briefOutput,0,0, parseDoc(briefOutput,0,0,
...@@ -421,24 +421,27 @@ void writeSourceIndex(OutputList &ol) ...@@ -421,24 +421,27 @@ void writeSourceIndex(OutputList &ol)
FileDef *fd=fn->first(); FileDef *fd=fn->first();
while (fd) while (fd)
{ {
if (!started) if (!fd->isReference())
{
started=TRUE;
ol.startItemList();
}
ol.writeListItem();
QCString path;
if (Config::fullPathNameFlag)
{
path=stripFromPath(fd->getPath().copy());
}
if (!path.isEmpty()) ol.docify(path);
ol.writeObjectLink(0,fd->sourceName(),0,fd->name());
ol.writeString("\n");
if (Config::generateHtml && Config::htmlHelpFlag)
{ {
HtmlHelp::getInstance()->addContentsItem( if (!started)
fd->name(),fd->sourceName()); {
started=TRUE;
ol.startItemList();
}
ol.writeListItem();
QCString path;
if (Config::fullPathNameFlag)
{
path=stripFromPath(fd->getPath().copy());
}
if (!path.isEmpty()) ol.docify(path);
ol.writeObjectLink(0,fd->sourceName(),0,fd->name());
ol.writeString("\n");
if (Config::generateHtml && Config::htmlHelpFlag)
{
HtmlHelp::getInstance()->addContentsItem(
fd->name(),fd->sourceName());
}
} }
fd=fn->next(); fd=fn->next();
} }
...@@ -497,7 +500,7 @@ void writeNamespaceIndex(OutputList &ol) ...@@ -497,7 +500,7 @@ void writeNamespaceIndex(OutputList &ol)
{ {
ol.writeStartAnnoItem("namespace",nd->getOutputFileBase(),0,nd->name()); ol.writeStartAnnoItem("namespace",nd->getOutputFileBase(),0,nd->name());
ol.docify(" ("); ol.docify(" (");
if (nd->briefDescription()) if (!nd->briefDescription().isEmpty())
{ {
OutputList briefOutput(&ol); OutputList briefOutput(&ol);
parseDoc(briefOutput,nd->name(),0, parseDoc(briefOutput,nd->name(),0,
...@@ -570,7 +573,7 @@ void writeAnnotatedClassList(OutputList &ol) ...@@ -570,7 +573,7 @@ void writeAnnotatedClassList(OutputList &ol)
} }
ol.writeStartAnnoItem(type,cd->getOutputFileBase(),0,cd->name()); ol.writeStartAnnoItem(type,cd->getOutputFileBase(),0,cd->name());
ol.docify(" ("); ol.docify(" (");
if (cd->briefDescription()) if (!cd->briefDescription().isEmpty())
{ {
OutputList briefOutput(&ol); OutputList briefOutput(&ol);
parseDoc(briefOutput,cd->name(),0, parseDoc(briefOutput,cd->name(),0,
......
...@@ -991,8 +991,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco ...@@ -991,8 +991,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
ol.disableAllBut(OutputGenerator::Man); ol.disableAllBut(OutputGenerator::Man);
ol.writeString(" "); ol.writeString(" ");
ol.enableAll(); ol.enableAll();
ol.endDescTableTitle();
ol.endDoxyAnchor(); ol.endDoxyAnchor();
ol.endDescTableTitle();
//ol.newParagraph(); //ol.newParagraph();
ol.startDescTableData(); ol.startDescTableData();
......
...@@ -73,7 +73,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol) ...@@ -73,7 +73,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
if (Config::genTagFile.length()>0) tagFile << "%" << name() << ":\n"; if (Config::genTagFile.length()>0) tagFile << "%" << name() << ":\n";
OutputList briefOutput(&ol); OutputList briefOutput(&ol);
if (briefDescription()) if (!briefDescription().isEmpty())
{ {
parseDoc(briefOutput,name(),0,briefDescription()); parseDoc(briefOutput,name(),0,briefDescription());
ol+=briefOutput; ol+=briefOutput;
......
...@@ -1014,6 +1014,7 @@ char *yytext; ...@@ -1014,6 +1014,7 @@ char *yytext;
#include "message.h" #include "message.h"
#include "util.h" #include "util.h"
#include "defargs.h" #include "defargs.h"
#include "debug.h"
#if defined(_MSC_VER) || defined(__BORLANDC__) #if defined(_MSC_VER) || defined(__BORLANDC__)
#define popen _popen #define popen _popen
...@@ -1022,7 +1023,7 @@ char *yytext; ...@@ -1022,7 +1023,7 @@ char *yytext;
#define YY_NEVER_INTERACTIVE 1 #define YY_NEVER_INTERACTIVE 1
#define DUMP_OUTPUT 0 // set this to one to see what the preprocessor #define DUMP_OUTPUT 1 // set this to one to see what the preprocessor
// produces. // produces.
#define SHOW_INCLUDES 0 // set this to one to list all parsed include files #define SHOW_INCLUDES 0 // set this to one to list all parsed include files
...@@ -2005,7 +2006,7 @@ YY_DECL ...@@ -2005,7 +2006,7 @@ YY_DECL
register char *yy_cp, *yy_bp; register char *yy_cp, *yy_bp;
register int yy_act; register int yy_act;
#line 864 "pre.l" #line 865 "pre.l"
...@@ -2114,17 +2115,17 @@ do_action: /* This label is used only to access EOF actions. */ ...@@ -2114,17 +2115,17 @@ do_action: /* This label is used only to access EOF actions. */
{ /* beginning of action switch */ { /* beginning of action switch */
case 1: case 1:
YY_RULE_SETUP YY_RULE_SETUP
#line 866 "pre.l" #line 867 "pre.l"
YY_BREAK YY_BREAK
case 2: case 2:
YY_RULE_SETUP YY_RULE_SETUP
#line 867 "pre.l" #line 868 "pre.l"
YY_BREAK YY_BREAK
case 3: case 3:
YY_RULE_SETUP YY_RULE_SETUP
#line 868 "pre.l" #line 869 "pre.l"
YY_BREAK YY_BREAK
/* /*
...@@ -2142,7 +2143,7 @@ YY_RULE_SETUP ...@@ -2142,7 +2143,7 @@ YY_RULE_SETUP
*/ */
case 4: case 4:
YY_RULE_SETUP YY_RULE_SETUP
#line 882 "pre.l" #line 883 "pre.l"
{ BEGIN(Command); } { BEGIN(Command); }
YY_BREAK YY_BREAK
case 5: case 5:
...@@ -2150,7 +2151,7 @@ case 5: ...@@ -2150,7 +2151,7 @@ case 5:
yy_c_buf_p = yy_cp -= 1; yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 883 "pre.l" #line 884 "pre.l"
{ {
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
BEGIN(CopyLine); BEGIN(CopyLine);
...@@ -2163,7 +2164,7 @@ YY_RULE_SETUP ...@@ -2163,7 +2164,7 @@ YY_RULE_SETUP
*/ */
case 6: case 6:
YY_RULE_SETUP YY_RULE_SETUP
#line 892 "pre.l" #line 893 "pre.l"
{ {
Define *def=0; Define *def=0;
//printf("Search for define %s\n",yytext); //printf("Search for define %s\n",yytext);
...@@ -2197,7 +2198,7 @@ YY_RULE_SETUP ...@@ -2197,7 +2198,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 7: case 7:
YY_RULE_SETUP YY_RULE_SETUP
#line 922 "pre.l" #line 923 "pre.l"
{ {
Define *def=0; Define *def=0;
//printf("Search for define %s\n",yytext); //printf("Search for define %s\n",yytext);
...@@ -2222,14 +2223,14 @@ YY_RULE_SETUP ...@@ -2222,14 +2223,14 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 8: case 8:
YY_RULE_SETUP YY_RULE_SETUP
#line 943 "pre.l" #line 944 "pre.l"
{ {
outputChar(*yytext); outputChar(*yytext);
} }
YY_BREAK YY_BREAK
case 9: case 9:
YY_RULE_SETUP YY_RULE_SETUP
#line 946 "pre.l" #line 947 "pre.l"
{ {
outputChar('\n'); outputChar('\n');
BEGIN(Start); BEGIN(Start);
...@@ -2238,7 +2239,7 @@ YY_RULE_SETUP ...@@ -2238,7 +2239,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 10: case 10:
YY_RULE_SETUP YY_RULE_SETUP
#line 951 "pre.l" #line 952 "pre.l"
{ {
defArgsStr+='('; defArgsStr+='(';
roundCount++; roundCount++;
...@@ -2246,7 +2247,7 @@ YY_RULE_SETUP ...@@ -2246,7 +2247,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 11: case 11:
YY_RULE_SETUP YY_RULE_SETUP
#line 955 "pre.l" #line 956 "pre.l"
{ {
defArgsStr+=')'; defArgsStr+=')';
roundCount--; roundCount--;
...@@ -2274,7 +2275,7 @@ YY_RULE_SETUP ...@@ -2274,7 +2275,7 @@ YY_RULE_SETUP
*/ */
case 12: case 12:
YY_RULE_SETUP YY_RULE_SETUP
#line 979 "pre.l" #line 980 "pre.l"
{ {
defArgsStr+=*yytext; defArgsStr+=*yytext;
BEGIN(ReadString); BEGIN(ReadString);
...@@ -2282,7 +2283,7 @@ YY_RULE_SETUP ...@@ -2282,7 +2283,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 13: case 13:
YY_RULE_SETUP YY_RULE_SETUP
#line 983 "pre.l" #line 984 "pre.l"
{ {
yyLineNr++; yyLineNr++;
outputChar('\n'); outputChar('\n');
...@@ -2290,28 +2291,28 @@ YY_RULE_SETUP ...@@ -2290,28 +2291,28 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 14: case 14:
YY_RULE_SETUP YY_RULE_SETUP
#line 987 "pre.l" #line 988 "pre.l"
{ {
defArgsStr+="@@"; defArgsStr+="@@";
} }
YY_BREAK YY_BREAK
case 15: case 15:
YY_RULE_SETUP YY_RULE_SETUP
#line 990 "pre.l" #line 991 "pre.l"
{ {
defArgsStr+=*yytext; defArgsStr+=*yytext;
} }
YY_BREAK YY_BREAK
case 16: case 16:
YY_RULE_SETUP YY_RULE_SETUP
#line 993 "pre.l" #line 994 "pre.l"
{ {
defArgsStr+=yytext; defArgsStr+=yytext;
} }
YY_BREAK YY_BREAK
case 17: case 17:
YY_RULE_SETUP YY_RULE_SETUP
#line 996 "pre.l" #line 997 "pre.l"
{ {
defArgsStr+=*yytext; defArgsStr+=*yytext;
BEGIN(FindDefineArgs); BEGIN(FindDefineArgs);
...@@ -2319,21 +2320,21 @@ YY_RULE_SETUP ...@@ -2319,21 +2320,21 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 18: case 18:
YY_RULE_SETUP YY_RULE_SETUP
#line 1000 "pre.l" #line 1001 "pre.l"
{ {
defArgsStr+=yytext; defArgsStr+=yytext;
} }
YY_BREAK YY_BREAK
case 19: case 19:
YY_RULE_SETUP YY_RULE_SETUP
#line 1003 "pre.l" #line 1004 "pre.l"
{ {
defArgsStr+=*yytext; defArgsStr+=*yytext;
} }
YY_BREAK YY_BREAK
case 20: case 20:
YY_RULE_SETUP YY_RULE_SETUP
#line 1006 "pre.l" #line 1007 "pre.l"
{ {
if (Config::macroExpansionFlag) if (Config::macroExpansionFlag)
BEGIN(IncludeID); BEGIN(IncludeID);
...@@ -2341,14 +2342,14 @@ YY_RULE_SETUP ...@@ -2341,14 +2342,14 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 21: case 21:
YY_RULE_SETUP YY_RULE_SETUP
#line 1010 "pre.l" #line 1011 "pre.l"
{ {
BEGIN(Include); BEGIN(Include);
} }
YY_BREAK YY_BREAK
case 22: case 22:
YY_RULE_SETUP YY_RULE_SETUP
#line 1013 "pre.l" #line 1014 "pre.l"
{ {
//printf("!!!DefName\n"); //printf("!!!DefName\n");
BEGIN(DefName); BEGIN(DefName);
...@@ -2359,7 +2360,7 @@ case 23: ...@@ -2359,7 +2360,7 @@ case 23:
yy_c_buf_p = yy_cp = yy_bp + 5; yy_c_buf_p = yy_cp = yy_bp + 5;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1017 "pre.l" #line 1018 "pre.l"
{ {
incrLevel(); incrLevel();
guardExpr.resize(0); guardExpr.resize(0);
...@@ -2371,7 +2372,7 @@ case 24: ...@@ -2371,7 +2372,7 @@ case 24:
yy_c_buf_p = yy_cp = yy_bp + 5; yy_c_buf_p = yy_cp = yy_bp + 5;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1022 "pre.l" #line 1023 "pre.l"
{ {
//printf("Pre.l: ifdef\n"); //printf("Pre.l: ifdef\n");
incrLevel(); incrLevel();
...@@ -2384,7 +2385,7 @@ case 25: ...@@ -2384,7 +2385,7 @@ case 25:
yy_c_buf_p = yy_cp = yy_bp + 6; yy_c_buf_p = yy_cp = yy_bp + 6;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1028 "pre.l" #line 1029 "pre.l"
{ {
incrLevel(); incrLevel();
guardExpr="! "; guardExpr="! ";
...@@ -2396,7 +2397,7 @@ case 26: ...@@ -2396,7 +2397,7 @@ case 26:
yy_c_buf_p = yy_cp = yy_bp + 6; yy_c_buf_p = yy_cp = yy_bp + 6;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1033 "pre.l" #line 1034 "pre.l"
{ {
incrLevel(); incrLevel();
guardExpr="! "; guardExpr="! ";
...@@ -2408,7 +2409,7 @@ case 27: ...@@ -2408,7 +2409,7 @@ case 27:
yy_c_buf_p = yy_cp = yy_bp + 2; yy_c_buf_p = yy_cp = yy_bp + 2;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1038 "pre.l" #line 1039 "pre.l"
{ {
incrLevel(); incrLevel();
guardExpr.resize(0); guardExpr.resize(0);
...@@ -2420,7 +2421,7 @@ case 28: ...@@ -2420,7 +2421,7 @@ case 28:
yy_c_buf_p = yy_cp = yy_bp + 4; yy_c_buf_p = yy_cp = yy_bp + 4;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1043 "pre.l" #line 1044 "pre.l"
{ {
if (!otherCaseDone()) if (!otherCaseDone())
{ {
...@@ -2439,7 +2440,7 @@ case 29: ...@@ -2439,7 +2440,7 @@ case 29:
yy_c_buf_p = yy_cp = yy_bp + 4; yy_c_buf_p = yy_cp = yy_bp + 4;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1055 "pre.l" #line 1056 "pre.l"
{ {
//printf("else levelGuard[%d]=%d\n",level-1,levelGuard[level-1]); //printf("else levelGuard[%d]=%d\n",level-1,levelGuard[level-1]);
if (otherCaseDone()) if (otherCaseDone())
...@@ -2456,7 +2457,7 @@ YY_RULE_SETUP ...@@ -2456,7 +2457,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 30: case 30:
YY_RULE_SETUP YY_RULE_SETUP
#line 1068 "pre.l" #line 1069 "pre.l"
{ {
BEGIN(UndefName); BEGIN(UndefName);
} }
...@@ -2466,7 +2467,7 @@ case 31: ...@@ -2466,7 +2467,7 @@ case 31:
yy_c_buf_p = yy_cp = yy_bp + 4; yy_c_buf_p = yy_cp = yy_bp + 4;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1071 "pre.l" #line 1072 "pre.l"
{ {
if (!otherCaseDone()) if (!otherCaseDone())
{ {
...@@ -2480,7 +2481,7 @@ case 32: ...@@ -2480,7 +2481,7 @@ case 32:
yy_c_buf_p = yy_cp = yy_bp + 5; yy_c_buf_p = yy_cp = yy_bp + 5;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1078 "pre.l" #line 1079 "pre.l"
{ {
//printf("Pre.l: #endif\n"); //printf("Pre.l: #endif\n");
decrLevel(); decrLevel();
...@@ -2488,7 +2489,7 @@ YY_RULE_SETUP ...@@ -2488,7 +2489,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 33: case 33:
YY_RULE_SETUP YY_RULE_SETUP
#line 1082 "pre.l" #line 1083 "pre.l"
{ {
outputChar('\n'); outputChar('\n');
BEGIN(Start); BEGIN(Start);
...@@ -2497,24 +2498,24 @@ YY_RULE_SETUP ...@@ -2497,24 +2498,24 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 34: case 34:
YY_RULE_SETUP YY_RULE_SETUP
#line 1087 "pre.l" #line 1088 "pre.l"
{ // unknown directive { // unknown directive
BEGIN(IgnoreLine); BEGIN(IgnoreLine);
} }
YY_BREAK YY_BREAK
case 35: case 35:
YY_RULE_SETUP YY_RULE_SETUP
#line 1090 "pre.l" #line 1091 "pre.l"
YY_BREAK YY_BREAK
case 36: case 36:
YY_RULE_SETUP YY_RULE_SETUP
#line 1091 "pre.l" #line 1092 "pre.l"
YY_BREAK YY_BREAK
case 37: case 37:
YY_RULE_SETUP YY_RULE_SETUP
#line 1092 "pre.l" #line 1093 "pre.l"
{ {
Define *def; Define *def;
if ((def=isDefined(yytext))) if ((def=isDefined(yytext)))
...@@ -2527,7 +2528,7 @@ YY_RULE_SETUP ...@@ -2527,7 +2528,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 38: case 38:
YY_RULE_SETUP YY_RULE_SETUP
#line 1101 "pre.l" #line 1102 "pre.l"
{ {
outputChar('\n'); outputChar('\n');
guardExpr+=' '; guardExpr+=' ';
...@@ -2539,7 +2540,7 @@ case 39: ...@@ -2539,7 +2540,7 @@ case 39:
yy_c_buf_p = yy_cp = yy_bp + 7; yy_c_buf_p = yy_cp = yy_bp + 7;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1106 "pre.l" #line 1107 "pre.l"
{ {
BEGIN(DefinedExpr2); BEGIN(DefinedExpr2);
} }
...@@ -2549,19 +2550,19 @@ case 40: ...@@ -2549,19 +2550,19 @@ case 40:
yy_c_buf_p = yy_cp = yy_bp + 7; yy_c_buf_p = yy_cp = yy_bp + 7;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1109 "pre.l" #line 1110 "pre.l"
{ {
BEGIN(DefinedExpr1); BEGIN(DefinedExpr1);
} }
YY_BREAK YY_BREAK
case 41: case 41:
YY_RULE_SETUP YY_RULE_SETUP
#line 1112 "pre.l" #line 1113 "pre.l"
{ guardExpr+=*yytext; } { guardExpr+=*yytext; }
YY_BREAK YY_BREAK
case 42: case 42:
YY_RULE_SETUP YY_RULE_SETUP
#line 1113 "pre.l" #line 1114 "pre.l"
{ {
outputChar('\n'); outputChar('\n');
yyLineNr++; yyLineNr++;
...@@ -2583,12 +2584,12 @@ YY_RULE_SETUP ...@@ -2583,12 +2584,12 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 43: case 43:
YY_RULE_SETUP YY_RULE_SETUP
#line 1131 "pre.l" #line 1132 "pre.l"
{ yyLineNr++; outputChar('\n'); } { yyLineNr++; outputChar('\n'); }
YY_BREAK YY_BREAK
case 44: case 44:
YY_RULE_SETUP YY_RULE_SETUP
#line 1132 "pre.l" #line 1133 "pre.l"
{ {
if (isDefined(yytext)) if (isDefined(yytext))
guardExpr+=" 1L "; guardExpr+=" 1L ";
...@@ -2600,7 +2601,7 @@ YY_RULE_SETUP ...@@ -2600,7 +2601,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 45: case 45:
YY_RULE_SETUP YY_RULE_SETUP
#line 1140 "pre.l" #line 1141 "pre.l"
{ {
if (isDefined(yytext)) if (isDefined(yytext))
guardExpr+=" 1L "; guardExpr+=" 1L ";
...@@ -2611,7 +2612,7 @@ YY_RULE_SETUP ...@@ -2611,7 +2612,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 46: case 46:
YY_RULE_SETUP YY_RULE_SETUP
#line 1147 "pre.l" #line 1148 "pre.l"
{ // should not happen, handle anyway { // should not happen, handle anyway
ifcount=0; ifcount=0;
BEGIN(SkipCPPBlock); BEGIN(SkipCPPBlock);
...@@ -2619,19 +2620,19 @@ YY_RULE_SETUP ...@@ -2619,19 +2620,19 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 47: case 47:
YY_RULE_SETUP YY_RULE_SETUP
#line 1151 "pre.l" #line 1152 "pre.l"
{ {
BEGIN(Guard); BEGIN(Guard);
} }
YY_BREAK YY_BREAK
case 48: case 48:
YY_RULE_SETUP YY_RULE_SETUP
#line 1154 "pre.l" #line 1155 "pre.l"
YY_BREAK YY_BREAK
case 49: case 49:
YY_RULE_SETUP YY_RULE_SETUP
#line 1155 "pre.l" #line 1156 "pre.l"
{ BEGIN(SkipCommand); } { BEGIN(SkipCommand); }
YY_BREAK YY_BREAK
case 50: case 50:
...@@ -2639,12 +2640,12 @@ case 50: ...@@ -2639,12 +2640,12 @@ case 50:
yy_c_buf_p = yy_cp -= 1; yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1156 "pre.l" #line 1157 "pre.l"
{ BEGIN(SkipLine); } { BEGIN(SkipLine); }
YY_BREAK YY_BREAK
case 51: case 51:
YY_RULE_SETUP YY_RULE_SETUP
#line 1157 "pre.l" #line 1158 "pre.l"
YY_BREAK YY_BREAK
case 52: case 52:
...@@ -2652,7 +2653,7 @@ case 52: ...@@ -2652,7 +2653,7 @@ case 52:
yy_c_buf_p = yy_cp -= 1; yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1158 "pre.l" #line 1159 "pre.l"
{ {
incrLevel(); incrLevel();
ifcount++; ifcount++;
...@@ -2661,7 +2662,7 @@ YY_RULE_SETUP ...@@ -2661,7 +2662,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 53: case 53:
YY_RULE_SETUP YY_RULE_SETUP
#line 1163 "pre.l" #line 1164 "pre.l"
{ {
//printf("Else! ifcount=%d otherCaseDone=%d\n",ifcount,otherCaseDone()); //printf("Else! ifcount=%d otherCaseDone=%d\n",ifcount,otherCaseDone());
if (ifcount==0 && !otherCaseDone()) if (ifcount==0 && !otherCaseDone())
...@@ -2677,7 +2678,7 @@ case 54: ...@@ -2677,7 +2678,7 @@ case 54:
yy_c_buf_p = yy_cp = yy_bp + 4; yy_c_buf_p = yy_cp = yy_bp + 4;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1172 "pre.l" #line 1173 "pre.l"
{ {
if (ifcount==0) if (ifcount==0)
{ {
...@@ -2696,7 +2697,7 @@ YY_RULE_SETUP ...@@ -2696,7 +2697,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 55: case 55:
YY_RULE_SETUP YY_RULE_SETUP
#line 1187 "pre.l" #line 1188 "pre.l"
{ {
decrLevel(); decrLevel();
if (--ifcount<0) if (--ifcount<0)
...@@ -2708,7 +2709,7 @@ YY_RULE_SETUP ...@@ -2708,7 +2709,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 56: case 56:
YY_RULE_SETUP YY_RULE_SETUP
#line 1195 "pre.l" #line 1196 "pre.l"
{ {
outputChar('\n'); outputChar('\n');
yyLineNr++; yyLineNr++;
...@@ -2717,29 +2718,29 @@ YY_RULE_SETUP ...@@ -2717,29 +2718,29 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 57: case 57:
YY_RULE_SETUP YY_RULE_SETUP
#line 1200 "pre.l" #line 1201 "pre.l"
{ // unknown directive { // unknown directive
BEGIN(SkipLine); BEGIN(SkipLine);
} }
YY_BREAK YY_BREAK
case 58: case 58:
YY_RULE_SETUP YY_RULE_SETUP
#line 1203 "pre.l" #line 1204 "pre.l"
YY_BREAK YY_BREAK
case 59: case 59:
YY_RULE_SETUP YY_RULE_SETUP
#line 1204 "pre.l" #line 1205 "pre.l"
YY_BREAK YY_BREAK
case 60: case 60:
YY_RULE_SETUP YY_RULE_SETUP
#line 1205 "pre.l" #line 1206 "pre.l"
YY_BREAK YY_BREAK
case 61: case 61:
YY_RULE_SETUP YY_RULE_SETUP
#line 1206 "pre.l" #line 1207 "pre.l"
{ {
lastCPPContext=YY_START; lastCPPContext=YY_START;
BEGIN(RemoveCPPComment); BEGIN(RemoveCPPComment);
...@@ -2747,7 +2748,7 @@ YY_RULE_SETUP ...@@ -2747,7 +2748,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 62: case 62:
YY_RULE_SETUP YY_RULE_SETUP
#line 1210 "pre.l" #line 1211 "pre.l"
{ {
lastCContext=YY_START; lastCContext=YY_START;
BEGIN(RemoveCComment); BEGIN(RemoveCComment);
...@@ -2755,7 +2756,7 @@ YY_RULE_SETUP ...@@ -2755,7 +2756,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 63: case 63:
YY_RULE_SETUP YY_RULE_SETUP
#line 1214 "pre.l" #line 1215 "pre.l"
{ {
outputChar('\n'); outputChar('\n');
yyLineNr++; yyLineNr++;
...@@ -2767,7 +2768,7 @@ case 64: ...@@ -2767,7 +2768,7 @@ case 64:
yy_c_buf_p = yy_cp -= 1; yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1219 "pre.l" #line 1220 "pre.l"
{ {
roundCount=0; roundCount=0;
defArgsStr=yytext; defArgsStr=yytext;
...@@ -2777,7 +2778,7 @@ YY_RULE_SETUP ...@@ -2777,7 +2778,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 65: case 65:
YY_RULE_SETUP YY_RULE_SETUP
#line 1225 "pre.l" #line 1226 "pre.l"
{ {
readIncludeFile(expandMacro(yytext)); readIncludeFile(expandMacro(yytext));
BEGIN(Start); BEGIN(Start);
...@@ -2785,7 +2786,7 @@ YY_RULE_SETUP ...@@ -2785,7 +2786,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 66: case 66:
YY_RULE_SETUP YY_RULE_SETUP
#line 1229 "pre.l" #line 1230 "pre.l"
{ {
QCString incName=yytext; QCString incName=yytext;
//int l=incName.length(); //int l=incName.length();
...@@ -2806,7 +2807,7 @@ case 67: ...@@ -2806,7 +2807,7 @@ case 67:
yy_c_buf_p = yy_cp -= 1; yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP YY_RULE_SETUP
#line 1243 "pre.l" #line 1244 "pre.l"
{ {
//printf("Define() `%s'\n",yytext); //printf("Define() `%s'\n",yytext);
argDict = new QDict<int>(31); argDict = new QDict<int>(31);
...@@ -2821,7 +2822,7 @@ YY_RULE_SETUP ...@@ -2821,7 +2822,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 68: case 68:
YY_RULE_SETUP YY_RULE_SETUP
#line 1254 "pre.l" #line 1255 "pre.l"
{ {
//printf("Define `%s'\n",yytext); //printf("Define `%s'\n",yytext);
argDict = 0; argDict = 0;
...@@ -2838,7 +2839,7 @@ YY_RULE_SETUP ...@@ -2838,7 +2839,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 69: case 69:
YY_RULE_SETUP YY_RULE_SETUP
#line 1267 "pre.l" #line 1268 "pre.l"
{ {
argDict = 0; argDict = 0;
defArgs = -1; defArgs = -1;
...@@ -2889,17 +2890,17 @@ YY_RULE_SETUP ...@@ -2889,17 +2890,17 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 70: case 70:
YY_RULE_SETUP YY_RULE_SETUP
#line 1314 "pre.l" #line 1315 "pre.l"
{ defArgsStr+=yytext; } { defArgsStr+=yytext; }
YY_BREAK YY_BREAK
case 71: case 71:
YY_RULE_SETUP YY_RULE_SETUP
#line 1315 "pre.l" #line 1316 "pre.l"
{ defArgsStr+=yytext; } { defArgsStr+=yytext; }
YY_BREAK YY_BREAK
case 72: case 72:
YY_RULE_SETUP YY_RULE_SETUP
#line 1316 "pre.l" #line 1317 "pre.l"
{ {
defArgsStr+=yytext; defArgsStr+=yytext;
QCString tmp=(QCString)"#define "+defName+defArgsStr; QCString tmp=(QCString)"#define "+defName+defArgsStr;
...@@ -2910,7 +2911,7 @@ YY_RULE_SETUP ...@@ -2910,7 +2911,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 73: case 73:
YY_RULE_SETUP YY_RULE_SETUP
#line 1323 "pre.l" #line 1324 "pre.l"
{ {
//printf("Define addArg(%s)\n",yytext); //printf("Define addArg(%s)\n",yytext);
QCString argName=yytext; QCString argName=yytext;
...@@ -2924,7 +2925,7 @@ YY_RULE_SETUP ...@@ -2924,7 +2925,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 74: case 74:
YY_RULE_SETUP YY_RULE_SETUP
#line 1333 "pre.l" #line 1334 "pre.l"
{ {
outputChar('/');outputChar('*'); outputChar('/');outputChar('*');
defText+=' '; defText+=' ';
...@@ -2934,7 +2935,7 @@ YY_RULE_SETUP ...@@ -2934,7 +2935,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 75: case 75:
YY_RULE_SETUP YY_RULE_SETUP
#line 1339 "pre.l" #line 1340 "pre.l"
{ {
outputChar('/');outputChar('/'); outputChar('/');outputChar('/');
lastCPPContext=YY_START; lastCPPContext=YY_START;
...@@ -2943,7 +2944,7 @@ YY_RULE_SETUP ...@@ -2943,7 +2944,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 76: case 76:
YY_RULE_SETUP YY_RULE_SETUP
#line 1344 "pre.l" #line 1345 "pre.l"
{ {
outputChar('*');outputChar('/'); outputChar('*');outputChar('/');
BEGIN(lastCContext); BEGIN(lastCContext);
...@@ -2951,28 +2952,28 @@ YY_RULE_SETUP ...@@ -2951,28 +2952,28 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 77: case 77:
YY_RULE_SETUP YY_RULE_SETUP
#line 1348 "pre.l" #line 1349 "pre.l"
{ {
outputChar('/');outputChar('/'); outputChar('/');outputChar('/');
} }
YY_BREAK YY_BREAK
case 78: case 78:
YY_RULE_SETUP YY_RULE_SETUP
#line 1351 "pre.l" #line 1352 "pre.l"
{ {
outputChar('/');outputChar('*'); outputChar('/');outputChar('*');
} }
YY_BREAK YY_BREAK
case 79: case 79:
YY_RULE_SETUP YY_RULE_SETUP
#line 1354 "pre.l" #line 1355 "pre.l"
{ {
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
} }
YY_BREAK YY_BREAK
case 80: case 80:
YY_RULE_SETUP YY_RULE_SETUP
#line 1357 "pre.l" #line 1358 "pre.l"
{ {
yyLineNr++; yyLineNr++;
outputChar('\n'); outputChar('\n');
...@@ -2980,44 +2981,44 @@ YY_RULE_SETUP ...@@ -2980,44 +2981,44 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 81: case 81:
YY_RULE_SETUP YY_RULE_SETUP
#line 1361 "pre.l" #line 1362 "pre.l"
{ {
outputChar(*yytext); outputChar(*yytext);
} }
YY_BREAK YY_BREAK
case 82: case 82:
YY_RULE_SETUP YY_RULE_SETUP
#line 1364 "pre.l" #line 1365 "pre.l"
{ BEGIN(lastCContext); } { BEGIN(lastCContext); }
YY_BREAK YY_BREAK
case 83: case 83:
YY_RULE_SETUP YY_RULE_SETUP
#line 1365 "pre.l" #line 1366 "pre.l"
YY_BREAK YY_BREAK
case 84: case 84:
YY_RULE_SETUP YY_RULE_SETUP
#line 1366 "pre.l" #line 1367 "pre.l"
YY_BREAK YY_BREAK
case 85: case 85:
YY_RULE_SETUP YY_RULE_SETUP
#line 1367 "pre.l" #line 1368 "pre.l"
YY_BREAK YY_BREAK
case 86: case 86:
YY_RULE_SETUP YY_RULE_SETUP
#line 1368 "pre.l" #line 1369 "pre.l"
{ yyLineNr++; outputChar('\n'); } { yyLineNr++; outputChar('\n'); }
YY_BREAK YY_BREAK
case 87: case 87:
YY_RULE_SETUP YY_RULE_SETUP
#line 1369 "pre.l" #line 1370 "pre.l"
YY_BREAK YY_BREAK
case 88: case 88:
YY_RULE_SETUP YY_RULE_SETUP
#line 1370 "pre.l" #line 1371 "pre.l"
{ {
unput(*yytext); unput(*yytext);
BEGIN(lastCPPContext); BEGIN(lastCPPContext);
...@@ -3025,62 +3026,62 @@ YY_RULE_SETUP ...@@ -3025,62 +3026,62 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 89: case 89:
YY_RULE_SETUP YY_RULE_SETUP
#line 1374 "pre.l" #line 1375 "pre.l"
{ {
outputChar('/');outputChar('*'); outputChar('/');outputChar('*');
} }
YY_BREAK YY_BREAK
case 90: case 90:
YY_RULE_SETUP YY_RULE_SETUP
#line 1377 "pre.l" #line 1378 "pre.l"
{ {
outputChar('/');outputChar('/'); outputChar('/');outputChar('/');
} }
YY_BREAK YY_BREAK
case 91: case 91:
YY_RULE_SETUP YY_RULE_SETUP
#line 1380 "pre.l" #line 1381 "pre.l"
{ {
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
} }
YY_BREAK YY_BREAK
case 92: case 92:
YY_RULE_SETUP YY_RULE_SETUP
#line 1383 "pre.l" #line 1384 "pre.l"
{ {
outputChar(*yytext); outputChar(*yytext);
} }
YY_BREAK YY_BREAK
case 93: case 93:
YY_RULE_SETUP YY_RULE_SETUP
#line 1386 "pre.l" #line 1387 "pre.l"
YY_BREAK YY_BREAK
case 94: case 94:
YY_RULE_SETUP YY_RULE_SETUP
#line 1387 "pre.l" #line 1388 "pre.l"
YY_BREAK YY_BREAK
case 95: case 95:
YY_RULE_SETUP YY_RULE_SETUP
#line 1388 "pre.l" #line 1389 "pre.l"
YY_BREAK YY_BREAK
case 96: case 96:
YY_RULE_SETUP YY_RULE_SETUP
#line 1389 "pre.l" #line 1390 "pre.l"
YY_BREAK YY_BREAK
case 97: case 97:
YY_RULE_SETUP YY_RULE_SETUP
#line 1390 "pre.l" #line 1391 "pre.l"
{ {
quoteArg=TRUE; quoteArg=TRUE;
} }
YY_BREAK YY_BREAK
case 98: case 98:
YY_RULE_SETUP YY_RULE_SETUP
#line 1393 "pre.l" #line 1394 "pre.l"
{ {
if (quoteArg) if (quoteArg)
{ {
...@@ -3116,7 +3117,7 @@ YY_RULE_SETUP ...@@ -3116,7 +3117,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 99: case 99:
YY_RULE_SETUP YY_RULE_SETUP
#line 1425 "pre.l" #line 1426 "pre.l"
{ {
outputChar('\n'); outputChar('\n');
defText += ' '; yyLineNr++; defText += ' '; yyLineNr++;
...@@ -3124,7 +3125,7 @@ YY_RULE_SETUP ...@@ -3124,7 +3125,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 100: case 100:
YY_RULE_SETUP YY_RULE_SETUP
#line 1429 "pre.l" #line 1430 "pre.l"
{ {
outputChar('\n'); outputChar('\n');
Define *def=0; Define *def=0;
...@@ -3162,46 +3163,46 @@ YY_RULE_SETUP ...@@ -3162,46 +3163,46 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 101: case 101:
YY_RULE_SETUP YY_RULE_SETUP
#line 1463 "pre.l" #line 1464 "pre.l"
{ defText += ' '; } { defText += ' '; }
YY_BREAK YY_BREAK
case 102: case 102:
YY_RULE_SETUP YY_RULE_SETUP
#line 1464 "pre.l" #line 1465 "pre.l"
{ defText += "##"; } { defText += "##"; }
YY_BREAK YY_BREAK
case 103: case 103:
YY_RULE_SETUP YY_RULE_SETUP
#line 1465 "pre.l" #line 1466 "pre.l"
{ defText += "@@"; } { defText += "@@"; }
YY_BREAK YY_BREAK
case 104: case 104:
YY_RULE_SETUP YY_RULE_SETUP
#line 1466 "pre.l" #line 1467 "pre.l"
{ defText += *yytext; { defText += *yytext;
BEGIN(SkipDoubleQuote); BEGIN(SkipDoubleQuote);
} }
YY_BREAK YY_BREAK
case 105: case 105:
YY_RULE_SETUP YY_RULE_SETUP
#line 1469 "pre.l" #line 1470 "pre.l"
{ defText += *yytext; { defText += *yytext;
BEGIN(SkipSingleQuote); BEGIN(SkipSingleQuote);
} }
YY_BREAK YY_BREAK
case 106: case 106:
YY_RULE_SETUP YY_RULE_SETUP
#line 1472 "pre.l" #line 1473 "pre.l"
{ defText += yytext; } { defText += yytext; }
YY_BREAK YY_BREAK
case 107: case 107:
YY_RULE_SETUP YY_RULE_SETUP
#line 1473 "pre.l" #line 1474 "pre.l"
{ defText += yytext; } { defText += yytext; }
YY_BREAK YY_BREAK
case 108: case 108:
YY_RULE_SETUP YY_RULE_SETUP
#line 1474 "pre.l" #line 1475 "pre.l"
{ {
defText += *yytext; defText += *yytext;
BEGIN(DefineText); BEGIN(DefineText);
...@@ -3209,14 +3210,14 @@ YY_RULE_SETUP ...@@ -3209,14 +3210,14 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 109: case 109:
YY_RULE_SETUP YY_RULE_SETUP
#line 1478 "pre.l" #line 1479 "pre.l"
{ {
defText += yytext; defText += yytext;
} }
YY_BREAK YY_BREAK
case 110: case 110:
YY_RULE_SETUP YY_RULE_SETUP
#line 1481 "pre.l" #line 1482 "pre.l"
{ {
defText += *yytext; defText += *yytext;
BEGIN(DefineText); BEGIN(DefineText);
...@@ -3224,17 +3225,17 @@ YY_RULE_SETUP ...@@ -3224,17 +3225,17 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 111: case 111:
YY_RULE_SETUP YY_RULE_SETUP
#line 1485 "pre.l" #line 1486 "pre.l"
{ defText += *yytext; } { defText += *yytext; }
YY_BREAK YY_BREAK
case 112: case 112:
YY_RULE_SETUP YY_RULE_SETUP
#line 1486 "pre.l" #line 1487 "pre.l"
{ defText += *yytext; } { defText += *yytext; }
YY_BREAK YY_BREAK
case 113: case 113:
YY_RULE_SETUP YY_RULE_SETUP
#line 1487 "pre.l" #line 1488 "pre.l"
{ defText += *yytext; } { defText += *yytext; }
YY_BREAK YY_BREAK
case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INITIAL):
...@@ -3264,7 +3265,7 @@ case YY_STATE_EOF(UndefName): ...@@ -3264,7 +3265,7 @@ case YY_STATE_EOF(UndefName):
case YY_STATE_EOF(IgnoreLine): case YY_STATE_EOF(IgnoreLine):
case YY_STATE_EOF(FindDefineArgs): case YY_STATE_EOF(FindDefineArgs):
case YY_STATE_EOF(ReadString): case YY_STATE_EOF(ReadString):
#line 1488 "pre.l" #line 1489 "pre.l"
{ {
//printf("End of include file\n"); //printf("End of include file\n");
//printf("Include stack depth=%d\n",includeStack.count()); //printf("Include stack depth=%d\n",includeStack.count());
...@@ -3293,7 +3294,7 @@ case YY_STATE_EOF(ReadString): ...@@ -3293,7 +3294,7 @@ case YY_STATE_EOF(ReadString):
YY_BREAK YY_BREAK
case 114: case 114:
YY_RULE_SETUP YY_RULE_SETUP
#line 1513 "pre.l" #line 1514 "pre.l"
{ {
outputChar('/');outputChar('*'); outputChar('/');outputChar('*');
lastCContext=YY_START; lastCContext=YY_START;
...@@ -3302,7 +3303,7 @@ YY_RULE_SETUP ...@@ -3302,7 +3303,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 115: case 115:
YY_RULE_SETUP YY_RULE_SETUP
#line 1518 "pre.l" #line 1519 "pre.l"
{ {
outputChar('/');outputChar('/'); outputChar('/');outputChar('/');
lastCPPContext=YY_START; lastCPPContext=YY_START;
...@@ -3311,7 +3312,7 @@ YY_RULE_SETUP ...@@ -3311,7 +3312,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 116: case 116:
YY_RULE_SETUP YY_RULE_SETUP
#line 1523 "pre.l" #line 1524 "pre.l"
{ {
outputChar('\n'); outputChar('\n');
yyLineNr++; yyLineNr++;
...@@ -3319,14 +3320,14 @@ YY_RULE_SETUP ...@@ -3319,14 +3320,14 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 117: case 117:
YY_RULE_SETUP YY_RULE_SETUP
#line 1527 "pre.l" #line 1528 "pre.l"
{ {
outputChar(*yytext); outputChar(*yytext);
} }
YY_BREAK YY_BREAK
case 118: case 118:
YY_RULE_SETUP YY_RULE_SETUP
#line 1531 "pre.l" #line 1532 "pre.l"
ECHO; ECHO;
YY_BREAK YY_BREAK
...@@ -4208,7 +4209,7 @@ int main() ...@@ -4208,7 +4209,7 @@ int main()
return 0; return 0;
} }
#endif #endif
#line 1531 "pre.l" #line 1532 "pre.l"
/*@ ---------------------------------------------------------------------------- /*@ ----------------------------------------------------------------------------
...@@ -4308,9 +4309,9 @@ void cleanupPreprocessor() ...@@ -4308,9 +4309,9 @@ void cleanupPreprocessor()
void preprocessFile(const char *fileName,BufStr &output) void preprocessFile(const char *fileName,BufStr &output)
{ {
#if DUMP_OUTPUT //#if DUMP_OUTPUT
uint orgOffset=output.curPos(); uint orgOffset=output.curPos();
#endif //#endif
outputBuf=&output; outputBuf=&output;
includeStack.setAutoDelete(TRUE); includeStack.setAutoDelete(TRUE);
...@@ -4446,20 +4447,23 @@ void preprocessFile(const char *fileName,BufStr &output) ...@@ -4446,20 +4447,23 @@ void preprocessFile(const char *fileName,BufStr &output)
else else
pclose(preYYin); pclose(preYYin);
#if DUMP_OUTPUT //#if DUMP_OUTPUT
char *orgPos=output.data()+orgOffset; if (Debug::isFlagSet(Debug::Preprocessor))
char *newPos=output.data()+output.curPos();
printf("Resulting size: %d bytes\n",newPos-orgPos);
int line=1;
printf("---------\n00001 ");
while (orgPos<newPos)
{ {
putchar(*orgPos); char *orgPos=output.data()+orgOffset;
if (*orgPos=='\n') printf("%05d ",++line); char *newPos=output.data()+output.curPos();
orgPos++; printf("Preprocessor output (size: %d bytes):\n",newPos-orgPos);
int line=1;
printf("---------\n00001 ");
while (orgPos<newPos)
{
putchar(*orgPos);
if (*orgPos=='\n') printf("%05d ",++line);
orgPos++;
}
printf("\n---------\n");
} }
printf("\n---------\n"); //#endif
#endif
} }
extern "C" { // some bogus code to keep the compiler happy extern "C" { // some bogus code to keep the compiler happy
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
#include "message.h" #include "message.h"
#include "util.h" #include "util.h"
#include "defargs.h" #include "defargs.h"
#include "debug.h"
#if defined(_MSC_VER) || defined(__BORLANDC__) #if defined(_MSC_VER) || defined(__BORLANDC__)
#define popen _popen #define popen _popen
...@@ -48,7 +49,7 @@ ...@@ -48,7 +49,7 @@
#define YY_NEVER_INTERACTIVE 1 #define YY_NEVER_INTERACTIVE 1
#define DUMP_OUTPUT 0 // set this to one to see what the preprocessor #define DUMP_OUTPUT 1 // set this to one to see what the preprocessor
// produces. // produces.
#define SHOW_INCLUDES 0 // set this to one to list all parsed include files #define SHOW_INCLUDES 0 // set this to one to list all parsed include files
...@@ -1627,9 +1628,9 @@ void cleanupPreprocessor() ...@@ -1627,9 +1628,9 @@ void cleanupPreprocessor()
void preprocessFile(const char *fileName,BufStr &output) void preprocessFile(const char *fileName,BufStr &output)
{ {
#if DUMP_OUTPUT //#if DUMP_OUTPUT
uint orgOffset=output.curPos(); uint orgOffset=output.curPos();
#endif //#endif
outputBuf=&output; outputBuf=&output;
includeStack.setAutoDelete(TRUE); includeStack.setAutoDelete(TRUE);
...@@ -1765,20 +1766,23 @@ void preprocessFile(const char *fileName,BufStr &output) ...@@ -1765,20 +1766,23 @@ void preprocessFile(const char *fileName,BufStr &output)
else else
pclose(preYYin); pclose(preYYin);
#if DUMP_OUTPUT //#if DUMP_OUTPUT
char *orgPos=output.data()+orgOffset; if (Debug::isFlagSet(Debug::Preprocessor))
char *newPos=output.data()+output.curPos();
printf("Resulting size: %d bytes\n",newPos-orgPos);
int line=1;
printf("---------\n00001 ");
while (orgPos<newPos)
{ {
putchar(*orgPos); char *orgPos=output.data()+orgOffset;
if (*orgPos=='\n') printf("%05d ",++line); char *newPos=output.data()+output.curPos();
orgPos++; printf("Preprocessor output (size: %d bytes):\n",newPos-orgPos);
int line=1;
printf("---------\n00001 ");
while (orgPos<newPos)
{
putchar(*orgPos);
if (*orgPos=='\n') printf("%05d ",++line);
orgPos++;
}
printf("\n---------\n");
} }
printf("\n---------\n"); //#endif
#endif
} }
extern "C" { // some bogus code to keep the compiler happy extern "C" { // some bogus code to keep the compiler happy
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -127,7 +127,6 @@ static bool inBugBlock; ...@@ -127,7 +127,6 @@ static bool inBugBlock;
static bool inWarningBlock; static bool inWarningBlock;
static bool inParBlock; static bool inParBlock;
static bool firstSeeArg; static bool firstSeeArg;
static bool javaDocSee;
static char afterDocTerminator; static char afterDocTerminator;
static int tmpDocType; static int tmpDocType;
static QCString sectionLabel; static QCString sectionLabel;
...@@ -200,7 +199,6 @@ static void initParser() ...@@ -200,7 +199,6 @@ static void initParser()
inWarningBlock = FALSE; inWarningBlock = FALSE;
inParBlock = FALSE; inParBlock = FALSE;
firstSeeArg = FALSE; firstSeeArg = FALSE;
javaDocSee = FALSE;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
...@@ -707,8 +705,12 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type) ...@@ -707,8 +705,12 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type)
} }
else else
{ {
warn("Warning: image file %s is not found. ",fileName); result=fileName;
warn("Check your IMAGE_PATH\n"); if (result.left(5)!="http:")
{
warn("Warning: image file %s is not found in IMAGE_PATH: "
"assuming external image. ",fileName);
}
} }
return result; return result;
} }
...@@ -1243,7 +1245,6 @@ VAR [vV][aA][rR] ...@@ -1243,7 +1245,6 @@ VAR [vV][aA][rR]
if (inBlock()) endBlock(); if (inBlock()) endBlock();
inSeeBlock=TRUE; inSeeBlock=TRUE;
//firstSeeArg=TRUE; //firstSeeArg=TRUE;
//javaDocSee=!strcmp(yytext,"@see");
outDoc->startDescList(); outDoc->startDescList();
//outDoc->writeBoldString("See also: "); //outDoc->writeBoldString("See also: ");
outDoc->startBold(); outDoc->startBold();
...@@ -1439,8 +1440,8 @@ VAR [vV][aA][rR] ...@@ -1439,8 +1440,8 @@ VAR [vV][aA][rR]
<DocImage>[lL][aA][tT][eE][xX] { <DocImage>[lL][aA][tT][eE][xX] {
BEGIN(DocLatexImageName); BEGIN(DocLatexImageName);
} }
<DocHtmlImageName>{FILE} { <DocHtmlImageName>{FILE}|{URLMASK} {
curImageName = findAndCopyImage(yytext,IT_Html); curImageName = findAndCopyImage(stripQuotes(yytext),IT_Html);
if (!curImageName.isEmpty()) if (!curImageName.isEmpty())
{ {
storeOutputListState(); storeOutputListState();
...@@ -1451,7 +1452,7 @@ VAR [vV][aA][rR] ...@@ -1451,7 +1452,7 @@ VAR [vV][aA][rR]
BEGIN(DocScan); BEGIN(DocScan);
} }
<DocLatexImageName>{FILE} { <DocLatexImageName>{FILE} {
curImageName = findAndCopyImage(yytext,IT_Latex); curImageName = findAndCopyImage(stripQuotes(yytext),IT_Latex);
if (curImageName.isEmpty()) if (curImageName.isEmpty())
BEGIN(DocScan); BEGIN(DocScan);
else else
......
...@@ -1939,7 +1939,11 @@ void parseTagFile(const char *fileName) ...@@ -1939,7 +1939,11 @@ void parseTagFile(const char *fileName)
{ {
FILE *f=fopen(fileName,"r"); FILE *f=fopen(fileName,"r");
QFileInfo fi(fileName); QFileInfo fi(fileName);
if (!f || !fi.exists()); if (!f || !fi.exists())
{
if (f) fclose(f);
return;
}
tagName = fi.fileName(); tagName = fi.fileName();
tagYYin = f; tagYYin = f;
......
...@@ -260,7 +260,11 @@ void parseTagFile(const char *fileName) ...@@ -260,7 +260,11 @@ void parseTagFile(const char *fileName)
{ {
FILE *f=fopen(fileName,"r"); FILE *f=fopen(fileName,"r");
QFileInfo fi(fileName); QFileInfo fi(fileName);
if (!f || !fi.exists()); if (!f || !fi.exists())
{
if (f) fclose(f);
return;
}
tagName = fi.fileName(); tagName = fi.fileName();
tagYYin = f; tagYYin = f;
......
...@@ -259,7 +259,7 @@ class TranslatorDutch : public Translator ...@@ -259,7 +259,7 @@ class TranslatorDutch : public Translator
// new since 0.49-990425 // new since 0.49-990425
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
virtual QCString trCompoundReference(const char *clName, QCString trCompoundReference(const char *clName,
ClassDef::CompoundType compType) ClassDef::CompoundType compType)
// used as the title of the HTML page of a class/struct/union // used as the title of the HTML page of a class/struct/union
{ {
...@@ -274,14 +274,14 @@ class TranslatorDutch : public Translator ...@@ -274,14 +274,14 @@ class TranslatorDutch : public Translator
result+=" Referentie"; result+=" Referentie";
return result; return result;
} }
virtual QCString trFileReference(const char *fileName) QCString trFileReference(const char *fileName)
// used as the title of the HTML page of a file // used as the title of the HTML page of a file
{ {
QCString result=fileName; QCString result=fileName;
result+=" File Referentie"; result+=" File Referentie";
return result; return result;
} }
virtual QCString trNamespaceReference(const char *namespaceName) QCString trNamespaceReference(const char *namespaceName)
// used as the title of the HTML page of a namespace // used as the title of the HTML page of a namespace
{ {
QCString result=namespaceName; QCString result=namespaceName;
...@@ -290,29 +290,29 @@ class TranslatorDutch : public Translator ...@@ -290,29 +290,29 @@ class TranslatorDutch : public Translator
} }
// these are for the member sections of a class, struct or union // these are for the member sections of a class, struct or union
virtual QCString trPublicMembers() QCString trPublicMembers()
{ return "Public Members"; } { return "Public Members"; }
virtual QCString trPublicSlots() QCString trPublicSlots()
{ return "Public Slots"; } { return "Public Slots"; }
virtual QCString trSignals() QCString trSignals()
{ return "Signals"; } { return "Signals"; }
virtual QCString trStaticPublicMembers() QCString trStaticPublicMembers()
{ return "Static Public Members"; } { return "Static Public Members"; }
virtual QCString trProtectedMembers() QCString trProtectedMembers()
{ return "Protected Members"; } { return "Protected Members"; }
virtual QCString trProtectedSlots() QCString trProtectedSlots()
{ return "Protected Slots"; } { return "Protected Slots"; }
virtual QCString trStaticProtectedMembers() QCString trStaticProtectedMembers()
{ return "Static Protected Members"; } { return "Static Protected Members"; }
virtual QCString trPrivateMembers() QCString trPrivateMembers()
{ return "Private Members"; } { return "Private Members"; }
virtual QCString trPrivateSlots() QCString trPrivateSlots()
{ return "Private Slots"; } { return "Private Slots"; }
virtual QCString trStaticPrivateMembers() QCString trStaticPrivateMembers()
{ return "Static Private Members"; } { return "Static Private Members"; }
// end of member sections // end of member sections
virtual QCString trWriteList(int numEntries) QCString trWriteList(int numEntries)
{ {
// this function is used to produce a comma-separated list of items. // this function is used to produce a comma-separated list of items.
// use generateMarker(i) to indicate where item i should be put. // use generateMarker(i) to indicate where item i should be put.
...@@ -336,35 +336,35 @@ class TranslatorDutch : public Translator ...@@ -336,35 +336,35 @@ class TranslatorDutch : public Translator
return result; return result;
} }
virtual QCString trInheritsList(int numEntries) QCString trInheritsList(int numEntries)
// used in class documentation to produce a list of base classes, // used in class documentation to produce a list of base classes,
// if class diagrams are disabled. // if class diagrams are disabled.
{ {
return "Erft over van "+trWriteList(numEntries)+"."; return "Erft over van "+trWriteList(numEntries)+".";
} }
virtual QCString trInheritedByList(int numEntries) QCString trInheritedByList(int numEntries)
// used in class documentation to produce a list of super classes, // used in class documentation to produce a list of super classes,
// if class diagrams are disabled. // if class diagrams are disabled.
{ {
return "Wordt overge&euml;rfd door "+trWriteList(numEntries)+"."; return "Wordt overge&euml;rfd door "+trWriteList(numEntries)+".";
} }
virtual QCString trReimplementedFromList(int numEntries) QCString trReimplementedFromList(int numEntries)
// used in member documentation blocks to produce a list of // used in member documentation blocks to produce a list of
// members that are hidden by this one. // members that are hidden by this one.
{ {
return "Nieuwe implementatie van "+trWriteList(numEntries)+"."; return "Nieuwe implementatie van "+trWriteList(numEntries)+".";
} }
virtual QCString trReimplementedInList(int numEntries) QCString trReimplementedInList(int numEntries)
{ {
// used in member documentation blocks to produce a list of // used in member documentation blocks to produce a list of
// all member that overwrite the implementation of this member. // all member that overwrite the implementation of this member.
return "Opnieuw ge&iuml;mplementeerd in "+trWriteList(numEntries)+"."; return "Opnieuw ge&iuml;mplementeerd in "+trWriteList(numEntries)+".";
} }
virtual QCString trNamespaceMembers() QCString trNamespaceMembers()
// This is put above each page as a link to all members of namespaces. // This is put above each page as a link to all members of namespaces.
{ return "Namespace Members"; } { return "Namespace Members"; }
virtual QCString trNamespaceMemberDescription(bool extractAll) QCString trNamespaceMemberDescription(bool extractAll)
// This is an introduction to the page with all namespace members // This is an introduction to the page with all namespace members
{ {
QCString result="Hier is een lijst van alle "; QCString result="Hier is een lijst van alle ";
...@@ -376,11 +376,11 @@ class TranslatorDutch : public Translator ...@@ -376,11 +376,11 @@ class TranslatorDutch : public Translator
result+="de namespaces waartoe ze behoren:"; result+="de namespaces waartoe ze behoren:";
return result; return result;
} }
virtual QCString trNamespaceIndex() QCString trNamespaceIndex()
// This is used in LaTeX as the title of the chapter with the // This is used in LaTeX as the title of the chapter with the
// index of all namespaces. // index of all namespaces.
{ return "Namespace Index"; } { return "Namespace Index"; }
virtual QCString trNamespaceDocumentation() QCString trNamespaceDocumentation()
// This is used in LaTeX as the title of the chapter containing // This is used in LaTeX as the title of the chapter containing
// the documentation of all namespaces. // the documentation of all namespaces.
{ return "Namespace Documentatie"; } { return "Namespace Documentatie"; }
...@@ -392,7 +392,7 @@ class TranslatorDutch : public Translator ...@@ -392,7 +392,7 @@ class TranslatorDutch : public Translator
/*! This is put at the bottom of a class documentation page and is /*! This is put at the bottom of a class documentation page and is
* followed by a list of files that were used to generate the page. * followed by a list of files that were used to generate the page.
*/ */
virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType, QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
bool single) bool single)
{ // here s is one of " Class", " Struct" or " Union" { // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file // single is true implies a single file
...@@ -412,7 +412,7 @@ class TranslatorDutch : public Translator ...@@ -412,7 +412,7 @@ class TranslatorDutch : public Translator
/*! This is in the (quick) index as a link to the alphabetical compound /*! This is in the (quick) index as a link to the alphabetical compound
* list. * list.
*/ */
virtual QCString trAlphabeticalList() QCString trAlphabeticalList()
{ return "Alphabetical List"; } { return "Alphabetical List"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -420,19 +420,36 @@ class TranslatorDutch : public Translator ...@@ -420,19 +420,36 @@ class TranslatorDutch : public Translator
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */ /*! This is used as the heading text for the retval command. */
virtual QCString trReturnValues() QCString trReturnValues()
{ return "Retour waarden"; } { return "Retour waarden"; }
/*! This is in the (quick) index as a link to the main page (index.html) /*! This is in the (quick) index as a link to the main page (index.html)
*/ */
virtual QCString trMainPage() QCString trMainPage()
{ return "Hoofd Pagina"; } { return "Hoofd Pagina"; }
/*! This is used in references to page that are put in the LaTeX /*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page. * documentation. It should be an abbreviation of the word page.
*/ */
virtual QCString trPageAbbreviation() QCString trPageAbbreviation()
{ return "p."; } { return "p."; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991106
//////////////////////////////////////////////////////////////////////////
QCString trSources()
{
return "Sources";
}
QCString trDefinedAtLineInSourceFile()
{
return "De definitie bevindt zich op regel @0 in de file @1.";
}
QCString trDefinedInSourceFile()
{
return "De definitie bevindt zich in de file @0.";
}
}; };
#endif #endif
...@@ -53,7 +53,7 @@ Problem! ...@@ -53,7 +53,7 @@ Problem!
=================================================================================== ===================================================================================
1999/09/01 1999/09/01
* Det verkar som om "namnrymd" r en hyggligt vedertagen svensk versttning * Det verkar som om "namnrymd" r en hyggligt vedertagen svensk versttning
av "namnepace", s jag kr med det frn och med nu. av "namespace", s jag kr med det frn och med nu.
* "interface" heter numera "grnssnitt" * "interface" heter numera "grnssnitt"
*/ */
...@@ -538,6 +538,41 @@ class TranslatorSwedish : public Translator ...@@ -538,6 +538,41 @@ class TranslatorSwedish : public Translator
{ {
return "Alfabetisk lista"; return "Alfabetisk lista";
} }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
//////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */
virtual QCString trReturnValues()
{ return "Returvrden"; }
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual QCString trMainPage()
{ return "Huvudsida"; }
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual QCString trPageAbbreviation()
{ return "s."; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991003
//////////////////////////////////////////////////////////////////////////
virtual QCString trSources()
{
return "Kllor";
}
virtual QCString trDefinedAtLineInSourceFile()
{
return "Definition p rad @0 i filen @1.";
}
virtual QCString trDefinedInSourceFile()
{
return "Definition i filen @0.";
}
}; };
#endif #endif
...@@ -320,8 +320,8 @@ void writeExample(OutputList &ol,ExampleList *el) ...@@ -320,8 +320,8 @@ void writeExample(OutputList &ol,ExampleList *el)
QCString exampleLine=theTranslator->trWriteList(el->count()); QCString exampleLine=theTranslator->trWriteList(el->count());
bool latexEnabled = ol.isEnabled(OutputGenerator::Latex); bool latexEnabled = ol.isEnabled(OutputGenerator::Latex);
bool manEnabled = ol.isEnabled(OutputGenerator::Html); bool manEnabled = ol.isEnabled(OutputGenerator::Man);
bool htmlEnabled = ol.isEnabled(OutputGenerator::Man); bool htmlEnabled = ol.isEnabled(OutputGenerator::Html);
QRegExp marker("@[0-9]+"); QRegExp marker("@[0-9]+");
int index=0,newIndex,matchLen; int index=0,newIndex,matchLen;
// now replace all markers in inheritLine with links to the classes // now replace all markers in inheritLine with links to the classes
...@@ -624,21 +624,25 @@ QCString fileToString(const char *name) ...@@ -624,21 +624,25 @@ QCString fileToString(const char *name)
QFileInfo fi(name); QFileInfo fi(name);
if (!fi.exists() || !fi.isFile()) if (!fi.exists() || !fi.isFile())
{ {
err("Error: file `%s' not found\n",name); warn("Error: file `%s' not found\n",name);
exit(1); return "";
} }
f.setName(name); f.setName(name);
fileOpened=f.open(IO_ReadOnly); fileOpened=f.open(IO_ReadOnly);
} }
if (!fileOpened) if (!fileOpened)
{ {
err("Error: cannot open file `%s' for reading\n",name); warn("Error: cannot open file `%s' for reading\n",name);
exit(1); return "";
} }
int fsize=f.size(); int fsize=f.size();
QCString contents(fsize+1); QCString contents(fsize+2);
f.readBlock(contents.data(),fsize); f.readBlock(contents.data(),fsize);
contents[fsize]='\0'; if (fsize==0 || contents[fsize-1]=='\n')
contents[fsize]='\0';
else
contents[fsize]='\n';
contents[fsize+1]='\0';
f.close(); f.close();
return contents; return contents;
} }
......
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