123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- //---------------------------------------------------------------------------//
- // Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
- //
- // Distributed under the Boost Software License, Version 1.0
- // See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt
- //
- // See http://boostorg.github.com/compute for more information.
- //---------------------------------------------------------------------------//
- #ifndef BOOST_COMPUTE_CONTAINER_STACK_HPP
- #define BOOST_COMPUTE_CONTAINER_STACK_HPP
- #include <boost/compute/container/vector.hpp>
- namespace boost {
- namespace compute {
- template<class T>
- class stack
- {
- public:
- typedef vector<T> container_type;
- typedef typename container_type::size_type size_type;
- typedef typename container_type::value_type value_type;
- stack()
- {
- }
- stack(const stack<T> &other)
- : m_vector(other.m_vector)
- {
- }
- stack<T>& operator=(const stack<T> &other)
- {
- if(this != &other){
- m_vector = other.m_vector;
- }
- return *this;
- }
- ~stack()
- {
- }
- bool empty() const
- {
- return m_vector.empty();
- }
- size_type size() const
- {
- return m_vector.size();
- }
- value_type top() const
- {
- return m_vector.back();
- }
- void push(const T &value)
- {
- m_vector.push_back(value);
- }
- void pop()
- {
- m_vector.pop_back();
- }
- private:
- container_type m_vector;
- };
- } // end compute namespace
- } // end boost namespace
- #endif // BOOST_COMPUTE_CONTAINER_STACK_HPP
|