00001 // Copyright (C) 2005-2010 Code Synthesis Tools CC 00002 // 00003 // This program was generated by CodeSynthesis XSD, an XML Schema to 00004 // C++ data binding compiler. 00005 // 00006 // This program is free software; you can redistribute it and/or modify 00007 // it under the terms of the GNU General Public License version 2 as 00008 // published by the Free Software Foundation. 00009 // 00010 // This program is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 // GNU General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU General Public License 00016 // along with this program; if not, write to the Free Software 00017 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00018 // 00019 // In addition, as a special exception, Code Synthesis Tools CC gives 00020 // permission to link this program with the Xerces-C++ library (or with 00021 // modified versions of Xerces-C++ that use the same license as Xerces-C++), 00022 // and distribute linked combinations including the two. You must obey 00023 // the GNU General Public License version 2 in all respects for all of 00024 // the code used other than Xerces-C++. If you modify this copy of the 00025 // program, you may extend this exception to your version of the program, 00026 // but you are not obligated to do so. If you do not wish to do so, delete 00027 // this exception statement from your version. 00028 // 00029 // Furthermore, Code Synthesis Tools CC makes a special exception for 00030 // the Free/Libre and Open Source Software (FLOSS) which is described 00031 // in the accompanying FLOSSE file. 00032 // 00033 00034 #ifndef MEMBER_PSKEL_HXX 00035 #define MEMBER_PSKEL_HXX 00036 00037 // Begin prologue. 00038 // 00039 // 00040 // End prologue. 00041 00042 #include <xsd/cxx/config.hxx> 00043 00044 #if (XSD_INT_VERSION != 3030000L) 00045 #error XSD runtime version mismatch 00046 #endif 00047 00048 #include <xsd/cxx/pre.hxx> 00049 00050 // Forward declarations 00051 // 00052 class member_pskel; 00053 00054 #ifndef XSD_USE_CHAR 00055 #define XSD_USE_CHAR 00056 #endif 00057 00058 #ifndef XSD_CXX_PARSER_USE_CHAR 00059 #define XSD_CXX_PARSER_USE_CHAR 00060 #endif 00061 00062 #include "xml_schema-pskel.hxx" 00063 #include "../elements/osmelements.h" 00064 00065 class member_type_pskel; 00066 class member_pskel: public ::xml_schema::complex_content 00067 { 00068 public: 00069 // Parser callbacks. Override them in your implementation. 00070 // 00071 // virtual void 00072 // pre (); 00073 00074 virtual void 00075 type (const osm::ObjectType&); 00076 00077 virtual void 00078 ref (long long); 00079 00080 virtual void 00081 role (const ::std::string&); 00082 00083 virtual std::pair<std::string, std::shared_ptr<osm::Element> > 00084 post_member () = 0; 00085 00086 // Parser construction API. 00087 // 00088 void 00089 type_parser (::member_type_pskel&); 00090 00091 void 00092 ref_parser (::xml_schema::long_pskel&); 00093 00094 void 00095 role_parser (::xml_schema::string_pskel&); 00096 00097 void 00098 parsers (::member_type_pskel& /* type */, 00099 ::xml_schema::long_pskel& /* ref */, 00100 ::xml_schema::string_pskel& /* role */); 00101 00102 // Constructor. 00103 // 00104 member_pskel (); 00105 00106 // Implementation. 00107 // 00108 protected: 00109 virtual bool 00110 _attribute_impl_phase_one (const ::xml_schema::ro_string&, 00111 const ::xml_schema::ro_string&, 00112 const ::xml_schema::ro_string&); 00113 00114 00115 protected: 00116 ::member_type_pskel* type_parser_; 00117 ::xml_schema::long_pskel* ref_parser_; 00118 ::xml_schema::string_pskel* role_parser_; 00119 00120 protected: 00121 struct v_state_attr_ 00122 { 00123 bool type; 00124 bool ref; 00125 }; 00126 00127 v_state_attr_ v_state_attr_first_; 00128 ::xsd::cxx::parser::pod_stack v_state_attr_stack_; 00129 00130 virtual void 00131 _pre_a_validate (); 00132 00133 virtual void 00134 _post_a_validate (); 00135 }; 00136 00137 #include <xsd/cxx/post.hxx> 00138 00139 // Begin epilogue. 00140 // 00141 // 00142 // End epilogue. 00143 00144 #endif // MEMBER_PSKEL_HXX