epoc32/include/stdapis/boost/pending/queue.hpp
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
     1 //  (C) Copyright Jeremy Siek 2004 
     2 //  Distributed under the Boost Software License, Version 1.0. (See
     3 //  accompanying file LICENSE_1_0.txt or copy at
     4 //  http://www.boost.org/LICENSE_1_0.txt)
     5 
     6 #ifndef BOOST_QUEUE_HPP
     7 #define BOOST_QUEUE_HPP
     8 
     9 #include <deque>
    10 #include <algorithm>
    11 
    12 namespace boost {
    13 
    14 template <class _Tp, 
    15           class _Sequence = std::deque<_Tp> >
    16 class queue;
    17 
    18 template <class _Tp, class _Seq>
    19 inline bool operator==(const queue<_Tp, _Seq>&, const queue<_Tp, _Seq>&);
    20 
    21 template <class _Tp, class _Seq>
    22 inline bool operator<(const queue<_Tp, _Seq>&, const queue<_Tp, _Seq>&);
    23 
    24 
    25 template <class _Tp, class _Sequence>
    26 class queue {
    27 
    28 #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
    29   template <class _Tp1, class _Seq1>
    30   friend bool operator== (const queue<_Tp1, _Seq1>&,
    31                           const queue<_Tp1, _Seq1>&);
    32   template <class _Tp1, class _Seq1>
    33   friend bool operator< (const queue<_Tp1, _Seq1>&,
    34                          const queue<_Tp1, _Seq1>&);
    35 #endif
    36 public:
    37   typedef typename _Sequence::value_type      value_type;
    38   typedef typename _Sequence::size_type       size_type;
    39   typedef          _Sequence                  container_type;
    40 
    41   typedef typename _Sequence::reference       reference;
    42   typedef typename _Sequence::const_reference const_reference;
    43 #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
    44 protected:
    45 #endif
    46   _Sequence c;
    47 public:
    48   queue() : c() {}
    49   explicit queue(const _Sequence& __c) : c(__c) {}
    50 
    51   bool empty() const { return c.empty(); }
    52   size_type size() const { return c.size(); }
    53   reference front() { return c.front(); }
    54   const_reference front() const { return c.front(); }
    55   reference top() { return c.front(); }
    56   const_reference top() const { return c.front(); }
    57   reference back() { return c.back(); }
    58   const_reference back() const { return c.back(); }
    59   void push(const value_type& __x) { c.push_back(__x); }
    60   void pop() { c.pop_front(); }
    61 
    62   void swap(queue& other)
    63   {
    64     using std::swap;
    65     swap(c, other.c);
    66   }
    67 };
    68 
    69 template <class _Tp, class _Sequence>
    70 bool 
    71 operator==(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
    72 {
    73   return __x.c == __y.c;
    74 }
    75 
    76 template <class _Tp, class _Sequence>
    77 bool
    78 operator<(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
    79 {
    80   return __x.c < __y.c;
    81 }
    82 
    83 template <class _Tp, class _Sequence>
    84 bool
    85 operator!=(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
    86 {
    87   return !(__x == __y);
    88 }
    89 
    90 template <class _Tp, class _Sequence>
    91 bool 
    92 operator>(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
    93 {
    94   return __y < __x;
    95 }
    96 
    97 template <class _Tp, class _Sequence>
    98 bool 
    99 operator<=(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
   100 {
   101   return !(__y < __x);
   102 }
   103 
   104 template <class _Tp, class _Sequence>
   105 bool 
   106 operator>=(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
   107 {
   108   return !(__x < __y);
   109 }
   110 
   111 template <class _Tp, class _Sequence>
   112 inline void
   113 swap(queue<_Tp, _Sequence>& __x, queue<_Tp, _Sequence>& __y)
   114 { __x.swap(__y); }
   115 
   116 } /* namespace boost */
   117 
   118 #endif /* BOOST_QUEUE_HPP */