Commit a81ce474 authored by Dimitri van Heesch's avatar Dimitri van Heesch

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