blob: 5fa1e827f8d5a3da18ba3e6b5b7fe54fdf1bd7c2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
// file : XSCRT/Parser.hpp
// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
// cvs-id : $Id$
#ifndef XSCRT_PARSER_HPP
#define XSCRT_PARSER_HPP
#include <string>
#include "XSCRT/XML.hpp"
namespace XSCRT
{
template <typename C>
class Parser
{
public:
Parser (XML::Element<C> 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<C>
next_element ()
{
return XML::Element<C> (XML::dom_cast <xercesc::DOMElement*> (e_->item (ei_++)));
}
bool
more_attributes () const
{
return a_->getLength () > ai_;
}
XML::Attribute<C>
next_attribute ()
{
return XML::Attribute<C> (
XML::dom_cast <xercesc::DOMAttr*> (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
|