19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1994
49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Hewlett-Packard Company
59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1996,1997
79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc.
89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1997
109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Moscow Center for SPARC Technology
119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999
139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev
149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed
169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk.
179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted
199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies.
209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted,
219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was
229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice.
239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* NOTE: This is an internal header file, included by other STL headers.
279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *   You should not attempt to use it directly.
289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_QUEUE_H
319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_INTERNAL_QUEUE_H
329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_DEQUE_H
349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  include <stl/_deque.h>
359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_VECTOR_H
389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_vector.h>
399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_HEAP_H
429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  include <stl/_heap.h>
439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_FUNCTION_BASE_H
469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  include <stl/_function_base.h>
479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE
509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if ! defined ( _STLP_LIMITED_DEFAULT_TEMPLATES )
529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Sequence = deque<_Tp> >
539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# elif defined ( _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS )
549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_QUEUE_ARGS _Tp
559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp>
569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# else
579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Sequence>
589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif
599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass queue
609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_QUEUE_ARGS)
629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block            : public __stlport_class<queue<_Tp> >
639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block            : public __stlport_class<queue<_Tp, _Sequence> >
659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{
689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if defined ( _STLP_QUEUE_ARGS )
699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef deque<_Tp> _Sequence;
709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef queue<_Tp> _Self;
719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# else
729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef queue<_Tp, _Sequence> _Self;
739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif
749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef typename _Sequence::value_type      value_type;
769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef typename _Sequence::size_type       size_type;
779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef          _Sequence                  container_type;
789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef typename _Sequence::reference       reference;
809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef typename _Sequence::const_reference const_reference;
819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected:
839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  //c is a Standard name (23.2.3.1), do no make it STLport naming convention compliant.
849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  _Sequence c;
859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  queue() : c() {}
879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  explicit queue(const _Sequence& __c) : c(__c) {}
889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_NO_MOVE_SEMANTIC)
909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  queue(__move_source<_Self> src)
919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    : c(_STLP_PRIV _AsMoveSource(src.get().c)) {}
92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  bool empty() const { return c.empty(); }
959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  size_type size() const { return c.size(); }
969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  reference front() { return c.front(); }
979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  const_reference front() const { return c.front(); }
989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  reference back() { return c.back(); }
999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  const_reference back() const { return c.back(); }
1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void push(const value_type& __x) { c.push_back(__x); }
1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void pop() { c.pop_front(); }
1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  const _Sequence& _Get_s() const { return c; }
103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void _M_swap_workaround(_Self& __x) {
106e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    _Sequence __tmp = c;
107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    c = __x.c;
108e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    __x.c = __tmp;
109e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  }
110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block};
1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_QUEUE_ARGS
1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_QUEUE_ARGS _Tp, _Sequence
1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_QUEUE_HEADER_ARGS class _Tp, class _Sequence
1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_QUEUE_HEADER_ARGS class _Tp
1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate < _STLP_QUEUE_HEADER_ARGS >
1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL
1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockoperator==(const queue<_STLP_QUEUE_ARGS >& __x, const queue<_STLP_QUEUE_ARGS >& __y) {
1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  return __x._Get_s() == __y._Get_s();
1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}
1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate < _STLP_QUEUE_HEADER_ARGS >
1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline bool _STLP_CALL
1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockoperator<(const queue<_STLP_QUEUE_ARGS >& __x, const queue<_STLP_QUEUE_ARGS >& __y) {
1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  return __x._Get_s() < __y._Get_s();
1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}
1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_RELOPS_OPERATORS( template < _STLP_QUEUE_HEADER_ARGS >, queue<_STLP_QUEUE_ARGS > )
1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if !(defined ( _STLP_LIMITED_DEFAULT_TEMPLATES ) || defined ( _STLP_TEMPLATE_PARAM_SUBTYPE_BUG ))
1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Sequence = vector<_Tp>,
1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block          class _Compare = less<_STLP_HEADER_TYPENAME _Sequence::value_type> >
1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# elif defined ( _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS )
1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp>
1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# else
1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Sequence, class _Compare>
1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif
1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass priority_queue
1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS)
1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block            : public __stlport_class<priority_queue<_Tp> >
1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block            : public __stlport_class<priority_queue<_Tp, _Sequence> >
1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{
1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# ifdef _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS
1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef vector<_Tp> _Sequence;
1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef less< typename vector<_Tp>::value_type> _Compare;
1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef priority_queue<_Tp> _Self;
1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# else
1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef priority_queue<_Tp, _Sequence, _Compare> _Self;
1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif
1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef typename _Sequence::value_type      value_type;
1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef typename _Sequence::size_type       size_type;
1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef          _Sequence                  container_type;
1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef typename _Sequence::reference       reference;
1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef typename _Sequence::const_reference const_reference;
1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected:
1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  //c is a Standard name (23.2.3.2), do no make it STLport naming convention compliant.
1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  _Sequence c;
1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  _Compare comp;
1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  priority_queue() : c() {}
1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  explicit priority_queue(const _Compare& __x) :  c(), comp(__x) {}
1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  priority_queue(const _Compare& __x, const _Sequence& __s)
1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    : c(__s), comp(__x)
1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    { make_heap(c.begin(), c.end(), comp); }
1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
176e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_NO_MOVE_SEMANTIC)
1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  priority_queue(__move_source<_Self> src)
1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    : c(_STLP_PRIV _AsMoveSource(src.get().c)),
1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      comp(_STLP_PRIV _AsMoveSource(src.get().comp)) {}
180e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifdef _STLP_MEMBER_TEMPLATES
1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  template <class _InputIterator>
1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  priority_queue(_InputIterator __first, _InputIterator __last)
1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    : c(__first, __last) { make_heap(c.begin(), c.end(), comp); }
1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  template <class _InputIterator>
1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  priority_queue(_InputIterator __first,
1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block                 _InputIterator __last, const _Compare& __x)
1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    : c(__first, __last), comp(__x)
1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    { make_heap(c.begin(), c.end(), comp); }
1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  template <class _InputIterator>
1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  priority_queue(_InputIterator __first, _InputIterator __last,
1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block                 const _Compare& __x, const _Sequence& __s)
1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  : c(__s), comp(__x)
1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  {
1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    c.insert(c.end(), __first, __last);
1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    make_heap(c.begin(), c.end(), comp);
2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else /* _STLP_MEMBER_TEMPLATES */
2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  priority_queue(const value_type* __first, const value_type* __last)
2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    : c(__first, __last) { make_heap(c.begin(), c.end(), comp); }
2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  priority_queue(const value_type* __first, const value_type* __last,
2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block                 const _Compare& __x)
2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    : c(__first, __last), comp(__x)
2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    { make_heap(c.begin(), c.end(), comp); }
2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  priority_queue(const value_type* __first, const value_type* __last,
2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block                 const _Compare& __x, const _Sequence& __c)
2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    : c(__c), comp(__x)
2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  {
2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    c.insert(c.end(), __first, __last);
2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    make_heap(c.begin(), c.end(), comp);
2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_MEMBER_TEMPLATES */
2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  bool empty() const { return c.empty(); }
2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  size_type size() const { return c.size(); }
2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  const_reference top() const { return c.front(); }
2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void push(const value_type& __x) {
2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _STLP_TRY {
2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      c.push_back(__x);
2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      push_heap(c.begin(), c.end(), comp);
2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    }
2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _STLP_UNWIND(c.clear())
2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void pop() {
2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _STLP_TRY {
2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      pop_heap(c.begin(), c.end(), comp);
2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      c.pop_back();
2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    }
2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _STLP_UNWIND(c.clear())
2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
237e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
238e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  void _M_swap_workaround(_Self& __x) {
239e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    _Sequence __tmp = c;
240e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    c = __x.c;
241e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    __x.c = __tmp;
242e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  }
243e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block};
2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
246e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC)
2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Sequence>
2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct __move_traits<queue<_Tp, _Sequence> > :
2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  _STLP_PRIV __move_traits_aux<_Sequence>
2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{};
2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Sequence, class _Compare>
2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct __move_traits<priority_queue<_Tp, _Sequence, _Compare> > :
2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  _STLP_PRIV __move_traits_aux2<_Sequence, _Compare>
2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{};
256e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE
2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_QUEUE_ARGS
2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_QUEUE_HEADER_ARGS
2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef comp
2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_INTERNAL_QUEUE_H */
2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables:
2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++
2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End:
269