From 19fbbfa8ffa594690d55dce80963d2016b4ec781 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 9 May 2014 15:09:38 -0700 Subject: Code clean up --- xml/parser.cxx | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'xml/parser.cxx') 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 { -- cgit v1.1