diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-10-31 19:13:18 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-10-31 19:13:18 +0000 |
commit | 66aae459f14ce34b1735c17d13ba56fe8f885fb1 (patch) | |
tree | 605301a07119dea4433c994f9000743eed20d165 /misc/uClibc++/include/cxx/queue | |
parent | a74dd084927e6e7d5f44fcb54216098143cf38e1 (diff) | |
download | px4-firmware-66aae459f14ce34b1735c17d13ba56fe8f885fb1.tar.gz px4-firmware-66aae459f14ce34b1735c17d13ba56fe8f885fb1.tar.bz2 px4-firmware-66aae459f14ce34b1735c17d13ba56fe8f885fb1.zip |
Add misc/uClibc++ and build hooks in nuttx/
git-svn-id: http://svn.code.sf.net/p/nuttx/code/trunk@5283 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'misc/uClibc++/include/cxx/queue')
-rw-r--r-- | misc/uClibc++/include/cxx/queue | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/misc/uClibc++/include/cxx/queue b/misc/uClibc++/include/cxx/queue new file mode 100644 index 000000000..b817b1dfe --- /dev/null +++ b/misc/uClibc++/include/cxx/queue @@ -0,0 +1,126 @@ +/* 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> +#include <vector> +#include <functional> + +#ifndef __HEADER_STD_QUEUE +#define __HEADER_STD_QUEUE 1 + +#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(); + } + }; + +} + +#pragma GCC visibility pop + +#endif + + |