diff options
author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-11-02 20:28:22 +0000 |
---|---|---|
committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-11-02 20:28:22 +0000 |
commit | 638d2d6c66cb82345c84b92a46ebf9445c56204c (patch) | |
tree | 42c53d65b7bbabaf962948c0b9586398a90ddf19 /libstdc++/stl/stack.h | |
parent | 46e6a46281a18cb83ed5483ecce34ad6ba6600ea (diff) | |
download | ppe42-gcc-638d2d6c66cb82345c84b92a46ebf9445c56204c.tar.gz ppe42-gcc-638d2d6c66cb82345c84b92a46ebf9445c56204c.zip |
* Makefile.in (install): Some of HEADERS come from the stl dir now.
* algorithm, deque, functional, iterator, list, map, memory, numeric,
queue, set, stack, utility, vector: Now in stl dir.
stl/:
* algo.h, algobase.h, alloc.h, bvector.h, defalloc.h, deque.h,
function.h, hash_map.h, hash_set.h, hashtable.h, heap.h, iterator.h,
list.h, map.h, multimap.h, multiset.h, pair.h, pthread_alloc.h,
rope.h, ropeimpl.h, set.h, slist.h, stack.h, stl_config.h, tempbuf.h,
tree.h, type_traits.h, vector.h: Update to October 27 SGI snapshot.
* algorithm, deque, functional, hash_map, hash_set, iterator, list,
map, memory, numeric, pthread_alloc, queue, rope, set, slist, stack,
stl_algo.h, stl_algobase.h, stl_alloc.h, stl_bvector.h,
stl_construct.h, stl_deque.h, stl_function.h, stl_hash_fun.h,
stl_hash_map.h, stl_hash_set.h, stl_hashtable.h, stl_heap.h,
stl_iterator.h, stl_list.h, stl_map.h, stl_multimap.h, stl_multiset.h,
stl_numeric.h, stl_pair.h, stl_queue.h, stl_raw_storage_iter.h,
stl_relops.h, stl_rope.h, stl_set.h, stl_slist.h, stl_stack.h,
stl_tempbuf.h, stl_tree.h, stl_uninitialized.h, stl_vector.h,
utility, vector: New files in October 27 SGI snapshot.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16277 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++/stl/stack.h')
-rw-r--r-- | libstdc++/stl/stack.h | 155 |
1 files changed, 15 insertions, 140 deletions
diff --git a/libstdc++/stl/stack.h b/libstdc++/stl/stack.h index cc025bb70e1..89beca82f12 100644 --- a/libstdc++/stl/stack.h +++ b/libstdc++/stl/stack.h @@ -12,7 +12,7 @@ * purpose. It is provided "as is" without express or implied warranty. * * - * Copyright (c) 1996 + * Copyright (c) 1996,1997 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software @@ -24,148 +24,23 @@ * purpose. It is provided "as is" without express or implied warranty. */ -#ifndef STACK_H -#define STACK_H +#ifndef __SGI_STL_STACK_H +#define __SGI_STL_STACK_H -#include <function.h> -#include <heap.h> #include <vector.h> #include <deque.h> +#include <heap.h> +#include <stl_stack.h> +#include <stl_queue.h> -#ifndef __STL_LIMITED_DEFAULT_TEMPLATES -template <class T, class Sequence = deque<T> > -#else -template <class T, class Sequence> -#endif -class stack { - friend bool operator==(const stack<T, Sequence>& x, - const stack<T, Sequence>& y); - friend bool operator<(const stack<T, Sequence>& x, - const stack<T, Sequence>& y); -public: - typedef typename Sequence::value_type value_type; - typedef typename Sequence::size_type size_type; -protected: - Sequence c; -public: - bool empty() const { return c.empty(); } - size_type size() const { return c.size(); } - value_type& top() { return c.back(); } - const value_type& top() const { return c.back(); } - void push(const value_type& x) { c.push_back(x); } - void pop() { c.pop_back(); } -}; - -template <class T, class Sequence> -bool operator==(const stack<T, Sequence>& x, const stack<T, Sequence>& y) { - return x.c == y.c; -} - -template <class T, class Sequence> -bool operator<(const stack<T, Sequence>& x, const stack<T, Sequence>& y) { - return x.c < y.c; -} - -#ifndef __STL_LIMITED_DEFAULT_TEMPLATES -template <class T, class Sequence = deque<T> > -#else -template <class T, class Sequence> -#endif -class queue { -friend bool operator==(const queue<T, Sequence>& x, const queue<T, Sequence>& y); -friend bool operator<(const queue<T, Sequence>& x, const queue<T, Sequence>& y); -public: - typedef typename Sequence::value_type value_type; - typedef typename Sequence::size_type size_type; -protected: - Sequence c; -public: - bool empty() const { return c.empty(); } - size_type size() const { return c.size(); } - value_type& front() { return c.front(); } - const value_type& front() const { return c.front(); } - value_type& back() { return c.back(); } - const value_type& back() const { return c.back(); } - void push(const value_type& x) { c.push_back(x); } - void pop() { c.pop_front(); } -}; - -template <class T, class Sequence> -bool operator==(const queue<T, Sequence>& x, const queue<T, Sequence>& y) { - return x.c == y.c; -} - -template <class T, class Sequence> -bool operator<(const queue<T, Sequence>& x, const queue<T, Sequence>& y) { - return x.c < y.c; -} - -#ifndef __STL_LIMITED_DEFAULT_TEMPLATES -template <class T, class Sequence = vector<T>, - class Compare = less<typename Sequence::value_type> > -#else -template <class T, class Sequence, class Compare> -#endif -class priority_queue { -public: - typedef typename Sequence::value_type value_type; - typedef typename Sequence::size_type size_type; -protected: - Sequence c; - Compare comp; -public: - priority_queue() : c() {} - explicit priority_queue(const Compare& x) : c(), comp(x) {} - -#ifdef __STL_MEMBER_TEMPLATES - template <class InputIterator> - priority_queue(InputIterator first, InputIterator last, const Compare& x) - : c(first, last), comp(x) { make_heap(c.begin(), c.end(), comp); } - template <class InputIterator> - priority_queue(InputIterator first, InputIterator last) - : c(first, last) { make_heap(c.begin(), c.end(), comp); } -#else /* __STL_MEMBER_TEMPLATES */ - priority_queue(const value_type* first, const value_type* last, - const Compare& x) : c(first, last), comp(x) { - make_heap(c.begin(), c.end(), comp); - } - priority_queue(const value_type* first, const value_type* last) - : c(first, last) { make_heap(c.begin(), c.end(), comp); } -#endif /* __STL_MEMBER_TEMPLATES */ - - bool empty() const { return c.empty(); } - size_type size() const { return c.size(); } - const value_type& top() const { return c.front(); } - void push(const value_type& x) { -# ifdef __STL_USE_EXCEPTIONS - try { -# endif /* __STL_USE_EXCEPTIONS */ - c.push_back(x); - push_heap(c.begin(), c.end(), comp); -# ifdef __STL_USE_EXCEPTIONS - } - catch(...) { - c.clear(); - throw; - } -# endif /* __STL_USE_EXCEPTIONS */ - } - void pop() { -# ifdef __STL_USE_EXCEPTIONS - try { -# endif /* __STL_USE_EXCEPTIONS */ - pop_heap(c.begin(), c.end(), comp); - c.pop_back(); -# ifdef __STL_USE_EXCEPTIONS - } - catch(...) { - c.clear(); - throw; - } -# endif /* __STL_USE_EXCEPTIONS */ - } -}; +#ifdef __STL_USE_NAMESPACES +using __STD::stack; +using __STD::queue; +using __STD::priority_queue; +#endif /* __STL_USE_NAMESPACES */ -// no equality is provided +#endif /* __SGI_STL_STACK_H */ -#endif +// Local Variables: +// mode:C++ +// End: |