summaryrefslogtreecommitdiffstats
path: root/libstdc++/stl/stack.h
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>1997-11-02 20:28:22 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>1997-11-02 20:28:22 +0000
commit638d2d6c66cb82345c84b92a46ebf9445c56204c (patch)
tree42c53d65b7bbabaf962948c0b9586398a90ddf19 /libstdc++/stl/stack.h
parent46e6a46281a18cb83ed5483ecce34ad6ba6600ea (diff)
downloadppe42-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.h155
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:
OpenPOWER on IntegriCloud