1 // xutility internal header
2 #pragma once
3 #ifndef _XUTILITY_
4 #define _XUTILITY_
5 #ifndef RC_INVOKED
6 #include <climits>
7 #include <utility>
8 #include <crtdbg.h>
9
10 #ifdef _MSC_VER
11  #pragma pack(push,_CRT_PACKING)
12  #pragma warning(push,3)
13 #endif  /* _MSC_VER */
14
15 _STD_BEGIN
16
17         // RANGE CHECKED ITERATOR TAGS
18 struct _Unchecked_iterator_tag
19     {
20     };
21 struct _Range_checked_iterator_tag
22     {
23     };
24
25         // CHECKED ITERATOR BASE TAGS
26 struct _Unchanged_checked_iterator_base_type_tag
27     {
28     };
29
30 struct _Different_checked_iterator_base_type_tag
31     {
32     };
33
34         // INNER TYPE TAG
35 struct _Undefined_inner_type_tag
36     {
37     };
38
39         // MOVE OPERATION TAG
40 struct _Undefined_move_tag
41     {
42     };
43
44 struct _Swap_move_tag
45     {
46     };
47
48
49 class _Iterator_base_universal
50     {    // base of all iterators
Lines 51 ... 3858 are skipped.
3859     return _STD _Equal(_CHECKED_BASE(_First1), _CHECKED_BASE(_Last1), _First2,
3860         _STD _Iter_random(_First1, _First2), _STD _Range_checked_iterator_tag());
3861     }
3862
3863 template<class _InIt1, class _InIt2, class _Pr>
3864 inline
3865     bool __CLRCALL_OR_CDECL unchecked_equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
3866     {    // compare [_First1, _Last1) to [First2, ...)
3867     return _STD _Equal(_CHECKED_BASE(_First1), _CHECKED_BASE(_Last1), _First2, _Pred,
3868         _STD _Iter_random(_First1, _First2), _STD _Range_checked_iterator_tag());
3869     }
3870
3871 template<class _InIt1, class _InIt2, class _Pr>
3872 inline
3873 _IF_CHK_(_InIt2, bool) __CLRCALL_OR_CDECL checked_equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
3874     {    // compare [_First1, _Last1) to [First2, ...) using _Pred
3875     return _STD _Equal(_CHECKED_BASE(_First1), _CHECKED_BASE(_Last1), _First2, _Pred,
3876         _STD _Iter_random(_First1, _First2), _STD _Range_checked_iterator_tag());
3877     }
3878
3879 template<class _InIt1, class _InElem2, class _Pr, size_t _Size>
3880 inline
3881 bool __CLRCALL_OR_CDECL checked_equal(_InIt1 _First1, _InIt1 _Last1, _InElem2 (&_First2)[_Size], _Pr _Pred)
3882     {    // compare [_First1, _Last1) to [First2, ...) using _Pred
3883     return checked_equal(_First1, _Last1,
3884         _STDEXT make_checked_array_iterator(_First2, _Size), _Pred);
3885     }
3886
3887 template<class _InIt1, class _InIt2, class _Pr>
3888 inline
3889 _SCL_CHECKED_ALGORITHM_WARN
3890 _IF_NOT_CHK_(_InIt2, bool) __CLRCALL_OR_CDECL checked_equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
3891     {    // compare [_First1, _Last1) to [First2, ...) using _Pred
3892     return _STD _Equal(_CHECKED_BASE(_First1), _CHECKED_BASE(_Last1), _First2, _Pred,
3893         _STD _Iter_random(_First1, _First2), _STD _Range_checked_iterator_tag());
3894     }
3895
3896 _STDEXT_END
3897
3898 /* _SECURE_CRT definitions */
3899
3900  #define __STR2WSTR(str)      L##str
3901  #define _STR2WSTR(str)        __STR2WSTR(str)
3902
3903  #define __FILEW__                _STR2WSTR(__FILE__)
3904  #define __FUNCTIONW__          _STR2WSTR(__FUNCTION__)
3905
3906  #if !defined(_W64)
3907  #if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
3908  #define _W64 __w64
3909  #else
3910  #define _W64
3911  #endif
3912  #endif
3913
3914  #ifndef _UINTPTR_T_DEFINED
3915  #ifdef  _WIN64
3916 typedef unsigned __int64      uintptr_t;
3917  #else
3918 typedef _W64 unsigned int     uintptr_t;
3919  #endif
3920  #define _UINTPTR_T_DEFINED
3921  #endif
3922
3923  #ifndef _WCHAR_T_DEFINED
3924 typedef unsigned short wchar_t;
3925  #define _WCHAR_T_DEFINED
3926  #endif
3927
3928  #ifndef _CRTIMP
3929
3930   #ifdef    _DLL
3931      #define _CRTIMP __declspec(dllimport)
3932
3933   #else    /* ndef _DLL */
3934      #define _CRTIMP
3935   #endif    /* _DLL */
3936
3937  #endif    /* _CRTIMP */
3938
3939 #ifdef _DEBUG 
3940
3941 #if !defined(_NATIVE_WCHAR_T_DEFINED) && defined(_M_CEE_PURE)
3942 extern "C++"
3943 #else
3944 extern "C"
3945 #endif
3946 _CRTIMP void __cdecl _invalid_parameter(_In_opt_z_ const wchar_t *, _In_opt_z_ const wchar_t *, _In_opt_z_ const wchar_t *, unsigned int, uintptr_t);
3947
3948 #else /* _DEBUG */
3949
3950 extern "C"
3951 _CRTIMP void __cdecl _invalid_parameter_noinfo(void);
3952
3953 #endif /* def _DEBUG */
3954
3955
3956 #ifdef _MSC_VER
3957  #pragma warning(pop)
3958  #pragma pack(pop)
3959 #endif  /* _MSC_VER */
3960
3961 #endif /* RC_INVOKED */
3962 #endif /* _XUTILITY_ */
3963
3964 /*
3965  * This file is derived from software bearing the following
3966  * restrictions:
3967  *
3968  * Copyright (c) 1994
3969  * Hewlett-Packard Company
3970  *
3971  * Permission to use, copy, modify, distribute and sell this
3972  * software and its documentation for any purpose is hereby
3973  * granted without fee, provided that the above copyright notice
3974  * appear in all copies and that both that copyright notice and
3975  * this permission notice appear in supporting documentation.
3976  * Hewlett-Packard Company makes no representations about the
3977  * suitability of this software for any purpose. It is provided
3978  * "as is" without express or implied warranty.
3979  */
3980
3981 /*
3982  * Copyright (c) 1992-2007 by P.J. Plauger.  ALL RIGHTS RESERVED.
3983  * Consult your license regarding permissions and restrictions.
3984  V5.03:0009 */
3985