epoc32/include/stdapis/boost/pending/queue.hpp
branchSymbian2
changeset 2 2fe1408b6811
     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 */