19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1996,1997 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk. 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies. 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted, 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice. 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_SLIST_C 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_SLIST_C 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_SLIST_H 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_slist.h> 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_CARRAY_H 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_carray.h> 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_RANGE_ERRORS_H 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_range_errors.h> 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NESTED_TYPE_PARAM_BUG) 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define size_type size_t 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_PRIV_NAMESPACE 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc> 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_Slist_node_base* 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_Slist_base<_Tp,_Alloc>::_M_erase_after(_Slist_node_base* __before_first, 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Slist_node_base* __last_node) { 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Slist_node_base* __cur = __before_first->_M_next; 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (__cur != __last_node) { 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Node* __tmp = __STATIC_CAST(_Node*, __cur); 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __cur = __cur->_M_next; 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_STD::_Destroy(&__tmp->_M_data); 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_head.deallocate(__tmp,1); 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __before_first->_M_next = __last_node; 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __last_node; 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_PTR_SPECIALIZATIONS) 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define slist _STLP_PTR_IMPL_NAME(slist) 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#elif defined (_STLP_DEBUG) 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define slist _STLP_NON_DBG_NAME(slist) 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_STD_NAMESPACE 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* When building STLport lib Digital Mars Compiler complains on the _M_data assignment 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * problem which would be perfertly right if we were using it. Hiding it during build 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * fix this issue. 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc> 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockslist<_Tp,_Alloc>& slist<_Tp,_Alloc>::operator=(const slist<_Tp,_Alloc>& __x) { 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (&__x != this) { 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Node_base* __p1 = &this->_M_head._M_data; 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Node_base* __n1 = this->_M_head._M_data._M_next; 749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _Node_base* __n2 = __x._M_head._M_data._M_next; 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (__n1 && __n2) { 769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __STATIC_CAST(_Node*, __n1)->_M_data = __STATIC_CAST(const _Node*, __n2)->_M_data; 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __p1 = __n1; 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __n1 = __n1->_M_next; 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __n2 = __n2->_M_next; 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__n2 == 0) 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->_M_erase_after(__p1, 0); 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_insert_after_range(__p1, const_iterator(__CONST_CAST(_Node_base*, __n2)), 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator(0)); 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc> 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvoid slist<_Tp, _Alloc>::_M_fill_assign(size_type __n, const _Tp& __val) { 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Node_base* __prev = &this->_M_head._M_data; 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Node_base* __node = this->_M_head._M_data._M_next; 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block for ( ; __node != 0 && __n > 0 ; --__n) { 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __STATIC_CAST(_Node*, __node)->_M_data = __val; 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __prev = __node; 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __node = __node->_M_next; 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__n > 0) 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_insert_after_fill(__prev, __n, __val); 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->_M_erase_after(__prev, 0); 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc> 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvoid slist<_Tp,_Alloc>::resize(size_type __len, const _Tp& __x) { 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Node_base* __cur = &this->_M_head._M_data; 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (__cur->_M_next != 0 && __len > 0) { 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block --__len; 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __cur = __cur->_M_next; 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__cur->_M_next) 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->_M_erase_after(__cur, 0); 1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_insert_after_fill(__cur, __len, __x); 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc> 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvoid slist<_Tp,_Alloc>::remove(const _Tp& __val) { 1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Node_base* __cur = &this->_M_head._M_data; 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (__cur && __cur->_M_next) { 1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__STATIC_CAST(_Node*, __cur->_M_next)->_M_data == __val) 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->_M_erase_after(__cur); 1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __cur = __cur->_M_next; 1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (slist) 1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_PRIV_NAMESPACE 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc, class _BinaryPredicate> 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvoid _Slist_unique(slist<_Tp, _Alloc>& __that, _BinaryPredicate __pred) { 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Slist_node<_Tp> _Node; 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typename slist<_Tp, _Alloc>::iterator __ite(__that.begin()); 1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__ite != __that.end()) { 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (__ite._M_node->_M_next) { 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__pred(*__ite, __STATIC_CAST(_Node*, __ite._M_node->_M_next)->_M_data)) 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __that.erase_after(__ite); 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__ite; 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc, class _StrictWeakOrdering> 1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvoid _Slist_merge(slist<_Tp, _Alloc>& __that, slist<_Tp, _Alloc>& __x, 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _StrictWeakOrdering __comp) { 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Slist_node<_Tp> _Node; 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_PRIV _Slist_node_base _Node_base; 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__that.get_allocator() == __x.get_allocator()) { 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typename slist<_Tp, _Alloc>::iterator __ite(__that.before_begin()); 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (__ite._M_node->_M_next && !__x.empty()) { 1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__comp(__x.front(), __STATIC_CAST(_Node*, __ite._M_node->_M_next)->_M_data)) { 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!__comp(__STATIC_CAST(_Node*, __ite._M_node->_M_next)->_M_data, __x.front()), 1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _StlMsg_INVALID_STRICT_WEAK_PREDICATE) 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __that.splice_after(__ite, __x, __x.before_begin()); 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__ite; 1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (!__x.empty()) { 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __that.splice_after(__ite, __x); 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typename slist<_Tp, _Alloc>::iterator __i1(__that.before_begin()), __i2(__x.begin()); 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (__i1._M_node->_M_next && __i2._M_node) { 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__comp(__STATIC_CAST(_Node*, __i1._M_node->_M_next)->_M_data, *__i2)) { 1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!__comp(*__i2, __STATIC_CAST(_Node*, __i1._M_node->_M_next)->_M_data), 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _StlMsg_INVALID_STRICT_WEAK_PREDICATE) 1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__i1; 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __i1 = __that.insert_after(__i1, *(__i2++)); 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __that.insert_after(__i1, __i2, __x.end()); 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x.clear(); 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc, class _StrictWeakOrdering> 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvoid _Slist_sort(slist<_Tp, _Alloc>& __that, _StrictWeakOrdering __comp) { 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (!__that.begin()._M_node || !__that.begin()._M_node->_M_next) 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return; 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block slist<_Tp, _Alloc> __carry(__that.get_allocator()); 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const int NB = 64; 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV _CArray<slist<_Tp, _Alloc>, NB> __counter(__carry); 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int __fill = 0; 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (!__that.empty()) { 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __carry.splice_after(__carry.before_begin(), __that, __that.before_begin()); 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int __i = 0; 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (__i < __fill && !__counter[__i].empty()) { 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV _Slist_merge(__counter[__i], __carry, __comp); 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __carry.swap(__counter[__i]); 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__i; 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __carry.swap(__counter[__i]); 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__i == __fill) { 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__fill; 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__fill >= NB) { 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //Looks like the slist has too many elements to be sorted with this algorithm: 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __stl_throw_overflow_error("slist::sort"); 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block for (int __i = 1; __i < __fill; ++__i) 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV _Slist_merge(__counter[__i], __counter[__i - 1], __comp); 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __that.swap(__counter[__fill-1]); 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (slist) 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# undef slist 2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_STD_NAMESPACE 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NESTED_TYPE_PARAM_BUG) 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# undef size_type 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_SLIST_C */ 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 232