Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef WAY_PSKEL_HXX
00035 #define WAY_PSKEL_HXX
00036
00037
00038
00039
00040
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
00051
00052 class way_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 tag_pskel;
00065 class nd_pskel;
00066 class way_pskel: public ::xml_schema::complex_content
00067 {
00068 public:
00069
00070
00071
00072
00073
00074 virtual void
00075 tag (const std::pair<std::string, std::string>&);
00076
00077 virtual void
00078 nd (int64_t);
00079
00080 virtual void
00081 id (long long);
00082
00083 virtual void
00084 uid (long long);
00085
00086 virtual void
00087 user (const ::std::string&);
00088
00089 virtual void
00090 timestamp (const ::xml_schema::date_time&);
00091
00092 virtual void
00093 changeset (int);
00094
00095 virtual void
00096 version (int);
00097
00098 virtual void
00099 visible (bool);
00100
00101 virtual osm::Way
00102 post_way () = 0;
00103
00104
00105
00106 void
00107 tag_parser (::tag_pskel&);
00108
00109 void
00110 nd_parser (::nd_pskel&);
00111
00112 void
00113 id_parser (::xml_schema::long_pskel&);
00114
00115 void
00116 uid_parser (::xml_schema::long_pskel&);
00117
00118 void
00119 user_parser (::xml_schema::string_pskel&);
00120
00121 void
00122 timestamp_parser (::xml_schema::date_time_pskel&);
00123
00124 void
00125 changeset_parser (::xml_schema::int_pskel&);
00126
00127 void
00128 version_parser (::xml_schema::int_pskel&);
00129
00130 void
00131 visible_parser (::xml_schema::boolean_pskel&);
00132
00133 void
00134 parsers (::tag_pskel& ,
00135 ::nd_pskel& ,
00136 ::xml_schema::long_pskel& ,
00137 ::xml_schema::long_pskel& ,
00138 ::xml_schema::string_pskel& ,
00139 ::xml_schema::date_time_pskel& ,
00140 ::xml_schema::int_pskel& ,
00141 ::xml_schema::int_pskel& ,
00142 ::xml_schema::boolean_pskel& );
00143
00144
00145
00146 way_pskel ();
00147
00148
00149
00150 protected:
00151 virtual bool
00152 _start_element_impl (const ::xml_schema::ro_string&,
00153 const ::xml_schema::ro_string&,
00154 const ::xml_schema::ro_string*);
00155
00156 virtual bool
00157 _end_element_impl (const ::xml_schema::ro_string&,
00158 const ::xml_schema::ro_string&);
00159
00160 virtual bool
00161 _attribute_impl_phase_one (const ::xml_schema::ro_string&,
00162 const ::xml_schema::ro_string&,
00163 const ::xml_schema::ro_string&);
00164
00165
00166 protected:
00167 ::tag_pskel* tag_parser_;
00168 ::nd_pskel* nd_parser_;
00169 ::xml_schema::long_pskel* id_parser_;
00170 ::xml_schema::long_pskel* uid_parser_;
00171 ::xml_schema::string_pskel* user_parser_;
00172 ::xml_schema::date_time_pskel* timestamp_parser_;
00173 ::xml_schema::int_pskel* changeset_parser_;
00174 ::xml_schema::int_pskel* version_parser_;
00175 ::xml_schema::boolean_pskel* visible_parser_;
00176
00177 protected:
00178 struct v_state_descr_
00179 {
00180 void (::way_pskel::*func) (
00181 unsigned long&,
00182 unsigned long&,
00183 const ::xml_schema::ro_string&,
00184 const ::xml_schema::ro_string&,
00185 const ::xml_schema::ro_string*,
00186 bool);
00187 unsigned long state;
00188 unsigned long count;
00189 };
00190
00191 struct v_state_
00192 {
00193 v_state_descr_ data[2UL];
00194 unsigned long size;
00195 };
00196
00197 v_state_ v_state_first_;
00198 ::xsd::cxx::parser::pod_stack v_state_stack_;
00199
00200 virtual void
00201 _pre_e_validate ();
00202
00203 virtual void
00204 _post_e_validate ();
00205
00206 void
00207 choice_0 (unsigned long& state,
00208 unsigned long& count,
00209 const ::xml_schema::ro_string& ns,
00210 const ::xml_schema::ro_string& n,
00211 const ::xml_schema::ro_string* t,
00212 bool start);
00213
00214 protected:
00215 struct v_state_attr_
00216 {
00217 bool id;
00218 };
00219
00220 v_state_attr_ v_state_attr_first_;
00221 ::xsd::cxx::parser::pod_stack v_state_attr_stack_;
00222
00223 virtual void
00224 _pre_a_validate ();
00225
00226 virtual void
00227 _post_a_validate ();
00228 };
00229
00230 #include <xsd/cxx/post.hxx>
00231
00232
00233
00234
00235
00236
00237 #endif // WAY_PSKEL_HXX