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