Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
doxverilog
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
doxverilog
Commits
75cfc919
Commit
75cfc919
authored
Feb 27, 2000
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release 2000-02-27
parent
b76d4ee1
Changes
38
Hide whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
9686 additions
and
9301 deletions
+9686
-9301
INSTALL
INSTALL
+5
-5
README
README
+2
-2
VERSION
VERSION
+1
-1
config.doc
doc/config.doc
+19
-1
starting.doc
doc/starting.doc
+3
-4
classdef.cpp
src/classdef.cpp
+51
-12
classdef.h
src/classdef.h
+2
-1
config.cpp
src/config.cpp
+707
-682
config.h
src/config.h
+1
-0
config.l
src/config.l
+17
-5
debug.cpp
src/debug.cpp
+2
-0
debug.h
src/debug.h
+2
-1
diagram.cpp
src/diagram.cpp
+1
-1
dot.cpp
src/dot.cpp
+55
-24
doxygen.cpp
src/doxygen.cpp
+172
-57
entry.h
src/entry.h
+37
-30
filedef.cpp
src/filedef.cpp
+1
-0
groupdef.cpp
src/groupdef.cpp
+1
-0
htmlgen.cpp
src/htmlgen.cpp
+6
-1
index.cpp
src/index.cpp
+2
-2
memberdef.cpp
src/memberdef.cpp
+1
-1
memberdef.h
src/memberdef.h
+1
-0
memberlist.cpp
src/memberlist.cpp
+8
-4
namespacedef.cpp
src/namespacedef.cpp
+1
-0
scanner.cpp
src/scanner.cpp
+8521
-8460
scanner.l
src/scanner.l
+26
-5
translator.h
src/translator.h
+2
-0
translator_cz.h
src/translator_cz.h
+2
-0
translator_de.h
src/translator_de.h
+1
-0
translator_es.h
src/translator_es.h
+1
-0
translator_fi.h
src/translator_fi.h
+1
-0
translator_fr.h
src/translator_fr.h
+2
-0
translator_it.h
src/translator_it.h
+2
-0
translator_nl.h
src/translator_nl.h
+2
-0
translator_se.h
src/translator_se.h
+2
-0
util.cpp
src/util.cpp
+24
-1
util.h
src/util.h
+1
-0
tmake.conf
tmake/lib/hpux-cc/tmake.conf
+1
-1
No files found.
INSTALL
View file @
75cfc919
DOXYGEN Version 1.1.0-2000022
0
DOXYGEN Version 1.1.0-2000022
7
CONTENTS
--------
...
...
@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
gunzip doxygen-1.1.0-2000022
0
.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.0-2000022
0
.src.tar # unpack it
gunzip doxygen-1.1.0-2000022
7
.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.0-2000022
7
.src.tar # unpack it
2. Run the configure script:
...
...
@@ -71,7 +71,7 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
INSTALLATION INSTRUCTIONS FOR WINDOWS:
--------------------------------------
Currently, only Microsoft Visual C++ (version 5.0) is supported.
Currently, only Microsoft Visual C++ (version 5.0
or higher
) is supported.
(For other compilers you may need to edit the perl script in wintools/make.pl
a bit). Let me know what you had to change if you got Doxygen working with
another windows compiler.
...
...
@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (2
0
February 2000)
Dimitri van Heesch (2
7
February 2000)
README
View file @
75cfc919
DOXYGEN Version 1.1.0-2000022
0
DOXYGEN Version 1.1.0-2000022
7
Please read INSTALL for compilation instructions.
...
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (2
0
February 2000)
Dimitri van Heesch (2
7
February 2000)
VERSION
View file @
75cfc919
1.1.0-2000022
0
1.1.0-2000022
7
doc/config.doc
View file @
75cfc919
...
...
@@ -51,6 +51,7 @@ followed by the descriptions of the tags grouped by category.
\
begin
{
CompactList
}
\
endlatexonly
<
li
>
\
refitem
cfg_allexternals
ALLEXTERNALS
<
li
>
\
refitem
cfg_always_detailed_sec
ALWAYS_DETAILED_SEC
<
li
>
\
refitem
cfg_alphabetical_index
ALPHABETICAL_INDEX
<
li
>
\
refitem
cfg_bin_abspath
BIN_ABSPATH
<
li
>
\
refitem
cfg_brief_member_desc
BRIEF_MEMBER_DESC
...
...
@@ -121,6 +122,7 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_search_includes
SEARCH_INCLUDES
<
li
>
\
refitem
cfg_searchengine
SEARCHENGINE
<
li
>
\
refitem
cfg_show_include_files
SHOW_INCLUDE_FILES
<
li
>
\
refitem
cfg_sort_member_docs
SORT_MEMBER_DOCS
<
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
...
...
@@ -260,6 +262,12 @@ followed by the descriptions of the tags grouped by category.
If
both
\
c
HIDE_UNDOC_MEMBERS
and
\
c
BRIEF_MEMBER_DESC
are
set
to
\
c
NO
,
the
brief
descriptions
will
be
completely
suppressed
.
\
anchor
cfg_always_detailed_sec
<
dt
>\
c
ALWAYS_DETAILED_SEC
<
dd
>
If
the
\
c
ALWAYS_DETAILED_SEC
and
\
c
REPEAT_BRIEF
tags
are
both
set
to
\
c
YES
then
Doxygen
will
generate
a
detailed
section
even
if
there
is
only
a
brief
description
.
\
anchor
cfg_full_path_names
<
dt
>\
c
FULL_PATH_NAMES
<
dd
>
\
addindex
FULL_PATH_NAMES
...
...
@@ -342,12 +350,22 @@ followed by the descriptions of the tags grouped by category.
\
anchor
cfg_inline_info
<
dt
>\
c
INLINE_INFO
<
dd
>
\
addindex
INLINE_INFO
If
the
\
c
INLINE_INFO
tag
is
set
to
\
c
YES
(
the
default
)
then
a
tag
[
inline
]
is
inserted
in
the
documentation
for
inline
members
.
\
anchor
cfg_sort_member_docs
<
dt
>\
c
SORT_MEMBER_DOCS
<
dd
>
\
addindex
SORT_MEMBER_DOCS
If
the
SORT_MEMBER_DOCS
tag
is
set
to
YES
(
the
default
)
then
doxygen
will
sort
the
(
detailed
)
documentation
of
file
and
class
members
alphabetically
by
member
name
.
If
set
to
NO
the
members
will
appear
in
declaration
order
.
\
anchor
cfg_tab_size
<
dt
>\
c
TAB_SIZE
<
dd
>
the
TAB_SIZE
tag
can
be
used
to
set
the
number
of
spaces
in
a
tab
.
\
addindex
TAB_SIZE
the
\
c
TAB_SIZE
tag
can
be
used
to
set
the
number
of
spaces
in
a
tab
.
Doxygen
uses
this
value
to
replace
tabs
by
spaces
in
code
fragments
.
</
dl
>
...
...
doc/starting.doc
View file @
75cfc919
...
...
@@ -495,12 +495,11 @@ Go to the <a href="diagrams.html">next</a> section or return to the
Doxygen uses the "dot" tool to generate the following graphs:
<ul>
<li>if \ref cfg_graphical_hierarchy "GRAPHICAL_HIERARCHY" is set to \c YES,
a graphical representation of the class
diagram
will be drawn, along
a graphical representation of the class
hierarchy
will be drawn, along
with the textual one. Currently this feature is supported for HTML only.\n
<b>Warning:</b> When you have a very large class hierarchy where many
classes derive from a common
base class, the resulting image may become too big to handle for some
browsers.
classes derive from a common base class, the resulting image may become
too big to handle for some browsers.
<li>if \ref cfg_include_graph "INCLUDE_GRAPH" is set to \c YES, an include
dependency graph is generated for each documented file that includes at
least one other file. This feature is currently supported for HTML and RTF
...
...
src/classdef.cpp
View file @
75cfc919
...
...
@@ -121,12 +121,18 @@ void ClassDef::insertMember(const MemberDef *md)
if
(
md
->
isRelated
()
&&
(
Config
::
extractPrivateFlag
||
md
->
protection
()
!=
Private
))
{
related
.
append
(
md
);
relatedMembers
.
inSort
(
md
);
if
(
Config
::
sortMembersFlag
)
relatedMembers
.
inSort
(
md
);
else
relatedMembers
.
append
(
md
);
}
else
if
(
md
->
isFriend
())
{
friends
.
append
(
md
);
relatedMembers
.
inSort
(
md
);
if
(
Config
::
sortMembersFlag
)
relatedMembers
.
inSort
(
md
);
else
relatedMembers
.
append
(
md
);
}
else
{
...
...
@@ -134,22 +140,34 @@ void ClassDef::insertMember(const MemberDef *md)
{
case
MemberDef
:
:
Signal
:
signals
.
append
(
md
);
functionMembers
.
inSort
(
md
);
if
(
Config
::
sortMembersFlag
)
functionMembers
.
inSort
(
md
);
else
functionMembers
.
append
(
md
);
break
;
case
MemberDef
:
:
Slot
:
switch
(
md
->
protection
())
{
case
Protected
:
proSlots
.
append
(
md
);
functionMembers
.
inSort
(
md
);
if
(
Config
::
sortMembersFlag
)
functionMembers
.
inSort
(
md
);
else
functionMembers
.
append
(
md
);
break
;
case
Public
:
pubSlots
.
append
(
md
);
functionMembers
.
inSort
(
md
);
if
(
Config
::
sortMembersFlag
)
functionMembers
.
inSort
(
md
);
else
functionMembers
.
append
(
md
);
break
;
case
Private
:
priSlots
.
append
(
md
);
functionMembers
.
inSort
(
md
);
if
(
Config
::
sortMembersFlag
)
functionMembers
.
inSort
(
md
);
else
functionMembers
.
append
(
md
);
break
;
}
break
;
...
...
@@ -183,22 +201,43 @@ void ClassDef::insertMember(const MemberDef *md)
switch
(
md
->
memberType
())
{
case
MemberDef
:
:
Typedef
:
typedefMembers
.
inSort
(
md
);
if
(
Config
::
sortMembersFlag
)
typedefMembers
.
inSort
(
md
);
else
typedefMembers
.
append
(
md
);
break
;
case
MemberDef
:
:
Enumeration
:
enumMembers
.
inSort
(
md
);
if
(
Config
::
sortMembersFlag
)
enumMembers
.
inSort
(
md
);
else
enumMembers
.
append
(
md
);
break
;
case
MemberDef
:
:
EnumValue
:
enumValMembers
.
inSort
(
md
);
if
(
Config
::
sortMembersFlag
)
enumValMembers
.
inSort
(
md
);
else
enumValMembers
.
append
(
md
);
break
;
case
MemberDef
:
:
Function
:
if
(
md
->
name
()
==
name
()
||
md
->
name
().
find
(
'~'
)
!=-
1
)
if
(
md
->
name
()
==
name
()
||
// constructor
(
md
->
name
().
find
(
'~'
)
!=-
1
&&
// hack to detect destructor
md
->
name
().
find
(
"operator"
)
==-
1
)
)
constructors
.
append
(
md
);
else
functionMembers
.
inSort
(
md
);
{
if
(
Config
::
sortMembersFlag
)
functionMembers
.
inSort
(
md
);
else
functionMembers
.
append
(
md
);
}
break
;
case
MemberDef
:
:
Variable
:
variableMembers
.
inSort
(
md
);
if
(
Config
::
sortMembersFlag
)
variableMembers
.
inSort
(
md
);
else
variableMembers
.
append
(
md
);
break
;
default
:
printf
(
"Unexpected member type %d found!
\n
"
,
md
->
memberType
());
...
...
src/classdef.h
View file @
75cfc919
...
...
@@ -47,7 +47,8 @@ class ClassDef : public Definition
enum
CompoundType
{
Class
=
Entry
::
CLASS_SEC
,
Struct
=
Entry
::
STRUCT_SEC
,
Union
=
Entry
::
UNION_SEC
,
Interface
=
Entry
::
INTERFACE_SEC
Interface
=
Entry
::
INTERFACE_SEC
,
Exception
=
Entry
::
EXCEPTION_SEC
};
ClassDef
(
const
char
*
name
,
CompoundType
ct
,
const
char
*
ref
=
0
,
const
char
*
fName
=
0
);
~
ClassDef
();
...
...
src/config.cpp
View file @
75cfc919
...
...
@@ -302,128 +302,129 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
*yy_cp = '\0'; \
yy_c_buf_p = yy_cp;
#define YY_NUM_RULES 10
4
#define YY_END_OF_BUFFER 10
5
static
yyconst
short
int
yy_accept
[
10
73
]
=
#define YY_NUM_RULES 10
5
#define YY_END_OF_BUFFER 10
6
static
yyconst
short
int
yy_accept
[
10
89
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
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
0
,
0
,
0
,
0
,
0
,
0
,
106
,
103
,
104
,
103
,
103
,
2
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
100
,
103
,
91
,
88
,
92
,
2
,
103
,
91
,
91
,
98
,
99
,
90
,
89
,
99
,
99
,
97
,
95
,
95
,
97
,
97
,
97
,
103
,
0
,
102
,
0
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
101
,
91
,
93
,
91
,
98
,
99
,
90
,
99
,
96
,
94
,
0
,
0
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
91
,
99
,
1
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
1
,
1
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
31
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
42
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
14
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
15
,
87
,
87
,
0
,
32
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
13
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
77
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
24
,
0
,
37
,
87
,
0
,
43
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
18
,
87
,
87
,
87
,
0
,
44
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
30
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
7
,
87
,
87
,
0
,
21
,
87
,
0
,
39
,
87
,
87
,
87
,
87
,
0
,
9
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
16
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
82
,
87
,
0
,
17
,
87
,
87
,
87
,
87
,
87
,
0
,
47
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
11
,
0
,
10
,
0
,
6
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
75
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
45
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
29
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
52
,
0
,
81
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
28
,
0
,
74
,
87
,
0
,
20
,
87
,
87
,
0
,
12
,
0
,
8
,
87
,
87
,
87
,
87
,
87
,
0
,
3
,
87
,
0
,
64
,
87
,
0
,
46
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
63
,
0
,
49
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
38
,
0
,
33
,
87
,
0
,
51
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
27
,
87
,
0
,
79
,
87
,
0
,
65
,
87
,
87
,
0
,
23
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
62
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
40
,
87
,
87
,
0
,
50
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
36
,
0
,
76
,
87
,
87
,
87
,
87
,
0
,
73
,
0
,
4
,
0
,
83
,
87
,
87
,
87
,
0
,
69
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
48
,
0
,
61
,
87
,
87
,
87
,
87
,
87
,
87
,
0
,
25
,
87
,
0
,
54
,
87
,
0
,
22
,
0
,
55
,
87
,
87
,
87
,
0
,
41
,
87
,
87
,
87
,
87
,
0
,
66
,
87
,
87
,
87
,
0
,
35
,
0
,
34
,
87
,
87
,
0
,
19
,
87
,
87
,
87
,
87
,
87
,
0
,
5
,
87
,
0
,
86
,
87
,
0
,
67
,
87
,
87
,
0
,
56
,
87
,
87
,
87
,
87
,
0
,
71
,
87
,
87
,
87
,
87
,
0
,
70
,
87
,
87
,
0
,
72
,
87
,
87
,
87
,
87
,
0
,
60
,
87
,
0
,
59
,
0
,
58
,
0
,
68
,
0
,
84
,
87
,
0
,
57
,
0
,
78
,
0
,
26
,
87
,
0
,
80
,
0
,
85
,
0
,
53
,
0
}
;
static
yyconst
int
yy_ec
[
256
]
=
...
...
@@ -467,574 +468,582 @@ static yyconst int yy_meta[45] =
6
,
6
,
6
,
1
}
;
static
yyconst
short
int
yy_base
[
1
084
]
=
static
yyconst
short
int
yy_base
[
1
100
]
=
{
0
,
0
,
1
,
45
,
0
,
87
,
88
,
131
,
174
,
218
,
262
,
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
305
,
348
,
100
,
101
,
392
,
436
,
1413
,
1414
,
1414
,
3
,
1369
,
1414
,
0
,
1387
,
0
,
0
,
1
,
0
,
2
,
1
,
79
,
76
,
1397
,
1396
,
1395
,
1374
,
80
,
1373
,
0
,
92
,
1392
,
1387
,
1390
,
1414
,
6
,
0
,
1414
,
1414
,
0
,
1394
,
12
,
1358
,
0
,
0
,
1398
,
1414
,
39
,
1356
,
1414
,
1414
,
1414
,
1390
,
111
,
1354
,
1387
,
118
,
1414
,
1385
,
0
,
118
,
1368
,
1372
,
1361
,
1370
,
1377
,
9
,
1358
,
1373
,
1374
,
115
,
1362
,
1361
,
1358
,
1370
,
1348
,
1365
,
1355
,
1353
,
1365
,
134
,
1343
,
1344
,
103
,
1343
,
1346
,
1355
,
1342
,
124
,
1350
,
10
,
1352
,
1356
,
1341
,
122
,
1337
,
80
,
1336
,
1335
,
157
,
1414
,
0
,
1414
,
1354
,
0
,
0
,
1361
,
1352
,
1414
,
1414
,
1352
,
1318
,
1342
,
1338
,
1344
,
1316
,
1338
,
1337
,
1313
,
1321
,
126
,
1323
,
1337
,
1309
,
1334
,
1322
,
1322
,
1332
,
133
,
1327
,
1319
,
1325
,
1313
,
1323
,
1322
,
1314
,
1310
,
1317
,
1311
,
1317
,
1312
,
1299
,
1314
,
1317
,
1312
,
1298
,
1287
,
1298
,
1308
,
1284
,
1299
,
1306
,
1299
,
1303
,
1286
,
1301
,
1277
,
1286
,
1280
,
1282
,
1283
,
1291
,
1271
,
1292
,
1295
,
1282
,
1265
,
1264
,
1414
,
1269
,
1291
,
1266
,
1289
,
1283
,
1260
,
138
,
1268
,
1285
,
1257
,
1283
,
1281
,
135
,
1270
,
1265
,
1259
,
1265
,
1277
,
1273
,
1248
,
1247
,
1256
,
1265
,
1244
,
1243
,
1242
,
1251
,
1263
,
1246
,
1248
,
1251
,
1244
,
1245
,
1258
,
1237
,
1245
,
155
,
1238
,
1240
,
1249
,
1228
,
1250
,
1249
,
1233
,
1234
,
1250
,
147
,
1247
,
1221
,
1220
,
1244
,
1230
,
1226
,
1235
,
1242
,
1233
,
0
,
0
,
1221
,
1238
,
1220
,
1236
,
1209
,
1217
,
1234
,
1216
,
1205
,
1230
,
1222
,
1227
,
1217
,
1226
,
1209
,
1221
,
1213
,
1220
,
1219
,
83
,
1207
,
1205
,
1204
,
1218
,
1209
,
1213
,
1195
,
170
,
1210
,
1186
,
1209
,
1203
,
1206
,
191
,
1196
,
1194
,
1180
,
1179
,
1182
,
1184
,
1184
,
1175
,
1177
,
1185
,
1194
,
1196
,
0
,
1179
,
1177
,
1171
,
1174
,
1186
,
1184
,
1179
,
1186
,
1162
,
1180
,
1176
,
1167
,
1172
,
1180
,
1179
,
1155
,
1163
,
1168
,
1175
,
1166
,
1166
,
1173
,
1161
,
1161
,
1154
,
1168
,
1153
,
1159
,
1142
,
1164
,
1163
,
1139
,
1146
,
1149
,
1161
,
1162
,
1161
,
1141
,
1157
,
1144
,
1144
,
1145
,
1141
,
1150
,
1133
,
1133
,
1124
,
1135
,
1145
,
1129
,
1120
,
182
,
1414
,
1141
,
1145
,
1142
,
165
,
1139
,
1123
,
1122
,
1113
,
1120
,
1123
,
1137
,
1128
,
1116
,
184
,
1414
,
1126
,
1106
,
1117
,
1112
,
170
,
1117
,
1125
,
1101
,
180
,
1102
,
1122
,
1117
,
1118
,
1106
,
1103
,
1118
,
1105
,
1115
,
1105
,
1113
,
187
,
1108
,
1098
,
1087
,
1086
,
1085
,
1096
,
200
,
1095
,
1082
,
202
,
1094
,
1080
,
1106
,
1078
,
1085
,
1084
,
1098
,
1101
,
1081
,
1096
,
1090
,
1083
,
1096
,
1076
,
1070
,
1078
,
1092
,
1064
,
1063
,
184
,
1081
,
1077
,
1060
,
1082
,
1065
,
1061
,
1079
,
1067
,
13
,
1057
,
1076
,
1060
,
1065
,
1050
,
1055
,
1074
,
1070
,
1058
,
1059
,
1063
,
1068
,
1057
,
1067
,
1053
,
1049
,
1061
,
1046
,
1051
,
1044
,
1048
,
1052
,
1055
,
1058
,
1045
,
1038
,
204
,
205
,
1414
,
1055
,
1054
,
1053
,
208
,
1044
,
1051
,
231
,
1414
,
1033
,
1034
,
232
,
1414
,
1033
,
1034
,
222
,
1044
,
1030
,
1025
,
1036
,
1015
,
1030
,
234
,
1026
,
1033
,
1019
,
1034
,
1021
,
1024
,
1017
,
1014
,
137
,
1029
,
1018
,
1016
,
1018
,
1001
,
1027
,
1026
,
1006
,
1009
,
1010
,
1002
,
1013
,
1020
,
1004
,
1001
,
1010
,
1012
,
1002
,
1010
,
996
,
995
,
991
,
1004
,
996
,
997
,
1006
,
989
,
1002
,
990
,
235
,
237
,
976
,
239
,
1002
,
999
,
981
,
980
,
997
,
993
,
243
,
1414
,
990
,
976
,
983
,
993
,
973
,
978
,
971
,
985
,
988
,
987
,
975
,
974
,
967
,
973
,
982
,
977
,
953
,
255
,
952
,
274
,
1414
,
976
,
964
,
972
,
971
,
954
,
969
,
968
,
220
,
954
,
970
,
955
,
963
,
947
,
947
,
962
,
944
,
960
,
947
,
961
,
942
,
940
,
941
,
944
,
952
,
944
,
276
,
951
,
178
,
279
,
945
,
941
,
932
,
942
,
947
,
928
,
943
,
932
,
941
,
932
,
280
,
1414
,
281
,
1414
,
936
,
282
,
1414
,
931
,
941
,
940
,
932
,
934
,
910
,
919
,
927
,
919
,
914
,
927
,
928
,
923
,
914
,
909
,
908
,
902
,
914
,
916
,
923
,
903
,
904
,
907
,
900
,
918
,
917
,
897
,
915
,
907
,
886
,
885
,
894
,
893
,
890
,
890
,
896
,
287
,
896
,
894
,
831
,
847
,
834
,
87
,
108
,
142
,
168
,
191
,
176
,
222
,
232
,
288
,
237
,
237
,
293
,
238
,
301
,
1414
,
302
,
235
,
236
,
313
,
1414
,
260
,
275
,
314
,
271
,
274
,
301
,
288
,
284
,
280
,
281
,
305
,
292
,
300
,
306
,
326
,
299
,
304
,
318
,
305
,
313
,
317
,
333
,
319
,
335
,
309
,
326
,
308
,
301
,
354
,
308
,
324
,
328
,
331
,
346
,
335
,
329
,
336
,
345
,
345
,
344
,
352
,
343
,
367
,
368
,
369
,
352
,
352
,
372
,
1414
,
345
,
348
,
358
,
351
,
400
,
368
,
355
,
371
,
361
,
359
,
358
,
360
,
376
,
403
,
1414
,
391
,
374
,
406
,
1414
,
383
,
408
,
1414
,
394
,
399
,
396
,
390
,
415
,
1414
,
402
,
388
,
405
,
383
,
393
,
410
,
398
,
415
,
444
,
389
,
406
,
445
,
1414
,
392
,
420
,
409
,
409
,
436
,
414
,
449
,
1414
,
416
,
451
,
1414
,
427
,
453
,
441
,
442
,
432
,
460
,
1414
,
451
,
449
,
436
,
437
,
444
,
446
,
454
,
471
,
472
,
458
,
460
,
454
,
462
,
464
,
480
,
1414
,
483
,
1414
,
484
,
1414
,
470
,
452
,
463
,
470
,
489
,
491
,
492
,
1414
,
480
,
496
,
468
,
486
,
500
,
503
,
485
,
481
,
477
,
497
,
488
,
511
,
497
,
514
,
494
,
516
,
503
,
480
,
505
,
505
,
497
,
512
,
511
,
527
,
1414
,
509
,
514
,
516
,
508
,
503
,
495
,
496
,
535
,
536
,
525
,
539
,
1414
,
512
,
513
,
514
,
513
,
515
,
547
,
548
,
535
,
551
,
518
,
553
,
1414
,
554
,
1414
,
536
,
528
,
548
,
537
,
539
,
550
,
566
,
538
,
568
,
570
,
1414
,
571
,
1414
,
543
,
573
,
1414
,
574
,
547
,
577
,
1414
,
579
,
1414
,
557
,
585
,
561
,
571
,
561
,
591
,
1414
,
564
,
593
,
1414
,
565
,
596
,
1414
,
582
,
582
,
574
,
572
,
579
,
574
,
590
,
583
,
594
,
594
,
595
,
611
,
595
,
594
,
614
,
1414
,
615
,
1414
,
601
,
593
,
594
,
604
,
605
,
622
,
623
,
1414
,
626
,
1414
,
598
,
628
,
1414
,
614
,
630
,
609
,
623
,
606
,
625
,
627
,
611
,
642
,
1414
,
643
,
644
,
1414
,
645
,
646
,
1414
,
628
,
624
,
649
,
1414
,
622
,
636
,
657
,
658
,
660
,
632
,
643
,
650
,
664
,
642
,
648
,
641
,
657
,
634
,
644
,
646
,
676
,
1414
,
649
,
654
,
650
,
651
,
652
,
668
,
683
,
684
,
1414
,
685
,
665
,
688
,
1414
,
674
,
662
,
662
,
677
,
681
,
697
,
699
,
1414
,
700
,
1414
,
686
,
702
,
668
,
704
,
705
,
1414
,
706
,
1414
,
708
,
1414
,
711
,
691
,
688
,
719
,
1414
,
705
,
722
,
694
,
709
,
696
,
713
,
727
,
717
,
716
,
702
,
733
,
734
,
720
,
736
,
1414
,
738
,
1414
,
713
,
740
,
728
,
727
,
717
,
719
,
749
,
1414
,
735
,
752
,
1414
,
753
,
754
,
1414
,
755
,
1414
,
741
,
757
,
734
,
760
,
1414
,
761
,
732
,
753
,
769
,
772
,
1414
,
747
,
759
,
756
,
776
,
1414
,
777
,
1414
,
762
,
780
,
781
,
1414
,
765
,
755
,
756
,
759
,
789
,
792
,
1414
,
764
,
794
,
1414
,
765
,
796
,
1414
,
797
,
785
,
800
,
1414
,
783
,
769
,
781
,
808
,
809
,
1414
,
776
,
812
,
813
,
814
,
815
,
1414
,
816
,
788
,
820
,
1414
,
821
,
827
,
828
,
812
,
832
,
1414
,
833
,
834
,
1414
,
835
,
1414
,
836
,
1414
,
839
,
1414
,
840
,
841
,
1414
,
847
,
1414
,
848
,
1414
,
852
,
853
,
1414
,
854
,
1414
,
855
,
1414
,
1414
,
867
,
873
,
879
,
885
,
891
,
897
,
899
,
905
,
852
,
911
,
914
}
;
static
yyconst
short
int
yy_def
[
1
084
]
=
static
yyconst
short
int
yy_def
[
1
100
]
=
{
0
,
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
1089
,
1089
,
1088
,
3
,
1089
,
1089
,
1090
,
1090
,
1091
,
1091
,
1092
,
1092
,
1093
,
1093
,
1094
,
1094
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1096
,
1088
,
1088
,
1096
,
1088
,
1096
,
1096
,
1097
,
1098
,
1088
,
1088
,
1098
,
1098
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1099
,
1088
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1096
,
1088
,
1096
,
1097
,
1098
,
1088
,
1098
,
1088
,
1088
,
1099
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1096
,
1098
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1096
,
1098
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1095
,
1088
,
1088
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1088
,
1088
,
1088
,
1088
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1088
,
1088
,
1088
,
1088
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1088
,
1088
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1088
,
1088
,
1095
,
1095
,
1095
,
1095
,
1088
,
1088
,
1095
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1095
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1095
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
0
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
}
;
static
yyconst
short
int
yy_nxt
[
14
41
]
=
static
yyconst
short
int
yy_nxt
[
14
59
]
=
{
0
,
10
72
,
347
,
19
,
19
,
66
,
67
,
66
,
109
,
110
,
109
,
10
72
,
348
,
73
,
66
,
67
,
66
,
100
,
83
,
74
,
1072
,
71
,
77
,
81
,
75
,
164
,
79
,
76
,
78
,
4
78
,
72
,
84
,
101
,
130
,
131
,
82
,
80
,
4
79
,
165
,
20
,
20
,
10
88
,
350
,
19
,
19
,
66
,
67
,
66
,
109
,
110
,
109
,
10
88
,
351
,
73
,
66
,
67
,
66
,
100
,
83
,
74
,
1088
,
71
,
77
,
81
,
75
,
164
,
79
,
76
,
78
,
4
83
,
72
,
84
,
101
,
130
,
131
,
82
,
80
,
4
84
,
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
,
17
1
,
88
,
96
,
97
,
313
,
172
,
86
,
44
,
85
,
95
,
17
2
,
88
,
96
,
97
,
316
,
173
,
86
,
89
,
90
,
60
,
60
,
61
,
61
,
62
,
62
,
102
,
98
,
87
,
103
,
66
,
67
,
66
,
118
,
69
4
,
155
,
104
,
66
,
67
,
66
,
31
4
,
105
,
41
7
,
45
,
45
,
135
,
156
,
136
,
87
,
103
,
66
,
67
,
66
,
118
,
69
6
,
155
,
104
,
66
,
67
,
66
,
31
7
,
105
,
69
7
,
45
,
45
,
135
,
156
,
136
,
21
,
21
,
18
,
47
,
18
,
48
,
49
,
50
,
63
,
63
,
161
,
122
,
137
,
64
,
64
,
123
,
138
,
418
,
148
,
195
,
162
,
1
86
,
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
,
63
2
,
6
99
,
702
,
51
,
469
,
705
,
506
,
537
,
52
,
18
,
18
,
161
,
122
,
137
,
64
,
64
,
123
,
138
,
250
,
148
,
187
,
162
,
1
69
,
124
,
149
,
170
,
542
,
188
,
150
,
109
,
110
,
109
,
151
,
196
,
243
,
543
,
152
,
286
,
251
,
698
,
51
,
244
,
275
,
197
,
287
,
52
,
18
,
47
,
18
,
48
,
49
,
50
,
276
,
325
,
335
,
406
,
350
,
421
,
326
,
439
,
327
,
638
,
407
,
335
,
336
,
426
,
351
,
328
,
427
,
440
,
699
,
329
,
447
,
336
,
451
,
473
,
511
,
439
,
700
,
701
,
42
2
,
6
39
,
448
,
51
,
452
,
474
,
512
,
440
,
52
,
18
,
18
,
47
,
18
,
18
,
22
,
18
,
18
,
18
,
18
,
18
,
18
,
33
4
,
434
,
442
,
446
,
448
,
526
,
566
,
568
,
571
,
505
,
5
26
,
435
,
443
,
447
,
628
,
527
,
567
,
569
,
572
,
506
,
5
27
,
706
,
707
,
708
,
629
,
711
,
20
,
18
,
712
,
713
,
33
7
,
516
,
447
,
451
,
524
,
532
,
573
,
517
,
575
,
616
,
5
78
,
453
,
448
,
452
,
511
,
533
,
574
,
702
,
576
,
525
,
5
79
,
617
,
703
,
706
,
512
,
707
,
20
,
18
,
710
,
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
,
18
,
18
,
18
,
18
,
603
,
532
,
715
,
635
,
604
,
605
,
640
,
573
,
575
,
578
,
606
,
533
,
607
,
636
,
689
,
704
,
641
,
574
,
576
,
579
,
708
,
716
,
719
,
720
,
690
,
705
,
20
,
18
,
635
,
711
,
709
,
21
,
55
,
56
,
18
,
48
,
22
,
50
,
636
,
712
,
640
,
717
,
721
,
722
,
723
,
724
,
725
,
726
,
727
,
728
,
641
,
718
,
729
,
730
,
732
,
733
,
734
,
735
,
736
,
737
,
738
,
740
,
741
,
731
,
743
,
746
,
747
,
750
,
751
,
57
,
739
,
744
,
742
,
752
,
58
,
55
,
56
,
18
,
48
,
22
,
50
,
748
,
753
,
745
,
754
,
755
,
756
,
757
,
758
,
759
,
760
,
749
,
761
,
763
,
764
,
766
,
768
,
770
,
771
,
689
,
772
,
773
,
762
,
774
,
765
,
767
,
769
,
775
,
778
,
690
,
779
,
780
,
57
,
781
,
782
,
783
,
784
,
58
,
18
,
18
,
19
,
18
,
18
,
18
,
18
,
18
,
18
,
776
,
785
,
18
,
704
,
786
,
787
,
708
,
788
,
711
,
789
,
777
,
790
,
791
,
705
,
792
,
717
,
709
,
793
,
712
,
794
,
795
,
796
,
797
,
798
,
799
,
718
,
800
,
803
,
804
,
20
,
805
,
806
,
807
,
808
,
21
,
18
,
18
,
19
,
18
,
18
,
18
,
18
,
18
,
18
,
801
,
730
,
18
,
809
,
810
,
738
,
811
,
741
,
812
,
813
,
802
,
731
,
815
,
816
,
817
,
739
,
748
,
742
,
818
,
814
,
819
,
820
,
821
,
822
,
823
,
824
,
749
,
825
,
827
,
20
,
829
,
830
,
831
,
832
,
21
,
833
,
764
,
826
,
828
,
766
,
768
,
834
,
835
,
836
,
837
,
838
,
765
,
840
,
776
,
767
,
769
,
842
,
843
,
845
,
846
,
839
,
847
,
841
,
777
,
849
,
851
,
852
,
844
,
853
,
854
,
855
,
848
,
856
,
858
,
850
,
859
,
861
,
862
,
864
,
865
,
866
,
867
,
857
,
868
,
869
,
860
,
870
,
863
,
801
,
871
,
872
,
873
,
874
,
875
,
876
,
877
,
878
,
880
,
802
,
882
,
813
,
883
,
884
,
885
,
886
,
887
,
879
,
881
,
888
,
890
,
814
,
892
,
893
,
896
,
825
,
827
,
897
,
898
,
889
,
891
,
899
,
900
,
894
,
901
,
826
,
828
,
902
,
903
,
905
,
906
,
895
,
838
,
840
,
908
,
843
,
909
,
911
,
904
,
847
,
907
,
849
,
839
,
841
,
912
,
844
,
910
,
913
,
915
,
848
,
916
,
850
,
917
,
856
,
918
,
859
,
919
,
914
,
862
,
920
,
921
,
922
,
923
,
857
,
924
,
860
,
925
,
926
,
863
,
927
,
928
,
929
,
930
,
931
,
933
,
934
,
878
,
880
,
935
,
936
,
937
,
938
,
939
,
932
,
940
,
888
,
879
,
881
,
890
,
942
,
893
,
943
,
944
,
946
,
941
,
889
,
947
,
948
,
891
,
949
,
894
,
950
,
945
,
951
,
903
,
952
,
906
,
954
,
909
,
956
,
957
,
913
,
958
,
959
,
904
,
953
,
907
,
955
,
910
,
960
,
962
,
914
,
964
,
966
,
967
,
968
,
969
,
971
,
972
,
961
,
963
,
973
,
965
,
974
,
975
,
976
,
970
,
977
,
931
,
978
,
979
,
980
,
981
,
982
,
983
,
984
,
940
,
986
,
932
,
988
,
944
,
989
,
990
,
991
,
992
,
985
,
941
,
987
,
993
,
994
,
945
,
952
,
954
,
996
,
997
,
999
,
1000
,
960
,
962
,
995
,
964
,
953
,
955
,
1002
,
998
,
1004
,
1001
,
961
,
963
,
1005
,
965
,
969
,
1006
,
1003
,
1007
,
1009
,
1010
,
1011
,
1012
,
1013
,
1015
,
970
,
1016
,
1017
,
1008
,
1018
,
1020
,
1022
,
984
,
1014
,
986
,
1023
,
1024
,
1026
,
1027
,
1019
,
1021
,
1028
,
985
,
1029
,
987
,
994
,
1025
,
1030
,
997
,
1031
,
1000
,
1002
,
1033
,
1034
,
1036
,
995
,
1007
,
1037
,
998
,
1032
,
1001
,
1003
,
1039
,
1035
,
1040
,
1041
,
1008
,
1038
,
1013
,
1043
,
1044
,
1045
,
1018
,
1020
,
1046
,
1042
,
1047
,
1024
,
1014
,
1049
,
1050
,
1051
,
1019
,
1021
,
1052
,
1053
,
1048
,
1025
,
1031
,
1055
,
1034
,
1056
,
1037
,
1057
,
1059
,
1054
,
1041
,
1060
,
1032
,
1061
,
1035
,
1062
,
1038
,
1058
,
1063
,
1047
,
1042
,
1065
,
1066
,
1068
,
1070
,
1053
,
1072
,
1074
,
1064
,
1048
,
1057
,
1075
,
1067
,
1069
,
1071
,
1054
,
1073
,
1077
,
1079
,
1081
,
1058
,
1076
,
1063
,
1082
,
1066
,
1068
,
1070
,
1078
,
1080
,
1072
,
1084
,
1075
,
1064
,
1083
,
1067
,
1069
,
1071
,
1077
,
1079
,
1073
,
1085
,
1076
,
1086
,
1082
,
1084
,
1086
,
114
,
1078
,
1080
,
695
,
694
,
693
,
1087
,
1083
,
1085
,
1087
,
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
,
692
,
111
,
111
,
111
,
111
,
115
,
691
,
688
,
115
,
115
,
115
,
120
,
120
,
120
,
687
,
686
,
685
,
684
,
683
,
682
,
681
,
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
,
647
,
646
,
645
,
644
,
643
,
642
,
637
,
634
,
633
,
632
,
631
,
630
,
629
,
628
,
627
,
626
,
625
,
624
,
623
,
622
,
621
,
620
,
619
,
618
,
615
,
614
,
613
,
612
,
611
,
610
,
609
,
608
,
602
,
601
,
600
,
599
,
598
,
597
,
596
,
595
,
574
,
573
,
570
,
565
,
564
,
563
,
562
,
561
,
560
,
559
,
594
,
593
,
592
,
591
,
590
,
589
,
588
,
587
,
586
,
585
,
584
,
583
,
582
,
581
,
580
,
577
,
572
,
571
,
570
,
569
,
568
,
567
,
566
,
565
,
564
,
563
,
562
,
561
,
560
,
559
,
558
,
557
,
556
,
555
,
554
,
553
,
552
,
551
,
550
,
549
,
548
,
547
,
546
,
545
,
544
,
54
3
,
542
,
541
,
540
,
539
,
53
8
,
535
,
534
,
533
,
532
,
531
,
530
,
529
,
528
,
525
,
52
4
,
523
,
522
,
521
,
520
,
517
,
516
,
515
,
514
,
513
,
5
12
,
509
,
508
,
507
,
504
,
503
,
502
,
501
,
500
,
499
,
548
,
547
,
546
,
545
,
544
,
54
1
,
540
,
539
,
538
,
537
,
53
6
,
535
,
534
,
531
,
530
,
529
,
528
,
527
,
526
,
523
,
52
2
,
521
,
520
,
519
,
518
,
515
,
514
,
513
,
510
,
509
,
5
08
,
507
,
506
,
505
,
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
,
488
,
487
,
486
,
485
,
482
,
481
,
480
,
479
,
478
,
477
,
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
,
476
,
475
,
472
,
471
,
470
,
469
,
468
,
467
,
466
,
465
,
464
,
463
,
462
,
461
,
460
,
459
,
458
,
457
,
456
,
455
,
454
,
450
,
449
,
446
,
445
,
444
,
443
,
442
,
441
,
438
,
437
,
436
,
435
,
434
,
433
,
432
,
431
,
430
,
429
,
428
,
425
,
424
,
423
,
420
,
419
,
418
,
417
,
416
,
415
,
414
,
413
,
412
,
411
,
410
,
409
,
408
,
405
,
404
,
403
,
402
,
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
,
361
,
360
,
359
,
358
,
357
,
356
,
355
,
354
,
353
,
352
,
349
,
348
,
347
,
346
,
345
,
344
,
343
,
342
,
341
,
340
,
339
,
338
,
334
,
333
,
332
,
331
,
330
,
324
,
323
,
322
,
321
,
320
,
319
,
318
,
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
,
28
7
,
286
,
283
,
282
,
281
,
280
,
279
,
278
,
277
,
27
6
,
275
,
272
,
271
,
270
,
269
,
268
,
267
,
266
,
289
,
288
,
28
5
,
284
,
283
,
282
,
281
,
280
,
279
,
278
,
277
,
27
4
,
273
,
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
,
255
,
254
,
253
,
252
,
249
,
248
,
247
,
246
,
245
,
242
,
241
,
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
,
19
7
,
194
,
193
,
192
,
191
,
190
,
189
,
18
8
,
185
,
184
,
183
,
182
,
181
,
180
,
179
,
178
,
1
77
,
119
,
176
,
116
,
175
,
174
,
173
,
170
,
169
,
168
,
16
7
,
166
,
163
,
160
,
159
,
158
,
157
,
154
,
153
,
147
,
14
6
,
145
,
144
,
143
,
142
,
141
,
140
,
139
,
134
,
133
,
1
32
,
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
,
10
72
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
10
72
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
10
72
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
10
72
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
,
1072
201
,
200
,
199
,
198
,
19
5
,
194
,
193
,
192
,
191
,
190
,
189
,
18
6
,
185
,
184
,
183
,
182
,
181
,
180
,
179
,
178
,
1
19
,
177
,
116
,
176
,
175
,
174
,
171
,
168
,
167
,
166
,
16
3
,
160
,
159
,
158
,
157
,
154
,
153
,
147
,
146
,
145
,
14
4
,
143
,
142
,
141
,
140
,
139
,
134
,
133
,
132
,
129
,
1
28
,
127
,
126
,
125
,
121
,
119
,
68
,
112
,
117
,
116
,
113
,
112
,
108
,
107
,
106
,
99
,
94
,
93
,
92
,
91
,
70
,
68
,
1088
,
17
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
10
88
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
10
88
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
10
88
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
10
88
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
}
;
static
yyconst
short
int
yy_chk
[
14
41
]
=
static
yyconst
short
int
yy_chk
[
14
59
]
=
{
0
,
0
,
28
1
,
1
,
2
,
20
,
20
,
20
,
45
,
45
,
45
,
0
,
28
1
,
26
,
51
,
51
,
51
,
39
,
30
,
26
,
0
,
25
,
27
,
29
,
26
,
100
,
28
,
26
,
27
,
4
07
,
25
,
30
,
39
,
76
,
76
,
29
,
28
,
4
07
,
100
,
1
,
2
,
0
,
28
3
,
1
,
2
,
20
,
20
,
20
,
45
,
45
,
45
,
0
,
28
3
,
26
,
51
,
51
,
51
,
39
,
30
,
26
,
0
,
25
,
27
,
29
,
26
,
100
,
28
,
26
,
27
,
4
11
,
25
,
30
,
39
,
76
,
76
,
29
,
28
,
4
11
,
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
,
106
,
32
,
37
,
37
,
25
4
,
106
,
31
,
6
,
31
,
37
,
106
,
32
,
37
,
37
,
25
6
,
106
,
31
,
32
,
32
,
13
,
14
,
13
,
14
,
13
,
14
,
40
,
37
,
31
,
40
,
63
,
63
,
63
,
63
,
62
1
,
93
,
40
,
66
,
66
,
66
,
25
4
,
40
,
35
3
,
5
,
6
,
80
,
93
,
80
,
31
,
40
,
63
,
63
,
63
,
63
,
62
2
,
93
,
40
,
66
,
66
,
66
,
25
6
,
40
,
62
3
,
5
,
6
,
80
,
93
,
80
,
5
,
6
,
7
,
7
,
7
,
7
,
7
,
7
,
13
,
14
,
98
,
70
,
80
,
13
,
14
,
70
,
80
,
353
,
90
,
138
,
98
,
1
30
,
70
,
90
,
109
,
109
,
109
,
90
,
130
,
138
,
1
84
,
90
,
190
,
214
,
224
,
90
,
439
,
184
,
622
,
7
,
450
,
224
,
439
,
214
,
7
,
8
,
8
,
8
,
8
,
8
,
8
,
2
62
,
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
,
98
,
70
,
80
,
13
,
14
,
70
,
80
,
191
,
90
,
130
,
98
,
1
04
,
70
,
90
,
104
,
471
,
130
,
90
,
109
,
109
,
1
09
,
90
,
138
,
185
,
471
,
90
,
225
,
191
,
624
,
7
,
185
,
215
,
138
,
225
,
7
,
8
,
8
,
8
,
8
,
8
,
8
,
2
15
,
264
,
335
,
340
,
350
,
356
,
264
,
372
,
264
,
561
,
340
,
270
,
335
,
360
,
350
,
264
,
360
,
372
,
625
,
264
,
379
,
270
,
382
,
402
,
438
,
439
,
626
,
627
,
356
,
561
,
379
,
8
,
382
,
402
,
438
,
439
,
8
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
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
270
,
444
,
447
,
451
,
455
,
462
,
501
,
444
,
502
,
541
,
504
,
382
,
447
,
451
,
511
,
462
,
501
,
628
,
502
,
455
,
504
,
541
,
629
,
631
,
511
,
632
,
9
,
9
,
634
,
638
,
639
,
9
,
10
,
10
,
10
,
10
,
10
,
10
,
10
,
10
,
10
,
10
,
10
,
10
,
530
,
532
,
642
,
559
,
530
,
530
,
562
,
573
,
575
,
578
,
530
,
532
,
530
,
559
,
616
,
630
,
562
,
573
,
575
,
578
,
633
,
643
,
645
,
646
,
616
,
630
,
10
,
10
,
635
,
637
,
633
,
10
,
11
,
11
,
11
,
11
,
11
,
11
,
635
,
637
,
640
,
644
,
647
,
648
,
649
,
650
,
651
,
652
,
653
,
654
,
640
,
644
,
655
,
656
,
657
,
658
,
659
,
660
,
661
,
662
,
663
,
664
,
665
,
656
,
666
,
668
,
669
,
671
,
672
,
11
,
663
,
667
,
665
,
673
,
11
,
12
,
12
,
12
,
12
,
12
,
12
,
670
,
674
,
667
,
675
,
676
,
677
,
678
,
679
,
680
,
681
,
670
,
682
,
683
,
684
,
685
,
686
,
687
,
688
,
689
,
691
,
692
,
682
,
693
,
684
,
685
,
686
,
694
,
696
,
689
,
697
,
698
,
12
,
699
,
700
,
701
,
702
,
12
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
695
,
703
,
15
,
704
,
706
,
707
,
708
,
710
,
711
,
713
,
695
,
714
,
715
,
704
,
716
,
717
,
708
,
719
,
711
,
720
,
721
,
722
,
723
,
724
,
725
,
717
,
726
,
728
,
729
,
15
,
732
,
733
,
734
,
735
,
15
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
727
,
730
,
16
,
736
,
737
,
738
,
740
,
741
,
743
,
744
,
727
,
730
,
745
,
746
,
747
,
738
,
748
,
741
,
750
,
744
,
751
,
752
,
753
,
754
,
755
,
756
,
748
,
757
,
758
,
16
,
759
,
760
,
761
,
762
,
16
,
763
,
764
,
757
,
758
,
766
,
768
,
770
,
771
,
772
,
773
,
774
,
764
,
775
,
776
,
766
,
768
,
778
,
779
,
780
,
781
,
774
,
782
,
775
,
776
,
783
,
784
,
785
,
779
,
786
,
787
,
788
,
782
,
789
,
790
,
783
,
791
,
792
,
793
,
794
,
795
,
796
,
797
,
789
,
798
,
799
,
791
,
800
,
793
,
801
,
803
,
804
,
805
,
806
,
807
,
808
,
809
,
810
,
811
,
801
,
812
,
813
,
815
,
816
,
817
,
818
,
819
,
810
,
811
,
820
,
821
,
813
,
822
,
823
,
824
,
825
,
827
,
829
,
830
,
820
,
821
,
831
,
832
,
823
,
833
,
825
,
827
,
834
,
835
,
836
,
837
,
823
,
838
,
840
,
842
,
843
,
845
,
846
,
835
,
847
,
837
,
849
,
838
,
840
,
851
,
843
,
845
,
852
,
853
,
847
,
854
,
849
,
855
,
856
,
858
,
859
,
861
,
852
,
862
,
864
,
865
,
866
,
867
,
856
,
868
,
859
,
869
,
870
,
862
,
871
,
872
,
873
,
874
,
875
,
876
,
877
,
878
,
880
,
882
,
883
,
884
,
885
,
886
,
875
,
887
,
888
,
878
,
880
,
890
,
892
,
893
,
895
,
896
,
897
,
887
,
888
,
898
,
899
,
890
,
900
,
893
,
901
,
896
,
902
,
903
,
905
,
906
,
908
,
909
,
911
,
912
,
913
,
915
,
916
,
903
,
905
,
906
,
908
,
909
,
917
,
918
,
913
,
919
,
920
,
921
,
922
,
923
,
924
,
925
,
917
,
918
,
926
,
919
,
927
,
928
,
929
,
923
,
930
,
931
,
933
,
934
,
935
,
936
,
937
,
938
,
939
,
940
,
942
,
931
,
943
,
944
,
946
,
947
,
948
,
949
,
939
,
940
,
942
,
950
,
951
,
944
,
952
,
954
,
956
,
957
,
958
,
959
,
960
,
962
,
951
,
964
,
952
,
954
,
966
,
957
,
967
,
959
,
960
,
962
,
968
,
964
,
969
,
971
,
966
,
972
,
973
,
974
,
975
,
976
,
977
,
978
,
969
,
979
,
980
,
972
,
981
,
982
,
983
,
984
,
977
,
986
,
988
,
989
,
990
,
991
,
981
,
982
,
992
,
984
,
993
,
986
,
994
,
989
,
996
,
997
,
999
,
1000
,
1002
,
1004
,
1005
,
1006
,
994
,
1007
,
1009
,
997
,
999
,
1000
,
1002
,
1010
,
1005
,
1011
,
1012
,
1007
,
1009
,
1013
,
1015
,
1016
,
1017
,
1018
,
1020
,
1022
,
1012
,
1023
,
1024
,
1013
,
1026
,
1027
,
1028
,
1018
,
1020
,
1029
,
1030
,
1023
,
1024
,
1031
,
1033
,
1034
,
1036
,
1037
,
1039
,
1040
,
1030
,
1041
,
1043
,
1031
,
1044
,
1034
,
1045
,
1037
,
1039
,
1046
,
1047
,
1041
,
1049
,
1050
,
1051
,
1052
,
1053
,
1055
,
1056
,
1046
,
1047
,
1057
,
1059
,
1050
,
1051
,
1052
,
1053
,
1055
,
1060
,
1061
,
1062
,
1057
,
1059
,
1063
,
1065
,
1066
,
1068
,
1070
,
1060
,
1061
,
1072
,
1074
,
1075
,
1063
,
1065
,
1066
,
1068
,
1070
,
1077
,
1079
,
1072
,
1074
,
1075
,
1081
,
1082
,
1084
,
1086
,
1097
,
1077
,
1079
,
621
,
620
,
619
,
1081
,
1082
,
1084
,
1086
,
1089
,
1089
,
1089
,
1089
,
1089
,
1089
,
1090
,
1090
,
1090
,
1090
,
1090
,
1090
,
1091
,
1091
,
1091
,
1091
,
1091
,
1091
,
1092
,
1092
,
1092
,
1092
,
1092
,
1092
,
1093
,
1093
,
1093
,
1093
,
1093
,
1093
,
1094
,
1094
,
1094
,
1094
,
1094
,
1094
,
1095
,
1095
,
1096
,
618
,
1096
,
1096
,
1096
,
1096
,
1098
,
617
,
615
,
1098
,
1098
,
1098
,
1099
,
1099
,
1099
,
614
,
613
,
612
,
611
,
610
,
609
,
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
,
577
,
572
,
571
,
570
,
569
,
568
,
567
,
566
,
565
,
564
,
563
,
560
,
558
,
557
,
556
,
555
,
554
,
553
,
552
,
551
,
550
,
549
,
548
,
547
,
546
,
545
,
544
,
543
,
542
,
540
,
539
,
538
,
537
,
536
,
535
,
534
,
531
,
529
,
528
,
527
,
526
,
525
,
524
,
523
,
522
,
521
,
520
,
519
,
518
,
517
,
516
,
515
,
514
,
513
,
510
,
509
,
508
,
507
,
506
,
505
,
503
,
500
,
499
,
498
,
497
,
496
,
495
,
494
,
493
,
492
,
491
,
490
,
489
,
488
,
487
,
486
,
485
,
484
,
483
,
482
,
481
,
480
,
479
,
478
,
477
,
476
,
475
,
474
,
473
,
472
,
470
,
469
,
468
,
467
,
466
,
465
,
464
,
463
,
461
,
460
,
459
,
458
,
457
,
456
,
454
,
453
,
450
,
449
,
446
,
445
,
443
,
442
,
441
,
437
,
436
,
435
,
434
,
433
,
432
,
431
,
430
,
429
,
428
,
427
,
426
,
425
,
424
,
423
,
422
,
421
,
420
,
419
,
418
,
417
,
416
,
415
,
414
,
413
,
412
,
410
,
409
,
408
,
407
,
406
,
405
,
404
,
403
,
401
,
400
,
399
,
398
,
397
,
396
,
395
,
394
,
393
,
392
,
391
,
390
,
389
,
388
,
387
,
386
,
385
,
384
,
383
,
381
,
380
,
378
,
377
,
376
,
375
,
374
,
373
,
371
,
370
,
369
,
368
,
367
,
366
,
365
,
364
,
363
,
362
,
361
,
359
,
358
,
357
,
355
,
354
,
353
,
352
,
349
,
348
,
347
,
346
,
345
,
344
,
343
,
342
,
341
,
339
,
338
,
337
,
334
,
333
,
332
,
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
,
282
,
281
,
280
,
279
,
278
,
277
,
276
,
275
,
274
,
273
,
272
,
271
,
269
,
268
,
267
,
266
,
265
,
263
,
262
,
261
,
260
,
259
,
258
,
257
,
255
,
254
,
253
,
252
,
251
,
250
,
249
,
248
,
247
,
246
,
245
,
244
,
243
,
242
,
241
,
240
,
239
,
238
,
237
,
234
,
233
,
232
,
231
,
230
,
229
,
228
,
227
,
226
,
224
,
223
,
222
,
221
,
220
,
219
,
218
,
217
,
216
,
214
,
213
,
212
,
211
,
210
,
209
,
208
,
207
,
206
,
205
,
204
,
203
,
202
,
201
,
200
,
199
,
198
,
197
,
196
,
195
,
194
,
193
,
192
,
190
,
189
,
188
,
187
,
186
,
184
,
183
,
182
,
181
,
180
,
179
,
177
,
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
,
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
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
,
1088
}
;
static
yy_state_type
yy_last_accepting_state
;
...
...
@@ -1195,10 +1204,10 @@ bool Config::includeGraphFlag = TRUE;
bool
Config
::
gfxHierarchyFlag
=
TRUE
;
bool
Config
::
showIncFileFlag
=
TRUE
;
bool
Config
::
stripCommentsFlag
=
TRUE
;
bool
Config
::
sortMembersFlag
=
TRUE
;
int
Config
::
tabSize
=
8
;
int
Config
::
colsInAlphaIndex
=
5
;
/* -----------------------------------------------------------------
*
* static variables
...
...
@@ -1450,13 +1459,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
>=
10
73
)
if
(
yy_current_state
>=
10
89
)
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
]
!=
1
396
);
while
(
yy_base
[
yy_current_state
]
!=
1
414
);
yy_find_action
:
yy_act
=
yy_accept
[
yy_current_state
];
...
...
@@ -1910,16 +1919,21 @@ YY_RULE_SETUP
case
86
:
YY_RULE_SETUP
#line 284 "config.l"
{
err
(
"Warning: ignoring unknown tag `%s' at line %d
\n
"
,
yytext
,
yyLineNr
)
;
}
{
BEGIN
(
GetBool
);
b
=&
Config
::
sortMembersFlag
;
}
YY_BREAK
case
87
:
YY_RULE_SETUP
#line 285 "config.l"
{
yyLineNr
++
;
BEGIN
(
Start
);
}
{
err
(
"Warning: ignoring unknown tag `%s' at line %d
\n
"
,
yytext
,
yyLineNr
);
}
YY_BREAK
case
88
:
YY_RULE_SETUP
#line 286 "config.l"
{
yyLineNr
++
;
BEGIN
(
Start
);
}
YY_BREAK
case
89
:
YY_RULE_SETUP
#line 287 "config.l"
{
yyLineNr
++
;
if
(
!
elemStr
.
isEmpty
())
...
...
@@ -1930,9 +1944,9 @@ YY_RULE_SETUP
BEGIN
(
Start
);
}
YY_BREAK
case
89
:
case
90
:
YY_RULE_SETUP
#line 29
5
"config.l"
#line 29
6
"config.l"
{
if
(
!
elemStr
.
isEmpty
())
{
...
...
@@ -1942,31 +1956,31 @@ YY_RULE_SETUP
elemStr
.
resize
(
0
);
}
YY_BREAK
case
9
0
:
case
9
1
:
YY_RULE_SETUP
#line 30
3
"config.l"
#line 30
4
"config.l"
{
(
*
s
)
+=
yytext
;
}
YY_BREAK
case
9
1
:
case
9
2
:
YY_RULE_SETUP
#line 30
4
"config.l"
#line 30
5
"config.l"
{
lastState
=
YY_START
;
BEGIN
(
GetQuotedString
);
tmpString
.
resize
(
0
);
}
YY_BREAK
case
9
2
:
case
9
3
:
YY_RULE_SETUP
#line 30
8
"config.l"
#line 30
9
"config.l"
{
//printf(">> Enter env\n");
lastEnvState
=
YY_START
;
BEGIN
(
GetEnvVar
);
}
YY_BREAK
case
9
3
:
case
9
4
:
YY_RULE_SETUP
#line 31
3
"config.l"
#line 31
4
"config.l"
{
yytext
[
yyleng
-
1
]
=
'\0'
;
const
char
*
env
=
getenv
(
yytext
);
...
...
@@ -1977,9 +1991,9 @@ YY_RULE_SETUP
BEGIN
(
lastEnvState
);
}
YY_BREAK
case
9
4
:
case
9
5
:
YY_RULE_SETUP
#line 32
2
"config.l"
#line 32
3
"config.l"
{
//printf("Quoted String = `%s'\n",tmpString.data());
if
(
lastState
==
GetString
)
...
...
@@ -1994,21 +2008,21 @@ YY_RULE_SETUP
BEGIN
(
lastState
);
}
YY_BREAK
case
9
5
:
case
9
6
:
YY_RULE_SETUP
#line 33
5
"config.l"
#line 33
6
"config.l"
{
tmpString
+=
'"'
;
}
YY_BREAK
case
9
6
:
case
9
7
:
YY_RULE_SETUP
#line 33
8
"config.l"
#line 33
9
"config.l"
{
tmpString
+=*
yytext
;
}
YY_BREAK
case
9
7
:
case
9
8
:
YY_RULE_SETUP
#line 3
39
"config.l"
#line 3
40
"config.l"
{
QCString
bs
=
yytext
;
bs
=
bs
.
upper
();
...
...
@@ -2025,18 +2039,13 @@ YY_RULE_SETUP
}
}
YY_BREAK
case
9
8
:
case
9
9
:
YY_RULE_SETUP
#line 35
4
"config.l"
#line 35
5
"config.l"
{
elemStr
+=
yytext
;
}
YY_BREAK
case
99
:
YY_RULE_SETUP
#line 357 "config.l"
{
yyLineNr
++
;
BEGIN
(
Start
);
}
YY_BREAK
case
100
:
YY_RULE_SETUP
#line 358 "config.l"
...
...
@@ -2045,21 +2054,26 @@ YY_RULE_SETUP
case
101
:
YY_RULE_SETUP
#line 359 "config.l"
{
yyLineNr
++
;
}
{
yyLineNr
++
;
BEGIN
(
Start
);
}
YY_BREAK
case
102
:
YY_RULE_SETUP
#line 360 "config.l"
{
yyLineNr
++
;
}
YY_BREAK
case
103
:
YY_RULE_SETUP
#line 361 "config.l"
{
yyLineNr
++
;
}
YY_BREAK
case
104
:
YY_RULE_SETUP
#line 363 "config.l"
#line 362 "config.l"
{
yyLineNr
++
;
}
YY_BREAK
case
105
:
YY_RULE_SETUP
#line 364 "config.l"
ECHO
;
YY_BREAK
case
YY_STATE_EOF
(
INITIAL
):
...
...
@@ -2360,7 +2374,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
>=
10
73
)
if
(
yy_current_state
>=
10
89
)
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
}
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
unsigned
int
)
yy_c
];
...
...
@@ -2395,11 +2409,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
>=
10
73
)
if
(
yy_current_state
>=
10
89
)
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
==
10
72
);
yy_is_jam
=
(
yy_current_state
==
10
88
);
return
yy_is_jam
?
0
:
yy_current_state
;
}
...
...
@@ -2954,7 +2968,7 @@ int main()
return
0
;
}
#endif
#line 36
3
"config.l"
#line 36
4
"config.l"
/*@ ----------------------------------------------------------------------------
...
...
@@ -3094,6 +3108,7 @@ void Config::init()
Config
::
gfxHierarchyFlag
=
TRUE
;
Config
::
showIncFileFlag
=
TRUE
;
Config
::
stripCommentsFlag
=
TRUE
;
Config
::
sortMembersFlag
=
TRUE
;
}
void
writeTemplateConfig
(
QFile
*
f
,
bool
sl
)
...
...
@@ -3236,7 +3251,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if
(
!
sl
)
{
t
<<
"
\n
"
;
t
<<
"# If the ALWAYS_DETAIL
S
_SEC and REPEAT_BRIEF tags are both set to YES then
\n
"
;
t
<<
"# If the ALWAYS_DETAIL
ED
_SEC and REPEAT_BRIEF tags are both set to YES then
\n
"
;
t
<<
"# Doxygen will generate a detailed section even if there is only a brief
\n
"
;
t
<<
"# description.
\n
"
;
t
<<
"
\n
"
;
...
...
@@ -3347,7 +3362,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if
(
!
sl
)
{
t
<<
"
\n
"
;
t
<<
"#
i
f the INHERIT_DOCS tag is set to YES (the default) then an undocumented
\n
"
;
t
<<
"#
I
f the INHERIT_DOCS tag is set to YES (the default) then an undocumented
\n
"
;
t
<<
"# member inherits the documentation from any documented member that it
\n
"
;
t
<<
"# reimplements.
\n
"
;
t
<<
"
\n
"
;
...
...
@@ -3356,7 +3371,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if
(
!
sl
)
{
t
<<
"
\n
"
;
t
<<
"#
i
f the INLINE_INFO tag is set to YES (the default) then a tag [inline]
\n
"
;
t
<<
"#
I
f the INLINE_INFO tag is set to YES (the default) then a tag [inline]
\n
"
;
t
<<
"# is inserted in the documentation for inline members.
\n
"
;
t
<<
"
\n
"
;
}
...
...
@@ -3364,7 +3379,17 @@ void writeTemplateConfig(QFile *f,bool sl)
if
(
!
sl
)
{
t
<<
"
\n
"
;
t
<<
"# the TAB_SIZE tag can be used to set the number of spaces in a tab.
\n
"
;
t
<<
"# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
\n
"
;
t
<<
"# will sort the (detailed) documentation of file and class members
\n
"
;
t
<<
"# alphabetically by member name. If set to NO the members will appear in
\n
"
;
t
<<
"# declaration order.
\n
"
;
t
<<
"
\n
"
;
}
t
<<
"SORT_MEMBER_DOCS = YES
\n
"
;
if
(
!
sl
)
{
t
<<
"
\n
"
;
t
<<
"# The TAB_SIZE tag can be used to set the number of spaces in a tab.
\n
"
;
t
<<
"# Doxygen uses this value to replace tabs by spaces in code fragments.
\n
"
;
t
<<
"
\n
"
;
}
...
...
src/config.h
View file @
75cfc919
...
...
@@ -114,6 +114,7 @@ struct Config
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?
static
bool
sortMembersFlag
;
// sort members alphabetically?
};
#endif
src/config.l
View file @
75cfc919
...
...
@@ -144,10 +144,10 @@ bool Config::includeGraphFlag = TRUE;
bool Config::gfxHierarchyFlag = TRUE;
bool Config::showIncFileFlag = TRUE;
bool Config::stripCommentsFlag = TRUE;
bool Config::sortMembersFlag = TRUE;
int Config::tabSize = 8;
int Config::colsInAlphaIndex = 5;
/* -----------------------------------------------------------------
*
* static variables
...
...
@@ -281,6 +281,7 @@ static int yyread(char *buf,int max_size)
<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>"SORT_MEMBER_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::sortMembersFlag; }
<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 {
...
...
@@ -499,6 +500,7 @@ void Config::init()
Config::gfxHierarchyFlag = TRUE;
Config::showIncFileFlag = TRUE;
Config::stripCommentsFlag = TRUE;
Config::sortMembersFlag = TRUE;
}
void writeTemplateConfig(QFile *f,bool sl)
...
...
@@ -641,7 +643,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t <<"\n";
t << "# If the ALWAYS_DETAIL
S
_SEC and REPEAT_BRIEF tags are both set to YES then\n";
t << "# If the ALWAYS_DETAIL
ED
_SEC and REPEAT_BRIEF tags are both set to YES then\n";
t << "# Doxygen will generate a detailed section even if there is only a brief\n";
t << "# description.\n";
t <<"\n";
...
...
@@ -752,7 +754,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
t << "#
i
f the INHERIT_DOCS tag is set to YES (the default) then an undocumented\n";
t << "#
I
f the INHERIT_DOCS tag is set to YES (the default) then an undocumented\n";
t << "# member inherits the documentation from any documented member that it\n";
t << "# reimplements.\n";
t << "\n";
...
...
@@ -761,7 +763,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
t << "#
i
f the INLINE_INFO tag is set to YES (the default) then a tag [inline]\n";
t << "#
I
f the INLINE_INFO tag is set to YES (the default) then a tag [inline]\n";
t << "# is inserted in the documentation for inline members.\n";
t << "\n";
}
...
...
@@ -769,7 +771,17 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab.\n";
t << "# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen\n";
t << "# will sort the (detailed) documentation of file and class members \n";
t << "# alphabetically by member name. If set to NO the members will appear in\n";
t << "# declaration order.\n";
t << "\n";
}
t << "SORT_MEMBER_DOCS = YES\n";
if (!sl)
{
t << "\n";
t << "# The TAB_SIZE tag can be used to set the number of spaces in a tab.\n";
t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n";
t << "\n";
}
...
...
src/debug.cpp
View file @
75cfc919
...
...
@@ -45,6 +45,8 @@ static int labelToEnumValue(const char *l)
return
Debug
::
Variables
;
else
if
(
label
==
"Preprocessor"
)
return
Debug
::
Preprocessor
;
else
if
(
label
==
"Classes"
)
return
Debug
::
Classes
;
else
return
0
;
}
...
...
src/debug.h
View file @
75cfc919
...
...
@@ -25,7 +25,8 @@ class Debug
FindMembers
=
0x00000001
,
Functions
=
0x00000002
,
Variables
=
0x00000004
,
Preprocessor
=
0x00000008
Preprocessor
=
0x00000008
,
Classes
=
0x00000010
};
static
void
print
(
DebugMask
mask
,
int
prio
,
const
char
*
fmt
,...);
static
void
setFlag
(
const
char
*
label
);
...
...
src/diagram.cpp
View file @
75cfc919
...
...
@@ -1252,6 +1252,6 @@ void ClassDiagram::writeImageMap(QTextStream &t,const char *path,
image
.
save
((
QCString
)
path
+
"/"
+
fileName
+
".gif"
);
t
<<
"</map>
</p>
"
<<
endl
;
t
<<
"</map>"
<<
endl
;
}
src/dot.cpp
View file @
75cfc919
...
...
@@ -136,7 +136,14 @@ static bool isLeaf(ClassDef *cd)
for
(
;
(
bcd
=
bcli
.
current
());
++
bcli
)
{
ClassDef
*
bClass
=
bcd
->
classDef
;
if
(
bClass
->
isLinkable
()
||
!
isLeaf
(
bClass
))
return
FALSE
;
//if (bClass->isLinkable() || !isLeaf(bClass)) return FALSE;
// if class is not a leaf
if
(
!
isLeaf
(
bClass
))
return
FALSE
;
// or class is not documented in this project
if
(
!
Config
::
allExtFlag
&&
!
bClass
->
isLinkableInProject
())
return
FALSE
;
// or class is not documented and all ALLEXTERNALS = YES
if
(
Config
::
allExtFlag
&&
!
bClass
->
isLinkable
())
return
FALSE
;
}
}
return
TRUE
;
...
...
@@ -523,7 +530,12 @@ DotGfxHierarchyTable::DotGfxHierarchyTable()
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
//printf("Trying %s superClasses=%d\n",cd->name().data(),cd->superClasses()->count());
if
(
cd
->
isLinkable
()
&&
isLeaf
(
cd
))
// root class in the graph
if
(
isLeaf
(
cd
)
&&
(
(
!
Config
::
allExtFlag
&&
cd
->
isLinkableInProject
())
||
(
Config
::
allExtFlag
&&
cd
->
isLinkable
())
)
)
// root class in the graph
{
//printf("Inserting root class %s\n",cd->name().data());
DotNode
*
n
=
new
DotNode
(
m_curNodeNumber
++
,
...
...
@@ -593,7 +605,10 @@ int DotGfxUsageGraph::m_curNodeNumber;
void
DotGfxUsageGraph
::
addClass
(
ClassDef
*
cd
,
DotNode
*
n
,
int
prot
,
const
char
*
label
,
int
distance
)
{
if
(
cd
->
isLinkable
())
if
(
(
!
Config
::
allExtFlag
&&
cd
->
isLinkableInProject
())
||
(
Config
::
allExtFlag
&&
cd
->
isLinkable
())
)
{
//printf(":: DoxGfxUsageGraph::addClass(class=%s,parent=%s,prot=%d,label=%s,dist=%d)\n",
// cd->name().data(),n->m_label.data(),prot,label,distance);
...
...
@@ -735,7 +750,7 @@ static void findMaximalDotGraph(DotNode *root,int maxDist,
QCString
dotCmd
;
// create annotated dot file
dotCmd
.
sprintf
(
"dot -Tdot %s.dot -o %s_tmp.dot
\n
"
,
baseName
.
data
(),
baseName
.
data
());
dotCmd
.
sprintf
(
"dot -Tdot %s.dot -o %s_tmp.dot"
,
baseName
.
data
(),
baseName
.
data
());
if
(
system
(
dotCmd
)
!=
0
)
{
err
(
"Problems running dot. Check your installation!
\n
"
);
...
...
@@ -807,7 +822,7 @@ void DotGfxUsageGraph::writeGraph(QTextStream &out,
// run dot to create a .gif image
QCString
dotCmd
;
dotCmd
.
sprintf
(
"dot -Tgif %s.dot -o %s.gif
\n
"
,
baseName
.
data
(),
baseName
.
data
());
dotCmd
.
sprintf
(
"dot -Tgif %s.dot -o %s.gif"
,
baseName
.
data
(),
baseName
.
data
());
if
(
system
(
dotCmd
)
!=
0
)
{
err
(
"Problems running dot. Check your installation!
\n
"
);
...
...
@@ -848,27 +863,42 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
for
(;(
ii
=
ili
.
current
());
++
ili
)
{
FileDef
*
bfd
=
ii
->
fileDef
;
QCString
in
=
bfd
?
bfd
->
absFilePath
()
:
ii
->
includeName
;
DotNode
*
bn
=
m_usedNodes
->
find
(
in
)
;
if
(
b
n
)
// file is already a node in the graph
QCString
in
=
ii
->
includeName
;
bool
doc
=
TRUE
,
src
=
FALSE
;
if
(
b
fd
)
{
n
->
addChild
(
bn
,
0
,
0
,
0
);
bn
->
addParent
(
n
);
bn
->
setDistance
(
distance
);
in
=
bfd
->
absFilePath
();
doc
=
bfd
->
isLinkableInProject
(
);
src
=
bfd
->
generateSource
()
||
(
!
bfd
->
isReference
()
&&
Config
::
sourceBrowseFlag
);
}
else
if
(
doc
||
src
)
{
bn
=
new
DotNode
(
m_curNodeNumber
++
,
ii
->
includeName
,
bfd
?
(
bfd
->
getReference
()
+
"$"
+
bfd
->
getOutputFileBase
()).
data
()
:
0
,
distance
);
if
(
distance
>
m_maxDistance
)
m_maxDistance
=
distance
;
n
->
addChild
(
bn
,
0
,
0
,
0
);
bn
->
addParent
(
n
);
m_usedNodes
->
insert
(
in
,
bn
);
if
(
bfd
)
buildGraph
(
bn
,
bfd
,
distance
+
1
);
QCString
url
=
bfd
?
bfd
->
getOutputFileBase
().
data
()
:
""
;
if
(
!
doc
&&
src
)
{
url
+=
"-source"
;
}
DotNode
*
bn
=
m_usedNodes
->
find
(
in
);
if
(
bn
)
// file is already a node in the graph
{
n
->
addChild
(
bn
,
0
,
0
,
0
);
bn
->
addParent
(
n
);
bn
->
setDistance
(
distance
);
}
else
{
bn
=
new
DotNode
(
m_curNodeNumber
++
,
ii
->
includeName
,
bfd
?
(
bfd
->
getReference
()
+
"$"
+
url
).
data
()
:
0
,
distance
);
if
(
distance
>
m_maxDistance
)
m_maxDistance
=
distance
;
n
->
addChild
(
bn
,
0
,
0
,
0
);
bn
->
addParent
(
n
);
m_usedNodes
->
insert
(
in
,
bn
);
if
(
bfd
)
buildGraph
(
bn
,
bfd
,
distance
+
1
);
}
}
}
}
...
...
@@ -876,6 +906,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
DotInclDepGraph
::
DotInclDepGraph
(
FileDef
*
fd
)
{
m_maxDistance
=
0
;
ASSERT
(
fd
!=
0
);
m_diskName
=
fd
->
getOutputFileBase
().
copy
();
m_startNode
=
new
DotNode
(
m_curNodeNumber
++
,
fd
->
name
(),
...
...
@@ -918,7 +949,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out,const char *path)
// run dot to create a .gif image
QCString
dotCmd
;
dotCmd
.
sprintf
(
"dot -Tgif %s.dot -o %s.gif
\n
"
,
baseName
.
data
(),
baseName
.
data
());
dotCmd
.
sprintf
(
"dot -Tgif %s.dot -o %s.gif"
,
baseName
.
data
(),
baseName
.
data
());
if
(
system
(
dotCmd
)
!=
0
)
{
err
(
"Problems running dot. Check your installation!
\n
"
);
...
...
src/doxygen.cpp
View file @
75cfc919
...
...
@@ -91,6 +91,7 @@ FormulaDict formulaDict(1009); // all formulas
FormulaDict
formulaNameDict
(
1009
);
// the label name of all formulas
StringDict
tagDestinationDict
(
257
);
// all tag locations
// a member group
QDict
<
void
>
compoundKeywordDict
(
7
);
// keywords recognised as compounds
OutputList
*
outputList
=
0
;
// list of output generating objects
PageInfo
*
mainPage
=
0
;
...
...
@@ -369,7 +370,7 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
/*! Input is a scopeName, output is the scopename split into a
* namespace part (as large as possible) and a classname part.
*/
void
extractNamespaceName
(
const
QCString
&
scopeName
,
static
void
extractNamespaceName
(
const
QCString
&
scopeName
,
QCString
&
className
,
QCString
&
namespaceName
)
{
QCString
clName
=
scopeName
.
copy
();
...
...
@@ -439,7 +440,8 @@ void buildClassList(Entry *root)
{
if
(
((
root
->
section
&
Entry
::
COMPOUNDDOC_MASK
)
||
((
root
->
section
&
Entry
::
COMPOUND_MASK
)))
&&
((
root
->
section
&
Entry
::
COMPOUND_MASK
))
)
&&
!
root
->
name
.
isEmpty
()
)
{
...
...
@@ -453,14 +455,16 @@ void buildClassList(Entry *root)
else
{
fullName
=
stripAnnonymousNamespaceScope
(
fullName
);
//printf("new
class with name %s\n",fullName.data());
Debug
::
print
(
Debug
::
Classes
,
0
,
" Found
class with name %s
\n
"
,
fullName
.
data
());
bool
ambig
;
ClassDef
*
cd
;
//printf("findFileDef(%s)\n",root->fileName.data());
FileDef
*
fd
=
findFileDef
(
&
inputNameDict
,
root
->
fileName
,
ambig
);
if
((
cd
=
getClass
(
fullName
)))
{
Debug
::
print
(
Debug
::
Classes
,
0
,
" Existing class!
\n
"
,
fullName
.
data
());
if
(
cd
->
templateArguments
()
==
0
)
{
//printf("existing ClassDef tempArgList=%p specScope=%s\n",root->tArgList,root->scopeSpec.data());
...
...
@@ -529,7 +533,17 @@ void buildClassList(Entry *root)
case
Entry
:
:
INTERFACE_SEC
:
case
Entry
:
:
INTERFACEDOC_SEC
:
sec
=
ClassDef
::
Interface
;
break
;
case
Entry
:
:
EXCEPTION_SEC
:
case
Entry
:
:
EXCEPTIONDOC_SEC
:
sec
=
ClassDef
::
Exception
;
break
;
}
Debug
::
print
(
Debug
::
Classes
,
0
,
" New class `%s' (sec=0x%08x)!
\n
"
,
fullName
.
data
(),
root
->
section
);
QCString
className
;
QCString
namespaceName
;
extractNamespaceName
(
fullName
,
className
,
namespaceName
);
//printf("New class: namespace `%s' name=`%s'\n",className.data(),namespaceName.data());
ClassDef
*
cd
=
new
ClassDef
(
fullName
,
sec
);
cd
->
setDocumentation
(
root
->
doc
);
// copy docs to definition
cd
->
setBriefDescription
(
root
->
brief
);
...
...
@@ -553,6 +567,7 @@ void buildClassList(Entry *root)
}
}
// see if the class is found inside a namespace
bool
found
=
addNamespace
(
root
,
cd
);
cd
->
setFileDef
(
fd
);
...
...
@@ -561,6 +576,18 @@ void buildClassList(Entry *root)
addIncludeFile
(
cd
,
fd
,
root
);
}
// namespace is part of the class name
if
(
!
found
&&
!
namespaceName
.
isEmpty
())
{
NamespaceDef
*
nd
=
namespaceDict
[
namespaceName
];
if
(
nd
)
{
cd
->
setNamespace
(
nd
);
nd
->
insertClass
(
cd
);
found
=
TRUE
;
}
}
// if the class is not in a namespace then we insert
// it in the file definition
if
(
!
found
&&
fd
&&
(
root
->
section
&
Entry
::
COMPOUND_MASK
))
...
...
@@ -968,8 +995,9 @@ void buildVarList(Entry *root)
QRegExp
re
(
"([^)]*)"
);
int
i
=-
1
;
if
(
!
root
->
name
.
isEmpty
()
&&
root
->
type
!=
"class"
&&
root
->
type
!=
"interface"
&&
root
->
type
!=
"struct"
&&
root
->
type
!=
"union"
&&
//root->type!="class" && root->type!="interface" &&
//root->type!="struct" && root->type!="union" &&
(
root
->
type
.
isEmpty
()
||
compoundKeywordDict
.
find
(
root
->
type
)
==
0
)
&&
(
(
root
->
section
==
Entry
::
VARIABLE_SEC
)
||
...
...
@@ -1006,7 +1034,6 @@ void buildVarList(Entry *root)
}
else
{
//QRegExp re("([^)]*)");
i
=
root
->
type
.
find
(
re
,
0
);
if
(
i
!=-
1
)
// function variable
{
...
...
@@ -1016,14 +1043,17 @@ void buildVarList(Entry *root)
}
QCString
scope
,
name
=
root
->
name
.
copy
();
//bool stat=root->stat;
//int si;
//if ((si=name.findRev("::"))!=-1)
//{
// scope=name.left(si);
// name=name.right(name.length()-si-2);
//}
// find the scope of this variable (stripping the annonymous part
// at the beginning
// find the scope of this variable
Entry
*
p
=
root
->
parent
;
while
((
p
->
section
&
Entry
::
SCOPE_MASK
))
{
//QCString scopeName = stripAnnonymousScope(p->name);
QCString
scopeName
=
p
->
name
.
copy
();
if
(
!
scopeName
.
isEmpty
())
{
...
...
@@ -1064,7 +1094,6 @@ void buildVarList(Entry *root)
else
mtype
=
MemberDef
::
Variable
;
//printf("name=`%s' scope=%s\n",name.data(),scope.data());
QCString
classScope
=
stripAnnonymousNamespaceScope
(
scope
);
QCString
annScopePrefix
=
scope
.
left
(
scope
.
length
()
-
classScope
.
length
());
scope
=
classScope
;
...
...
@@ -1423,7 +1452,11 @@ void buildMemberList(Entry *root)
NamespaceDef
*
nd
=
0
;
if
(
root
->
parent
->
section
==
Entry
::
NAMESPACE_SEC
)
{
nd
=
namespaceDict
[
root
->
parent
->
name
];
QCString
nscope
=
removeAnnonymousScopes
(
root
->
parent
->
name
);
if
(
!
nscope
.
isEmpty
())
{
nd
=
namespaceDict
[
nscope
];
}
}
if
(
nd
&&
!
nd
->
name
().
isEmpty
()
&&
nd
->
name
().
at
(
0
)
!=
'@'
)
...
...
@@ -1544,6 +1577,8 @@ void findFriends()
void
transferFunctionDocumentation
()
{
//printf("transferFunctionDocumentation()\n");
// find matching function declaration and definitions.
MemberNameListIterator
mnli
(
functionNameList
);
MemberName
*
mn
;
for
(;(
mn
=
mnli
.
current
());
++
mnli
)
...
...
@@ -1594,6 +1629,42 @@ void transferFunctionDocumentation()
}
}
void
transferRelatedFunctionDocumentation
()
{
// find match between function declaration and definition for
// related functions
MemberNameListIterator
mnli
(
functionNameList
);
MemberName
*
mn
;
for
(
mnli
.
toFirst
();(
mn
=
mnli
.
current
());
++
mnli
)
{
MemberDef
*
md
;
MemberNameIterator
mni
(
*
mn
);
/* find a matching function declaration and definition for this function */
for
(
mni
.
toFirst
();(
md
=
mni
.
current
());
++
mni
)
// for each global function
{
//printf(" Function `%s'\n",md->name().data());
MemberName
*
rmn
;
if
((
rmn
=
memberNameDict
[
md
->
name
()]))
// check if there is a member with the same name
{
//printf(" Member name found\n");
MemberDef
*
rmd
;
MemberNameIterator
rmni
(
*
rmn
);
for
(
rmni
.
toFirst
();(
rmd
=
rmni
.
current
());
++
rmni
)
// for each member with the same name
{
//printf(" Member found: related=`%d'\n",rmd->isRelated());
if
(
rmd
->
isRelated
()
&&
// related function
matchArguments
(
md
->
argumentList
(),
rmd
->
argumentList
())
// match argument lists
)
{
//printf(" Found related member `%s'\n",md->name().data());
md
->
makeRelated
();
}
}
}
}
}
}
//----------------------------------------------------------------------
static
bool
findBaseClassRelation
(
Entry
*
root
,
ClassDef
*
cd
,
...
...
@@ -1685,7 +1756,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
}
if
(
found
)
{
//printf(">>> Documented base class = %s
\n",bi->name.data());
Debug
::
print
(
Debug
::
Classes
,
0
,
" 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
...
...
@@ -1694,7 +1765,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
}
else
if
(
insertUndocumented
)
{
//printf(">>> Undocumented base class = %s
\n",bi->name.data());
Debug
::
print
(
Debug
::
Classes
,
0
,
" 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
);
...
...
@@ -1712,6 +1783,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
else
{
//printf(">>> base class %s not found!\n",bi->name.data());
Debug
::
print
(
Debug
::
Classes
,
0
,
" Base class `%s' not found
\n
"
,
bi
->
name
.
data
());
}
}
if
(
scopeOffset
==
0
)
...
...
@@ -1759,7 +1831,7 @@ void computeClassRelations(Entry *root)
{
ClassDef
*
cd
;
QCString
bName
=
stripAnnonymousNamespaceScope
(
root
->
name
);
//printf("Class %s
\n",bName.data());
Debug
::
print
(
Debug
::
Classes
,
0
,
" Class %s :
\n
"
,
bName
.
data
());
if
((
cd
=
getClass
(
bName
)))
{
//printf("Class %s %d\n",cd->name().data(),root->extends->count());
...
...
@@ -2007,15 +2079,17 @@ static bool findUnrelatedFunction(Entry *root,
QCString
n
=
name
;
if
(
n
.
isEmpty
())
return
FALSE
;
if
(
n
.
find
(
"::"
)
!=-
1
)
return
FALSE
;
// skip undefined class members
//printf("findUnrelatedFunction(namespace=%s,name=%s,tempArg=%s,decl=%s)\n",
// namespaceName.data(),name,tempArg,decl);
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"2. findUnrelatedFunction(namespace=%s,name=%s,tempArg=%s,decl=%s)
\n
"
,
namespaceName
.
data
(),
name
,
tempArg
,
decl
);
MemberName
*
mn
=
functionNameDict
[
n
+
tempArg
];
// look in function dictionary
if
(
mn
==
0
)
{
mn
=
functionNameDict
[
n
];
// try with template arguments
mn
=
functionNameDict
[
n
];
// try with
out
template arguments
}
if
(
mn
)
// function name defined
{
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"3. Found function scope
\n
"
);
//int count=0;
MemberDef
*
md
=
mn
->
first
();
bool
found
=
FALSE
;
...
...
@@ -2028,6 +2102,9 @@ static bool findUnrelatedFunction(Entry *root,
//printf("File %s\n",fd ? fd->name().data() : "<none>");
NamespaceList
*
nl
=
fd
?
fd
->
getUsedNamespaces
()
:
0
;
//printf("NamespaceList %p\n",nl);
// search in the list of namespaces that are imported via a
// using declaration
bool
viaUsingDirective
=
nl
&&
nd
&&
nl
->
find
(
nd
)
!=-
1
;
if
((
namespaceName
.
isEmpty
()
&&
nd
==
0
)
||
// not in a namespace
...
...
@@ -2035,8 +2112,8 @@ static bool findUnrelatedFunction(Entry *root,
viaUsingDirective
// member in `using' namespace
)
{
//printf("Adding docs `%s' to member `%s' in namespac
e `%s'\n",
// root->doc.data(),
md->name().data(),namespaceName.data());
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"4. Try to add member `%s' to scop
e `%s'
\n
"
,
md
->
name
().
data
(),
namespaceName
.
data
());
//printf("Searching for match between %s and %s\n",
// argListToString(md->argumentList()).data(),
// argListToString(root->argList).data());
...
...
@@ -2047,7 +2124,7 @@ static bool findUnrelatedFunction(Entry *root,
matchArguments
(
md
->
argumentList
(),
root
->
argList
,
0
,
nsName
);
if
(
matching
)
// add docs to the member
{
//printf("
Match found\n");
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"5.
Match found
\n
"
);
addMemberDocs
(
root
,
md
,
decl
,
FALSE
);
found
=
TRUE
;
}
...
...
@@ -2235,26 +2312,14 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
);
//printf("scopeName=`%s'\n",scopeName.data());
bool
isSpecialization
=
!
root
->
scopeSpec
.
isEmpty
()
&&
root
->
scopeSpec
!=
tempArgListToString
(
root
->
tArgList
);
//
bool isSpecialization = !root->scopeSpec.isEmpty() &&
//
root->scopeSpec != tempArgListToString(root->tArgList);
//printf("1. scopeName=`%s' specialization=%d\n",
// scopeName.data(),isSpecialization
// );
// include template specifier in the scope if needed
if
(
!
scopeName
.
isEmpty
()
&&
!
root
->
scopeSpec
.
isEmpty
()
&&
isSpecialization
)
{
//scopeName = insertTemplateSpecifierInScope(
// scopeName,removeRedundantWhiteSpace(root->scopeSpec));
//printf("2. scopeName=`%s'\n",scopeName.data());
}
// if this is a member template inside non template class, the parser puts
// template specifier in scopeSepc, so we copy it to the right location here
if
(
scopeName
.
isEmpty
()
&&
!
root
->
scopeSpec
.
isEmpty
()
&&
root
->
memberSpec
.
isEmpty
()
&&
funcTempList
.
isEmpty
()
)
// template specifier that was found is for a function
)
// template specifier that was found is for a function
{
funcTempList
=
root
->
scopeSpec
;
}
...
...
@@ -2263,10 +2328,10 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
// if a related class name is specified and the class name could
// not be derived from the function declaration, then use the
// related field.
//printf("scopeName=`%s' class
TempList=`%s' class
Name=`%s'\n",
// scopeName.data(),class
TempList.data(),class
Name.data());
if
(
/*scopeName.isEmpty() &&*/
!
related
.
isEmpty
()
&&
!
isRelated
)
{
//printf("scopeName=`%s' class
Name=`%s' namespace
Name=`%s'\n",
// scopeName.data(),class
Name.data(),namespace
Name.data());
if
(
!
related
.
isEmpty
()
&&
!
isRelated
)
{
// related member, prefix user specified scope
isRelated
=
TRUE
;
//scopeName=resolveDefines(related);
if
(
!
scopeName
.
isEmpty
()
&&
scopeName
!=
related
)
...
...
@@ -2274,8 +2339,16 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
else
scopeName
=
related
.
copy
();
}
else
if
(
/*scopeName.isEmpty() &&*/
related
.
isEmpty
()
&&
root
->
parent
&&
!
root
->
parent
->
name
.
isEmpty
())
// split scope into a namespace and a class part
extractNamespaceName
(
scopeName
,
className
,
namespaceName
);
//printf("scopeName=`%s' className=`%s' namespaceName=`%s'\n",
// scopeName.data(),className.data(),namespaceName.data());
if
(
related
.
isEmpty
()
&&
root
->
parent
&&
!
root
->
parent
->
name
.
isEmpty
()
)
// prefix scope in which the member was found
{
Entry
*
p
=
root
->
parent
;
while
(
p
)
// get full scope as class name
...
...
@@ -2285,23 +2358,39 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
&&
!
sc
.
isEmpty
()
&&
sc
[
0
]
!=
'@'
)
{
QCString
cn
;
QCString
nn
;
extractNamespaceName
(
sc
,
cn
,
nn
);
if
(
leftScopeMatch
(
nn
,
namespaceName
)
||
namespaceName
.
isEmpty
())
{
namespaceName
=
nn
.
copy
();
}
if
(
leftScopeMatch
(
cn
,
className
)
||
className
.
isEmpty
())
{
className
=
cn
.
copy
();
}
//printf("sc=`%s' cn=`%s' nn=`%s'\n",sc.data(),cn.data(),nn.data());
//printf("p->name=`%s' scopeName=`%s' classTempList=%s\n",
// p->name.data(),scopeName.data(),classTempList.data());
QCString
try
Scope
;
QCString
try
Class
;
if
(
scope
Name
.
find
(
'<'
)
==-
1
&&
!
classTempList
.
isEmpty
())
try
Scope
=
insertTemplateSpecifierInScope
(
scope
Name
,
classTempList
);
if
(
class
Name
.
find
(
'<'
)
==-
1
&&
!
classTempList
.
isEmpty
())
try
Class
=
insertTemplateSpecifierInScope
(
class
Name
,
classTempList
);
else
try
Scope
=
scope
Name
.
copy
();
try
Class
=
class
Name
.
copy
();
//printf("try
Scope=%s\n",tryScope
.data());
//printf("try
Class=%s\n",tryClass
.data());
if
(
leftScopeMatch
(
try
Scope
,
sc
))
if
(
leftScopeMatch
(
try
Class
,
cn
))
break
;
// scope already present, so stop now
// prepend name to scope
if
(
!
scopeName
.
isEmpty
())
scopeName
.
prepend
(
"::"
);
scopeName
.
prepend
(
sc
);
break
;
}
p
=
p
->
parent
;
}
...
...
@@ -2309,6 +2398,25 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
//printf("result: scope=%s\n",scopeName.data());
}
namespaceName
=
removeAnnonymousScopes
(
namespaceName
);
// merge class and namespace scopes again
if
(
!
namespaceName
.
isEmpty
())
{
if
(
className
.
isEmpty
())
{
scopeName
=
namespaceName
;
}
else
{
scopeName
=
namespaceName
+
"::"
+
className
;
}
}
else
if
(
!
className
.
isEmpty
())
{
scopeName
=
className
;
}
//printf("new scope=`%s'\n",scopeName.data());
if
(
!
scopeName
.
isEmpty
()
&&
scopeName
.
find
(
'<'
)
==-
1
&&
classTempList
.
isEmpty
()
...
...
@@ -2322,8 +2430,6 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
}
}
// see if (part of) the scope name is a namespace name
extractNamespaceName
(
scopeName
,
className
,
namespaceName
);
QCString
tempScopeName
=
scopeName
.
copy
();
int
ti
=
tempScopeName
.
find
(
'<'
);
...
...
@@ -2613,7 +2719,7 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
}
}
}
if
(
count
==
0
)
if
(
count
==
0
&&
!
(
isFriend
&&
funcType
==
"class"
))
warn
(
"Warning: no matching member found for
\n
%s
\n
"
"in file %s at line %d
\n
"
,
fullFuncDecl
.
data
(),
root
->
fileName
.
data
(),
root
->
startLine
);
...
...
@@ -2846,8 +2952,8 @@ void findMemberDocumentation(Entry *root)
int
i
,
l
;
QRegExp
re
(
"([a-zA-Z0-9: ]*
\\
*+[
\\
*]*"
);
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"root->type=`%s' root->name=`%s' root->args=`%s' section=%x root->inLine=%d
\n
"
,
root
->
type
.
data
(),
root
->
name
.
data
(),
root
->
args
.
data
(),
root
->
section
,
root
->
inLine
"root->type=`%s' root->
inside=`%s' root->
name=`%s' root->args=`%s' section=%x root->inLine=%d
\n
"
,
root
->
type
.
data
(),
root
->
inside
.
data
(),
root
->
name
.
data
(),
root
->
args
.
data
(),
root
->
section
,
root
->
inLine
);
bool
isFunc
=
TRUE
;
if
((
i
=
re
.
match
(
root
->
type
,
0
,
&
l
))
!=-
1
)
// func variable/typedef to func ptr
...
...
@@ -2883,8 +2989,10 @@ void findMemberDocumentation(Entry *root)
((
root
->
section
==
Entry
::
FUNCTION_SEC
||
// function
(
root
->
section
==
Entry
::
VARIABLE_SEC
&&
!
root
->
type
.
isEmpty
()
&&
root
->
type
.
left
(
8
)
!=
"typedef "
&&
root
->
type
!=
"class"
&&
root
->
type
!=
"interface"
&&
root
->
type
!=
"struct"
&&
root
->
type
!=
"union"
)
compoundKeywordDict
.
find
(
root
->
type
)
==
0
/*root->type!="class" && root->type!="interface" &&
root->type!="struct" && root->type!="union"*/
)
)
&&
(
!
root
->
doc
.
isEmpty
()
||
!
root
->
brief
.
isEmpty
()
||
root
->
bodyLine
!=-
1
||
root
->
mGrpId
!=-
1
/*|| Config::extractAllFlag*/
...
...
@@ -2896,6 +3004,7 @@ void findMemberDocumentation(Entry *root)
// root->name.data(),root->args.data(),root->exception.data());
//if (root->relates.length()) printf(" Relates %s\n",root->relates.data());
//printf("Inside=%s\n Relates=%s\n",root->inside.data(),root->relates.data());
if
(
!
root
->
type
.
isEmpty
())
{
findMember
(
root
,
...
...
@@ -2906,7 +3015,6 @@ void findMemberDocumentation(Entry *root)
root
->
exception
,
root
->
relates
,
FALSE
,
isFunc
);
//}
}
else
{
...
...
@@ -3364,7 +3472,7 @@ void generateFileDocs()
{
fd
->
writeDocumentation
(
*
outputList
);
}
if
(
src
)
// TODO: can this be TRUE for tag files?
if
(
src
&&
!
fd
->
isReference
()
)
// TODO: can this be TRUE for tag files?
{
fd
->
writeSource
(
*
outputList
);
}
...
...
@@ -4602,6 +4710,12 @@ int main(int argc,char **argv)
generateConfigFile
(
configName
,
shortList
);
exit
(
1
);
}
compoundKeywordDict
.
insert
(
"class"
,(
void
*
)
8
);
compoundKeywordDict
.
insert
(
"struct"
,(
void
*
)
8
);
compoundKeywordDict
.
insert
(
"union"
,(
void
*
)
8
);
compoundKeywordDict
.
insert
(
"interface"
,(
void
*
)
8
);
compoundKeywordDict
.
insert
(
"exception"
,(
void
*
)
8
);
QFileInfo
configFileInfo1
(
"Doxyfile"
),
configFileInfo2
(
"doxyfile"
);
QCString
config
;
...
...
@@ -4818,6 +4932,7 @@ int main(int argc,char **argv)
msg
(
"Searching for member function documentation...
\n
"
);
findMemberDocumentation
(
root
);
// may introduce new members !
transferRelatedFunctionDocumentation
();
msg
(
"Freeing entry tree
\n
"
);
delete
root
;
...
...
src/entry.h
View file @
75cfc919
...
...
@@ -96,37 +96,44 @@ class Entry
CLASS_SEC
=
0x00000001
,
STRUCT_SEC
=
0x00000002
,
UNION_SEC
=
0x00000004
,
ENUM_SEC
=
0x00000008
,
EMPTY_SEC
=
0x00000010
,
PAGEDOC_SEC
=
0x00000020
,
VARIABLE_SEC
=
0x00000040
,
FUNCTION_SEC
=
0x00000080
,
TYPEDEF_SEC
=
0x00000100
,
CLASSDOC_SEC
=
0x00000200
,
MEMBERDOC_SEC
=
0x00000400
,
OVERLOADDOC_SEC
=
0x00000800
,
EXAMPLE_SEC
=
0x00001000
,
VARIABLEDOC_SEC
=
0x00002000
,
ENUMDOC_SEC
=
0x00004000
,
UNIONDOC_SEC
=
0x00008000
,
STRUCTDOC_SEC
=
0x00010000
,
SOURCE_SEC
=
0x00020000
,
HEADER_SEC
=
0x00040000
,
FILEDOC_SEC
=
0x00080000
,
DEFINEDOC_SEC
=
0x00100000
,
INCLUDE_SEC
=
0x00200000
,
DEFINE_SEC
=
0x00400000
,
GROUPDOC_SEC
=
0x00800000
,
NAMESPACE_SEC
=
0x01000000
,
NAMESPACEDOC_SEC
=
0x02000000
,
INTERFACE_SEC
=
0x04000000
,
INTERFACEDOC_SEC
=
0x08000000
,
MAINPAGEDOC_SEC
=
0x10000000
,
USINGDIR_SEC
=
0x20000000
,
COMPOUND_MASK
=
CLASS_SEC
|
STRUCT_SEC
|
UNION_SEC
|
INTERFACE_SEC
,
COMPOUNDDOC_MASK
=
CLASSDOC_SEC
|
STRUCTDOC_SEC
|
UNIONDOC_SEC
|
INTERFACEDOC_SEC
,
EXCEPTION_SEC
=
0x00000008
,
NAMESPACE_SEC
=
0x00000010
,
INTERFACE_SEC
=
0x00000020
,
COMPOUND_MASK
=
CLASS_SEC
|
STRUCT_SEC
|
UNION_SEC
|
INTERFACE_SEC
|
EXCEPTION_SEC
,
SCOPE_MASK
=
COMPOUND_MASK
|
NAMESPACE_SEC
,
FILE_MASK
=
SOURCE_SEC
|
HEADER_SEC
CLASSDOC_SEC
=
0x00000100
,
STRUCTDOC_SEC
=
0x00000200
,
UNIONDOC_SEC
=
0x00000400
,
EXCEPTIONDOC_SEC
=
0x00000800
,
NAMESPACEDOC_SEC
=
0x00001000
,
INTERFACEDOC_SEC
=
0x00002000
,
COMPOUNDDOC_MASK
=
CLASSDOC_SEC
|
STRUCTDOC_SEC
|
UNIONDOC_SEC
|
INTERFACEDOC_SEC
|
EXCEPTIONDOC_SEC
,
SOURCE_SEC
=
0x00010000
,
HEADER_SEC
=
0x00020000
,
FILE_MASK
=
SOURCE_SEC
|
HEADER_SEC
,
ENUMDOC_SEC
=
0x00100000
,
ENUM_SEC
=
0x00200000
,
EMPTY_SEC
=
0x00300000
,
PAGEDOC_SEC
=
0x00400000
,
VARIABLE_SEC
=
0x00500000
,
FUNCTION_SEC
=
0x00600000
,
TYPEDEF_SEC
=
0x00700000
,
MEMBERDOC_SEC
=
0x00800000
,
OVERLOADDOC_SEC
=
0x00900000
,
EXAMPLE_SEC
=
0x00a00000
,
VARIABLEDOC_SEC
=
0x00b00000
,
FILEDOC_SEC
=
0x00c00000
,
DEFINEDOC_SEC
=
0x00d00000
,
INCLUDE_SEC
=
0x00e00000
,
DEFINE_SEC
=
0x00f00000
,
GROUPDOC_SEC
=
0x01000000
,
USINGDIR_SEC
=
0x01100000
,
MAINPAGEDOC_SEC
=
0x01200000
};
Entry
();
...
...
src/filedef.cpp
View file @
75cfc919
...
...
@@ -269,6 +269,7 @@ void FileDef::writeDocumentation(OutputList &ol)
case
ClassDef
:
:
Struct
:
ol
.
writeString
(
"struct"
);
break
;
case
ClassDef
:
:
Union
:
ol
.
writeString
(
"union"
);
break
;
case
ClassDef
:
:
Interface
:
ol
.
writeString
(
"interface"
);
break
;
case
ClassDef
:
:
Exception
:
ol
.
writeString
(
"exception"
);
break
;
}
ol
.
writeString
(
" "
);
ol
.
insertMemberAlign
();
...
...
src/groupdef.cpp
View file @
75cfc919
...
...
@@ -136,6 +136,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
case
ClassDef
:
:
Struct
:
type
=
"struct"
;
break
;
case
ClassDef
:
:
Union
:
type
=
"union"
;
break
;
case
ClassDef
:
:
Interface
:
type
=
"interface"
;
break
;
case
ClassDef
:
:
Exception
:
type
=
"exception"
;
break
;
}
ol
.
writeStartAnnoItem
(
type
,
cd
->
getOutputFileBase
(),
0
,
cd
->
name
());
ol
.
writeEndAnnoItem
(
cd
->
name
());
...
...
src/htmlgen.cpp
View file @
75cfc919
...
...
@@ -184,7 +184,12 @@ void HtmlGenerator::writeStyleInfo(int part)
if
(
Config
::
htmlStyleSheet
.
isEmpty
())
// write default style sheet
{
startPlainFile
(
"doxygen.css"
);
t
<<
"H1 { text-align: center }"
<<
endl
;
// alternative, cooler looking titles
//t << "H1 { text-align: center; border-width: thin none thin none;" << endl;
//t << " border-style : double; border-color : blue; padding-left : 1em; padding-right : 1em }" << endl;
t
<<
"H1 { text-align: center; }"
<<
endl
;
t
<<
"A.qindex {}"
<<
endl
;
t
<<
"A.qindexRef {}"
<<
endl
;
t
<<
"A.el { text-decoration: none; font-weight: bold }"
<<
endl
;
...
...
src/index.cpp
View file @
75cfc919
...
...
@@ -211,7 +211,7 @@ void writeClassHierarchy(OutputList &ol)
ClassDef
*
cd
=
cli
.
current
();
if
(
!
hasVisibleRoot
(
cd
->
baseClasses
()))
{
if
(
cd
->
isVisibleInHierarchy
())
// WAS: isVisible()!
if
(
cd
->
isVisibleInHierarchy
())
{
if
(
!
started
)
{
...
...
@@ -399,7 +399,7 @@ void writeFileIndex(OutputList &ol)
{
bool
doc
=
fd
->
isLinkableInProject
();
bool
src
=
fd
->
generateSource
()
||
Config
::
sourceBrowseFlag
;
if
(
doc
||
src
)
if
(
(
doc
||
src
)
&&
!
fd
->
isReference
()
)
{
//ol.writeIndexItem(fd->getReference(),fd->diskName(),
// fd->name());
...
...
src/memberdef.cpp
View file @
75cfc919
...
...
@@ -863,7 +863,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
//if (cd && (!isRelated() || templateArguments()!=0) &&
// ((al=scopeDefTemplateArguments()) || (al=cd->templateArguments()))
// )
if
(
scopeAl
)
// class template prefix
if
(
scopeAl
&&
!
related
)
// class template prefix
{
writeTemplatePrefix
(
ol
,
scopeAl
);
}
...
...
src/memberdef.h
View file @
75cfc919
...
...
@@ -99,6 +99,7 @@ class MemberDef : public Definition
FileDef
*
getFileDef
()
{
return
fileDef
;
}
FileDef
*
getFileDec
()
{
return
fileDec
;
}
void
setMemberClass
(
ClassDef
*
cd
)
{
classDef
=
cd
;
}
void
makeRelated
()
{
related
=
TRUE
;
}
bool
isRelated
()
const
{
return
related
;
}
bool
isStatic
()
const
{
return
stat
;
}
bool
isInline
()
const
{
return
inLine
;
}
...
...
src/memberlist.cpp
View file @
75cfc919
...
...
@@ -63,7 +63,9 @@ void MemberList::countDecMembers()
case
MemberDef
:
:
Variable
:
varCnt
++
,
m_count
++
;
break
;
case
MemberDef
:
:
Function
:
// fall through
case
MemberDef
:
:
Signal
:
// fall through
case
MemberDef
:
:
Slot
:
funcCnt
++
,
m_count
++
;
break
;
case
MemberDef
:
:
Slot
:
if
(
!
md
->
isRelated
()
||
md
->
memberClass
())
funcCnt
++
,
m_count
++
;
break
;
case
MemberDef
:
:
Enumeration
:
enumCnt
++
,
m_count
++
;
break
;
case
MemberDef
:
:
EnumValue
:
enumValCnt
++
,
m_count
++
;
break
;
case
MemberDef
:
:
Typedef
:
typeCnt
++
,
m_count
++
;
break
;
...
...
@@ -409,8 +411,10 @@ void MemberList::writePlainDeclarations(OutputList &ol,ClassDef *cd,
MemberListIterator
mli
(
*
this
);
for
(
;
(
md
=
mli
.
current
())
;
++
mli
)
{
if
(
md
->
isFunction
()
||
md
->
isSignal
()
||
md
->
isSlot
())
if
(
(
md
->
isFunction
()
||
md
->
isSignal
()
||
md
->
isSlot
())
&&
(
!
md
->
isRelated
()
||
md
->
memberClass
()
)
)
{
md
->
writeDeclaration
(
ol
,
cd
,
nd
,
fd
,
prevGroupId
,
inGroup
);
prevGroupId
=
md
->
groupId
();
...
...
@@ -424,7 +428,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,ClassDef *cd,
MemberListIterator
mli
(
*
this
);
for
(
;
(
md
=
mli
.
current
())
;
++
mli
)
{
if
(
md
->
isFriend
())
if
(
md
->
isFriend
())
{
QCString
type
=
md
->
typeString
();
//printf("Friend: type=%s name=%s\n",type.data(),md->name().data());
...
...
src/namespacedef.cpp
View file @
75cfc919
...
...
@@ -138,6 +138,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
case
ClassDef
:
:
Struct
:
ol
.
writeString
(
"struct"
);
break
;
case
ClassDef
:
:
Union
:
ol
.
writeString
(
"union"
);
break
;
case
ClassDef
:
:
Interface
:
ol
.
writeString
(
"interface"
);
break
;
case
ClassDef
:
:
Exception
:
ol
.
writeString
(
"exception"
);
break
;
}
ol
.
writeString
(
" "
);
ol
.
insertMemberAlign
();
...
...
src/scanner.cpp
View file @
75cfc919
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/scanner.l
View file @
75cfc919
...
...
@@ -2189,7 +2189,7 @@ VAR [vV][aA][rR]
lineCount();
BEGIN( ClassName );
}
<FindMembers>{B}*"interface"{BN}+ {
<FindMembers>{B}*"interface"{BN}+ {
// M$/Corba IDL interface
isTypedef=FALSE;
current->section = Entry::INTERFACE_SEC;
addType( current ) ;
...
...
@@ -2200,6 +2200,17 @@ VAR [vV][aA][rR]
lineCount();
BEGIN( ClassName );
}
<FindMembers>{B}*"exception"{BN}+ { // Corba IDL exception
isTypedef=FALSE;
current->section = Entry::EXCEPTION_SEC;
addType( current ) ;
current->type += " exception" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount();
BEGIN( ClassName );
}
<FindMembers>{B}*(("typedef"{BN}+)?)"class"{BN}+ {
isTypedef=((QCString)yytext).find("typedef")!=-1;
current->section = Entry::CLASS_SEC;
...
...
@@ -2897,7 +2908,7 @@ VAR [vV][aA][rR]
while (p)
{
// only look for class scopes, not namespace scopes
if (
p->section & Entry::COMPOUND_MASK
)
if (
(p->section & Entry::COMPOUND_MASK) && !p->name.isEmpty()
)
{
//printf("Trying scope `%s'\n",p->name.data());
int i=p->name.findRev("::");
...
...
@@ -3514,8 +3525,9 @@ VAR [vV][aA][rR]
lastClassTemplSpecContext = ClassVar;
BEGIN( ClassTemplSpec );
}
<ClassTemplSpec>">"({BN}*{SCOPENAME})? {
<ClassTemplSpec>">"({BN}*
"::"{BN}*
{SCOPENAME})? {
current->name += yytext;
lineCount();
if (--sharpCount<=0)
{
current->name = removeRedundantWhiteSpace(current->name);
...
...
@@ -3580,7 +3592,7 @@ VAR [vV][aA][rR]
<BasesProt>"public" { baseProt = Public; }
<BasesProt>"protected" { baseProt = Protected; }
<BasesProt>"private" { baseProt = Private; }
<BasesProt>{BN} {}
<BasesProt>{BN} {
lineCount();
}
<BasesProt>. { unput(*yytext); BEGIN(Bases); }
<Bases>("::")*{BN}*({ID}{BN}*"::"{BN}*)*{ID} {
//current->extends->append(
...
...
@@ -3634,7 +3646,10 @@ VAR [vV][aA][rR]
current->extends->append(
new BaseInfo(baseName,baseProt,baseVirt)
);
baseProt=Private;
if (current->section == Entry::INTERFACE_SEC)
baseProt=Public;
else
baseProt=Private;
baseVirt=Normal;
baseName.resize(0);
BEGIN(BasesProt);
...
...
@@ -3850,6 +3865,12 @@ VAR [vV][aA][rR]
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"idlexcept"{B}* {
current->section = Entry::EXCEPTIONDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"page"{B}* {
current->section = Entry::PAGEDOC_SEC;
current->fileName = yyFileName;
...
...
src/translator.h
View file @
75cfc919
...
...
@@ -527,6 +527,7 @@ class Translator
case
ClassDef
:
:
Struct
:
result
+=
" Struct"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
" Union"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
" Interface"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
" Exception"
;
break
;
}
result
+=
" Reference"
;
return
result
;
...
...
@@ -686,6 +687,7 @@ class Translator
case
ClassDef
:
:
Struct
:
result
+=
"struct"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"union"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"interface"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
"exception"
;
break
;
}
result
+=
" was generated from the following file"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"s:"
;
...
...
src/translator_cz.h
View file @
75cfc919
...
...
@@ -296,6 +296,7 @@ class TranslatorCzech : public Translator
case
ClassDef
:
:
Struct
:
result
+=
" struktury"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
" unie"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
" rozhrani"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
" exception"
;
break
;
}
return
result
;
}
...
...
@@ -454,6 +455,7 @@ class TranslatorCzech : public Translator
case
ClassDef
:
:
Struct
:
result
+=
"tuto strukturu"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"tuto unii"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"toto rozhrani"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
"exception"
;
break
;
}
result
+=
" byla vygenerovana z nasledujiciho souboru"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"s:"
;
...
...
src/translator_de.h
View file @
75cfc919
...
...
@@ -440,6 +440,7 @@ class TranslatorGerman : public Translator
case
ClassDef
:
:
Struct
:
result
+=
" Strukturen"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
" Varianten"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
" Interface"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
" Exception"
;
break
;
}
result
+=
"referenz"
;
return
result
;
...
...
src/translator_es.h
View file @
75cfc919
...
...
@@ -287,6 +287,7 @@ class TranslatorSpanish : public Translator
case
ClassDef
:
:
Struct
:
result
+=
" Estructura"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
" Unin"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
" Interface"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
" Exception"
;
break
;
}
result
+=
" Referencia"
;
return
result
;
...
...
src/translator_fi.h
View file @
75cfc919
...
...
@@ -473,6 +473,7 @@ class TranslatorFinnish : public Translator
case
ClassDef
:
:
Struct
:
result
+=
" Struct"
;
break
;
// "Struct"
case
ClassDef
:
:
Union
:
result
+=
" Union"
;
break
;
// "Union"
case
ClassDef
:
:
Interface
:
result
+=
" Interface"
;
break
;
// "Interface"
case
ClassDef
:
:
Exception
:
result
+=
" Exception"
;
break
;
// "Interface"
}
result
+=
" Referenssi"
;
// " Reference"
return
result
;
...
...
src/translator_fr.h
View file @
75cfc919
...
...
@@ -499,6 +499,7 @@ class TranslatorFrench : public Translator
case
ClassDef
:
:
Struct
:
result
+=
"la structure "
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"l'union "
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"l'interface "
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
"l'exception "
;
break
;
}
result
+=
(
QCString
)
clName
;
...
...
@@ -659,6 +660,7 @@ class TranslatorFrench : public Translator
case
ClassDef
:
:
Struct
:
result
+=
"structure"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"union"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"interface"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
"exception"
;
break
;
}
result
+=
" a été générée à partir "
;
if
(
single
)
result
+=
" du fichier suivant :"
;
...
...
src/translator_it.h
View file @
75cfc919
...
...
@@ -538,6 +538,7 @@ class TranslatorItalian : public Translator
case
ClassDef
:
:
Struct
:
result
+=
"la struct "
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"la union "
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"l'interfaccia "
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
"exception "
;
break
;
}
result
+=
(
QCString
)
clName
;
return
result
;
...
...
@@ -699,6 +700,7 @@ class TranslatorItalian : public Translator
case
ClassDef
:
:
Struct
:
result
+=
"struct"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"union"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"interfaccia"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
"exception"
;
break
;
}
result
+=
" è stata generata a partire "
;
if
(
single
)
result
+=
"dal seguente file:"
;
...
...
src/translator_nl.h
View file @
75cfc919
...
...
@@ -270,6 +270,7 @@ class TranslatorDutch : public Translator
case
ClassDef
:
:
Struct
:
result
+=
" Struct"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
" Union"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
" Interface"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
" Exception"
;
break
;
}
result
+=
" Referentie"
;
return
result
;
...
...
@@ -403,6 +404,7 @@ class TranslatorDutch : public Translator
case
ClassDef
:
:
Struct
:
result
+=
"struct"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"union"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"interface"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
"exception"
;
break
;
}
result
+=
" is gegenereerd op grond van de volgende file"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"s:"
;
...
...
src/translator_se.h
View file @
75cfc919
...
...
@@ -388,6 +388,7 @@ class TranslatorSwedish : public Translator
case
ClassDef
:
:
Struct
:
result
+=
" strukt"
;
break
;
case
ClassDef
:
:
Union
:
result
+=
" union"
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
" grnssnitt"
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
" exception"
;
break
;
}
result
+=
"referens"
;
return
result
;
...
...
@@ -525,6 +526,7 @@ class TranslatorSwedish : public Translator
case
ClassDef
:
:
Struct
:
result
+=
"denna strukt "
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"denna union "
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"detta grnssnitt "
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
"exception "
;
break
;
}
result
+=
"var genererad frn fljande fil"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"er:"
;
...
...
src/util.cpp
View file @
75cfc919
...
...
@@ -59,6 +59,29 @@ bool isId(char c)
// return result;
//}
// remove all annoymous scopes from string s
QCString
removeAnnonymousScopes
(
const
QCString
&
s
)
{
QCString
result
;
int
i
,
ni
,
l
=
s
.
length
();
int
p
=
0
;
while
((
i
=
s
.
find
(
'@'
,
p
))
!=-
1
)
{
if
(
i
>
p
+
2
)
result
+=
s
.
mid
(
p
,
i
-
p
-
2
);
if
((
ni
=
s
.
find
(
"::"
,
i
+
1
))
!=-
1
)
{
p
=
ni
+
2
;
}
else
{
p
=
l
;
}
}
if
(
p
!=
l
)
result
+=
s
.
mid
(
p
,
l
-
p
);
//printf("removeAnnonymousScopes(`%s')=`%s'\n",s.data(),result.data());
return
result
;
}
// strip annonymous left hand side part of the scope
QCString
stripAnnonymousNamespaceScope
(
const
QCString
&
s
)
{
...
...
@@ -85,7 +108,7 @@ void writePageRef(OutputList &ol,const char *cn,const char *mn)
ol
.
pushGeneratorState
();
ol
.
enableAll
();
//
ol.enableAll();
ol
.
disable
(
OutputGenerator
::
Html
);
ol
.
disable
(
OutputGenerator
::
Man
);
if
(
Config
::
pdfHyperFlag
)
ol
.
disable
(
OutputGenerator
::
Latex
);
...
...
src/util.h
View file @
75cfc919
...
...
@@ -79,5 +79,6 @@ 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
);
int
getPrefixIndex
(
const
QCString
&
name
);
QCString
removeAnnonymousScopes
(
const
QCString
&
s
);
#endif
tmake/lib/hpux-cc/tmake.conf
View file @
75cfc919
...
...
@@ -8,7 +8,7 @@ TEMPLATE = app
CONFIG
=
qt
warn_on
release
TMAKE_CC
=
cc
TMAKE_CFLAGS
= -
w
+
a1
TMAKE_CFLAGS
= -
w
+
a1
-
DAportable
TMAKE_CFLAGS_WARN_ON
=
TMAKE_CFLAGS_WARN_OFF
=
TMAKE_CFLAGS_RELEASE
= -
O
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment