aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/parser/state.ixx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2009-03-11 14:18:16 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2009-03-11 14:18:16 +0200
commitda1ce0f39a36a2fca1f8d51a67b92be6368ddbfd (patch)
tree5752560e8054e8ba61cd6138d3a11a429b30e257 /libxsde/xsde/cxx/parser/state.ixx
parentfb2b2359be798213a7a1a6d58b3627e63f8315d7 (diff)
Use the common POD stack container for the parser state
Diffstat (limited to 'libxsde/xsde/cxx/parser/state.ixx')
-rw-r--r--libxsde/xsde/cxx/parser/state.ixx64
1 files changed, 11 insertions, 53 deletions
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<parser_state*> (stack_.top ()) = s;
+
+#ifndef XSDE_EXCEPTIONS
return stack::error_none;
+#endif
}
inline void parser_stack::
@@ -99,4 +58,3 @@ namespace xsde
}
}
}
-