// 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 elements (and // optionally text), attributes, or both. // template class parser { public: parser (const xercesc::DOMElement& e, bool ep, bool tp, bool ap); // Content parsing. // bool more_content () { return next_content_ != 0; } const xercesc::DOMElement& cur_element () { return *static_cast (next_content_); } const xercesc::DOMText& cur_text () { return *static_cast (next_content_); } bool cur_is_text () { return next_content_->getNodeType () != xercesc::DOMNode::ELEMENT_NODE; } void next_content (bool text); // Attribute parsing. // 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_content_; 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