1 # C++ skeleton for Bison
3 # Copyright (C) 2002-2011 Free Software Foundation, Inc.
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
18 m4_pushdef([b4_copyright_years],
21 # We do want M4 expansion after # for CPP macros.
24 @output(b4_dir_prefix[]stack.hh@)@
25 b4_copyright([Stack handling for Bison parsers in C++])[
27 #ifndef BISON_STACK_HH
28 # define BISON_STACK_HH
33 template <class T, class S = std::deque<T> >
37 // Hide our reversed order.
38 typedef typename S::reverse_iterator iterator;
39 typedef typename S::const_reverse_iterator const_iterator;
46 stack (unsigned int n)
53 operator [] (unsigned int i)
60 operator [] (unsigned int i) const
74 pop (unsigned int n = 1)
91 return seq_.rbegin ();
102 /// The wrapped container.
106 /// Present a slice of the top of a stack.
107 template <class T, class S = stack<T> >
111 slice (const S& stack, unsigned int range)
119 operator [] (unsigned int i) const
121 return stack_[range_ - i];
130 #endif // not BISON_STACK_HH[]dnl
133 m4_popdef([b4_copyright_years])dnl