30#ifndef _STLP_INTERNAL_ALGO_H
31#define _STLP_INTERNAL_ALGO_H
33#ifndef _STLP_INTERNAL_ALGOBASE_H
37#ifndef _STLP_INTERNAL_HEAP_H
41#ifndef _STLP_INTERNAL_ITERATOR_H
45#ifndef _STLP_INTERNAL_FUNCTION_BASE_H
49#if defined (__SUNPRO_CC) && !defined (_STLP_INTERNAL_CSTDIO)
57template <
class _InputIter,
class _Function>
60 for ( ; __first !=
__last; ++__first)
66template <
class _InputIter,
class _Predicate>
71 for ( ; __first !=
__last; ++__first) {
80template <
class _ForwardIter,
class _BinaryPredicate>
83 _BinaryPredicate __binary_pred) {
87 _ForwardIter __next = __first;
88 while(++__next !=
__last) {
89 if (__binary_pred(*__first, *__next))
96template <
class _ForwardIter>
103#if !defined (_STLP_NO_ANACHRONISMS)
104template <
class _InputIter,
class _Tp,
class _Size>
108 for ( ; __first !=
__last; ++__first)
109 if (*__first ==
__val)
113template <
class _InputIter,
class _Predicate,
class _Size>
117 for ( ; __first !=
__last; ++__first)
123template <
class _ForwardIter1,
class _ForwardIter2>
124_ForwardIter1
search(_ForwardIter1 __first1, _ForwardIter1 __last1,
125 _ForwardIter2 __first2, _ForwardIter2 __last2);
128template <
class _ForwardIter,
class _Integer,
class _Tp>
130 _Integer __count,
const _Tp&
__val);
131template <
class _ForwardIter,
class _Integer,
class _Tp,
class _BinaryPred>
133 _Integer __count,
const _Tp&
__val, _BinaryPred __binary_pred);
135template <
class _InputIter,
class _ForwardIter>
137 _ForwardIter __first2, _ForwardIter __last2) {
143template <
class _InputIter,
class _ForwardIter,
class _BinaryPredicate>
146 _ForwardIter __first2, _ForwardIter __last2, _BinaryPredicate __comp) {
152template <
class _ForwardIter1,
class _ForwardIter2>
154find_end(_ForwardIter1 __first1, _ForwardIter1 __last1,
155 _ForwardIter2 __first2, _ForwardIter2 __last2);
158template <
class _ForwardIter1,
class _ForwardIter2>
160swap_ranges(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2) {
162 for ( ; __first1 != __last1; ++__first1, ++__first2)
168template <
class _InputIter,
class _OutputIter,
class _UnaryOperation>
170transform(_InputIter __first, _InputIter
__last, _OutputIter __result, _UnaryOperation __opr) {
172 for ( ; __first !=
__last; ++__first, ++__result)
173 *__result = __opr(*__first);
176template <
class _InputIter1,
class _InputIter2,
class _OutputIter,
class _BinaryOperation>
179 _InputIter2 __first2, _OutputIter __result,_BinaryOperation __binary_op) {
181 for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result)
182 *__result = __binary_op(*__first1, *__first2);
188template <
class _ForwardIter,
class _Predicate,
class _Tp>
192 for ( ; __first !=
__last; ++__first)
194 *__first = __new_value;
197template <
class _InputIter,
class _OutputIter,
class _Tp>
200 const _Tp& __old_value,
const _Tp& __new_value) {
202 for ( ; __first !=
__last; ++__first, ++__result)
203 *__result = *__first == __old_value ? __new_value : *__first;
207template <
class _Iterator,
class _OutputIter,
class _Predicate,
class _Tp>
210 _OutputIter __result,
211 _Predicate
__pred,
const _Tp& __new_value) {
213 for ( ; __first !=
__last; ++__first, ++__result)
214 *__result =
__pred(*__first) ? __new_value : *__first;
220template <
class _ForwardIter,
class _Generator>
224 for ( ; __first !=
__last; ++__first)
228template <
class _OutputIter,
class _Size,
class _Generator>
231 for ( ;
__n > 0; --
__n, ++__first)
237template <
class _InputIter,
class _OutputIter,
class _Tp>
241 for ( ; __first !=
__last; ++__first) {
242 if (!(*__first ==
__val)) {
243 *__result = *__first;
250template <
class _InputIter,
class _OutputIter,
class _Predicate>
254 for ( ; __first !=
__last; ++__first) {
256 *__result = *__first;
263template <
class _ForwardIter,
class _Tp>
271 _ForwardIter __next = __first;
276template <
class _ForwardIter,
class _Predicate>
284 _ForwardIter __next = __first;
290template <
class _InputIter,
class _OutputIter>
291_OutputIter
unique_copy(_InputIter __first, _InputIter
__last, _OutputIter __result);
293template <
class _InputIter,
class _OutputIter,
class _BinaryPredicate>
294_OutputIter
unique_copy(_InputIter __first, _InputIter
__last,_OutputIter __result,
295 _BinaryPredicate __binary_pred);
297template <
class _ForwardIter>
303template <
class _ForwardIter,
class _BinaryPredicate>
305 _BinaryPredicate __binary_pred) {
314template <
class _B
idirectionalIter>
317 for (; __first !=
__last && __first != --
__last; ++__first)
318 _STLP_STD::iter_swap(__first,
__last);
321template <
class _RandomAccessIter>
324 for (; __first <
__last; ++__first)
325 _STLP_STD::iter_swap(__first, --
__last);
330template <
class _B
idirectionalIter>
337template <
class _B
idirectionalIter,
class _OutputIter>
340 _BidirectionalIter
__last,
341 _OutputIter __result) {
343 while (__first !=
__last) {
351template <
class _ForwardIter>
352void rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter
__last);
354template <
class _ForwardIter,
class _OutputIter>
355inline _OutputIter
rotate_copy(_ForwardIter __first, _ForwardIter __middle,
356 _ForwardIter
__last, _OutputIter __result) {
357 return _STLP_STD::copy(__first, __middle,
copy(__middle,
__last, __result));
362template <
class _RandomAccessIter>
365template <
class _RandomAccessIter,
class _RandomNumberGenerator>
367 _RandomNumberGenerator& __rand);
369#if !defined (_STLP_NO_EXTENSIONS)
372template <
class _ForwardIter,
class _OutputIter,
class _Distance>
374 _OutputIter __out_ite,
const _Distance
__n);
376template <
class _ForwardIter,
class _OutputIter,
class _Distance,
377 class _RandomNumberGenerator>
379 _OutputIter __out_ite,
const _Distance
__n,
380 _RandomNumberGenerator& __rand);
382template <
class _InputIter,
class _RandomAccessIter>
385 _RandomAccessIter __out_first, _RandomAccessIter __out_last);
387template <
class _InputIter,
class _RandomAccessIter,
388 class _RandomNumberGenerator>
391 _RandomAccessIter __out_first, _RandomAccessIter __out_last,
392 _RandomNumberGenerator& __rand);
398template <
class _ForwardIter,
class _Predicate>
401template <
class _ForwardIter,
class _Predicate>
408template <
class _Size>
411 for (__k = 0;
__n != 1;
__n >>= 1) ++__k;
417template <
class _RandomAccessIter>
418void sort(_RandomAccessIter __first, _RandomAccessIter
__last);
419template <
class _RandomAccessIter,
class _Compare>
420void sort(_RandomAccessIter __first, _RandomAccessIter
__last, _Compare __comp);
423template <
class _RandomAccessIter>
425 _RandomAccessIter
__last);
427template <
class _RandomAccessIter,
class _Compare>
429 _RandomAccessIter
__last, _Compare __comp);
433template <
class _RandomAccessIter>
434void partial_sort(_RandomAccessIter __first, _RandomAccessIter __middle,
435 _RandomAccessIter
__last);
437template <
class _RandomAccessIter,
class _Compare>
438void partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle,
439 _RandomAccessIter
__last, _Compare __comp);
441template <
class _InputIter,
class _RandomAccessIter>
444 _RandomAccessIter __result_first, _RandomAccessIter __result_last);
446template <
class _InputIter,
class _RandomAccessIter,
class _Compare>
449 _RandomAccessIter __result_first,
450 _RandomAccessIter __result_last, _Compare __comp);
453template <
class _RandomAccessIter>
454void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
455 _RandomAccessIter
__last);
457template <
class _RandomAccessIter,
class _Compare>
458void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
459 _RandomAccessIter
__last, _Compare __comp);
464template <
class _T1,
class _T2>
466 bool operator() (
const _T1& __x,
const _T2& __y)
const {
return __x < __y ; }
469template <
class _T1,
class _T2>
472#if defined (_STLP_FUNCTION_PARTIAL_ORDER)
480template <
class _ForwardIter,
class _Tp>
490template <
class _ForwardIter,
class _Tp,
class _Compare>
492 const _Tp&
__val, _Compare __comp) {
500template <
class _ForwardIter,
class _Tp,
class _Compare1,
class _Compare2,
class _Distance>
502 _Compare1 __comp1, _Compare2 __comp2, _Distance*);
506template <
class _ForwardIter,
class _Tp>
516template <
class _ForwardIter,
class _Tp,
class _Compare>
518 const _Tp&
__val, _Compare __comp) {
526template <
class _ForwardIter,
class _Tp,
class _Compare1,
class _Compare2,
class _Distance>
529 _Compare1 __comp1, _Compare2 __comp2, _Distance*);
533template <
class _ForwardIter,
class _Tp>
543template <
class _ForwardIter,
class _Tp,
class _Compare>
552template <
class _ForwardIter,
class _Tp>
563template <
class _ForwardIter,
class _Tp,
class _Compare>
575template <
class _InputIter1,
class _InputIter2,
class _OutputIter>
576_OutputIter
merge(_InputIter1 __first1, _InputIter1 __last1,
577 _InputIter2 __first2, _InputIter2 __last2,
578 _OutputIter __result);
580template <
class _InputIter1,
class _InputIter2,
class _OutputIter,
582_OutputIter
merge(_InputIter1 __first1, _InputIter1 __last1,
583 _InputIter2 __first2, _InputIter2 __last2,
584 _OutputIter __result, _Compare __comp);
590template <
class _B
idirectionalIter>
592 _BidirectionalIter __middle,
593 _BidirectionalIter
__last) ;
595template <
class _B
idirectionalIter,
class _Compare>
597 _BidirectionalIter __middle,
598 _BidirectionalIter
__last, _Compare __comp);
605template <
class _InputIter1,
class _InputIter2>
606bool includes(_InputIter1 __first1, _InputIter1 __last1,
607 _InputIter2 __first2, _InputIter2 __last2);
609template <
class _InputIter1,
class _InputIter2,
class _Compare>
610bool includes(_InputIter1 __first1, _InputIter1 __last1,
611 _InputIter2 __first2, _InputIter2 __last2, _Compare __comp);
613template <
class _InputIter1,
class _InputIter2,
class _OutputIter>
614_OutputIter
set_union(_InputIter1 __first1, _InputIter1 __last1,
615 _InputIter2 __first2, _InputIter2 __last2,
616 _OutputIter __result);
618template <
class _InputIter1,
class _InputIter2,
class _OutputIter,
620_OutputIter
set_union(_InputIter1 __first1, _InputIter1 __last1,
621 _InputIter2 __first2, _InputIter2 __last2,
622 _OutputIter __result, _Compare __comp);
624template <
class _InputIter1,
class _InputIter2,
class _OutputIter>
626 _InputIter2 __first2, _InputIter2 __last2,
627 _OutputIter __result);
629template <
class _InputIter1,
class _InputIter2,
class _OutputIter,
632 _InputIter2 __first2, _InputIter2 __last2,
633 _OutputIter __result, _Compare __comp);
637template <
class _InputIter1,
class _InputIter2,
class _OutputIter>
638_OutputIter
set_difference(_InputIter1 __first1, _InputIter1 __last1,
639 _InputIter2 __first2, _InputIter2 __last2,
640 _OutputIter __result);
642template <
class _InputIter1,
class _InputIter2,
class _OutputIter,
644_OutputIter
set_difference(_InputIter1 __first1, _InputIter1 __last1,
645 _InputIter2 __first2, _InputIter2 __last2,
646 _OutputIter __result, _Compare __comp);
648template <
class _InputIter1,
class _InputIter2,
class _OutputIter>
651 _InputIter2 __first2, _InputIter2 __last2,
652 _OutputIter __result);
655template <
class _InputIter1,
class _InputIter2,
class _OutputIter,
659 _InputIter2 __first2, _InputIter2 __last2,
660 _OutputIter __result,
667template <
class _ForwardIter>
669template <
class _ForwardIter,
class _Compare>
673template <
class _ForwardIter>
676template <
class _ForwardIter,
class _Compare>
683template <
class _B
idirectionalIter>
686template <
class _B
idirectionalIter,
class _Compare>
691template <
class _B
idirectionalIter>
695template <
class _B
idirectionalIter,
class _Compare>
699#if !defined (_STLP_NO_EXTENSIONS)
704template <
class _RandomAccessIter>
705bool is_heap(_RandomAccessIter __first, _RandomAccessIter
__last);
707template <
class _RandomAccessIter,
class _StrictWeakOrdering>
708bool is_heap(_RandomAccessIter __first, _RandomAccessIter
__last,
709 _StrictWeakOrdering __comp);
716template <
class _ForwardIter,
class _StrictWeakOrdering>
718 _StrictWeakOrdering __comp);
721template <
class _ForwardIter>
727template <
class _ForwardIter,
class _StrictWeakOrdering>
729 _StrictWeakOrdering __comp) {
736#if !defined (_STLP_LINK_TIME_INSTANTIATION)
bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last)
_STLP_INLINE_LOOP void count_if(_InputIter __first, _InputIter __last, _Predicate __pred, _Size &__n)
_STLP_MOVE_TO_PRIV_NAMESPACE _ForwardIter __upper_bound(_ForwardIter __first, _ForwardIter __last, const _Tp &__val, _Compare1 __comp1, _Compare2 __comp2, _Distance *)
_OutputIter rotate_copy(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last, _OutputIter __result)
_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result)
_ForwardIter partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred)
_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last, _OutputIter __out_ite, const _Distance __n)
_STLP_INLINE_LOOP _InputIter __last
_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result)
_STLP_MOVE_TO_PRIV_NAMESPACE bool __is_sorted(_ForwardIter __first, _ForwardIter __last, _StrictWeakOrdering __comp)
_STLP_MOVE_TO_STD_NAMESPACE void sort(_RandomAccessIter __first, _RandomAccessIter __last)
_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last, _Integer __count, const _Tp &__val)
void rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last)
_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result)
void inplace_merge(_BidirectionalIter __first, _BidirectionalIter __middle, _BidirectionalIter __last)
void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last)
bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last)
void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth, _RandomAccessIter __last)
__less_2< _T1, _T2 > __less2(_T1 *, _T2 *)
_ForwardIter stable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred)
_STLP_INLINE_LOOP _ForwardIter2 swap_ranges(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2)
_STLP_MOVE_TO_STD_NAMESPACE _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last, const _Tp &__val)
_ForwardIter1 find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2, _ForwardIter2 __last2)
_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last)
_RandomAccessIter random_sample(_InputIter __first, _InputIter __last, _RandomAccessIter __out_first, _RandomAccessIter __out_last)
void partial_sort(_RandomAccessIter __first, _RandomAccessIter __middle, _RandomAccessIter __last)
_STLP_INLINE_LOOP void generate_n(_OutputIter __first, _Size __n, _Generator __gen)
_OutputIter set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result)
_STLP_INLINE_LOOP _OutputIter remove_copy(_InputIter __first, _InputIter __last, _OutputIter __result, const _Tp &__val)
_STLP_INLINE_LOOP _InputIter _Predicate __pred
_STLP_INLINE_LOOP void replace_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred, const _Tp &__new_value)
_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last)
_STLP_INLINE_LOOP _OutputIter replace_copy(_InputIter __first, _InputIter __last, _OutputIter __result, const _Tp &__old_value, const _Tp &__new_value)
_STLP_MOVE_TO_STD_NAMESPACE pair< _ForwardIter, _ForwardIter > equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp &__val)
_STLP_MOVE_TO_STD_NAMESPACE _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last, const _Tp &__val)
_STLP_MOVE_TO_STD_NAMESPACE bool is_sorted(_ForwardIter __first, _ForwardIter __last)
_STLP_BEGIN_NAMESPACE _STLP_INLINE_LOOP _Function for_each(_InputIter __first, _InputIter __last, _Function __f)
_STLP_INLINE_LOOP _ForwardIter adjacent_find(_ForwardIter __first, _ForwardIter __last, _BinaryPredicate __binary_pred)
_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2, _ForwardIter2 __last2)
_STLP_MOVE_TO_PRIV_NAMESPACE pair< _ForwardIter, _ForwardIter > __equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp &__val, _Compare1 __comp1, _Compare2 __comp2, _Distance *)
_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result)
_STLP_INLINE_LOOP _OutputIter replace_copy_if(_Iterator __first, _Iterator __last, _OutputIter __result, _Predicate __pred, const _Tp &__new_value)
_STLP_MOVE_TO_STD_NAMESPACE void reverse(_BidirectionalIter __first, _BidirectionalIter __last)
_STLP_INLINE_LOOP _ForwardIter remove_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred)
void stable_sort(_RandomAccessIter __first, _RandomAccessIter __last)
_STLP_MOVE_TO_PRIV_NAMESPACE _STLP_INLINE_LOOP void __reverse(_BidirectionalIter __first, _BidirectionalIter __last, const bidirectional_iterator_tag &)
_InputIter find_first_of(_InputIter __first1, _InputIter __last1, _ForwardIter __first2, _ForwardIter __last2)
_STLP_MOVE_TO_PRIV_NAMESPACE _Size __lg(_Size __n)
bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last)
_STLP_INLINE_LOOP _OutputIter reverse_copy(_BidirectionalIter __first, _BidirectionalIter __last, _OutputIter __result)
_OutputIter unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result)
bool binary_search(_ForwardIter __first, _ForwardIter __last, const _Tp &__val)
_RandomAccessIter partial_sort_copy(_InputIter __first, _InputIter __last, _RandomAccessIter __result_first, _RandomAccessIter __result_last)
_STLP_INLINE_LOOP _OutputIter remove_copy_if(_InputIter __first, _InputIter __last, _OutputIter __result, _Predicate __pred)
_InputIter __find_first_of(_InputIter __first1, _InputIter __last1, _ForwardIter __first2, _ForwardIter __last2)
_STLP_MOVE_TO_PRIV_NAMESPACE _ForwardIter __lower_bound(_ForwardIter __first, _ForwardIter __last, const _Tp &__val, _Compare1 __comp1, _Compare2 __comp2, _Distance *)
_STLP_MOVE_TO_STD_NAMESPACE _InputIter find_if(_InputIter __first, _InputIter __last, _Predicate __pred)
_STLP_MOVE_TO_STD_NAMESPACE void iter_swap(_ForwardIter1 __i1, _ForwardIter2 __i2)
_STLP_INLINE_LOOP _InputIter const _Tp & __val
#define _STLP_DEBUG_CHECK(expr)
_STLP_MOVE_TO_PRIV_NAMESPACE less< _Tp > __less(_Tp *)
equal_to< _Tp > __equal_to(_Tp *)
#define _STLP_DIFFERENCE_TYPE(_Iterator)
#define _STLP_VALUE_TYPE(_It, _Tp)
#define _STLP_ITERATOR_CATEGORY(_It, _Tp)
#define _STLP_DISTANCE_TYPE(_It, _Tp)
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
static struct loaded_include * includes
_Check_return_ _Ret_maybenull_ _In_ size_t _In_ size_t _Size
#define _STLP_INLINE_LOOP
#define _STLP_MOVE_TO_STD_NAMESPACE
#define _STLP_BEGIN_NAMESPACE
#define _STLP_END_NAMESPACE
#define _STLP_MOVE_TO_PRIV_NAMESPACE
GLuint GLuint GLsizei count
GLuint GLenum GLenum transform
bool operator()(const _T1 &__x, const _T2 &__y) const