ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

_list.h
Go to the documentation of this file.
00001 /*
00002  *
00003  * Copyright (c) 1994
00004  * Hewlett-Packard Company
00005  *
00006  * Copyright (c) 1996,1997
00007  * Silicon Graphics Computer Systems, Inc.
00008  *
00009  * Copyright (c) 1997
00010  * Moscow Center for SPARC Technology
00011  *
00012  * Copyright (c) 1999
00013  * Boris Fomitchev
00014  *
00015  * This material is provided "as is", with absolutely no warranty expressed
00016  * or implied. Any use is at your own risk.
00017  *
00018  * Permission to use or copy this software for any purpose is hereby granted
00019  * without fee, provided the above notices are retained on all copies.
00020  * Permission to modify the code and to distribute modified code is granted,
00021  * provided the above notices are retained, and a notice that the code was
00022  * modified is included with the above copyright notice.
00023  *
00024  */
00025 
00026 /* NOTE: This is an internal header file, included by other STL headers.
00027  *   You should not attempt to use it directly.
00028  */
00029 
00030 #ifndef _STLP_INTERNAL_DBG_LIST_H
00031 #define _STLP_INTERNAL_DBG_LIST_H
00032 
00033 #ifndef _STLP_INTERNAL_ALGO_H
00034 #  include <stl/_algo.h>
00035 #endif
00036 
00037 #ifndef _STLP_DBG_ITERATOR_H
00038 #  include <stl/debug/_iterator.h>
00039 #endif
00040 
00041 #define _STLP_NON_DBG_LIST _STLP_PRIV _STLP_NON_DBG_NAME(list) <_Tp, _Alloc>
00042 
00043 _STLP_BEGIN_NAMESPACE
00044 
00045 #if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS)
00046 template <class _Tp, class _Alloc>
00047 inline _Tp*
00048 value_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_LIST >&)
00049 { return (_Tp*)0; }
00050 template <class _Tp, class _Alloc>
00051 inline bidirectional_iterator_tag
00052 iterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_LIST >&)
00053 { return bidirectional_iterator_tag(); }
00054 #endif
00055 
00056 template <class _Tp, _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Tp>) >
00057 class list :
00058 #if !defined (__DMC__)
00059              private
00060 #endif
00061                      _STLP_PRIV __construct_checker<_STLP_NON_DBG_LIST >
00062 #if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
00063            , public __stlport_class<list<_Tp, _Alloc> >
00064 #endif
00065 {
00066   typedef _STLP_NON_DBG_LIST _Base;
00067   typedef list<_Tp, _Alloc> _Self;
00068   typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_LIST > _ConstructCheck;
00069 
00070 public:
00071   __IMPORT_CONTAINER_TYPEDEFS(_Base)
00072 
00073 public:
00074   typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Nonconst_traits<value_type> > > iterator;
00075   typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Const_traits<value_type> > >    const_iterator;
00076 
00077   _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS;
00078 
00079 private:
00080   _Base _M_non_dbg_impl;
00081   _STLP_PRIV __owned_list _M_iter_list;
00082 
00083   void _Invalidate_iterator(const iterator& __it)
00084   { _STLP_PRIV __invalidate_iterator(&_M_iter_list, __it); }
00085   void _Invalidate_iterators(const iterator& __first, const iterator& __last)
00086   { _STLP_PRIV __invalidate_range(&_M_iter_list, __first, __last); }
00087 
00088   typedef typename _Base::iterator _Base_iterator;
00089 
00090 public:
00091   explicit list(const allocator_type& __a = allocator_type()) :
00092     _M_non_dbg_impl(__a), _M_iter_list(&_M_non_dbg_impl) {}
00093 
00094 #if !defined(_STLP_DONT_SUP_DFLT_PARAM)
00095   explicit list(size_type __n, const _Tp& __x = _Tp(),
00096 #else
00097   list(size_type __n, const _Tp& __x,
00098 #endif 
00099             const allocator_type& __a = allocator_type())
00100     : _M_non_dbg_impl(__n, __x, __a), _M_iter_list(&_M_non_dbg_impl) {}
00101 
00102 #if defined(_STLP_DONT_SUP_DFLT_PARAM)
00103   explicit list(size_type __n)
00104     : _M_non_dbg_impl(__n), _M_iter_list(&_M_non_dbg_impl) {}
00105 #endif /*_STLP_DONT_SUP_DFLT_PARAM*/
00106 
00107 #if !defined (_STLP_NO_MOVE_SEMANTIC)
00108   list(__move_source<_Self> src)
00109     : _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)),
00110       _M_iter_list(&_M_non_dbg_impl) {
00111 #  if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL)
00112     src.get()._M_iter_list._Invalidate_all();
00113 #  else
00114     src.get()._M_iter_list._Set_owner(_M_iter_list);
00115 #  endif
00116   }
00117 #endif
00118 
00119 #if defined (_STLP_MEMBER_TEMPLATES)
00120   template <class _InputIterator>
00121   list(_InputIterator __first, _InputIterator __last,
00122        const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL)
00123     : _ConstructCheck(__first, __last),
00124       _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last), __a),
00125       _M_iter_list(&_M_non_dbg_impl) {}
00126 #  if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS)
00127   template <class _InputIterator>
00128   list(_InputIterator __first, _InputIterator __last)
00129     : _ConstructCheck(__first, __last),
00130       _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)),
00131       _M_iter_list(&_M_non_dbg_impl) {}
00132 #  endif
00133 #else
00134 
00135   list(const value_type* __first, const value_type* __last,
00136        const allocator_type& __a = allocator_type())
00137     : _ConstructCheck(__first, __last),
00138       _M_non_dbg_impl(__first, __last, __a),
00139       _M_iter_list(&_M_non_dbg_impl) {}
00140   list(const_iterator __first, const_iterator __last,
00141        const allocator_type& __a = allocator_type())
00142     : _ConstructCheck(__first, __last),
00143       _M_non_dbg_impl(__first._M_iterator, __last._M_iterator, __a),
00144       _M_iter_list(&_M_non_dbg_impl) {}
00145 
00146 #endif
00147 
00148   list(const _Self& __x) :
00149     _ConstructCheck(__x),
00150     _M_non_dbg_impl(__x._M_non_dbg_impl) , _M_iter_list(&_M_non_dbg_impl) {}
00151 
00152   _Self& operator=(const _Self& __x) {
00153     if (this != &__x) {
00154       //Should not invalidate end iterator
00155       _Invalidate_iterators(begin(), end());
00156       _M_non_dbg_impl = __x._M_non_dbg_impl;
00157     }
00158     return *this;
00159   }
00160 
00161   allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); }
00162 
00163   iterator begin()             { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); }
00164   const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); }
00165 
00166   iterator end()               { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); }
00167   const_iterator end() const   { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); }
00168 
00169   reverse_iterator rbegin()    { return reverse_iterator(end()); }
00170   reverse_iterator rend()      { return reverse_iterator(begin()); }
00171 
00172   const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); }
00173   const_reverse_iterator rend() const { return const_reverse_iterator(begin()); }
00174 
00175   size_type size() const { return _M_non_dbg_impl.size(); }
00176   size_type max_size() const { return _M_non_dbg_impl.max_size(); }
00177   bool empty() const { return _M_non_dbg_impl.empty(); }
00178 
00179   // those are here to enforce checking
00180   reference front() {
00181     _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER)
00182     return *begin();
00183   }
00184   const_reference front() const {
00185     _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER)
00186     return *begin();
00187   }
00188   reference back() {
00189     _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER)
00190     return *(--end());
00191   }
00192   const_reference back() const {
00193     _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER)
00194     return *(--end());
00195   }
00196 
00197   void swap(_Self& __x) {
00198     _M_iter_list._Swap_owners(__x._M_iter_list);
00199     _M_non_dbg_impl.swap(__x._M_non_dbg_impl);
00200   }
00201 #if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
00202   void _M_swap_workaround(_Self& __x) { swap(__x); }
00203 #endif
00204 
00205 #if !defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS)
00206   iterator insert(iterator __pos, const _Tp& __x = _Tp()) {
00207 #else
00208   iterator insert(iterator __pos, const _Tp& __x) {
00209 #endif 
00210     _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos))
00211     return iterator(&_M_iter_list,_M_non_dbg_impl.insert(__pos._M_iterator, __x) );
00212   }
00213 
00214 #if defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS)
00215   iterator insert(iterator __pos) { return insert(__pos, _STLP_DEFAULT_CONSTRUCTED(_Tp)); }
00216 #endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/
00217 
00218 #if defined (_STLP_MEMBER_TEMPLATES)
00219   template <class _InputIterator>
00220   void insert(iterator __pos, _InputIterator __first, _InputIterator __last) {
00221     _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos))
00222     _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last))
00223     _M_non_dbg_impl.insert(__pos._M_iterator,
00224                            _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last));
00225   }
00226 #endif
00227 
00228 #if !defined (_STLP_MEMBER_TEMPLATES)
00229   void insert(iterator __pos, const _Tp* __first, const _Tp* __last) {
00230     _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos))
00231     _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last))
00232     _M_non_dbg_impl.insert(__pos._M_iterator, __first, __last);
00233   }
00234 #endif
00235 
00236 #if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION)
00237   void insert(iterator __pos,
00238               const_iterator __first, const_iterator __last) {
00239     _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos))
00240     _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last))
00241 #  if (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL)
00242     _STLP_STD_DEBUG_CHECK(__check_if_not_owner(&_M_iter_list, __first))
00243 #  endif
00244     _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator);
00245   }
00246   void insert(iterator __pos,
00247               iterator __first, iterator __last) {
00248     _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos))
00249     _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last))
00250 #  if (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL)
00251     _STLP_STD_DEBUG_CHECK(__check_if_not_owner(&_M_iter_list, __first))
00252 #  endif
00253     _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator);
00254   }
00255 #endif
00256 
00257   void insert(iterator __pos, size_type __n, const _Tp& __x) {
00258     _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos))
00259     _M_non_dbg_impl.insert(__pos._M_iterator, __n, __x);
00260   }
00261 
00262   void push_back(const_reference __x) { _M_non_dbg_impl.push_back(__x); }
00263   void pop_back() {
00264     _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER)
00265     _Invalidate_iterator(end());
00266     _M_non_dbg_impl.pop_back();
00267   }
00268 
00269   void push_front(const_reference __x) { _M_non_dbg_impl.push_front(__x); }
00270   void pop_front() {
00271     _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER)
00272     _Invalidate_iterator(begin());
00273     _M_non_dbg_impl.pop_front();
00274   }
00275 
00276   iterator erase(iterator __pos) {
00277     _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos))
00278     _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos))
00279     _Invalidate_iterator(__pos);
00280     return iterator(&_M_iter_list,_M_non_dbg_impl.erase(__pos._M_iterator));
00281   }
00282   iterator erase(iterator __first, iterator __last) {
00283     _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end()))
00284     _Invalidate_iterators(__first, __last);
00285     return iterator (&_M_iter_list, _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator));
00286   }
00287 
00288 #if !defined(_STLP_DONT_SUP_DFLT_PARAM)
00289   void resize(size_type __new_size, const _Tp& __x = _Tp()) {
00290 #else
00291   void resize(size_type __new_size, const _Tp& __x) {
00292 #endif /*_STLP_DONT_SUP_DFLT_PARAM*/
00293     _Base_iterator __i = _M_non_dbg_impl.begin();
00294     size_type __len = 0;
00295     for ( ; __i != _M_non_dbg_impl.end() && __len < __new_size; ++__i, ++__len);
00296 
00297     if (__len == __new_size)
00298       erase(iterator(&_M_iter_list, __i), end());
00299     else                          // __i == end()
00300       _M_non_dbg_impl.insert(_M_non_dbg_impl.end(), __new_size - __len, __x);
00301   }
00302 
00303 #if defined(_STLP_DONT_SUP_DFLT_PARAM)
00304   void resize(size_type __new_size) { resize(__new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); }
00305 #endif
00306 
00307 #if defined (_STLP_MEMBER_TEMPLATES)
00308   template <class _InputIterator>
00309   void assign(_InputIterator __first, _InputIterator __last) {
00310     _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last))
00311     _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last));
00312     _Invalidate_iterators(begin(), end());
00313   }
00314 #else
00315   void assign(const _Tp* __first, const _Tp* __last) {
00316     _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last))
00317     _M_non_dbg_impl.assign(__first, __last);
00318     _Invalidate_iterators(begin(), end());
00319   }
00320 
00321   void assign(iterator __first, iterator __last) {
00322     _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last))
00323     _M_non_dbg_impl.assign(__first._M_iterator, __last._M_iterator);
00324     _Invalidate_iterators(begin(), end());
00325   }
00326 
00327   void assign(const_iterator __first, const_iterator __last) {
00328     _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last))
00329     _M_non_dbg_impl.assign(__first._M_iterator, __last._M_iterator);
00330     _Invalidate_iterators(begin(), end());
00331   }
00332 #endif
00333 
00334   void assign(size_type __n, const _Tp& __val) {
00335     _Invalidate_iterators(begin(), end());
00336     _M_non_dbg_impl.assign(__n, __val);
00337   }
00338 
00339   void remove(const _Tp& __x) {
00340     _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end();
00341     while (__first != __last) {
00342       _Base_iterator __next = __first;
00343       ++__next;
00344       if (__x == *__first) {
00345         _Invalidate_iterator(iterator(&_M_iter_list, __first));
00346         _M_non_dbg_impl.erase(__first);
00347       }
00348       __first = __next;
00349     }
00350   }
00351 
00352   void clear() {
00353     _Invalidate_iterators(begin(), end());
00354     _M_non_dbg_impl.clear();
00355   }
00356 
00357 public:
00358   void splice(iterator __pos, _Self& __x) {
00359     _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos))
00360     _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl);
00361 #if (_STLP_DEBUG_LEVEL != _STLP_STANDARD_DBG_LEVEL)
00362     if (get_allocator() == __x.get_allocator())
00363       __x._M_iter_list._Set_owner(_M_iter_list);
00364     else
00365 #endif
00366       // Std: 23.2.2.4:4
00367       // end iterator is not invalidated:
00368       __x._Invalidate_iterators(__x.begin(), __x.end());
00369   }
00370 
00371   void splice(iterator __pos, _Self& __x, iterator __i) {
00372     _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos))
00373     _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__i))
00374     _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&(__x._M_iter_list),__i))
00375     _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl, __i._M_iterator);
00376 #if (_STLP_DEBUG_LEVEL != _STLP_STANDARD_DBG_LEVEL)
00377     if (get_allocator() == __x.get_allocator())
00378       _STLP_PRIV __change_ite_owner(__i, &_M_iter_list);
00379     else
00380 #endif
00381       // Std: 23.2.2.4:7
00382       __x._Invalidate_iterator(__i);
00383   }
00384 
00385   void splice(iterator __pos, _Self& __x, iterator __first, iterator __last) {
00386     _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos))
00387     _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, __x.begin(), __x.end()))
00388     _STLP_DEBUG_CHECK(this == &__x ? !_STLP_PRIV __check_range(__pos, __first, __last) : true)
00389 #if (_STLP_DEBUG_LEVEL != _STLP_STANDARD_DBG_LEVEL)
00390     if (this->get_allocator() == __x.get_allocator())
00391       _STLP_PRIV __change_range_owner(__first, __last, &_M_iter_list);
00392     else
00393 #endif
00394       // Std: 23.2.2.4:12
00395       __x._Invalidate_iterators(__first, __last);
00396     _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl, __first._M_iterator, __last._M_iterator);
00397   }
00398 
00399   void merge(_Self& __x) {
00400 #if !defined (_STLP_NO_EXTENSIONS)
00401     _STLP_DEBUG_CHECK(_STLP_STD::is_sorted(begin()._M_iterator, end()._M_iterator))
00402     _STLP_DEBUG_CHECK(_STLP_STD::is_sorted(__x.begin()._M_iterator, __x.end()._M_iterator))
00403 #endif
00404     _M_non_dbg_impl.merge(__x._M_non_dbg_impl);
00405     if (this->get_allocator() == __x.get_allocator()) {
00406       __x._M_iter_list._Set_owner(_M_iter_list);
00407     }
00408     else {
00409       __x._Invalidate_iterators(__x.begin(), __x.end());
00410     }
00411   }
00412   void reverse() {
00413     _M_non_dbg_impl.reverse();
00414   }
00415   void unique() {
00416     _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end();
00417     if (__first == __last) return;
00418     _Base_iterator __next = __first;
00419     while (++__next != __last) {
00420       if (*__first == *__next) {
00421         _Invalidate_iterator(iterator(&_M_iter_list, __next));
00422         _M_non_dbg_impl.erase(__next);
00423       }
00424       else
00425         __first = __next;
00426       __next = __first;
00427     }
00428   }
00429   void sort() {
00430     _M_non_dbg_impl.sort();
00431   }
00432 
00433 #if defined (_STLP_MEMBER_TEMPLATES)
00434   template <class _Predicate>
00435   void remove_if(_Predicate __pred) {
00436     _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end();
00437     while (__first != __last) {
00438       _Base_iterator __next = __first;
00439       ++__next;
00440       if (__pred(*__first)) {
00441         _Invalidate_iterator(iterator(&_M_iter_list, __first));
00442         _M_non_dbg_impl.erase(__first);
00443       }
00444       __first = __next;
00445     }
00446   }
00447 
00448   template <class _BinaryPredicate>
00449   void unique(_BinaryPredicate __binary_pred) {
00450     _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end();
00451     if (__first == __last) return;
00452     _Base_iterator __next = __first;
00453     while (++__next != __last) {
00454       if (__binary_pred(*__first, *__next)) {
00455         _Invalidate_iterator(iterator(&_M_iter_list, __next));
00456         _M_non_dbg_impl.erase(__next);
00457       }
00458       else
00459         __first = __next;
00460       __next = __first;
00461     }
00462   }
00463 
00464   template <class _StrictWeakOrdering>
00465   void merge(_Self& __x, _StrictWeakOrdering __comp) {
00466 #if !defined (_STLP_NO_EXTENSIONS)
00467     _STLP_DEBUG_CHECK(_STLP_STD::is_sorted(_M_non_dbg_impl.begin(), _M_non_dbg_impl.end(), __comp))
00468     _STLP_DEBUG_CHECK(_STLP_STD::is_sorted(__x.begin()._M_iterator, __x.end()._M_iterator, __comp))
00469 #endif
00470     _M_non_dbg_impl.merge(__x._M_non_dbg_impl, __comp);
00471     if (this->get_allocator() == __x.get_allocator()) {
00472       __x._M_iter_list._Set_owner(_M_iter_list);
00473     }
00474     else {
00475       __x._Invalidate_iterators(__x.begin(), __x.end());
00476     }
00477   }
00478 
00479   template <class _StrictWeakOrdering>
00480   void sort(_StrictWeakOrdering __comp) {
00481     _M_non_dbg_impl.sort(__comp);
00482   }
00483 #endif
00484 };
00485 
00486 
00487 _STLP_END_NAMESPACE
00488 
00489 #undef _STLP_NON_DBG_LIST
00490 
00491 #endif /* _STLP_INTERNAL_LIST_H */
00492 
00493 // Local Variables:
00494 // mode:C++
00495 // End:

Generated on Sat May 26 2012 04:27:50 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.