// file : XSCRT/Parser.hpp // author : Boris Kolpackov // cvs-id : $Id$ #ifndef XSCRT_PARSER_HPP #define XSCRT_PARSER_HPP #include #include "XSCRT/XML.hpp" namespace XSCRT { template class Parser { public: Parser (XML::Element const& e) : e_ (e.dom_element ()->getChildNodes ()), ei_ (0), a_ (e.dom_element ()->getAttributes ()), ai_ (0) { } bool more_elements () const { return e_->getLength () > ei_; } XML::Element next_element () { return XML::Element (XML::dom_cast (e_->item (ei_++))); } bool more_attributes () const { return a_->getLength () > ai_; } XML::Attribute next_attribute () { return XML::Attribute ( XML::dom_cast (a_->item (ai_++))); } private: xercesc::DOMNodeList const* e_; unsigned long ei_; xercesc::DOMNamedNodeMap const* a_; unsigned long ai_; private: Parser (Parser const&); void operator= (Parser const&); }; } #include "XSCRT/Parser.ipp" #include "XSCRT/Parser.tpp" #endif // XSCRT_PARSER_HPP