diff --git a/panda/src/egg/Sources.pp b/panda/src/egg/Sources.pp index 8511773d21..3a76fdf329 100644 --- a/panda/src/egg/Sources.pp +++ b/panda/src/egg/Sources.pp @@ -73,7 +73,7 @@ eggTriangleStrip.cxx \ eggUserData.cxx \ eggUtilities.cxx eggVertex.cxx eggVertexPool.cxx eggVertexUV.cxx \ - eggXfmAnimData.cxx eggXfmSAnim.cxx xx xx pt_EggMaterial.cxx \ + eggXfmAnimData.cxx eggXfmSAnim.cxx pt_EggMaterial.cxx \ vector_PT_EggMaterial.cxx pt_EggTexture.cxx \ vector_PT_EggTexture.cxx pt_EggVertex.cxx \ vector_PT_EggVertex.cxx diff --git a/panda/src/egg/eggCompositePrimitive.cxx b/panda/src/egg/eggCompositePrimitive.cxx index d693ca88f9..0acc06ea38 100644 --- a/panda/src/egg/eggCompositePrimitive.cxx +++ b/panda/src/egg/eggCompositePrimitive.cxx @@ -17,6 +17,7 @@ //////////////////////////////////////////////////////////////////// #include "eggCompositePrimitive.h" +#include "eggGroupNode.h" TypeHandle EggCompositePrimitive::_type_handle; @@ -113,10 +114,10 @@ write_body(ostream &out, int indent_level) const { for (int i = 0; i < get_num_components(); i++) { const EggAttributes *attrib = get_component(i); if (attrib->compare_to(*this) != 0) { - indent(out, indent_level + 2) + indent(out, indent_level) << " " << i << " {\n"; - attrib->write(out, indent_level + 4); - indent(out, indent_level + 2) << "}\n"; + attrib->write(out, indent_level + 2); + indent(out, indent_level) << "}\n"; } } } diff --git a/panda/src/egg/eggData.cxx b/panda/src/egg/eggData.cxx index d9cd1f54c2..79b5f001ad 100644 --- a/panda/src/egg/eggData.cxx +++ b/panda/src/egg/eggData.cxx @@ -305,8 +305,8 @@ set_coordinate_system(CoordinateSystem new_coordsys) { //////////////////////////////////////////////////////////////////// void EggData:: write(ostream &out, int indent_level) const { - EggCoordinateSystem ecs(_coordsys); - ecs.write(out, indent_level); + PT(EggCoordinateSystem) ecs = new EggCoordinateSystem(_coordsys); + ecs->write(out, indent_level); EggGroupNode::write(out, indent_level); out << flush; } diff --git a/panda/src/egg/eggGroup.cxx b/panda/src/egg/eggGroup.cxx index c27e901246..8355504872 100644 --- a/panda/src/egg/eggGroup.cxx +++ b/panda/src/egg/eggGroup.cxx @@ -25,6 +25,7 @@ #include "indent.h" #include "string_utils.h" #include "lmatrix.h" +#include "dcast.h" TypeHandle EggGroup::_type_handle; @@ -61,14 +62,14 @@ operator = (const EggGroup ©) { EggTransform3d::operator = (copy); _flags = copy._flags; _flags2 = copy._flags2; - _collide_mask = copy._collide_mask; - _from_collide_mask = copy._from_collide_mask; - _into_collide_mask = copy._into_collide_mask; - _billboard_center = copy._billboard_center; + // _collide_mask = copy._collide_mask; + // _from_collide_mask = copy._from_collide_mask; + // _into_collide_mask = copy._into_collide_mask; + // _billboard_center = copy._billboard_center; _object_types = copy._object_types; _collision_name = copy._collision_name; _fps = copy._fps; - _lod = copy._lod; + // _lod = copy._lod; _tag_data = copy._tag_data; diff --git a/panda/src/egg/eggGroupNode.cxx b/panda/src/egg/eggGroupNode.cxx index 95717545c7..1306925de1 100644 --- a/panda/src/egg/eggGroupNode.cxx +++ b/panda/src/egg/eggGroupNode.cxx @@ -35,6 +35,7 @@ #include "dSearchPath.h" #include "deg_2_rad.h" +#include "dcast.h" #include @@ -282,6 +283,7 @@ get_next_child() { //////////////////////////////////////////////////////////////////// EggNode *EggGroupNode:: add_child(EggNode *node) { + test_ref_count_integrity(); PT(EggNode) ptnode = node; if (node->_parent != NULL) { node->_parent->remove_child(node); diff --git a/panda/src/egg/eggMaterialCollection.cxx b/panda/src/egg/eggMaterialCollection.cxx index 73534a23ac..bedbb01be6 100644 --- a/panda/src/egg/eggMaterialCollection.cxx +++ b/panda/src/egg/eggMaterialCollection.cxx @@ -22,6 +22,7 @@ #include "eggMaterial.h" #include "nameUniquifier.h" +#include "dcast.h" #include diff --git a/panda/src/egg/eggMesher.cxx b/panda/src/egg/eggMesher.cxx index 873ca6673d..c9af1b57c2 100644 --- a/panda/src/egg/eggMesher.cxx +++ b/panda/src/egg/eggMesher.cxx @@ -21,6 +21,8 @@ #include "eggCompositePrimitive.h" #include "eggTriangleStrip.h" #include "config_egg.h" +#include "eggGroupNode.h" +#include "dcast.h" #include diff --git a/panda/src/egg/eggMesherEdge.cxx b/panda/src/egg/eggMesherEdge.cxx index 7edc51ce53..554b4253fe 100644 --- a/panda/src/egg/eggMesherEdge.cxx +++ b/panda/src/egg/eggMesherEdge.cxx @@ -17,6 +17,7 @@ //////////////////////////////////////////////////////////////////// #include "eggMesherEdge.h" +#include "eggMesherStrip.h" //////////////////////////////////////////////////////////////////// // Function: EggMesherEdge::remove diff --git a/panda/src/egg/eggMesherStrip.cxx b/panda/src/egg/eggMesherStrip.cxx index 59422a4890..19066a8a44 100644 --- a/panda/src/egg/eggMesherStrip.cxx +++ b/panda/src/egg/eggMesherStrip.cxx @@ -19,7 +19,10 @@ #include "eggMesherStrip.h" #include "eggMesherEdge.h" #include "eggPrimitive.h" +#include "eggTriangleStrip.h" #include "eggPolygon.h" +#include "dcast.h" +#include "config_egg.h" //////////////////////////////////////////////////////////////////// // Function: EggMesherStrip::Constructor @@ -118,8 +121,6 @@ make_prim(const EggVertexPool *vertex_pool) { prim = new EggTriangleStrip; prim->copy_attributes(*_prims.front()); - PrimType type = dest_type; - // Now store all the vertices. Each individual triangle's // attributes, if any, get applied to the third vertex of each // triangle. @@ -140,7 +141,7 @@ make_prim(const EggVertexPool *vertex_pool) { // with the third completes a triangle. const EggAttributes *attrib = (*pi); ++pi; - // prim->set_component(count - 2, *attrib); + DCAST(EggCompositePrimitive, prim)->set_component(count - 3, attrib); } } diff --git a/panda/src/egg/eggMesherStrip.h b/panda/src/egg/eggMesherStrip.h index dcd2087eed..131223000c 100644 --- a/panda/src/egg/eggMesherStrip.h +++ b/panda/src/egg/eggMesherStrip.h @@ -21,16 +21,18 @@ #include "pandabase.h" #include "eggVertexPool.h" +#include "eggPrimitive.h" +#include "eggMesherEdge.h" #include "plist.h" class EggMesherEdge; /////////////////////////////////////////////////////////////////// // Class : EggMesherStrip -// Description : Represents a triangle strip in progress, as assembled -// by the mesher. It might also represent a single -// polygon such as a triangle or quad, since that's how -// all triangle strips start out. +// Description : Represents a triangle strip or quad strip in +// progress, as assembled by the mesher. It might also +// represent a single polygon such as a triangle or +// quad, since that's how strips generally start out. //////////////////////////////////////////////////////////////////// class EggMesherStrip { public: diff --git a/panda/src/egg/eggMorphList.I b/panda/src/egg/eggMorphList.I index ec8c2ee044..be6ac48a6c 100644 --- a/panda/src/egg/eggMorphList.I +++ b/panda/src/egg/eggMorphList.I @@ -68,7 +68,7 @@ INLINE EggMorphList:: template INLINE bool EggMorphList:: operator == (const EggMorphList &other) const { - return compare_to(other) == 0; + return (_morphs == other._morphs); } //////////////////////////////////////////////////////////////////// @@ -79,7 +79,7 @@ operator == (const EggMorphList &other) const { template INLINE bool EggMorphList:: operator != (const EggMorphList &other) const { - return compare_to(other) != 0; + return (_morphs != other._morphs); } //////////////////////////////////////////////////////////////////// @@ -90,18 +90,20 @@ operator != (const EggMorphList &other) const { template INLINE bool EggMorphList:: operator < (const EggMorphList &other) const { - return compare_to(other) < 0; + return (_morphs < other._morphs); } //////////////////////////////////////////////////////////////////// // Function: EggMorphList::compare_to // Access: Public -// Description: +// Description: compare_to() compares a different space than the +// operator methods, which only check the morph's name. +// compare_to() compares the name and the value as well. //////////////////////////////////////////////////////////////////// template int EggMorphList:: compare_to(const EggMorphList &other) const { - if (_morphs.size() < other._morphs.size()) { + if (_morphs.size() != other._morphs.size()) { return (int)_morphs.size() - (int)other._morphs.size(); } for (size_t i = 0; i < _morphs.size(); i++) { diff --git a/panda/src/egg/eggNameUniquifier.cxx b/panda/src/egg/eggNameUniquifier.cxx index 676bcbe960..dbeb91559c 100644 --- a/panda/src/egg/eggNameUniquifier.cxx +++ b/panda/src/egg/eggNameUniquifier.cxx @@ -19,6 +19,8 @@ #include "eggNameUniquifier.h" #include "eggNode.h" #include "eggGroupNode.h" +#include "config_egg.h" +#include "dcast.h" #include "notify.h" diff --git a/panda/src/egg/eggNode.cxx b/panda/src/egg/eggNode.cxx index ffe722e12b..fb4b5e7fa1 100644 --- a/panda/src/egg/eggNode.cxx +++ b/panda/src/egg/eggNode.cxx @@ -20,6 +20,7 @@ #include "eggGroupNode.h" #include "config_egg.h" #include "eggTextureCollection.h" +#include "dcast.h" #include @@ -309,6 +310,7 @@ update_under(int depth_offset) { _vertex_to_node = NULL; _node_to_vertex = NULL; } else { + _parent->test_ref_count_integrity(); depth = _parent->_depth + 1; _under_flags = _parent->_under_flags; _vertex_frame = _parent->_vertex_frame; diff --git a/panda/src/egg/eggObject.I b/panda/src/egg/eggObject.I index c8fc72e728..c6d44a7e70 100644 --- a/panda/src/egg/eggObject.I +++ b/panda/src/egg/eggObject.I @@ -16,149 +16,3 @@ // //////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////// -// Function: EggObject::Constructor -// Access: Public -// Description: -//////////////////////////////////////////////////////////////////// -INLINE EggObject:: -EggObject() { -} - - -//////////////////////////////////////////////////////////////////// -// Function: EggObject::Copy constructor -// Access: Public -// Description: -//////////////////////////////////////////////////////////////////// -INLINE EggObject:: -EggObject(const EggObject ©) : - TypedReferenceCount(copy), - _user_data(copy._user_data), - _default_user_data(copy._default_user_data) -{ -} - - -//////////////////////////////////////////////////////////////////// -// Function: EggObject::Copy assignment operator -// Access: Public -// Description: -//////////////////////////////////////////////////////////////////// -INLINE EggObject &EggObject:: -operator = (const EggObject ©) { - TypedReferenceCount::operator = (copy); - _user_data = copy._user_data; - _default_user_data = copy._default_user_data; - return *this; -} - -//////////////////////////////////////////////////////////////////// -// Function: EggObject::set_user_data -// Access: Public -// Description: Sets the user data associated with this object. This -// may be any EggUserData-derived object. The egg -// library will do nothing with this pointer, except to -// hold its reference count and return the pointer on -// request. -// -// The EggObject maintains multiple different -// EggUserData pointers, one for each unique type (as -// reported by get_type()). If you know that only one -// type of EggUserData object will be added in your -// application, you may use the query functions that -// accept no parameters, but it is recommended that in -// general you pass in the type of your particular user -// data, to allow multiple applications to coexist in -// the same egg data. -// -// This pointer is also copied by the copy assignment -// operator and copy constructor. -//////////////////////////////////////////////////////////////////// -INLINE void EggObject:: -set_user_data(EggUserData *user_data) { - _user_data[user_data->get_type()] = user_data; - _default_user_data = user_data; -} - -//////////////////////////////////////////////////////////////////// -// Function: EggObject::get_user_data -// Access: Public -// Description: Returns the user data pointer most recently stored on -// this object, or NULL if nothing was previously -// stored. -//////////////////////////////////////////////////////////////////// -INLINE EggUserData *EggObject:: -get_user_data() const { - return _default_user_data; -} - -//////////////////////////////////////////////////////////////////// -// Function: EggObject::get_user_data -// Access: Public -// Description: Returns the user data pointer of the indicated type, -// if it exists, or NULL if it does not. -//////////////////////////////////////////////////////////////////// -INLINE EggUserData *EggObject:: -get_user_data(TypeHandle type) const { - UserData::const_iterator ui; - ui = _user_data.find(type); - if (ui != _user_data.end()) { - return (*ui).second; - } - return NULL; -} - -//////////////////////////////////////////////////////////////////// -// Function: EggObject::has_user_data -// Access: Public -// Description: Returns true if a generic user data pointer has -// recently been set and not yet cleared, false -// otherwise. -//////////////////////////////////////////////////////////////////// -INLINE bool EggObject:: -has_user_data() const { - return !_default_user_data.is_null(); -} - -//////////////////////////////////////////////////////////////////// -// Function: EggObject::has_user_data -// Access: Public -// Description: Returns true if the user data pointer of the -// indicated type has been set, false otherwise. -//////////////////////////////////////////////////////////////////// -INLINE bool EggObject:: -has_user_data(TypeHandle type) const { - UserData::const_iterator ui; - ui = _user_data.find(type); - return (ui != _user_data.end()); -} - -//////////////////////////////////////////////////////////////////// -// Function: EggObject::clear_user_data -// Access: Public -// Description: Removes *all* user data pointers from the node. -//////////////////////////////////////////////////////////////////// -INLINE void EggObject:: -clear_user_data() { - _user_data.clear(); - _default_user_data.clear(); -} - -//////////////////////////////////////////////////////////////////// -// Function: EggObject::clear_user_data -// Access: Public -// Description: Removes the user data pointer of the indicated type. -//////////////////////////////////////////////////////////////////// -INLINE void EggObject:: -clear_user_data(TypeHandle type) { - UserData::iterator ui; - ui = _user_data.find(type); - if (ui != _user_data.end()) { - if ((*ui).second == _default_user_data) { - _default_user_data.clear(); - } - _user_data.erase(ui); - } -} diff --git a/panda/src/egg/eggObject.cxx b/panda/src/egg/eggObject.cxx index 8ba45fa4b8..6e5e507a3a 100644 --- a/panda/src/egg/eggObject.cxx +++ b/panda/src/egg/eggObject.cxx @@ -21,11 +21,157 @@ TypeHandle EggObject::_type_handle; +//////////////////////////////////////////////////////////////////// +// Function: EggObject::Constructor +// Access: Published +// Description: +//////////////////////////////////////////////////////////////////// +EggObject:: +EggObject() { +} + + +//////////////////////////////////////////////////////////////////// +// Function: EggObject::Copy constructor +// Access: Published +// Description: +//////////////////////////////////////////////////////////////////// +EggObject:: +EggObject(const EggObject ©) : + TypedReferenceCount(copy), + _user_data(copy._user_data), + _default_user_data(copy._default_user_data) +{ +} + + +//////////////////////////////////////////////////////////////////// +// Function: EggObject::Copy assignment operator +// Access: Published +// Description: +//////////////////////////////////////////////////////////////////// +EggObject &EggObject:: +operator = (const EggObject ©) { + TypedReferenceCount::operator = (copy); + _user_data = copy._user_data; + _default_user_data = copy._default_user_data; + return *this; +} + //////////////////////////////////////////////////////////////////// // Function: EggObject::Destructor -// Access: Public, Virtual +// Access: Published, Virtual // Description: //////////////////////////////////////////////////////////////////// EggObject:: ~EggObject() { } + +//////////////////////////////////////////////////////////////////// +// Function: EggObject::set_user_data +// Access: Published +// Description: Sets the user data associated with this object. This +// may be any EggUserData-derived object. The egg +// library will do nothing with this pointer, except to +// hold its reference count and return the pointer on +// request. +// +// The EggObject maintains multiple different +// EggUserData pointers, one for each unique type (as +// reported by get_type()). If you know that only one +// type of EggUserData object will be added in your +// application, you may use the query functions that +// accept no parameters, but it is recommended that in +// general you pass in the type of your particular user +// data, to allow multiple applications to coexist in +// the same egg data. +// +// This pointer is also copied by the copy assignment +// operator and copy constructor. +//////////////////////////////////////////////////////////////////// +void EggObject:: +set_user_data(EggUserData *user_data) { + _user_data[user_data->get_type()] = user_data; + _default_user_data = user_data; +} + +//////////////////////////////////////////////////////////////////// +// Function: EggObject::get_user_data +// Access: Published +// Description: Returns the user data pointer most recently stored on +// this object, or NULL if nothing was previously +// stored. +//////////////////////////////////////////////////////////////////// +EggUserData *EggObject:: +get_user_data() const { + return _default_user_data; +} + +//////////////////////////////////////////////////////////////////// +// Function: EggObject::get_user_data +// Access: Published +// Description: Returns the user data pointer of the indicated type, +// if it exists, or NULL if it does not. +//////////////////////////////////////////////////////////////////// +EggUserData *EggObject:: +get_user_data(TypeHandle type) const { + UserData::const_iterator ui; + ui = _user_data.find(type); + if (ui != _user_data.end()) { + return (*ui).second; + } + return NULL; +} + +//////////////////////////////////////////////////////////////////// +// Function: EggObject::has_user_data +// Access: Published +// Description: Returns true if a generic user data pointer has +// recently been set and not yet cleared, false +// otherwise. +//////////////////////////////////////////////////////////////////// +bool EggObject:: +has_user_data() const { + return !_default_user_data.is_null(); +} + +//////////////////////////////////////////////////////////////////// +// Function: EggObject::has_user_data +// Access: Published +// Description: Returns true if the user data pointer of the +// indicated type has been set, false otherwise. +//////////////////////////////////////////////////////////////////// +bool EggObject:: +has_user_data(TypeHandle type) const { + UserData::const_iterator ui; + ui = _user_data.find(type); + return (ui != _user_data.end()); +} + +//////////////////////////////////////////////////////////////////// +// Function: EggObject::clear_user_data +// Access: Published +// Description: Removes *all* user data pointers from the node. +//////////////////////////////////////////////////////////////////// +void EggObject:: +clear_user_data() { + _user_data.clear(); + _default_user_data.clear(); +} + +//////////////////////////////////////////////////////////////////// +// Function: EggObject::clear_user_data +// Access: Published +// Description: Removes the user data pointer of the indicated type. +//////////////////////////////////////////////////////////////////// +void EggObject:: +clear_user_data(TypeHandle type) { + UserData::iterator ui; + ui = _user_data.find(type); + if (ui != _user_data.end()) { + if ((*ui).second == _default_user_data) { + _default_user_data.clear(); + } + _user_data.erase(ui); + } +} diff --git a/panda/src/egg/eggObject.h b/panda/src/egg/eggObject.h index 9dc7a16262..6e31c78e15 100644 --- a/panda/src/egg/eggObject.h +++ b/panda/src/egg/eggObject.h @@ -32,19 +32,19 @@ //////////////////////////////////////////////////////////////////// class EXPCL_PANDAEGG EggObject : public TypedReferenceCount { PUBLISHED: - INLINE EggObject(); - INLINE EggObject(const EggObject ©); - INLINE EggObject &operator = (const EggObject ©); + EggObject(); + EggObject(const EggObject ©); + EggObject &operator = (const EggObject ©); virtual ~EggObject(); - INLINE void set_user_data(EggUserData *user_data); - INLINE EggUserData *get_user_data() const; - INLINE EggUserData *get_user_data(TypeHandle type) const; - INLINE bool has_user_data() const; - INLINE bool has_user_data(TypeHandle type) const; - INLINE void clear_user_data(); - INLINE void clear_user_data(TypeHandle type); + void set_user_data(EggUserData *user_data); + EggUserData *get_user_data() const; + EggUserData *get_user_data(TypeHandle type) const; + bool has_user_data() const; + bool has_user_data(TypeHandle type) const; + void clear_user_data(); + void clear_user_data(TypeHandle type); private: typedef pmap UserData; diff --git a/panda/src/egg/eggTextureCollection.cxx b/panda/src/egg/eggTextureCollection.cxx index 57f0a54e02..a00645c782 100644 --- a/panda/src/egg/eggTextureCollection.cxx +++ b/panda/src/egg/eggTextureCollection.cxx @@ -21,6 +21,7 @@ #include "eggPrimitive.h" #include "eggTexture.h" #include "pt_EggTexture.h" +#include "dcast.h" #include "nameUniquifier.h" diff --git a/panda/src/egg/eggUtilities.cxx b/panda/src/egg/eggUtilities.cxx index 4280cf33a7..f06c8ddc09 100644 --- a/panda/src/egg/eggUtilities.cxx +++ b/panda/src/egg/eggUtilities.cxx @@ -20,6 +20,7 @@ #include "eggPrimitive.h" #include "eggGroupNode.h" #include "pt_EggTexture.h" +#include "dcast.h" //////////////////////////////////////////////////////////////////// diff --git a/panda/src/egg/eggXfmAnimData.cxx b/panda/src/egg/eggXfmAnimData.cxx index 3c35a244ad..b2712245b1 100644 --- a/panda/src/egg/eggXfmAnimData.cxx +++ b/panda/src/egg/eggXfmAnimData.cxx @@ -26,6 +26,7 @@ #include "luse.h" #include "lmatrix.h" #include "compose_matrix.h" +#include "dcast.h" TypeHandle EggXfmAnimData::_type_handle; diff --git a/panda/src/egg/eggXfmSAnim.cxx b/panda/src/egg/eggXfmSAnim.cxx index f82ed88a12..0448727907 100644 --- a/panda/src/egg/eggXfmSAnim.cxx +++ b/panda/src/egg/eggXfmSAnim.cxx @@ -24,6 +24,7 @@ #include "indent.h" #include "compose_matrix.h" +#include "dcast.h" #include diff --git a/panda/src/egg/parser.cxx.prebuilt b/panda/src/egg/parser.cxx.prebuilt index fac34ae093..a6ceb1dbfd 100644 --- a/panda/src/egg/parser.cxx.prebuilt +++ b/panda/src/egg/parser.cxx.prebuilt @@ -240,7 +240,7 @@ egg_cleanup_parser() { -#define YYFINAL 717 +#define YYFINAL 714 #define YYFLAG -32768 #define YYNTBASE 91 @@ -304,18 +304,18 @@ static const short yyprhs[] = 483, 484, 490, 492, 495, 498, 501, 504, 510, 515, 521, 526, 528, 538, 548, 550, 557, 562, 574, 587, 588, 595, 596, 603, 604, 611, 612, 619, 620, 627, - 628, 635, 637, 643, 649, 651, 657, 658, 666, 672, - 678, 684, 687, 693, 699, 705, 712, 714, 720, 726, - 732, 735, 741, 747, 753, 759, 765, 771, 774, 780, - 787, 789, 795, 801, 807, 810, 816, 822, 828, 834, - 840, 847, 849, 851, 853, 857, 866, 875, 880, 890, - 900, 902, 911, 914, 916, 918, 920, 926, 928, 931, - 933, 935, 936, 943, 944, 951, 953, 956, 959, 962, - 965, 968, 969, 976, 978, 985, 991, 992, 999, 1001, - 1008, 1014, 1015, 1022, 1024, 1031, 1034, 1036, 1039, 1041, - 1044, 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060, 1062, - 1064, 1066, 1068, 1070, 1072, 1074, 1076, 1079, 1081, 1083, - 1085, 1087, 1089, 1091, 1093 + 628, 635, 637, 643, 649, 651, 652, 660, 666, 672, + 678, 681, 687, 693, 699, 706, 708, 714, 720, 726, + 729, 735, 741, 747, 753, 759, 765, 768, 774, 781, + 783, 789, 795, 801, 804, 810, 816, 822, 828, 834, + 841, 843, 845, 847, 851, 860, 869, 874, 884, 894, + 896, 905, 908, 910, 912, 914, 920, 922, 925, 927, + 929, 930, 937, 938, 945, 947, 950, 953, 956, 959, + 962, 963, 970, 972, 979, 985, 986, 993, 995, 1002, + 1008, 1009, 1016, 1018, 1025, 1028, 1030, 1033, 1035, 1038, + 1040, 1042, 1044, 1046, 1048, 1050, 1052, 1054, 1056, 1058, + 1060, 1062, 1064, 1066, 1068, 1070, 1073, 1075, 1077, 1079, + 1081, 1083, 1085, 1087 }; static const short yyrhs[] = { @@ -384,51 +384,50 @@ static const short yyrhs[] = 44, 197, 155, 89, 161, 90, 0, 0, 43, 197, 157, 89, 162, 90, 0, 206, 0, 158, 42, 89, 166, 90, 0, 158, 51, 89, 167, 90, 0, 206, - 0, 159, 14, 89, 158, 90, 0, 0, 159, 14, - 205, 89, 160, 158, 90, 0, 159, 71, 89, 163, - 90, 0, 159, 67, 89, 164, 90, 0, 159, 41, - 89, 165, 90, 0, 159, 169, 0, 159, 42, 89, - 166, 90, 0, 159, 51, 89, 167, 90, 0, 159, - 7, 89, 168, 90, 0, 159, 57, 196, 89, 204, - 90, 0, 206, 0, 161, 71, 89, 163, 90, 0, - 161, 67, 89, 164, 90, 0, 161, 41, 89, 165, - 90, 0, 161, 169, 0, 161, 42, 89, 166, 90, - 0, 161, 51, 89, 167, 90, 0, 161, 7, 89, - 168, 90, 0, 161, 46, 89, 170, 90, 0, 161, - 76, 89, 171, 90, 0, 161, 78, 89, 172, 90, - 0, 161, 156, 0, 161, 74, 89, 173, 90, 0, - 161, 57, 196, 89, 204, 90, 0, 206, 0, 162, - 71, 89, 163, 90, 0, 162, 67, 89, 164, 90, - 0, 162, 41, 89, 165, 90, 0, 162, 169, 0, - 162, 42, 89, 166, 90, 0, 162, 51, 89, 167, - 90, 0, 162, 7, 89, 168, 90, 0, 162, 46, - 89, 175, 90, 0, 162, 32, 89, 176, 90, 0, - 162, 57, 196, 89, 204, 90, 0, 193, 0, 196, - 0, 194, 0, 203, 203, 203, 0, 166, 18, 200, - 89, 203, 203, 203, 90, 0, 166, 18, 89, 200, - 203, 203, 203, 90, 0, 203, 203, 203, 203, 0, - 167, 19, 200, 89, 203, 203, 203, 203, 90, 0, - 167, 19, 89, 200, 203, 203, 203, 203, 90, 0, - 205, 0, 82, 89, 191, 50, 89, 195, 90, 90, - 0, 205, 205, 0, 192, 0, 192, 0, 206, 0, - 173, 36, 89, 174, 90, 0, 206, 0, 174, 156, - 0, 205, 0, 192, 0, 0, 63, 197, 178, 89, - 181, 90, 0, 0, 10, 197, 180, 89, 181, 90, - 0, 206, 0, 181, 177, 0, 181, 179, 0, 181, - 182, 0, 181, 185, 0, 181, 188, 0, 0, 56, - 197, 183, 89, 184, 90, 0, 206, 0, 184, 57, - 196, 89, 204, 90, 0, 184, 64, 89, 192, 90, - 0, 0, 83, 197, 186, 89, 187, 90, 0, 206, - 0, 187, 57, 196, 89, 204, 90, 0, 187, 64, - 89, 192, 90, 0, 0, 84, 197, 189, 89, 190, - 90, 0, 206, 0, 190, 57, 196, 89, 204, 90, - 0, 190, 182, 0, 206, 0, 191, 205, 0, 206, - 0, 192, 203, 0, 196, 0, 196, 0, 196, 0, - 206, 0, 200, 0, 199, 0, 206, 0, 200, 0, - 206, 0, 200, 0, 3, 0, 4, 0, 5, 0, - 206, 0, 202, 0, 200, 0, 202, 200, 0, 3, - 0, 4, 0, 3, 0, 4, 0, 5, 0, 3, - 0, 4, 0, 0 + 0, 0, 159, 14, 205, 89, 160, 158, 90, 0, + 159, 71, 89, 163, 90, 0, 159, 67, 89, 164, + 90, 0, 159, 41, 89, 165, 90, 0, 159, 169, + 0, 159, 42, 89, 166, 90, 0, 159, 51, 89, + 167, 90, 0, 159, 7, 89, 168, 90, 0, 159, + 57, 196, 89, 204, 90, 0, 206, 0, 161, 71, + 89, 163, 90, 0, 161, 67, 89, 164, 90, 0, + 161, 41, 89, 165, 90, 0, 161, 169, 0, 161, + 42, 89, 166, 90, 0, 161, 51, 89, 167, 90, + 0, 161, 7, 89, 168, 90, 0, 161, 46, 89, + 170, 90, 0, 161, 76, 89, 171, 90, 0, 161, + 78, 89, 172, 90, 0, 161, 156, 0, 161, 74, + 89, 173, 90, 0, 161, 57, 196, 89, 204, 90, + 0, 206, 0, 162, 71, 89, 163, 90, 0, 162, + 67, 89, 164, 90, 0, 162, 41, 89, 165, 90, + 0, 162, 169, 0, 162, 42, 89, 166, 90, 0, + 162, 51, 89, 167, 90, 0, 162, 7, 89, 168, + 90, 0, 162, 46, 89, 175, 90, 0, 162, 32, + 89, 176, 90, 0, 162, 57, 196, 89, 204, 90, + 0, 193, 0, 196, 0, 194, 0, 203, 203, 203, + 0, 166, 18, 200, 89, 203, 203, 203, 90, 0, + 166, 18, 89, 200, 203, 203, 203, 90, 0, 203, + 203, 203, 203, 0, 167, 19, 200, 89, 203, 203, + 203, 203, 90, 0, 167, 19, 89, 200, 203, 203, + 203, 203, 90, 0, 205, 0, 82, 89, 191, 50, + 89, 195, 90, 90, 0, 205, 205, 0, 192, 0, + 192, 0, 206, 0, 173, 36, 89, 174, 90, 0, + 206, 0, 174, 156, 0, 205, 0, 192, 0, 0, + 63, 197, 178, 89, 181, 90, 0, 0, 10, 197, + 180, 89, 181, 90, 0, 206, 0, 181, 177, 0, + 181, 179, 0, 181, 182, 0, 181, 185, 0, 181, + 188, 0, 0, 56, 197, 183, 89, 184, 90, 0, + 206, 0, 184, 57, 196, 89, 204, 90, 0, 184, + 64, 89, 192, 90, 0, 0, 83, 197, 186, 89, + 187, 90, 0, 206, 0, 187, 57, 196, 89, 204, + 90, 0, 187, 64, 89, 192, 90, 0, 0, 84, + 197, 189, 89, 190, 90, 0, 206, 0, 190, 57, + 196, 89, 204, 90, 0, 190, 182, 0, 206, 0, + 191, 205, 0, 206, 0, 192, 203, 0, 196, 0, + 196, 0, 196, 0, 206, 0, 200, 0, 199, 0, + 206, 0, 200, 0, 206, 0, 200, 0, 3, 0, + 4, 0, 5, 0, 206, 0, 202, 0, 200, 0, + 202, 200, 0, 3, 0, 4, 0, 3, 0, 4, + 0, 5, 0, 3, 0, 4, 0, 0 }; #endif @@ -437,32 +436,32 @@ static const short yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const short yyrline[] = { - 0, 213, 215, 216, 217, 227, 229, 243, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 269, 292, 306, 306, 334, 336, 618, - 628, 628, 655, 657, 751, 759, 778, 778, 814, 816, - 826, 826, 838, 838, 883, 888, 892, 896, 900, 900, - 915, 916, 917, 925, 943, 948, 956, 973, 978, 986, - 1003, 1008, 1016, 1033, 1033, 1053, 1053, 1074, 1074, 1095, - 1097, 1167, 1179, 1184, 1191, 1197, 1210, 1217, 1230, 1236, - 1242, 1248, 1253, 1259, 1260, 1261, 1262, 1275, 1305, 1307, - 1328, 1328, 1344, 1346, 1347, 1348, 1349, 1350, 1351, 1352, - 1355, 1361, 1367, 1373, 1379, 1385, 1389, 1395, 1399, 1401, - 1422, 1422, 1441, 1443, 1444, 1445, 1446, 1449, 1455, 1461, - 1467, 1470, 1472, 1490, 1523, 1528, 1552, 1564, 1570, 1586, - 1586, 1605, 1605, 1624, 1624, 1643, 1643, 1662, 1662, 1681, - 1681, 1701, 1703, 1704, 1714, 1716, 1717, 1717, 1738, 1739, - 1740, 1741, 1742, 1743, 1744, 1745, 1803, 1805, 1806, 1807, - 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1821, 1822, - 1885, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, - 1896, 1964, 1981, 2021, 2038, 2043, 2051, 2068, 2073, 2081, - 2098, 2114, 2145, 2163, 2183, 2203, 2209, 2219, 2226, 2244, - 2260, 2281, 2281, 2303, 2303, 2325, 2327, 2331, 2335, 2339, - 2343, 2357, 2357, 2378, 2380, 2392, 2405, 2405, 2426, 2428, - 2445, 2458, 2458, 2479, 2481, 2496, 2510, 2515, 2528, 2533, - 2546, 2567, 2588, 2612, 2618, 2629, 2641, 2647, 2657, 2662, - 2675, 2680, 2684, 2696, 2701, 2716, 2721, 2734, 2736, 2750, - 2757, 2763, 2779, 2788, 2794 + 0, 213, 215, 216, 217, 227, 229, 244, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 270, 293, 307, 307, 335, 337, 619, + 629, 629, 656, 658, 752, 760, 779, 779, 815, 817, + 827, 827, 839, 839, 884, 889, 893, 897, 901, 901, + 916, 917, 918, 926, 944, 949, 957, 974, 979, 987, + 1004, 1009, 1017, 1034, 1034, 1054, 1054, 1075, 1075, 1096, + 1098, 1168, 1180, 1185, 1192, 1198, 1211, 1218, 1231, 1237, + 1243, 1249, 1254, 1260, 1261, 1262, 1263, 1276, 1306, 1308, + 1329, 1329, 1345, 1347, 1348, 1349, 1350, 1351, 1352, 1353, + 1356, 1362, 1368, 1374, 1380, 1386, 1390, 1396, 1400, 1402, + 1423, 1423, 1442, 1444, 1445, 1446, 1447, 1450, 1456, 1462, + 1468, 1471, 1473, 1491, 1524, 1529, 1553, 1565, 1571, 1587, + 1587, 1606, 1606, 1625, 1625, 1644, 1644, 1663, 1663, 1682, + 1682, 1702, 1704, 1705, 1715, 1717, 1717, 1738, 1739, 1740, + 1741, 1742, 1743, 1744, 1745, 1803, 1805, 1806, 1807, 1808, + 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1821, 1822, 1885, + 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, + 1964, 1981, 2021, 2038, 2043, 2051, 2068, 2073, 2081, 2098, + 2114, 2145, 2163, 2183, 2203, 2209, 2219, 2226, 2244, 2260, + 2281, 2281, 2303, 2303, 2325, 2327, 2331, 2335, 2339, 2343, + 2357, 2357, 2378, 2380, 2392, 2405, 2405, 2426, 2428, 2445, + 2458, 2458, 2479, 2481, 2496, 2510, 2515, 2528, 2533, 2546, + 2567, 2588, 2612, 2618, 2629, 2641, 2647, 2657, 2662, 2675, + 2680, 2684, 2696, 2701, 2716, 2721, 2734, 2736, 2750, 2757, + 2763, 2779, 2788, 2794 }; #endif @@ -534,18 +533,18 @@ static const short yyr1[] = 135, 134, 136, 136, 136, 136, 136, 137, 138, 139, 140, 141, 141, 142, 143, 143, 144, 145, 145, 147, 146, 149, 148, 151, 150, 153, 152, 155, 154, 157, - 156, 158, 158, 158, 159, 159, 160, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 156, 158, 158, 158, 159, 160, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 163, 164, 165, 166, 166, 166, 167, 167, 167, - 168, 169, 170, 171, 172, 173, 173, 174, 174, 175, - 176, 178, 177, 180, 179, 181, 181, 181, 181, 181, - 181, 183, 182, 184, 184, 184, 186, 185, 187, 187, - 187, 189, 188, 190, 190, 190, 191, 191, 192, 192, - 193, 194, 195, 196, 196, 197, 198, 198, 199, 199, - 200, 200, 200, 201, 201, 202, 202, 203, 203, 204, - 204, 204, 205, 205, 206 + 163, 164, 165, 166, 166, 166, 167, 167, 167, 168, + 169, 170, 171, 172, 173, 173, 174, 174, 175, 176, + 178, 177, 180, 179, 181, 181, 181, 181, 181, 181, + 183, 182, 184, 184, 184, 186, 185, 187, 187, 187, + 189, 188, 190, 190, 190, 191, 191, 192, 192, 193, + 194, 195, 196, 196, 197, 198, 198, 199, 199, 200, + 200, 200, 201, 201, 202, 202, 203, 203, 204, 204, + 204, 205, 205, 206 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -565,18 +564,18 @@ static const short yyr2[] = 0, 5, 1, 2, 2, 2, 2, 5, 4, 5, 4, 1, 9, 9, 1, 6, 4, 11, 12, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, - 6, 1, 5, 5, 1, 5, 0, 7, 5, 5, - 5, 2, 5, 5, 5, 6, 1, 5, 5, 5, - 2, 5, 5, 5, 5, 5, 5, 2, 5, 6, - 1, 5, 5, 5, 2, 5, 5, 5, 5, 5, - 6, 1, 1, 1, 3, 8, 8, 4, 9, 9, - 1, 8, 2, 1, 1, 1, 5, 1, 2, 1, - 1, 0, 6, 0, 6, 1, 2, 2, 2, 2, - 2, 0, 6, 1, 6, 5, 0, 6, 1, 6, - 5, 0, 6, 1, 6, 2, 1, 2, 1, 2, + 6, 1, 5, 5, 1, 0, 7, 5, 5, 5, + 2, 5, 5, 5, 6, 1, 5, 5, 5, 2, + 5, 5, 5, 5, 5, 5, 2, 5, 6, 1, + 5, 5, 5, 2, 5, 5, 5, 5, 5, 6, + 1, 1, 1, 3, 8, 8, 4, 9, 9, 1, + 8, 2, 1, 1, 1, 5, 1, 2, 1, 1, + 0, 6, 0, 6, 1, 2, 2, 2, 2, 2, + 0, 6, 1, 6, 5, 0, 6, 1, 6, 5, + 0, 6, 1, 6, 2, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 1, 1, 1, 0 + 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 0 }; /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE @@ -584,458 +583,466 @@ static const short yyr2[] = error. */ static const short yydefact[] = { - 0, 254, 254, 254, 254, 1, 5, 2, 69, 3, - 27, 4, 144, 240, 241, 242, 254, 0, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 6, 7, 8, 9, 10, 11, 12, 13, + 0, 253, 253, 253, 253, 1, 5, 2, 69, 3, + 27, 4, 144, 239, 240, 241, 253, 0, 253, 253, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, + 253, 253, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, - 0, 0, 254, 0, 0, 0, 0, 254, 0, 0, - 254, 0, 90, 0, 86, 83, 84, 85, 254, 110, - 29, 0, 0, 0, 0, 0, 254, 0, 0, 0, - 151, 0, 235, 239, 238, 254, 0, 63, 65, 67, - 135, 0, 234, 233, 139, 137, 133, 129, 201, 0, - 131, 36, 254, 0, 0, 0, 0, 0, 0, 254, - 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, - 252, 253, 254, 0, 254, 0, 0, 0, 254, 254, - 254, 254, 0, 237, 236, 254, 0, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 254, 0, 0, 0, - 0, 247, 248, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 254, 0, 254, 254, 226, - 0, 254, 0, 190, 0, 141, 146, 0, 183, 231, - 0, 0, 0, 0, 0, 0, 182, 0, 181, 230, - 0, 245, 0, 244, 243, 23, 0, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 25, 254, 254, - 254, 71, 0, 254, 87, 77, 76, 75, 74, 80, - 79, 249, 250, 251, 0, 78, 0, 126, 0, 82, - 0, 92, 0, 227, 124, 0, 0, 112, 154, 0, - 0, 145, 254, 150, 0, 152, 0, 0, 153, 0, - 0, 149, 148, 0, 24, 246, 34, 0, 0, 0, - 0, 0, 32, 0, 170, 0, 156, 0, 0, 0, - 205, 254, 0, 0, 38, 0, 0, 0, 88, 70, - 0, 81, 0, 0, 0, 0, 0, 0, 0, 91, - 93, 94, 95, 96, 97, 98, 99, 0, 254, 28, - 0, 0, 0, 0, 111, 114, 115, 116, 113, 0, - 0, 0, 0, 0, 184, 0, 0, 0, 155, 254, - 64, 66, 68, 136, 254, 31, 0, 0, 0, 0, - 0, 0, 254, 0, 0, 140, 174, 0, 0, 0, - 0, 0, 254, 0, 0, 0, 0, 0, 138, 167, - 160, 134, 130, 254, 254, 254, 254, 202, 206, 207, - 208, 209, 210, 0, 132, 40, 37, 39, 35, 72, - 73, 89, 0, 254, 0, 0, 0, 0, 0, 0, - 254, 0, 254, 0, 0, 0, 0, 0, 147, 0, - 0, 0, 0, 187, 0, 232, 0, 0, 254, 254, - 0, 0, 0, 0, 254, 254, 0, 254, 0, 0, - 0, 0, 254, 254, 254, 254, 254, 203, 211, 216, - 221, 26, 0, 42, 0, 0, 0, 0, 108, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, - 0, 0, 0, 142, 143, 0, 0, 0, 0, 0, - 0, 0, 0, 200, 228, 0, 0, 0, 199, 0, + 0, 0, 253, 0, 0, 0, 0, 253, 0, 0, + 253, 0, 90, 0, 86, 83, 84, 85, 253, 110, + 29, 0, 0, 0, 0, 0, 253, 0, 0, 0, + 150, 0, 234, 238, 237, 253, 0, 63, 65, 67, + 135, 0, 233, 232, 139, 137, 133, 129, 200, 0, + 131, 36, 253, 0, 0, 0, 0, 0, 0, 253, + 0, 0, 0, 0, 0, 0, 253, 0, 0, 0, + 251, 252, 0, 253, 0, 0, 0, 253, 253, 253, + 253, 0, 236, 235, 253, 0, 0, 0, 0, 30, + 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, + 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 253, 0, 253, 253, 225, 0, + 253, 0, 189, 145, 0, 182, 230, 0, 0, 0, + 0, 0, 0, 181, 0, 180, 229, 0, 244, 0, + 243, 242, 23, 0, 253, 253, 253, 253, 253, 253, + 253, 253, 253, 253, 25, 253, 253, 253, 71, 0, + 253, 87, 77, 76, 75, 74, 80, 79, 248, 249, + 250, 0, 78, 0, 126, 0, 82, 0, 92, 0, + 226, 124, 0, 0, 112, 153, 253, 149, 0, 151, + 0, 0, 152, 0, 0, 148, 147, 0, 24, 245, + 34, 0, 0, 0, 0, 0, 32, 0, 169, 0, + 155, 0, 0, 0, 204, 253, 0, 0, 38, 0, + 0, 0, 88, 70, 0, 81, 0, 0, 0, 0, + 0, 0, 0, 91, 93, 94, 95, 96, 97, 98, + 99, 0, 253, 28, 0, 0, 0, 0, 111, 114, + 115, 116, 113, 0, 141, 0, 0, 183, 0, 0, + 0, 154, 253, 64, 66, 68, 136, 253, 31, 0, + 0, 0, 0, 0, 0, 253, 0, 0, 140, 173, + 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, + 0, 138, 166, 159, 134, 130, 253, 253, 253, 253, + 201, 205, 206, 207, 208, 209, 0, 132, 40, 37, + 39, 35, 72, 73, 89, 0, 253, 0, 0, 0, + 0, 0, 0, 253, 0, 253, 0, 0, 0, 0, + 0, 146, 0, 0, 0, 0, 186, 0, 231, 0, + 0, 253, 253, 0, 0, 0, 0, 253, 253, 0, + 253, 0, 0, 0, 0, 253, 253, 253, 253, 253, + 202, 210, 215, 220, 26, 0, 42, 0, 0, 0, + 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 199, 227, 0, 0, + 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 194, 0, 192, 0, + 193, 0, 0, 0, 0, 0, 0, 0, 0, 107, + 0, 0, 101, 102, 103, 106, 0, 0, 0, 0, + 120, 0, 118, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 0, 176, 178, 228, 172, 174, 177, 175, + 0, 171, 170, 162, 158, 160, 163, 191, 161, 0, + 157, 156, 0, 167, 164, 165, 253, 253, 253, 253, + 0, 44, 0, 0, 0, 0, 0, 0, 0, 123, + 125, 0, 119, 117, 142, 143, 0, 0, 0, 0, + 33, 179, 168, 253, 0, 0, 212, 0, 217, 0, + 222, 0, 0, 0, 253, 41, 45, 0, 0, 0, + 0, 0, 105, 100, 0, 185, 184, 0, 0, 0, + 196, 203, 253, 0, 211, 253, 0, 216, 253, 221, + 224, 0, 0, 0, 0, 0, 46, 43, 0, 0, + 0, 104, 0, 188, 187, 195, 197, 0, 253, 0, + 253, 0, 0, 0, 0, 0, 0, 0, 48, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 195, 0, 193, 0, 194, 0, 0, - 0, 0, 0, 0, 0, 0, 107, 0, 0, 101, - 102, 103, 106, 0, 0, 0, 0, 120, 0, 118, - 0, 0, 0, 0, 0, 0, 191, 0, 177, 179, - 229, 173, 175, 178, 176, 0, 172, 171, 163, 159, - 161, 164, 192, 162, 0, 158, 157, 0, 168, 165, - 166, 254, 254, 254, 254, 0, 44, 0, 0, 0, - 0, 0, 0, 0, 123, 125, 0, 119, 117, 0, - 0, 0, 0, 33, 180, 169, 254, 0, 0, 213, - 0, 218, 0, 223, 0, 0, 0, 254, 41, 45, - 0, 0, 0, 0, 0, 105, 100, 0, 186, 185, - 0, 0, 0, 197, 204, 254, 0, 212, 254, 0, - 217, 254, 222, 225, 0, 0, 0, 0, 0, 46, - 43, 0, 0, 0, 104, 0, 189, 188, 196, 198, - 0, 254, 0, 254, 0, 0, 0, 0, 0, 0, - 0, 48, 47, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 50, 0, 0, 51, 0, - 0, 127, 0, 0, 0, 0, 215, 0, 220, 0, - 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, - 128, 0, 0, 214, 219, 224, 0, 0, 0, 0, - 0, 0, 60, 0, 49, 54, 0, 122, 53, 52, + 0, 0, 50, 0, 0, 51, 0, 0, 127, 0, + 0, 0, 0, 214, 0, 219, 0, 0, 0, 0, + 0, 57, 0, 0, 0, 0, 0, 128, 0, 0, + 213, 218, 223, 0, 0, 0, 0, 0, 0, 60, + 0, 49, 54, 0, 122, 53, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 59, 58, 0, 0, 0, 0, 0, 62, 61, - 56, 55, 0, 0, 109, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, 59, 58, + 0, 0, 0, 0, 0, 62, 61, 56, 55, 0, + 0, 109, 0, 0, 0 }; static const short yydefgoto[] = { - 715, 5, 64, 33, 34, 35, 271, 9, 36, 201, - 261, 37, 38, 148, 273, 367, 422, 483, 535, 640, - 658, 617, 619, 39, 136, 40, 137, 41, 138, 7, - 213, 277, 65, 115, 230, 290, 291, 292, 293, 294, - 295, 296, 426, 70, 118, 236, 305, 306, 307, 308, - 437, 66, 232, 67, 164, 42, 144, 43, 147, 44, - 143, 45, 139, 46, 142, 47, 141, 174, 11, 242, - 265, 263, 187, 185, 177, 180, 182, 172, 80, 466, - 474, 476, 472, 582, 457, 452, 48, 145, 359, 478, - 269, 360, 479, 558, 361, 480, 560, 362, 481, 562, - 168, 453, 188, 178, 394, 179, 81, 132, 82, 92, - 192, 193, 510, 224, 173, 93 + 712, 5, 64, 33, 34, 35, 265, 9, 36, 198, + 255, 37, 38, 147, 267, 360, 415, 476, 530, 637, + 655, 614, 616, 39, 135, 40, 136, 41, 137, 7, + 210, 271, 65, 115, 227, 284, 285, 286, 287, 288, + 289, 290, 419, 70, 118, 233, 299, 300, 301, 302, + 430, 66, 229, 67, 163, 42, 143, 43, 146, 44, + 142, 45, 138, 46, 141, 47, 140, 303, 11, 236, + 259, 257, 184, 182, 174, 177, 179, 171, 80, 459, + 467, 469, 465, 579, 450, 445, 48, 144, 352, 471, + 263, 353, 472, 555, 354, 473, 557, 355, 474, 559, + 167, 446, 185, 175, 387, 176, 81, 131, 82, 92, + 189, 190, 505, 221, 172, 93 }; static const short yypact[] = { - 177,-32768,-32768,-32768,-32768, 523,-32768, 1217,-32768, 158, - -32768, 452,-32768,-32768,-32768,-32768, 321, -7, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 113, - 32, 85, 321, 107, 130, 148, 157, 321, 161, 181, - 321, 191,-32768, 213,-32768,-32768,-32768,-32768, 321,-32768, - -32768, 216, 45, 219, 220, 222, 321, 223, 226, 230, - -32768, 239,-32768,-32768,-32768, 321, 241,-32768,-32768,-32768, - -32768, 242,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 251, - -32768,-32768, 321, 321, 176, 253, 333, 354, 280, 321, - 258, 280, 211, 263, 280, 274,-32768, 275, 281, 280, - -32768,-32768,-32768, 287, 321, 176, 176, 289, 321, 321, - -32768, 321, 46,-32768,-32768, 321, 290, 291, 297, 299, - -32768, 300, 301, 302, 303, 304, 321, 305, 306, 308, - 185,-32768,-32768, 176, 321, 279, 310, 311, 313, 315, - 316, 363, 323, 309, 324, 321, 328,-32768, 280,-32768, - 363,-32768, 330,-32768, 34,-32768,-32768, 332,-32768,-32768, - -13, 176, 37, 176, 363, 336,-32768, 338,-32768,-32768, - 173,-32768, 339, 321,-32768,-32768, 344,-32768,-32768,-32768, + 222,-32768,-32768,-32768,-32768, 517,-32768, 1251,-32768, -51, + -32768, 522,-32768,-32768,-32768,-32768, 313, 39, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 107, + 60, 76, 313, 79, 82, 85, 88, 313, 142, 153, + 313, 156,-32768, 160,-32768,-32768,-32768,-32768, 313,-32768, + -32768, 166, 298, 173, 181, 188, 313, 210, 225, 233, + -32768, 238,-32768,-32768,-32768, 313, 246,-32768,-32768,-32768, + -32768, 248,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 250, + -32768,-32768, 313, 313, 321, 251, 326, 329, 298, 313, + 261, 298, 129, 262, 298, 267,-32768, 273, 279, 298, + -32768,-32768, 281, 313, 321, 321, 282, 313, 313,-32768, + 313, 102,-32768,-32768, 313, 283, 284, 285, 286,-32768, + 288, 289, 291, 292, 295, 313, 296, 302, 303, 121, + -32768,-32768, 321, 313, 124, 214, 221, 297, 305, 306, + 343, 307, 304, 308, 313, 309,-32768, 298,-32768, 343, + -32768, 314,-32768,-32768, 315,-32768,-32768, 6, 321, 9, + 321, 343, 317,-32768, 320,-32768,-32768, 131,-32768, 322, + 313,-32768,-32768, 324,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768, 313,-32768, 321, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 321,-32768, 176,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768, 348,-32768, 176,-32768, 350,-32768, - 378,-32768, 209,-32768,-32768, 352, 186,-32768,-32768, 358, - 360,-32768,-32768,-32768, 24,-32768, 176, 54,-32768, 176, - 364,-32768,-32768, 366,-32768,-32768,-32768, 1004, 1075, 1146, - 272, 99,-32768, 314,-32768, 140,-32768, 368, 370, 145, - -32768,-32768, 450, 170,-32768, 371, 372, 48,-32768,-32768, - 176,-32768, 367, 376, 380, 381, 382, 384, 385,-32768, - -32768,-32768,-32768,-32768,-32768,-32768,-32768, 386, 321,-32768, - 387, 388, 389, 391,-32768,-32768,-32768,-32768,-32768, 176, - 176, 142, 321, 393,-32768, 321, 394, 176,-32768, 321, - -32768,-32768,-32768,-32768, 321,-32768, 395, 396, 397, 398, - 400, 401, 321, 406, 411,-32768,-32768, 413, 419, 423, - 425, 427, 321, 429, 431, 433, 436, 440,-32768,-32768, - -32768,-32768,-32768, 321, 321, 321, 321,-32768,-32768,-32768, - -32768,-32768,-32768, 141,-32768, 280,-32768,-32768,-32768,-32768, - -32768,-32768, 66, 176, 176, 176, 176, 176, 176, 176, - 321, 441, 176, 176, 176, 176, -6, 56,-32768, 176, - 176, 176, 176,-32768, 377,-32768, 442, 280,-32768, 321, - 176, 280, 176, 444, 321, 321, 280, 321, 176, 280, - 176, 446, 321, 321,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768, 448,-32768, 453, 237, 449, 176,-32768, 176, - 451, 455, 456, 6, 176, 458, 363, 460, 176,-32768, - 462, 176, 176,-32768,-32768, 176, 176, 176, 176, 463, - 363, 465, 466, 176,-32768, 471, 12, 473,-32768, 64, - 363, 474, 475, 478, 479, 15, 480, 280, 100, 363, - 483, 484, -1,-32768, 485, 176, 486, 176, 454, 488, - 490, 491, 176, 492, 176, 493,-32768, 176, 176,-32768, - -32768,-32768,-32768, 176, 176, 494, 495,-32768, 176,-32768, - 497, 502, 176, 176, 176, 176,-32768, 503,-32768,-32768, - -32768,-32768,-32768,-32768,-32768, 505,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768, 507,-32768,-32768, 509,-32768,-32768, - -32768,-32768,-32768,-32768,-32768, 136, 176, 176, 176, 176, - 176, 176, 510, 511,-32768,-32768, 176,-32768,-32768, 512, - 513, 176, 176,-32768,-32768,-32768,-32768, 184, 76,-32768, - 95,-32768, -12,-32768, 59, 516, 517, 321,-32768, 176, - 227, 176, 176, 176, 519,-32768,-32768, 176,-32768,-32768, - 520, 521, 47,-32768,-32768, 321, 524,-32768, 321, 525, - -32768, 321,-32768,-32768, 321, 527, 176, 176, 528, 176, - -32768, 522, 176, 176,-32768, 176,-32768,-32768,-32768,-32768, - 529,-32768, 530,-32768, 531, 176, 176, 63, 176, 110, - 176,-32768,-32768, 535, 536, 176, 176, 363, 33, 363, - 38, 363, 176, 176, 62,-32768, 176, 69,-32768, 176, - 176,-32768, 537, 176, 176, 538,-32768, 540,-32768, 541, - 176, 176, 321, 544,-32768, 321, 545, 176, 11, 176, - -32768, 176, 176,-32768,-32768,-32768, 546, 547, 176, 176, - 176, 176,-32768, 83,-32768,-32768, 176,-32768,-32768,-32768, - 176, 176, 176, 176, 321, 549, 176, 176, 176, 176, - 176, 176, 176, 176, 550, 551, 176, 176, 176, 176, - 176,-32768,-32768, 552, 553, 554, 555, 176,-32768,-32768, - -32768,-32768, 176, 176,-32768, 583, 599,-32768 + -32768, 328,-32768, 321,-32768, 330,-32768, 447,-32768, 163, + -32768,-32768, 331, 186,-32768,-32768,-32768,-32768, 69,-32768, + 321, 72,-32768, 321, 332,-32768,-32768, 334,-32768,-32768, + -32768, 1038, 1109, 1180, 168, -22,-32768, 109,-32768, 312, + -32768, 375, 399, 100,-32768,-32768, 441, -49,-32768, 337, + 338, 5,-32768,-32768, 321,-32768, 336, 340, 341, 342, + 348, 349, 354,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768, 355, 313,-32768, 356, 358, 360, 362,-32768,-32768, + -32768,-32768,-32768, 122,-32768, 313, 363,-32768, 313, 365, + 321,-32768, 313,-32768,-32768,-32768,-32768, 313,-32768, 369, + 372, 374, 378, 379, 380, 313, 382, 383,-32768,-32768, + 384, 385, 386, 387, 388, 313, 390, 391, 395, 396, + 401,-32768,-32768,-32768,-32768,-32768, 313, 313, 313, 313, + -32768,-32768,-32768,-32768,-32768,-32768, 206,-32768, 298,-32768, + -32768,-32768,-32768,-32768,-32768, 115, 321, 321, 321, 321, + 321, 321, 321, 313, 402, 321, 321, 321, 321, 404, + 408,-32768, 321, 321, 321, 321,-32768, 398,-32768, 414, + 298,-32768, 313, 321, 298, 321, 415, 313, 313, 298, + 313, 321, 298, 321, 417, 313, 313,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768, 421,-32768, 425, 345, 426, + 321,-32768, 321, 428, 429, 434, 46, 321, 435, 343, + 436, 321,-32768, 437, 321, 321, 321, 321, 321, 321, + 321, 321, 438, 343, 443, 444, 321,-32768, 445, 33, + 448,-32768, 34, 343, 449, 450, 451, 452, 103, 456, + 298, 48, 343, 457, 459, 133,-32768, 460, 321, 463, + 321, 466, 468, 473, 478, 321, 479, 321, 480,-32768, + 321, 321,-32768,-32768,-32768,-32768, 321, 321, 481, 482, + -32768, 321,-32768, 484, 486, 108, 118, 321, 321, 321, + 321,-32768, 487,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 491,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 493, + -32768,-32768, 498,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 111, 321, 321, 321, 321, 321, 321, 502, 504,-32768, + -32768, 321,-32768,-32768,-32768,-32768, 505, 506, 321, 321, + -32768,-32768,-32768,-32768, 144, 215,-32768, 216,-32768, 184, + -32768, 78, 508, 510, 313,-32768, 321, 201, 321, 321, + 321, 511,-32768,-32768, 321,-32768,-32768, 512, 513, 136, + -32768,-32768, 313, 516,-32768, 313, 518,-32768, 313,-32768, + -32768, 313, 519, 321, 321, 521, 321,-32768, 527, 321, + 321,-32768, 321,-32768,-32768,-32768,-32768, 523,-32768, 529, + -32768, 530, 321, 321, 128, 321, 125, 321,-32768,-32768, + 531, 532, 321, 321, 343, 53, 343, 55, 343, 321, + 321, 81,-32768, 321, 89,-32768, 321, 321,-32768, 533, + 321, 321, 534,-32768, 535,-32768, 537, 321, 321, 313, + 539,-32768, 313, 541, 321, 67, 321,-32768, 321, 321, + -32768,-32768,-32768, 542, 543, 321, 321, 321, 321,-32768, + 97,-32768,-32768, 321,-32768,-32768,-32768, 321, 321, 321, + 321, 313, 545, 321, 321, 321, 321, 321, 321, 321, + 321, 546, 547, 321, 321, 321, 321, 321,-32768,-32768, + 548, 549, 551, 552, 321,-32768,-32768,-32768,-32768, 321, + 321,-32768, 403, 411,-32768 }; static const short yypgoto[] = { - -32768,-32768, 630,-32768,-32768,-32768,-32768, 116,-32768,-32768, - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -84,-32768, - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 175, + -32768,-32768, 565,-32768,-32768,-32768,-32768, 154,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -68,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 165, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768, -264,-32768, 407, 77,-32768, - -32768,-32768, -196, -171, -156, -301, -307, -262, 8,-32768, - -32768,-32768,-32768,-32768,-32768,-32768, -251,-32768,-32768,-32768, - 108, 86,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 526, -409,-32768,-32768, 271, 3, 143, -85,-32768, -5, - 487,-32768, 298, -116, -68, 90 + -32768,-32768,-32768,-32768,-32768, -258,-32768,-32768, 63,-32768, + -32768,-32768, -201, -138, -131, -206, -166, -387, -226,-32768, + -32768,-32768,-32768,-32768,-32768,-32768, -256,-32768,-32768,-32768, + 74, 47,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 514, -404,-32768,-32768, 247, 3, 18, -80,-32768, -5, + 467,-32768, 335, -117, -45, 87 }; -#define YYLAST 1299 +#define YYLAST 1333 static const short yytable[] = { - 49, 349, 49, 387, 123, 244, 475, 477, 386, 151, - 152, 83, 244, 83, 83, 83, 83, 83, 358, 83, - 83, 83, 83, 83, 160, 83, 91, 13, 14, 15, - 244, 673, 99, 244, 101, 527, 151, 152, 156, 158, - 159, 151, 152, 162, 354, 591, 166, 83, 120, 121, - 196, 13, 14, 15, 235, 83, 247, 13, 14, 15, - 110, 207, 13, 14, 15, 13, 14, 15, 250, 151, - 152, 117, 13, 14, 15, 247, 239, 245, 592, 127, - 133, 634, 85, 247, 443, 240, 13, 14, 15, 528, - 24, 6, 8, 10, 12, 459, 492, 83, 150, 456, - 233, 674, 512, 468, 133, 520, 84, 465, 84, 84, - 84, 84, 84, 312, 84, 84, 84, 84, 84, 247, - 84, 103, 233, 646, 241, 275, 191, 248, 648, 637, - 133, 186, 189, 585, 122, 451, 195, 608, 370, 102, - 586, 133, 84, 315, 463, 424, 444, 337, 594, 214, - 84, 652, 588, 635, 514, 353, 324, 564, 655, 589, - 191, 86, 87, 88, 89, 90, 587, 94, 95, 96, - 97, 98, 684, 100, 104, 134, 120, 121, 565, 151, - 152, 338, 339, 24, 239, 590, 340, 566, 255, 325, - 523, 341, 84, 240, 353, 105, 106, 342, 68, 134, - 638, 354, 628, 113, 630, 133, 169, 343, 28, 462, - 69, 344, 175, 567, 345, 68, 346, 471, 347, 107, - 169, 194, 79, 253, 300, 134, 568, 69, 355, 356, - 348, 421, 388, 461, 163, 357, 134, 108, 301, 313, - 354, 470, 316, 455, 302, 149, 109, 28, 564, 365, - 111, 464, 49, 49, 49, 194, 303, 231, 234, 297, - 366, 237, 1, 2, 3, 4, 298, 355, 356, 565, - 112, 336, 371, 350, 584, 211, 304, 260, 566, 71, - 114, 267, 268, 120, 121, 272, 72, 8, 8, 8, - 12, 262, 264, 266, 12, 12, 270, 423, 12, 274, - 134, 381, 116, 278, 567, 119, 358, 389, 124, 125, - 391, 126, 128, 73, 74, 129, 485, 600, 609, 130, - 496, 326, 395, 75, 13, 14, 15, 396, 131, 76, - 135, 140, 175, 458, 507, 403, 120, 121, 155, 77, - 146, 467, 154, 78, 515, 411, 327, 161, 83, 83, - 83, 83, 165, 524, 79, 328, 329, 120, 121, 157, - 330, 10, 323, 167, 170, 331, 221, 222, 223, 215, - 171, 332, 257, 258, 259, 71, 176, 71, 184, 197, - 198, 333, 72, 395, 72, 334, 199, 363, 200, 202, - 203, 204, 205, 206, 208, 209, 79, 210, 226, 522, - 216, 217, 153, 218, 335, 219, 220, 186, 189, 73, - 74, 73, 74, 225, 227, 186, 189, 282, 229, 75, - 238, 75, 243, 181, 183, 76, 251, 76, 252, 254, - 283, 284, 285, 286, 256, 77, 287, 77, 279, 78, - 281, 78, 299, 84, 84, 84, 84, 309, 288, 310, - 79, 212, 79, 570, 318, 319, 373, 71, 351, 71, - 352, 368, 369, 428, 72, 374, 72, 449, 289, 375, - 376, 377, 439, 378, 379, 380, 382, 383, 384, 246, - 385, 249, 390, 392, 397, 398, 399, 400, 454, 401, - 402, 73, 74, 73, 74, 404, 417, 418, 419, 420, - 405, 75, 406, 75, 473, 454, 454, 76, 407, 76, - 276, 645, 408, 647, 409, 649, 410, 77, 412, 77, - 413, 78, 414, 78, 280, 415, 13, 14, 15, 416, - 436, 450, 79, 460, 79, 469, 16, 482, 17, 486, - 364, 489, 484, 531, 314, 490, 491, 317, 495, 18, - 497, 19, 499, 506, 20, 508, 509, 21, 22, 595, - 23, 511, 83, 513, 516, 517, 24, 25, 518, 519, - 521, 26, 27, 525, 526, 529, 530, 532, 372, 533, - 534, 537, 539, 716, 544, 545, 28, 547, 610, 615, - 29, 612, 548, 553, 614, 554, 30, 555, 556, 717, - 575, 576, 578, 579, 31, 596, 597, 181, 183, 604, - 606, 607, 623, 611, 613, 393, 616, 621, 627, 629, - 631, 270, 559, 561, 563, 641, 642, 660, 663, 653, - 664, 665, 656, 669, 671, 32, 678, 679, 692, 557, - 701, 702, 708, 709, 710, 711, 583, 668, 593, 311, - 670, 435, 228, 0, 0, 0, 190, 84, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 685, 0, - 425, 427, 429, 430, 431, 432, 433, 434, 0, 691, - 438, 440, 441, 442, 0, 0, 0, 445, 446, 447, - 448, 0, 0, 0, 0, 0, 0, 0, 181, 0, - 183, 454, 0, 454, 0, 0, 181, 0, 183, 0, - 598, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 487, 0, 488, 0, 0, - 0, 493, 494, 0, 0, 0, 498, 0, 0, 500, - 501, 0, 0, 502, 503, 504, 505, 0, 0, 0, + 49, 342, 49, 444, 468, 470, 68, 351, 13, 14, + 15, 83, 456, 83, 83, 83, 83, 83, 69, 83, + 83, 83, 83, 83, 238, 83, 91, 122, 241, 159, + 358, 329, 99, 343, 101, 317, 86, 87, 88, 89, + 90, 359, 94, 95, 96, 97, 98, 83, 100, 150, + 151, 238, 232, 241, 193, 83, 150, 151, 150, 151, + 110, 155, 157, 158, 244, 204, 161, 241, 318, 165, + 105, 117, 13, 14, 15, 13, 14, 15, 113, 126, + 132, 13, 14, 15, 13, 14, 15, 670, 6, 8, + 10, 12, 13, 14, 15, 363, 239, 83, 149, 242, + 13, 14, 15, 84, 132, 84, 84, 84, 84, 84, + 346, 84, 84, 84, 84, 84, 319, 84, 150, 151, + 148, 238, 230, 507, 509, 188, 238, 269, 85, 132, + 183, 186, 561, 102, 120, 121, 485, 241, 518, 84, + 132, 320, 230, 643, 634, 645, 631, 84, 211, 103, + 321, 322, 162, 562, 346, 323, 347, 671, 305, 188, + 324, 308, 563, 28, 379, 104, 325, 591, 106, 522, + 649, 107, 133, 380, 108, 71, 326, 109, 652, 24, + 327, 247, 72, 348, 349, 249, 681, 449, 564, 84, + 350, 79, 192, 515, 417, 458, 133, 455, 544, 328, + 347, 565, 132, 168, 625, 464, 627, 28, 545, 73, + 74, 208, 381, 291, 212, 635, 168, 191, 632, 75, + 292, 133, 561, 523, 294, 76, 605, 348, 349, 452, + 495, 111, 133, 306, 581, 77, 309, 461, 295, 78, + 347, 588, 112, 562, 296, 114, 49, 49, 49, 116, + 79, 191, 563, 228, 231, 119, 297, 234, 316, 454, + 254, 448, 123, 68, 261, 262, 364, 463, 266, 457, + 124, 496, 582, 585, 589, 69, 298, 125, 564, 583, + 586, 8, 8, 8, 12, 256, 258, 260, 12, 12, + 264, 597, 12, 268, 133, 374, 414, 272, 351, 127, + 382, 120, 121, 384, 213, 584, 587, 1, 2, 3, + 4, 214, 489, 416, 128, 388, 13, 14, 15, 330, + 389, 606, 129, 304, 150, 151, 502, 130, 396, 120, + 121, 154, 120, 121, 156, 134, 510, 139, 404, 145, + 153, 83, 83, 83, 83, 519, 218, 219, 220, 451, + 160, 164, 10, 331, 332, 24, 166, 460, 333, 251, + 252, 253, 169, 334, 410, 411, 412, 413, 170, 335, + 173, 181, 194, 195, 196, 197, 388, 199, 200, 336, + 201, 202, 71, 337, 203, 205, 338, 215, 339, 72, + 340, 206, 207, 223, 79, 216, 217, 222, 224, 226, + 183, 186, 341, 713, 235, 237, 71, 245, 183, 186, + 246, 714, 248, 72, 250, 517, 73, 74, 273, 356, + 275, 293, 311, 312, 478, 366, 75, 361, 362, 367, + 368, 369, 76, 84, 84, 84, 84, 370, 371, 152, + 73, 74, 77, 372, 373, 375, 78, 376, 71, 377, + 75, 378, 383, 421, 385, 72, 76, 79, 390, 178, + 180, 391, 432, 392, 567, 344, 77, 393, 394, 395, + 78, 397, 398, 399, 400, 401, 402, 403, 447, 405, + 406, 79, 73, 74, 407, 408, 276, 209, 442, 345, + 409, 429, 75, 436, 466, 447, 447, 437, 76, 277, + 278, 279, 280, 443, 453, 281, 462, 642, 77, 644, + 475, 646, 78, 240, 477, 243, 479, 282, 482, 483, + 13, 14, 15, 79, 484, 488, 490, 492, 501, 71, + 16, 357, 17, 503, 504, 506, 72, 283, 508, 511, + 512, 513, 514, 18, 270, 19, 516, 520, 20, 521, + 524, 21, 22, 525, 23, 526, 592, 527, 274, 83, + 24, 25, 528, 73, 74, 26, 27, 529, 532, 534, + 32, 539, 540, 75, 542, 307, 543, 550, 310, 76, + 28, 551, 595, 552, 29, 607, 612, 553, 609, 77, + 30, 611, 572, 78, 573, 575, 576, 593, 31, 594, + 554, 601, 603, 604, 79, 608, 590, 610, 613, 365, + 618, 0, 624, 264, 556, 558, 560, 620, 626, 628, + 428, 638, 639, 657, 660, 661, 650, 662, 666, 653, + 668, 225, 675, 676, 689, 0, 698, 699, 705, 706, + 580, 707, 708, 187, 665, 386, 0, 667, 0, 0, + 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 682, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 688, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 447, 0, 447, 0, 0, + 418, 420, 422, 423, 424, 425, 426, 427, 0, 0, + 431, 433, 434, 435, 0, 0, 0, 438, 439, 440, + 441, 0, 0, 0, 0, 0, 0, 0, 178, 0, + 180, 0, 0, 0, 0, 0, 178, 0, 180, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 480, 0, 481, 0, 0, + 0, 486, 487, 0, 0, 0, 491, 0, 0, 493, + 494, 178, 180, 497, 498, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 536, 0, 538, 0, 0, 540, 541, 0, 0, 0, - 0, 542, 543, 0, 0, 0, 546, 0, 0, 0, - 549, 550, 551, 552, 0, 0, 0, 0, 0, 0, + 531, 0, 533, 0, 0, 535, 536, 0, 0, 0, + 0, 537, 538, 0, 0, 0, 541, 0, 0, 0, + 0, 0, 546, 547, 548, 549, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 569, 536, 571, 572, 573, 574, - 0, 0, 0, 0, 577, 0, 0, 0, 0, 580, - 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 599, 0, 601, - 602, 603, 0, 0, 0, 605, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 566, 531, 568, 569, + 570, 571, 0, 0, 0, 0, 574, 0, 0, 0, + 0, 0, 0, 577, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 618, 620, 0, 622, 0, 0, - 624, 625, 0, 626, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 632, 633, 0, 636, 0, 639, 0, - 0, 0, 0, 643, 644, 0, 0, 0, 0, 0, - 650, 651, 0, 0, 654, 0, 0, 657, 659, 0, - 0, 661, 662, 0, 0, 0, 0, 0, 666, 667, - 0, 0, 0, 0, 0, 672, 0, 675, 0, 676, - 677, 0, 0, 0, 0, 0, 680, 681, 682, 683, - 0, 0, 0, 0, 686, 0, 0, 0, 687, 688, - 689, 690, 0, 0, 693, 694, 695, 696, 697, 698, - 699, 700, 0, 0, 703, 704, 705, 706, 707, 0, - 0, 0, 0, 0, 0, 712, 0, 13, 14, 15, - 713, 714, 50, 51, 0, 0, 52, 16, 0, 17, - 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, - 18, 0, 19, 0, 0, 20, 0, 0, 21, 22, - 0, 23, 0, 0, 55, 0, 0, 24, 25, 56, - 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, - 0, 57, 0, 0, 0, 58, 59, 28, 0, 60, - 61, 29, 0, 62, 0, 0, 0, 30, 13, 14, - 15, 0, 0, 50, 51, 31, 63, 52, 16, 0, - 17, 0, 53, 0, 320, 0, 0, 54, 0, 0, - 0, 18, 0, 19, 0, 0, 20, 0, 0, 21, - 22, 0, 23, 0, 0, 55, 0, 0, 24, 25, - 56, 0, 0, 26, 27, 0, 0, 0, 0, 0, - 0, 0, 57, 0, 0, 0, 58, 59, 28, 0, - 60, 61, 29, 0, 62, 0, 0, 0, 30, 13, - 14, 15, 0, 0, 50, 51, 31, 63, 52, 16, - 0, 17, 0, 53, 0, 321, 0, 0, 54, 0, - 0, 0, 18, 0, 19, 0, 0, 20, 0, 0, - 21, 22, 0, 23, 0, 0, 55, 0, 0, 24, - 25, 56, 0, 0, 26, 27, 0, 0, 0, 0, - 0, 0, 0, 57, 0, 0, 0, 58, 59, 28, - 0, 60, 61, 29, 0, 62, 0, 0, 0, 30, - 13, 14, 15, 0, 0, 50, 51, 31, 63, 52, - 16, 0, 17, 0, 53, 0, 322, 0, 0, 54, - 0, 0, 0, 18, 0, 19, 0, 0, 20, 0, - 0, 21, 22, 0, 23, 0, 0, 55, 0, 0, - 24, 25, 56, 0, 0, 26, 27, 0, 0, 0, - 0, 0, 0, 0, 57, 0, 0, 0, 58, 59, - 28, 0, 60, 61, 29, 0, 62, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 31, 63 + 0, 596, 0, 598, 599, 600, 0, 0, 0, 602, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 615, 617, + 0, 619, 0, 0, 621, 622, 0, 623, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 629, 630, 0, + 633, 0, 636, 0, 0, 0, 0, 640, 641, 0, + 0, 0, 0, 0, 647, 648, 0, 0, 651, 0, + 0, 654, 656, 0, 0, 658, 659, 0, 0, 0, + 0, 0, 663, 664, 0, 0, 0, 0, 0, 669, + 0, 672, 0, 673, 674, 0, 0, 0, 0, 0, + 677, 678, 679, 680, 0, 0, 0, 0, 683, 0, + 0, 0, 684, 685, 686, 687, 0, 0, 690, 691, + 692, 693, 694, 695, 696, 697, 0, 0, 700, 701, + 702, 703, 704, 0, 0, 0, 0, 0, 0, 709, + 0, 13, 14, 15, 710, 711, 50, 51, 0, 0, + 52, 16, 0, 17, 0, 53, 0, 0, 0, 0, + 54, 0, 0, 0, 18, 0, 19, 0, 0, 20, + 0, 0, 21, 22, 0, 23, 0, 0, 55, 0, + 0, 24, 25, 56, 0, 0, 26, 27, 0, 0, + 0, 0, 0, 0, 0, 57, 0, 0, 0, 58, + 59, 28, 0, 60, 61, 29, 0, 62, 0, 0, + 0, 30, 13, 14, 15, 0, 0, 50, 51, 31, + 63, 52, 16, 0, 17, 0, 53, 0, 313, 0, + 0, 54, 0, 0, 0, 18, 0, 19, 0, 0, + 20, 0, 0, 21, 22, 0, 23, 0, 0, 55, + 0, 0, 24, 25, 56, 0, 0, 26, 27, 0, + 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, + 58, 59, 28, 0, 60, 61, 29, 0, 62, 0, + 0, 0, 30, 13, 14, 15, 0, 0, 50, 51, + 31, 63, 52, 16, 0, 17, 0, 53, 0, 314, + 0, 0, 54, 0, 0, 0, 18, 0, 19, 0, + 0, 20, 0, 0, 21, 22, 0, 23, 0, 0, + 55, 0, 0, 24, 25, 56, 0, 0, 26, 27, + 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, + 0, 58, 59, 28, 0, 60, 61, 29, 0, 62, + 0, 0, 0, 30, 13, 14, 15, 0, 0, 50, + 51, 31, 63, 52, 16, 0, 17, 0, 53, 0, + 315, 0, 0, 54, 0, 0, 0, 18, 0, 19, + 0, 0, 20, 0, 0, 21, 22, 0, 23, 0, + 0, 55, 0, 0, 24, 25, 56, 0, 0, 26, + 27, 0, 0, 0, 0, 0, 0, 0, 57, 0, + 0, 0, 58, 59, 28, 0, 60, 61, 29, 0, + 62, 0, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 0, 31, 63 }; static const short yycheck[] = { - 5, 265, 7, 310, 72, 18, 415, 416, 309, 3, - 4, 16, 18, 18, 19, 20, 21, 22, 269, 24, - 25, 26, 27, 28, 109, 30, 23, 3, 4, 5, - 18, 20, 29, 18, 31, 36, 3, 4, 106, 107, - 108, 3, 4, 111, 56, 57, 114, 52, 3, 4, - 135, 3, 4, 5, 170, 60, 19, 3, 4, 5, - 57, 146, 3, 4, 5, 3, 4, 5, 184, 3, - 4, 68, 3, 4, 5, 19, 42, 90, 90, 76, - 85, 18, 89, 19, 90, 51, 3, 4, 5, 90, - 43, 1, 2, 3, 4, 402, 90, 102, 103, 400, - 168, 90, 90, 410, 109, 90, 16, 408, 18, 19, - 20, 21, 22, 89, 24, 25, 26, 27, 28, 19, - 30, 89, 190, 90, 90, 210, 131, 90, 90, 19, - 135, 128, 129, 57, 89, 397, 90, 90, 90, 26, - 64, 146, 52, 89, 406, 79, 90, 7, 89, 154, - 60, 89, 57, 90, 90, 10, 57, 21, 89, 64, - 165, 18, 19, 20, 21, 22, 90, 24, 25, 26, - 27, 28, 89, 30, 89, 85, 3, 4, 42, 3, - 4, 41, 42, 43, 42, 90, 46, 51, 193, 90, - 90, 51, 102, 51, 10, 52, 89, 57, 57, 109, - 90, 56, 611, 60, 613, 210, 116, 67, 63, 405, - 69, 71, 122, 77, 74, 57, 76, 413, 78, 89, - 130, 131, 82, 50, 38, 135, 90, 69, 83, 84, - 90, 90, 90, 404, 23, 90, 146, 89, 52, 244, - 56, 412, 247, 399, 58, 102, 89, 63, 21, 79, - 89, 407, 257, 258, 259, 165, 70, 167, 168, 50, - 90, 171, 85, 86, 87, 88, 57, 83, 84, 42, - 89, 263, 277, 265, 90, 90, 90, 200, 51, 7, - 89, 204, 205, 3, 4, 208, 14, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 365, 208, 209, - 210, 298, 89, 213, 77, 89, 557, 312, 89, 89, - 315, 89, 89, 41, 42, 89, 79, 90, 582, 89, - 436, 7, 319, 51, 3, 4, 5, 324, 89, 57, - 89, 89, 242, 401, 450, 332, 3, 4, 5, 67, - 89, 409, 89, 71, 460, 342, 32, 89, 353, 354, - 355, 356, 89, 469, 82, 41, 42, 3, 4, 5, - 46, 271, 90, 89, 89, 51, 3, 4, 5, 90, - 89, 57, 197, 198, 199, 7, 89, 7, 89, 89, - 89, 67, 14, 380, 14, 71, 89, 271, 89, 89, - 89, 89, 89, 89, 89, 89, 82, 89, 89, 467, - 90, 90, 104, 90, 90, 90, 90, 404, 405, 41, - 42, 41, 42, 90, 90, 412, 413, 39, 90, 51, - 90, 51, 90, 125, 126, 57, 90, 57, 90, 90, - 52, 53, 54, 55, 90, 67, 58, 67, 90, 71, - 90, 71, 90, 353, 354, 355, 356, 89, 70, 89, - 82, 153, 82, 537, 90, 89, 89, 7, 90, 7, - 90, 90, 90, 373, 14, 89, 14, 90, 90, 89, - 89, 89, 382, 89, 89, 89, 89, 89, 89, 181, - 89, 183, 89, 89, 89, 89, 89, 89, 398, 89, - 89, 41, 42, 41, 42, 89, 353, 354, 355, 356, - 89, 51, 89, 51, 414, 415, 416, 57, 89, 57, - 212, 627, 89, 629, 89, 631, 89, 67, 89, 67, - 89, 71, 89, 71, 226, 89, 3, 4, 5, 89, - 89, 89, 82, 89, 82, 89, 13, 89, 15, 90, - 90, 90, 89, 89, 246, 90, 90, 249, 90, 26, - 90, 28, 90, 90, 31, 90, 90, 34, 35, 564, - 37, 90, 567, 90, 90, 90, 43, 44, 90, 90, - 90, 48, 49, 90, 90, 90, 90, 89, 280, 89, - 89, 89, 89, 0, 90, 90, 63, 90, 585, 594, - 67, 588, 90, 90, 591, 90, 73, 90, 89, 0, - 90, 90, 90, 90, 81, 89, 89, 309, 310, 90, - 90, 90, 90, 89, 89, 317, 89, 89, 89, 89, - 89, 531, 532, 533, 534, 90, 90, 90, 90, 634, - 90, 90, 637, 89, 89, 5, 90, 90, 89, 531, - 90, 90, 90, 90, 90, 90, 556, 652, 562, 242, - 655, 380, 165, -1, -1, -1, 130, 567, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 673, -1, - 372, 373, 374, 375, 376, 377, 378, 379, -1, 684, - 382, 383, 384, 385, -1, -1, -1, 389, 390, 391, - 392, -1, -1, -1, -1, -1, -1, -1, 400, -1, - 402, 611, -1, 613, -1, -1, 408, -1, 410, -1, - 567, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 427, -1, 429, -1, -1, - -1, 433, 434, -1, -1, -1, 438, -1, -1, 441, - 442, -1, -1, 445, 446, 447, 448, -1, -1, -1, + 5, 259, 7, 390, 408, 409, 57, 263, 3, 4, + 5, 16, 399, 18, 19, 20, 21, 22, 69, 24, + 25, 26, 27, 28, 18, 30, 23, 72, 19, 109, + 79, 257, 29, 259, 31, 57, 18, 19, 20, 21, + 22, 90, 24, 25, 26, 27, 28, 52, 30, 3, + 4, 18, 169, 19, 134, 60, 3, 4, 3, 4, + 57, 106, 107, 108, 181, 145, 111, 19, 90, 114, + 52, 68, 3, 4, 5, 3, 4, 5, 60, 76, + 85, 3, 4, 5, 3, 4, 5, 20, 1, 2, + 3, 4, 3, 4, 5, 90, 90, 102, 103, 90, + 3, 4, 5, 16, 109, 18, 19, 20, 21, 22, + 10, 24, 25, 26, 27, 28, 7, 30, 3, 4, + 102, 18, 167, 90, 90, 130, 18, 207, 89, 134, + 127, 128, 21, 26, 3, 4, 90, 19, 90, 52, + 145, 32, 187, 90, 19, 90, 18, 60, 153, 89, + 41, 42, 23, 42, 10, 46, 56, 90, 89, 164, + 51, 89, 51, 63, 42, 89, 57, 89, 89, 36, + 89, 89, 85, 51, 89, 7, 67, 89, 89, 43, + 71, 50, 14, 83, 84, 190, 89, 393, 77, 102, + 90, 82, 90, 90, 79, 401, 109, 398, 90, 90, + 56, 90, 207, 116, 608, 406, 610, 63, 90, 41, + 42, 90, 90, 50, 90, 90, 129, 130, 90, 51, + 57, 134, 21, 90, 38, 57, 90, 83, 84, 395, + 436, 89, 145, 238, 90, 67, 241, 403, 52, 71, + 56, 57, 89, 42, 58, 89, 251, 252, 253, 89, + 82, 164, 51, 166, 167, 89, 70, 170, 90, 397, + 197, 392, 89, 57, 201, 202, 271, 405, 205, 400, + 89, 437, 57, 57, 90, 69, 90, 89, 77, 64, + 64, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 90, 205, 206, 207, 292, 90, 210, 554, 89, + 305, 3, 4, 308, 90, 90, 90, 85, 86, 87, + 88, 90, 429, 358, 89, 312, 3, 4, 5, 7, + 317, 579, 89, 236, 3, 4, 443, 89, 325, 3, + 4, 5, 3, 4, 5, 89, 453, 89, 335, 89, + 89, 346, 347, 348, 349, 462, 3, 4, 5, 394, + 89, 89, 265, 41, 42, 43, 89, 402, 46, 194, + 195, 196, 89, 51, 346, 347, 348, 349, 89, 57, + 89, 89, 89, 89, 89, 89, 373, 89, 89, 67, + 89, 89, 7, 71, 89, 89, 74, 90, 76, 14, + 78, 89, 89, 89, 82, 90, 90, 90, 90, 90, + 397, 398, 90, 0, 90, 90, 7, 90, 405, 406, + 90, 0, 90, 14, 90, 460, 41, 42, 90, 265, + 90, 90, 90, 89, 79, 89, 51, 90, 90, 89, + 89, 89, 57, 346, 347, 348, 349, 89, 89, 104, + 41, 42, 67, 89, 89, 89, 71, 89, 7, 89, + 51, 89, 89, 366, 89, 14, 57, 82, 89, 124, + 125, 89, 375, 89, 532, 90, 67, 89, 89, 89, + 71, 89, 89, 89, 89, 89, 89, 89, 391, 89, + 89, 82, 41, 42, 89, 89, 39, 152, 90, 90, + 89, 89, 51, 89, 407, 408, 409, 89, 57, 52, + 53, 54, 55, 89, 89, 58, 89, 624, 67, 626, + 89, 628, 71, 178, 89, 180, 90, 70, 90, 90, + 3, 4, 5, 82, 90, 90, 90, 90, 90, 7, + 13, 90, 15, 90, 90, 90, 14, 90, 90, 90, + 90, 90, 90, 26, 209, 28, 90, 90, 31, 90, + 90, 34, 35, 90, 37, 89, 561, 89, 223, 564, + 43, 44, 89, 41, 42, 48, 49, 89, 89, 89, + 5, 90, 90, 51, 90, 240, 90, 90, 243, 57, + 63, 90, 564, 90, 67, 582, 591, 89, 585, 67, + 73, 588, 90, 71, 90, 90, 90, 89, 81, 89, + 526, 90, 90, 90, 82, 89, 559, 89, 89, 274, + 89, -1, 89, 526, 527, 528, 529, 90, 89, 89, + 373, 90, 90, 90, 90, 90, 631, 90, 89, 634, + 89, 164, 90, 90, 89, -1, 90, 90, 90, 90, + 553, 90, 90, 129, 649, 310, -1, 652, -1, -1, + -1, 564, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 670, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 681, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 608, -1, 610, -1, -1, + 365, 366, 367, 368, 369, 370, 371, 372, -1, -1, + 375, 376, 377, 378, -1, -1, -1, 382, 383, 384, + 385, -1, -1, -1, -1, -1, -1, -1, 393, -1, + 395, -1, -1, -1, -1, -1, 401, -1, 403, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 420, -1, 422, -1, -1, + -1, 426, 427, -1, -1, -1, 431, -1, -1, 434, + 435, 436, 437, 438, 439, 440, 441, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 482, -1, 484, -1, -1, 487, 488, -1, -1, -1, - -1, 493, 494, -1, -1, -1, 498, -1, -1, -1, - 502, 503, 504, 505, -1, -1, -1, -1, -1, -1, + 475, -1, 477, -1, -1, 480, 481, -1, -1, -1, + -1, 486, 487, -1, -1, -1, 491, -1, -1, -1, + -1, -1, 497, 498, 499, 500, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 536, 537, 538, 539, 540, 541, - -1, -1, -1, -1, 546, -1, -1, -1, -1, 551, - 552, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 569, -1, 571, - 572, 573, -1, -1, -1, 577, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 531, 532, 533, 534, + 535, 536, -1, -1, -1, -1, 541, -1, -1, -1, + -1, -1, -1, 548, 549, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 596, 597, -1, 599, -1, -1, - 602, 603, -1, 605, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 615, 616, -1, 618, -1, 620, -1, - -1, -1, -1, 625, 626, -1, -1, -1, -1, -1, - 632, 633, -1, -1, 636, -1, -1, 639, 640, -1, - -1, 643, 644, -1, -1, -1, -1, -1, 650, 651, - -1, -1, -1, -1, -1, 657, -1, 659, -1, 661, - 662, -1, -1, -1, -1, -1, 668, 669, 670, 671, - -1, -1, -1, -1, 676, -1, -1, -1, 680, 681, - 682, 683, -1, -1, 686, 687, 688, 689, 690, 691, - 692, 693, -1, -1, 696, 697, 698, 699, 700, -1, - -1, -1, -1, -1, -1, 707, -1, 3, 4, 5, - 712, 713, 8, 9, -1, -1, 12, 13, -1, 15, - -1, 17, -1, -1, -1, -1, 22, -1, -1, -1, - 26, -1, 28, -1, -1, 31, -1, -1, 34, 35, - -1, 37, -1, -1, 40, -1, -1, 43, 44, 45, - -1, -1, 48, 49, -1, -1, -1, -1, -1, -1, - -1, 57, -1, -1, -1, 61, 62, 63, -1, 65, - 66, 67, -1, 69, -1, -1, -1, 73, 3, 4, - 5, -1, -1, 8, 9, 81, 82, 12, 13, -1, - 15, -1, 17, -1, 90, -1, -1, 22, -1, -1, - -1, 26, -1, 28, -1, -1, 31, -1, -1, 34, - 35, -1, 37, -1, -1, 40, -1, -1, 43, 44, - 45, -1, -1, 48, 49, -1, -1, -1, -1, -1, - -1, -1, 57, -1, -1, -1, 61, 62, 63, -1, - 65, 66, 67, -1, 69, -1, -1, -1, 73, 3, - 4, 5, -1, -1, 8, 9, 81, 82, 12, 13, - -1, 15, -1, 17, -1, 90, -1, -1, 22, -1, - -1, -1, 26, -1, 28, -1, -1, 31, -1, -1, - 34, 35, -1, 37, -1, -1, 40, -1, -1, 43, - 44, 45, -1, -1, 48, 49, -1, -1, -1, -1, - -1, -1, -1, 57, -1, -1, -1, 61, 62, 63, - -1, 65, 66, 67, -1, 69, -1, -1, -1, 73, - 3, 4, 5, -1, -1, 8, 9, 81, 82, 12, - 13, -1, 15, -1, 17, -1, 90, -1, -1, 22, - -1, -1, -1, 26, -1, 28, -1, -1, 31, -1, - -1, 34, 35, -1, 37, -1, -1, 40, -1, -1, - 43, 44, 45, -1, -1, 48, 49, -1, -1, -1, - -1, -1, -1, -1, 57, -1, -1, -1, 61, 62, - 63, -1, 65, 66, 67, -1, 69, -1, -1, -1, - 73, -1, -1, -1, -1, -1, -1, -1, 81, 82 + -1, 566, -1, 568, 569, 570, -1, -1, -1, 574, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 593, 594, + -1, 596, -1, -1, 599, 600, -1, 602, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 612, 613, -1, + 615, -1, 617, -1, -1, -1, -1, 622, 623, -1, + -1, -1, -1, -1, 629, 630, -1, -1, 633, -1, + -1, 636, 637, -1, -1, 640, 641, -1, -1, -1, + -1, -1, 647, 648, -1, -1, -1, -1, -1, 654, + -1, 656, -1, 658, 659, -1, -1, -1, -1, -1, + 665, 666, 667, 668, -1, -1, -1, -1, 673, -1, + -1, -1, 677, 678, 679, 680, -1, -1, 683, 684, + 685, 686, 687, 688, 689, 690, -1, -1, 693, 694, + 695, 696, 697, -1, -1, -1, -1, -1, -1, 704, + -1, 3, 4, 5, 709, 710, 8, 9, -1, -1, + 12, 13, -1, 15, -1, 17, -1, -1, -1, -1, + 22, -1, -1, -1, 26, -1, 28, -1, -1, 31, + -1, -1, 34, 35, -1, 37, -1, -1, 40, -1, + -1, 43, 44, 45, -1, -1, 48, 49, -1, -1, + -1, -1, -1, -1, -1, 57, -1, -1, -1, 61, + 62, 63, -1, 65, 66, 67, -1, 69, -1, -1, + -1, 73, 3, 4, 5, -1, -1, 8, 9, 81, + 82, 12, 13, -1, 15, -1, 17, -1, 90, -1, + -1, 22, -1, -1, -1, 26, -1, 28, -1, -1, + 31, -1, -1, 34, 35, -1, 37, -1, -1, 40, + -1, -1, 43, 44, 45, -1, -1, 48, 49, -1, + -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, + 61, 62, 63, -1, 65, 66, 67, -1, 69, -1, + -1, -1, 73, 3, 4, 5, -1, -1, 8, 9, + 81, 82, 12, 13, -1, 15, -1, 17, -1, 90, + -1, -1, 22, -1, -1, -1, 26, -1, 28, -1, + -1, 31, -1, -1, 34, 35, -1, 37, -1, -1, + 40, -1, -1, 43, 44, 45, -1, -1, 48, 49, + -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, + -1, 61, 62, 63, -1, 65, 66, 67, -1, 69, + -1, -1, -1, 73, 3, 4, 5, -1, -1, 8, + 9, 81, 82, 12, 13, -1, 15, -1, 17, -1, + 90, -1, -1, 22, -1, -1, -1, 26, -1, 28, + -1, -1, 31, -1, -1, 34, 35, -1, 37, -1, + -1, 40, -1, -1, 43, 44, 45, -1, -1, 48, + 49, -1, -1, -1, -1, -1, -1, -1, 57, -1, + -1, -1, 61, 62, 63, -1, 65, 66, 67, -1, + 69, -1, -1, -1, 73, -1, -1, -1, -1, -1, + -1, -1, 81, 82 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/share/bison/bison.simple" @@ -1747,11 +1754,12 @@ yyreduce: case 6: #line 230 "parser.yxx" { + assert(!egg_stack.empty()); DCAST(EggData, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg)); } break; case 23: -#line 271 "parser.yxx" +#line 272 "parser.yxx" { string strval = yyvsp[-1]._string; EggCoordinateSystem *cs = new EggCoordinateSystem; @@ -1766,13 +1774,13 @@ case 23: } break; case 24: -#line 294 "parser.yxx" +#line 295 "parser.yxx" { yyval._egg = new EggComment(yyvsp[-3]._string, yyvsp[-1]._string); } break; case 25: -#line 308 "parser.yxx" +#line 309 "parser.yxx" { string tref_name = yyvsp[-2]._string; Filename filename = yyvsp[0]._string; @@ -1787,14 +1795,14 @@ case 25: } break; case 26: -#line 321 "parser.yxx" +#line 322 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; case 28: -#line 337 "parser.yxx" +#line 338 "parser.yxx" { EggTexture *texture = DCAST(EggTexture, egg_stack.back()); string name = yyvsp[-3]._string; @@ -2078,7 +2086,7 @@ case 28: } break; case 30: -#line 630 "parser.yxx" +#line 631 "parser.yxx" { string mref_name = yyvsp[-1]._string; EggMaterial *material = new EggMaterial(mref_name); @@ -2092,14 +2100,14 @@ case 30: } break; case 31: -#line 642 "parser.yxx" +#line 643 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; case 33: -#line 658 "parser.yxx" +#line 659 "parser.yxx" { EggMaterial *material = DCAST(EggMaterial, egg_stack.back()); string name = yyvsp[-3]._string; @@ -2185,7 +2193,7 @@ case 33: } break; case 34: -#line 753 "parser.yxx" +#line 754 "parser.yxx" { string node_name = yyvsp[-3]._string; Filename filename = yyvsp[-1]._string; @@ -2194,7 +2202,7 @@ case 34: } break; case 35: -#line 760 "parser.yxx" +#line 761 "parser.yxx" { if (cmp_nocase_uh(yyvsp[-5]._string, "group") != 0) { eggyyerror("keyword 'group' expected"); @@ -2206,7 +2214,7 @@ case 35: } break; case 36: -#line 780 "parser.yxx" +#line 781 "parser.yxx" { string name = yyvsp[0]._string; EggVertexPool *pool = NULL; @@ -2228,20 +2236,20 @@ case 36: } break; case 37: -#line 800 "parser.yxx" +#line 801 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; case 40: -#line 828 "parser.yxx" +#line 829 "parser.yxx" { egg_stack.push_back(new EggVertex); } break; case 41: -#line 832 "parser.yxx" +#line 833 "parser.yxx" { PT(EggVertex) vtx = DCAST(EggVertex, egg_stack.back()); egg_stack.pop_back(); @@ -2250,7 +2258,7 @@ case 41: } break; case 42: -#line 839 "parser.yxx" +#line 840 "parser.yxx" { vertex_index = (int)yyvsp[0]._number; EggVertexPool *pool = DCAST(EggVertexPool, egg_stack.back()); @@ -2277,7 +2285,7 @@ case 42: } break; case 43: -#line 864 "parser.yxx" +#line 865 "parser.yxx" { PT(EggVertex) vtx = DCAST(EggVertex, egg_stack.back()); egg_stack.pop_back(); @@ -2289,31 +2297,31 @@ case 43: } break; case 44: -#line 885 "parser.yxx" +#line 886 "parser.yxx" { DCAST(EggVertex, egg_stack.back())->set_pos(yyvsp[0]._number); } break; case 45: -#line 889 "parser.yxx" +#line 890 "parser.yxx" { DCAST(EggVertex, egg_stack.back())->set_pos(LPoint2d(yyvsp[-1]._number, yyvsp[0]._number)); } break; case 46: -#line 893 "parser.yxx" +#line 894 "parser.yxx" { DCAST(EggVertex, egg_stack.back())->set_pos(LPoint3d(yyvsp[-2]._number, yyvsp[-1]._number, yyvsp[0]._number)); } break; case 47: -#line 897 "parser.yxx" +#line 898 "parser.yxx" { DCAST(EggVertex, egg_stack.back())->set_pos(LPoint4d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number, yyvsp[0]._number)); } break; case 48: -#line 901 "parser.yxx" +#line 902 "parser.yxx" { EggVertex *vertex = DCAST(EggVertex, egg_stack.back()); EggVertexUV *uv = new EggVertexUV(yyvsp[-1]._string, TexCoordd::zero()); @@ -2326,13 +2334,13 @@ case 48: } break; case 49: -#line 912 "parser.yxx" +#line 913 "parser.yxx" { egg_stack.pop_back(); } break; case 52: -#line 918 "parser.yxx" +#line 919 "parser.yxx" { bool inserted = DCAST(EggVertex, egg_stack.back())->_dxyzs. insert(EggMorphVertex(yyvsp[-5]._string, LVector3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number))).second; @@ -2342,7 +2350,7 @@ case 52: } break; case 53: -#line 926 "parser.yxx" +#line 927 "parser.yxx" { bool inserted = DCAST(EggVertex, egg_stack.back())->_dxyzs. insert(EggMorphVertex(yyvsp[-4]._string, LVector3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number))).second; @@ -2352,13 +2360,13 @@ case 53: } break; case 54: -#line 945 "parser.yxx" +#line 946 "parser.yxx" { DCAST(EggVertexUV, egg_stack.back())->set_uv(TexCoordd(yyvsp[-1]._number, yyvsp[0]._number)); } break; case 55: -#line 949 "parser.yxx" +#line 950 "parser.yxx" { bool inserted = DCAST(EggVertexUV, egg_stack.back())->_duvs. insert(EggMorphTexCoord(yyvsp[-4]._string, LVector2d(yyvsp[-2]._number, yyvsp[-1]._number))).second; @@ -2368,7 +2376,7 @@ case 55: } break; case 56: -#line 957 "parser.yxx" +#line 958 "parser.yxx" { bool inserted = DCAST(EggVertexUV, egg_stack.back())->_duvs. insert(EggMorphTexCoord(yyvsp[-3]._string, LVector2d(yyvsp[-2]._number, yyvsp[-1]._number))).second; @@ -2378,13 +2386,13 @@ case 56: } break; case 57: -#line 975 "parser.yxx" +#line 976 "parser.yxx" { DCAST(EggVertex, egg_stack.back())->set_normal(Normald(yyvsp[-2]._number, yyvsp[-1]._number, yyvsp[0]._number)); } break; case 58: -#line 979 "parser.yxx" +#line 980 "parser.yxx" { bool inserted = DCAST(EggVertex, egg_stack.back())->_dnormals. insert(EggMorphNormal(yyvsp[-5]._string, LVector3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number))).second; @@ -2394,7 +2402,7 @@ case 58: } break; case 59: -#line 987 "parser.yxx" +#line 988 "parser.yxx" { bool inserted = DCAST(EggVertex, egg_stack.back())->_dnormals. insert(EggMorphNormal(yyvsp[-4]._string, LVector3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number))).second; @@ -2404,13 +2412,13 @@ case 59: } break; case 60: -#line 1005 "parser.yxx" +#line 1006 "parser.yxx" { DCAST(EggVertex, egg_stack.back())->set_color(Colorf(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number, yyvsp[0]._number)); } break; case 61: -#line 1009 "parser.yxx" +#line 1010 "parser.yxx" { bool inserted = DCAST(EggVertex, egg_stack.back())->_drgbas. insert(EggMorphColor(yyvsp[-6]._string, LVector4f(yyvsp[-4]._number, yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number))).second; @@ -2420,7 +2428,7 @@ case 61: } break; case 62: -#line 1017 "parser.yxx" +#line 1018 "parser.yxx" { bool inserted = DCAST(EggVertex, egg_stack.back())->_drgbas. insert(EggMorphColor(yyvsp[-5]._string, LVector4f(yyvsp[-4]._number, yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number))).second; @@ -2430,21 +2438,21 @@ case 62: } break; case 63: -#line 1035 "parser.yxx" +#line 1036 "parser.yxx" { EggGroup *group = new EggGroup(yyvsp[0]._string); egg_stack.push_back(group); } break; case 64: -#line 1040 "parser.yxx" +#line 1041 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; case 65: -#line 1055 "parser.yxx" +#line 1056 "parser.yxx" { EggGroup *group = new EggGroup(yyvsp[0]._string); group->set_group_type(EggGroup::GT_joint); @@ -2452,14 +2460,14 @@ case 65: } break; case 66: -#line 1061 "parser.yxx" +#line 1062 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; case 67: -#line 1076 "parser.yxx" +#line 1077 "parser.yxx" { EggGroup *group = new EggGroup(yyvsp[0]._string); group->set_group_type(EggGroup::GT_instance); @@ -2467,14 +2475,14 @@ case 67: } break; case 68: -#line 1082 "parser.yxx" +#line 1083 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; case 70: -#line 1098 "parser.yxx" +#line 1099 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); string name = yyvsp[-3]._string; @@ -2546,7 +2554,7 @@ case 70: } break; case 71: -#line 1168 "parser.yxx" +#line 1169 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); string strval = yyvsp[-1]._string; @@ -2560,14 +2568,14 @@ case 71: } break; case 72: -#line 1180 "parser.yxx" +#line 1181 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); group->set_billboard_center(LPoint3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number)); } break; case 73: -#line 1185 "parser.yxx" +#line 1186 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); string name = yyvsp[-4]._string; @@ -2576,7 +2584,7 @@ case 73: } break; case 74: -#line 1192 "parser.yxx" +#line 1193 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); int value = (int)yyvsp[-1]._number; @@ -2584,7 +2592,7 @@ case 74: } break; case 75: -#line 1198 "parser.yxx" +#line 1199 "parser.yxx" { // The special flavor of DCS, with { sync } or { nosync }. EggGroup *group = DCAST(EggGroup, egg_stack.back()); @@ -2599,7 +2607,7 @@ case 75: } break; case 76: -#line 1211 "parser.yxx" +#line 1212 "parser.yxx" { // The traditional flavor of DART, with { 0 } or { 1 }. EggGroup *group = DCAST(EggGroup, egg_stack.back()); @@ -2608,7 +2616,7 @@ case 76: } break; case 77: -#line 1218 "parser.yxx" +#line 1219 "parser.yxx" { // The special flavor of DART, with { sync } or { nosync }. EggGroup *group = DCAST(EggGroup, egg_stack.back()); @@ -2623,7 +2631,7 @@ case 77: } break; case 78: -#line 1231 "parser.yxx" +#line 1232 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); int value = (int)yyvsp[-1]._number; @@ -2631,7 +2639,7 @@ case 78: } break; case 79: -#line 1237 "parser.yxx" +#line 1238 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); string type = yyvsp[-1]._string; @@ -2639,7 +2647,7 @@ case 79: } break; case 80: -#line 1243 "parser.yxx" +#line 1244 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); int value = (int)yyvsp[-1]._number; @@ -2647,14 +2655,14 @@ case 80: } break; case 81: -#line 1249 "parser.yxx" +#line 1250 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); group->set_tag(yyvsp[-3]._string, yyvsp[-1]._string); } break; case 82: -#line 1254 "parser.yxx" +#line 1255 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); int value = (int)yyvsp[-1]._number; @@ -2662,13 +2670,13 @@ case 82: } break; case 86: -#line 1263 "parser.yxx" +#line 1264 "parser.yxx" { DCAST(EggGroup, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg)); } break; case 87: -#line 1277 "parser.yxx" +#line 1278 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); string strval = yyvsp[0]._string; @@ -2690,7 +2698,7 @@ case 87: } break; case 89: -#line 1308 "parser.yxx" +#line 1309 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); string strval = yyvsp[0]._string; @@ -2704,55 +2712,55 @@ case 89: } break; case 90: -#line 1330 "parser.yxx" +#line 1331 "parser.yxx" { DCAST(EggGroup, egg_stack.back())->clear_transform(); } break; case 100: -#line 1356 "parser.yxx" +#line 1357 "parser.yxx" { DCAST(EggGroup, egg_stack.back())->add_translate(LVector3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number)); } break; case 101: -#line 1362 "parser.yxx" +#line 1363 "parser.yxx" { DCAST(EggGroup, egg_stack.back())->add_rotx(yyvsp[-1]._number); } break; case 102: -#line 1368 "parser.yxx" +#line 1369 "parser.yxx" { DCAST(EggGroup, egg_stack.back())->add_roty(yyvsp[-1]._number); } break; case 103: -#line 1374 "parser.yxx" +#line 1375 "parser.yxx" { DCAST(EggGroup, egg_stack.back())->add_rotz(yyvsp[-1]._number); } break; case 104: -#line 1380 "parser.yxx" +#line 1381 "parser.yxx" { DCAST(EggGroup, egg_stack.back())->add_rotate(yyvsp[-4]._number, LVector3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number)); } break; case 105: -#line 1386 "parser.yxx" +#line 1387 "parser.yxx" { DCAST(EggGroup, egg_stack.back())->add_scale(LVecBase3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number)); } break; case 106: -#line 1390 "parser.yxx" +#line 1391 "parser.yxx" { DCAST(EggGroup, egg_stack.back())->add_uniform_scale(yyvsp[-1]._number); } break; case 109: -#line 1405 "parser.yxx" +#line 1406 "parser.yxx" { DCAST(EggGroup, egg_stack.back())->add_matrix (LMatrix4d(yyvsp[-15]._number, yyvsp[-14]._number, yyvsp[-13]._number, yyvsp[-12]._number, @@ -2762,37 +2770,37 @@ case 109: } break; case 110: -#line 1424 "parser.yxx" +#line 1425 "parser.yxx" { matrix_2d = LMatrix3d::ident_mat(); } break; case 111: -#line 1428 "parser.yxx" +#line 1429 "parser.yxx" { DCAST(EggTexture, egg_stack.back())->set_transform(matrix_2d); } break; case 117: -#line 1450 "parser.yxx" +#line 1451 "parser.yxx" { matrix_2d *= LMatrix3d::translate_mat(yyvsp[-2]._number, yyvsp[-1]._number); } break; case 118: -#line 1456 "parser.yxx" +#line 1457 "parser.yxx" { matrix_2d *= LMatrix3d::rotate_mat(yyvsp[-1]._number); } break; case 119: -#line 1462 "parser.yxx" +#line 1463 "parser.yxx" { matrix_2d *= LMatrix3d::scale_mat(yyvsp[-2]._number, yyvsp[-1]._number); } break; case 122: -#line 1475 "parser.yxx" +#line 1476 "parser.yxx" { matrix_2d *= LMatrix3d(yyvsp[-8]._number, yyvsp[-7]._number, yyvsp[-6]._number, yyvsp[-5]._number, yyvsp[-4]._number, yyvsp[-3]._number, @@ -2800,7 +2808,7 @@ case 122: } break; case 123: -#line 1492 "parser.yxx" +#line 1493 "parser.yxx" { if (yyvsp[-2]._egg != (EggVertexPool *)NULL) { EggVertexPool *pool = DCAST(EggVertexPool, yyvsp[-2]._egg); @@ -2824,13 +2832,13 @@ case 123: } break; case 124: -#line 1525 "parser.yxx" +#line 1526 "parser.yxx" { yyval._number = 1.0; } break; case 125: -#line 1529 "parser.yxx" +#line 1530 "parser.yxx" { string name = yyvsp[-3]._string; double value = yyvsp[-1]._number; @@ -2846,98 +2854,98 @@ case 125: } break; case 127: -#line 1566 "parser.yxx" +#line 1567 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); group->set_lod(EggSwitchConditionDistance(yyvsp[-8]._number, yyvsp[-7]._number, LPoint3d(yyvsp[-4]._number, yyvsp[-3]._number, yyvsp[-2]._number))); } break; case 128: -#line 1571 "parser.yxx" +#line 1572 "parser.yxx" { EggGroup *group = DCAST(EggGroup, egg_stack.back()); group->set_lod(EggSwitchConditionDistance(yyvsp[-9]._number, yyvsp[-8]._number, LPoint3d(yyvsp[-4]._number, yyvsp[-3]._number, yyvsp[-2]._number), yyvsp[-7]._number)); } break; case 129: -#line 1588 "parser.yxx" +#line 1589 "parser.yxx" { egg_stack.push_back(new EggPolygon(yyvsp[0]._string)); } break; case 130: -#line 1592 "parser.yxx" +#line 1593 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; case 131: -#line 1607 "parser.yxx" +#line 1608 "parser.yxx" { egg_stack.push_back(new EggTriangleStrip(yyvsp[0]._string)); } break; case 132: -#line 1611 "parser.yxx" +#line 1612 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; case 133: -#line 1626 "parser.yxx" +#line 1627 "parser.yxx" { egg_stack.push_back(new EggPoint(yyvsp[0]._string)); } break; case 134: -#line 1630 "parser.yxx" +#line 1631 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; case 135: -#line 1645 "parser.yxx" +#line 1646 "parser.yxx" { egg_stack.push_back(new EggLine(yyvsp[0]._string)); } break; case 136: -#line 1649 "parser.yxx" +#line 1650 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; case 137: -#line 1664 "parser.yxx" +#line 1665 "parser.yxx" { egg_stack.push_back(new EggNurbsSurface(yyvsp[0]._string)); } break; case 138: -#line 1668 "parser.yxx" +#line 1669 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; case 139: -#line 1683 "parser.yxx" +#line 1684 "parser.yxx" { egg_stack.push_back(new EggNurbsCurve(yyvsp[0]._string)); } break; case 140: -#line 1687 "parser.yxx" +#line 1688 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; -case 146: +case 145: #line 1718 "parser.yxx" { if (!egg_stack.back()->is_of_type(EggCompositePrimitive::get_class_type())) { @@ -2947,22 +2955,22 @@ case 146: if (yyvsp[-1]._number < 0 || yyvsp[-1]._number >= comp->get_num_components()) { eggyyerror("Invalid component number"); } - // We temporarily add an EggPolygon to the stack, just to receive - // the component attributes. - egg_stack.push_back(new EggPolygon); } + // We temporarily add an EggPolygon to the stack, just to receive + // the component attributes. + egg_stack.push_back(new EggPolygon); } break; -case 147: +case 146: #line 1732 "parser.yxx" { PT(EggPrimitive) prim = DCAST(EggPrimitive, egg_stack.back()); egg_stack.pop_back(); PT(EggCompositePrimitive) comp = DCAST(EggCompositePrimitive, egg_stack.back()); - comp->set_component(yyvsp[-4]._number, prim); + comp->set_component((int)yyvsp[-4]._number, prim); } break; -case 155: +case 154: #line 1746 "parser.yxx" { EggPrimitive *primitive = DCAST(EggPrimitive, egg_stack.back()); @@ -3013,7 +3021,7 @@ case 155: } } break; -case 167: +case 166: #line 1816 "parser.yxx" { EggNurbsCurve *curve = DCAST(EggNurbsCurve, yyvsp[0]._egg); @@ -3021,7 +3029,7 @@ case 167: nurbs->_curves_on_surface.push_back(curve); } break; -case 169: +case 168: #line 1823 "parser.yxx" { EggNurbsSurface *primitive = DCAST(EggNurbsSurface, egg_stack.back()); @@ -3076,7 +3084,7 @@ case 169: } } break; -case 180: +case 179: #line 1897 "parser.yxx" { EggNurbsCurve *primitive = DCAST(EggNurbsCurve, egg_stack.back()); @@ -3137,7 +3145,7 @@ case 180: } } break; -case 181: +case 180: #line 1966 "parser.yxx" { if (yyvsp[0]._egg != (EggTexture *)NULL) { @@ -3146,7 +3154,7 @@ case 181: } } break; -case 182: +case 181: #line 1983 "parser.yxx" { EggTexture *texture = NULL; @@ -3178,7 +3186,7 @@ case 182: DCAST(EggPrimitive, egg_stack.back())->add_texture(texture); } break; -case 183: +case 182: #line 2023 "parser.yxx" { if (yyvsp[0]._egg != (EggMaterial *)NULL) { @@ -3187,13 +3195,13 @@ case 183: } } break; -case 184: +case 183: #line 2040 "parser.yxx" { DCAST(EggPrimitive, egg_stack.back())->set_normal(Normald(yyvsp[-2]._number, yyvsp[-1]._number, yyvsp[0]._number)); } break; -case 185: +case 184: #line 2044 "parser.yxx" { bool inserted = DCAST(EggPrimitive, egg_stack.back())->_dnormals. @@ -3203,7 +3211,7 @@ case 185: } } break; -case 186: +case 185: #line 2052 "parser.yxx" { bool inserted = DCAST(EggPrimitive, egg_stack.back())->_dnormals. @@ -3213,13 +3221,13 @@ case 186: } } break; -case 187: +case 186: #line 2070 "parser.yxx" { DCAST(EggPrimitive, egg_stack.back())->set_color(Colorf(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number, yyvsp[0]._number)); } break; -case 188: +case 187: #line 2074 "parser.yxx" { bool inserted = DCAST(EggPrimitive, egg_stack.back())->_drgbas. @@ -3229,7 +3237,7 @@ case 188: } } break; -case 189: +case 188: #line 2082 "parser.yxx" { bool inserted = DCAST(EggPrimitive, egg_stack.back())->_drgbas. @@ -3239,7 +3247,7 @@ case 189: } } break; -case 190: +case 189: #line 2100 "parser.yxx" { EggPrimitive *primitive = DCAST(EggPrimitive, egg_stack.back()); @@ -3247,7 +3255,7 @@ case 190: primitive->set_bface_flag(value!=0); } break; -case 191: +case 190: #line 2116 "parser.yxx" { if (yyvsp[-2]._egg != (EggVertexPool *)NULL) { @@ -3270,7 +3278,7 @@ case 191: } } break; -case 192: +case 191: #line 2147 "parser.yxx" { EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back()); @@ -3280,7 +3288,7 @@ case 192: nurbs->set_v_order(v_order); } break; -case 193: +case 192: #line 2165 "parser.yxx" { EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back()); @@ -3292,7 +3300,7 @@ case 193: } } break; -case 194: +case 193: #line 2185 "parser.yxx" { EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back()); @@ -3304,14 +3312,14 @@ case 194: } } break; -case 195: +case 194: #line 2205 "parser.yxx" { EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back()); nurbs->_trims.push_back(EggNurbsSurface::Trim()); } break; -case 197: +case 196: #line 2221 "parser.yxx" { EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back()); @@ -3319,7 +3327,7 @@ case 197: nurbs->_trims.back().push_back(EggNurbsSurface::Loop()); } break; -case 198: +case 197: #line 2227 "parser.yxx" { EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back()); @@ -3329,7 +3337,7 @@ case 198: nurbs->_trims.back().back().push_back(curve); } break; -case 199: +case 198: #line 2246 "parser.yxx" { EggNurbsCurve *nurbs = DCAST(EggNurbsCurve, egg_stack.back()); @@ -3337,7 +3345,7 @@ case 199: nurbs->set_order(order); } break; -case 200: +case 199: #line 2262 "parser.yxx" { EggNurbsCurve *nurbs = DCAST(EggNurbsCurve, egg_stack.back()); @@ -3349,7 +3357,7 @@ case 200: } } break; -case 201: +case 200: #line 2283 "parser.yxx" { EggTable *table = new EggTable(yyvsp[0]._string); @@ -3357,14 +3365,14 @@ case 201: egg_stack.push_back(table); } break; -case 202: +case 201: #line 2289 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; -case 203: +case 202: #line 2305 "parser.yxx" { EggTable *table = new EggTable(yyvsp[0]._string); @@ -3372,58 +3380,58 @@ case 203: egg_stack.push_back(table); } break; -case 204: +case 203: #line 2311 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; -case 206: +case 205: #line 2328 "parser.yxx" { DCAST(EggTable, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg)); } break; -case 207: +case 206: #line 2332 "parser.yxx" { DCAST(EggTable, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg)); } break; -case 208: +case 207: #line 2336 "parser.yxx" { DCAST(EggTable, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg)); } break; -case 209: +case 208: #line 2340 "parser.yxx" { DCAST(EggTable, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg)); } break; -case 210: +case 209: #line 2344 "parser.yxx" { DCAST(EggTable, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg)); } break; -case 211: +case 210: #line 2359 "parser.yxx" { EggSAnimData *anim_data = new EggSAnimData(yyvsp[0]._string); egg_stack.push_back(anim_data); } break; -case 212: +case 211: #line 2364 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; -case 214: +case 213: #line 2381 "parser.yxx" { EggSAnimData *anim_data = DCAST(EggSAnimData, egg_stack.back()); @@ -3437,27 +3445,27 @@ case 214: } } break; -case 215: +case 214: #line 2393 "parser.yxx" { DCAST(EggSAnimData, egg_stack.back())->set_data(yyvsp[-1]._number_list); } break; -case 216: +case 215: #line 2407 "parser.yxx" { EggXfmAnimData *anim_data = new EggXfmAnimData(yyvsp[0]._string); egg_stack.push_back(anim_data); } break; -case 217: +case 216: #line 2412 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; -case 219: +case 218: #line 2429 "parser.yxx" { EggXfmAnimData *anim_data = DCAST(EggXfmAnimData, egg_stack.back()); @@ -3476,27 +3484,27 @@ case 219: } } break; -case 220: +case 219: #line 2446 "parser.yxx" { DCAST(EggXfmAnimData, egg_stack.back())->set_data(yyvsp[-1]._number_list); } break; -case 221: +case 220: #line 2460 "parser.yxx" { EggXfmSAnim *anim_group = new EggXfmSAnim(yyvsp[0]._string); egg_stack.push_back(anim_group); } break; -case 222: +case 221: #line 2465 "parser.yxx" { yyval._egg = egg_stack.back(); egg_stack.pop_back(); } break; -case 224: +case 223: #line 2482 "parser.yxx" { EggXfmSAnim *anim_group = DCAST(EggXfmSAnim, egg_stack.back()); @@ -3513,37 +3521,37 @@ case 224: } } break; -case 225: +case 224: #line 2497 "parser.yxx" { DCAST(EggXfmSAnim, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg)); } break; -case 226: +case 225: #line 2512 "parser.yxx" { yyval._number_list = PTA_double::empty_array(0); } break; -case 227: +case 226: #line 2516 "parser.yxx" { yyval._number_list.push_back((double)yyvsp[0]._number); } break; -case 228: +case 227: #line 2530 "parser.yxx" { yyval._number_list = PTA_double::empty_array(0); } break; -case 229: +case 228: #line 2534 "parser.yxx" { yyval._number_list.push_back(yyvsp[0]._number); } break; -case 230: +case 229: #line 2548 "parser.yxx" { string name = yyvsp[0]._string; @@ -3556,7 +3564,7 @@ case 230: } } break; -case 231: +case 230: #line 2569 "parser.yxx" { string name = yyvsp[0]._string; @@ -3569,7 +3577,7 @@ case 231: } } break; -case 232: +case 231: #line 2590 "parser.yxx" { string name = yyvsp[0]._string; @@ -3584,69 +3592,69 @@ case 232: } } break; -case 233: +case 232: #line 2614 "parser.yxx" { eggyyerror("Name required."); yyval._string = ""; } break; -case 236: +case 235: #line 2643 "parser.yxx" { eggyyerror("String required."); yyval._string = ""; } break; -case 238: +case 237: #line 2659 "parser.yxx" { yyval._string = ""; } break; -case 240: +case 239: #line 2677 "parser.yxx" { yyval._string = yyvsp[0]._string; } break; -case 241: +case 240: #line 2681 "parser.yxx" { yyval._string = yyvsp[0]._string; } break; -case 243: +case 242: #line 2698 "parser.yxx" { yyval._string = ""; } break; -case 244: +case 243: #line 2702 "parser.yxx" { yyval._string = yyvsp[0]._string; } break; -case 245: +case 244: #line 2718 "parser.yxx" { yyval._string = yyvsp[0]._string; } break; -case 246: +case 245: #line 2722 "parser.yxx" { yyval._string = yyvsp[-1]._string + "\n" + yyvsp[0]._string; } break; -case 248: +case 247: #line 2737 "parser.yxx" { yyval._number = yyvsp[0]._ulong; } break; -case 249: +case 248: #line 2752 "parser.yxx" { yyval._number = yyvsp[0]._number; @@ -3654,7 +3662,7 @@ case 249: yyval._string = yyvsp[0]._string; } break; -case 250: +case 249: #line 2758 "parser.yxx" { yyval._number = yyvsp[0]._ulong; @@ -3662,7 +3670,7 @@ case 250: yyval._string = yyvsp[0]._string; } break; -case 251: +case 250: #line 2764 "parser.yxx" { yyval._number = 0.0; @@ -3670,7 +3678,7 @@ case 251: yyval._string = yyvsp[0]._string; } break; -case 252: +case 251: #line 2781 "parser.yxx" { int i = (int)yyvsp[0]._number; @@ -3680,7 +3688,7 @@ case 252: } } break; -case 253: +case 252: #line 2789 "parser.yxx" { yyval._number = yyvsp[0]._ulong; diff --git a/panda/src/egg/parser.yxx b/panda/src/egg/parser.yxx index 2c7440afbe..6ed576a485 100644 --- a/panda/src/egg/parser.yxx +++ b/panda/src/egg/parser.yxx @@ -228,6 +228,7 @@ egg: empty | egg node { + assert(!egg_stack.empty()); DCAST(EggData, egg_stack.back())->add_child(DCAST(EggNode, $2)); } ; @@ -1713,7 +1714,6 @@ primitive_component_body: */ primitive_body: empty - | primitive_body COMPONENT '{' primitive_component_body '}' | primitive_body COMPONENT integer '{' { if (!egg_stack.back()->is_of_type(EggCompositePrimitive::get_class_type())) { @@ -1723,17 +1723,17 @@ primitive_body: if ($3 < 0 || $3 >= comp->get_num_components()) { eggyyerror("Invalid component number"); } - // We temporarily add an EggPolygon to the stack, just to receive - // the component attributes. - egg_stack.push_back(new EggPolygon); } + // We temporarily add an EggPolygon to the stack, just to receive + // the component attributes. + egg_stack.push_back(new EggPolygon); } primitive_component_body '}' { PT(EggPrimitive) prim = DCAST(EggPrimitive, egg_stack.back()); egg_stack.pop_back(); PT(EggCompositePrimitive) comp = DCAST(EggCompositePrimitive, egg_stack.back()); - comp->set_component($3, prim); + comp->set_component((int)$3, prim); } | primitive_body TREF '{' primitive_tref_body '}' | primitive_body TEXTURE '{' primitive_texture_body '}' diff --git a/panda/src/egg2pg/eggLoader.cxx b/panda/src/egg2pg/eggLoader.cxx index c6dda9d821..5e3ede7727 100644 --- a/panda/src/egg2pg/eggLoader.cxx +++ b/panda/src/egg2pg/eggLoader.cxx @@ -126,7 +126,8 @@ LODInstance(EggNode *egg_node) { EggLoader:: EggLoader() { // We need to enforce whatever coordinate system the user asked for. - _data.set_coordinate_system(egg_coordinate_system); + _data = new EggData; + _data->set_coordinate_system(egg_coordinate_system); _error = false; } @@ -137,7 +138,7 @@ EggLoader() { //////////////////////////////////////////////////////////////////// EggLoader:: EggLoader(const EggData &data) : - _data(data) + _data(new EggData(data)) { _error = false; } @@ -157,11 +158,11 @@ build_graph() { // Then bin up the polysets and LOD nodes. EggBinner binner(*this); - binner.make_bins(&_data); + binner.make_bins(_data); // Now build up the scene graph. - _root = new ModelRoot(_data.get_egg_filename().get_basename()); - make_node(&_data, _root); + _root = new ModelRoot(_data->get_egg_filename().get_basename()); + make_node(_data, _root); _builder.build(); reparent_decals(); @@ -735,7 +736,7 @@ void EggLoader:: load_textures() { // First, collect all the textures that are referenced. EggTextureCollection tc; - tc.find_used_textures(&_data); + tc.find_used_textures(_data); EggTextureCollection::iterator ti; for (ti = tc.begin(); ti != tc.end(); ++ti) { diff --git a/panda/src/egg2pg/eggLoader.h b/panda/src/egg2pg/eggLoader.h index 0ee365dbe3..bfada1a296 100644 --- a/panda/src/egg2pg/eggLoader.h +++ b/panda/src/egg2pg/eggLoader.h @@ -210,7 +210,7 @@ private: public: PT(PandaNode) _root; - EggData _data; + PT(EggData) _data; bool _error; friend class EggRenderState; diff --git a/panda/src/egg2pg/load_egg_file.cxx b/panda/src/egg2pg/load_egg_file.cxx index 5b6044c938..caf4614218 100644 --- a/panda/src/egg2pg/load_egg_file.cxx +++ b/panda/src/egg2pg/load_egg_file.cxx @@ -25,7 +25,7 @@ static PT(PandaNode) load_from_loader(EggLoader &loader) { - loader._data.load_externals(); + loader._data->load_externals(); loader.build_graph(); @@ -85,9 +85,9 @@ load_egg_file(const string &filename, CoordinateSystem cs) { EggLoader loader; - loader._data.set_egg_filename(egg_filename); - loader._data.set_auto_resolve_externals(true); - loader._data.set_coordinate_system(cs); + loader._data->set_egg_filename(egg_filename); + loader._data->set_auto_resolve_externals(true); + loader._data->set_coordinate_system(cs); bool okflag; VirtualFileSystem *vfs = VirtualFileSystem::get_global_ptr(); @@ -97,7 +97,7 @@ load_egg_file(const string &filename, CoordinateSystem cs) { << "Could not open " << egg_filename << " for reading.\n"; return NULL; } - okflag = loader._data.read(*istr); + okflag = loader._data->read(*istr); vfs->close_read_file(istr); if (!okflag) { @@ -124,10 +124,10 @@ load_egg_data(EggData &data, CoordinateSystem cs) { children_holder.steal_children(data); EggLoader loader(data); - loader._data.steal_children(children_holder); + loader._data->steal_children(children_holder); - loader._data.set_auto_resolve_externals(true); - loader._data.set_coordinate_system(cs); + loader._data->set_auto_resolve_externals(true); + loader._data->set_coordinate_system(cs); return load_from_loader(loader); } diff --git a/panda/src/express/memoryUsage.cxx b/panda/src/express/memoryUsage.cxx index 637dccb580..7fa6cd158a 100644 --- a/panda/src/express/memoryUsage.cxx +++ b/panda/src/express/memoryUsage.cxx @@ -499,6 +499,7 @@ ns_update_type(ReferenceCount *ptr, TypeHandle type) { express_cat.error() << "Attempt to update type to " << type << " for unrecorded pointer " << (void *)ptr << "!\n"; + nassertv(false); return; } diff --git a/panda/src/gobj/qpgeomPrimitive.cxx b/panda/src/gobj/qpgeomPrimitive.cxx index 3aa043c0f4..e83f1208d3 100644 --- a/panda/src/gobj/qpgeomPrimitive.cxx +++ b/panda/src/gobj/qpgeomPrimitive.cxx @@ -141,9 +141,10 @@ close_primitive() { if (num_vertices_per_primitive == 0) { // This is a complex primitive type like a triangle strip: each // primitive uses a different number of vertices. - if (cdata->_lengths.empty() || - cdata->_lengths.back() != (int)cdata->_vertices.size()) { + if (cdata->_lengths.empty()) { cdata->_lengths.push_back((int)cdata->_vertices.size()); + } else if (cdata->_lengths.back() != (int)cdata->_vertices.size()) { + cdata->_lengths.push_back((int)cdata->_vertices.size() - cdata->_lengths.back()); } } else { diff --git a/panda/src/gobj/qpgeomTristrips.cxx b/panda/src/gobj/qpgeomTristrips.cxx index cd18579bbe..0cf3ade808 100644 --- a/panda/src/gobj/qpgeomTristrips.cxx +++ b/panda/src/gobj/qpgeomTristrips.cxx @@ -86,12 +86,17 @@ decompose_impl() { CPTA_ushort::const_iterator vi; vi = vertices.begin(); + cerr << "starting vertices, size = " << vertices.size() << "\n"; + CPTA_int::const_iterator li; for (li = lengths.begin(); li != lengths.end(); ++li) { int length = (*li); + cerr << "length = " << length << "\n"; nassertr(length >= 2, triangles.p()); + nassertr(vi != vertices.end(), this); int v0 = (*vi); ++vi; + nassertr(vi != vertices.end(), this); int v1 = (*vi); ++vi; bool reversed = false; @@ -107,6 +112,7 @@ decompose_impl() { } triangles->add_vertex(*vi); v0 = v1; + nassertr(vi != vertices.end(), this); v1 = *vi; triangles->close_primitive(); ++vi;