D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
usr
/
share
/
bison
/
Filename :
stack.hh
back
Copy
# C++ skeleton for Bison # Copyright (C) 2002-2015 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. m4_pushdef([b4_copyright_years], [2002-2015]) # b4_stack_define # --------------- m4_define([b4_stack_define], [[ template <class T, class S = std::vector<T> > class stack { public: // Hide our reversed order. typedef typename S::reverse_iterator iterator; typedef typename S::const_reverse_iterator const_iterator; stack () : seq_ () { seq_.reserve (200); } stack (unsigned int n) : seq_ (n) {} inline T& operator[] (unsigned int i) { return seq_[seq_.size () - 1 - i]; } inline const T& operator[] (unsigned int i) const { return seq_[seq_.size () - 1 - i]; } /// Steal the contents of \a t. /// /// Close to move-semantics. inline void push (T& t) { seq_.push_back (T()); operator[](0).move (t); } inline void pop (unsigned int n = 1) { for (; n; --n) seq_.pop_back (); } void clear () { seq_.clear (); } inline typename S::size_type size () const { return seq_.size (); } inline const_iterator begin () const { return seq_.rbegin (); } inline const_iterator end () const { return seq_.rend (); } private: stack (const stack&); stack& operator= (const stack&); /// The wrapped container. S seq_; }; /// Present a slice of the top of a stack. template <class T, class S = stack<T> > class slice { public: slice (const S& stack, unsigned int range) : stack_ (stack) , range_ (range) {} inline const T& operator [] (unsigned int i) const { return stack_[range_ - i]; } private: const S& stack_; unsigned int range_; }; ]]) b4_defines_if( [b4_output_begin([b4_dir_prefix[]stack.hh]) b4_copyright([Stack handling for Bison parsers in C++])[ /** ** \file ]b4_dir_prefix[stack.hh ** Define the ]b4_namespace_ref[::stack class. */ ]b4_cpp_guard_open([b4_dir_prefix[]stack.hh])[ # include <vector> ]b4_namespace_open[ ]b4_stack_define[ ]b4_namespace_close[ ]b4_cpp_guard_close([b4_dir_prefix[]stack.hh]) b4_output_end() ]) m4_popdef([b4_copyright_years])
Name
Size
Last Modified
Owner
Permissions
Actions
m4sugar
Dir
July 28 2023 2:58:42
root
0755
xslt
Dir
July 28 2023 2:58:42
root
0755
README
1.97
KB
October 12 2019 12:28:39
root
0644
bison.m4
36.334
KB
October 12 2019 12:28:39
root
0644
c++-skel.m4
1.123
KB
October 12 2019 12:28:39
root
0644
c++.m4
17.309
KB
October 12 2019 12:28:39
root
0644
c-like.m4
2.26
KB
October 12 2019 12:28:39
root
0644
c-skel.m4
1.117
KB
October 12 2019 12:28:39
root
0644
c.m4
24.574
KB
October 12 2019 12:28:39
root
0644
glr.c
82.569
KB
October 12 2019 12:28:39
root
0644
glr.cc
10.65
KB
October 12 2019 12:28:39
root
0644
java-skel.m4
1.124
KB
October 12 2019 12:28:39
root
0644
java.m4
9.529
KB
October 12 2019 12:28:39
root
0644
lalr1.cc
34.415
KB
October 12 2019 12:28:39
root
0644
lalr1.java
34.424
KB
October 12 2019 12:28:39
root
0644
location.cc
8.598
KB
October 12 2019 12:28:39
root
0644
stack.hh
2.909
KB
October 12 2019 12:28:39
root
0644
variant.hh
9.689
KB
October 12 2019 12:28:39
root
0644
yacc.c
62.351
KB
October 12 2019 12:28:39
root
0644
2017 © D7net | D704T team