/home/martin/workspace/OpenStreetNav/src/xmlparse/xml/relation-pskel.hxx
Go to the documentation of this file.
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 RELATION_PSKEL_HXX
00035 #define RELATION_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 relation_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 member_pskel;
00066 class relation_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   tag (const std::pair<std::string, std::string>&);
00076 
00077   virtual void
00078   member (const std::pair<std::string, std::shared_ptr<osm::Element> >&);
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::Relation
00102   post_relation () = 0;
00103 
00104   // Parser construction API.
00105   //
00106   void
00107   tag_parser (::tag_pskel&);
00108 
00109   void
00110   member_parser (::member_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& /* tag */,
00135            ::member_pskel& /* member */,
00136            ::xml_schema::long_pskel& /* id */,
00137            ::xml_schema::long_pskel& /* uid */,
00138            ::xml_schema::string_pskel& /* user */,
00139            ::xml_schema::date_time_pskel& /* timestamp */,
00140            ::xml_schema::int_pskel& /* changeset */,
00141            ::xml_schema::int_pskel& /* version */,
00142            ::xml_schema::boolean_pskel& /* visible */);
00143 
00144   // Constructor.
00145   //
00146   relation_pskel ();
00147 
00148   // Implementation.
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   ::member_pskel* member_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 (::relation_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 // Begin epilogue.
00233 //
00234 //
00235 // End epilogue.
00236 
00237 #endif // RELATION_PSKEL_HXX
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines