177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/* 277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1994 477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Hewlett-Packard Company 577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1996,1997 777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Silicon Graphics Computer Systems, Inc. 877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1997 1077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Moscow Center for SPARC Technology 1177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1999 1377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Boris Fomitchev 1477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * This material is provided "as is", with absolutely no warranty expressed 1677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * or implied. Any use is at your own risk. 1777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to use or copy this software for any purpose is hereby granted 1977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * without fee, provided the above notices are retained on all copies. 2077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to modify the code and to distribute modified code is granted, 2177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * provided the above notices are retained, and a notice that the code was 2277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * modified is included with the above copyright notice. 2377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 2477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */ 2577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/* NOTE: This is an internal header file, included by other STL headers. 2777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * You should not attempt to use it directly. 2877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */ 2977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_ALGOBASE_H 3177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define _STLP_INTERNAL_ALGOBASE_H 3277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_CSTDDEF 3477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_cstddef.h> 3577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 3677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_CSTRING 3877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_cstring.h> 3977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 4077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_CLIMITS 4277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <climits> 4377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 4477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_CSTDLIB 4677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_cstdlib.h> 4777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 4877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_PAIR_H 5077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_pair.h> 5177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 5277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 5377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_ITERATOR_BASE_H 5477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_iterator_base.h> 5577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 5677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 5777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_TYPE_TRAITS_H 5877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/type_traits.h> 5977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 6077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_BEGIN_NAMESPACE 6277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 6477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 6577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 6677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void __swap_aux(_Tp& __a, _Tp& __b, const __true_type& /*SwapImplemented*/) { 6777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __a._M_swap_workaround(__b); 6877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 6977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 7177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void __swap_aux(_Tp& __a, _Tp& __b, const __false_type& /*SwapImplemented*/) { 7277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Tp __tmp = __a; 7377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __a = __b; 7477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __b = __tmp; 7577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 7677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 7777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 7877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// swap and iter_swap 8077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 8177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void swap(_Tp& __a, _Tp& __b) { 8277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 8377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if !defined(__BORLANDC__) 8477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _SwapImplemented<_Tp>::_Ret _Implemented; 8577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# else 8677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner enum { _Is = _SwapImplemented<_Tp>::_Is }; 8777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename __bool2type<_Is>::_Ret _Implemented; 8877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 8977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __swap_aux(__a, __b, _Implemented()); 9077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else 9177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Tp __tmp = __a; 9277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __a = __b; 9377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __b = __tmp; 9477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 9577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 9677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 9877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter1, class _ForwardIter2, class _Value> 10077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void __iter_swap_aux_aux(_ForwardIter1& __i1, _ForwardIter2& __i2, _Value *) { 10177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Value tmp = *__i1; 10277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__i1 = *__i2; 10377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__i2 = tmp; 10477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 10577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter1, class _ForwardIter2> 10777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void __iter_swap_aux(_ForwardIter1& __i1, _ForwardIter2& __i2, const __true_type& /*OKToSwap*/) { 10877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner /* namespace specification breaks access to the right swap template overload (at least for gcc) */ 10977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner /*_STLP_STD::*/ swap(*__i1, *__i2); 11077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 11177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter1, class _ForwardIter2> 11377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void __iter_swap_aux(_ForwardIter1& __i1, _ForwardIter2& __i2, const __false_type& /*OKToSwap*/) { 11477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __iter_swap_aux_aux( __i1, __i2, _STLP_VALUE_TYPE(__i1,_ForwardIter1) ); 11577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 11677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 11877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter1, class _ForwardIter2> 12077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void iter_swap(_ForwardIter1 __i1, _ForwardIter2 __i2) { 12177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __iter_swap_aux( __i1, __i2, _IsOKToSwap(_STLP_VALUE_TYPE(__i1, _ForwardIter1), _STLP_VALUE_TYPE(__i2, _ForwardIter2), 12277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_IS_REF_TYPE_REAL_REF(__i1, _ForwardIter1), 12377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_IS_REF_TYPE_REAL_REF(__i2, _ForwardIter2))._Answer()); 12477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 12577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 12677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//-------------------------------------------------- 12777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// min and max 12877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 12977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (__BORLANDC__) || defined (_STLP_USE_OWN_NAMESPACE) 13077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if (defined (__BORLANDC__) && (__BORLANDC__ < 0x580)) && !defined (__STDC__) 13177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//In not ANSI mode Borland import min/max in global namespace which conflict 13277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//with STLport min/max when user does a 'using namespace std' in its code 13377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//(see test/unit/alg_test.cpp). To avoid this clash we simply import Borland min/max 13477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//in STLport namespace. 13577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerusing _STLP_VENDOR_STD::min; 13677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerusing _STLP_VENDOR_STD::max; 13777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# else 13877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 13977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline const _Tp& (min)(const _Tp& __a, const _Tp& __b) { return __b < __a ? __b : __a; } 14077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 14177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline const _Tp& (max)(const _Tp& __a, const _Tp& __b) { return __a < __b ? __b : __a; } 14277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 14377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 14477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 14577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if defined (__BORLANDC__) && defined (_STLP_USE_OWN_NAMESPACE) 14677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline unsigned long (min) (unsigned long __a, unsigned long __b) { return __b < __a ? __b : __a; } 14777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline unsigned long (max) (unsigned long __a, unsigned long __b) { return __a < __b ? __b : __a; } 14877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 14977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if !defined (__BORLANDC__) || (__BORLANDC__ < 0x590) 15177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp, class _Compare> 15277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline const _Tp& (min)(const _Tp& __a, const _Tp& __b, _Compare __comp) { 15377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __comp(__b, __a) ? __b : __a; 15477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 15577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp, class _Compare> 15777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline const _Tp& (max)(const _Tp& __a, const _Tp& __b, _Compare __comp) { 15877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __comp(__a, __b) ? __b : __a; 15977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 16077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# else 16177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp, class _Compare> 16277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline const _Tp (min)(const _Tp __a, const _Tp __b, _Compare __comp) { 16377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __comp(__b, __a) ? __b : __a; 16477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 16577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 16677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp, class _Compare> 16777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline const _Tp (max)(const _Tp __a, const _Tp __b, _Compare __comp) { 16877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __comp(__a, __b) ? __b : __a; 16977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 17077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 17177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 17277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//-------------------------------------------------- 17377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// copy 17477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 17577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// All of these auxiliary functions serve two purposes. (1) Replace 17677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// calls to copy with memmove whenever possible. (Memmove, not memcpy, 17777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// because the input and output ranges are permitted to overlap.) 17877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// (2) If we're using random access iterators, then write the loop as 17977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// a for loop with an explicit count. 18077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 18277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter, class _Distance> 18477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter __copy(_InputIter __first, _InputIter __last, 18577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, const input_iterator_tag &, _Distance*) { 18677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__result, ++__first) 18777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = *__first; 18877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 18977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 19077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) 19277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter, class _Distance> 19377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter __copy(_InputIter __first, _InputIter __last, 19477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, const forward_iterator_tag &, _Distance* ) { 19577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__result, ++__first) 19677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = *__first; 19777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 19877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 19977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 20077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter, class _Distance> 20177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter __copy(_InputIter __first, _InputIter __last, 20277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, const bidirectional_iterator_tag &, _Distance* ) { 20377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__result, ++__first) 20477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = *__first; 20577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 20677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 20777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 20877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 20977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter, class _OutputIter, class _Distance> 21077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter 21177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner__copy(_RandomAccessIter __first, _RandomAccessIter __last, 21277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, const random_access_iterator_tag &, _Distance*) { 21377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for (_Distance __n = __last - __first; __n > 0; --__n) { 21477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = *__first; 21577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__first; 21677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__result; 21777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 21877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 21977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 22077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 22177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void* 22277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner__copy_trivial(const void* __first, const void* __last, void* __result) { 22377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_t __n = (const char*)__last - (const char*)__first; 22477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __n ? (void *)((char*)memmove(__result, __first, __n) + __n) : __result; 22577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 22677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 22777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//-------------------------------------------------- 22877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// copy_backward auxiliary functions 22977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _BidirectionalIter1, class _BidirectionalIter2, 23177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner class _Distance> 23277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _BidirectionalIter2 __copy_backward(_BidirectionalIter1 __first, 23377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BidirectionalIter1 __last, 23477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BidirectionalIter2 __result, 23577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const bidirectional_iterator_tag &, 23677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Distance*) { 23777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner while (__first != __last) 23877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *--__result = *--__last; 23977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 24077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 24177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 24277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter, class _BidirectionalIter, class _Distance> 24377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _BidirectionalIter __copy_backward(_RandomAccessIter __first, 24477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __last, 24577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BidirectionalIter __result, 24677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const random_access_iterator_tag &, 24777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Distance*) { 24877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for (_Distance __n = __last - __first; __n > 0; --__n) 24977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *--__result = *--__last; 25077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 25177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 25277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 25377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void* 25477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner__copy_trivial_backward(const void* __first, const void* __last, void* __result) { 25577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const ptrdiff_t _Num = (const char*)__last - (const char*)__first; 25677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return (_Num > 0) ? memmove((char*)__result - _Num, __first, _Num) : __result ; 25777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 25877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 25977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter> 26077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter __copy_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, 26177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const __false_type& /*IsOKToMemCpy*/) { 26277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __copy(__first, __last, __result, random_access_iterator_tag(), (ptrdiff_t*)0); 26377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 26477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter> 26577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter __copy_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, 26677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const __true_type& /*IsOKToMemCpy*/) { 26777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // we know they all pointers, so this cast is OK 26877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // return (_OutputIter)__copy_trivial(&(*__first), &(*__last), &(*__result)); 26977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return (_OutputIter)_STLP_PRIV __copy_trivial(__first, __last, __result); 27077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 27177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 27277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter> 27377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter __copy_aux(_InputIter __first, _InputIter __last, _OutputIter __result, 27477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const __true_type& /*BothPtrType*/) { 27577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __copy_ptrs(__first, __last, __result, 27677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _UseTrivialCopy(_STLP_VALUE_TYPE(__first, _InputIter), 27777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VALUE_TYPE(__result, _OutputIter))._Answer()); 27877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 27977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 28077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter> 28177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter __copy_aux(_InputIter __first, _InputIter __last, _OutputIter __result, 28277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const __false_type& /*BothPtrType*/) { 28377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __copy(__first, __last, __result, 28477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_ITERATOR_CATEGORY(__first, _InputIter), 28577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _InputIter)); 28677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 28777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 28877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 28977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 29077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter> 29177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter copy(_InputIter __first, _InputIter __last, _OutputIter __result) { 29277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 29377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __copy_aux(__first, __last, __result, _BothPtrType< _InputIter, _OutputIter>::_Answer()); 29477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 29577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 29677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 29777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 29877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter> 29977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter __copy_backward_ptrs(_InputIter __first, _InputIter __last, 30077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, const __false_type& /*TrivialAssignment*/) { 30177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __copy_backward(__first, __last, __result, 30277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_ITERATOR_CATEGORY(__first, _InputIter), 30377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _InputIter)); 30477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 30577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter> 30677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter __copy_backward_ptrs(_InputIter __first, _InputIter __last, 30777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, const __true_type& /*TrivialAssignment*/) { 30877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return (_OutputIter)_STLP_PRIV __copy_trivial_backward(__first, __last, __result); 30977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 31077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 31177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter> 31277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter __copy_backward_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __false_type&) { 31377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __copy_backward(__first, __last, __result, 31477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_ITERATOR_CATEGORY(__first,_InputIter), 31577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _InputIter)); 31677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 31777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 31877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter> 31977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter __copy_backward_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __true_type&) { 32077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __copy_backward_ptrs(__first, __last, __result, 32177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _UseTrivialCopy(_STLP_VALUE_TYPE(__first, _InputIter), 32277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VALUE_TYPE(__result, _OutputIter))._Answer()); 32377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 32477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 32577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 32677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 32777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter> 32877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter copy_backward(_InputIter __first, _InputIter __last, _OutputIter __result) { 32977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 33077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __copy_backward_aux(__first, __last, __result, _BothPtrType< _InputIter, _OutputIter>::_Answer() ); 33177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 33277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 33377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) 33477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# define _STLP_DECLARE_COPY_TRIVIAL(_Tp) \ 33577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) \ 33677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return (_Tp*)_STLP_PRIV __copy_trivial(__first, __last, __result); } \ 33777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _Tp* copy_backward(const _Tp* __first, const _Tp* __last, _Tp* __result) \ 33877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return (_Tp*)_STLP_PRIV __copy_trivial_backward(__first, __last, __result); } 33977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 34077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if !defined (_STLP_NO_BOOL) 34177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(bool) 34277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 34377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(char) 34477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if !defined (_STLP_NO_SIGNED_BUILTINS) 34577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(signed char) 34677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 34777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(unsigned char) 34877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(short) 34977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(unsigned short) 35077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(int) 35177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(unsigned int) 35277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(long) 35377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(unsigned long) 35477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if !defined(_STLP_NO_WCHAR_T) && !defined (_STLP_WCHAR_T_IS_USHORT) 35577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(wchar_t) 35677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 35777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if defined (_STLP_LONG_LONG) 35877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(_STLP_LONG_LONG) 35977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(unsigned _STLP_LONG_LONG) 36077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 36177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(float) 36277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(double) 36377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if !defined (_STLP_NO_LONG_DOUBLE) 36477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLARE_COPY_TRIVIAL(long double) 36577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 36677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# undef _STLP_DECLARE_COPY_TRIVIAL 36777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 36877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 36977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//-------------------------------------------------- 37077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// copy_n (not part of the C++ standard) 37177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 37277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_EXTENSIONS) 37377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 37477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 37577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _Size, class _OutputIter> 37677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _STLP_STD::pair<_InputIter, _OutputIter> 37777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner__copy_n(_InputIter __first, _Size __count, _OutputIter __result, 37877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const input_iterator_tag &) { 37977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __count > 0; --__count) { 38077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = *__first; 38177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__first; 38277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__result; 38377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 38477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_STD::pair<_InputIter, _OutputIter>(__first, __result); 38577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 38677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 38777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RAIter, class _Size, class _OutputIter> 38877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _STLP_STD::pair<_RAIter, _OutputIter> 38977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner__copy_n(_RAIter __first, _Size __count, _OutputIter __result, 39077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const random_access_iterator_tag &) { 39177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RAIter __last = __first + __count; 39277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_STD::pair<_RAIter, _OutputIter>(__last, _STLP_STD::copy(__first, __last, __result)); 39377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 39477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 39577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 39677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 39777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _Size, class _OutputIter> 39877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline pair<_InputIter, _OutputIter> 39977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnercopy_n(_InputIter __first, _Size __count, _OutputIter __result) { 40077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__first) 40177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __copy_n(__first, __count, __result, _STLP_ITERATOR_CATEGORY(__first, _InputIter)); 40277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 40377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 40477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 40577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//-------------------------------------------------- 40677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// fill and fill_n 40777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 40877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 40977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp> 41077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP 41177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid __fill_fwd(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { 41277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first) 41377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__first = __val; 41477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 41577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 41677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp, class _Distance> 41777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void __fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, 41877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const input_iterator_tag &, _Distance*) { 41977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __fill_fwd(__first, __last, __val); 42077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 42177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 42277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) 42377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp, class _Distance> 42477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP 42577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid __fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, 42677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const forward_iterator_tag &, _Distance*) { 42777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __fill_fwd(__first, __last, __val); 42877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 42977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 43077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp, class _Distance> 43177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP 43277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid __fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, 43377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const bidirectional_iterator_tag &, _Distance*) { 43477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __fill_fwd(__first, __last, __val); 43577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 43677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 43777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 43877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter, class _Tp, class _Distance> 43977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP 44077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid __fill(_RandomAccessIter __first, _RandomAccessIter __last, const _Tp& __val, 44177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const random_access_iterator_tag &, _Distance*) { 44277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for (_Distance __n = __last - __first ; __n > 0; ++__first, --__n) 44377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__first = __val; 44477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 44577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 44677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 44777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 44877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp> 44977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { 45077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 45177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __fill(__first, __last, __val, 45277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_ITERATOR_CATEGORY(__first, _ForwardIter), 45377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _ForwardIter)); 45477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 45577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 45677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Specialization: for one-byte types we can use memset. 45777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void fill(unsigned char* __first, unsigned char* __last, 45877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const unsigned char& __val) { 45977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner unsigned char __tmp = __val; 46077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner memset(__first, __tmp, __last - __first); 46177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 46277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_SIGNED_BUILTINS) 46377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void fill(signed char* __first, signed char* __last, 46477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const signed char& __val) { 46577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner signed char __tmp = __val; 46677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner memset(__first, __STATIC_CAST(unsigned char,__tmp), __last - __first); 46777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 46877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 46977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void fill(char* __first, char* __last, const char& __val) { 47077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner char __tmp = __val; 47177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner memset(__first, __STATIC_CAST(unsigned char,__tmp), __last - __first); 47277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 47377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 47477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 47577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 47677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _OutputIter, class _Size, class _Tp> 47777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP 47877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter __fill_n(_OutputIter __first, _Size __n, const _Tp& __val) { 47977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__first) 48077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __n > 0; --__n, ++__first) 48177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__first = __val; 48277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __first; 48377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 48477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 48577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 48677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Size> 48777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline unsigned char* __fill_n(unsigned char* __first, _Size __n, 48877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const unsigned char& __val) { 48977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_STD::fill(__first, __first + __n, __val); 49077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __first + __n; 49177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 49277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_SIGNED_BUILTINS) 49377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Size> 49477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline signed char* __fill_n(signed char* __first, _Size __n, 49577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const signed char& __val) { 49677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_STD::fill(__first, __first + __n, __val); 49777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __first + __n; 49877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 49977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 50077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Size> 50177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline char* __fill_n(char* __first, _Size __n, 50277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const char& __val) { 50377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_STD::fill(__first, __first + __n, __val); 50477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __first + __n; 50577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 50677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 50777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 50877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 50977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 51077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _OutputIter, class _Size, class _Tp> 51177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void fill_n(_OutputIter __first, _Size __n, const _Tp& __val) { 51277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__first) 51377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __fill_n(__first, __n, __val); 51477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 51577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 51677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 51777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//-------------------------------------------------- 51877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// equal and mismatch 51977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 52077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2> 52177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP 52277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_STD::pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1, 52377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter1 __last1, 52477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2) { 52577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__first2) 52677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) 52777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner while (__first1 != __last1 && *__first1 == *__first2) { 52877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__first1; 52977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__first2; 53077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 53177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_STD::pair<_InputIter1, _InputIter2>(__first1, __first2); 53277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 53377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 53477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _BinaryPredicate> 53577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP 53677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_STD::pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1, 53777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter1 __last1, 53877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, 53977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BinaryPredicate __binary_pred) { 54077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__first2) 54177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) 54277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner while (__first1 != __last1 && __binary_pred(*__first1, *__first2)) { 54377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__first1; 54477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__first2; 54577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 54677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_STD::pair<_InputIter1, _InputIter2>(__first1, __first2); 54777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 54877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 54977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2> 55077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP 55177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool equal(_InputIter1 __first1, _InputIter1 __last1, 55277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2) { 55377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__first1) _STLP_FIX_LITERAL_BUG(__last1) _STLP_FIX_LITERAL_BUG(__first2) 55477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) 55577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first1 != __last1; ++__first1, ++__first2) 55677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (!(*__first1 == *__first2)) 55777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return false; 55877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return true; 55977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 56077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 56177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _BinaryPredicate> 56277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP 56377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool equal(_InputIter1 __first1, _InputIter1 __last1, 56477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _BinaryPredicate __binary_pred) { 56577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__first2) 56677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) 56777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first1 != __last1; ++__first1, ++__first2) 56877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (!__binary_pred(*__first1, *__first2)) 56977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return false; 57077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return true; 57177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 57277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 57377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//-------------------------------------------------- 57477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// lexicographical_compare and lexicographical_compare_3way. 57577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// (the latter is not part of the C++ standard.) 57677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 57777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2> 57877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1, 57977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2); 58077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 58177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _Compare> 58277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1, 58377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, 58477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare __comp); 58577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 58677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool 58777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerlexicographical_compare(const unsigned char* __first1, 58877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const unsigned char* __last1, 58977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const unsigned char* __first2, 59077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const unsigned char* __last2) { 59177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const size_t __len1 = __last1 - __first1; 59277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const size_t __len2 = __last2 - __first2; 59377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) 59477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) 59577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 59677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const int __result = memcmp(__first1, __first2, (min) (__len1, __len2)); 59777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result != 0 ? (__result < 0) : (__len1 < __len2); 59877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 59977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 60077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 60177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !(CHAR_MAX == SCHAR_MAX) 60277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool lexicographical_compare(const char* __first1, const char* __last1, 60377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const char* __first2, const char* __last2) { 60477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) 60577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) 60677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 60777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return lexicographical_compare((const unsigned char*) __first1, 60877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner (const unsigned char*) __last1, 60977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner (const unsigned char*) __first2, 61077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner (const unsigned char*) __last2); 61177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 61277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* CHAR_MAX == SCHAR_MAX */ 61377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 61477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 61577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 61677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2> 61777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerint __lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1, 61877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2); 61977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 62077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline int 62177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner__lexicographical_compare_3way(const unsigned char* __first1, 62277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const unsigned char* __last1, 62377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const unsigned char* __first2, 62477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const unsigned char* __last2) { 62577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const ptrdiff_t __len1 = __last1 - __first1; 62677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const ptrdiff_t __len2 = __last2 - __first2; 62777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const int __result = memcmp(__first1, __first2, (min) (__len1, __len2)); 62877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result != 0 ? __result 62977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : (__len1 == __len2 ? 0 : (__len1 < __len2 ? -1 : 1)); 63077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 63177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 63277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 63377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !(CHAR_MAX == SCHAR_MAX) 63477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline int 63577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner__lexicographical_compare_3way(const char* __first1, const char* __last1, 63677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const char* __first2, const char* __last2) { 63777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __lexicographical_compare_3way((const unsigned char*) __first1, 63877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner (const unsigned char*) __last1, 63977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner (const unsigned char*) __first2, 64077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner (const unsigned char*) __last2); 64177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 64277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 64377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 64477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 64577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 64677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_EXTENSIONS) 64777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2> 64877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerint lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1, 64977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2); 65077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 65177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 65277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 65377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// count 65477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _Tp> 65577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_InputIter) 65677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnercount(_InputIter __first, _InputIter __last, const _Tp& __val) { 65777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 65877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DIFFERENCE_TYPE(_InputIter) __n = 0; 65977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first) 66077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (*__first == __val) 66177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__n; 66277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __n; 66377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 66477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 66577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// find and find_if. Note find may be expressed in terms of find_if if appropriate binder was available. 66677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _Tp> 66777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_InputIter find(_InputIter __first, _InputIter __last, const _Tp& __val); 66877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 66977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _Predicate> 67077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_InputIter find_if(_InputIter __first, _InputIter __last, _Predicate __pred); 67177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 67277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// search. 67377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter1, class _ForwardIter2, class _BinaryPred> 67477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1, 67577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter2 __first2, _ForwardIter2 __last2, _BinaryPred __predicate); 67677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 67777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 67877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 67977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// find_first_of 68077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _ForwardIter> 68177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_InputIter __find_first_of(_InputIter __first1, _InputIter __last1, 68277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter __first2, _ForwardIter __last2); 68377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 68477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _ForwardIter, class _BinaryPredicate> 68577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_InputIter __find_first_of(_InputIter __first1, _InputIter __last1, 68677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter __first2, _ForwardIter __last2, 68777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BinaryPredicate __comp); 68877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 68977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 69077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 69177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter1, class _ForwardIter2, 69277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner class _BinaryPredicate> 69377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter1 69477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerfind_end(_ForwardIter1 __first1, _ForwardIter1 __last1, 69577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter2 __first2, _ForwardIter2 __last2, 69677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BinaryPredicate __comp); 69777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 69877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// replace 69977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp> 70077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP void 70177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerreplace(_ForwardIter __first, _ForwardIter __last, 70277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _Tp& __old_value, const _Tp& __new_value) { 70377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 70477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first) 70577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (*__first == __old_value) 70677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__first = __new_value; 70777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 70877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 70977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 71077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 71177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp, class _Compare1, class _Compare2, class _Distance> 71277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter __lower_bound(_ForwardIter __first, _ForwardIter __last, 71377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _Tp& __val, _Compare1 __comp1, _Compare2 __comp2, _Distance*); 71477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 71577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 71677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 71777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_END_NAMESPACE 71877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 71977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_LINK_TIME_INSTANTIATION) 72077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_algobase.c> 72177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 72277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 72377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_INTERNAL_ALGOBASE_H */ 72477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 72577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Local Variables: 72677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// mode:C++ 72777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// End: 72877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 729