X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/7d6bad195977b0204fc8406cac57cf5a4f1c769b..d3ae5af6ec7dbcfa2c7dce1a175e35934b85b274:/data/stack.hh?ds=sidebyside diff --git a/data/stack.hh b/data/stack.hh index 61fbde2b..aa64d63d 100644 --- a/data/stack.hh +++ b/data/stack.hh @@ -41,23 +41,27 @@ m4_define([b4_stack_define], inline T& - operator [] (unsigned int i) + operator[] (unsigned int i) { return seq_[seq_.size () - 1 - i]; } inline const T& - operator [] (unsigned int i) const + operator[] (unsigned int i) const { return seq_[seq_.size () - 1 - i]; } + /// Steal the contents of \a t. + /// + /// Close to move-semantics. inline void - push (const T& t) + push (T& t) { - seq_.push_back (t); + seq_.push_back (T()); + operator[](0).move (t); } inline @@ -68,6 +72,12 @@ m4_define([b4_stack_define], seq_.pop_back (); } + void + clear () + { + seq_.clear (); + } + inline typename S::size_type size () const @@ -90,6 +100,8 @@ m4_define([b4_stack_define], } private: + stack (const stack&); + stack& operator= (const stack&); /// The wrapped container. S seq_; };