aboutsummaryrefslogtreecommitdiff
path: root/xml/parser.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2014-05-09 15:09:38 -0700
committerBoris Kolpackov <boris@codesynthesis.com>2014-05-09 15:09:38 -0700
commit19fbbfa8ffa594690d55dce80963d2016b4ec781 (patch)
tree67a1aeb4cccc3238b12dbc80f23506c1ad50f03f /xml/parser.cxx
parentfec681be83c91268ee4db97f34ce4e47179316dd (diff)
Code clean up
Diffstat (limited to 'xml/parser.cxx')
-rw-r--r--xml/parser.cxx35
1 files changed, 35 insertions, 0 deletions
diff --git a/xml/parser.cxx b/xml/parser.cxx
index 6d5ab23..ef5683f 100644
--- a/xml/parser.cxx
+++ b/xml/parser.cxx
@@ -204,6 +204,41 @@ namespace xml
istream::iostate old_state_;
};
+ parser::event_type parser::
+ next ()
+ {
+ if (state_ == state_next)
+ return next_ (false);
+ else
+ {
+ // If we previously peeked at start/end_element, then adjust
+ // state accordingly.
+ //
+ switch (event_)
+ {
+ case end_element:
+ {
+ if (!element_state_.empty () &&
+ element_state_.back ().depth == depth_)
+ pop_element ();
+
+ depth_--;
+ break;
+ }
+ case start_element:
+ {
+ depth_++;
+ break;
+ }
+ default:
+ break;
+ }
+
+ state_ = state_next;
+ return event_;
+ }
+ }
+
const string& parser::
attribute (const qname_type& qn) const
{