Commit b76d4ee1 authored by dimitri's avatar dimitri

+ The graphical class hierarchy was not properly generated when

  template classes were used.
+ Template specialization could not be documented using the
  \class command. This is now fixed. Example:
  /*!
   * \class T<A,int>
   * My template specialization of template T.
   */
+ Fixed a bug when parsing M$-IDL code, containing
  helpstring("bla") attributes. The attributes of a method are no longer
  shown in the documentation (the attributes of method arguments
  still visible however).
+ Improved the search algorithm that tries to connect classes with their
  base classes. It should now (hopefully) work correct in all cases
  where nested classes and/or namespaces are used.
+ Fixed a scanner problem that could cause doxygen to get
  confused after parsing struct initializers.
+ the DOTFONTPATH environment variable is now automatically set
  for Windows. This should make any "missing doxfont.ttf"
  messages disappear.
+ the extra LaTeX packages specified with EXTRA_PACKAGES can now
  also be used when generating formulas for HTML.
+ The documentation of a parameters that is part of a member definition,
  is now used in the documentation as well.
+ Fixed a HTML output bug in the class/file group-pages.
+ Links to example files generated with \link ... \endlink where not
  correct.
+ made the bullet list generation more robust. A space is now required
  after the - sign. A list can now start a paragraph.
+ the configure script now detects whether or not dot is installed.
+ The VERBATIM_HEADERS option didn't have any effect any more.
  It should now works again as advertised.
+ The IGNORE_PREFIX option can now also deal with a list of prefixes.
+ @verbatim ... @endverbatim blocks did not work.
+ new option SHOW_INCLUDE_FILES, which can be set to NO to turn of the
  list of include files that is generated for each documented file.
+ new option STRIP_CODE_COMMENTS, which can be set to NO to keep any
  special comment blocks in the generated code fragments.
parent 8cc2d754
DOXYGEN Version 1.1.0 DOXYGEN Version 1.1.0-20000220
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-1.1.0.src.tar.gz # uncompress the archive gunzip doxygen-1.1.0-20000220.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.0.src.tar # unpack it tar xf doxygen-1.1.0-20000220.src.tar # unpack it
2. Run the configure script: 2. Run the configure script:
...@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at ...@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (13 February 2000) Dimitri van Heesch (20 February 2000)
DOXYGEN Version 1.1.0 DOXYGEN Version 1.1.0-20000220
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 (13 February 2000) Dimitri van Heesch (20 February 2000)
1.1.0 1.1.0-20000220
...@@ -19,6 +19,7 @@ bin_dirs=`echo $PATH | sed -e "s/:/ /g"` ...@@ -19,6 +19,7 @@ bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
f_debug=NO f_debug=NO
f_shared=YES f_shared=YES
f_make=NO f_make=NO
f_dot=NO
f_perl=NO f_perl=NO
f_plf_auto=NO f_plf_auto=NO
f_prefix=/usr f_prefix=/usr
...@@ -51,6 +52,9 @@ while test -n "$1"; do ...@@ -51,6 +52,9 @@ while test -n "$1"; do
--make) --make)
shift; f_make=$1 shift; f_make=$1
;; ;;
--dot)
shift; f_dot=$1
;;
--perl) --perl)
shift; f_perl=$1 shift; f_perl=$1
;; ;;
...@@ -72,10 +76,10 @@ done ...@@ -72,10 +76,10 @@ done
if test "$f_help" = y; then if test "$f_help" = y; then
cat <<EOF cat <<EOF
Usage: $0 [--help] [--shared] [--static] [--release] [--debug] Usage: $0 [--help] [--shared] [--static] [--release] [--debug]
[--perl name] [--make name] [--platform target] [--prefix dir] [--perl name] [--make name] [--dot name] [--platform target]
[--install name] [--english-only] [--prefix dir] [--install name] [--english-only]
Options:ll Options:
--help Print this help --help Print this help
...@@ -91,6 +95,10 @@ Options:ll ...@@ -91,6 +95,10 @@ Options:ll
--make name Use \`name' as the name of the GNU make tool --make name Use \`name' as the name of the GNU make tool
[default: autodetect] [default: autodetect]
--dot name Use \`name' as the name of the dot tool that
is part of the Graphviz package.
[default: autodetect]
--platform target Do not detect platform but use \`target' instead. --platform target Do not detect platform but use \`target' instead.
See PLATFORMS for a list of possibilities See PLATFORMS for a list of possibilities
...@@ -241,6 +249,27 @@ if test "$f_make" = NO; then ...@@ -241,6 +249,27 @@ if test "$f_make" = NO; then
fi fi
echo "using $f_make" echo "using $f_make"
# - check for dot ------------------------------------------------------------
echo -n " Checking for dot... "
if test "$f_dot" = NO; then
dot_dirs="$bin_dirs"
dot_prog=NO
for j in $dot_dirs; do
if test -x "$j/dot"; then
dot_prog="$j/dot"
break 2
fi
done
f_dot="$dot_prog"
fi
if test "$f_dot" = NO; then
echo "not found!";
else
echo "using $f_dot"
fi
# - check for perl ------------------------------------------------------------ # - check for perl ------------------------------------------------------------
echo -n " Checking for perl... " echo -n " Checking for perl... "
...@@ -294,6 +323,12 @@ DOXYDOCS = .. ...@@ -294,6 +323,12 @@ DOXYDOCS = ..
export TMAKEPATH export TMAKEPATH
EOF EOF
if test "$f_dot" != NO; then
cat >> .makeconfig <<EOF
HAVE_DOT = $f_dot
EOF
fi
touch .tmakeconfig touch .tmakeconfig
if test "$f_shared" = NO; then if test "$f_shared" = NO; then
cat >> .tmakeconfig <<EOF cat >> .tmakeconfig <<EOF
...@@ -302,7 +337,7 @@ EOF ...@@ -302,7 +337,7 @@ EOF
fi fi
if test "$f_english" = YES; then if test "$f_english" = YES; then
cat >> .tmakeconfig << EOF cat >> .tmakeconfig <<EOF
TMAKE_CXXFLAGS = -DENGLISH_ONLY TMAKE_CXXFLAGS = -DENGLISH_ONLY
EOF EOF
fi fi
......
...@@ -120,7 +120,9 @@ followed by the descriptions of the tags grouped by category. ...@@ -120,7 +120,9 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_repeat_brief REPEAT_BRIEF <li> \refitem cfg_repeat_brief REPEAT_BRIEF
<li> \refitem cfg_search_includes SEARCH_INCLUDES <li> \refitem cfg_search_includes SEARCH_INCLUDES
<li> \refitem cfg_searchengine SEARCHENGINE <li> \refitem cfg_searchengine SEARCHENGINE
<li> \refitem cfg_show_include_files SHOW_INCLUDE_FILES
<li> \refitem cfg_source_browser SOURCE_BROWSER <li> \refitem cfg_source_browser SOURCE_BROWSER
<li> \refitem cfg_strip_code_comments STRIP_CODE_COMMENTS
<li> \refitem cfg_strip_from_path STRIP_FROM_PATH <li> \refitem cfg_strip_from_path STRIP_FROM_PATH
<li> \refitem cfg_rtf_hyperlinks RTF_HYPERLINKS <li> \refitem cfg_rtf_hyperlinks RTF_HYPERLINKS
<li> \refitem cfg_rtf_output RTF_OUTPUT <li> \refitem cfg_rtf_output RTF_OUTPUT
...@@ -292,6 +294,13 @@ followed by the descriptions of the tags grouped by category. ...@@ -292,6 +294,13 @@ followed by the descriptions of the tags grouped by category.
Setting the \c INLINE_SOURCES tag to \c YES will include the body Setting the \c INLINE_SOURCES tag to \c YES will include the body
of functions, classes and enums directly into the documentation. of functions, classes and enums directly into the documentation.
\anchor cfg_strip_code_comments
<dt>\c STRIP_CODE_COMMENTS <dd>
\addindex STRIP_CODE_COMMENTS
Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
doxygen to hide any special comment blocks from generated source code
fragments. Normal C and C++ comments will always remain visible.
\anchor cfg_case_sense_names \anchor cfg_case_sense_names
<dt>\c CASE_SENSE_NAMES <dd> <dt>\c CASE_SENSE_NAMES <dd>
\addindex CASE_SENSE_NAMES \addindex CASE_SENSE_NAMES
...@@ -309,6 +318,13 @@ followed by the descriptions of the tags grouped by category. ...@@ -309,6 +318,13 @@ followed by the descriptions of the tags grouped by category.
which an include is specified. Set to NO to disable this. which an include is specified. Set to NO to disable this.
\sa Section \ref cmdclass "\\class". \sa Section \ref cmdclass "\\class".
\anchor cfg_show_include_files
<dt>\c SHOW_INCLUDE_FILES <dd>
\addindex SHOW_INCLUDE_FILES
If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
will put list of the files that are included by a file in the documentation
of that file.
\anchor cfg_javadoc_autobrief \anchor cfg_javadoc_autobrief
<dt>\c JAVADOC_AUTOBRIEF <dd> <dt>\c JAVADOC_AUTOBRIEF <dd>
\addindex JAVADOC_AUTOBRIEF \addindex JAVADOC_AUTOBRIEF
...@@ -559,10 +575,11 @@ used to specify the number of columns in which this list will be split (can be a ...@@ -559,10 +575,11 @@ used to specify the number of columns in which this list will be split (can be a
\anchor cfg_ignore_prefix \anchor cfg_ignore_prefix
<dt>\c IGNORE_PREFIX <dd> <dt>\c IGNORE_PREFIX <dd>
In case all classes in a project start with a common prefix, all In case all classes in a project start with a common prefix, all classes will
classes will be put under the same header in the alphabetical index. be put under the same header in the alphabetical index.
The \c IGNORE_PREFIX tag can be use to specify a prefix that should be ignored The \c IGNORE_PREFIX tag can be used to specify a prefix
while generating the index headers. (or a list of prefixes) that should be ignored while generating the index
headers.
</dl> </dl>
......
...@@ -103,8 +103,6 @@ tools should be installed. ...@@ -103,8 +103,6 @@ tools should be installed.
the Graph visualization toolkit version 1.5</a><br> the Graph visualization toolkit version 1.5</a><br>
Needed for the include dependency graphs, the graphical inheritance graphs, Needed for the include dependency graphs, the graphical inheritance graphs,
and the collaboration graphs.<br> and the collaboration graphs.<br>
<b>Note:</b> For windows you will have to set the <code>DOTFONTPATH</code> environment
variable to include the current directory (e.g. <code>DOTFONTPATH=.</code>)
<li><a href="http://msdn.microsoft.com/workshop/author/htmlhelp"> <li><a href="http://msdn.microsoft.com/workshop/author/htmlhelp">
the HTML help workshop</a> (for Windows only)<br> the HTML help workshop</a> (for Windows only)<br>
Needed for compiling compressed HTML output (a.k.a. the new Windows help format). Needed for compiling compressed HTML output (a.k.a. the new Windows help format).
......
...@@ -20,12 +20,12 @@ all: class/html/index.html \ ...@@ -20,12 +20,12 @@ all: class/html/index.html \
template/html/index.html \ template/html/index.html \
tag/html/index.html \ tag/html/index.html \
group/html/index.html \ group/html/index.html \
diagram/html/index.html diagrams/html/index.html
clean: clean:
rm -rf class define enum file func page relates author \ rm -rf class define enum file func page relates author \
par overload example include qtstyle jdstyle structcmd \ par overload example include qtstyle jdstyle structcmd \
autolink tag restypedef afterdoc template autolink tag restypedef afterdoc template tag group diagrams
class/html/index.html: class.h class.cfg class/html/index.html: class.h class.cfg
$(DOXYGEN)/bin/doxygen class.cfg $(DOXYGEN)/bin/doxygen class.cfg
...@@ -92,5 +92,7 @@ template/html/index.html: templ.cpp templ.cfg ...@@ -92,5 +92,7 @@ template/html/index.html: templ.cpp templ.cfg
group/html/index.html: group.cpp group.cfg group/html/index.html: group.cpp group.cfg
$(DOXYGEN)/bin/doxygen group.cfg $(DOXYGEN)/bin/doxygen group.cfg
diagram/html/index.html: diagrams_a.h diagrams_b.h diagrams_c.h diagrams_d.h diagrams_e.h diagrams.cfg diagrams/html/index.html: diagrams_a.h diagrams_b.h diagrams_c.h diagrams_d.h diagrams_e.h diagrams.cfg
ifneq ($(HAVE_DOT),)
$(DOXYGEN)/bin/doxygen diagrams.cfg $(DOXYGEN)/bin/doxygen diagrams.cfg
endif
...@@ -16,20 +16,19 @@ all: class/html/index.html \ ...@@ -16,20 +16,19 @@ all: class/html/index.html \
jdstyle/html/index.html \ jdstyle/html/index.html \
structcmd/html/index.html \ structcmd/html/index.html \
autolink/html/index.html \ autolink/html/index.html \
tag/html/index.html \
restypedef/html/index.html \ restypedef/html/index.html \
afterdoc/html/index.html \ afterdoc/html/index.html \
template/html/index.html \ template/html/index.html \
tag/html/index.html \ tag/html/index.html \
group/html/index.html \ group/html/index.html \
diagram/html/index.html diagrams/html/index.html
clean: clean:
deltree /y class define enum file deltree /y class define enum file
deltree /y func page relates author deltree /y func page relates author
deltree /y par overload example include qtstyle deltree /y par overload example include qtstyle
deltree /y jdstyle structcmd autolink tag resdefine deltree /y jdstyle structcmd autolink resdefine
deltree /y restypedef deltree /y restypedef afterdoc template tag group diagrams
class/html/index.html: class.h class.cfg class/html/index.html: class.h class.cfg
$(DOXYDIR)\doxygen class.cfg $(DOXYDIR)\doxygen class.cfg
...@@ -98,5 +97,5 @@ template/html/index.html: templ.cpp templ.cfg ...@@ -98,5 +97,5 @@ template/html/index.html: templ.cpp templ.cfg
group/html/index.html: group.cpp group.cfg group/html/index.html: group.cpp group.cfg
$(DOXYDIR)\doxygen group.cfg $(DOXYDIR)\doxygen group.cfg
diagram/html/index.html: diagrams_a.h diagrams_b.h diagrams_c.h diagrams_d.h diagrams_e.h diagrams.cfg diagrams/html/index.html: diagrams_a.h diagrams_b.h diagrams_c.h diagrams_d.h diagrams_e.h diagrams.cfg
$(DOXYDIR)\doxygen diagrams.cfg $(DOXYDIR)\doxygen diagrams.cfg
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# #
# $Id$ # $Id$
# #
# Copyright (C) 1997-1999 by Dimitri van Heesch. # Copyright (C) 1997-2000 by Dimitri van Heesch.
# #
# Permission to use, copy, modify, and distribute this software and its # Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby # documentation under the terms of the GNU General Public License is hereby
......
...@@ -331,8 +331,12 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -331,8 +331,12 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (incInfo) if (incInfo)
{ {
QCString nm=incInfo->includeName.isEmpty() ? QCString nm=incInfo->includeName.isEmpty() ?
incInfo->fileDef->docName().data() : (incInfo->fileDef ?
incInfo->fileDef->docName().data() : ""
) :
incInfo->includeName.data(); incInfo->includeName.data();
if (!nm.isEmpty())
{
ol.startTypewriter(); ol.startTypewriter();
ol.docify("#include "); ol.docify("#include ");
if (incInfo->local) if (incInfo->local)
...@@ -344,7 +348,14 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -344,7 +348,14 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.docify(nm); ol.docify(nm);
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
ol.enable(OutputGenerator::Html); ol.enable(OutputGenerator::Html);
if (incInfo->fileDef)
{
ol.writeObjectLink(0,incInfo->fileDef->includeName(),0,nm); ol.writeObjectLink(0,incInfo->fileDef->includeName(),0,nm);
}
else
{
ol.docify(nm);
}
ol.popGeneratorState(); ol.popGeneratorState();
if (incInfo->local) if (incInfo->local)
ol.docify("\""); ol.docify("\"");
...@@ -353,6 +364,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -353,6 +364,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.endTypewriter(); ol.endTypewriter();
ol.newParagraph(); ol.newParagraph();
} }
}
if (!Config::genTagFile.isEmpty()) tagFile << ">" << name() << ":"; if (!Config::genTagFile.isEmpty()) tagFile << ">" << name() << ":";
...@@ -1340,12 +1352,14 @@ void ClassDef::determineImplUsageRelation() ...@@ -1340,12 +1352,14 @@ void ClassDef::determineImplUsageRelation()
//printf("in class %s found var type=`%s' name=`%s'\n", //printf("in class %s found var type=`%s' name=`%s'\n",
// name().data(),type.data(),md->name().data()); // name().data(),type.data(),md->name().data());
int p=0,i,l; int p=0,i,l;
while ((i=re.match(type,p,&l))!=-1) // for each class name in the type bool found=FALSE;
while ((i=re.match(type,p,&l))!=-1 && !found) // for each class name in the type
{ {
ClassDef *cd=getClass(name()+"::"+type.mid(i,l)); ClassDef *cd=getClass(name()+"::"+type.mid(i,l));
if (cd==0) cd=getClass(type.mid(i,l)); // TODO: also try inbetween scopes! if (cd==0) cd=getClass(type.mid(i,l)); // TODO: also try inbetween scopes!
if (cd && cd->isLinkable()) // class exists and is linkable if (cd && cd->isLinkable()) // class exists and is linkable
{ {
found=TRUE;
if (usesImplClassDict==0) usesImplClassDict = new UsesClassDict(257); if (usesImplClassDict==0) usesImplClassDict = new UsesClassDict(257);
UsesClassDef *ucd=usesImplClassDict->find(cd->name()); UsesClassDef *ucd=usesImplClassDict->find(cd->name());
if (ucd==0) if (ucd==0)
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "classlist.h" #include "classlist.h"
#include "config.h" #include "config.h"
#include "util.h"
ClassList::ClassList() : QList<ClassDef>() ClassList::ClassList() : QList<ClassDef>()
{ {
...@@ -30,10 +31,12 @@ int ClassList::compareItems(GCI item1, GCI item2) ...@@ -30,10 +31,12 @@ int ClassList::compareItems(GCI item1, GCI item2)
ClassDef *c1=(ClassDef *)item1; ClassDef *c1=(ClassDef *)item1;
ClassDef *c2=(ClassDef *)item2; ClassDef *c2=(ClassDef *)item2;
int prefixLength = Config::ignorePrefix.length(); //int prefixLength = Config::ignorePrefix.length();
int i1 = c1->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0; //int i1 = c1->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0;
int i2 = c2->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0; //int i2 = c2->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0;
return strcmp(c1->name().data()+i1,c2->name().data()+i2); return strcmp(c1->name().data()+getPrefixIndex(c1->name()),
c2->name().data()+getPrefixIndex(c2->name())
);
} }
ClassListIterator::ClassListIterator(const ClassList &cllist) : ClassListIterator::ClassListIterator(const ClassList &cllist) :
......
...@@ -2510,34 +2510,12 @@ YY_RULE_SETUP ...@@ -2510,34 +2510,12 @@ YY_RULE_SETUP
#line 887 "code.l" #line 887 "code.l"
YY_BREAK YY_BREAK
/*
<SkipSpecialComment>"//"
<SkipSpecialComment>[ \t]*"* /" {
BEGIN( lastDContext ) ;
}
<SkipSpecialComment>[ \t]*"* /"[ \t\n]*"\n"/"/ *" {
//g_code->codify("\n");
//QCString lineText=yytext;
//g_yyLineNr+=lineText.contains('\n');
BEGIN( lastDContext ) ;
}
<SkipSpecialComment>.
<SkipSpecialComment>\n {
codifyLines(yytext);
}
<SkipSpecialCxxComment>.* /\n {
codifyLines(yytext);
BEGIN( lastDContext ) ;
}
<SkipSpecialCxxComment>.
<SkipSpecialCxxComment>\n {
codifyLines(yytext);
}
*/
case 67: case 67:
YY_RULE_SETUP YY_RULE_SETUP
#line 912 "code.l" #line 888 "code.l"
{ // remove special one-line comment { // remove special one-line comment
if (Config::stripCommentsFlag)
{
g_yyLineNr+=((QCString)yytext).contains('\n'); g_yyLineNr+=((QCString)yytext).contains('\n');
g_code->endCodeLine(); g_code->endCodeLine();
if (g_yyLineNr<g_inputLines) if (g_yyLineNr<g_inputLines)
...@@ -2545,11 +2523,18 @@ YY_RULE_SETUP ...@@ -2545,11 +2523,18 @@ YY_RULE_SETUP
startCodeLine(*g_code); startCodeLine(*g_code);
} }
} }
else
{
codifyLines(yytext);
}
}
YY_BREAK YY_BREAK
case 68: case 68:
YY_RULE_SETUP YY_RULE_SETUP
#line 920 "code.l" #line 903 "code.l"
{ // remove special one-line comment { // remove special one-line comment
if (Config::stripCommentsFlag)
{
g_yyLineNr++; g_yyLineNr++;
g_code->endCodeLine(); g_code->endCodeLine();
if (g_yyLineNr<g_inputLines) if (g_yyLineNr<g_inputLines)
...@@ -2557,57 +2542,100 @@ YY_RULE_SETUP ...@@ -2557,57 +2542,100 @@ YY_RULE_SETUP
startCodeLine(*g_code); startCodeLine(*g_code);
} }
} }
else
{
codifyLines(yytext);
}
}
YY_BREAK YY_BREAK
case 69: case 69:
YY_RULE_SETUP YY_RULE_SETUP
#line 928 "code.l" #line 918 "code.l"
{ // strip special one-line comment { // strip special one-line comment
if (Config::stripCommentsFlag)
{
char c[2]; c[0]='\n'; c[1]=0; char c[2]; c[0]='\n'; c[1]=0;
codifyLines(c); codifyLines(c);
} }
else
{
codifyLines(yytext);
}
}
YY_BREAK YY_BREAK
case 70: case 70:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
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 932 "code.l" #line 929 "code.l"
{ {
if (Config::stripCommentsFlag)
{
g_lastSpecialCContext = YY_START; g_lastSpecialCContext = YY_START;
g_yyLineNr++; g_yyLineNr++;
BEGIN(RemoveSpecialCComment); BEGIN(RemoveSpecialCComment);
} }
else
{
g_lastCContext = YY_START ;
codifyLines(yytext);
BEGIN(SkipComment);
}
}
YY_BREAK YY_BREAK
case 71: case 71:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
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 937 "code.l" #line 943 "code.l"
{ // special C comment block at a new line { // special C comment block at a new line
if (Config::stripCommentsFlag)
{
g_lastSpecialCContext = YY_START; g_lastSpecialCContext = YY_START;
BEGIN(RemoveSpecialCComment); BEGIN(RemoveSpecialCComment);
} }
else
{
g_lastCContext = YY_START ;
g_code->codify(yytext);
BEGIN(SkipComment);
}
}
YY_BREAK YY_BREAK
case 72: case 72:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
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 941 "code.l" #line 956 "code.l"
{ // special C comment block half way a line { // special C comment block half way a line
if (Config::stripCommentsFlag)
{
g_lastSpecialCContext = YY_START; g_lastSpecialCContext = YY_START;
BEGIN(RemoveSpecialCComment); BEGIN(RemoveSpecialCComment);
} }
else
{
g_lastCContext = YY_START ;
g_code->codify(yytext);
BEGIN(SkipComment);
}
}
YY_BREAK YY_BREAK
case 73: case 73:
YY_RULE_SETUP YY_RULE_SETUP
#line 945 "code.l" #line 969 "code.l"
{} { if (!Config::stripCommentsFlag)
{
g_code->codify(yytext);
}
}
YY_BREAK YY_BREAK
case 74: case 74:
YY_RULE_SETUP YY_RULE_SETUP
#line 946 "code.l" #line 974 "code.l"
{ {
g_code->codify(yytext); g_code->codify(yytext);
g_lastCContext = YY_START ; g_lastCContext = YY_START ;
...@@ -2616,7 +2644,7 @@ YY_RULE_SETUP ...@@ -2616,7 +2644,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 75: case 75:
YY_RULE_SETUP YY_RULE_SETUP
#line 951 "code.l" #line 979 "code.l"
{ {
g_code->codify(yytext); g_code->codify(yytext);
g_lastCContext = YY_START ; g_lastCContext = YY_START ;
...@@ -2625,14 +2653,14 @@ YY_RULE_SETUP ...@@ -2625,14 +2653,14 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 76: case 76:
YY_RULE_SETUP YY_RULE_SETUP
#line 956 "code.l" #line 984 "code.l"
{ {
codifyLines(yytext); codifyLines(yytext);
} }
YY_BREAK YY_BREAK
case 77: case 77:
YY_RULE_SETUP YY_RULE_SETUP
#line 959 "code.l" #line 987 "code.l"
{ {
g_code->codify(yytext); g_code->codify(yytext);
} }
...@@ -2648,7 +2676,7 @@ YY_RULE_SETUP ...@@ -2648,7 +2676,7 @@ YY_RULE_SETUP
*/ */
case 78: case 78:
YY_RULE_SETUP YY_RULE_SETUP
#line 972 "code.l" #line 1000 "code.l"
ECHO; ECHO;
YY_BREAK YY_BREAK
case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INITIAL):
...@@ -3547,7 +3575,7 @@ int main() ...@@ -3547,7 +3575,7 @@ int main()
return 0; return 0;
} }
#endif #endif
#line 972 "code.l" #line 1000 "code.l"
/*@ ---------------------------------------------------------------------------- /*@ ----------------------------------------------------------------------------
......
...@@ -885,31 +885,9 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -885,31 +885,9 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
<RemoveSpecialCComment>"//"|"/*" <RemoveSpecialCComment>"//"|"/*"
<RemoveSpecialCComment>\n { g_yyLineNr++; } <RemoveSpecialCComment>\n { g_yyLineNr++; }
<RemoveSpecialCComment>. <RemoveSpecialCComment>.
/*
<SkipSpecialComment>"//"
<SkipSpecialComment>[ \t]*"* /" {
BEGIN( lastDContext ) ;
}
<SkipSpecialComment>[ \t]*"* /"[ \t\n]*"\n"/"/ *" {
//g_code->codify("\n");
//QCString lineText=yytext;
//g_yyLineNr+=lineText.contains('\n');
BEGIN( lastDContext ) ;
}
<SkipSpecialComment>.
<SkipSpecialComment>\n {
codifyLines(yytext);
}
<SkipSpecialCxxComment>.* /\n {
codifyLines(yytext);
BEGIN( lastDContext ) ;
}
<SkipSpecialCxxComment>.
<SkipSpecialCxxComment>\n {
codifyLines(yytext);
}
*/
<*>\n({B}*"//"[!/][^\n]*\n)* { // remove special one-line comment <*>\n({B}*"//"[!/][^\n]*\n)* { // remove special one-line comment
if (Config::stripCommentsFlag)
{
g_yyLineNr+=((QCString)yytext).contains('\n'); g_yyLineNr+=((QCString)yytext).contains('\n');
g_code->endCodeLine(); g_code->endCodeLine();
if (g_yyLineNr<g_inputLines) if (g_yyLineNr<g_inputLines)
...@@ -917,7 +895,14 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -917,7 +895,14 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
startCodeLine(*g_code); startCodeLine(*g_code);
} }
} }
else
{
codifyLines(yytext);
}
}
<*>^{B}*"//"[!/][^\n]*\n { // remove special one-line comment <*>^{B}*"//"[!/][^\n]*\n { // remove special one-line comment
if (Config::stripCommentsFlag)
{
g_yyLineNr++; g_yyLineNr++;
g_code->endCodeLine(); g_code->endCodeLine();
if (g_yyLineNr<g_inputLines) if (g_yyLineNr<g_inputLines)
...@@ -925,24 +910,67 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -925,24 +910,67 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
startCodeLine(*g_code); startCodeLine(*g_code);
} }
} }
else
{
codifyLines(yytext);
}
}
<*>"//"[!/][^\n]*\n { // strip special one-line comment <*>"//"[!/][^\n]*\n { // strip special one-line comment
if (Config::stripCommentsFlag)
{
char c[2]; c[0]='\n'; c[1]=0; char c[2]; c[0]='\n'; c[1]=0;
codifyLines(c); codifyLines(c);
} }
else
{
codifyLines(yytext);
}
}
<*>\n{B}*"/*"[!*]/[^/*] { <*>\n{B}*"/*"[!*]/[^/*] {
if (Config::stripCommentsFlag)
{
g_lastSpecialCContext = YY_START; g_lastSpecialCContext = YY_START;
g_yyLineNr++; g_yyLineNr++;
BEGIN(RemoveSpecialCComment); BEGIN(RemoveSpecialCComment);
} }
else
{
g_lastCContext = YY_START ;
codifyLines(yytext);
BEGIN(SkipComment);
}
}
<*>^{B}*"/*"[!*]/[^/*] { // special C comment block at a new line <*>^{B}*"/*"[!*]/[^/*] { // special C comment block at a new line
if (Config::stripCommentsFlag)
{
g_lastSpecialCContext = YY_START; g_lastSpecialCContext = YY_START;
BEGIN(RemoveSpecialCComment); BEGIN(RemoveSpecialCComment);
} }
else
{
g_lastCContext = YY_START ;
g_code->codify(yytext);
BEGIN(SkipComment);
}
}
<*>"/*"[!*]/[^/*] { // special C comment block half way a line <*>"/*"[!*]/[^/*] { // special C comment block half way a line
if (Config::stripCommentsFlag)
{
g_lastSpecialCContext = YY_START; g_lastSpecialCContext = YY_START;
BEGIN(RemoveSpecialCComment); BEGIN(RemoveSpecialCComment);
} }
<*>"/*"("!"?)"*/" {} else
{
g_lastCContext = YY_START ;
g_code->codify(yytext);
BEGIN(SkipComment);
}
}
<*>"/*"("!"?)"*/" { if (!Config::stripCommentsFlag)
{
g_code->codify(yytext);
}
}
<*>"/*" { <*>"/*" {
g_code->codify(yytext); g_code->codify(yytext);
g_lastCContext = YY_START ; g_lastCContext = YY_START ;
......
...@@ -302,124 +302,128 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); ...@@ -302,124 +302,128 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
*yy_cp = '\0'; \ *yy_cp = '\0'; \
yy_c_buf_p = yy_cp; yy_c_buf_p = yy_cp;
#define YY_NUM_RULES 102 #define YY_NUM_RULES 104
#define YY_END_OF_BUFFER 103 #define YY_END_OF_BUFFER 105
static yyconst short int yy_accept[1039] = static yyconst short int yy_accept[1073] =
{ 0, { 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 103, 100, 101, 100, 0, 0, 0, 0, 0, 0, 105, 102, 103, 102,
100, 2, 84, 84, 84, 84, 84, 84, 84, 84, 102, 2, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 97, 100, 88, 85, 89, 2, 100, 86, 86, 86, 99, 102, 90, 87, 91, 2, 102,
88, 88, 95, 96, 87, 86, 96, 96, 94, 92, 90, 90, 97, 98, 89, 88, 98, 98, 96, 94,
92, 94, 94, 94, 100, 0, 99, 0, 84, 84, 94, 96, 96, 96, 102, 0, 101, 0, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 0, 98, 88, 86, 86, 86, 86, 86, 86, 86, 86, 0, 100,
90, 88, 95, 96, 87, 96, 93, 91, 0, 0, 90, 92, 90, 97, 98, 89, 98, 95, 93, 0,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 0, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 88, 96, 1, 84, 84, 84, 84, 84, 86, 86, 86, 86, 90, 98, 1, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 1, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
1, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 1, 1, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 0, 31, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 0, 31, 86, 86, 86, 86, 86, 86, 86,
84, 84, 0, 42, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 0, 42, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 0, 14, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 0, 15, 84, 84, 0, 32, 86, 86, 86, 0, 14, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 0, 15, 86, 86, 0, 32, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 0, 13, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 0, 13, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 0, 77, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 0, 77, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 0, 24, 0, 37, 84, 0, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
43, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 0, 24, 0, 37, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 0, 43, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 0, 18, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 0, 44, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 0, 18, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 0, 44, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 0, 30, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 0, 7, 84, 84, 0, 21, 84, 0, 0, 30, 86, 86, 86, 86, 86, 86, 86, 86,
39, 84, 84, 84, 84, 0, 9, 84, 84, 84, 86, 86, 86, 86, 86, 0, 7, 86, 86, 0,
84, 84, 84, 84, 84, 0, 16, 84, 84, 84, 21, 86, 0, 39, 86, 86, 86, 86, 0, 9,
84, 84, 84, 0, 82, 84, 0, 17, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 0, 47, 84, 84, 84, 84, 84, 0, 16, 86, 86, 86, 86, 86, 86, 0, 82,
84, 84, 84, 84, 84, 84, 84, 84, 84, 0, 86, 0, 17, 86, 86, 86, 86, 86, 0, 47,
11, 0, 10, 0, 6, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 0, 75, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 0, 11, 0, 10, 0, 6,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 0, 75, 86, 86,
84, 84, 84, 0, 45, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 0, 29, 84, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 0, 52, 0, 0, 45, 86, 86, 86, 86, 86, 86, 86, 86,
81, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 0, 29, 86, 86, 86, 86, 86, 86,
0, 28, 0, 74, 84, 0, 20, 84, 84, 0, 86, 86, 86, 86, 0, 52, 0, 81, 86, 86,
12, 0, 8, 84, 84, 84, 84, 84, 0, 3, 86, 86, 86, 86, 86, 86, 86, 0, 28, 0,
84, 0, 64, 84, 0, 46, 84, 84, 84, 84, 74, 86, 0, 20, 86, 86, 0, 12, 0, 8,
84, 84, 84, 84, 84, 84, 84, 0, 63, 0, 86, 86, 86, 86, 86, 0, 3, 86, 0, 64,
49, 84, 84, 84, 84, 84, 84, 0, 38, 0, 86, 0, 46, 86, 86, 86, 86, 86, 86, 86,
33, 84, 0, 51, 84, 84, 84, 84, 84, 84, 86, 86, 86, 86, 86, 86, 0, 63, 0, 49,
84, 84, 0, 27, 84, 0, 79, 84, 0, 65, 86, 86, 86, 86, 86, 86, 0, 38, 0, 33,
84, 84, 0, 23, 84, 84, 84, 84, 84, 84, 86, 0, 51, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 84, 84, 84, 84, 0, 62, 84, 86, 0, 27, 86, 0, 79, 86, 0, 65, 86,
84, 84, 84, 84, 84, 84, 0, 40, 84, 84, 86, 0, 23, 86, 86, 86, 86, 86, 86, 86,
0, 50, 84, 84, 84, 84, 84, 84, 0, 36, 86, 86, 86, 86, 86, 86, 86, 86, 0, 62,
0, 76, 84, 84, 84, 84, 0, 73, 0, 4, 86, 86, 86, 86, 86, 86, 86, 0, 40, 86,
0, 83, 84, 0, 69, 84, 84, 84, 84, 84, 86, 0, 50, 86, 86, 86, 86, 86, 86, 0,
84, 84, 84, 84, 84, 84, 84, 0, 48, 0, 36, 0, 76, 86, 86, 86, 86, 0, 73, 0,
61, 84, 84, 84, 84, 84, 84, 0, 25, 84, 4, 0, 83, 86, 86, 0, 69, 86, 86, 86,
0, 54, 84, 0, 22, 0, 55, 0, 41, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
84, 84, 84, 0, 66, 84, 84, 84, 0, 35, 0, 48, 0, 61, 86, 86, 86, 86, 86, 86,
0, 34, 84, 84, 0, 19, 84, 84, 84, 84, 0, 25, 86, 0, 54, 86, 0, 22, 0, 55,
84, 0, 5, 0, 67, 84, 84, 0, 56, 84, 86, 86, 0, 41, 86, 86, 86, 86, 0, 66,
84, 84, 84, 0, 71, 84, 84, 84, 84, 0, 86, 86, 86, 0, 35, 0, 34, 86, 86, 0,
70, 0, 72, 84, 84, 84, 84, 0, 60, 84, 19, 86, 86, 86, 86, 86, 0, 5, 86, 86,
0, 59, 0, 58, 0, 68, 0, 57, 0, 78, 0, 67, 86, 86, 0, 56, 86, 86, 86, 86,
0, 26, 84, 0, 80, 0, 53, 0 0, 71, 86, 86, 86, 86, 0, 70, 86, 86,
0, 72, 86, 86, 86, 86, 0, 60, 86, 0,
59, 0, 58, 0, 68, 0, 84, 86, 0, 57,
0, 78, 0, 26, 86, 0, 80, 0, 85, 0,
53, 0
} ; } ;
static yyconst int yy_ec[256] = static yyconst int yy_ec[256] =
...@@ -463,560 +467,574 @@ static yyconst int yy_meta[45] = ...@@ -463,560 +467,574 @@ static yyconst int yy_meta[45] =
6, 6, 6, 1 6, 6, 6, 1
} ; } ;
static yyconst short int yy_base[1050] = static yyconst short int yy_base[1084] =
{ 0, { 0,
0, 1, 45, 0, 87, 88, 131, 174, 218, 262, 0, 1, 45, 0, 87, 88, 131, 174, 218, 262,
305, 348, 100, 101, 392, 436, 1357, 1358, 1358, 3, 305, 348, 100, 101, 392, 436, 1395, 1396, 1396, 3,
1313, 1358, 0, 1331, 0, 0, 1, 0, 2, 1, 1351, 1396, 0, 1369, 0, 0, 1, 0, 2, 1,
79, 76, 1341, 1340, 1339, 1318, 80, 1317, 0, 82, 79, 76, 1379, 1378, 1377, 1356, 80, 1355, 0, 92,
1336, 1331, 1334, 1358, 6, 0, 1358, 1358, 0, 1338, 1374, 1369, 1372, 1396, 6, 0, 1396, 1396, 0, 1376,
12, 1302, 0, 0, 1342, 1358, 39, 1300, 1358, 1358, 12, 1340, 0, 0, 1380, 1396, 39, 1338, 1396, 1396,
1358, 1334, 113, 1298, 1331, 117, 1358, 1329, 0, 118, 1396, 1372, 111, 1336, 1369, 118, 1396, 1367, 0, 118,
1312, 1316, 1305, 1314, 1321, 9, 1302, 1317, 1318, 115, 1350, 1354, 1343, 1352, 1359, 9, 1340, 1355, 1356, 115,
1306, 1305, 1302, 1314, 1292, 1309, 1299, 1297, 1309, 134, 1344, 1343, 1340, 1352, 1330, 1347, 1337, 1335, 1347, 134,
1287, 1288, 97, 1287, 1290, 1299, 1286, 124, 1294, 10, 1325, 1326, 103, 1325, 1328, 1337, 1324, 124, 1332, 10,
1296, 1300, 1279, 1281, 110, 1280, 1279, 153, 1358, 0, 1334, 1338, 1323, 1316, 1318, 80, 1317, 1316, 153, 1396,
1358, 1298, 0, 0, 1305, 1296, 1358, 1358, 1296, 1262, 0, 1396, 1335, 0, 0, 1342, 1333, 1396, 1396, 1333,
1286, 1282, 1288, 1260, 1282, 1281, 1257, 1265, 128, 1267, 1299, 1323, 1319, 1325, 1297, 1319, 1318, 1294, 1302, 128,
1281, 1253, 1278, 1266, 1266, 1276, 120, 1271, 1263, 1269, 1304, 1318, 1290, 1315, 1303, 1303, 1313, 120, 1308, 1300,
1257, 1267, 1266, 1258, 1254, 1261, 1255, 1261, 1256, 1243, 1306, 1294, 1304, 1303, 1295, 1291, 1298, 1292, 1298, 1293,
1258, 1261, 1256, 1242, 1231, 1242, 1252, 1228, 1243, 1250, 1280, 1295, 1298, 1293, 1279, 1268, 1279, 1289, 1265, 1280,
1243, 1247, 1230, 1245, 1221, 1230, 1229, 1237, 1217, 1238, 1287, 1280, 1284, 1267, 1282, 1258, 1267, 1261, 1265, 1273,
1241, 1228, 1211, 1210, 1358, 1215, 1237, 1212, 1235, 1229, 1253, 1274, 1277, 1264, 1247, 1246, 1396, 1251, 1273, 1248,
1206, 135, 1214, 1231, 1203, 1229, 1227, 150, 1216, 1211, 1271, 1265, 1242, 135, 1250, 1267, 1239, 1265, 1263, 150,
1205, 1211, 1223, 1219, 1194, 1193, 1202, 1211, 1190, 1189, 1252, 1247, 1241, 1247, 1259, 1255, 1230, 1229, 1238, 1247,
1188, 1197, 1209, 1192, 1194, 1197, 1190, 1191, 1204, 1183, 1226, 1225, 1224, 1233, 1245, 1228, 1230, 1233, 1226, 1227,
1191, 147, 1184, 1186, 1195, 1174, 1196, 1195, 1179, 1180, 1240, 1219, 1227, 147, 1220, 1222, 1231, 1210, 1232, 1231,
1196, 145, 1193, 1192, 1178, 1174, 1183, 1190, 1181, 0, 1215, 1216, 1232, 145, 1229, 1203, 1227, 1213, 1209, 1218,
0, 1169, 1186, 1168, 1184, 1157, 1165, 1182, 1164, 1153, 1225, 1216, 0, 0, 1204, 1221, 1203, 1219, 1192, 1200,
1178, 1170, 1175, 1165, 1174, 1157, 1169, 1161, 1168, 1167, 1217, 1199, 1188, 1213, 1205, 1210, 1200, 1209, 1192, 1204,
133, 1155, 1153, 1152, 1166, 1157, 1161, 1143, 169, 1158, 1196, 1203, 1202, 83, 1190, 1188, 1187, 1201, 1192, 1196,
1134, 1157, 1151, 1154, 191, 1144, 1142, 1128, 1127, 1130, 1178, 169, 1193, 1169, 1192, 1186, 1189, 191, 1179, 1177,
1132, 1132, 1123, 1125, 1133, 1142, 1144, 0, 1127, 1125, 1163, 1162, 1165, 1167, 1167, 1158, 1160, 1168, 1177, 1179,
1119, 1122, 1134, 1136, 1112, 1130, 1126, 1117, 1122, 1130, 0, 1162, 1160, 1154, 1157, 1169, 1167, 1170, 1146, 1164,
1129, 1105, 1113, 1118, 1125, 1116, 1116, 1123, 1111, 1111, 1160, 1151, 1156, 1164, 1163, 1139, 1147, 1152, 1159, 1150,
1104, 1118, 1103, 1109, 1092, 1114, 1113, 1089, 1096, 1099, 1150, 1157, 1145, 1145, 1138, 1152, 1137, 1143, 1126, 1148,
1111, 1112, 1111, 1091, 1107, 1094, 1094, 1095, 1091, 1100, 1147, 1123, 1130, 1133, 1145, 1146, 1145, 1125, 1141, 1128,
1083, 1083, 1074, 1085, 1095, 1079, 1070, 182, 1358, 1091, 1128, 1129, 1125, 1134, 1117, 1117, 1108, 1119, 1129, 1113,
1095, 1092, 165, 1089, 1073, 1072, 1063, 1070, 1073, 1087, 1104, 182, 1396, 1125, 1129, 1126, 165, 1123, 1107, 1106,
1078, 1066, 186, 1358, 1076, 1056, 1067, 1062, 150, 1053, 1097, 1104, 1107, 1121, 1112, 1100, 186, 1396, 1110, 1090,
1074, 1053, 1073, 1068, 1069, 1057, 1054, 1069, 1056, 1066, 1101, 1096, 108, 1101, 1086, 184, 1087, 1107, 1102, 1103,
1056, 1064, 189, 1059, 1049, 1038, 1037, 1036, 1047, 193, 1091, 1088, 1103, 1090, 1100, 1090, 1098, 189, 1093, 1083,
1046, 1033, 195, 1045, 1031, 1057, 1029, 1036, 1035, 1049, 1072, 1071, 1070, 1081, 193, 1080, 1067, 195, 1079, 1065,
1052, 1032, 1047, 1041, 1034, 1047, 1027, 1021, 1029, 1043, 1091, 1063, 1070, 1069, 1083, 1086, 1066, 1081, 1075, 1068,
1015, 1014, 178, 1032, 1028, 1011, 1033, 1016, 1012, 1030, 1081, 1061, 1055, 1063, 1077, 1049, 1048, 183, 1066, 1062,
1018, 13, 1008, 1027, 1011, 1016, 1001, 1006, 1025, 1021, 1045, 1067, 1050, 1046, 1064, 1052, 13, 1042, 1061, 1045,
1009, 1010, 1014, 1020, 1003, 1015, 1000, 1005, 998, 1002, 1050, 1035, 1040, 1059, 1055, 1043, 1044, 1048, 1053, 1053,
1006, 1009, 1012, 999, 992, 200, 202, 1358, 1009, 1008, 1039, 1035, 1047, 1032, 1037, 1030, 1034, 1038, 1041, 1044,
1007, 186, 998, 1005, 230, 1358, 987, 988, 231, 1358, 1031, 1024, 204, 230, 1396, 1041, 1040, 1039, 143, 1030,
987, 988, 85, 998, 984, 979, 990, 969, 984, 232, 1037, 231, 1396, 1019, 1020, 232, 1396, 1019, 1020, 158,
980, 987, 973, 988, 975, 978, 971, 968, 187, 983, 1030, 1016, 1011, 1022, 1001, 1016, 234, 1012, 1019, 1005,
972, 970, 972, 955, 981, 980, 960, 963, 964, 956, 1020, 1007, 1010, 1003, 1000, 189, 1015, 1004, 1002, 1004,
967, 974, 958, 955, 964, 966, 956, 964, 950, 949, 987, 1013, 1012, 992, 995, 996, 988, 999, 1006, 990,
945, 958, 950, 945, 947, 234, 235, 933, 236, 959, 987, 996, 998, 988, 996, 982, 981, 977, 990, 982,
956, 938, 937, 954, 950, 237, 1358, 947, 933, 940, 983, 976, 989, 977, 235, 236, 963, 237, 989, 986,
950, 930, 935, 928, 942, 945, 944, 932, 931, 924, 968, 967, 984, 980, 238, 1396, 977, 963, 970, 980,
930, 939, 934, 910, 255, 909, 238, 1358, 933, 921, 960, 965, 958, 972, 975, 974, 962, 961, 954, 960,
929, 928, 911, 926, 925, 221, 911, 927, 912, 920, 969, 964, 940, 255, 939, 239, 1396, 963, 951, 959,
904, 904, 919, 901, 917, 904, 918, 899, 897, 898, 958, 941, 956, 955, 256, 941, 957, 942, 950, 934,
901, 909, 901, 243, 908, 243, 249, 902, 898, 889, 934, 949, 931, 947, 934, 948, 929, 927, 928, 931,
899, 904, 891, 892, 276, 1358, 279, 1358, 896, 280, 939, 931, 243, 938, 177, 279, 932, 928, 919, 929,
1358, 891, 901, 900, 892, 894, 870, 879, 887, 879, 934, 915, 920, 929, 920, 280, 1396, 281, 1396, 924,
874, 887, 888, 883, 874, 869, 868, 862, 874, 876, 282, 1396, 919, 929, 928, 920, 922, 898, 907, 915,
883, 863, 864, 867, 860, 878, 877, 857, 875, 867, 907, 902, 915, 916, 911, 902, 897, 896, 890, 902,
846, 845, 854, 853, 850, 850, 862, 281, 862, 865, 904, 911, 891, 892, 895, 888, 906, 905, 885, 903,
845, 861, 848, 844, 856, 845, 839, 853, 836, 842, 895, 874, 873, 882, 881, 878, 878, 890, 284, 890,
840, 282, 843, 835, 284, 792, 287, 1358, 288, 787, 893, 873, 889, 876, 866, 878, 862, 813, 827, 810,
786, 293, 1358, 793, 788, 301, 782, 70, 87, 85, 91, 148, 287, 192, 192, 288, 191, 293, 1396, 301,
152, 140, 162, 187, 302, 181, 191, 239, 227, 239, 190, 227, 302, 1396, 236, 233, 313, 230, 235, 244,
243, 313, 260, 314, 267, 297, 266, 278, 318, 285, 226, 237, 238, 280, 267, 292, 296, 316, 289, 294,
302, 302, 297, 311, 302, 296, 305, 314, 314, 313, 308, 295, 303, 307, 324, 310, 327, 300, 311, 300,
320, 311, 335, 336, 344, 319, 319, 355, 1358, 311, 293, 333, 300, 318, 318, 314, 328, 317, 314, 321,
314, 323, 327, 357, 345, 331, 347, 336, 334, 333, 330, 337, 336, 343, 334, 358, 359, 360, 343, 343,
335, 341, 368, 1358, 356, 339, 371, 1358, 348, 373, 363, 1396, 336, 339, 349, 342, 372, 361, 347, 363,
1358, 359, 363, 360, 353, 379, 1358, 365, 351, 355, 352, 350, 349, 351, 356, 400, 1396, 370, 353, 401,
360, 376, 400, 350, 379, 403, 1358, 366, 394, 383, 1396, 362, 403, 1396, 372, 376, 373, 380, 405, 1396,
383, 397, 375, 411, 1358, 378, 414, 1358, 390, 416, 391, 376, 393, 380, 399, 388, 405, 417, 380, 397,
402, 403, 393, 420, 1358, 411, 408, 396, 398, 405, 420, 1396, 383, 411, 400, 400, 414, 392, 444, 1396,
409, 417, 444, 445, 417, 432, 426, 434, 435, 451, 394, 445, 1396, 406, 447, 417, 418, 422, 449, 1396,
1358, 452, 1358, 453, 1358, 441, 423, 434, 441, 460, 439, 436, 423, 424, 433, 436, 445, 461, 462, 447,
464, 465, 1358, 451, 467, 439, 457, 471, 472, 457, 449, 443, 451, 452, 469, 1396, 470, 1396, 474, 1396,
455, 450, 472, 463, 485, 471, 487, 467, 489, 476, 453, 441, 452, 459, 481, 482, 483, 1396, 470, 486,
476, 481, 479, 494, 1358, 477, 483, 486, 478, 473, 458, 476, 489, 490, 475, 471, 467, 487, 480, 502,
465, 467, 506, 507, 495, 509, 1358, 482, 483, 484, 488, 504, 484, 506, 493, 470, 494, 485, 500, 499,
483, 485, 515, 518, 505, 521, 488, 523, 1358, 524, 515, 1396, 498, 503, 505, 497, 492, 484, 485, 524,
1358, 507, 499, 518, 507, 509, 520, 536, 508, 538, 526, 514, 528, 1396, 501, 502, 503, 502, 504, 535,
540, 1358, 541, 1358, 513, 543, 1358, 544, 517, 547, 537, 524, 540, 507, 542, 1396, 543, 1396, 525, 518,
1358, 549, 1358, 527, 555, 531, 541, 531, 561, 1358, 537, 526, 528, 539, 555, 527, 557, 559, 1396, 560,
534, 563, 1358, 535, 566, 1358, 552, 540, 539, 555, 1396, 532, 562, 1396, 563, 536, 566, 1396, 568, 1396,
548, 560, 560, 562, 578, 562, 561, 581, 1358, 582, 546, 574, 550, 560, 550, 580, 1396, 553, 582, 1396,
1358, 568, 560, 561, 571, 572, 589, 590, 1358, 593, 554, 585, 1396, 571, 571, 560, 566, 561, 578, 570,
1358, 565, 595, 1358, 581, 597, 576, 590, 573, 592, 582, 582, 583, 599, 583, 582, 602, 1396, 603, 1396,
594, 578, 609, 1358, 610, 611, 1358, 612, 613, 1358, 589, 581, 582, 592, 593, 610, 611, 1396, 614, 1396,
595, 591, 616, 1358, 589, 603, 624, 625, 627, 599, 586, 616, 1396, 602, 618, 597, 611, 594, 613, 615,
629, 612, 603, 618, 595, 607, 609, 640, 1358, 613, 599, 630, 1396, 631, 632, 1396, 633, 634, 1396, 616,
618, 614, 615, 616, 632, 647, 648, 1358, 649, 629, 612, 637, 1396, 610, 624, 645, 646, 648, 620, 631,
652, 1358, 638, 626, 626, 641, 645, 661, 663, 1358, 651, 629, 635, 626, 643, 621, 631, 633, 663, 1396,
664, 1358, 650, 666, 632, 668, 669, 1358, 670, 1358, 636, 641, 637, 638, 639, 655, 670, 671, 1396, 672,
672, 1358, 675, 677, 1358, 681, 654, 669, 657, 675, 652, 675, 1396, 661, 649, 649, 664, 668, 684, 686,
689, 679, 678, 664, 694, 695, 681, 697, 1358, 698, 1396, 687, 1396, 673, 689, 655, 691, 692, 1396, 693,
1358, 674, 701, 689, 688, 678, 681, 710, 1358, 696, 1396, 695, 1396, 698, 678, 704, 1396, 691, 707, 680,
713, 1358, 714, 715, 1358, 716, 1358, 717, 1358, 718, 695, 682, 699, 713, 704, 702, 689, 719, 720, 706,
685, 706, 722, 729, 1358, 704, 716, 714, 734, 1358, 722, 1396, 724, 1396, 699, 726, 714, 713, 703, 705,
735, 1358, 720, 737, 738, 1358, 722, 712, 713, 714, 735, 1396, 721, 738, 1396, 739, 740, 1396, 741, 1396,
746, 749, 1358, 750, 1358, 751, 739, 753, 1358, 736, 727, 719, 744, 1396, 746, 713, 737, 753, 755, 1396,
721, 733, 758, 762, 1358, 729, 765, 766, 767, 769, 731, 743, 740, 760, 1396, 761, 1396, 746, 764, 766,
1358, 770, 1358, 771, 773, 774, 761, 782, 1358, 785, 1396, 749, 739, 740, 743, 773, 775, 1396, 748, 748,
786, 1358, 787, 1358, 788, 1358, 789, 1358, 790, 1358, 779, 1396, 780, 768, 782, 1396, 766, 752, 763, 788,
791, 1358, 793, 794, 1358, 802, 1358, 1358, 814, 820, 791, 1396, 758, 794, 795, 796, 797, 1396, 799, 771,
826, 832, 838, 844, 846, 852, 801, 858, 861 802, 1396, 803, 808, 810, 794, 814, 1396, 815, 816,
1396, 817, 1396, 819, 1396, 821, 1396, 822, 823, 1396,
828, 1396, 830, 1396, 834, 835, 1396, 836, 1396, 837,
1396, 1396, 849, 855, 861, 867, 873, 879, 881, 887,
835, 893, 896
} ; } ;
static yyconst short int yy_def[1050] = static yyconst short int yy_def[1084] =
{ 0, { 0,
1039, 1039, 1038, 3, 1039, 1039, 1040, 1040, 1041, 1041, 1073, 1073, 1072, 3, 1073, 1073, 1074, 1074, 1075, 1075,
1042, 1042, 1043, 1043, 1044, 1044, 1038, 1038, 1038, 1038, 1076, 1076, 1077, 1077, 1078, 1078, 1072, 1072, 1072, 1072,
1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1038, 1038, 1046, 1038, 1038, 1046, 1038, 1079, 1079, 1079, 1072, 1072, 1080, 1072, 1072, 1080, 1072,
1046, 1046, 1047, 1048, 1038, 1038, 1048, 1048, 1038, 1038, 1080, 1080, 1081, 1082, 1072, 1072, 1082, 1082, 1072, 1072,
1038, 1038, 1038, 1038, 1049, 1038, 1038, 1038, 1045, 1045, 1072, 1072, 1072, 1072, 1083, 1072, 1072, 1072, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1046, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1072, 1072,
1038, 1046, 1047, 1048, 1038, 1048, 1038, 1038, 1049, 1038, 1080, 1072, 1080, 1081, 1082, 1072, 1082, 1072, 1072, 1083,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1072, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1046, 1048, 1038, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1080, 1082, 1072, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1048, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1080, 1082, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1038, 1038, 1079, 1079, 1079, 1072, 1072, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1072, 1072, 1079, 1079, 1072, 1072, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1072, 1072, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1038, 1038, 1038, 1038, 1045, 1038, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1038, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1072, 1072, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1038, 1038, 1045, 1045, 1038, 1038, 1045, 1038, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1038, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1079, 1079, 1072,
1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1072, 1079, 1072, 1072, 1079, 1079, 1079, 1079, 1072, 1072,
1045, 1045, 1045, 1038, 1038, 1045, 1038, 1038, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079, 1072, 1072,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1079, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1072, 1072,
1038, 1038, 1038, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1072, 1072, 1072, 1072, 1072, 1072,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1079, 1079,
1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1038, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1038, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079,
1038, 1038, 1038, 1038, 1045, 1038, 1038, 1045, 1045, 1038, 1079, 1079, 1079, 1079, 1072, 1072, 1072, 1072, 1079, 1079,
1038, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1072,
1045, 1038, 1038, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1072, 1079, 1072, 1072, 1079, 1079, 1072, 1072, 1072, 1072,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1038, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1079, 1072, 1072,
1038, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1038, 1079, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1038, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1072, 1072,
1045, 1045, 1038, 1038, 1045, 1038, 1038, 1045, 1038, 1038, 1079, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1072, 1072,
1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1079, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1079, 1072, 1072, 1079, 1072, 1072, 1079, 1072, 1072, 1079,
1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1045, 1079, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1038, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1072, 1072,
1038, 1038, 1045, 1045, 1045, 1045, 1038, 1038, 1038, 1038, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1079,
1038, 1038, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1045, 1079, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079, 1072,
1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1038, 1072, 1072, 1072, 1079, 1079, 1079, 1079, 1072, 1072, 1072,
1038, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1072, 1072, 1072, 1079, 1079, 1072, 1072, 1079, 1079, 1079,
1038, 1038, 1045, 1038, 1038, 1038, 1038, 1038, 1038, 1045, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1038, 1038, 1072, 1072, 1072, 1072, 1079, 1079, 1079, 1079, 1079, 1079,
1038, 1038, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1072, 1072, 1079, 1072, 1072, 1079, 1072, 1072, 1072, 1072,
1045, 1038, 1038, 1038, 1038, 1045, 1045, 1038, 1038, 1045, 1079, 1079, 1072, 1072, 1079, 1079, 1079, 1079, 1072, 1072,
1045, 1045, 1045, 1038, 1038, 1045, 1045, 1045, 1045, 1038, 1079, 1079, 1079, 1072, 1072, 1072, 1072, 1079, 1079, 1072,
1038, 1038, 1038, 1045, 1045, 1045, 1045, 1038, 1038, 1045, 1072, 1079, 1079, 1079, 1079, 1079, 1072, 1072, 1079, 1079,
1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1072, 1072, 1079, 1079, 1072, 1072, 1079, 1079, 1079, 1079,
1038, 1038, 1045, 1038, 1038, 1038, 1038, 0, 1038, 1038, 1072, 1072, 1079, 1079, 1079, 1079, 1072, 1072, 1079, 1079,
1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038 1072, 1072, 1079, 1079, 1079, 1079, 1072, 1072, 1079, 1072,
1072, 1072, 1072, 1072, 1072, 1072, 1072, 1079, 1072, 1072,
1072, 1072, 1072, 1072, 1079, 1072, 1072, 1072, 1072, 1072,
1072, 0, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
1072, 1072, 1072
} ; } ;
static yyconst short int yy_nxt[1403] = static yyconst short int yy_nxt[1441] =
{ 0, { 0,
1038, 343, 19, 19, 66, 67, 66, 108, 109, 108, 1072, 347, 19, 19, 66, 67, 66, 109, 110, 109,
1038, 344, 73, 66, 67, 66, 100, 83, 74, 1038, 1072, 348, 73, 66, 67, 66, 100, 83, 74, 1072,
71, 77, 81, 75, 163, 79, 76, 78, 471, 72, 71, 77, 81, 75, 164, 79, 76, 78, 478, 72,
84, 101, 129, 130, 82, 80, 472, 164, 20, 20, 84, 101, 130, 131, 82, 80, 479, 165, 20, 20,
66, 67, 66, 21, 21, 18, 18, 19, 18, 18, 66, 67, 66, 21, 21, 18, 18, 19, 18, 18,
22, 18, 18, 18, 23, 23, 18, 24, 25, 26, 22, 18, 18, 18, 23, 23, 18, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 23, 34, 35, 27, 28, 29, 30, 31, 32, 33, 23, 34, 35,
23, 36, 37, 38, 39, 40, 41, 23, 42, 43, 23, 36, 37, 38, 39, 40, 41, 23, 42, 43,
23, 23, 23, 20, 23, 23, 23, 23, 21, 44, 23, 23, 23, 20, 23, 23, 23, 23, 21, 44,
44, 85, 95, 699, 88, 96, 97, 509, 102, 86, 44, 85, 95, 171, 88, 96, 97, 313, 172, 86,
89, 90, 60, 60, 61, 61, 62, 62, 103, 98, 89, 90, 60, 60, 61, 61, 62, 62, 102, 98,
87, 154, 510, 104, 66, 67, 66, 117, 66, 67, 87, 103, 66, 67, 66, 118, 694, 155, 104, 66,
66, 700, 155, 169, 701, 45, 45, 134, 170, 135, 67, 66, 314, 105, 417, 45, 45, 135, 156, 136,
21, 21, 18, 47, 18, 48, 49, 50, 63, 63, 21, 21, 18, 47, 18, 48, 49, 50, 63, 63,
160, 121, 136, 64, 64, 122, 137, 309, 147, 193, 161, 122, 137, 64, 64, 123, 138, 418, 148, 195,
161, 184, 123, 148, 108, 109, 108, 149, 185, 194, 162, 186, 124, 149, 109, 110, 109, 150, 187, 196,
238, 150, 245, 270, 281, 151, 412, 239, 702, 51, 241, 151, 248, 273, 284, 152, 510, 242, 695, 51,
703, 282, 310, 271, 52, 18, 47, 18, 48, 49, 518, 285, 511, 274, 52, 18, 47, 18, 48, 49,
50, 318, 246, 328, 397, 704, 319, 343, 320, 413, 50, 322, 249, 332, 402, 519, 323, 347, 324, 631,
427, 398, 328, 329, 435, 321, 439, 344, 461, 322, 434, 403, 332, 333, 442, 325, 446, 348, 421, 326,
428, 496, 329, 427, 436, 527, 440, 705, 462, 501, 435, 422, 333, 468, 443, 505, 447, 536, 698, 632,
708, 497, 51, 428, 528, 502, 709, 52, 18, 18, 699, 702, 51, 469, 705, 506, 537, 52, 18, 18,
47, 18, 18, 22, 18, 18, 18, 18, 18, 18, 47, 18, 18, 22, 18, 18, 18, 18, 18, 18,
330, 435, 439, 517, 441, 555, 557, 560, 496, 517, 334, 434, 442, 446, 448, 526, 566, 568, 571, 505,
598, 436, 440, 518, 617, 556, 558, 561, 497, 518, 526, 435, 443, 447, 628, 527, 567, 569, 572, 506,
622, 710, 599, 711, 618, 620, 20, 18, 712, 713, 527, 706, 707, 708, 629, 711, 20, 18, 712, 713,
623, 21, 18, 18, 47, 18, 18, 22, 18, 18, 714, 21, 18, 18, 47, 18, 18, 22, 18, 18,
18, 18, 18, 18, 585, 621, 716, 555, 586, 587, 18, 18, 18, 18, 596, 609, 715, 716, 597, 598,
557, 560, 668, 683, 588, 687, 589, 556, 617, 690, 633, 566, 568, 571, 599, 681, 600, 610, 696, 700,
558, 561, 669, 684, 622, 688, 719, 722, 618, 691, 634, 567, 569, 572, 628, 682, 717, 718, 697, 701,
20, 18, 696, 706, 623, 21, 55, 56, 18, 48, 20, 18, 703, 633, 629, 21, 55, 56, 18, 48,
22, 50, 697, 707, 714, 717, 720, 723, 726, 724, 22, 50, 704, 634, 709, 719, 720, 721, 723, 724,
727, 728, 729, 730, 715, 718, 731, 732, 721, 725, 725, 726, 727, 728, 710, 729, 731, 722, 732, 734,
733, 734, 735, 736, 737, 739, 740, 742, 746, 747, 735, 737, 738, 741, 739, 730, 742, 743, 733, 744,
748, 749, 750, 57, 738, 744, 741, 743, 58, 55, 745, 746, 736, 57, 740, 747, 748, 749, 58, 55,
56, 18, 48, 22, 50, 745, 668, 751, 752, 754, 56, 18, 48, 22, 50, 750, 751, 752, 754, 755,
755, 756, 757, 758, 759, 760, 669, 761, 753, 683, 757, 759, 761, 762, 681, 763, 764, 753, 765, 756,
762, 763, 687, 764, 690, 765, 766, 767, 768, 684, 758, 760, 766, 767, 682, 769, 770, 771, 772, 773,
696, 769, 688, 770, 691, 771, 57, 772, 773, 776, 774, 775, 776, 768, 777, 778, 57, 779, 780, 781,
697, 58, 18, 18, 19, 18, 18, 18, 18, 18, 782, 58, 18, 18, 19, 18, 18, 18, 18, 18,
18, 774, 777, 18, 706, 778, 779, 780, 781, 782, 18, 696, 700, 18, 703, 783, 709, 784, 785, 786,
783, 775, 714, 784, 707, 717, 785, 786, 788, 789, 787, 697, 701, 788, 704, 789, 710, 790, 791, 793,
790, 724, 715, 791, 792, 718, 793, 787, 794, 795, 794, 721, 795, 796, 797, 798, 799, 800, 792, 801,
20, 725, 796, 797, 802, 21, 18, 18, 19, 18, 20, 722, 802, 805, 806, 21, 18, 18, 19, 18,
18, 18, 18, 18, 18, 798, 800, 18, 803, 804, 18, 18, 18, 18, 18, 729, 732, 18, 803, 807,
805, 806, 740, 742, 744, 799, 801, 807, 808, 809, 739, 808, 809, 810, 811, 730, 733, 812, 804, 813,
810, 811, 741, 743, 745, 813, 752, 815, 816, 818, 740, 814, 815, 817, 819, 820, 821, 822, 823, 824,
819, 812, 820, 822, 20, 814, 753, 824, 817, 21, 755, 757, 816, 818, 20, 759, 825, 826, 827, 21,
825, 826, 821, 823, 827, 828, 829, 831, 832, 834, 756, 758, 828, 830, 767, 760, 832, 833, 835, 836,
835, 837, 838, 839, 840, 774, 830, 841, 833, 842, 837, 839, 829, 831, 768, 841, 842, 834, 843, 844,
836, 843, 844, 845, 846, 775, 847, 848, 850, 852, 838, 840, 845, 846, 848, 849, 851, 852, 854, 855,
786, 853, 854, 855, 856, 857, 858, 849, 851, 860, 856, 857, 858, 847, 859, 850, 791, 853, 860, 861,
787, 862, 863, 866, 798, 800, 859, 867, 868, 861, 862, 863, 864, 865, 866, 867, 792, 869, 871, 803,
869, 870, 864, 871, 799, 801, 872, 873, 875, 876, 872, 873, 874, 875, 876, 868, 877, 870, 879, 804,
865, 811, 813, 878, 816, 879, 881, 874, 820, 877, 881, 882, 885, 815, 817, 886, 878, 887, 880, 888,
822, 812, 814, 882, 817, 880, 883, 885, 821, 886, 889, 883, 890, 816, 818, 891, 892, 894, 895, 884,
823, 887, 829, 888, 832, 889, 884, 835, 890, 891, 828, 830, 897, 833, 898, 900, 893, 837, 896, 839,
892, 893, 830, 894, 833, 895, 896, 836, 897, 898, 829, 831, 901, 834, 899, 902, 904, 838, 905, 840,
900, 901, 848, 850, 902, 903, 904, 905, 906, 899, 906, 846, 907, 849, 908, 903, 852, 909, 910, 911,
907, 858, 849, 851, 860, 909, 863, 910, 911, 913, 912, 847, 913, 850, 914, 915, 853, 916, 917, 918,
908, 859, 914, 915, 861, 916, 864, 917, 912, 918, 919, 921, 922, 867, 869, 923, 924, 925, 926, 927,
873, 919, 876, 921, 879, 923, 924, 883, 925, 926, 920, 928, 877, 868, 870, 879, 930, 882, 931, 932,
874, 920, 877, 922, 880, 927, 929, 884, 931, 933, 934, 929, 878, 935, 936, 880, 937, 883, 938, 933,
934, 936, 937, 938, 939, 928, 930, 940, 932, 941, 939, 892, 940, 895, 942, 898, 944, 945, 902, 946,
935, 898, 942, 943, 944, 945, 946, 947, 948, 907, 947, 893, 941, 896, 943, 899, 948, 950, 903, 952,
950, 899, 952, 911, 953, 954, 955, 956, 949, 908, 954, 955, 956, 958, 959, 960, 949, 951, 961, 953,
951, 957, 958, 912, 919, 921, 960, 961, 963, 964, 962, 963, 957, 964, 919, 965, 966, 967, 968, 969,
927, 929, 959, 931, 920, 922, 966, 962, 934, 965, 970, 971, 928, 973, 920, 975, 932, 976, 977, 978,
928, 930, 968, 932, 970, 971, 967, 972, 935, 973, 979, 972, 929, 974, 980, 981, 933, 940, 942, 983,
974, 976, 969, 977, 978, 979, 981, 983, 948, 950, 984, 986, 987, 948, 950, 982, 952, 941, 943, 989,
975, 984, 985, 987, 988, 980, 982, 989, 949, 951, 985, 991, 988, 949, 951, 956, 953, 992, 993, 990,
990, 958, 986, 991, 961, 992, 964, 966, 968, 994, 995, 996, 997, 998, 999, 957, 1001, 1002, 994, 1003,
996, 959, 997, 998, 962, 993, 965, 967, 969, 995, 1004, 1006, 1008, 971, 1000, 973, 1009, 1010, 1012, 1013,
974, 1000, 1001, 999, 1002, 979, 981, 1003, 1004, 985, 1005, 1007, 1014, 972, 1015, 974, 981, 1011, 1016, 984,
975, 1006, 1007, 1008, 1009, 980, 982, 1010, 1005, 986, 1017, 987, 989, 1019, 1020, 993, 982, 1021, 1023, 985,
992, 994, 1012, 1014, 998, 1015, 1016, 1011, 1017, 1018, 1018, 988, 990, 1024, 1025, 994, 999, 1022, 1027, 1028,
993, 995, 1013, 1004, 999, 1020, 1021, 1023, 1025, 1019, 1029, 1004, 1006, 1030, 1026, 1031, 1000, 1010, 1033, 1034,
1010, 1012, 1027, 1005, 1029, 1031, 1022, 1024, 1026, 1033, 1035, 1005, 1007, 1036, 1037, 1032, 1017, 1011, 1039, 1040,
1011, 1013, 1028, 1018, 1030, 1032, 1034, 1021, 1023, 1025, 1021, 1041, 1043, 1025, 1038, 1044, 1018, 1045, 1046, 1047,
1027, 1029, 1031, 1019, 1036, 1034, 1035, 1022, 1024, 1026, 1022, 1042, 1031, 1026, 1049, 1050, 1052, 1054, 1037, 1048,
1028, 1030, 1032, 1036, 1037, 1035, 113, 698, 695, 694, 1056, 1058, 1032, 1041, 1059, 1051, 1053, 1055, 1038, 1061,
693, 692, 689, 1037, 18, 18, 18, 18, 18, 18, 1057, 1063, 1065, 1042, 1060, 1047, 1066, 1050, 1052, 1062,
46, 46, 46, 46, 46, 46, 53, 53, 53, 53, 1054, 1064, 1056, 1068, 1059, 1048, 1067, 1051, 1053, 1061,
53, 53, 54, 54, 54, 54, 54, 54, 59, 59, 1055, 1063, 1057, 1069, 1060, 1070, 1066, 1068, 1070, 1062,
59, 59, 59, 59, 65, 65, 65, 65, 65, 65, 114, 1064, 693, 692, 691, 1071, 1067, 1069, 1071, 18,
69, 69, 110, 686, 110, 110, 110, 110, 114, 685, 18, 18, 18, 18, 18, 46, 46, 46, 46, 46,
682, 114, 114, 114, 119, 119, 119, 681, 680, 679, 46, 53, 53, 53, 53, 53, 53, 54, 54, 54,
678, 677, 676, 675, 674, 673, 672, 671, 670, 667, 54, 54, 54, 59, 59, 59, 59, 59, 59, 65,
666, 665, 664, 663, 662, 661, 660, 659, 658, 657, 65, 65, 65, 65, 65, 69, 69, 111, 690, 111,
656, 655, 654, 653, 652, 651, 650, 649, 648, 647, 111, 111, 111, 115, 689, 688, 115, 115, 115, 120,
646, 645, 644, 643, 642, 641, 640, 639, 638, 637, 120, 120, 687, 686, 685, 684, 683, 680, 679, 678,
636, 635, 634, 633, 632, 631, 630, 629, 628, 627, 677, 676, 675, 674, 673, 672, 671, 670, 669, 668,
626, 625, 624, 619, 616, 615, 614, 613, 612, 611, 667, 666, 665, 664, 663, 662, 661, 660, 659, 658,
610, 609, 608, 607, 606, 605, 604, 603, 602, 601, 657, 656, 655, 654, 653, 652, 651, 650, 649, 648,
600, 597, 596, 595, 594, 593, 592, 591, 590, 584, 647, 646, 645, 644, 643, 642, 641, 640, 639, 638,
583, 582, 581, 580, 579, 578, 577, 576, 575, 574, 637, 636, 635, 630, 627, 626, 625, 624, 623, 622,
573, 572, 571, 570, 569, 568, 567, 566, 565, 564, 621, 620, 619, 618, 617, 616, 615, 614, 613, 612,
563, 562, 559, 554, 553, 552, 551, 550, 549, 548, 611, 608, 607, 606, 605, 604, 603, 602, 601, 595,
547, 546, 545, 544, 543, 542, 541, 540, 539, 538, 594, 593, 592, 591, 590, 589, 588, 587, 586, 585,
537, 536, 535, 534, 533, 532, 531, 530, 529, 526, 584, 583, 582, 581, 580, 579, 578, 577, 576, 575,
525, 524, 523, 522, 521, 520, 519, 516, 515, 514, 574, 573, 570, 565, 564, 563, 562, 561, 560, 559,
513, 512, 511, 508, 507, 506, 505, 504, 503, 500, 558, 557, 556, 555, 554, 553, 552, 551, 550, 549,
499, 498, 495, 494, 493, 492, 491, 490, 489, 488, 548, 547, 546, 545, 544, 543, 542, 541, 540, 539,
487, 486, 485, 484, 483, 482, 481, 480, 479, 478, 538, 535, 534, 533, 532, 531, 530, 529, 528, 525,
477, 476, 475, 474, 473, 470, 469, 468, 467, 466, 524, 523, 522, 521, 520, 517, 516, 515, 514, 513,
465, 464, 463, 460, 459, 458, 457, 456, 455, 454, 512, 509, 508, 507, 504, 503, 502, 501, 500, 499,
453, 452, 451, 450, 449, 448, 447, 446, 445, 444, 498, 497, 496, 495, 494, 493, 492, 491, 490, 489,
443, 442, 438, 437, 434, 433, 432, 431, 430, 429, 488, 487, 486, 485, 484, 483, 482, 481, 480, 477,
426, 425, 424, 423, 422, 421, 420, 419, 418, 417, 476, 475, 474, 473, 472, 471, 470, 467, 466, 465,
416, 415, 414, 411, 410, 409, 408, 407, 406, 405, 464, 463, 462, 461, 460, 459, 458, 457, 456, 455,
404, 403, 402, 401, 400, 399, 396, 395, 394, 393, 454, 453, 452, 451, 450, 449, 445, 444, 441, 440,
392, 391, 390, 389, 388, 387, 386, 385, 384, 383, 439, 438, 437, 436, 433, 432, 431, 430, 429, 428,
382, 381, 380, 379, 378, 377, 376, 375, 374, 373, 427, 426, 425, 424, 423, 420, 419, 416, 415, 414,
372, 371, 370, 369, 368, 367, 366, 365, 364, 363, 413, 412, 411, 410, 409, 408, 407, 406, 405, 404,
362, 361, 360, 359, 358, 357, 356, 355, 354, 353, 401, 400, 399, 398, 397, 396, 395, 394, 393, 392,
352, 351, 350, 349, 348, 347, 346, 345, 342, 341, 391, 390, 389, 388, 387, 386, 385, 384, 383, 382,
340, 339, 338, 337, 336, 335, 334, 333, 332, 331, 381, 380, 379, 378, 377, 376, 375, 374, 373, 372,
327, 326, 325, 324, 323, 317, 316, 315, 314, 313, 371, 370, 369, 368, 367, 366, 365, 364, 363, 362,
312, 311, 308, 307, 306, 305, 304, 303, 302, 301, 361, 360, 359, 358, 357, 356, 355, 354, 353, 352,
300, 299, 298, 297, 296, 295, 294, 293, 292, 291, 351, 350, 349, 346, 345, 344, 343, 342, 341, 340,
290, 289, 288, 287, 286, 285, 284, 283, 280, 279, 339, 338, 337, 336, 335, 331, 330, 329, 328, 327,
278, 277, 276, 275, 274, 273, 272, 269, 268, 267, 321, 320, 319, 318, 317, 316, 315, 312, 311, 310,
266, 265, 264, 263, 262, 261, 260, 259, 258, 257, 309, 308, 307, 306, 305, 304, 303, 302, 301, 300,
256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290,
244, 243, 242, 241, 240, 237, 236, 235, 234, 233, 289, 288, 287, 286, 283, 282, 281, 280, 279, 278,
232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 277, 276, 275, 272, 271, 270, 269, 268, 267, 266,
222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 265, 264, 263, 262, 261, 260, 259, 258, 257, 256,
212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 255, 254, 253, 252, 251, 250, 247, 246, 245, 244,
202, 201, 200, 199, 198, 197, 196, 195, 192, 191, 243, 240, 239, 238, 237, 236, 235, 234, 233, 232,
190, 189, 188, 187, 186, 183, 182, 181, 180, 179, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222,
178, 177, 176, 175, 118, 174, 115, 173, 172, 171, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212,
168, 167, 166, 165, 162, 159, 158, 157, 156, 153, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202,
152, 146, 145, 144, 143, 142, 141, 140, 139, 138, 201, 200, 199, 198, 197, 194, 193, 192, 191, 190,
133, 132, 131, 128, 127, 126, 125, 124, 120, 118, 189, 188, 185, 184, 183, 182, 181, 180, 179, 178,
68, 111, 116, 115, 112, 111, 107, 106, 105, 99, 177, 119, 176, 116, 175, 174, 173, 170, 169, 168,
94, 93, 92, 91, 70, 68, 1038, 17, 1038, 1038, 167, 166, 163, 160, 159, 158, 157, 154, 153, 147,
1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 146, 145, 144, 143, 142, 141, 140, 139, 134, 133,
1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 132, 129, 128, 127, 126, 125, 121, 119, 68, 112,
1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 117, 116, 113, 112, 108, 107, 106, 99, 94, 93,
1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 92, 91, 70, 68, 1072, 17, 1072, 1072, 1072, 1072,
1038, 1038 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072
} ; } ;
static yyconst short int yy_chk[1403] = static yyconst short int yy_chk[1441] =
{ 0, { 0,
0, 278, 1, 2, 20, 20, 20, 45, 45, 45, 0, 281, 1, 2, 20, 20, 20, 45, 45, 45,
0, 278, 26, 51, 51, 51, 39, 30, 26, 0, 0, 281, 26, 51, 51, 51, 39, 30, 26, 0,
25, 27, 29, 26, 100, 28, 26, 27, 402, 25, 25, 27, 29, 26, 100, 28, 26, 27, 407, 25,
30, 39, 76, 76, 29, 28, 402, 100, 1, 2, 30, 39, 76, 76, 29, 28, 407, 100, 1, 2,
57, 57, 57, 1, 2, 3, 3, 3, 3, 3, 57, 57, 57, 1, 2, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5,
6, 31, 37, 628, 32, 37, 37, 443, 40, 31, 6, 31, 37, 106, 32, 37, 37, 254, 106, 31,
32, 32, 13, 14, 13, 14, 13, 14, 40, 37, 32, 32, 13, 14, 13, 14, 13, 14, 40, 37,
31, 93, 443, 40, 63, 63, 63, 63, 66, 66, 31, 40, 63, 63, 63, 63, 621, 93, 40, 66,
66, 629, 93, 105, 630, 5, 6, 80, 105, 80, 66, 66, 254, 40, 353, 5, 6, 80, 93, 80,
5, 6, 7, 7, 7, 7, 7, 7, 13, 14, 5, 6, 7, 7, 7, 7, 7, 7, 13, 14,
98, 70, 80, 13, 14, 70, 80, 251, 90, 137, 98, 70, 80, 13, 14, 70, 80, 353, 90, 138,
98, 129, 70, 90, 108, 108, 108, 90, 129, 137, 98, 130, 70, 90, 109, 109, 109, 90, 130, 138,
182, 90, 188, 212, 222, 90, 349, 182, 631, 7, 184, 90, 190, 214, 224, 90, 439, 184, 622, 7,
632, 222, 251, 212, 7, 8, 8, 8, 8, 8, 450, 224, 439, 214, 7, 8, 8, 8, 8, 8,
8, 259, 188, 328, 333, 633, 259, 343, 259, 349, 8, 262, 190, 332, 337, 450, 262, 347, 262, 555,
363, 333, 265, 328, 370, 259, 373, 343, 393, 259, 368, 337, 268, 332, 375, 262, 378, 347, 356, 262,
363, 426, 265, 427, 370, 459, 373, 634, 393, 432, 368, 356, 268, 398, 375, 433, 378, 466, 624, 555,
636, 426, 8, 427, 459, 432, 637, 8, 9, 9, 625, 627, 8, 398, 631, 433, 466, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
265, 435, 439, 450, 373, 486, 487, 489, 496, 517, 268, 434, 442, 446, 378, 457, 495, 496, 498, 505,
526, 435, 439, 450, 544, 486, 487, 489, 496, 517, 526, 434, 442, 446, 553, 457, 495, 496, 498, 505,
547, 638, 526, 639, 544, 546, 9, 9, 640, 641, 526, 632, 635, 636, 553, 638, 9, 9, 639, 640,
547, 9, 10, 10, 10, 10, 10, 10, 10, 10, 641, 9, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 515, 546, 643, 555, 515, 515, 10, 10, 10, 10, 524, 535, 642, 643, 524, 524,
557, 560, 598, 612, 515, 615, 515, 555, 617, 619, 556, 566, 568, 571, 524, 609, 524, 535, 623, 626,
557, 560, 598, 612, 622, 615, 645, 647, 617, 619, 556, 566, 568, 571, 628, 609, 644, 645, 623, 626,
10, 10, 626, 635, 622, 10, 11, 11, 11, 11, 10, 10, 630, 633, 628, 10, 11, 11, 11, 11,
11, 11, 626, 635, 642, 644, 646, 648, 650, 649, 11, 11, 630, 633, 637, 646, 647, 648, 649, 650,
651, 652, 653, 654, 642, 644, 655, 656, 646, 649, 651, 652, 653, 654, 637, 655, 656, 648, 657, 658,
657, 658, 659, 660, 661, 662, 663, 664, 666, 667, 659, 660, 661, 663, 662, 655, 664, 665, 657, 666,
670, 671, 672, 11, 661, 665, 663, 664, 11, 12, 667, 668, 659, 11, 662, 669, 670, 671, 11, 12,
12, 12, 12, 12, 12, 665, 668, 673, 674, 675, 12, 12, 12, 12, 12, 672, 673, 674, 675, 676,
676, 677, 678, 679, 680, 681, 668, 682, 674, 683, 677, 678, 679, 680, 681, 683, 684, 674, 685, 676,
685, 686, 687, 689, 690, 692, 693, 694, 695, 683, 677, 678, 686, 687, 681, 688, 689, 690, 691, 692,
696, 698, 687, 699, 690, 700, 12, 701, 702, 704, 693, 694, 695, 687, 698, 699, 12, 702, 705, 706,
696, 12, 15, 15, 15, 15, 15, 15, 15, 15, 707, 12, 15, 15, 15, 15, 15, 15, 15, 15,
15, 703, 705, 15, 706, 708, 709, 710, 711, 712, 15, 696, 700, 15, 703, 708, 709, 711, 712, 713,
713, 703, 714, 716, 706, 717, 719, 720, 721, 722, 714, 696, 700, 715, 703, 716, 709, 717, 718, 719,
723, 724, 714, 726, 727, 717, 728, 720, 729, 730, 720, 721, 723, 724, 725, 726, 727, 728, 718, 731,
15, 724, 731, 732, 735, 15, 16, 16, 16, 16, 15, 721, 734, 736, 737, 15, 16, 16, 16, 16,
16, 16, 16, 16, 16, 733, 734, 16, 736, 737, 16, 16, 16, 16, 16, 729, 732, 16, 735, 738,
738, 739, 740, 742, 744, 733, 734, 746, 747, 748, 739, 741, 742, 743, 744, 729, 732, 745, 735, 746,
749, 750, 740, 742, 744, 751, 752, 754, 755, 756, 739, 747, 748, 749, 750, 751, 752, 753, 754, 761,
757, 750, 758, 759, 16, 751, 752, 760, 755, 16, 755, 757, 748, 749, 16, 759, 762, 763, 764, 16,
761, 762, 758, 759, 763, 764, 765, 766, 767, 768, 755, 757, 765, 766, 767, 759, 769, 770, 771, 772,
769, 770, 771, 772, 773, 774, 765, 776, 767, 777, 773, 774, 765, 766, 767, 775, 776, 770, 777, 778,
769, 778, 779, 780, 781, 774, 782, 783, 784, 785, 773, 774, 779, 780, 781, 782, 783, 784, 785, 786,
786, 788, 789, 790, 791, 792, 793, 783, 784, 794, 787, 788, 789, 780, 790, 782, 791, 784, 793, 794,
786, 795, 796, 797, 798, 800, 793, 802, 803, 794, 795, 796, 797, 798, 799, 800, 791, 801, 802, 803,
804, 805, 796, 806, 798, 800, 807, 808, 809, 810, 805, 806, 807, 808, 809, 800, 810, 801, 811, 803,
796, 811, 813, 815, 816, 818, 819, 808, 820, 810, 812, 813, 814, 815, 817, 819, 810, 820, 811, 821,
822, 811, 813, 824, 816, 818, 825, 826, 820, 827, 822, 813, 823, 815, 817, 824, 825, 826, 827, 813,
822, 828, 829, 831, 832, 834, 825, 835, 837, 838, 828, 830, 832, 833, 835, 836, 825, 837, 827, 839,
839, 840, 829, 841, 832, 842, 843, 835, 844, 845, 828, 830, 841, 833, 835, 842, 843, 837, 844, 839,
846, 847, 848, 850, 852, 853, 854, 855, 856, 845, 845, 846, 848, 849, 851, 842, 852, 854, 855, 856,
857, 858, 848, 850, 860, 862, 863, 865, 866, 867, 857, 846, 858, 849, 859, 860, 852, 861, 862, 863,
857, 858, 868, 869, 860, 870, 863, 871, 866, 872, 864, 865, 866, 867, 869, 871, 872, 873, 874, 875,
873, 875, 876, 878, 879, 881, 882, 883, 885, 886, 864, 876, 877, 867, 869, 879, 881, 882, 884, 885,
873, 875, 876, 878, 879, 887, 888, 883, 889, 890, 886, 876, 877, 887, 888, 879, 889, 882, 890, 885,
891, 892, 893, 894, 895, 887, 888, 896, 889, 897, 891, 892, 894, 895, 897, 898, 900, 901, 902, 904,
891, 898, 900, 901, 902, 903, 904, 905, 906, 907, 905, 892, 894, 895, 897, 898, 906, 907, 902, 908,
909, 898, 910, 911, 913, 914, 915, 916, 906, 907, 909, 910, 911, 912, 913, 914, 906, 907, 915, 908,
909, 917, 918, 911, 919, 921, 923, 924, 925, 926, 916, 917, 911, 918, 919, 921, 922, 923, 924, 925,
927, 929, 918, 931, 919, 921, 933, 924, 934, 926, 926, 927, 928, 930, 919, 931, 932, 934, 935, 936,
927, 929, 936, 931, 937, 938, 933, 939, 934, 940, 937, 927, 928, 930, 938, 939, 932, 940, 942, 944,
941, 942, 936, 943, 944, 945, 946, 947, 948, 950, 945, 946, 947, 948, 950, 939, 952, 940, 942, 954,
941, 952, 953, 954, 955, 945, 946, 956, 948, 950, 945, 955, 947, 948, 950, 956, 952, 958, 959, 954,
957, 958, 953, 960, 961, 963, 964, 966, 968, 970, 960, 961, 962, 963, 964, 956, 965, 966, 959, 967,
971, 958, 972, 973, 961, 963, 964, 966, 968, 970, 968, 969, 970, 971, 964, 973, 975, 976, 977, 978,
974, 976, 977, 973, 978, 979, 981, 983, 984, 985, 968, 969, 979, 971, 980, 973, 981, 976, 983, 984,
974, 987, 988, 989, 990, 979, 981, 991, 984, 985, 986, 987, 989, 991, 992, 993, 981, 995, 996, 984,
992, 994, 996, 997, 998, 1000, 1001, 991, 1002, 1003, 986, 987, 989, 997, 998, 993, 999, 995, 1001, 1002,
992, 994, 996, 1004, 998, 1006, 1007, 1008, 1009, 1003, 1003, 1004, 1006, 1008, 998, 1009, 999, 1010, 1012, 1013,
1010, 1012, 1014, 1004, 1015, 1016, 1007, 1008, 1009, 1017, 1014, 1004, 1006, 1015, 1016, 1009, 1017, 1010, 1019, 1020,
1010, 1012, 1014, 1018, 1015, 1016, 1020, 1021, 1023, 1025, 1021, 1023, 1024, 1025, 1016, 1027, 1017, 1028, 1029, 1030,
1027, 1029, 1031, 1018, 1033, 1034, 1020, 1021, 1023, 1025, 1021, 1023, 1031, 1025, 1033, 1034, 1035, 1036, 1037, 1030,
1027, 1029, 1031, 1036, 1033, 1034, 1047, 627, 625, 624, 1039, 1040, 1031, 1041, 1043, 1034, 1035, 1036, 1037, 1044,
621, 620, 616, 1036, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1045, 1046, 1041, 1043, 1047, 1049, 1050, 1052, 1044,
1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041, 1041, 1054, 1045, 1056, 1058, 1059, 1047, 1049, 1050, 1052, 1061,
1041, 1041, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, 1054, 1063, 1056, 1058, 1059, 1065, 1066, 1068, 1070, 1061,
1043, 1043, 1043, 1043, 1044, 1044, 1044, 1044, 1044, 1044, 1081, 1063, 620, 619, 618, 1065, 1066, 1068, 1070, 1073,
1045, 1045, 1046, 614, 1046, 1046, 1046, 1046, 1048, 613, 1073, 1073, 1073, 1073, 1073, 1074, 1074, 1074, 1074, 1074,
611, 1048, 1048, 1048, 1049, 1049, 1049, 610, 609, 608, 1074, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076, 1076,
607, 606, 605, 604, 603, 602, 601, 600, 599, 597, 1076, 1076, 1076, 1077, 1077, 1077, 1077, 1077, 1077, 1078,
596, 595, 594, 593, 592, 591, 590, 589, 588, 587, 1078, 1078, 1078, 1078, 1078, 1079, 1079, 1080, 617, 1080,
586, 585, 584, 583, 582, 581, 580, 579, 578, 577, 1080, 1080, 1080, 1082, 616, 615, 1082, 1082, 1082, 1083,
576, 575, 574, 573, 572, 571, 570, 569, 568, 567, 1083, 1083, 614, 613, 612, 611, 610, 608, 607, 606,
566, 565, 564, 563, 562, 559, 554, 553, 552, 551, 605, 604, 603, 602, 601, 600, 599, 598, 597, 596,
550, 549, 548, 545, 543, 542, 541, 540, 539, 538, 595, 594, 593, 592, 591, 590, 589, 588, 587, 586,
537, 536, 535, 534, 533, 532, 531, 530, 529, 528, 585, 584, 583, 582, 581, 580, 579, 578, 577, 576,
527, 525, 524, 523, 522, 521, 520, 519, 516, 514, 575, 574, 573, 570, 565, 564, 563, 562, 561, 560,
513, 512, 511, 510, 509, 508, 507, 506, 505, 504, 559, 558, 557, 554, 552, 551, 550, 549, 548, 547,
503, 502, 501, 500, 499, 498, 495, 494, 493, 492, 546, 545, 544, 543, 542, 541, 540, 539, 538, 537,
491, 490, 488, 485, 484, 483, 482, 481, 480, 479, 536, 534, 533, 532, 531, 530, 529, 528, 525, 523,
478, 477, 476, 475, 474, 473, 472, 471, 470, 469, 522, 521, 520, 519, 518, 517, 516, 515, 514, 513,
468, 467, 466, 465, 464, 463, 462, 461, 460, 458, 512, 511, 510, 509, 508, 507, 504, 503, 502, 501,
457, 456, 455, 454, 453, 452, 451, 449, 448, 447, 500, 499, 497, 494, 493, 492, 491, 490, 489, 488,
446, 445, 444, 442, 441, 438, 437, 434, 433, 431, 487, 486, 485, 484, 483, 482, 481, 480, 479, 478,
430, 429, 425, 424, 423, 422, 421, 420, 419, 418, 477, 476, 475, 474, 473, 472, 471, 470, 469, 468,
417, 416, 415, 414, 413, 412, 411, 410, 409, 408, 467, 465, 464, 463, 462, 461, 460, 459, 458, 456,
407, 406, 405, 404, 403, 401, 400, 399, 398, 397, 455, 454, 453, 452, 451, 449, 448, 445, 444, 441,
396, 395, 394, 392, 391, 390, 389, 388, 387, 386, 440, 438, 437, 436, 432, 431, 430, 429, 428, 427,
385, 384, 383, 382, 381, 380, 379, 378, 377, 376, 426, 425, 424, 423, 422, 421, 420, 419, 418, 417,
375, 374, 372, 371, 369, 368, 367, 366, 365, 364, 416, 415, 414, 413, 412, 411, 410, 409, 408, 406,
362, 361, 360, 359, 358, 357, 356, 355, 354, 353, 405, 404, 403, 402, 401, 400, 399, 397, 396, 395,
352, 351, 350, 348, 347, 346, 345, 342, 341, 340, 394, 393, 392, 391, 390, 389, 388, 387, 386, 385,
339, 338, 337, 336, 335, 334, 332, 331, 330, 327, 384, 383, 382, 381, 380, 379, 377, 376, 374, 373,
326, 325, 324, 323, 322, 321, 320, 319, 318, 317, 372, 371, 370, 369, 367, 366, 365, 364, 363, 362,
316, 315, 314, 313, 312, 311, 310, 309, 308, 307, 361, 360, 359, 358, 357, 355, 354, 352, 351, 350,
306, 305, 304, 303, 302, 301, 300, 299, 298, 297, 349, 346, 345, 344, 343, 342, 341, 340, 339, 338,
296, 295, 294, 293, 292, 291, 290, 289, 288, 287, 336, 335, 334, 331, 330, 329, 328, 327, 326, 325,
286, 285, 284, 283, 282, 281, 280, 279, 277, 276, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315,
275, 274, 273, 272, 271, 270, 269, 268, 267, 266, 314, 313, 312, 311, 310, 309, 308, 307, 306, 305,
264, 263, 262, 261, 260, 258, 257, 256, 255, 254, 304, 303, 302, 301, 300, 299, 298, 297, 296, 295,
253, 252, 250, 249, 248, 247, 246, 245, 244, 243, 294, 293, 292, 291, 290, 289, 288, 287, 286, 285,
242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 284, 283, 282, 280, 279, 278, 277, 276, 275, 274,
232, 229, 228, 227, 226, 225, 224, 223, 221, 220, 273, 272, 271, 270, 269, 267, 266, 265, 264, 263,
219, 218, 217, 216, 215, 214, 213, 211, 210, 209, 261, 260, 259, 258, 257, 256, 255, 253, 252, 251,
208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241,
198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 240, 239, 238, 237, 236, 235, 232, 231, 230, 229,
187, 186, 185, 184, 183, 181, 180, 179, 178, 177, 228, 227, 226, 225, 223, 222, 221, 220, 219, 218,
176, 174, 173, 172, 171, 170, 169, 168, 167, 166, 217, 216, 215, 213, 212, 211, 210, 209, 208, 207,
165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197,
155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 196, 195, 194, 193, 192, 191, 189, 188, 187, 186,
145, 144, 143, 142, 141, 140, 139, 138, 136, 135, 185, 183, 182, 181, 180, 179, 178, 176, 175, 174,
134, 133, 132, 131, 130, 128, 127, 126, 125, 124, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164,
123, 122, 121, 120, 119, 116, 115, 112, 107, 106, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154,
104, 103, 102, 101, 99, 97, 96, 95, 94, 92, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144,
91, 89, 88, 87, 86, 85, 84, 83, 82, 81, 143, 142, 141, 140, 139, 137, 136, 135, 134, 133,
79, 78, 77, 75, 74, 73, 72, 71, 68, 65, 132, 131, 129, 128, 127, 126, 125, 124, 123, 122,
64, 62, 58, 55, 52, 50, 43, 42, 41, 38, 121, 120, 117, 116, 113, 108, 107, 105, 104, 103,
36, 35, 34, 33, 24, 21, 17, 1038, 1038, 1038, 102, 101, 99, 97, 96, 95, 94, 92, 91, 89,
1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 88, 87, 86, 85, 84, 83, 82, 81, 79, 78,
1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 77, 75, 74, 73, 72, 71, 68, 65, 64, 62,
1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 58, 55, 52, 50, 43, 42, 41, 38, 36, 35,
1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 34, 33, 24, 21, 17, 1072, 1072, 1072, 1072, 1072,
1038, 1038 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072
} ; } ;
static yy_state_type yy_last_accepting_state; static yy_state_type yy_last_accepting_state;
...@@ -1053,6 +1071,7 @@ char *yytext; ...@@ -1053,6 +1071,7 @@ char *yytext;
* includes * includes
*/ */
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <iostream.h> #include <iostream.h>
#include <assert.h> #include <assert.h>
#include <ctype.h> #include <ctype.h>
...@@ -1117,7 +1136,7 @@ QCString Config::inputFilter; ...@@ -1117,7 +1136,7 @@ QCString Config::inputFilter;
QCString Config::paperType; QCString Config::paperType;
QCString Config::manExtension; QCString Config::manExtension;
QCString Config::htmlStyleSheet; QCString Config::htmlStyleSheet;
QCString Config::ignorePrefix; QStrList Config::ignorePrefixList;
QStrList Config::includePath; QStrList Config::includePath;
QStrList Config::examplePath; QStrList Config::examplePath;
QStrList Config::imagePath; QStrList Config::imagePath;
...@@ -1174,6 +1193,8 @@ bool Config::inlineInfoFlag = TRUE; ...@@ -1174,6 +1193,8 @@ bool Config::inlineInfoFlag = TRUE;
bool Config::collGraphFlag = TRUE; bool Config::collGraphFlag = TRUE;
bool Config::includeGraphFlag = TRUE; bool Config::includeGraphFlag = TRUE;
bool Config::gfxHierarchyFlag = TRUE; bool Config::gfxHierarchyFlag = TRUE;
bool Config::showIncFileFlag = TRUE;
bool Config::stripCommentsFlag = TRUE;
int Config::tabSize = 8; int Config::tabSize = 8;
int Config::colsInAlphaIndex = 5; int Config::colsInAlphaIndex = 5;
...@@ -1376,7 +1397,7 @@ YY_DECL ...@@ -1376,7 +1397,7 @@ YY_DECL
register char *yy_cp, *yy_bp; register char *yy_cp, *yy_bp;
register int yy_act; register int yy_act;
#line 194 "config.l" #line 197 "config.l"
...@@ -1429,13 +1450,13 @@ yy_match: ...@@ -1429,13 +1450,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1039 ) if ( yy_current_state >= 1073 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp; ++yy_cp;
} }
while ( yy_base[yy_current_state] != 1358 ); while ( yy_base[yy_current_state] != 1396 );
yy_find_action: yy_find_action:
yy_act = yy_accept[yy_current_state]; yy_act = yy_accept[yy_current_state];
...@@ -1463,432 +1484,442 @@ do_action: /* This label is used only to access EOF actions. */ ...@@ -1463,432 +1484,442 @@ do_action: /* This label is used only to access EOF actions. */
case 1: case 1:
YY_RULE_SETUP YY_RULE_SETUP
#line 196 "config.l" #line 199 "config.l"
YY_BREAK YY_BREAK
case 2: case 2:
YY_RULE_SETUP YY_RULE_SETUP
#line 197 "config.l" #line 200 "config.l"
{ BEGIN(SkipComment); } { BEGIN(SkipComment); }
YY_BREAK YY_BREAK
case 3: case 3:
YY_RULE_SETUP YY_RULE_SETUP
#line 198 "config.l" #line 201 "config.l"
{ BEGIN(GetString); s=&Config::projectName; s->resize(0); } { BEGIN(GetString); s=&Config::projectName; s->resize(0); }
YY_BREAK YY_BREAK
case 4: case 4:
YY_RULE_SETUP YY_RULE_SETUP
#line 199 "config.l" #line 202 "config.l"
{ BEGIN(GetString); s=&Config::projectNumber; s->resize(0); } { BEGIN(GetString); s=&Config::projectNumber; s->resize(0); }
YY_BREAK YY_BREAK
case 5: case 5:
YY_RULE_SETUP YY_RULE_SETUP
#line 200 "config.l" #line 203 "config.l"
{ BEGIN(GetString); s=&Config::outputDir; s->resize(0); } { BEGIN(GetString); s=&Config::outputDir; s->resize(0); }
YY_BREAK YY_BREAK
case 6: case 6:
YY_RULE_SETUP YY_RULE_SETUP
#line 201 "config.l" #line 204 "config.l"
{ BEGIN(GetString); s=&Config::htmlOutputDir; s->resize(0); } { BEGIN(GetString); s=&Config::htmlOutputDir; s->resize(0); }
YY_BREAK YY_BREAK
case 7: case 7:
YY_RULE_SETUP YY_RULE_SETUP
#line 202 "config.l" #line 205 "config.l"
{ BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); } { BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); }
YY_BREAK YY_BREAK
case 8: case 8:
YY_RULE_SETUP YY_RULE_SETUP
#line 203 "config.l" #line 206 "config.l"
{ BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); } { BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); }
YY_BREAK YY_BREAK
case 9: case 9:
YY_RULE_SETUP YY_RULE_SETUP
#line 204 "config.l" #line 207 "config.l"
{ BEGIN(GetString); s=&Config::rtfOutputDir; s->resize(0); } { BEGIN(GetString); s=&Config::rtfOutputDir; s->resize(0); }
YY_BREAK YY_BREAK
case 10: case 10:
YY_RULE_SETUP YY_RULE_SETUP
#line 205 "config.l" #line 208 "config.l"
{ BEGIN(GetString); s=&Config::headerFile; s->resize(0); } { BEGIN(GetString); s=&Config::headerFile; s->resize(0); }
YY_BREAK YY_BREAK
case 11: case 11:
YY_RULE_SETUP YY_RULE_SETUP
#line 206 "config.l" #line 209 "config.l"
{ BEGIN(GetString); s=&Config::footerFile; s->resize(0); } { BEGIN(GetString); s=&Config::footerFile; s->resize(0); }
YY_BREAK YY_BREAK
case 12: case 12:
YY_RULE_SETUP YY_RULE_SETUP
#line 207 "config.l" #line 210 "config.l"
{ BEGIN(GetString); s=&Config::latexHeaderFile; s->resize(0); } { BEGIN(GetString); s=&Config::latexHeaderFile; s->resize(0); }
YY_BREAK YY_BREAK
case 13: case 13:
YY_RULE_SETUP YY_RULE_SETUP
#line 208 "config.l" #line 211 "config.l"
{ BEGIN(GetString); s=&Config::cgiName; s->resize(0); } { BEGIN(GetString); s=&Config::cgiName; s->resize(0); }
YY_BREAK YY_BREAK
case 14: case 14:
YY_RULE_SETUP YY_RULE_SETUP
#line 209 "config.l" #line 212 "config.l"
{ BEGIN(GetString); s=&Config::cgiURL; s->resize(0); } { BEGIN(GetString); s=&Config::cgiURL; s->resize(0); }
YY_BREAK YY_BREAK
case 15: case 15:
YY_RULE_SETUP YY_RULE_SETUP
#line 210 "config.l" #line 213 "config.l"
{ BEGIN(GetString); s=&Config::docURL; s->resize(0); } { BEGIN(GetString); s=&Config::docURL; s->resize(0); }
YY_BREAK YY_BREAK
case 16: case 16:
YY_RULE_SETUP YY_RULE_SETUP
#line 211 "config.l" #line 214 "config.l"
{ BEGIN(GetString); s=&Config::binAbsPath; s->resize(0); } { BEGIN(GetString); s=&Config::binAbsPath; s->resize(0); }
YY_BREAK YY_BREAK
case 17: case 17:
YY_RULE_SETUP YY_RULE_SETUP
#line 212 "config.l" #line 215 "config.l"
{ BEGIN(GetString); s=&Config::docAbsPath; s->resize(0); } { BEGIN(GetString); s=&Config::docAbsPath; s->resize(0); }
YY_BREAK YY_BREAK
case 18: case 18:
YY_RULE_SETUP YY_RULE_SETUP
#line 213 "config.l" #line 216 "config.l"
{ BEGIN(GetString); s=&Config::perlPath; s->resize(0); } { BEGIN(GetString); s=&Config::perlPath; s->resize(0); }
YY_BREAK YY_BREAK
case 19: case 19:
YY_RULE_SETUP YY_RULE_SETUP
#line 214 "config.l" #line 217 "config.l"
{ BEGIN(GetString); s=&Config::genTagFile; s->resize(0); } { BEGIN(GetString); s=&Config::genTagFile; s->resize(0); }
YY_BREAK YY_BREAK
case 20: case 20:
YY_RULE_SETUP YY_RULE_SETUP
#line 215 "config.l" #line 218 "config.l"
{ BEGIN(GetString); s=&Config::inputFilter; s->resize(0); } { BEGIN(GetString); s=&Config::inputFilter; s->resize(0); }
YY_BREAK YY_BREAK
case 21: case 21:
YY_RULE_SETUP YY_RULE_SETUP
#line 216 "config.l" #line 219 "config.l"
{ BEGIN(GetString); s=&Config::paperType; s->resize(0); } { BEGIN(GetString); s=&Config::paperType; s->resize(0); }
YY_BREAK YY_BREAK
case 22: case 22:
YY_RULE_SETUP YY_RULE_SETUP
#line 217 "config.l" #line 220 "config.l"
{ BEGIN(GetString); s=&Config::outputLanguage; s->resize(0); } { BEGIN(GetString); s=&Config::outputLanguage; s->resize(0); }
YY_BREAK YY_BREAK
case 23: case 23:
YY_RULE_SETUP YY_RULE_SETUP
#line 218 "config.l" #line 221 "config.l"
{ BEGIN(GetString); s=&Config::manExtension; s->resize(0); } { BEGIN(GetString); s=&Config::manExtension; s->resize(0); }
YY_BREAK YY_BREAK
case 24: case 24:
YY_RULE_SETUP YY_RULE_SETUP
#line 219 "config.l" #line 222 "config.l"
{ BEGIN(GetString); s=&tabSizeString; s->resize(0); } { BEGIN(GetString); s=&tabSizeString; s->resize(0); }
YY_BREAK YY_BREAK
case 25: case 25:
YY_RULE_SETUP YY_RULE_SETUP
#line 220 "config.l" #line 223 "config.l"
{ BEGIN(GetString); s=&Config::htmlStyleSheet; s->resize(0); } { BEGIN(GetString); s=&Config::htmlStyleSheet; s->resize(0); }
YY_BREAK YY_BREAK
case 26: case 26:
YY_RULE_SETUP YY_RULE_SETUP
#line 221 "config.l" #line 224 "config.l"
{ BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); } { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); }
YY_BREAK YY_BREAK
case 27: case 27:
YY_RULE_SETUP YY_RULE_SETUP
#line 222 "config.l" #line 225 "config.l"
{ BEGIN(GetString); s=&Config::ignorePrefix; s->resize(0); } { BEGIN(GetStrList); l=&Config::ignorePrefixList; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 28: case 28:
YY_RULE_SETUP YY_RULE_SETUP
#line 223 "config.l" #line 226 "config.l"
{ BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 29: case 29:
YY_RULE_SETUP YY_RULE_SETUP
#line 224 "config.l" #line 227 "config.l"
{ BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 30: case 30:
YY_RULE_SETUP YY_RULE_SETUP
#line 225 "config.l" #line 228 "config.l"
{ BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 31: case 31:
YY_RULE_SETUP YY_RULE_SETUP
#line 226 "config.l" #line 229 "config.l"
{ BEGIN(GetStrList); l=&Config::inputSources; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::inputSources; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 32: case 32:
YY_RULE_SETUP YY_RULE_SETUP
#line 227 "config.l" #line 230 "config.l"
{ BEGIN(GetStrList); l=&Config::excludeSources; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::excludeSources; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 33: case 33:
YY_RULE_SETUP YY_RULE_SETUP
#line 228 "config.l" #line 231 "config.l"
{ BEGIN(GetStrList); l=&Config::filePatternList; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::filePatternList; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 34: case 34:
YY_RULE_SETUP YY_RULE_SETUP
#line 229 "config.l" #line 232 "config.l"
{ BEGIN(GetStrList); l=&Config::excludePatternList; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::excludePatternList; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 35: case 35:
YY_RULE_SETUP YY_RULE_SETUP
#line 230 "config.l" #line 233 "config.l"
{ BEGIN(GetStrList); l=&Config::examplePatternList; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::examplePatternList; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 36: case 36:
YY_RULE_SETUP YY_RULE_SETUP
#line 231 "config.l" #line 234 "config.l"
{ BEGIN(GetStrList); l=&Config::imagePatternList; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::imagePatternList; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 37: case 37:
YY_RULE_SETUP YY_RULE_SETUP
#line 232 "config.l" #line 235 "config.l"
{ BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 38: case 38:
YY_RULE_SETUP YY_RULE_SETUP
#line 233 "config.l" #line 236 "config.l"
{ BEGIN(GetStrList); l=&Config::extDocPathList; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::extDocPathList; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 39: case 39:
YY_RULE_SETUP YY_RULE_SETUP
#line 234 "config.l" #line 237 "config.l"
{ BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 40: case 40:
YY_RULE_SETUP YY_RULE_SETUP
#line 235 "config.l" #line 238 "config.l"
{ BEGIN(GetStrList); l=&Config::extraPackageList; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::extraPackageList; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 41: case 41:
YY_RULE_SETUP YY_RULE_SETUP
#line 236 "config.l" #line 239 "config.l"
{ BEGIN(GetStrList); l=&Config::stripFromPath; l->clear(); elemStr=""; } { BEGIN(GetStrList); l=&Config::stripFromPath; l->clear(); elemStr=""; }
YY_BREAK YY_BREAK
case 42: case 42:
YY_RULE_SETUP YY_RULE_SETUP
#line 237 "config.l" #line 240 "config.l"
{ BEGIN(GetBool); b=&Config::quietFlag; } { BEGIN(GetBool); b=&Config::quietFlag; }
YY_BREAK YY_BREAK
case 43: case 43:
YY_RULE_SETUP YY_RULE_SETUP
#line 238 "config.l" #line 241 "config.l"
{ BEGIN(GetBool); b=&Config::warningFlag; } { BEGIN(GetBool); b=&Config::warningFlag; }
YY_BREAK YY_BREAK
case 44: case 44:
YY_RULE_SETUP YY_RULE_SETUP
#line 239 "config.l" #line 242 "config.l"
{ BEGIN(GetBool); b=&Config::recursiveFlag; } { BEGIN(GetBool); b=&Config::recursiveFlag; }
YY_BREAK YY_BREAK
case 45: case 45:
YY_RULE_SETUP YY_RULE_SETUP
#line 240 "config.l" #line 243 "config.l"
{ BEGIN(GetBool); b=&Config::allExtFlag; } { BEGIN(GetBool); b=&Config::allExtFlag; }
YY_BREAK YY_BREAK
case 46: case 46:
YY_RULE_SETUP YY_RULE_SETUP
#line 241 "config.l" #line 244 "config.l"
{ BEGIN(GetBool); b=&Config::searchEngineFlag; } { BEGIN(GetBool); b=&Config::searchEngineFlag; }
YY_BREAK YY_BREAK
case 47: case 47:
YY_RULE_SETUP YY_RULE_SETUP
#line 242 "config.l" #line 245 "config.l"
{ BEGIN(GetBool); b=&Config::extractAllFlag; } { BEGIN(GetBool); b=&Config::extractAllFlag; }
YY_BREAK YY_BREAK
case 48: case 48:
YY_RULE_SETUP YY_RULE_SETUP
#line 243 "config.l" #line 246 "config.l"
{ BEGIN(GetBool); b=&Config::extractPrivateFlag; } { BEGIN(GetBool); b=&Config::extractPrivateFlag; }
YY_BREAK YY_BREAK
case 49: case 49:
YY_RULE_SETUP YY_RULE_SETUP
#line 244 "config.l" #line 247 "config.l"
{ BEGIN(GetBool); b=&Config::noIndexFlag; } { BEGIN(GetBool); b=&Config::noIndexFlag; }
YY_BREAK YY_BREAK
case 50: case 50:
YY_RULE_SETUP YY_RULE_SETUP
#line 245 "config.l" #line 248 "config.l"
{ BEGIN(GetBool); b=&Config::generateLatex; } { BEGIN(GetBool); b=&Config::generateLatex; }
YY_BREAK YY_BREAK
case 51: case 51:
YY_RULE_SETUP YY_RULE_SETUP
#line 246 "config.l" #line 249 "config.l"
{ BEGIN(GetBool); b=&Config::generateHtml; } { BEGIN(GetBool); b=&Config::generateHtml; }
YY_BREAK YY_BREAK
case 52: case 52:
YY_RULE_SETUP YY_RULE_SETUP
#line 247 "config.l" #line 250 "config.l"
{ BEGIN(GetBool); b=&Config::generateMan; } { BEGIN(GetBool); b=&Config::generateMan; }
YY_BREAK YY_BREAK
case 53: case 53:
YY_RULE_SETUP YY_RULE_SETUP
#line 248 "config.l" #line 251 "config.l"
{ BEGIN(GetBool); b=&Config::preprocessingFlag; } { BEGIN(GetBool); b=&Config::preprocessingFlag; }
YY_BREAK YY_BREAK
case 54: case 54:
YY_RULE_SETUP YY_RULE_SETUP
#line 249 "config.l" #line 252 "config.l"
{ BEGIN(GetBool); b=&Config::macroExpansionFlag; } { BEGIN(GetBool); b=&Config::macroExpansionFlag; }
YY_BREAK YY_BREAK
case 55: case 55:
YY_RULE_SETUP YY_RULE_SETUP
#line 250 "config.l" #line 253 "config.l"
{ BEGIN(GetBool); b=&Config::searchIncludeFlag; } { BEGIN(GetBool); b=&Config::searchIncludeFlag; }
YY_BREAK YY_BREAK
case 56: case 56:
YY_RULE_SETUP YY_RULE_SETUP
#line 251 "config.l" #line 254 "config.l"
{ BEGIN(GetBool); b=&Config::briefMemDescFlag; } { BEGIN(GetBool); b=&Config::briefMemDescFlag; }
YY_BREAK YY_BREAK
case 57: case 57:
YY_RULE_SETUP YY_RULE_SETUP
#line 252 "config.l" #line 255 "config.l"
{ BEGIN(GetBool); b=&Config::alwaysDetailsFlag; } { BEGIN(GetBool); b=&Config::alwaysDetailsFlag; }
YY_BREAK YY_BREAK
case 58: case 58:
YY_RULE_SETUP YY_RULE_SETUP
#line 253 "config.l" #line 256 "config.l"
{ BEGIN(GetBool); b=&Config::hideMemberFlag; } { BEGIN(GetBool); b=&Config::hideMemberFlag; }
YY_BREAK YY_BREAK
case 59: case 59:
YY_RULE_SETUP YY_RULE_SETUP
#line 254 "config.l" #line 257 "config.l"
{ BEGIN(GetBool); b=&Config::hideClassFlag; } { BEGIN(GetBool); b=&Config::hideClassFlag; }
YY_BREAK YY_BREAK
case 60: case 60:
YY_RULE_SETUP YY_RULE_SETUP
#line 255 "config.l" #line 258 "config.l"
{ BEGIN(GetBool); b=&Config::onlyPredefinedFlag; } { BEGIN(GetBool); b=&Config::onlyPredefinedFlag; }
YY_BREAK YY_BREAK
case 61: case 61:
YY_RULE_SETUP YY_RULE_SETUP
#line 256 "config.l" #line 259 "config.l"
{ BEGIN(GetBool); b=&Config::fullPathNameFlag; } { BEGIN(GetBool); b=&Config::fullPathNameFlag; }
YY_BREAK YY_BREAK
case 62: case 62:
YY_RULE_SETUP YY_RULE_SETUP
#line 257 "config.l" #line 260 "config.l"
{ BEGIN(GetBool); b=&Config::classDiagramFlag; } { BEGIN(GetBool); b=&Config::classDiagramFlag; }
YY_BREAK YY_BREAK
case 63: case 63:
YY_RULE_SETUP YY_RULE_SETUP
#line 258 "config.l" #line 261 "config.l"
{ BEGIN(GetBool); b=&Config::compactLatexFlag; } { BEGIN(GetBool); b=&Config::compactLatexFlag; }
YY_BREAK YY_BREAK
case 64: case 64:
YY_RULE_SETUP YY_RULE_SETUP
#line 259 "config.l" #line 262 "config.l"
{ BEGIN(GetBool); b=&Config::repeatBriefFlag; } { BEGIN(GetBool); b=&Config::repeatBriefFlag; }
YY_BREAK YY_BREAK
case 65: case 65:
YY_RULE_SETUP YY_RULE_SETUP
#line 260 "config.l" #line 263 "config.l"
{ BEGIN(GetBool); b=&Config::internalDocsFlag; } { BEGIN(GetBool); b=&Config::internalDocsFlag; }
YY_BREAK YY_BREAK
case 66: case 66:
YY_RULE_SETUP YY_RULE_SETUP
#line 261 "config.l" #line 264 "config.l"
{ BEGIN(GetBool); b=&Config::caseSensitiveNames; } { BEGIN(GetBool); b=&Config::caseSensitiveNames; }
YY_BREAK YY_BREAK
case 67: case 67:
YY_RULE_SETUP YY_RULE_SETUP
#line 262 "config.l" #line 265 "config.l"
{ BEGIN(GetBool); b=&Config::verbatimHeaderFlag; } { BEGIN(GetBool); b=&Config::verbatimHeaderFlag; }
YY_BREAK YY_BREAK
case 68: case 68:
YY_RULE_SETUP YY_RULE_SETUP
#line 263 "config.l" #line 266 "config.l"
{ BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; }
YY_BREAK YY_BREAK
case 69: case 69:
YY_RULE_SETUP YY_RULE_SETUP
#line 264 "config.l" #line 267 "config.l"
{ BEGIN(GetBool); b=&Config::sourceBrowseFlag; } { BEGIN(GetBool); b=&Config::sourceBrowseFlag; }
YY_BREAK YY_BREAK
case 70: case 70:
YY_RULE_SETUP YY_RULE_SETUP
#line 265 "config.l" #line 268 "config.l"
{ BEGIN(GetBool); b=&Config::autoBriefFlag; } { BEGIN(GetBool); b=&Config::autoBriefFlag; }
YY_BREAK YY_BREAK
case 71: case 71:
YY_RULE_SETUP YY_RULE_SETUP
#line 266 "config.l" #line 269 "config.l"
{ BEGIN(GetBool); b=&Config::htmlHelpFlag; } { BEGIN(GetBool); b=&Config::htmlHelpFlag; }
YY_BREAK YY_BREAK
case 72: case 72:
YY_RULE_SETUP YY_RULE_SETUP
#line 267 "config.l" #line 270 "config.l"
{ BEGIN(GetBool); b=&Config::alphaIndexFlag; } { BEGIN(GetBool); b=&Config::alphaIndexFlag; }
YY_BREAK YY_BREAK
case 73: case 73:
YY_RULE_SETUP YY_RULE_SETUP
#line 268 "config.l" #line 271 "config.l"
{ BEGIN(GetBool); b=&Config::pdfHyperFlag; } { BEGIN(GetBool); b=&Config::pdfHyperFlag; }
YY_BREAK YY_BREAK
case 74: case 74:
YY_RULE_SETUP YY_RULE_SETUP
#line 269 "config.l" #line 272 "config.l"
{ BEGIN(GetBool); b=&Config::inheritDocsFlag; } { BEGIN(GetBool); b=&Config::inheritDocsFlag; }
YY_BREAK YY_BREAK
case 75: case 75:
YY_RULE_SETUP YY_RULE_SETUP
#line 270 "config.l" #line 273 "config.l"
{ BEGIN(GetBool); b=&Config::inlineInfoFlag; } { BEGIN(GetBool); b=&Config::inlineInfoFlag; }
YY_BREAK YY_BREAK
case 76: case 76:
YY_RULE_SETUP YY_RULE_SETUP
#line 271 "config.l" #line 274 "config.l"
{ BEGIN(GetBool); b=&Config::inlineSourceFlag; } { BEGIN(GetBool); b=&Config::inlineSourceFlag; }
YY_BREAK YY_BREAK
case 77: case 77:
YY_RULE_SETUP YY_RULE_SETUP
#line 272 "config.l" #line 275 "config.l"
{ BEGIN(GetBool); b=&Config::haveDotFlag; } { BEGIN(GetBool); b=&Config::haveDotFlag; }
YY_BREAK YY_BREAK
case 78: case 78:
YY_RULE_SETUP YY_RULE_SETUP
#line 273 "config.l" #line 276 "config.l"
{ BEGIN(GetBool); b=&Config::collGraphFlag; } { BEGIN(GetBool); b=&Config::collGraphFlag; }
YY_BREAK YY_BREAK
case 79: case 79:
YY_RULE_SETUP YY_RULE_SETUP
#line 274 "config.l" #line 277 "config.l"
{ BEGIN(GetBool); b=&Config::includeGraphFlag; } { BEGIN(GetBool); b=&Config::includeGraphFlag; }
YY_BREAK YY_BREAK
case 80: case 80:
YY_RULE_SETUP YY_RULE_SETUP
#line 275 "config.l" #line 278 "config.l"
{ BEGIN(GetBool); b=&Config::gfxHierarchyFlag; } { BEGIN(GetBool); b=&Config::gfxHierarchyFlag; }
YY_BREAK YY_BREAK
case 81: case 81:
YY_RULE_SETUP YY_RULE_SETUP
#line 276 "config.l" #line 279 "config.l"
{ BEGIN(GetBool); b=&Config::generateRTF; } { BEGIN(GetBool); b=&Config::generateRTF; }
YY_BREAK YY_BREAK
case 82: case 82:
YY_RULE_SETUP YY_RULE_SETUP
#line 277 "config.l" #line 280 "config.l"
{ BEGIN(GetBool); b=&Config::compactRTFFlag; } { BEGIN(GetBool); b=&Config::compactRTFFlag; }
YY_BREAK YY_BREAK
case 83: case 83:
YY_RULE_SETUP YY_RULE_SETUP
#line 278 "config.l" #line 281 "config.l"
{ BEGIN(GetBool); b=&Config::rtfHyperFlag; } { BEGIN(GetBool); b=&Config::rtfHyperFlag; }
YY_BREAK YY_BREAK
case 84: case 84:
YY_RULE_SETUP YY_RULE_SETUP
#line 279 "config.l" #line 282 "config.l"
{ err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); } { BEGIN(GetBool); b=&Config::showIncFileFlag; }
YY_BREAK YY_BREAK
case 85: case 85:
YY_RULE_SETUP YY_RULE_SETUP
#line 280 "config.l" #line 283 "config.l"
{ yyLineNr++; BEGIN(Start); } { BEGIN(GetBool); b=&Config::stripCommentsFlag; }
YY_BREAK YY_BREAK
case 86: case 86:
YY_RULE_SETUP YY_RULE_SETUP
#line 281 "config.l" #line 284 "config.l"
{ err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); }
YY_BREAK
case 87:
YY_RULE_SETUP
#line 285 "config.l"
{ yyLineNr++; BEGIN(Start); }
YY_BREAK
case 88:
YY_RULE_SETUP
#line 286 "config.l"
{ {
yyLineNr++; yyLineNr++;
if (!elemStr.isEmpty()) if (!elemStr.isEmpty())
...@@ -1899,9 +1930,9 @@ YY_RULE_SETUP ...@@ -1899,9 +1930,9 @@ YY_RULE_SETUP
BEGIN(Start); BEGIN(Start);
} }
YY_BREAK YY_BREAK
case 87: case 89:
YY_RULE_SETUP YY_RULE_SETUP
#line 290 "config.l" #line 295 "config.l"
{ {
if (!elemStr.isEmpty()) if (!elemStr.isEmpty())
{ {
...@@ -1911,31 +1942,31 @@ YY_RULE_SETUP ...@@ -1911,31 +1942,31 @@ YY_RULE_SETUP
elemStr.resize(0); elemStr.resize(0);
} }
YY_BREAK YY_BREAK
case 88: case 90:
YY_RULE_SETUP YY_RULE_SETUP
#line 298 "config.l" #line 303 "config.l"
{ (*s)+=yytext; } { (*s)+=yytext; }
YY_BREAK YY_BREAK
case 89: case 91:
YY_RULE_SETUP YY_RULE_SETUP
#line 299 "config.l" #line 304 "config.l"
{ lastState=YY_START; { lastState=YY_START;
BEGIN(GetQuotedString); BEGIN(GetQuotedString);
tmpString.resize(0); tmpString.resize(0);
} }
YY_BREAK YY_BREAK
case 90: case 92:
YY_RULE_SETUP YY_RULE_SETUP
#line 303 "config.l" #line 308 "config.l"
{ {
//printf(">> Enter env\n"); //printf(">> Enter env\n");
lastEnvState=YY_START; lastEnvState=YY_START;
BEGIN(GetEnvVar); BEGIN(GetEnvVar);
} }
YY_BREAK YY_BREAK
case 91: case 93:
YY_RULE_SETUP YY_RULE_SETUP
#line 308 "config.l" #line 313 "config.l"
{ {
yytext[yyleng-1]='\0'; yytext[yyleng-1]='\0';
const char *env=getenv(yytext); const char *env=getenv(yytext);
...@@ -1946,9 +1977,9 @@ YY_RULE_SETUP ...@@ -1946,9 +1977,9 @@ YY_RULE_SETUP
BEGIN(lastEnvState); BEGIN(lastEnvState);
} }
YY_BREAK YY_BREAK
case 92: case 94:
YY_RULE_SETUP YY_RULE_SETUP
#line 317 "config.l" #line 322 "config.l"
{ {
//printf("Quoted String = `%s'\n",tmpString.data()); //printf("Quoted String = `%s'\n",tmpString.data());
if (lastState==GetString) if (lastState==GetString)
...@@ -1963,21 +1994,21 @@ YY_RULE_SETUP ...@@ -1963,21 +1994,21 @@ YY_RULE_SETUP
BEGIN(lastState); BEGIN(lastState);
} }
YY_BREAK YY_BREAK
case 93: case 95:
YY_RULE_SETUP YY_RULE_SETUP
#line 330 "config.l" #line 335 "config.l"
{ {
tmpString+='"'; tmpString+='"';
} }
YY_BREAK YY_BREAK
case 94: case 96:
YY_RULE_SETUP YY_RULE_SETUP
#line 333 "config.l" #line 338 "config.l"
{ tmpString+=*yytext; } { tmpString+=*yytext; }
YY_BREAK YY_BREAK
case 95: case 97:
YY_RULE_SETUP YY_RULE_SETUP
#line 334 "config.l" #line 339 "config.l"
{ {
QCString bs=yytext; QCString bs=yytext;
bs=bs.upper(); bs=bs.upper();
...@@ -1994,41 +2025,41 @@ YY_RULE_SETUP ...@@ -1994,41 +2025,41 @@ YY_RULE_SETUP
} }
} }
YY_BREAK YY_BREAK
case 96: case 98:
YY_RULE_SETUP YY_RULE_SETUP
#line 349 "config.l" #line 354 "config.l"
{ {
elemStr+=yytext; elemStr+=yytext;
} }
YY_BREAK YY_BREAK
case 97: case 99:
YY_RULE_SETUP YY_RULE_SETUP
#line 352 "config.l" #line 357 "config.l"
{ yyLineNr++; BEGIN(Start); } { yyLineNr++; BEGIN(Start); }
YY_BREAK YY_BREAK
case 98: case 100:
YY_RULE_SETUP YY_RULE_SETUP
#line 353 "config.l" #line 358 "config.l"
{ yyLineNr++; BEGIN(Start); } { yyLineNr++; BEGIN(Start); }
YY_BREAK YY_BREAK
case 99: case 101:
YY_RULE_SETUP YY_RULE_SETUP
#line 354 "config.l" #line 359 "config.l"
{ yyLineNr++; } { yyLineNr++; }
YY_BREAK YY_BREAK
case 100: case 102:
YY_RULE_SETUP YY_RULE_SETUP
#line 355 "config.l" #line 360 "config.l"
YY_BREAK YY_BREAK
case 101: case 103:
YY_RULE_SETUP YY_RULE_SETUP
#line 356 "config.l" #line 361 "config.l"
{ yyLineNr++ ; } { yyLineNr++ ; }
YY_BREAK YY_BREAK
case 102: case 104:
YY_RULE_SETUP YY_RULE_SETUP
#line 358 "config.l" #line 363 "config.l"
ECHO; ECHO;
YY_BREAK YY_BREAK
case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INITIAL):
...@@ -2329,7 +2360,7 @@ static yy_state_type yy_get_previous_state() ...@@ -2329,7 +2360,7 @@ static yy_state_type yy_get_previous_state()
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1039 ) if ( yy_current_state >= 1073 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
...@@ -2364,11 +2395,11 @@ yy_state_type yy_current_state; ...@@ -2364,11 +2395,11 @@ yy_state_type yy_current_state;
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1039 ) if ( yy_current_state >= 1073 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 1038); yy_is_jam = (yy_current_state == 1072);
return yy_is_jam ? 0 : yy_current_state; return yy_is_jam ? 0 : yy_current_state;
} }
...@@ -2923,7 +2954,7 @@ int main() ...@@ -2923,7 +2954,7 @@ int main()
return 0; return 0;
} }
#endif #endif
#line 358 "config.l" #line 363 "config.l"
/*@ ---------------------------------------------------------------------------- /*@ ----------------------------------------------------------------------------
...@@ -3002,7 +3033,7 @@ void Config::init() ...@@ -3002,7 +3033,7 @@ void Config::init()
Config::paperType = "a4wide"; Config::paperType = "a4wide";
Config::manExtension = ".3"; Config::manExtension = ".3";
Config::htmlStyleSheet.resize(0); Config::htmlStyleSheet.resize(0);
Config::ignorePrefix.resize(0); Config::ignorePrefixList.clear();
Config::includePath.clear(); Config::includePath.clear();
Config::examplePath.clear(); Config::examplePath.clear();
Config::imagePath.clear(); Config::imagePath.clear();
...@@ -3061,6 +3092,8 @@ void Config::init() ...@@ -3061,6 +3092,8 @@ void Config::init()
Config::collGraphFlag = TRUE; Config::collGraphFlag = TRUE;
Config::includeGraphFlag = TRUE; Config::includeGraphFlag = TRUE;
Config::gfxHierarchyFlag = TRUE; Config::gfxHierarchyFlag = TRUE;
Config::showIncFileFlag = TRUE;
Config::stripCommentsFlag = TRUE;
} }
void writeTemplateConfig(QFile *f,bool sl) void writeTemplateConfig(QFile *f,bool sl)
...@@ -3264,6 +3297,15 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -3264,6 +3297,15 @@ void writeTemplateConfig(QFile *f,bool sl)
} }
t << "INLINE_SOURCES = NO\n"; t << "INLINE_SOURCES = NO\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct\n";
t << "# doxygen to hide any special comment blocks from generated source code\n";
t << "# fragments. Normal C and C++ comments will always remain visible.\n";
t << "\n";
}
t << "STRIP_CODE_COMMENTS = YES\n";
if (!sl)
{ {
t << "\n"; t << "\n";
t << "# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen\n"; t << "# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen\n";
...@@ -3284,6 +3326,15 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -3284,6 +3326,15 @@ void writeTemplateConfig(QFile *f,bool sl)
} }
t << "VERBATIM_HEADERS = YES\n"; t << "VERBATIM_HEADERS = YES\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen\n";
t << "# will put list of the files that are included by a file in the documentation\n";
t << "# of that file.\n";
t << "\n";
}
t << "SHOW_INCLUDE_FILES = YES\n";
if (!sl)
{ {
t << "\n"; t << "\n";
t << "# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen\n"; t << "# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen\n";
...@@ -3514,8 +3565,8 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -3514,8 +3565,8 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "\n"; t << "\n";
t << "# In case all classes in a project start with a common prefix, all\n"; t << "# In case all classes in a project start with a common prefix, all\n";
t << "# classes will be put under the same header in the alphabetical index.\n"; t << "# classes will be put under the same header in the alphabetical index.\n";
t << "# The IGNORE_PREFIX tag can be use to specify a prefix that should be ignored\n"; t << "# The IGNORE_PREFIX tag can be used to specify one or more prefixes that\n";
t << "# while generating the index headers.\n"; t << "# should be ignored while generating the index headers.\n";
t << "\n"; t << "\n";
} }
t << "IGNORE_PREFIX = \n"; t << "IGNORE_PREFIX = \n";
...@@ -4218,6 +4269,11 @@ void checkConfig() ...@@ -4218,6 +4269,11 @@ void checkConfig()
} }
} }
} }
#if defined(_WIN32)
if (Config::haveDotFlag) _putenv("DOTFONTPATH=.");
#endif
} }
void parseConfig(const QCString &s) void parseConfig(const QCString &s)
......
...@@ -53,7 +53,7 @@ struct Config ...@@ -53,7 +53,7 @@ struct Config
static QCString paperType; // the page type to generate docs for static QCString paperType; // the page type to generate docs for
static QCString manExtension; // extension the man page files static QCString manExtension; // extension the man page files
static QCString htmlStyleSheet; // user defined cascading style sheet static QCString htmlStyleSheet; // user defined cascading style sheet
static QCString ignorePrefix; // prefix to ignore for the alphabetical index static QStrList ignorePrefixList; // list of prefixes to ignore for the alphabetical index
static QStrList includePath; // list of include paths static QStrList includePath; // list of include paths
static QStrList examplePath; // list of example paths static QStrList examplePath; // list of example paths
static QStrList imagePath; // list of image paths static QStrList imagePath; // list of image paths
...@@ -112,6 +112,8 @@ struct Config ...@@ -112,6 +112,8 @@ struct Config
static bool generateRTF; // generate RTF flag static bool generateRTF; // generate RTF flag
static bool compactRTFFlag; // generate more compact RTF static bool compactRTFFlag; // generate more compact RTF
static bool rtfHyperFlag; // generate hyper links in RTF static bool rtfHyperFlag; // generate hyper links in RTF
static bool showIncFileFlag; // show include file in file documentation?
static bool stripCommentsFlag; // strip special comments from code fragments?
}; };
#endif #endif
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
* includes * includes
*/ */
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <iostream.h> #include <iostream.h>
#include <assert.h> #include <assert.h>
#include <ctype.h> #include <ctype.h>
...@@ -84,7 +85,7 @@ QCString Config::inputFilter; ...@@ -84,7 +85,7 @@ QCString Config::inputFilter;
QCString Config::paperType; QCString Config::paperType;
QCString Config::manExtension; QCString Config::manExtension;
QCString Config::htmlStyleSheet; QCString Config::htmlStyleSheet;
QCString Config::ignorePrefix; QStrList Config::ignorePrefixList;
QStrList Config::includePath; QStrList Config::includePath;
QStrList Config::examplePath; QStrList Config::examplePath;
QStrList Config::imagePath; QStrList Config::imagePath;
...@@ -141,6 +142,8 @@ bool Config::inlineInfoFlag = TRUE; ...@@ -141,6 +142,8 @@ bool Config::inlineInfoFlag = TRUE;
bool Config::collGraphFlag = TRUE; bool Config::collGraphFlag = TRUE;
bool Config::includeGraphFlag = TRUE; bool Config::includeGraphFlag = TRUE;
bool Config::gfxHierarchyFlag = TRUE; bool Config::gfxHierarchyFlag = TRUE;
bool Config::showIncFileFlag = TRUE;
bool Config::stripCommentsFlag = TRUE;
int Config::tabSize = 8; int Config::tabSize = 8;
int Config::colsInAlphaIndex = 5; int Config::colsInAlphaIndex = 5;
...@@ -219,7 +222,7 @@ static int yyread(char *buf,int max_size) ...@@ -219,7 +222,7 @@ static int yyread(char *buf,int max_size)
<Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; s->resize(0); } <Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; s->resize(0); }
<Start>"HTML_STYLESHEET"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlStyleSheet; s->resize(0); } <Start>"HTML_STYLESHEET"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlStyleSheet; s->resize(0); }
<Start>"COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); } <Start>"COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); }
<Start>"IGNORE_PREFIX"[ \t]*"=" { BEGIN(GetString); s=&Config::ignorePrefix; s->resize(0); } <Start>"IGNORE_PREFIX"[ \t]*"=" { BEGIN(GetStrList); l=&Config::ignorePrefixList; l->clear(); elemStr=""; }
<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; } <Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; }
<Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; } <Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; }
<Start>"IMAGE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; } <Start>"IMAGE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; }
...@@ -276,6 +279,8 @@ static int yyread(char *buf,int max_size) ...@@ -276,6 +279,8 @@ static int yyread(char *buf,int max_size)
<Start>"GENERATE_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateRTF; } <Start>"GENERATE_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateRTF; }
<Start>"COMPACT_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactRTFFlag; } <Start>"COMPACT_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactRTFFlag; }
<Start>"RTF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::rtfHyperFlag; } <Start>"RTF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::rtfHyperFlag; }
<Start>"SHOW_INCLUDE_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::showIncFileFlag; }
<Start>"STRIP_CODE_COMMENTS"[ \t]*"=" { BEGIN(GetBool); b=&Config::stripCommentsFlag; }
<Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); } <Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); }
<GetString,GetBool>\n { yyLineNr++; BEGIN(Start); } <GetString,GetBool>\n { yyLineNr++; BEGIN(Start); }
<GetStrList>\n { <GetStrList>\n {
...@@ -433,7 +438,7 @@ void Config::init() ...@@ -433,7 +438,7 @@ void Config::init()
Config::paperType = "a4wide"; Config::paperType = "a4wide";
Config::manExtension = ".3"; Config::manExtension = ".3";
Config::htmlStyleSheet.resize(0); Config::htmlStyleSheet.resize(0);
Config::ignorePrefix.resize(0); Config::ignorePrefixList.clear();
Config::includePath.clear(); Config::includePath.clear();
Config::examplePath.clear(); Config::examplePath.clear();
Config::imagePath.clear(); Config::imagePath.clear();
...@@ -492,6 +497,8 @@ void Config::init() ...@@ -492,6 +497,8 @@ void Config::init()
Config::collGraphFlag = TRUE; Config::collGraphFlag = TRUE;
Config::includeGraphFlag = TRUE; Config::includeGraphFlag = TRUE;
Config::gfxHierarchyFlag = TRUE; Config::gfxHierarchyFlag = TRUE;
Config::showIncFileFlag = TRUE;
Config::stripCommentsFlag = TRUE;
} }
void writeTemplateConfig(QFile *f,bool sl) void writeTemplateConfig(QFile *f,bool sl)
...@@ -695,6 +702,15 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -695,6 +702,15 @@ void writeTemplateConfig(QFile *f,bool sl)
} }
t << "INLINE_SOURCES = NO\n"; t << "INLINE_SOURCES = NO\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct\n";
t << "# doxygen to hide any special comment blocks from generated source code\n";
t << "# fragments. Normal C and C++ comments will always remain visible.\n";
t << "\n";
}
t << "STRIP_CODE_COMMENTS = YES\n";
if (!sl)
{ {
t << "\n"; t << "\n";
t << "# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen\n"; t << "# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen\n";
...@@ -715,6 +731,15 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -715,6 +731,15 @@ void writeTemplateConfig(QFile *f,bool sl)
} }
t << "VERBATIM_HEADERS = YES\n"; t << "VERBATIM_HEADERS = YES\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen\n";
t << "# will put list of the files that are included by a file in the documentation\n";
t << "# of that file.\n";
t << "\n";
}
t << "SHOW_INCLUDE_FILES = YES\n";
if (!sl)
{ {
t << "\n"; t << "\n";
t << "# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen\n"; t << "# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen\n";
...@@ -945,8 +970,8 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -945,8 +970,8 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "\n"; t << "\n";
t << "# In case all classes in a project start with a common prefix, all\n"; t << "# In case all classes in a project start with a common prefix, all\n";
t << "# classes will be put under the same header in the alphabetical index.\n"; t << "# classes will be put under the same header in the alphabetical index.\n";
t << "# The IGNORE_PREFIX tag can be use to specify a prefix that should be ignored\n"; t << "# The IGNORE_PREFIX tag can be used to specify one or more prefixes that\n";
t << "# while generating the index headers.\n"; t << "# should be ignored while generating the index headers.\n";
t << "\n"; t << "\n";
} }
t << "IGNORE_PREFIX = \n"; t << "IGNORE_PREFIX = \n";
...@@ -1649,6 +1674,11 @@ void checkConfig() ...@@ -1649,6 +1674,11 @@ void checkConfig()
} }
} }
} }
#if defined(_WIN32)
if (Config::haveDotFlag) _putenv("DOTFONTPATH=.");
#endif
} }
void parseConfig(const QCString &s) void parseConfig(const QCString &s)
......
...@@ -43,12 +43,13 @@ QCString Definition::nameToFile(const char *name) ...@@ -43,12 +43,13 @@ QCString Definition::nameToFile(const char *name)
{ {
switch(c) switch(c)
{ {
case ':': result+="_c_"; break; case ':': result+="_"; break;
case '<': result+="_lt"; break; case '<': result+="_lt"; break;
case '>': result+="_gt"; break; case '>': result+="_gt"; break;
case '*': result+="_ast"; break; case '*': result+="_ast"; break;
case '&': result+="_amp"; break; case '&': result+="_amp"; break;
case '|': result+="_p_"; break; case '|': result+="_p_"; break;
case '!': result+="_e_"; break;
case ',': result+="_x_"; break; case ',': result+="_x_"; break;
case ' ': break; case ' ': break;
default: default:
......
...@@ -259,10 +259,6 @@ void DotNode::deleteNode() ...@@ -259,10 +259,6 @@ void DotNode::deleteNode()
// do not access cn after this! // do not access cn after this!
} }
} }
//printf("delete node %s from memory (c=%d,p=%d)\n",
// m_label.data(),
// m_children?m_children->count():0,
// m_parents?m_parents->count():0);
delete this; delete this;
} }
...@@ -413,25 +409,17 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) ...@@ -413,25 +409,17 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
QDir::setCurrent(d.absPath()); QDir::setCurrent(d.absPath());
QDir thisDir; QDir thisDir;
//QFile ind("inherit.html");
//if (ind.open(IO_WriteOnly))
//{
// QTextStream ti(&ind);
//ti << "<html><head><title>Class Hierarchy</title></head>" << endl;
//ti << "<body bgcolor=#ffffff>" << endl;
out << "<table border=0 cellspacing=10 cellpadding=0>" << endl; out << "<table border=0 cellspacing=10 cellpadding=0>" << endl;
QListIterator<DotNode> dnli(*m_rootSubgraphs); QListIterator<DotNode> dnli(*m_rootSubgraphs);
DotNode *n; DotNode *n;
for (dnli.toFirst();(n=dnli.current());++dnli) for (dnli.toFirst();(n=dnli.current());++dnli)
{ {
//printf("Node %s color=%d (c=%d,p=%d)\n",
// n->m_label.data(),n->m_subgraphId,
// n->m_children?n->m_children->count():0,
// n->m_parents?n->m_parents->count():0);
QCString baseName; QCString baseName;
baseName.sprintf("inherit_graph_%s",n->m_label.data()); QCString diskName=n->m_url.copy();
int i=diskName.find('$'); /* should not return -1 */
if (i!=-1) diskName=diskName.right(diskName.length()-i-1);
baseName.sprintf("inherit_graph_%s",diskName.data());
QCString dotName=baseName+".dot"; QCString dotName=baseName+".dot";
QCString gifName=baseName+".gif"; QCString gifName=baseName+".gif";
QCString mapName=baseName+".map"; QCString mapName=baseName+".map";
...@@ -477,9 +465,6 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) ...@@ -477,9 +465,6 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
thisDir.remove(mapName); thisDir.remove(mapName);
} }
out << "</table>" << endl; out << "</table>" << endl;
// ti << "</body></html>" << endl;
// ind.close();
//}
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
} }
......
...@@ -67,8 +67,8 @@ class DotNode ...@@ -67,8 +67,8 @@ class DotNode
void colorConnectedNodes(int curColor); void colorConnectedNodes(int curColor);
const DotNode *findRoot() const; // only works for acyclic graphs! const DotNode *findRoot() const; // only works for acyclic graphs!
int m_number; int m_number;
QCString m_label; QCString m_label; //!< label text
QCString m_url; QCString m_url; //!< url of the node (format: remove$local)
QList<DotNode> *m_parents; //!< list of parent nodes (incoming arrows) QList<DotNode> *m_parents; //!< list of parent nodes (incoming arrows)
QList<DotNode> *m_children; //!< list of child nodes (outgoing arrows) QList<DotNode> *m_children; //!< list of child nodes (outgoing arrows)
QList<EdgeInfo> *m_edgeInfo; //!< edge info for each child QList<EdgeInfo> *m_edgeInfo; //!< edge info for each child
......
...@@ -339,42 +339,29 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root) ...@@ -339,42 +339,29 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
fd=ifd; fd=ifd;
} }
// if a file is found, we mark it as a source file. // if a file is found, we mark it as a source file.
if (fd) if (fd)
{ {
//printf("Adding file %s used by %s\n",fd->name().data(),cd->name().data());
//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);
QCString iName = !root->includeName.isEmpty() ? QCString iName = !root->includeName.isEmpty() ?
root->includeName.data() : root->includeFile.data(); root->includeName.data() : root->includeFile.data();
bool local=FALSE; bool local=FALSE;
if (!iName.isEmpty()) if (!iName.isEmpty()) // user specified include file
{ {
local = iName.at(0)=='"'; local = iName.at(0)=='"'; // is it a local include file
if (local || iName.at(0)=='<') if (local || iName.at(0)=='<')
{ {
iName=iName.mid(1,iName.length()-2); iName=iName.mid(1,iName.length()-2); // strip quotes or brackets
} }
} }
fd->setGenerateSource(TRUE); if (Config::verbatimHeaderFlag) // generate code for header
{
cd->setIncludeFile(fd,iName,local); cd->setIncludeFile(fd,iName,local);
fd->setGenerateSource(TRUE);
//if (cd->name().find('@')==-1) }
//{ else // put #include in the class documentation without link
// fd->setIncludeName(cd->getOutputFileBase()+"-include"); {
//} cd->setIncludeFile(0,iName,local);
//if (!fd->absFilePath().isEmpty() && }
// includeDict[fd->absFilePath()]==0) // include not inserted earlier
//{
// includeFiles.inSort(fd);
// includeDict.insert(fd->absFilePath(),fd);
//}
} }
} }
} }
...@@ -1609,16 +1596,28 @@ void transferFunctionDocumentation() ...@@ -1609,16 +1596,28 @@ void transferFunctionDocumentation()
//---------------------------------------------------------------------- //----------------------------------------------------------------------
bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix, static bool findBaseClassRelation(Entry *root,ClassDef *cd,
bool insertUndocumented) BaseInfo *bi,
bool insertUndocumented
)
{ {
// The base class could ofcouse also be a non-nested class Entry *parentNode=root->parent;
QList<BaseInfo> *baseList=root->extends; bool lastParent=FALSE;
BaseInfo *bi=baseList->first(); do // for each parent scope, starting with the largest scope
bool foundAny=FALSE; // (in case of nested classes)
while (bi) // for each base class {
QCString scopeName= parentNode ? parentNode->name.data() : "";
int scopeOffset=scopeName.length();
do // try all parent scope prefixes, starting with the largest scope
{
//printf("scopePrefix=`%s' bi->name=`%s'\n",
// scopeName.left(scopeOffset).data(),bi->name.data());
QCString baseClassName=removeRedundantWhiteSpace(bi->name);
if (scopeOffset>0)
{ {
QCString baseClassName=removeRedundantWhiteSpace(scopePrefix+bi->name); baseClassName.prepend(scopeName.left(scopeOffset)+"::");
}
ClassDef *baseClass=getClass(baseClassName); ClassDef *baseClass=getClass(baseClassName);
if (baseClassName!=root->name) // check for base class with the same name, if (baseClassName!=root->name) // check for base class with the same name,
// look in the outer scope for a match // look in the outer scope for a match
...@@ -1629,6 +1628,7 @@ bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix, ...@@ -1629,6 +1628,7 @@ bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix,
// (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"), // (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"),
// (bi->virt==Normal)?"normal":"virtual" // (bi->virt==Normal)?"normal":"virtual"
// ); // );
int i; int i;
QCString templSpec; QCString templSpec;
if (baseClass==0 && (i=baseClassName.find('<'))!=-1) if (baseClass==0 && (i=baseClassName.find('<'))!=-1)
...@@ -1685,11 +1685,12 @@ bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix, ...@@ -1685,11 +1685,12 @@ bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix,
} }
if (found) if (found)
{ {
//printf(">>> Documented base class = %s\n",bi->name.data());
// add base class to this class // add base class to this class
cd->insertBaseClass(baseClass,bi->prot,bi->virt,templSpec); cd->insertBaseClass(baseClass,bi->prot,bi->virt,templSpec);
// add this class as super class to the base class // add this class as super class to the base class
baseClass->insertSuperClass(cd,bi->prot,bi->virt,templSpec); baseClass->insertSuperClass(cd,bi->prot,bi->virt,templSpec);
foundAny=TRUE; return TRUE;
} }
else if (insertUndocumented) else if (insertUndocumented)
{ {
...@@ -1706,11 +1707,35 @@ bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix, ...@@ -1706,11 +1707,35 @@ bool findBaseClassRelation(Entry *root,ClassDef *cd,const char *scopePrefix,
//printf("ClassDict.insert(%s)\n",resolveDefines(fullName).data()); //printf("ClassDict.insert(%s)\n",resolveDefines(fullName).data());
//classDict.insert(resolveDefines(bi->name),baseClass); //classDict.insert(resolveDefines(bi->name),baseClass);
classDict.insert(baseClassName,baseClass); classDict.insert(baseClassName,baseClass);
return TRUE;
} }
else
{
//printf(">>> base class %s not found!\n",bi->name.data());
} }
bi=baseList->next();
} }
return foundAny; if (scopeOffset==0)
{
scopeOffset=-1;
}
else if ((scopeOffset=scopeName.findRev("::",scopeOffset-1))==-1)
{
scopeOffset=0;
}
//printf("new scopeOffset=`%d'",scopeOffset);
} while (scopeOffset>=0);
if (parentNode==0)
{
lastParent=TRUE;
}
else
{
parentNode=parentNode->parent;
}
} while (lastParent);
return FALSE;
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -1743,20 +1768,19 @@ void computeClassRelations(Entry *root) ...@@ -1743,20 +1768,19 @@ void computeClassRelations(Entry *root)
cd->visited=TRUE; // mark class as used cd->visited=TRUE; // mark class as used
if (root->extends->count()>0) // there are base classes if (root->extends->count()>0) // there are base classes
{ {
Entry *p=root->parent; // The base class could ofcouse also be a non-nested class
bool found=FALSE; QList<BaseInfo> *baseList=root->extends;
// For nested classes (or classes inside namespaces) the base class BaseInfo *bi=baseList->first();
// could also be nested (or inside a namespace)! while (bi) // for each base class
// To find the correct scope, we try to prepend the scope to the base {
// name, starting with the largest, most inner scope. // find a documented base class in the correct scope
while (p && p->section&Entry::SCOPE_MASK && if (!findBaseClassRelation(root,cd,bi,FALSE))
!(found=findBaseClassRelation(root,cd,p->name+"::",FALSE)))
p=p->parent;
// For classes with global scope the same search is preformed
if (!found)
{ {
findBaseClassRelation(root,cd,0,TRUE); // no documented base class -> try to find an undocumented one
} // class not nested findBaseClassRelation(root,cd,bi,TRUE);
}
bi=baseList->next();
}
} // class has no base classes } // class has no base classes
} // else class is already found } // else class is already found
} }
......
# #
# $Id$ # $Id$
# #
# Copyright (C) 1997-1999 by Dimitri van Heesch. # Copyright (C) 1997-2000 by Dimitri van Heesch.
# #
# Permission to use, copy, modify, and distribute this software and its # Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby # documentation under the terms of the GNU General Public License is hereby
......
...@@ -126,6 +126,8 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -126,6 +126,8 @@ void FileDef::writeDocumentation(OutputList &ol)
} }
ol.writeSynopsis(); ol.writeSynopsis();
if (Config::showIncFileFlag)
{
ol.startTextBlock(TRUE); ol.startTextBlock(TRUE);
QListIterator<IncludeInfo> ili(*includeList); QListIterator<IncludeInfo> ili(*includeList);
IncludeInfo *ii; IncludeInfo *ii;
...@@ -166,6 +168,7 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -166,6 +168,7 @@ void FileDef::writeDocumentation(OutputList &ol)
ol.enableAll(); ol.enableAll();
} }
ol.endTextBlock(); ol.endTextBlock();
}
if (Config::haveDotFlag && Config::includeGraphFlag) if (Config::haveDotFlag && Config::includeGraphFlag)
{ {
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "image.h" #include "image.h"
#include "util.h" #include "util.h"
#include "message.h" #include "message.h"
#include "config.h"
Formula::Formula(const char *text) Formula::Formula(const char *text)
{ {
...@@ -66,6 +67,12 @@ void FormulaList::generateBitmaps(const char *path) ...@@ -66,6 +67,12 @@ void FormulaList::generateBitmaps(const char *path)
QTextStream t(&f); QTextStream t(&f);
t << "\\documentclass{article}" << endl; t << "\\documentclass{article}" << endl;
t << "\\usepackage{epsf}" << endl; // for those who want to include images t << "\\usepackage{epsf}" << endl; // for those who want to include images
const char *s=Config::extraPackageList.first();
while (s)
{
t << "\\usepackage{" << s << "}\n";
s=Config::extraPackageList.next();
}
t << "\\pagestyle{empty}" << endl; t << "\\pagestyle{empty}" << endl;
t << "\\begin{document}" << endl; t << "\\begin{document}" << endl;
int page=0; int page=0;
......
...@@ -102,9 +102,9 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -102,9 +102,9 @@ void GroupDef::writeDocumentation(OutputList &ol)
} }
if (fileList->count()>0) if (fileList->count()>0)
{ {
ol.startMemberHeader(); ol.startGroupHeader();
parseText(ol,theTranslator->trFiles()); parseText(ol,theTranslator->trFiles());
ol.endMemberHeader(); ol.endGroupHeader();
ol.startIndexList(); ol.startIndexList();
FileDef *fd=fileList->first(); FileDef *fd=fileList->first();
while (fd) while (fd)
...@@ -123,9 +123,9 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -123,9 +123,9 @@ void GroupDef::writeDocumentation(OutputList &ol)
{ {
if (!found) if (!found)
{ {
ol.startMemberHeader(); ol.startGroupHeader();
parseText(ol,theTranslator->trCompounds()); parseText(ol,theTranslator->trCompounds());
ol.endMemberHeader(); ol.endGroupHeader();
ol.startIndexList(); ol.startIndexList();
found=TRUE; found=TRUE;
} }
......
...@@ -495,7 +495,7 @@ void writeFileIndex(OutputList &ol) ...@@ -495,7 +495,7 @@ void writeFileIndex(OutputList &ol)
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
#if 0
void writeSourceIndex(OutputList &ol) void writeSourceIndex(OutputList &ol)
{ {
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
...@@ -561,6 +561,7 @@ void writeSourceIndex(OutputList &ol) ...@@ -561,6 +561,7 @@ void writeSourceIndex(OutputList &ol)
endFile(ol); endFile(ol);
ol.enable(OutputGenerator::Man); ol.enable(OutputGenerator::Man);
} }
#endif
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
int countNamespaces() int countNamespaces()
...@@ -723,13 +724,11 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -723,13 +724,11 @@ void writeAlphabeticalClassList(OutputList &ol)
ClassDef *cd; ClassDef *cd;
char startLetter=0; char startLetter=0;
int headerItems=0; int headerItems=0;
int prefixLength = Config::ignorePrefix.length();
for (;(cd=cli.current());++cli) for (;(cd=cli.current());++cli)
{ {
if (cd->isLinkableInProject()) if (cd->isLinkableInProject())
{ {
int index = cd->name().left(prefixLength)==Config::ignorePrefix ? int index = getPrefixIndex(cd->name());
prefixLength : 0;
if (cd->name().at(index)!=startLetter) // new begin letter => new header if (cd->name().at(index)!=startLetter) // new begin letter => new header
{ {
startLetter=cd->name().at(index); startLetter=cd->name().at(index);
...@@ -762,8 +761,7 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -762,8 +761,7 @@ void writeAlphabeticalClassList(OutputList &ol)
{ {
if (cd->isLinkableInProject()) if (cd->isLinkableInProject())
{ {
int index = cd->name().left(prefixLength)==Config::ignorePrefix ? int index = getPrefixIndex(cd->name());
prefixLength : 0;
if (cd->name().at(index)!=startLetter) if (cd->name().at(index)!=startLetter)
{ {
// insert a new header using a dummy class pointer. // insert a new header using a dummy class pointer.
...@@ -811,8 +809,7 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -811,8 +809,7 @@ void writeAlphabeticalClassList(OutputList &ol)
if (cd) if (cd)
{ {
//printf("head ClassDef=%p %s\n",cd,cd ? cd->name().data() : "<none>"); //printf("head ClassDef=%p %s\n",cd,cd ? cd->name().data() : "<none>");
int index = cd->name().left(prefixLength)==Config::ignorePrefix ? int index = getPrefixIndex(cd->name());
prefixLength : 0;
startLetter=cd->name().at(index); startLetter=cd->name().at(index);
char s[2]; s[0]=startLetter; s[1]=0; char s[2]; s[0]=startLetter; s[1]=0;
ol.writeIndexHeading(s); ol.writeIndexHeading(s);
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -77,6 +77,7 @@ static int lastVerbState; ...@@ -77,6 +77,7 @@ static int lastVerbState;
static int lastStringContext; static int lastStringContext;
static int lastCurlyContext; static int lastCurlyContext;
static int lastRoundContext; static int lastRoundContext;
static int lastSquareContext;
static int lastCodeState; static int lastCodeState;
static int lastAfterDocContext; static int lastAfterDocContext;
static int lastGroupContext; static int lastGroupContext;
...@@ -84,6 +85,7 @@ static int lastMemberGroupContext; ...@@ -84,6 +85,7 @@ static int lastMemberGroupContext;
static int lastFormulaContext; static int lastFormulaContext;
static int lastAnchorContext; static int lastAnchorContext;
static int lastInitializerContext; static int lastInitializerContext;
static int lastClassTemplSpecContext;
static int nextDefContext; static int nextDefContext;
static int overloadContext; static int overloadContext;
static Protection protection; static Protection protection;
...@@ -91,6 +93,7 @@ static Protection baseProt; ...@@ -91,6 +93,7 @@ static Protection baseProt;
static int sharpCount = 0 ; static int sharpCount = 0 ;
static int roundCount = 0 ; static int roundCount = 0 ;
static int curlyCount = 0 ; static int curlyCount = 0 ;
static int squareCount = 0 ;
static int ifCount = 0 ; static int ifCount = 0 ;
static Entry* current_root = 0 ; static Entry* current_root = 0 ;
static Entry* global_root = 0 ; static Entry* global_root = 0 ;
...@@ -936,6 +939,7 @@ VAR [vV][aA][rR] ...@@ -936,6 +939,7 @@ VAR [vV][aA][rR]
%x Sharp %x Sharp
%x SkipSharp %x SkipSharp
%x SkipRound %x SkipRound
%x SkipSquare
%x TypedefName %x TypedefName
%x Comment %x Comment
%x Doc %x Doc
...@@ -1086,7 +1090,7 @@ VAR [vV][aA][rR] ...@@ -1086,7 +1090,7 @@ VAR [vV][aA][rR]
if (inBlock()) endBlock(); if (inBlock()) endBlock();
} }
*/ */
<DocScan>^{B}*(("//"{B}*)?)"*"*[ \t]*"-" { /* found list item marker */ <DocScan>^{B}*(("//"{B}*)?)"*"*{B}*"-"{B}+ { /* found list item marker */
addListItemMarker(yytext); addListItemMarker(yytext);
} }
<DocScan>"<!--" { BEGIN(DocSkipHtmlComment); } <DocScan>"<!--" { BEGIN(DocSkipHtmlComment); }
...@@ -1155,7 +1159,7 @@ VAR [vV][aA][rR] ...@@ -1155,7 +1159,7 @@ VAR [vV][aA][rR]
outDoc->endCodeFragment(); outDoc->endCodeFragment();
BEGIN(DocScan); BEGIN(DocScan);
} }
<DocVerbatim>[^\n\\]*"\n" { <DocVerbatim>[^\n\\\@]*"\n" {
//printf("docifying: %s\n",yytext); //printf("docifying: %s\n",yytext);
outDoc->codify(yytext); outDoc->codify(yytext);
} }
...@@ -1167,7 +1171,7 @@ VAR [vV][aA][rR] ...@@ -1167,7 +1171,7 @@ VAR [vV][aA][rR]
char c[2];c[0]=*yytext;c[1]='\0'; char c[2];c[0]=*yytext;c[1]='\0';
outDoc->codify(c); outDoc->codify(c);
} }
<DocScan>{CMD}"internal"{BN}+ { <DocScan>{CMD}"internal"/{BN} {
if (!Config::internalDocsFlag) if (!Config::internalDocsFlag)
{ {
outDoc->newParagraph(); outDoc->newParagraph();
...@@ -1224,7 +1228,7 @@ VAR [vV][aA][rR] ...@@ -1224,7 +1228,7 @@ VAR [vV][aA][rR]
outDoc->addToIndex(yytext,0); outDoc->addToIndex(yytext,0);
BEGIN(DocScan); BEGIN(DocScan);
} }
<DocScan>{CMD}"arg"{BN}+ { <DocScan>{CMD}"arg"/{BN} {
if (insideArgumentList) if (insideArgumentList)
{ {
outDoc->writeListItem(); outDoc->writeListItem();
...@@ -1239,7 +1243,7 @@ VAR [vV][aA][rR] ...@@ -1239,7 +1243,7 @@ VAR [vV][aA][rR]
<DocScan>{CMD}"par"{B}+ { <DocScan>{CMD}"par"{B}+ {
BEGIN(DocPar); BEGIN(DocPar);
} }
<DocPar>[^\n]*{BN}+ { <DocPar>[^\n]*{BN} {
endArgumentList(); endArgumentList();
if (inBlock()) endBlock(); if (inBlock()) endBlock();
inParBlock=TRUE; inParBlock=TRUE;
...@@ -1251,7 +1255,7 @@ VAR [vV][aA][rR] ...@@ -1251,7 +1255,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem(); outDoc->writeDescItem();
BEGIN(DocScan); BEGIN(DocScan);
} }
<DocScan>{CMD}"warning"{BN}+ { <DocScan>{CMD}"warning"/{BN} {
endArgumentList(); endArgumentList();
if (!inWarningBlock) if (!inWarningBlock)
{ {
...@@ -1270,7 +1274,7 @@ VAR [vV][aA][rR] ...@@ -1270,7 +1274,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
<DocScan>{CMD}"bug"[s]?{BN}+ { <DocScan>{CMD}"bug"[s]?/{BN} {
endArgumentList(); endArgumentList();
if (!inBugBlock) if (!inBugBlock)
{ {
...@@ -1288,7 +1292,7 @@ VAR [vV][aA][rR] ...@@ -1288,7 +1292,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
<DocScan>{CMD}"pre"[s]?{BN}+ { <DocScan>{CMD}"pre"[s]?/{BN} {
endArgumentList(); endArgumentList();
if (!inPreBlock) if (!inPreBlock)
{ {
...@@ -1306,7 +1310,7 @@ VAR [vV][aA][rR] ...@@ -1306,7 +1310,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
<DocScan>{CMD}"post"[s]?{BN}+ { <DocScan>{CMD}"post"[s]?/{BN} {
endArgumentList(); endArgumentList();
if (!inPostBlock) if (!inPostBlock)
{ {
...@@ -1324,7 +1328,7 @@ VAR [vV][aA][rR] ...@@ -1324,7 +1328,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
<DocScan>{CMD}"invariant"[s]?{BN}+ { <DocScan>{CMD}"invariant"[s]?/{BN} {
endArgumentList(); endArgumentList();
if (!inInvarBlock) if (!inInvarBlock)
{ {
...@@ -1342,7 +1346,7 @@ VAR [vV][aA][rR] ...@@ -1342,7 +1346,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
<DocScan>{CMD}"version"{BN}+ { <DocScan>{CMD}"version"/{BN} {
endArgumentList(); endArgumentList();
if (!inVersionBlock) if (!inVersionBlock)
{ {
...@@ -1360,7 +1364,7 @@ VAR [vV][aA][rR] ...@@ -1360,7 +1364,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
<DocScan>{CMD}"date"{BN}+ { <DocScan>{CMD}"date"/{BN} {
endArgumentList(); endArgumentList();
if (!inDateBlock) if (!inDateBlock)
{ {
...@@ -1378,7 +1382,7 @@ VAR [vV][aA][rR] ...@@ -1378,7 +1382,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
<DocScan>{CMD}"deprecated"{BN}+ { <DocScan>{CMD}"deprecated"/{BN} {
endArgumentList(); endArgumentList();
if (!inDeprecatedBlock) if (!inDeprecatedBlock)
{ {
...@@ -1396,7 +1400,7 @@ VAR [vV][aA][rR] ...@@ -1396,7 +1400,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
<DocScan>{CMD}"author"{BN}+ { <DocScan>{CMD}"author"/{BN} {
endArgumentList(); endArgumentList();
if (!inAuthorBlock) if (!inAuthorBlock)
{ {
...@@ -1414,7 +1418,7 @@ VAR [vV][aA][rR] ...@@ -1414,7 +1418,7 @@ VAR [vV][aA][rR]
outDoc->docify(", "); outDoc->docify(", ");
} }
} }
<DocScan>{CMD}("return"([s])?|"result"){BN}+ { <DocScan>{CMD}("return"([s])?|"result")/{BN} {
endArgumentList(); endArgumentList();
if (!inReturnBlock) if (!inReturnBlock)
{ {
...@@ -1428,7 +1432,7 @@ VAR [vV][aA][rR] ...@@ -1428,7 +1432,7 @@ VAR [vV][aA][rR]
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
<DocScan>{CMD}("sa"|"see"){BN}+ { <DocScan>{CMD}("sa"|"see")/{BN} {
endArgumentList(); endArgumentList();
if (!inSeeBlock) if (!inSeeBlock)
{ {
...@@ -1446,7 +1450,7 @@ VAR [vV][aA][rR] ...@@ -1446,7 +1450,7 @@ VAR [vV][aA][rR]
outDoc->docify(", "); outDoc->docify(", ");
} }
} }
<DocScan>{CMD}"param"{BN}+ { <DocScan>{CMD}"param"/{BN} {
endArgumentList(); endArgumentList();
if (!inParamBlock) if (!inParamBlock)
{ {
...@@ -1466,7 +1470,7 @@ VAR [vV][aA][rR] ...@@ -1466,7 +1470,7 @@ VAR [vV][aA][rR]
} }
BEGIN(DocParam); BEGIN(DocParam);
} }
<DocScan>{CMD}"retval"{BN}+ { <DocScan>{CMD}"retval"/{BN} {
endArgumentList(); endArgumentList();
if (!inRetValBlock) if (!inRetValBlock)
{ {
...@@ -1486,7 +1490,7 @@ VAR [vV][aA][rR] ...@@ -1486,7 +1490,7 @@ VAR [vV][aA][rR]
} }
BEGIN(DocParam); BEGIN(DocParam);
} }
<DocScan>{CMD}("exception"|"throw")s?{BN}+ { <DocScan>{CMD}("exception"|"throw")s?/{BN} {
endArgumentList(); endArgumentList();
if (!inExceptionBlock) if (!inExceptionBlock)
{ {
...@@ -1983,7 +1987,24 @@ VAR [vV][aA][rR] ...@@ -1983,7 +1987,24 @@ VAR [vV][aA][rR]
outDoc->docify(yytext); outDoc->docify(yytext);
} }
<DocCode,DocEmphasis,DocBold>"\n" { outDoc->writeChar('\n'); } <DocCode,DocEmphasis,DocBold>"\n" { outDoc->writeChar('\n'); }
<DocScan>({B}*"\n"){2,}{B}* { <DocScan>({B}*"\n"){2,}{B}*"*"*{B}*"-"{B}+ { // new paragraph & start of a list
if (insideArgumentList)
{
insideArgumentList=FALSE;
outDoc->endItemList();
}
else if (insideItemList)
{
forceEndItemList();
}
else
{
outDoc->newParagraph();
}
if (inBlock()) endBlock();
addListItemMarker(strrchr(yytext,'\n')+1);
}
<DocScan>({B}*"\n"){2,}{B}* { // new paragraph
if (insideArgumentList) if (insideArgumentList)
{ {
insideArgumentList=FALSE; insideArgumentList=FALSE;
...@@ -2144,6 +2165,9 @@ VAR [vV][aA][rR] ...@@ -2144,6 +2165,9 @@ VAR [vV][aA][rR]
<FindMembers>{B}*"inline"{BN}+ { current->inLine = TRUE; <FindMembers>{B}*"inline"{BN}+ { current->inLine = TRUE;
lineCount(); lineCount();
} }
<FindMembers>{B}*"import"{BN}+ { // IDL import keyword
BEGIN( NextSemi );
}
<FindMembers>{B}*"typename"{BN}+ { lineCount(); } <FindMembers>{B}*"typename"{BN}+ { lineCount(); }
<FindMembers>{B}*"namespace"{BN}+ { <FindMembers>{B}*"namespace"{BN}+ {
isTypedef=FALSE; isTypedef=FALSE;
...@@ -2676,19 +2700,38 @@ VAR [vV][aA][rR] ...@@ -2676,19 +2700,38 @@ VAR [vV][aA][rR]
} }
} }
<FindMembers>"[" { current->args += yytext ; <FindMembers>"[" {
sharpCount=1; if (current->name.isEmpty()) // IDL function property
{
squareCount=1;
lastSquareContext = YY_START;
BEGIN(SkipSquare);
}
else
{
current->args += yytext ;
squareCount=1;
BEGIN( Array ) ; BEGIN( Array ) ;
} }
}
<Array>"]" { current->args += *yytext ; <Array>"]" { current->args += *yytext ;
if (--sharpCount<=0) if (--squareCount<=0)
BEGIN( FindMembers ) ; BEGIN( FindMembers ) ;
} }
<Array>"[" { current->args += *yytext ; <Array>"[" { current->args += *yytext ;
sharpCount++; squareCount++;
} }
<Array>. { current->args += *yytext ; } <Array>. { current->args += *yytext ; }
<SkipSquare>"[" { squareCount++; }
<SkipSquare>"]" {
if (--squareCount<=0)
BEGIN( lastSquareContext );
}
<SkipSquare>\" {
lastStringContext=YY_START;
BEGIN( SkipString );
}
<SkipSquare>[^\n\[\]\"]+
<FindMembers>"<" { addType( current ) ; <FindMembers>"<" { addType( current ) ;
current->type += yytext ; current->type += yytext ;
BEGIN( Sharp ) ; BEGIN( Sharp ) ;
...@@ -3343,6 +3386,7 @@ VAR [vV][aA][rR] ...@@ -3343,6 +3386,7 @@ VAR [vV][aA][rR]
<SkipInits>"{" { <SkipInits>"{" {
//addToBody(yytext); //addToBody(yytext);
lastCurlyContext = FindMembers; lastCurlyContext = FindMembers;
curlyCount=0;
BEGIN( SkipCurly ) ; BEGIN( SkipCurly ) ;
} }
<SkipCurly>"{" { <SkipCurly>"{" {
...@@ -3467,13 +3511,15 @@ VAR [vV][aA][rR] ...@@ -3467,13 +3511,15 @@ VAR [vV][aA][rR]
sharpCount = 0; sharpCount = 0;
current->name = yytext ; current->name = yytext ;
lineCount(); lineCount();
lastClassTemplSpecContext = ClassVar;
BEGIN( ClassTemplSpec ); BEGIN( ClassTemplSpec );
} }
<ClassTemplSpec>">"({BN}*{SCOPENAME})? { <ClassTemplSpec>">"({BN}*{SCOPENAME})? {
current->name += yytext; current->name += yytext;
if (--sharpCount<=0) if (--sharpCount<=0)
{ {
BEGIN( ClassVar ); current->name = removeRedundantWhiteSpace(current->name);
BEGIN( lastClassTemplSpecContext );
} }
} }
<ClassTemplSpec>"<" { <ClassTemplSpec>"<" {
...@@ -3849,6 +3895,16 @@ VAR [vV][aA][rR] ...@@ -3849,6 +3895,16 @@ VAR [vV][aA][rR]
"\\namespace at line %d of %s.\n",yyLineNr,yyFileName); "\\namespace at line %d of %s.\n",yyLineNr,yyFileName);
yyLineNr++; yyLineNr++;
} }
<ClassDocArg1>{SCOPENAME}/"<" {
current->name = yytext;
// prepend outer scope name
if (current_root->section & Entry::SCOPE_MASK)
{
current->name.prepend(current_root->name+"::");
}
lastClassTemplSpecContext = ClassDocArg2;
BEGIN( ClassTemplSpec );
}
<ClassDocArg1>{SCOPENAME} { <ClassDocArg1>{SCOPENAME} {
current->name = yytext; current->name = yytext;
// prepend outer scope name // prepend outer scope name
...@@ -4011,7 +4067,7 @@ VAR [vV][aA][rR] ...@@ -4011,7 +4067,7 @@ VAR [vV][aA][rR]
current->doc+=yytext; current->doc+=yytext;
BEGIN(lastVerbState); BEGIN(lastVerbState);
} }
<SkipVerbatim>[^ \t\/\\\n]* { <SkipVerbatim>[^ \t\/\@\\\n]* {
current->doc+=yytext; current->doc+=yytext;
} }
<SkipVerbatim>^"//" { <SkipVerbatim>^"//" {
...@@ -4360,7 +4416,7 @@ VAR [vV][aA][rR] ...@@ -4360,7 +4416,7 @@ VAR [vV][aA][rR]
unput('/');unput('*'); unput('/');unput('*');
BEGIN( tmpDocType ); BEGIN( tmpDocType );
} }
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-" { <Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"{B}+ {
current->doc += yytext; current->doc += yytext;
} }
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/] <Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/]
......
...@@ -1130,6 +1130,14 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl) ...@@ -1130,6 +1130,14 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl)
srcA->type = dstA->type.left(i2+2)+srcA->type; srcA->type = dstA->type.left(i2+2)+srcA->type;
srcA->name = dstA->name.copy(); srcA->name = dstA->name.copy();
} }
if (srcA->docs.isEmpty() && !dstA->docs.isEmpty())
{
srcA->docs = dstA->docs.copy();
}
else if (dstA->docs.isEmpty() && !srcA->docs.isEmpty())
{
dstA->docs = srcA->docs.copy();
}
} }
//printf("result mergeArguments `%s', `%s'\n", //printf("result mergeArguments `%s', `%s'\n",
// argListToString(srcAl).data(),argListToString(dstAl).data()); // argListToString(srcAl).data(),argListToString(dstAl).data());
...@@ -1694,20 +1702,21 @@ bool generateLink(OutputList &ol,const char *clName, ...@@ -1694,20 +1702,21 @@ bool generateLink(OutputList &ol,const char *clName,
//FileInfo *fi=0; //FileInfo *fi=0;
FileDef *fd; FileDef *fd;
GroupDef *gd; GroupDef *gd;
PageInfo *pi;
bool ambig; bool ambig;
if (linkRef.isEmpty()) // no reference name! if (linkRef.isEmpty()) // no reference name!
{ {
ol.docify(lt); ol.docify(lt);
return FALSE; return FALSE;
} }
else if ((pageDict[linkRef])) // link to a page else if ((pi=pageDict[linkRef])) // link to a page
{ {
ol.writeObjectLink(0,linkRef,0,lt); ol.writeObjectLink(0,pi->name,0,lt);
return TRUE; return TRUE;
} }
else if ((exampleDict[linkRef])) // link to an example else if ((pi=exampleDict[linkRef])) // link to an example
{ {
ol.writeObjectLink(0,linkRef+"-example",0,lt); ol.writeObjectLink(0,convertSlashes(pi->name,TRUE)+"-example",0,lt);
return TRUE; return TRUE;
} }
else if ((gd=groupDict[linkRef])) // link to a group else if ((gd=groupDict[linkRef])) // link to a group
...@@ -1915,3 +1924,24 @@ QCString substituteKeywords(const QCString &s,const char *title) ...@@ -1915,3 +1924,24 @@ QCString substituteKeywords(const QCString &s,const char *title)
//---------------------------------------------------------------------- //----------------------------------------------------------------------
/*! Returns the character index within \a name of the first prefix
* in Config::ignorePrefixList that matches \a name at the left hand side,
* or zero if no match was found
*/
int getPrefixIndex(const QCString &name)
{
char *s = Config::ignorePrefixList.first();
while (s)
{
const char *ps=s;
const char *pd=name.data();
int i=0;
while (*ps!=0 && *pd!=0 && *ps==*pd) ps++,pd++,i++;
if (*ps==0 && *pd!=0)
{
return i;
}
s = Config::ignorePrefixList.next();
}
return 0;
}
...@@ -78,7 +78,6 @@ bool rightScopeMatch(const QCString &scope, const QCString &name); ...@@ -78,7 +78,6 @@ bool rightScopeMatch(const QCString &scope, const QCString &name);
bool leftScopeMatch(const QCString &scope, const QCString &name); bool leftScopeMatch(const QCString &scope, const QCString &name);
void writePageRef(OutputList &ol,const char *cn,const char *mn); void writePageRef(OutputList &ol,const char *cn,const char *mn);
QCString substituteKeywords(const QCString &s,const char *title); QCString substituteKeywords(const QCString &s,const char *title);
//void pushGeneratorState(OutputList &ol); int getPrefixIndex(const QCString &name);
//void popGeneratorState(OutputList &ol);
#endif #endif
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