/* yvals.h values header for Microsoft C/C++ */ #pragma once #ifndef _YVALS #define _YVALS #ifndef RC_INVOKED #include #include #pragma pack(push,_CRT_PACKING) #pragma push_macro("new") #undef new #define _CPPLIB_VER 610 #define _HAS_DECLTYPE 1 #define _HAS_INITIALIZER_LISTS 1 #define _HAS_REF_QUALIFIER 0 #define _HAS_RVALUE_REFERENCES 1 #define _HAS_SCOPED_ENUM 1 #define _HAS_TEMPLATE_ALIAS 1 #define _HAS_VARIADIC_TEMPLATES 1 #define _HAS_CPP0X 1 #define _NOEXCEPT throw () #define _NOEXCEPT_OP(x) /* Note on use of "deprecate": * Various places in this header and other headers use __declspec(deprecate) or macros that have the term DEPRECATE in them. * We use deprecate here ONLY to signal the compiler to emit a warning about these items. The use of deprecate * should NOT be taken to imply that any standard committee has deprecated these functions from the relevant standards. * In fact, these functions are NOT deprecated from the standard. * * Full details can be found in our documentation by searching for "Checked Iterators". */ #if defined(MRTDLL) && defined(_CRTBLD) /* process-global is the default for code built with /clr or /clr:oldSyntax. appdomain-global is the default for code built with /clr:pure. Code in MSVCM is built with /clr, but is used by user code built with /clr:pure so it must conform to the expectations of /clr:pure clients. Use __PURE_APPDOMAIN_GLOBAL when a global needs to be appdomain-global for pure clients and process-global for mixed clients. */ #define __PURE_APPDOMAIN_GLOBAL __declspec(appdomain) #else #define __PURE_APPDOMAIN_GLOBAL #endif #ifndef __CRTDECL #if defined(_M_CEE_PURE) || defined(MRTDLL) #define __CRTDECL __clrcall #else #define __CRTDECL __cdecl #endif #endif #ifndef __CLR_OR_THIS_CALL #if defined(MRTDLL) || defined(_M_CEE_PURE) #define __CLR_OR_THIS_CALL __clrcall #else #define __CLR_OR_THIS_CALL #endif #endif #ifndef __CLRCALL_OR_CDECL #if defined(MRTDLL) || defined(_M_CEE_PURE) #define __CLRCALL_OR_CDECL __clrcall #else #define __CLRCALL_OR_CDECL __cdecl #endif #endif #ifndef __CLRCALL_PURE_OR_CDECL #if defined(_M_CEE_PURE) #define __CLRCALL_PURE_OR_CDECL __clrcall #else #define __CLRCALL_PURE_OR_CDECL __cdecl #endif #endif /* CURRENT DLL NAMES */ #ifndef _CRT_MSVCP_CURRENT #ifdef _DEBUG #define _CRT_MSVCP_CURRENT "MSVCP120D.dll" #else #define _CRT_MSVCP_CURRENT "MSVCP120.dll" #endif #endif /* NAMING PROPERTIES */ #define _WIN32_C_LIB 1 /* THREAD AND LOCALE CONTROL */ #define _MULTI_THREAD 1 /* nontrivial locks if multithreaded */ #define _IOSTREAM_OP_LOCKS 1 /* lock iostream operations */ #define _GLOBAL_LOCALE 0 /* 0 for per-thread locales, 1 for shared */ /* THREAD-LOCAL STORAGE */ #define _COMPILER_TLS 1 /* 1 if compiler supports TLS directly */ #if _MULTI_THREAD #define _TLS_QUAL __declspec(thread) /* TLS qualifier, if any */ #else /* _MULTI_THREAD */ #define _TLS_QUAL #endif /* _MULTI_THREAD */ #ifndef _HAS_EXCEPTIONS #define _HAS_EXCEPTIONS 1 /* predefine as 0 to disable exceptions */ #endif /* _HAS_EXCEPTIONS */ #define _GLOBAL_USING 1 #ifndef _NO_LOCALES #define _NO_LOCALES 0 #endif /* _NO_LOCALES */ #ifdef _ITERATOR_DEBUG_LEVEL /* A. _ITERATOR_DEBUG_LEVEL is already defined. */ /* A1. Validate _ITERATOR_DEBUG_LEVEL. */ #if _ITERATOR_DEBUG_LEVEL > 2 && defined(_DEBUG) #error _ITERATOR_DEBUG_LEVEL > 2 is not supported in debug mode. #elif _ITERATOR_DEBUG_LEVEL > 1 && !defined(_DEBUG) #error _ITERATOR_DEBUG_LEVEL > 1 is not supported in release mode. #endif /* A2. Inspect _HAS_ITERATOR_DEBUGGING. */ #ifdef _HAS_ITERATOR_DEBUGGING /* A2i. _HAS_ITERATOR_DEBUGGING is already defined, validate it. */ #if _ITERATOR_DEBUG_LEVEL == 2 && _HAS_ITERATOR_DEBUGGING != 1 #error _ITERATOR_DEBUG_LEVEL == 2 must imply _HAS_ITERATOR_DEBUGGING == 1 . #elif _ITERATOR_DEBUG_LEVEL < 2 && _HAS_ITERATOR_DEBUGGING != 0 #error _ITERATOR_DEBUG_LEVEL < 2 must imply _HAS_ITERATOR_DEBUGGING == 0 . #endif #else /* A2ii. _HAS_ITERATOR_DEBUGGING is not yet defined, derive it. */ #if _ITERATOR_DEBUG_LEVEL == 2 #define _HAS_ITERATOR_DEBUGGING 1 #else #define _HAS_ITERATOR_DEBUGGING 0 #endif #endif /* _HAS_ITERATOR_DEBUGGING */ /* A3. Inspect _SECURE_SCL. */ #ifdef _SECURE_SCL /* A3i. _SECURE_SCL is already defined, validate it. */ #if _ITERATOR_DEBUG_LEVEL > 0 && _SECURE_SCL != 1 #error _ITERATOR_DEBUG_LEVEL > 0 must imply _SECURE_SCL == 1 . #elif _ITERATOR_DEBUG_LEVEL == 0 && _SECURE_SCL != 0 #error _ITERATOR_DEBUG_LEVEL == 0 must imply _SECURE_SCL == 0 . #endif #else /* A3ii. _SECURE_SCL is not yet defined, derive it. */ #if _ITERATOR_DEBUG_LEVEL > 0 #define _SECURE_SCL 1 #else #define _SECURE_SCL 0 #endif #endif /* _SECURE_SCL */ #else /* B. _ITERATOR_DEBUG_LEVEL is not yet defined. */ /* B1. Inspect _HAS_ITERATOR_DEBUGGING. */ #ifdef _HAS_ITERATOR_DEBUGGING /* B1i. _HAS_ITERATOR_DEBUGGING is already defined, validate it. */ #if _HAS_ITERATOR_DEBUGGING > 1 #error _HAS_ITERATOR_DEBUGGING must be either 0 or 1 . #elif _HAS_ITERATOR_DEBUGGING == 1 && !defined(_DEBUG) #error _HAS_ITERATOR_DEBUGGING == 1 is not supported in release mode. #endif #else /* B1ii. _HAS_ITERATOR_DEBUGGING is not yet defined, default it. */ #ifdef _DEBUG #define _HAS_ITERATOR_DEBUGGING 1 #else #define _HAS_ITERATOR_DEBUGGING 0 #endif #endif /* _HAS_ITERATOR_DEBUGGING */ /* B2. Inspect _SECURE_SCL. */ #ifdef _SECURE_SCL /* B2i. _SECURE_SCL is already defined, validate it. */ #if _SECURE_SCL > 1 #error _SECURE_SCL must be either 0 or 1 . #endif #else /* B2ii. _SECURE_SCL is not yet defined, default it. */ #if _HAS_ITERATOR_DEBUGGING == 1 #define _SECURE_SCL 1 #else #define _SECURE_SCL 0 #endif #endif /* _SECURE_SCL */ /* B3. Derive _ITERATOR_DEBUG_LEVEL. */ #if _HAS_ITERATOR_DEBUGGING #define _ITERATOR_DEBUG_LEVEL 2 #elif _SECURE_SCL #define _ITERATOR_DEBUG_LEVEL 1 #else #define _ITERATOR_DEBUG_LEVEL 0 #endif #endif /* _ITERATOR_DEBUG_LEVEL */ #define _STRINGIZEX(x) #x #define _STRINGIZE(x) _STRINGIZEX(x) #ifndef __EDG__ /* TRANSITION */ #ifdef __cplusplus #ifndef _ALLOW_MSC_VER_MISMATCH #pragma detect_mismatch("_MSC_VER", "1800") #endif /* _ALLOW_MSC_VER_MISMATCH */ #ifndef _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH #pragma detect_mismatch("_ITERATOR_DEBUG_LEVEL", _STRINGIZE(_ITERATOR_DEBUG_LEVEL)) #endif /* _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH */ #ifndef _ALLOW_RUNTIME_LIBRARY_MISMATCH #if !defined(_DLL) && !defined(_DEBUG) #pragma detect_mismatch("RuntimeLibrary", "MT_StaticRelease") #elif !defined(_DLL) && defined(_DEBUG) #pragma detect_mismatch("RuntimeLibrary", "MTd_StaticDebug") #elif defined(_DLL) && !defined(_DEBUG) #pragma detect_mismatch("RuntimeLibrary", "MD_DynamicRelease") #elif defined(_DLL) && defined(_DEBUG) #pragma detect_mismatch("RuntimeLibrary", "MDd_DynamicDebug") #endif /* defined(_DLL) etc. */ #endif /* _ALLOW_RUNTIME_LIBRARY_MISMATCH */ #endif /* __cplusplus */ #endif /* __EDG__ */ #ifdef _ITERATOR_DEBUG_ARRAY_OVERLOADS #if _ITERATOR_DEBUG_ARRAY_OVERLOADS != 0 && _ITERATOR_DEBUG_ARRAY_OVERLOADS != 1 #error _ITERATOR_DEBUG_ARRAY_OVERLOADS must be either 0 or 1 . #elif _ITERATOR_DEBUG_LEVEL == 0 && _ITERATOR_DEBUG_ARRAY_OVERLOADS == 1 #error _ITERATOR_DEBUG_LEVEL == 0 must imply _ITERATOR_DEBUG_ARRAY_OVERLOADS == 0 . #endif #else /* _ITERATOR_DEBUG_ARRAY_OVERLOADS */ #if _ITERATOR_DEBUG_LEVEL == 0 #define _ITERATOR_DEBUG_ARRAY_OVERLOADS 0 #else #define _ITERATOR_DEBUG_ARRAY_OVERLOADS 1 #endif #endif /* _ITERATOR_DEBUG_ARRAY_OVERLOADS */ /* See note on use of deprecate at the top of this file */ #if !defined(_SCL_SECURE_NO_WARNINGS) && defined(_SCL_SECURE_NO_DEPRECATE) #define _SCL_SECURE_NO_WARNINGS #endif #if !defined (_SECURE_SCL_DEPRECATE) #if defined(_SCL_SECURE_NO_WARNINGS) #define _SECURE_SCL_DEPRECATE 0 #else #define _SECURE_SCL_DEPRECATE 1 #endif #endif #if defined(_SECURE_SCL_THROWS) && _SECURE_SCL_THROWS #error _SECURE_SCL_THROWS has been removed. #endif /* _SECURE_SCL switches: helper macros */ /* See note on use of deprecate at the top of this file */ #if _ITERATOR_DEBUG_LEVEL > 0 && _SECURE_SCL_DEPRECATE #define _SCL_INSECURE_DEPRECATE \ _CRT_DEPRECATE_TEXT( \ "Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. " \ "To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'") #else #define _SCL_INSECURE_DEPRECATE #endif #ifndef _SCL_SECURE_INVALID_PARAMETER #define _SCL_SECURE_INVALID_PARAMETER(expr) _CRT_SECURE_INVALID_PARAMETER(expr) #endif #define _SCL_SECURE_INVALID_ARGUMENT_NO_ASSERT _SCL_SECURE_INVALID_PARAMETER("invalid argument") #define _SCL_SECURE_OUT_OF_RANGE_NO_ASSERT _SCL_SECURE_INVALID_PARAMETER("out of range") #define _SCL_SECURE_ALWAYS_VALIDATE(cond) \ { \ if (!(cond)) \ { \ _ASSERTE(#cond && 0); \ _SCL_SECURE_INVALID_ARGUMENT_NO_ASSERT; \ } \ _Analysis_assume_(cond); \ } #define _SCL_SECURE_ALWAYS_VALIDATE_RANGE(cond) \ { \ if (!(cond)) \ { \ _ASSERTE(#cond && 0); \ _SCL_SECURE_OUT_OF_RANGE_NO_ASSERT; \ } \ _Analysis_assume_(cond); \ } #define _SCL_SECURE_CRT_VALIDATE(cond, retvalue) \ { \ if (!(cond)) \ { \ _ASSERTE(#cond && 0); \ _SCL_SECURE_INVALID_PARAMETER(cond); \ return (retvalue); \ } \ } #if _ITERATOR_DEBUG_LEVEL > 0 #define _SCL_SECURE_VALIDATE(cond) \ { \ if (!(cond)) \ { \ _ASSERTE(#cond && 0); \ _SCL_SECURE_INVALID_ARGUMENT_NO_ASSERT; \ } \ _Analysis_assume_(cond); \ } #define _SCL_SECURE_VALIDATE_RANGE(cond) \ { \ if (!(cond)) \ { \ _ASSERTE(#cond && 0); \ _SCL_SECURE_OUT_OF_RANGE_NO_ASSERT; \ } \ _Analysis_assume_(cond); \ } #define _SCL_SECURE_INVALID_ARGUMENT \ { \ _ASSERTE("Standard C++ Libraries Invalid Argument" && 0); \ _SCL_SECURE_INVALID_ARGUMENT_NO_ASSERT; \ } #define _SCL_SECURE_OUT_OF_RANGE \ { \ _ASSERTE("Standard C++ Libraries Out of Range" && 0); \ _SCL_SECURE_OUT_OF_RANGE_NO_ASSERT; \ } #else /* _ITERATOR_DEBUG_LEVEL > 0 */ /* when users disable _SECURE_SCL to get performance, we don't want analysis warnings from SCL headers */ #if _ITERATOR_DEBUG_LEVEL == 2 #define _SCL_SECURE_VALIDATE(cond) _Analysis_assume_(cond) #define _SCL_SECURE_VALIDATE_RANGE(cond) _Analysis_assume_(cond) #else #define _SCL_SECURE_VALIDATE(cond) #define _SCL_SECURE_VALIDATE_RANGE(cond) #endif #define _SCL_SECURE_INVALID_ARGUMENT #define _SCL_SECURE_OUT_OF_RANGE #endif /* _ITERATOR_DEBUG_LEVEL > 0 */ #if __STDC_WANT_SECURE_LIB__ #define _CRT_SECURE_MEMCPY(dest, destsize, source, count) ::memcpy_s((dest), (destsize), (source), (count)) #define _CRT_SECURE_MEMMOVE(dest, destsize, source, count) ::memmove_s((dest), (destsize), (source), (count)) #define _CRT_SECURE_WMEMCPY(dest, destsize, source, count) ::wmemcpy_s((dest), (destsize), (source), (count)) #define _CRT_SECURE_WMEMMOVE(dest, destsize, source, count) ::wmemmove_s((dest), (destsize), (source), (count)) #else #define _CRT_SECURE_MEMCPY(dest, destsize, source, count) ::memcpy((dest), (source), (count)) #define _CRT_SECURE_MEMMOVE(dest, destsize, source, count) ::memmove((dest), (source), (count)) #define _CRT_SECURE_WMEMCPY(dest, destsize, source, count) ::wmemcpy((dest), (source), (count)) #define _CRT_SECURE_WMEMMOVE(dest, destsize, source, count) ::wmemmove((dest), (source), (count)) #endif #include #if defined(_M_CEE) && defined(_STATIC_CPPLIB) #error _STATIC_CPPLIB is not supported while building with /clr or /clr:pure #endif #if defined(_DLL) && defined(_STATIC_CPPLIB) && !defined(_DISABLE_DEPRECATE_STATIC_CPPLIB) #include #pragma push_macro("_STATIC_CPPLIB") #undef _STATIC_CPPLIB #pragma _CRT_WARNING( _DEPRECATE_STATIC_CPPLIB ) #pragma pop_macro("_STATIC_CPPLIB") #endif /* Define _CRTIMP2 */ #ifndef _CRTIMP2 #if defined(CRTDLL2) && defined(_CRTBLD) #define _CRTIMP2 __declspec(dllexport) #else /* ndef CRTDLL2 && _CRTBLD */ #if defined(_DLL) && !defined(_STATIC_CPPLIB) #define _CRTIMP2 __declspec(dllimport) #else /* ndef _DLL && !STATIC_CPPLIB */ #define _CRTIMP2 #endif /* _DLL && !STATIC_CPPLIB */ #endif /* CRTDLL2 && _CRTBLD */ #endif /* _CRTIMP2 */ /* Define _CRTIMP2_NCEEPURE */ #ifndef _CRTIMP2_NCEEPURE #if defined(_M_CEE_PURE) #define _CRTIMP2_NCEEPURE #else #define _CRTIMP2_NCEEPURE _CRTIMP2 #endif #endif #ifndef _MRTIMP #if defined(MRTDLL) && defined(_CRTBLD) #if !defined(_M_CEE_PURE) #define _MRTIMP __declspec(dllexport) #else #define _MRTIMP #endif #else /* ndef MRTDLL && _CRTBLD */ #define _MRTIMP __declspec(dllimport) #endif /* MRTDLL && _CRTBLD */ #endif /* _MRTIMP */ /* Define _MRTIMP2 */ #ifndef _MRTIMP2 #if defined(CRTDLL2) && defined(_CRTBLD) #define _MRTIMP2 __declspec(dllexport) #elif defined(MRTDLL) && defined(_CRTBLD) #define _MRTIMP2 _MRTIMP #else /* ndef CRTDLL2 && _CRTBLD */ #if defined(_DLL) && !defined(_STATIC_CPPLIB) #define _MRTIMP2 __declspec(dllimport) #else /* ndef _DLL && !STATIC_CPPLIB */ #define _MRTIMP2 #endif /* _DLL && !STATIC_CPPLIB */ #endif /* CRTDLL2 && _CRTBLD */ #endif /* _MRTIMP2 */ #ifndef _MRTIMP2_PURE #if defined(_M_CEE_PURE) #define _MRTIMP2_PURE #else #define _MRTIMP2_PURE _MRTIMP2 #endif #endif #ifndef _MRTIMP2_PURE_NPURE #if defined(_M_CEE_PURE) #define _MRTIMP2_PURE_NPURE #else #define _MRTIMP2_PURE_NPURE _MRTIMP2_NPURE #endif #endif /* Define _MRTIMP2_NPURE */ #ifndef _MRTIMP2_NPURE #if defined(MRTDLL) && defined(_CRTBLD) #if !defined(_M_CEE_PURE) #define _MRTIMP2_NPURE __declspec(dllexport) #else #define _MRTIMP2_NPURE #endif #else /* ndef MRTDLL && _CRTBLD */ #if defined(_DLL) && defined(_M_CEE_PURE) #define _MRTIMP2_NPURE __declspec(dllimport) #else #define _MRTIMP2_NPURE #endif #endif /* MRTDLL && _CRTBLD */ #endif /* _MRTIMP2_NPURE */ #if defined(_DLL) && !defined(_STATIC_CPPLIB) && !defined(_M_CEE_PURE) #define _DLL_CPPLIB #endif #ifndef _CRTIMP2_PURE #if defined(MRTDLL) && defined(_CRTBLD) #define _CRTIMP2_PURE #else #ifdef _M_CEE_PURE #define _CRTIMP2_PURE #else #define _CRTIMP2_PURE _CRTIMP2 #endif #endif #endif #ifdef _CRTBLD #if !defined(_CRTDATA2) #if !defined(MRTDLL) #define _CRTDATA2 _CRTIMP2 #else #define _CRTDATA2 #endif #endif /* Define _CRTBLD_NATIVE_WCHAR_T */ #if defined(__cplusplus) #ifndef _NATIVE_WCHAR_T_DEFINED #error Native wchar_t must be defined #else /* _NATIVE_WCHAR_T_DEFINED */ #define _CRTBLD_NATIVE_WCHAR_T #endif /* _NATIVE_WCHAR_T_DEFINED */ #endif /* defined(__cplusplus) */ /* These functions are for enabling STATIC_CPPLIB functionality */ #define _cpp_stdin (&(__iob_func())[0]) #define _cpp_stdout (&(__iob_func())[1]) #define _cpp_stderr (&(__iob_func())[2]) #define _cpp_isleadbyte(c) (__pctype_func()[(unsigned char)(c)] & _LEADBYTE) #else /* _CRTBLD */ #if !defined(_CRTDATA2) #define _CRTDATA2 _CRTIMP2 #endif #endif /* _CRTBLD */ /* NAMESPACE */ #if defined(__cplusplus) #define _STD_BEGIN namespace std { #define _STD_END } #define _STD ::std:: /* We use the stdext (standard extension) namespace to contain extensions that are not part of the current standard */ #define _STDEXT_BEGIN namespace stdext { #define _STDEXT_END } #define _STDEXT ::stdext:: #ifdef _STD_USING #define _C_STD_BEGIN namespace std { /* only if *.c compiled as C++ */ #define _C_STD_END } #define _CSTD ::std:: #else /* _STD_USING */ /* #define _GLOBAL_USING *.h in global namespace, c* imports to std */ #define _C_STD_BEGIN #define _C_STD_END #define _CSTD :: #endif /* _STD_USING */ #define _C_LIB_DECL extern "C" { /* C has extern "C" linkage */ #define _END_C_LIB_DECL } #define _EXTERN_C extern "C" { #define _END_EXTERN_C } #else /* __cplusplus */ #define _STD_BEGIN #define _STD_END #define _STD #define _C_STD_BEGIN #define _C_STD_END #define _CSTD #define _C_LIB_DECL #define _END_C_LIB_DECL #define _EXTERN_C #define _END_EXTERN_C #endif /* __cplusplus */ #ifdef __cplusplus _STD_BEGIN typedef bool _Bool; _STD_END #endif /* __cplusplus */ /* VC++ COMPILER PARAMETERS */ #define _LONGLONG __int64 #define _ULONGLONG unsigned __int64 #define _LLONG_MAX 0x7fffffffffffffff #define _ULLONG_MAX 0xffffffffffffffff /* INTEGER PROPERTIES */ #define _C2 1 /* 0 if not 2's complement */ #define _MAX_EXP_DIG 8 /* for parsing numerics */ #define _MAX_INT_DIG 32 #define _MAX_SIG_DIG 36 typedef _LONGLONG _Longlong; typedef _ULONGLONG _ULonglong; /* STDIO PROPERTIES */ #define _Filet _iobuf #define _IOBASE _base #define _IOPTR _ptr #define _IOCNT _cnt #ifndef _HAS_CHAR16_T_LANGUAGE_SUPPORT #define _HAS_CHAR16_T_LANGUAGE_SUPPORT 0 #endif /* _HAS_CHAR16_T_LANGUAGE_SUPPORT */ /* uchar PROPERTIES */ #if _HAS_CHAR16_T_LANGUAGE_SUPPORT #else /* _HAS_CHAR16_T_LANGUAGE_SUPPORT */ #if !defined(_CHAR16T) #define _CHAR16T typedef unsigned short char16_t; typedef unsigned int char32_t; #endif /* !defined(_CHAR16T) */ #endif /* _HAS_CHAR16_T_LANGUAGE_SUPPORT */ /* MULTITHREAD PROPERTIES */ /* LOCK MACROS */ #define _LOCK_LOCALE 0 #define _LOCK_MALLOC 1 #define _LOCK_STREAM 2 #define _LOCK_DEBUG 3 #define _MAX_LOCK 4 /* one more than highest lock number */ #ifdef __cplusplus _STD_BEGIN enum _Uninitialized { // tag for suppressing initialization _Noinit }; // CLASS _Lockit // warning 4412 is benign here #pragma warning(push) #pragma warning(disable:4412) class _CRTIMP2_PURE _Lockit { // lock while object in existence -- MUST NEST public: #if _MULTI_THREAD #if defined(_M_CEE_PURE) || defined(MRTDLL) __CLR_OR_THIS_CALL _Lockit() : _Locktype(0) { // default construct _Lockit_ctor(this); } explicit __CLR_OR_THIS_CALL _Lockit(int _Kind) { // set the lock _Lockit_ctor(this, _Kind); } __CLR_OR_THIS_CALL ~_Lockit() _NOEXCEPT { // clear the lock _Lockit_dtor(this); } #else /* defined(_M_CEE_PURE) || defined(MRTDLL) */ __thiscall _Lockit(); // default construct explicit __thiscall _Lockit(int); // set the lock __thiscall ~_Lockit() _NOEXCEPT; // clear the lock #endif /* defined(_M_CEE_PURE) || defined(MRTDLL) */ static _MRTIMP2_NPURE void __cdecl _Lockit_ctor(int); static _MRTIMP2_NPURE void __cdecl _Lockit_dtor(int); private: static _MRTIMP2_NPURE void __cdecl _Lockit_ctor(_Lockit *); static _MRTIMP2_NPURE void __cdecl _Lockit_ctor(_Lockit *, int); static _MRTIMP2_NPURE void __cdecl _Lockit_dtor(_Lockit *); public: __CLR_OR_THIS_CALL _Lockit(const _Lockit&) = delete; _Lockit& __CLR_OR_THIS_CALL operator=(const _Lockit&) = delete; private: int _Locktype; #else /* _MULTI_THREAD */ _Lockit() { // do nothing } explicit _Lockit(int) { // do nothing } ~_Lockit() _NOEXCEPT { // do nothing } #endif /* _MULTI_THREAD */ }; #ifdef _M_CEE class _CRTIMP2_PURE _EmptyLockit { // empty lock class used for bin compat public: #if _MULTI_THREAD private: int _Locktype; #endif /* _MULTI_THREAD */ }; #if defined(__cplusplus_cli) #define _M_CEE_FINALLY finally #else /* defined(__cplusplus_cli) */ #define _M_CEE_FINALLY __finally #endif /* defined(__cplusplus_cli) */ #define _BEGIN_LOCK(_Kind) \ { \ typedef int _TmpTestType; \ __if_exists(_TmpTestType::ToString) \ { \ bool _MustReleaseLock = false; \ int _LockKind = _Kind; \ System::Runtime::CompilerServices::RuntimeHelpers::PrepareConstrainedRegions(); \ try \ } \ { \ __if_exists(_TmpTestType::ToString) \ { \ System::Runtime::CompilerServices::RuntimeHelpers::PrepareConstrainedRegions(); \ try { } _M_CEE_FINALLY \ { \ _STD _Lockit::_Lockit_ctor(_LockKind); \ _MustReleaseLock = true; \ } \ } \ __if_not_exists(_TmpTestType::ToString) \ { \ _STD _Lockit _Lock(_Kind); \ } #define _END_LOCK() \ } \ __if_exists(_TmpTestType::ToString) \ { \ _M_CEE_FINALLY \ { \ if (_MustReleaseLock) \ { \ _STD _Lockit::_Lockit_dtor(_LockKind); \ } \ } \ } \ } #define _BEGIN_LOCINFO(_VarName) \ _BEGIN_LOCK(_LOCK_LOCALE) \ _Locinfo _VarName; #define _END_LOCINFO() \ _END_LOCK() \ #define _RELIABILITY_CONTRACT \ [System::Runtime::ConstrainedExecution::ReliabilityContract( \ System::Runtime::ConstrainedExecution::Consistency::WillNotCorruptState, \ System::Runtime::ConstrainedExecution::Cer::Success)] #else /* _M_CEE */ #define _BEGIN_LOCK(_Kind) \ { \ _STD _Lockit _Lock(_Kind); #define _END_LOCK() \ } #define _BEGIN_LOCINFO(_VarName) \ { \ _Locinfo _VarName; #define _END_LOCINFO() \ } #define _RELIABILITY_CONTRACT #endif /* _M_CEE */ class _CRTIMP2_PURE _Init_locks { // initialize mutexes public: #if _MULTI_THREAD #if defined(_M_CEE_PURE) || defined(MRTDLL) __CLR_OR_THIS_CALL _Init_locks() { // default construct _Init_locks_ctor(this); } __CLR_OR_THIS_CALL ~_Init_locks() _NOEXCEPT { // destroy the object _Init_locks_dtor(this); } #else /* defined(_M_CEE_PURE) || defined(MRTDLL) */ __thiscall _Init_locks(); __thiscall ~_Init_locks() _NOEXCEPT; #endif /* defined(_M_CEE_PURE) || defined(MRTDLL) */ private: static _MRTIMP2_NPURE void __cdecl _Init_locks_ctor(_Init_locks *); static _MRTIMP2_NPURE void __cdecl _Init_locks_dtor(_Init_locks *); #else /* _MULTI_THREAD */ _Init_locks() { // do nothing } ~_Init_locks() _NOEXCEPT { // do nothing } #endif /* _MULTI_THREAD */ }; #pragma warning(pop) _STD_END #endif /* __cplusplus */ #ifndef _RELIABILITY_CONTRACT #define _RELIABILITY_CONTRACT #endif /* _RELIABILITY_CONTRACT */ /* MISCELLANEOUS MACROS AND TYPES */ _C_STD_BEGIN _MRTIMP2 void __cdecl _Atexit(void (__cdecl *)(void)); typedef int _Mbstatet; typedef unsigned long _Uint32t; #define _Mbstinit(x) mbstate_t x = {0} _C_STD_END #define _THROW_BAD_ALLOC _THROW1(...) #define _NO_RETURN(fun) __declspec(noreturn) void fun #pragma pop_macro("new") #pragma pack(pop) #endif /* RC_INVOKED */ #endif /* _YVALS */ /* * Copyright (c) 1992-2012 by P.J. Plauger. ALL RIGHTS RESERVED. * Consult your license regarding permissions and restrictions. V6.00:0009 */