1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/epoc32/include/stdapis/boost/pending/queue.hpp Tue Mar 16 16:12:26 2010 +0000
1.3 @@ -0,0 +1,118 @@
1.4 +// (C) Copyright Jeremy Siek 2004
1.5 +// Distributed under the Boost Software License, Version 1.0. (See
1.6 +// accompanying file LICENSE_1_0.txt or copy at
1.7 +// http://www.boost.org/LICENSE_1_0.txt)
1.8 +
1.9 +#ifndef BOOST_QUEUE_HPP
1.10 +#define BOOST_QUEUE_HPP
1.11 +
1.12 +#include <deque>
1.13 +#include <algorithm>
1.14 +
1.15 +namespace boost {
1.16 +
1.17 +template <class _Tp,
1.18 + class _Sequence = std::deque<_Tp> >
1.19 +class queue;
1.20 +
1.21 +template <class _Tp, class _Seq>
1.22 +inline bool operator==(const queue<_Tp, _Seq>&, const queue<_Tp, _Seq>&);
1.23 +
1.24 +template <class _Tp, class _Seq>
1.25 +inline bool operator<(const queue<_Tp, _Seq>&, const queue<_Tp, _Seq>&);
1.26 +
1.27 +
1.28 +template <class _Tp, class _Sequence>
1.29 +class queue {
1.30 +
1.31 +#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
1.32 + template <class _Tp1, class _Seq1>
1.33 + friend bool operator== (const queue<_Tp1, _Seq1>&,
1.34 + const queue<_Tp1, _Seq1>&);
1.35 + template <class _Tp1, class _Seq1>
1.36 + friend bool operator< (const queue<_Tp1, _Seq1>&,
1.37 + const queue<_Tp1, _Seq1>&);
1.38 +#endif
1.39 +public:
1.40 + typedef typename _Sequence::value_type value_type;
1.41 + typedef typename _Sequence::size_type size_type;
1.42 + typedef _Sequence container_type;
1.43 +
1.44 + typedef typename _Sequence::reference reference;
1.45 + typedef typename _Sequence::const_reference const_reference;
1.46 +#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
1.47 +protected:
1.48 +#endif
1.49 + _Sequence c;
1.50 +public:
1.51 + queue() : c() {}
1.52 + explicit queue(const _Sequence& __c) : c(__c) {}
1.53 +
1.54 + bool empty() const { return c.empty(); }
1.55 + size_type size() const { return c.size(); }
1.56 + reference front() { return c.front(); }
1.57 + const_reference front() const { return c.front(); }
1.58 + reference top() { return c.front(); }
1.59 + const_reference top() const { return c.front(); }
1.60 + reference back() { return c.back(); }
1.61 + const_reference back() const { return c.back(); }
1.62 + void push(const value_type& __x) { c.push_back(__x); }
1.63 + void pop() { c.pop_front(); }
1.64 +
1.65 + void swap(queue& other)
1.66 + {
1.67 + using std::swap;
1.68 + swap(c, other.c);
1.69 + }
1.70 +};
1.71 +
1.72 +template <class _Tp, class _Sequence>
1.73 +bool
1.74 +operator==(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
1.75 +{
1.76 + return __x.c == __y.c;
1.77 +}
1.78 +
1.79 +template <class _Tp, class _Sequence>
1.80 +bool
1.81 +operator<(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
1.82 +{
1.83 + return __x.c < __y.c;
1.84 +}
1.85 +
1.86 +template <class _Tp, class _Sequence>
1.87 +bool
1.88 +operator!=(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
1.89 +{
1.90 + return !(__x == __y);
1.91 +}
1.92 +
1.93 +template <class _Tp, class _Sequence>
1.94 +bool
1.95 +operator>(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
1.96 +{
1.97 + return __y < __x;
1.98 +}
1.99 +
1.100 +template <class _Tp, class _Sequence>
1.101 +bool
1.102 +operator<=(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
1.103 +{
1.104 + return !(__y < __x);
1.105 +}
1.106 +
1.107 +template <class _Tp, class _Sequence>
1.108 +bool
1.109 +operator>=(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
1.110 +{
1.111 + return !(__x < __y);
1.112 +}
1.113 +
1.114 +template <class _Tp, class _Sequence>
1.115 +inline void
1.116 +swap(queue<_Tp, _Sequence>& __x, queue<_Tp, _Sequence>& __y)
1.117 +{ __x.swap(__y); }
1.118 +
1.119 +} /* namespace boost */
1.120 +
1.121 +#endif /* BOOST_QUEUE_HPP */