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 00064 class member_type_pskel; 00065 class member_pskel: public ::xml_schema::complex_content 00066 { 00067 public: 00068 // Parser callbacks. Override them in your implementation. 00069 // 00070 // virtual void 00071 // pre (); 00072 00073 virtual void 00074 type (const osm::ObjectType&); 00075 00076 virtual void 00077 ref (long long); 00078 00079 virtual void 00080 role (const ::std::string&); 00081 00082 virtual std::pair<std::string, std::shared_ptr<osm::Element> > 00083 post_member () = 0; 00084 00085 // Parser construction API. 00086 // 00087 void 00088 type_parser (::member_type_pskel&); 00089 00090 void 00091 ref_parser (::xml_schema::long_pskel&); 00092 00093 void 00094 role_parser (::xml_schema::string_pskel&); 00095 00096 void 00097 parsers (::member_type_pskel& /* type */, 00098 ::xml_schema::long_pskel& /* ref */, 00099 ::xml_schema::string_pskel& /* role */); 00100 00101 // Constructor. 00102 // 00103 member_pskel (); 00104 00105 // Implementation. 00106 // 00107 protected: 00108 virtual bool 00109 _attribute_impl_phase_one (const ::xml_schema::ro_string&, 00110 const ::xml_schema::ro_string&, 00111 const ::xml_schema::ro_string&); 00112 00113 00114 protected: 00115 ::member_type_pskel* type_parser_; 00116 ::xml_schema::long_pskel* ref_parser_; 00117 ::xml_schema::string_pskel* role_parser_; 00118 00119 protected: 00120 struct v_state_attr_ 00121 { 00122 bool type; 00123 bool ref; 00124 }; 00125 00126 v_state_attr_ v_state_attr_first_; 00127 ::xsd::cxx::parser::pod_stack v_state_attr_stack_; 00128 00129 virtual void 00130 _pre_a_validate (); 00131 00132 virtual void 00133 _post_a_validate (); 00134 }; 00135 00136 #include <xsd/cxx/post.hxx> 00137 00138 // Begin epilogue. 00139 // 00140 // 00141 // End epilogue. 00142 00143 #endif // MEMBER_PSKEL_HXX