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.ixx | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'xml/parser.ixx') diff --git a/xml/parser.ixx b/xml/parser.ixx index c0fe256..49d9c89 100644 --- a/xml/parser.ixx +++ b/xml/parser.ixx @@ -29,6 +29,19 @@ namespace xml init (); } + inline parser::event_type parser:: + peek () + { + if (state_ == state_peek) + return event_; + else + { + event_type e (next_ (true)); + state_ = state_peek; // Set it after the call to next_(). + return e; + } + } + template inline T parser:: value () const @@ -173,6 +186,28 @@ namespace xml return element (qname_type (n), dv); } + inline void parser:: + content (content_type c) + { + assert (state_ == state_next); + + if (!element_state_.empty () && element_state_.back ().depth == depth_) + element_state_.back ().content = c; + else + element_state_.push_back (element_entry (depth_, c)); + } + + inline parser::content_type parser:: + content () const + { + assert (state_ == state_next); + + return + !element_state_.empty () && element_state_.back ().depth == depth_ + ? element_state_.back ().content + : mixed; + } + inline const parser::element_entry* parser:: get_element () const { -- cgit v1.1