summaryrefslogtreecommitdiff
path: root/gnu/egcs/libstdc++/stl/stl_stack.h
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/egcs/libstdc++/stl/stl_stack.h')
-rw-r--r--gnu/egcs/libstdc++/stl/stl_stack.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/gnu/egcs/libstdc++/stl/stl_stack.h b/gnu/egcs/libstdc++/stl/stl_stack.h
new file mode 100644
index 00000000000..2a04b21e507
--- /dev/null
+++ b/gnu/egcs/libstdc++/stl/stl_stack.h
@@ -0,0 +1,111 @@
+/*
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation. Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation. Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied warranty.
+ */
+
+/* NOTE: This is an internal header file, included by other STL headers.
+ * You should not attempt to use it directly.
+ */
+
+#ifndef __SGI_STL_INTERNAL_STACK_H
+#define __SGI_STL_INTERNAL_STACK_H
+
+__STL_BEGIN_NAMESPACE
+
+#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
+template <class _Tp, class _Sequence = deque<_Tp> >
+#else
+template <class _Tp, class _Sequence>
+#endif
+class stack {
+ friend bool operator== __STL_NULL_TMPL_ARGS (const stack&, const stack&);
+ friend bool operator< __STL_NULL_TMPL_ARGS (const stack&, const stack&);
+public:
+ typedef typename _Sequence::value_type value_type;
+ typedef typename _Sequence::size_type size_type;
+ typedef _Sequence container_type;
+
+ typedef typename _Sequence::reference reference;
+ typedef typename _Sequence::const_reference const_reference;
+protected:
+ _Sequence _M_c;
+public:
+ stack() : _M_c() {}
+ explicit stack(const _Sequence& __s) : _M_c(__s) {}
+
+ bool empty() const { return _M_c.empty(); }
+ size_type size() const { return _M_c.size(); }
+ reference top() { return _M_c.back(); }
+ const_reference top() const { return _M_c.back(); }
+ void push(const value_type& __x) { _M_c.push_back(__x); }
+ void pop() { _M_c.pop_back(); }
+};
+
+template <class _Tp, class _Seq>
+bool operator==(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
+{
+ return __x._M_c == __y._M_c;
+}
+
+template <class _Tp, class _Seq>
+bool operator<(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
+{
+ return __x._M_c < __y._M_c;
+}
+
+#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
+
+template <class _Tp, class _Seq>
+bool operator!=(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
+{
+ return !(__x == __y);
+}
+
+template <class _Tp, class _Seq>
+bool operator>(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
+{
+ return __y < __x;
+}
+
+template <class _Tp, class _Seq>
+bool operator<=(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
+{
+ return !(__y < __x);
+}
+
+template <class _Tp, class _Seq>
+bool operator>=(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
+{
+ return !(__x < __y);
+}
+
+#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
+
+__STL_END_NAMESPACE
+
+#endif /* __SGI_STL_INTERNAL_STACK_H */
+
+// Local Variables:
+// mode:C++
+// End: