summaryrefslogtreecommitdiff
path: root/misc/uClibc++/include/uClibc++/queue
diff options
context:
space:
mode:
Diffstat (limited to 'misc/uClibc++/include/uClibc++/queue')
-rw-r--r--misc/uClibc++/include/uClibc++/queue235
1 files changed, 124 insertions, 111 deletions
diff --git a/misc/uClibc++/include/uClibc++/queue b/misc/uClibc++/include/uClibc++/queue
index b817b1dfe..51fe35cbe 100644
--- a/misc/uClibc++/include/uClibc++/queue
+++ b/misc/uClibc++/include/uClibc++/queue
@@ -1,19 +1,20 @@
-/* Copyright (C) 2004 Garrett A. Kajmowicz
- This file is part of the uClibc++ Library.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
+/* Copyright (C) 2004 Garrett A. Kajmowicz
+ * This file is part of the uClibc++ Library.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
#include <basic_definitions>
#include <deque>
@@ -25,102 +26,114 @@
#pragma GCC visibility push(default)
-namespace std{
-
- template <class T, class Container = deque<T> > class _UCXXEXPORT queue{
- protected:
- Container c;
- public:
- typedef typename Container::value_type value_type;
- typedef typename Container::size_type size_type;
- typedef Container container_type;
-
- explicit queue(const Container& a = Container()) : c(a) { }
-
- 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 Container> _UCXXEXPORT bool
- operator==(const queue<T, Container>& x, const queue<T, Container>& y)
- {
- return (x.c == y.c);
- }
- template <class T, class Container> _UCXXEXPORT bool
- operator< (const queue<T, Container>& x, const queue<T, Container>& y)
- {
- return (x.c < y.c);
- }
- template <class T, class Container> _UCXXEXPORT bool
- operator!=(const queue<T, Container>& x, const queue<T, Container>& y)
- {
- return (x.c != y.c);
- }
- template <class T, class Container> _UCXXEXPORT bool
- operator> (const queue<T, Container>& x, const queue<T, Container>& y)
- {
- return (x.c > y.c);
- }
- template <class T, class Container> _UCXXEXPORT bool
- operator>=(const queue<T, Container>& x, const queue<T, Container>& y)
- {
- return (x.c >= y.c);
- }
- template <class T, class Container> _UCXXEXPORT bool
- operator<=(const queue<T, Container>& x, const queue<T, Container>& y)
- {
- return (x.c <= y.c);
- }
-
-
- template <class T,
- class Container = vector<T>,
- class Compare = less<typename Container::value_type>
- > class _UCXXEXPORT priority_queue {
- protected:
- Container c;
- Compare comp;
- public:
- typedef typename Container::value_type value_type;
- typedef typename Container::size_type size_type;
- typedef Container container_type;
-
- explicit priority_queue(const Compare& x = Compare(), const Container& a = Container())
- : c(a), comp(x) { make_heap(c.begin(), c.end(), comp) ; }
- template <class InputIterator> priority_queue(InputIterator first,
- InputIterator last,
- const Compare& x = Compare(),
- const Container& y= Container())
- : c(y), comp(c)
- {
- c.insert(c.end(), first, last);
- make_heap(c.begin(), c.end(), comp);
- }
-
- 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){
- c.push_back(x);
- push_heap(c.begin(), c.end(), comp);
- }
- void pop(){
- pop_heap(c.begin(), c.end(), comp);
- c.pop_back();
- }
- };
-
-}
+extern "C++"
+{
+namespace std
+{
+ template <class T, class Container = deque<T> > class _UCXXEXPORT queue
+ {
+ protected:
+ Container c;
+
+ public:
+ typedef typename Container::value_type value_type;
+ typedef typename Container::size_type size_type;
+ typedef Container container_type;
+
+ explicit queue(const Container& a = Container()) : c(a) { }
+
+ 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 Container> _UCXXEXPORT bool
+ operator==(const queue<T, Container>& x, const queue<T, Container>& y)
+ {
+ return (x.c == y.c);
+ }
+
+ template <class T, class Container> _UCXXEXPORT bool
+ operator< (const queue<T, Container>& x, const queue<T, Container>& y)
+ {
+ return (x.c < y.c);
+ }
+
+ template <class T, class Container> _UCXXEXPORT bool
+ operator!=(const queue<T, Container>& x, const queue<T, Container>& y)
+ {
+ return (x.c != y.c);
+ }
+
+ template <class T, class Container> _UCXXEXPORT bool
+ operator> (const queue<T, Container>& x, const queue<T, Container>& y)
+ {
+ return (x.c > y.c);
+ }
+
+ template <class T, class Container> _UCXXEXPORT bool
+ operator>=(const queue<T, Container>& x, const queue<T, Container>& y)
+ {
+ return (x.c >= y.c);
+ }
+
+ template <class T, class Container> _UCXXEXPORT bool
+ operator<=(const queue<T, Container>& x, const queue<T, Container>& y)
+ {
+ return (x.c <= y.c);
+ }
+
+ template <class T,
+ class Container = vector<T>,
+ class Compare = less<typename Container::value_type>
+ > class _UCXXEXPORT priority_queue
+ {
+ protected:
+ Container c;
+ Compare comp;
+
+ public:
+ typedef typename Container::value_type value_type;
+ typedef typename Container::size_type size_type;
+ typedef Container container_type;
+
+ explicit priority_queue(const Compare& x = Compare(), const Container& a = Container())
+ : c(a), comp(x) { make_heap(c.begin(), c.end(), comp) ; }
+ template <class InputIterator> priority_queue(InputIterator first,
+ InputIterator last,
+ const Compare& x = Compare(),
+ const Container& y= Container())
+ : c(y), comp(c)
+ {
+ c.insert(c.end(), first, last);
+ make_heap(c.begin(), c.end(), comp);
+ }
+
+ 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)
+ {
+ c.push_back(x);
+ push_heap(c.begin(), c.end(), comp);
+ }
+
+ void pop()
+ {
+ pop_heap(c.begin(), c.end(), comp);
+ c.pop_back();
+ }
+ };
+
+} // namespace
+} // extern "C++"
#pragma GCC visibility pop
#endif
-
-