// file : xsd/cxx/tree/parsing/int.hxx // copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC // license : GNU GPL v2 + exceptions; see accompanying LICENSE file #ifndef XSD_CXX_TREE_PARSING_INT_HXX #define XSD_CXX_TREE_PARSING_INT_HXX #include #include #include // xml::transcode #include // text_content namespace xsd { namespace cxx { namespace tree { template struct traits { typedef int type; static type create (const xercesc::DOMElement& e, flags f, container* c); static type create (const xercesc::DOMAttr& a, flags f, container* c); static type create (const std::basic_string& s, const xercesc::DOMElement*, flags, container*); }; template int traits:: create (const xercesc::DOMElement& e, flags f, container* c) { return create (text_content (e), 0, f, c); } template int traits:: create (const xercesc::DOMAttr& a, flags f, container* c) { return create (xml::transcode (a.getValue ()), 0, f, c); } template int traits:: create (const std::basic_string& s, const xercesc::DOMElement*, flags, container*) { // This type cannot have whitespaces in its values. As result we // don't need to waste time collapsing whitespaces. All we need to // do is trim the string representation which can be done without // copying. // ro_string tmp (s); trim (tmp); zc_istream is (tmp); type t; is >> t; return t; } } } } #endif // XSD_CXX_TREE_PARSING_INT_HXX