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