From da1ce0f39a36a2fca1f8d51a67b92be6368ddbfd Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 11 Mar 2009 14:18:16 +0200 Subject: Use the common POD stack container for the parser state --- libxsde/xsde/cxx/parser/state.ixx | 64 +++++++-------------------------------- 1 file changed, 11 insertions(+), 53 deletions(-) (limited to 'libxsde/xsde/cxx/parser/state.ixx') diff --git a/libxsde/xsde/cxx/parser/state.ixx b/libxsde/xsde/cxx/parser/state.ixx index 6f9c4b7..fdd547f 100644 --- a/libxsde/xsde/cxx/parser/state.ixx +++ b/libxsde/xsde/cxx/parser/state.ixx @@ -9,58 +9,6 @@ namespace xsde { namespace parser { - // stack - // - - inline stack:: - ~stack () - { - delete[] data_; - } - - inline stack:: - stack (size_t el_size, void* first_el) - : el_size_ (el_size), first_ (first_el), - data_ (0), size_ (0), capacity_ (0) - { - } - - inline void stack:: - pop () - { - --size_; - } - - inline stack::error stack:: - push () - { - if (size_ > capacity_) - if (error e = grow ()) - return e; - - ++size_; - - return error_none; - } - - inline void* stack:: - top () - { - return size_ == 1 ? first_ : data_ + (size_ - 1) * el_size_; - } - - inline size_t stack:: - element_size () const - { - return el_size_; - } - - inline void stack:: - clear () - { - size_ = 0; - } - // parser_stack // inline parser_stack:: @@ -69,14 +17,25 @@ namespace xsde { } +#ifdef XSDE_EXCEPTIONS + inline void parser_stack:: +#else inline stack::error parser_stack:: +#endif push (parser_state& s) { +#ifdef XSDE_EXCEPTIONS + stack_.push (); +#else if (stack::error e = stack_.push ()) return e; +#endif *static_cast (stack_.top ()) = s; + +#ifndef XSDE_EXCEPTIONS return stack::error_none; +#endif } inline void parser_stack:: @@ -99,4 +58,3 @@ namespace xsde } } } - -- cgit v1.1