// file : xsd/cxx/xml/dom/parsing-source.hxx // copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC // license : GNU GPL v2 + exceptions; see accompanying LICENSE file #ifndef XSD_CXX_XML_DOM_PARSING_SOURCE_HXX #define XSD_CXX_XML_DOM_PARSING_SOURCE_HXX #include #include #include #include #include #include #include #include #include // properies #include #include #include // name #include namespace xsd { namespace cxx { namespace xml { namespace dom { // Parser state object. Can be used for parsing element, attributes, // or both. // template class parser { public: parser (const xercesc::DOMElement& e, bool ep, bool ap); bool more_elements () { return next_element_ != 0; } const xercesc::DOMElement& cur_element () { return *static_cast (next_element_); } void next_element (); bool more_attributes () { return as_ > ai_; } const xercesc::DOMAttr& next_attribute () { return *static_cast (a_->item (ai_++)); } void reset_attributes () { ai_ = 0; } const xercesc::DOMElement& element () const { return element_; } private: parser (const parser&); parser& operator= (const parser&); private: const xercesc::DOMElement& element_; const xercesc::DOMNode* next_element_; const xercesc::DOMNamedNodeMap* a_; XMLSize_t ai_; // Index of the next DOMAttr. XMLSize_t as_; // Cached size of a_. }; // Parsing flags. // const unsigned long dont_validate = 0x00000400UL; const unsigned long no_muliple_imports = 0x00000800UL; template XSD_DOM_AUTO_PTR parse (xercesc::InputSource&, error_handler&, const properties&, unsigned long flags); template XSD_DOM_AUTO_PTR parse (xercesc::InputSource&, xercesc::DOMErrorHandler&, const properties&, unsigned long flags); template XSD_DOM_AUTO_PTR parse (const std::basic_string& uri, error_handler&, const properties&, unsigned long flags); template XSD_DOM_AUTO_PTR parse (const std::basic_string& uri, xercesc::DOMErrorHandler&, const properties&, unsigned long flags); } } } } #include #endif // XSD_CXX_XML_DOM_PARSING_SOURCE_HXX