// file : xsd/cxx/xml/dom/parsing-source.hxx // author : Boris Kolpackov // copyright : Copyright (c) 2005-2008 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 { template class parser { public: parser (const xercesc::DOMElement& e); bool more_elements () const { return next_element_ != 0; } const xercesc::DOMElement& cur_element () { return *static_cast (next_element_); } void next_element (); bool more_attributes () const { return a_->getLength () > 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_; unsigned long ai_; // Index of the next DOMAttr. }; // Parsing flags. // const unsigned long dont_validate = 0x00000400UL; template xml::dom::auto_ptr parse (xercesc::InputSource&, error_handler&, const properties&, unsigned long flags); template xml::dom::auto_ptr parse (xercesc::InputSource&, xercesc::DOMErrorHandler&, const properties&, unsigned long flags); template xml::dom::auto_ptr parse (const std::basic_string& uri, error_handler&, const properties&, unsigned long flags); template xml::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