ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
January 2025
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
23 participants
278 discussions
Start a n
N
ew thread
[reactos] 08/33: [UCRT] Fix benign typo ('\0' instead of nullptr)
by Timo Kreuzer
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=9ed5151de9e6f50318881…
commit 9ed5151de9e6f50318881ae86e5c486929044b80 Author: Timo Kreuzer <timo.kreuzer(a)reactos.org> AuthorDate: Sun Oct 13 20:23:24 2024 +0200 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Thu Jan 16 14:18:53 2025 +0200 [UCRT] Fix benign typo ('\0' instead of nullptr) --- sdk/lib/ucrt/exec/cenvarg.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/lib/ucrt/exec/cenvarg.cpp b/sdk/lib/ucrt/exec/cenvarg.cpp index 7a664e3e5fa..942f25bab32 100644 --- a/sdk/lib/ucrt/exec/cenvarg.cpp +++ b/sdk/lib/ucrt/exec/cenvarg.cpp @@ -53,14 +53,14 @@ static errno_t __cdecl construct_command_line( Character* result_it = command_line.get(); // If there are no arguments, just return the empty string: - if (*source_it == '\0') + if (*source_it == nullptr) { *command_line_result = command_line.detach(); return 0; } // Copy the arguments, separated by spaces: - while (*source_it != '\0') + while (*source_it != nullptr) { _ERRCHECK(traits::tcscpy_s(result_it, command_line_count - (result_it - command_line.get()), *source_it)); result_it += traits::tcslen(*source_it);
2 weeks, 6 days
1
0
0
0
[reactos] 07/33: [UCRT] Fix a signed/unsigned comparison
by Timo Kreuzer
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f8e7a249ba618d0d9fa64…
commit f8e7a249ba618d0d9fa6404822f287d596383e03 Author: Timo Kreuzer <timo.kreuzer(a)reactos.org> AuthorDate: Sun Oct 13 10:15:08 2024 +0200 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Thu Jan 16 14:18:53 2025 +0200 [UCRT] Fix a signed/unsigned comparison --- sdk/lib/ucrt/conio/cputws.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/lib/ucrt/conio/cputws.cpp b/sdk/lib/ucrt/conio/cputws.cpp index a23c110d0e4..2a16e4fac0a 100644 --- a/sdk/lib/ucrt/conio/cputws.cpp +++ b/sdk/lib/ucrt/conio/cputws.cpp @@ -23,7 +23,7 @@ extern "C" int __cdecl _cputws(wchar_t const* string) return -1; // Write string to console file handle: - ptrdiff_t length = wcslen(string); + size_t length = wcslen(string); __acrt_lock(__acrt_conio_lock);
2 weeks, 6 days
1
0
0
0
[reactos] 06/33: [UCRT] Fix multiple missing dereferences
by Timo Kreuzer
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=2d753d95fbdc03339c224…
commit 2d753d95fbdc03339c2241ff8c14b76d57637699 Author: Timo Kreuzer <timo.kreuzer(a)reactos.org> AuthorDate: Sun Oct 13 19:36:53 2024 +0200 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Thu Jan 16 14:18:53 2025 +0200 [UCRT] Fix multiple missing dereferences This is a bug in MS UCRT code. MSVC allows to check a pointer to be > 0, GCC emits a warning. --- sdk/lib/ucrt/locale/initctype.cpp | 2 +- sdk/lib/ucrt/locale/initmon.cpp | 2 +- sdk/lib/ucrt/locale/initnum.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/lib/ucrt/locale/initctype.cpp b/sdk/lib/ucrt/locale/initctype.cpp index d4fc2cefb1f..c2a4f65b5dc 100644 --- a/sdk/lib/ucrt/locale/initctype.cpp +++ b/sdk/lib/ucrt/locale/initctype.cpp @@ -251,7 +251,7 @@ error_cleanup: if ( (ploci->ctype1_refcount != nullptr)&& (InterlockedDecrement(ploci->ctype1_refcount) == 0)) { - _ASSERTE(ploci->ctype1_refcount > 0); + _ASSERTE(*ploci->ctype1_refcount > 0); } ploci->ctype1_refcount = nullptr; ploci->ctype1 = nullptr; diff --git a/sdk/lib/ucrt/locale/initmon.cpp b/sdk/lib/ucrt/locale/initmon.cpp index 0525bc744a1..4cdfc0afa71 100644 --- a/sdk/lib/ucrt/locale/initmon.cpp +++ b/sdk/lib/ucrt/locale/initmon.cpp @@ -205,7 +205,7 @@ int __cdecl __acrt_locale_initialize_monetary ( if ( (ploci->lconv_mon_refcount != nullptr) && (InterlockedDecrement(ploci->lconv_mon_refcount) == 0)) { - _ASSERTE(ploci->lconv_mon_refcount > 0); + _ASSERTE(*ploci->lconv_mon_refcount > 0); } if ( (ploci->lconv_intl_refcount != nullptr) && (InterlockedDecrement(ploci->lconv_intl_refcount) == 0)) diff --git a/sdk/lib/ucrt/locale/initnum.cpp b/sdk/lib/ucrt/locale/initnum.cpp index e37fe69c298..801e3d935dd 100644 --- a/sdk/lib/ucrt/locale/initnum.cpp +++ b/sdk/lib/ucrt/locale/initnum.cpp @@ -187,7 +187,7 @@ int __cdecl __acrt_locale_initialize_numeric ( if ( (ploci->lconv_num_refcount != nullptr) && (InterlockedDecrement(ploci->lconv_num_refcount) == 0)) { - _ASSERTE(ploci->lconv_num_refcount > 0); + _ASSERTE(*ploci->lconv_num_refcount > 0); } if ( (ploci->lconv_intl_refcount != nullptr) && (InterlockedDecrement(ploci->lconv_intl_refcount) == 0))
2 weeks, 6 days
1
0
0
0
[reactos] 05/33: [UCRT] Fix a typo/bug in __acrt_mbs_to_wcs_cp_array
by Timo Kreuzer
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d622c4a7a0e08f2a3dd16…
commit d622c4a7a0e08f2a3dd16a0eb71a9ab12a43e4f0 Author: Timo Kreuzer <timo.kreuzer(a)reactos.org> AuthorDate: Fri Oct 11 23:01:19 2024 +0200 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Thu Jan 16 14:18:53 2025 +0200 [UCRT] Fix a typo/bug in __acrt_mbs_to_wcs_cp_array --- sdk/lib/ucrt/inc/corecrt_internal_win32_buffer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/lib/ucrt/inc/corecrt_internal_win32_buffer.h b/sdk/lib/ucrt/inc/corecrt_internal_win32_buffer.h index eca2a9e59b3..313843f43b5 100644 --- a/sdk/lib/ucrt/inc/corecrt_internal_win32_buffer.h +++ b/sdk/lib/ucrt/inc/corecrt_internal_win32_buffer.h @@ -701,7 +701,7 @@ size_t __acrt_mbs_to_wcs_cp_array( ) { __crt_no_alloc_win32_buffer<wchar_t> win32_buffer(buffer); - if (__acrt_wcs_to_mbs_cp(null_terminated_input_string, win32_buffer, code_page) != 0) { + if (__acrt_mbs_to_wcs_cp(null_terminated_input_string, win32_buffer, code_page) != 0) { return 0; }
2 weeks, 6 days
1
0
0
0
[reactos] 04/33: [UCRT] Add missing line breaks at end of file
by Timo Kreuzer
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=48d8d198b27f984821106…
commit 48d8d198b27f9848211061a23e388f10edd2d5f7 Author: Timo Kreuzer <timo.kreuzer(a)reactos.org> AuthorDate: Sat Oct 12 08:38:25 2024 +0200 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Thu Jan 16 14:18:53 2025 +0200 [UCRT] Add missing line breaks at end of file --- sdk/lib/ucrt/dll/appcrt_dllmain.cpp | 2 +- sdk/lib/ucrt/dll/empty.cpp | 1 + sdk/lib/ucrt/internal/win_policies.cpp | 2 +- sdk/lib/ucrt/locale/lcidtoname_downlevel.cpp | 2 +- sdk/lib/ucrt/misc/is_wctype.cpp | 2 +- sdk/lib/ucrt/stdio/fputs.cpp | 2 +- sdk/lib/ucrt/stdio/puts.cpp | 2 +- sdk/lib/ucrt/stdio/rewind.cpp | 2 +- sdk/lib/ucrt/stdio/tempnam.cpp | 2 +- 9 files changed, 9 insertions(+), 8 deletions(-) diff --git a/sdk/lib/ucrt/dll/appcrt_dllmain.cpp b/sdk/lib/ucrt/dll/appcrt_dllmain.cpp index c521f565329..ab393de5ce1 100644 --- a/sdk/lib/ucrt/dll/appcrt_dllmain.cpp +++ b/sdk/lib/ucrt/dll/appcrt_dllmain.cpp @@ -118,4 +118,4 @@ const IMAGE_ENCLAVE_CONFIG __enclave_config = { #endif -} // extern "C" \ No newline at end of file +} // extern "C" diff --git a/sdk/lib/ucrt/dll/empty.cpp b/sdk/lib/ucrt/dll/empty.cpp index e69de29bb2d..8b137891791 100644 --- a/sdk/lib/ucrt/dll/empty.cpp +++ b/sdk/lib/ucrt/dll/empty.cpp @@ -0,0 +1 @@ + diff --git a/sdk/lib/ucrt/internal/win_policies.cpp b/sdk/lib/ucrt/internal/win_policies.cpp index e432fa3a2b4..55efd95f05c 100644 --- a/sdk/lib/ucrt/internal/win_policies.cpp +++ b/sdk/lib/ucrt/internal/win_policies.cpp @@ -179,4 +179,4 @@ extern "C" windowing_model_policy __cdecl __acrt_get_windowing_model_policy() }; return get_cached_win_policy<windowing_model_policy_properties>(AppPolicyWindowingModel_ClassicDesktop); -} \ No newline at end of file +} diff --git a/sdk/lib/ucrt/locale/lcidtoname_downlevel.cpp b/sdk/lib/ucrt/locale/lcidtoname_downlevel.cpp index 62a3d0a81e1..8727c73bdeb 100644 --- a/sdk/lib/ucrt/locale/lcidtoname_downlevel.cpp +++ b/sdk/lib/ucrt/locale/lcidtoname_downlevel.cpp @@ -601,4 +601,4 @@ extern "C" int __cdecl __acrt_DownlevelLCIDToLocaleName( } return (int) count + 1; -} \ No newline at end of file +} diff --git a/sdk/lib/ucrt/misc/is_wctype.cpp b/sdk/lib/ucrt/misc/is_wctype.cpp index cb38edab813..23b925ff8a4 100644 --- a/sdk/lib/ucrt/misc/is_wctype.cpp +++ b/sdk/lib/ucrt/misc/is_wctype.cpp @@ -36,4 +36,4 @@ extern "C" int __cdecl is_wctype ( ) { return iswctype(c, mask); -} \ No newline at end of file +} diff --git a/sdk/lib/ucrt/stdio/fputs.cpp b/sdk/lib/ucrt/stdio/fputs.cpp index bf8193572b5..fb61a9161e5 100644 --- a/sdk/lib/ucrt/stdio/fputs.cpp +++ b/sdk/lib/ucrt/stdio/fputs.cpp @@ -39,4 +39,4 @@ extern "C" int __cdecl fputs(char const* const string, FILE* const stream) { __crt_cached_ptd_host ptd; return _fputs_internal(string, stream, ptd); -} \ No newline at end of file +} diff --git a/sdk/lib/ucrt/stdio/puts.cpp b/sdk/lib/ucrt/stdio/puts.cpp index 4645bf2fc4f..97e28cb1026 100644 --- a/sdk/lib/ucrt/stdio/puts.cpp +++ b/sdk/lib/ucrt/stdio/puts.cpp @@ -42,4 +42,4 @@ extern "C" int __cdecl puts(char const* const string) { __crt_cached_ptd_host ptd; return _puts_internal(string, ptd); -} \ No newline at end of file +} diff --git a/sdk/lib/ucrt/stdio/rewind.cpp b/sdk/lib/ucrt/stdio/rewind.cpp index 5b9c3294f3a..11fcb4ba81c 100644 --- a/sdk/lib/ucrt/stdio/rewind.cpp +++ b/sdk/lib/ucrt/stdio/rewind.cpp @@ -57,4 +57,4 @@ extern "C" void __cdecl rewind(FILE* const public_stream) { __crt_cached_ptd_host ptd; _rewind_internal(public_stream, ptd); -} \ No newline at end of file +} diff --git a/sdk/lib/ucrt/stdio/tempnam.cpp b/sdk/lib/ucrt/stdio/tempnam.cpp index 143fee7ec2b..dd213f16b26 100644 --- a/sdk/lib/ucrt/stdio/tempnam.cpp +++ b/sdk/lib/ucrt/stdio/tempnam.cpp @@ -291,4 +291,4 @@ extern "C" wchar_t* __cdecl _wtempnam_dbg( return common_tempnam(alternative, prefix, block_use, file_name, line_number); } -#endif \ No newline at end of file +#endif
2 weeks, 6 days
1
0
0
0
[reactos] 03/33: [UCRT] Add missing headers
by Timo Kreuzer
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=995e16d4d4e65e1d03a28…
commit 995e16d4d4e65e1d03a28eed7d6167b184d79e04 Author: Timo Kreuzer <timo.kreuzer(a)reactos.org> AuthorDate: Fri Oct 11 14:45:42 2024 +0300 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Thu Jan 16 14:18:53 2025 +0200 [UCRT] Add missing headers These are minimal definitions, just enough to make things compile. --- .../ucrt/inc/corecrt_internal_state_isolation.h | 52 +++++ sdk/lib/ucrt/inc/internal_shared.h | 236 +++++++++++++++++++++ sdk/lib/ucrt/inc/nt.h | 13 ++ sdk/lib/ucrt/inc/ntrtl.h | 15 ++ sdk/lib/ucrt/inc/nturtl.h | 11 + 5 files changed, 327 insertions(+) diff --git a/sdk/lib/ucrt/inc/corecrt_internal_state_isolation.h b/sdk/lib/ucrt/inc/corecrt_internal_state_isolation.h new file mode 100644 index 00000000000..341de26f6ff --- /dev/null +++ b/sdk/lib/ucrt/inc/corecrt_internal_state_isolation.h @@ -0,0 +1,52 @@ +// +// corecrt_internal_state_isolation.h +// +// Copyright (c) 2024 Timo Kreuzer +// +// Header for CRT state management. +// +// SPDX-License-Identifier: MIT +// + +#pragma once + +#ifdef __cplusplus +extern "C++" +{ + namespace __crt_state_management + { + constexpr size_t state_index_count = 2; + struct scoped_global_state_reset + { + scoped_global_state_reset() throw() { } + ~scoped_global_state_reset() throw() { } + }; // FIXME: Implement this + template <typename T> + class dual_state_global + { + T _value[2]; + public: + T& value(__crt_cached_ptd_host& ptd) throw(); + T const& value(__crt_cached_ptd_host& ptd) const throw(); + T& value(void) throw() { return _value[0]; } + T value_explicit(size_t index) throw() { return _value[index]; } + T* dangerous_get_state_array() throw() { return _value; } + void initialize(T) throw() { } + template<typename T2> void uninitialize(T2) throw() { } + template<typename T2, size_t N> void initialize_from_array(T2 const (&values)[N]) throw() { } + }; + + inline int get_current_state_index(__crt_scoped_get_last_error_reset const &last_error_reset) + { + return 0; + } + + inline int get_current_state_index(void) + { + return 0; + } + } +} +#endif // __cplusplus + +#define __acrt_select_exit_lock() __acrt_exit_lock diff --git a/sdk/lib/ucrt/inc/internal_shared.h b/sdk/lib/ucrt/inc/internal_shared.h new file mode 100644 index 00000000000..a5f50f0f681 --- /dev/null +++ b/sdk/lib/ucrt/inc/internal_shared.h @@ -0,0 +1,236 @@ +// +// internal_shared.h +// +// Copyright (c) 2024 Timo Kreuzer +// +// Header for definitions shared between vcruntime and UCRT. +// +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <suppress.h> +#include <intrin.h> +#include <corecrt_startup.h> +#include <crtdbg.h> +#include <windows.h> // for HMODULE +#include <malloc.h> + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +#if defined(_MSC_VER) +#define _CRTALLOC(x) __declspec(allocate(x)) +#else +#define _CRTALLOC(x) __attribute__((section(x))) +#endif + +#pragma section(".CRT$XIC", long, read) +#pragma section(".CRT$XPX", long, read) +#pragma section(".CRT$XPXA", long, read) + +#pragma section(".CRT$XIA", long, read) +#pragma section(".CRT$XIZ", long, read) +#pragma section(".CRT$XCA", long, read) +#pragma section(".CRT$XCZ", long, read) +#pragma section(".CRT$XPA", long, read) +#pragma section(".CRT$XPZ", long, read) +#pragma section(".CRT$XTA", long, read) +#pragma section(".CRT$XTZ", long, read) + +extern _PIFV __xi_a[]; +extern _PIFV __xi_z[]; +extern _PVFV __xc_a[]; +extern _PVFV __xc_z[]; +extern _PVFV __xp_a[]; +extern _PVFV __xp_z[]; +extern _PVFV __xt_a[]; +extern _PVFV __xt_z[]; + +extern char __ImageBase; + +#define CRT_WARNING_DISABLE_PUSH(wn, message) \ + __pragma(warning(push)) \ + __pragma(warning(disable: wn)) + +#define CRT_WARNING_POP \ + __pragma(warning(pop)) + +#define _BEGIN_SECURE_CRT_DEPRECATION_DISABLE \ + __pragma(warning(push)) \ + __pragma(warning(disable: 4996)) + +#define _END_SECURE_CRT_DEPRECATION_DISABLE \ + __pragma(warning(pop)) + +#define _CRT_DEBUGGER_IGNORE -1 +#define _CRT_DEBUGGER_GSFAILURE 1 +#define _CRT_DEBUGGER_INVALIDPARAMETER 2 +#define _CRT_DEBUGGER_ABORT 3 + +#define _CRT_DEBUGGER_HOOK(x) + +#define _CRT_SECURITYCRITICAL_ATTRIBUTE +#define _CRT_SECURITYSAFECRITICAL_ATTRIBUTE + +#define _VALIDATE_RETURN(expr, errorcode, retexpr) \ + if (!(expr)) return (retexpr); + +#define _VALIDATE_RETURN_VOID(expr, errorcode) \ + if (!(expr)) return; + +#define _VALIDATE_RETURN_NOERRNO(expr, retexpr) \ + if (!(expr)) return (retexpr); + +#define _VALIDATE_RETURN_ERRCODE(expr, errorcode) \ + if (!(expr)) return (errorcode); + +#define _VALIDATE_CLEAR_OSSERR_RETURN(expr, errorcode, retexpr) \ + if (!(expr)) return (retexpr); + +#define _VALIDATE_CLEAR_OSSERR_RETURN_ERRCODE(expr, errorcode) \ + if (!(expr)) return (errorcode); + +#define _VALIDATE_RETURN_NOEXC(expr, errorcode, retexpr) \ + if (!(expr)) return (retexpr); + +#define _VALIDATE_RETURN_ERRCODE_NOEXC(expr, errorcode) \ + if (!(expr)) return (errorcode); + +#define _malloc_crt malloc +#define _free_crt free +#define _calloc_crt calloc +#define _recalloc_crt _recalloc +#define _malloca_crt _malloca +#define _freea_crt _freea + +#ifdef __cplusplus +} // extern "C" + +template<typename T> +__forceinline +T __crt_fast_encode_pointer(T Ptr) +{ + // FIXME: use cookie + return Ptr; +} + +template<typename T> +__forceinline +T __crt_fast_decode_pointer(T Ptr) +{ + // FIXME: use cookie + return Ptr; +} + +template<typename T> +T __crt_interlocked_read(const T volatile* ptr) +{ + return *ptr; +} + +template<typename T> +T __crt_interlocked_read_pointer(const T volatile* ptr) +{ + return *ptr; +} + +template<typename T> +T __crt_interlocked_exchange_pointer(T *ptr, void* value) +{ + return (T)_InterlockedExchangePointer((void* volatile*)ptr, value); +} + +template<typename T> +struct __crt_seh_guarded_call +{ + template<typename Init, typename Action, typename Cleanup> + T operator()(Init init, Action action, Cleanup cleanup) + { + init(); + __try + { + return action(); + } + __finally + { + cleanup(); + } + } +}; + +template<typename FuncPtr> +FuncPtr __crt_get_proc_address(HMODULE module, const char* name) +{ + return (FuncPtr)GetProcAddress(module, name); +} + +template<typename Action, typename Cleanup> +void __crt_call_and_cleanup(Action action, Cleanup cleanup) +{ + action(); + cleanup(); +} + +struct __crt_malloc_free_policy +{ + template<typename T> + void operator()(T* const ptr) throw() + { + _free_crt((void*)ptr); + } +}; + +struct __crt_public_free_policy +{ + template<typename T> + void operator()(T* const ptr) throw() + { + _free_crt((void*)ptr); + } +}; + +struct __crt_malloca_free_policy +{ + void operator()(void* const ptr) throw() + { + _freea_crt(ptr); + } +}; + +template <typename T, typename FreePolicy = __crt_malloc_free_policy> +class __crt_unique_heap_ptr +{ + T* _ptr; +public: + __crt_unique_heap_ptr() : _ptr(nullptr) {} + __crt_unique_heap_ptr(T* ptr) : _ptr(ptr) {} + __crt_unique_heap_ptr(__crt_unique_heap_ptr&& from) : _ptr(from._ptr) { from._ptr = nullptr; } + ~__crt_unique_heap_ptr() { FreePolicy()(_ptr); } + void attach(T* ptr) { FreePolicy()(_ptr); _ptr = ptr; } + T* detach() { T* ptr = _ptr; _ptr = nullptr; return ptr; } + operator bool() const { return _ptr != nullptr; } + T* get() const { return _ptr; } + T** get_address_of() { return &_ptr; } + + // Move assignment + __crt_unique_heap_ptr& operator=(__crt_unique_heap_ptr&& from) + { + FreePolicy()(_ptr); + _ptr = from._ptr; + from._ptr = nullptr; + return *this; + } +}; + +template <typename T> +using __crt_scoped_stack_ptr = __crt_unique_heap_ptr<T, __crt_malloca_free_policy>; + +#define _malloc_crt_t(t, n) (__crt_unique_heap_ptr<t>(static_cast<t*>(_malloc_crt((n) * sizeof(t))))) +#define _calloc_crt_t(t, n) (__crt_unique_heap_ptr<t>(static_cast<t*>(_calloc_crt((n), sizeof(t))))) +#define _recalloc_crt_t(t, p, n) (__crt_unique_heap_ptr<t>(static_cast<t*>(_recalloc_crt(p, (n), sizeof(t))))) +#define _malloca_crt_t(t, n) (__crt_scoped_stack_ptr<t>(static_cast<t*>(_malloca_crt((n) * sizeof(t))))) + +#endif // __cplusplus diff --git a/sdk/lib/ucrt/inc/nt.h b/sdk/lib/ucrt/inc/nt.h new file mode 100644 index 00000000000..5ec2c7d750e --- /dev/null +++ b/sdk/lib/ucrt/inc/nt.h @@ -0,0 +1,13 @@ +// +// nt.h +// +// Copyright (c) 2024 Timo Kreuzer +// +// Header for generic NT things. +// +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <ndk/pstypes.h> diff --git a/sdk/lib/ucrt/inc/ntrtl.h b/sdk/lib/ucrt/inc/ntrtl.h new file mode 100644 index 00000000000..cd0a293158d --- /dev/null +++ b/sdk/lib/ucrt/inc/ntrtl.h @@ -0,0 +1,15 @@ +// +// ntrtl.h +// +// Copyright (c) 2024 Timo Kreuzer +// +// Header for RTL NT things. +// +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <ndk/rtltypes.h> + +#define RTL_USER_PROC_SECURE_PROCESS 0x80000000 diff --git a/sdk/lib/ucrt/inc/nturtl.h b/sdk/lib/ucrt/inc/nturtl.h new file mode 100644 index 00000000000..40406382e93 --- /dev/null +++ b/sdk/lib/ucrt/inc/nturtl.h @@ -0,0 +1,11 @@ +// +// nturtl.h +// +// Copyright (c) 2024 Timo Kreuzer +// +// Header for user mode RTL NT things. +// +// SPDX-License-Identifier: MIT +// + +#pragma once
2 weeks, 6 days
1
0
0
0
[reactos] 02/33: [UCRT] Import Microsoft.Windows.SDK.CRTSource version 10.0.22621.3
by Timo Kreuzer
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=04e0dc4a7a18bb1ab69f7…
commit 04e0dc4a7a18bb1ab69f7ae9720259786025c530 Author: Timo Kreuzer <timo.kreuzer(a)reactos.org> AuthorDate: Sat May 11 07:03:12 2024 +0200 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Thu Jan 16 14:18:53 2025 +0200 [UCRT] Import Microsoft.Windows.SDK.CRTSource version 10.0.22621.3 Imported from
https://www.nuget.org/packages/Microsoft.Windows.SDK.CRTSource/10.0.22621.3
License: MIT --- sdk/include/ucrt/assert.h | 50 + sdk/include/ucrt/complex.h | 580 ++++ sdk/include/ucrt/conio.h | 504 ++++ sdk/include/ucrt/corecrt.h | 2075 ++++++++++++++ sdk/include/ucrt/corecrt_io.h | 572 ++++ sdk/include/ucrt/corecrt_malloc.h | 234 ++ sdk/include/ucrt/corecrt_math.h | 998 +++++++ sdk/include/ucrt/corecrt_math_defines.h | 39 + sdk/include/ucrt/corecrt_memcpy_s.h | 93 + sdk/include/ucrt/corecrt_memory.h | 122 + sdk/include/ucrt/corecrt_search.h | 218 ++ sdk/include/ucrt/corecrt_share.h | 33 + sdk/include/ucrt/corecrt_startup.h | 199 ++ sdk/include/ucrt/corecrt_stdio_config.h | 131 + sdk/include/ucrt/corecrt_terminate.h | 51 + sdk/include/ucrt/corecrt_wconio.h | 424 +++ sdk/include/ucrt/corecrt_wctype.h | 205 ++ sdk/include/ucrt/corecrt_wdirect.h | 63 + sdk/include/ucrt/corecrt_wio.h | 270 ++ sdk/include/ucrt/corecrt_wprocess.h | 127 + sdk/include/ucrt/corecrt_wstdio.h | 2171 +++++++++++++++ sdk/include/ucrt/corecrt_wstdlib.h | 481 ++++ sdk/include/ucrt/corecrt_wstring.h | 641 +++++ sdk/include/ucrt/corecrt_wtime.h | 207 ++ sdk/include/ucrt/crtdbg.h | 816 ++++++ sdk/include/ucrt/ctype.h | 310 +++ sdk/include/ucrt/direct.h | 131 + sdk/include/ucrt/dos.h | 61 + sdk/include/ucrt/errno.h | 137 + sdk/include/ucrt/fcntl.h | 68 + sdk/include/ucrt/fenv.h | 160 ++ sdk/include/ucrt/float.h | 409 +++ sdk/include/ucrt/fpieee.h | 478 ++++ sdk/include/ucrt/inttypes.h | 341 +++ sdk/include/ucrt/io.h | 13 + sdk/include/ucrt/locale.h | 184 ++ sdk/include/ucrt/malloc.h | 184 ++ sdk/include/ucrt/math.h | 15 + sdk/include/ucrt/mbctype.h | 173 ++ sdk/include/ucrt/mbstring.h | 1235 +++++++++ sdk/include/ucrt/memory.h | 13 + sdk/include/ucrt/minmax.h | 28 + sdk/include/ucrt/new.h | 68 + sdk/include/ucrt/process.h | 375 +++ sdk/include/ucrt/safeint.h | 1665 +++++++++++ sdk/include/ucrt/safeint_internal.h | 2898 ++++++++++++++++++++ sdk/include/ucrt/search.h | 13 + sdk/include/ucrt/share.h | 13 + sdk/include/ucrt/signal.h | 72 + sdk/include/ucrt/stdalign.h | 31 + sdk/include/ucrt/stddef.h | 64 + sdk/include/ucrt/stdio.h | 2448 +++++++++++++++++ sdk/include/ucrt/stdlib.h | 1362 +++++++++ sdk/include/ucrt/stdnoreturn.h | 28 + sdk/include/ucrt/string.h | 592 ++++ sdk/include/ucrt/sys/locking.h | 31 + sdk/include/ucrt/sys/stat.h | 249 ++ sdk/include/ucrt/sys/timeb.h | 112 + sdk/include/ucrt/sys/types.h | 51 + sdk/include/ucrt/sys/utime.h | 163 ++ sdk/include/ucrt/tchar.h | 2330 ++++++++++++++++ sdk/include/ucrt/tgmath.h | 650 +++++ sdk/include/ucrt/time.h | 648 +++++ sdk/include/ucrt/uchar.h | 50 + sdk/include/ucrt/wchar.h | 286 ++ sdk/include/ucrt/wctype.h | 33 + sdk/lib/ucrt/conio/cgets.cpp | 128 + sdk/lib/ucrt/conio/cgetws.cpp | 156 ++ sdk/lib/ucrt/conio/cprintf.cpp | 104 + sdk/lib/ucrt/conio/cputs.cpp | 38 + sdk/lib/ucrt/conio/cputws.cpp | 63 + sdk/lib/ucrt/conio/cscanf.cpp | 56 + sdk/lib/ucrt/conio/getch.cpp | 569 ++++ sdk/lib/ucrt/conio/getwch.cpp | 201 ++ sdk/lib/ucrt/conio/initcon.cpp | 83 + sdk/lib/ucrt/conio/initconin.cpp | 162 ++ sdk/lib/ucrt/conio/pipe.cpp | 113 + sdk/lib/ucrt/conio/popen.cpp | 488 ++++ sdk/lib/ucrt/conio/putch.cpp | 82 + sdk/lib/ucrt/conio/putwch.cpp | 39 + sdk/lib/ucrt/convert/_ctype.cpp | 254 ++ sdk/lib/ucrt/convert/_fptostr.cpp | 173 ++ sdk/lib/ucrt/convert/_mbslen.cpp | 119 + sdk/lib/ucrt/convert/_wctype.cpp | 171 ++ sdk/lib/ucrt/convert/atof.cpp | 96 + sdk/lib/ucrt/convert/atoldbl.cpp | 833 ++++++ sdk/lib/ucrt/convert/atox.cpp | 107 + sdk/lib/ucrt/convert/c16rtomb.cpp | 94 + sdk/lib/ucrt/convert/c32rtomb.cpp | 93 + sdk/lib/ucrt/convert/cfout.cpp | 367 +++ sdk/lib/ucrt/convert/common_utf8.cpp | 27 + sdk/lib/ucrt/convert/cvt.cpp | 849 ++++++ sdk/lib/ucrt/convert/fcvt.cpp | 296 ++ sdk/lib/ucrt/convert/fp_flags.cpp | 20 + sdk/lib/ucrt/convert/gcvt.cpp | 159 ++ sdk/lib/ucrt/convert/isctype.cpp | 116 + sdk/lib/ucrt/convert/ismbstr.cpp | 64 + sdk/lib/ucrt/convert/iswctype.cpp | 55 + sdk/lib/ucrt/convert/mblen.cpp | 124 + sdk/lib/ucrt/convert/mbrtoc16.cpp | 88 + sdk/lib/ucrt/convert/mbrtoc32.cpp | 148 + sdk/lib/ucrt/convert/mbrtowc.cpp | 610 ++++ sdk/lib/ucrt/convert/mbstowcs.cpp | 326 +++ sdk/lib/ucrt/convert/mbtowc.cpp | 153 ++ sdk/lib/ucrt/convert/strtod.cpp | 164 ++ sdk/lib/ucrt/convert/strtox.cpp | 400 +++ sdk/lib/ucrt/convert/swab.cpp | 34 + sdk/lib/ucrt/convert/tolower_toupper.cpp | 117 + sdk/lib/ucrt/convert/towlower.cpp | 105 + sdk/lib/ucrt/convert/towupper.cpp | 105 + sdk/lib/ucrt/convert/wcrtomb.cpp | 533 ++++ sdk/lib/ucrt/convert/wcstombs.cpp | 417 +++ sdk/lib/ucrt/convert/wctomb.cpp | 217 ++ sdk/lib/ucrt/convert/wctrans.cpp | 52 + sdk/lib/ucrt/convert/wctype.cpp | 57 + sdk/lib/ucrt/convert/xtoa.cpp | 369 +++ sdk/lib/ucrt/dll/appcrt_dllmain.cpp | 121 + sdk/lib/ucrt/dll/empty.cpp | 0 sdk/lib/ucrt/env/environment_initialization.cpp | 336 +++ sdk/lib/ucrt/env/get_environment_from_os.cpp | 121 + sdk/lib/ucrt/env/getenv.cpp | 329 +++ sdk/lib/ucrt/env/getpath.cpp | 159 ++ sdk/lib/ucrt/env/putenv.cpp | 243 ++ sdk/lib/ucrt/env/searchenv.cpp | 215 ++ sdk/lib/ucrt/env/setenv.cpp | 373 +++ sdk/lib/ucrt/exec/cenvarg.cpp | 369 +++ sdk/lib/ucrt/exec/getproc.cpp | 67 + sdk/lib/ucrt/exec/loaddll.cpp | 65 + sdk/lib/ucrt/exec/spawnl.cpp | 143 + sdk/lib/ucrt/exec/spawnlp.cpp | 140 + sdk/lib/ucrt/exec/spawnv.cpp | 451 +++ sdk/lib/ucrt/exec/spawnvp.cpp | 212 ++ sdk/lib/ucrt/exec/system.cpp | 86 + sdk/lib/ucrt/exec/wait.cpp | 87 + sdk/lib/ucrt/fenv/mapping.txt | 28 + sdk/lib/ucrt/filesystem/access.cpp | 34 + sdk/lib/ucrt/filesystem/chmod.cpp | 31 + sdk/lib/ucrt/filesystem/findfile.cpp | 395 +++ sdk/lib/ucrt/filesystem/fullpath.cpp | 153 ++ sdk/lib/ucrt/filesystem/makepath.cpp | 205 ++ sdk/lib/ucrt/filesystem/mkdir.cpp | 29 + sdk/lib/ucrt/filesystem/rename.cpp | 39 + sdk/lib/ucrt/filesystem/rmdir.cpp | 31 + sdk/lib/ucrt/filesystem/splitpath.cpp | 352 +++ sdk/lib/ucrt/filesystem/stat.cpp | 606 ++++ sdk/lib/ucrt/filesystem/unlink.cpp | 35 + sdk/lib/ucrt/filesystem/waccess.cpp | 55 + sdk/lib/ucrt/filesystem/wchmod.cpp | 45 + sdk/lib/ucrt/filesystem/wmkdir.cpp | 24 + sdk/lib/ucrt/filesystem/wrename.cpp | 25 + sdk/lib/ucrt/filesystem/wrmdir.cpp | 26 + sdk/lib/ucrt/filesystem/wunlink.cpp | 31 + sdk/lib/ucrt/heap/align.cpp | 638 +++++ sdk/lib/ucrt/heap/calloc.cpp | 30 + sdk/lib/ucrt/heap/calloc_base.cpp | 53 + sdk/lib/ucrt/heap/debug_heap.cpp | 1979 +++++++++++++ sdk/lib/ucrt/heap/debug_heap_hook.cpp | 40 + sdk/lib/ucrt/heap/expand.cpp | 100 + sdk/lib/ucrt/heap/free.cpp | 32 + sdk/lib/ucrt/heap/free_base.cpp | 110 + sdk/lib/ucrt/heap/heap_handle.cpp | 52 + sdk/lib/ucrt/heap/heapchk.cpp | 21 + sdk/lib/ucrt/heap/heapmin.cpp | 19 + sdk/lib/ucrt/heap/heapwalk.cpp | 90 + sdk/lib/ucrt/heap/malloc.cpp | 27 + sdk/lib/ucrt/heap/malloc_base.cpp | 47 + sdk/lib/ucrt/heap/msize.cpp | 42 + sdk/lib/ucrt/heap/new_handler.cpp | 83 + sdk/lib/ucrt/heap/new_mode.cpp | 31 + sdk/lib/ucrt/heap/realloc.cpp | 41 + sdk/lib/ucrt/heap/realloc_base.cpp | 59 + sdk/lib/ucrt/heap/recalloc.cpp | 70 + sdk/lib/ucrt/inc/corecrt_internal.h | 2119 ++++++++++++++ sdk/lib/ucrt/inc/corecrt_internal_big_integer.h | 931 +++++++ sdk/lib/ucrt/inc/corecrt_internal_fltintrn.h | 220 ++ sdk/lib/ucrt/inc/corecrt_internal_lowio.h | 328 +++ sdk/lib/ucrt/inc/corecrt_internal_mbstring.h | 152 + .../ucrt/inc/corecrt_internal_ptd_propagation.h | 569 ++++ sdk/lib/ucrt/inc/corecrt_internal_securecrt.h | 130 + sdk/lib/ucrt/inc/corecrt_internal_simd.h | 157 ++ sdk/lib/ucrt/inc/corecrt_internal_stdio.h | 864 ++++++ sdk/lib/ucrt/inc/corecrt_internal_stdio_input.h | 1613 +++++++++++ sdk/lib/ucrt/inc/corecrt_internal_stdio_output.h | 2809 +++++++++++++++++++ .../ucrt/inc/corecrt_internal_string_templates.h | 299 ++ sdk/lib/ucrt/inc/corecrt_internal_strtox.h | 2046 ++++++++++++++ sdk/lib/ucrt/inc/corecrt_internal_time.h | 216 ++ sdk/lib/ucrt/inc/corecrt_internal_traits.h | 276 ++ sdk/lib/ucrt/inc/corecrt_internal_win32_buffer.h | 799 ++++++ sdk/lib/ucrt/inc/i386/cruntime.inc | 323 +++ sdk/lib/ucrt/inc/ksamd64.inc | 2043 ++++++++++++++ sdk/lib/ucrt/inc/ksamd64_stub.inc | 1 + sdk/lib/ucrt/inc/kxamd64.inc | 1002 +++++++ sdk/lib/ucrt/inc/kxamd64_stub.inc | 1 + sdk/lib/ucrt/inc/macamd64.inc | 685 +++++ sdk/lib/ucrt/initializers/clock_initializer.cpp | 17 + .../initializers/console_input_initializer.cpp | 17 + .../initializers/console_output_initializer.cpp | 17 + sdk/lib/ucrt/initializers/fma3_initializer.cpp | 17 + sdk/lib/ucrt/initializers/fmode_initializer.cpp | 17 + .../ucrt/initializers/i386/sse2_initializer.cpp | 27 + sdk/lib/ucrt/initializers/locale_initializer.cpp | 17 + .../ucrt/initializers/multibyte_initializer.cpp | 20 + sdk/lib/ucrt/initializers/stdio_initializer.cpp | 19 + sdk/lib/ucrt/initializers/timeset_initializer.cpp | 17 + sdk/lib/ucrt/initializers/tmpfile_initializer.cpp | 17 + sdk/lib/ucrt/internal/CreateProcessA.cpp | 79 + sdk/lib/ucrt/internal/GetModuleFileNameA.cpp | 40 + sdk/lib/ucrt/internal/LoadLibraryExA.cpp | 34 + sdk/lib/ucrt/internal/OutputDebugStringA.cpp | 31 + sdk/lib/ucrt/internal/SetCurrentDirectoryA.cpp | 28 + sdk/lib/ucrt/internal/SetEnvironmentVariableA.cpp | 40 + sdk/lib/ucrt/internal/initialization.cpp | 345 +++ sdk/lib/ucrt/internal/locks.cpp | 71 + sdk/lib/ucrt/internal/peb_access.cpp | 22 + sdk/lib/ucrt/internal/per_thread_data.cpp | 345 +++ sdk/lib/ucrt/internal/report_runtime_error.cpp | 200 ++ sdk/lib/ucrt/internal/shared_initialization.cpp | 67 + sdk/lib/ucrt/internal/win_policies.cpp | 182 ++ sdk/lib/ucrt/internal/winapi_thunks.cpp | 936 +++++++ sdk/lib/ucrt/locale/CompareStringA.cpp | 232 ++ sdk/lib/ucrt/locale/CompareStringW.cpp | 67 + sdk/lib/ucrt/locale/GetLocaleInfoA.cpp | 165 ++ sdk/lib/ucrt/locale/GetStringTypeA.cpp | 100 + sdk/lib/ucrt/locale/LCMapStringA.cpp | 235 ++ sdk/lib/ucrt/locale/LCMapStringW.cpp | 74 + sdk/lib/ucrt/locale/ctype.cpp | 745 +++++ sdk/lib/ucrt/locale/get_qualified_locale.cpp | 851 ++++++ sdk/lib/ucrt/locale/getqloc_downlevel.cpp | 852 ++++++ sdk/lib/ucrt/locale/glstatus.cpp | 13 + sdk/lib/ucrt/locale/initctype.cpp | 339 +++ sdk/lib/ucrt/locale/initmon.cpp | 312 +++ sdk/lib/ucrt/locale/initnum.cpp | 235 ++ sdk/lib/ucrt/locale/inittime.cpp | 177 ++ sdk/lib/ucrt/locale/lcidtoname_downlevel.cpp | 604 ++++ .../locale/lconv_unsigned_char_initialization.cpp | 52 + sdk/lib/ucrt/locale/locale_refcounting.cpp | 353 +++ sdk/lib/ucrt/locale/locale_update.cpp | 55 + sdk/lib/ucrt/locale/localeconv.cpp | 86 + sdk/lib/ucrt/locale/nlsdata.cpp | 140 + sdk/lib/ucrt/locale/setlocale.cpp | 118 + sdk/lib/ucrt/locale/wsetlocale.cpp | 1430 ++++++++++ sdk/lib/ucrt/lowio/chsize.cpp | 148 + sdk/lib/ucrt/lowio/close.cpp | 101 + sdk/lib/ucrt/lowio/commit.cpp | 36 + sdk/lib/ucrt/lowio/creat.cpp | 41 + sdk/lib/ucrt/lowio/dup.cpp | 95 + sdk/lib/ucrt/lowio/dup2.cpp | 120 + sdk/lib/ucrt/lowio/eof.cpp | 50 + sdk/lib/ucrt/lowio/filelength.cpp | 62 + sdk/lib/ucrt/lowio/ioinit.cpp | 265 ++ sdk/lib/ucrt/lowio/isatty.cpp | 20 + sdk/lib/ucrt/lowio/locking.cpp | 120 + sdk/lib/ucrt/lowio/lseek.cpp | 171 ++ sdk/lib/ucrt/lowio/mktemp.cpp | 168 ++ sdk/lib/ucrt/lowio/open.cpp | 907 ++++++ sdk/lib/ucrt/lowio/osfinfo.cpp | 348 +++ sdk/lib/ucrt/lowio/read.cpp | 635 +++++ sdk/lib/ucrt/lowio/setmode.cpp | 121 + sdk/lib/ucrt/lowio/tell.cpp | 18 + sdk/lib/ucrt/lowio/telli64.cpp | 18 + sdk/lib/ucrt/lowio/txtmode.cpp | 47 + sdk/lib/ucrt/lowio/umask.cpp | 66 + sdk/lib/ucrt/lowio/write.cpp | 754 +++++ sdk/lib/ucrt/mbstring/ismbalnm.cpp | 54 + sdk/lib/ucrt/mbstring/ismbalph.cpp | 54 + sdk/lib/ucrt/mbstring/ismbbyte.cpp | 233 ++ sdk/lib/ucrt/mbstring/ismbdgt.cpp | 54 + sdk/lib/ucrt/mbstring/ismbgrph.cpp | 54 + sdk/lib/ucrt/mbstring/ismbknj.cpp | 118 + sdk/lib/ucrt/mbstring/ismblgl.cpp | 49 + sdk/lib/ucrt/mbstring/ismblwr.cpp | 54 + sdk/lib/ucrt/mbstring/ismbprn.cpp | 53 + sdk/lib/ucrt/mbstring/ismbpunc.cpp | 92 + sdk/lib/ucrt/mbstring/ismbsle.cpp | 76 + sdk/lib/ucrt/mbstring/ismbspc.cpp | 53 + sdk/lib/ucrt/mbstring/ismbupr.cpp | 52 + sdk/lib/ucrt/mbstring/mbbtype.cpp | 81 + sdk/lib/ucrt/mbstring/mbccpy.cpp | 48 + sdk/lib/ucrt/mbstring/mbccpy_s.cpp | 14 + sdk/lib/ucrt/mbstring/mbccpy_s_l.cpp | 58 + sdk/lib/ucrt/mbstring/mbclen.cpp | 49 + sdk/lib/ucrt/mbstring/mbclevel.cpp | 127 + sdk/lib/ucrt/mbstring/mbctype.cpp | 1105 ++++++++ sdk/lib/ucrt/mbstring/mbsbtype.cpp | 82 + sdk/lib/ucrt/mbstring/mbscat_s.cpp | 16 + sdk/lib/ucrt/mbstring/mbscat_s_l.cpp | 122 + sdk/lib/ucrt/mbstring/mbschr.cpp | 84 + sdk/lib/ucrt/mbstring/mbscmp.cpp | 87 + sdk/lib/ucrt/mbstring/mbscoll.cpp | 81 + sdk/lib/ucrt/mbstring/mbscpy_s.cpp | 16 + sdk/lib/ucrt/mbstring/mbscpy_s_l.cpp | 76 + sdk/lib/ucrt/mbstring/mbscspn.cpp | 143 + sdk/lib/ucrt/mbstring/mbsdec.cpp | 109 + sdk/lib/ucrt/mbstring/mbsicmp.cpp | 142 + sdk/lib/ucrt/mbstring/mbsicoll.cpp | 79 + sdk/lib/ucrt/mbstring/mbsinc.cpp | 76 + sdk/lib/ucrt/mbstring/mbslen.cpp | 61 + sdk/lib/ucrt/mbstring/mbslen_s.cpp | 84 + sdk/lib/ucrt/mbstring/mbslwr.cpp | 136 + sdk/lib/ucrt/mbstring/mbsnbcat.cpp | 116 + sdk/lib/ucrt/mbstring/mbsnbcat_s.cpp | 16 + sdk/lib/ucrt/mbstring/mbsnbcat_s_l.cpp | 21 + sdk/lib/ucrt/mbstring/mbsnbcmp.cpp | 107 + sdk/lib/ucrt/mbstring/mbsnbcnt.cpp | 71 + sdk/lib/ucrt/mbstring/mbsnbcol.cpp | 86 + sdk/lib/ucrt/mbstring/mbsnbcpy.cpp | 103 + sdk/lib/ucrt/mbstring/mbsnbcpy_s.cpp | 16 + sdk/lib/ucrt/mbstring/mbsnbcpy_s_l.cpp | 21 + sdk/lib/ucrt/mbstring/mbsnbicm.cpp | 133 + sdk/lib/ucrt/mbstring/mbsnbico.cpp | 82 + sdk/lib/ucrt/mbstring/mbsnbset.cpp | 136 + sdk/lib/ucrt/mbstring/mbsnbset_s.cpp | 17 + sdk/lib/ucrt/mbstring/mbsnbset_s_l.cpp | 21 + sdk/lib/ucrt/mbstring/mbsncat.cpp | 110 + sdk/lib/ucrt/mbstring/mbsncat_s.cpp | 16 + sdk/lib/ucrt/mbstring/mbsncat_s.inl | 203 ++ sdk/lib/ucrt/mbstring/mbsncat_s_l.cpp | 21 + sdk/lib/ucrt/mbstring/mbsnccnt.cpp | 67 + sdk/lib/ucrt/mbstring/mbsncmp.cpp | 92 + sdk/lib/ucrt/mbstring/mbsncoll.cpp | 91 + sdk/lib/ucrt/mbstring/mbsncpy.cpp | 96 + sdk/lib/ucrt/mbstring/mbsncpy_s.cpp | 16 + sdk/lib/ucrt/mbstring/mbsncpy_s.inl | 208 ++ sdk/lib/ucrt/mbstring/mbsncpy_s_l.cpp | 21 + sdk/lib/ucrt/mbstring/mbsnextc.cpp | 64 + sdk/lib/ucrt/mbstring/mbsnicmp.cpp | 115 + sdk/lib/ucrt/mbstring/mbsnicol.cpp | 93 + sdk/lib/ucrt/mbstring/mbsninc.cpp | 56 + sdk/lib/ucrt/mbstring/mbsnset.cpp | 143 + sdk/lib/ucrt/mbstring/mbsnset_s.cpp | 17 + sdk/lib/ucrt/mbstring/mbsnset_s.inl | 132 + sdk/lib/ucrt/mbstring/mbsnset_s_l.cpp | 21 + sdk/lib/ucrt/mbstring/mbspbrk.cpp | 16 + sdk/lib/ucrt/mbstring/mbsrchr.cpp | 83 + sdk/lib/ucrt/mbstring/mbsrev.cpp | 108 + sdk/lib/ucrt/mbstring/mbsset.cpp | 110 + sdk/lib/ucrt/mbstring/mbsset_s.cpp | 16 + sdk/lib/ucrt/mbstring/mbsset_s_l.cpp | 89 + sdk/lib/ucrt/mbstring/mbsspn.cpp | 130 + sdk/lib/ucrt/mbstring/mbsspnp.cpp | 16 + sdk/lib/ucrt/mbstring/mbsstr.cpp | 101 + sdk/lib/ucrt/mbstring/mbstok.cpp | 69 + sdk/lib/ucrt/mbstring/mbstok_s.cpp | 147 + sdk/lib/ucrt/mbstring/mbsupr.cpp | 133 + sdk/lib/ucrt/mbstring/mbtohira.cpp | 51 + sdk/lib/ucrt/mbstring/mbtokata.cpp | 52 + sdk/lib/ucrt/mbstring/mbtolwr.cpp | 85 + sdk/lib/ucrt/mbstring/mbtoupr.cpp | 84 + sdk/lib/ucrt/mbstring/tojisjms.cpp | 138 + sdk/lib/ucrt/mbstring/tombbmbc.cpp | 329 +++ sdk/lib/ucrt/misc/_strerr.cpp | 203 ++ sdk/lib/ucrt/misc/chdir.cpp | 109 + sdk/lib/ucrt/misc/crtmbox.cpp | 94 + sdk/lib/ucrt/misc/dbgrpt.cpp | 467 ++++ sdk/lib/ucrt/misc/dbgrptt.cpp | 688 +++++ sdk/lib/ucrt/misc/debug_fill_threshold.cpp | 29 + sdk/lib/ucrt/misc/drive.cpp | 77 + sdk/lib/ucrt/misc/drivemap.cpp | 31 + sdk/lib/ucrt/misc/drivfree.cpp | 55 + sdk/lib/ucrt/misc/errno.cpp | 200 ++ sdk/lib/ucrt/misc/exception_filter.cpp | 222 ++ sdk/lib/ucrt/misc/getcwd.cpp | 265 ++ sdk/lib/ucrt/misc/getpid.cpp | 16 + sdk/lib/ucrt/misc/invalid_parameter.cpp | 309 +++ sdk/lib/ucrt/misc/is_wctype.cpp | 39 + sdk/lib/ucrt/misc/perror.cpp | 71 + sdk/lib/ucrt/misc/resetstk.cpp | 111 + sdk/lib/ucrt/misc/set_error_mode.cpp | 78 + sdk/lib/ucrt/misc/seterrm.cpp | 39 + sdk/lib/ucrt/misc/signal.cpp | 579 ++++ sdk/lib/ucrt/misc/slbeep.cpp | 60 + sdk/lib/ucrt/misc/strerror.cpp | 146 + sdk/lib/ucrt/misc/syserr.cpp | 150 + sdk/lib/ucrt/misc/systime.cpp | 63 + sdk/lib/ucrt/misc/terminate.cpp | 59 + sdk/lib/ucrt/misc/wperror.cpp | 66 + sdk/lib/ucrt/startup/abort.cpp | 114 + sdk/lib/ucrt/startup/argv_data.cpp | 75 + sdk/lib/ucrt/startup/argv_parsing.cpp | 404 +++ sdk/lib/ucrt/startup/argv_wildcards.cpp | 391 +++ sdk/lib/ucrt/startup/argv_winmain.cpp | 111 + sdk/lib/ucrt/startup/assert.cpp | 444 +++ sdk/lib/ucrt/startup/exit.cpp | 313 +++ sdk/lib/ucrt/startup/initterm.cpp | 46 + sdk/lib/ucrt/startup/onexit.cpp | 231 ++ sdk/lib/ucrt/startup/thread.cpp | 278 ++ sdk/lib/ucrt/stdio/_filbuf.cpp | 188 ++ sdk/lib/ucrt/stdio/_file.cpp | 179 ++ sdk/lib/ucrt/stdio/_flsbuf.cpp | 213 ++ sdk/lib/ucrt/stdio/_freebuf.cpp | 33 + sdk/lib/ucrt/stdio/_getbuf.cpp | 43 + sdk/lib/ucrt/stdio/_sftbuf.cpp | 146 + sdk/lib/ucrt/stdio/clearerr.cpp | 37 + sdk/lib/ucrt/stdio/closeall.cpp | 44 + sdk/lib/ucrt/stdio/fclose.cpp | 86 + sdk/lib/ucrt/stdio/fdopen.cpp | 70 + sdk/lib/ucrt/stdio/feoferr.cpp | 29 + sdk/lib/ucrt/stdio/fflush.cpp | 264 ++ sdk/lib/ucrt/stdio/fgetc.cpp | 81 + sdk/lib/ucrt/stdio/fgetpos.cpp | 26 + sdk/lib/ucrt/stdio/fgets.cpp | 100 + sdk/lib/ucrt/stdio/fgetwc.cpp | 136 + sdk/lib/ucrt/stdio/fileno.cpp | 19 + sdk/lib/ucrt/stdio/fopen.cpp | 139 + sdk/lib/ucrt/stdio/fputc.cpp | 97 + sdk/lib/ucrt/stdio/fputs.cpp | 42 + sdk/lib/ucrt/stdio/fputwc.cpp | 145 + sdk/lib/ucrt/stdio/fputws.cpp | 43 + sdk/lib/ucrt/stdio/fread.cpp | 254 ++ sdk/lib/ucrt/stdio/freopen.cpp | 128 + sdk/lib/ucrt/stdio/fseek.cpp | 247 ++ sdk/lib/ucrt/stdio/fsetpos.cpp | 22 + sdk/lib/ucrt/stdio/ftell.cpp | 399 +++ sdk/lib/ucrt/stdio/fwrite.cpp | 196 ++ sdk/lib/ucrt/stdio/gets.cpp | 148 + sdk/lib/ucrt/stdio/gettemppath.cpp | 39 + sdk/lib/ucrt/stdio/getw.cpp | 48 + sdk/lib/ucrt/stdio/input.cpp | 135 + sdk/lib/ucrt/stdio/ncommode.cpp | 20 + sdk/lib/ucrt/stdio/openfile.cpp | 77 + sdk/lib/ucrt/stdio/output.cpp | 445 +++ sdk/lib/ucrt/stdio/printf_count_output.cpp | 35 + sdk/lib/ucrt/stdio/puts.cpp | 45 + sdk/lib/ucrt/stdio/putw.cpp | 43 + sdk/lib/ucrt/stdio/putws.cpp | 48 + sdk/lib/ucrt/stdio/rewind.cpp | 60 + sdk/lib/ucrt/stdio/rmtmp.cpp | 75 + sdk/lib/ucrt/stdio/setbuf.cpp | 28 + sdk/lib/ucrt/stdio/setmaxf.cpp | 71 + sdk/lib/ucrt/stdio/setvbuf.cpp | 118 + sdk/lib/ucrt/stdio/stream.cpp | 106 + sdk/lib/ucrt/stdio/tempnam.cpp | 294 ++ sdk/lib/ucrt/stdio/tmpfile.cpp | 509 ++++ sdk/lib/ucrt/stdio/ungetc.cpp | 92 + sdk/lib/ucrt/stdio/ungetwc.cpp | 181 ++ sdk/lib/ucrt/stdlib/abs.cpp | 24 + sdk/lib/ucrt/stdlib/bsearch.cpp | 126 + sdk/lib/ucrt/stdlib/bsearch_s.cpp | 13 + sdk/lib/ucrt/stdlib/byteswap.cpp | 62 + sdk/lib/ucrt/stdlib/div.cpp | 23 + sdk/lib/ucrt/stdlib/imaxabs.cpp | 22 + sdk/lib/ucrt/stdlib/imaxdiv.cpp | 40 + sdk/lib/ucrt/stdlib/labs.cpp | 25 + sdk/lib/ucrt/stdlib/ldiv.cpp | 23 + sdk/lib/ucrt/stdlib/lfind.cpp | 80 + sdk/lib/ucrt/stdlib/lfind_s.cpp | 13 + sdk/lib/ucrt/stdlib/llabs.cpp | 19 + sdk/lib/ucrt/stdlib/lldiv.cpp | 23 + sdk/lib/ucrt/stdlib/lsearch.cpp | 91 + sdk/lib/ucrt/stdlib/lsearch_s.cpp | 14 + sdk/lib/ucrt/stdlib/qsort.cpp | 396 +++ sdk/lib/ucrt/stdlib/qsort_s.cpp | 13 + sdk/lib/ucrt/stdlib/rand.cpp | 28 + sdk/lib/ucrt/stdlib/rand_s.cpp | 25 + sdk/lib/ucrt/stdlib/rotl.cpp | 45 + sdk/lib/ucrt/stdlib/rotr.cpp | 45 + sdk/lib/ucrt/string/amd64/strcat.asm | 224 ++ sdk/lib/ucrt/string/amd64/strcmp.asm | 130 + sdk/lib/ucrt/string/amd64/strcspn.c | 13 + sdk/lib/ucrt/string/amd64/strlen.asm | 130 + sdk/lib/ucrt/string/amd64/strncat.asm | 227 ++ sdk/lib/ucrt/string/amd64/strncmp.asm | 125 + sdk/lib/ucrt/string/amd64/strncpy.asm | 169 ++ sdk/lib/ucrt/string/amd64/strpbrk.c | 13 + sdk/lib/ucrt/string/amd64/strspn.c | 502 ++++ sdk/lib/ucrt/string/arm/strlen.c | 42 + sdk/lib/ucrt/string/arm64/strlen.asm | 272 ++ sdk/lib/ucrt/string/arm64/wcslen.asm | 297 ++ sdk/lib/ucrt/string/i386/_memicmp.asm | 130 + sdk/lib/ucrt/string/i386/_strnicm.asm | 143 + sdk/lib/ucrt/string/i386/memccpy.asm | 135 + sdk/lib/ucrt/string/i386/strcat.asm | 231 ++ sdk/lib/ucrt/string/i386/strcmp.asm | 154 ++ sdk/lib/ucrt/string/i386/strcspn.asm | 16 + sdk/lib/ucrt/string/i386/strlen.asm | 125 + sdk/lib/ucrt/string/i386/strncat.asm | 252 ++ sdk/lib/ucrt/string/i386/strncmp.asm | 173 ++ sdk/lib/ucrt/string/i386/strncpy.asm | 239 ++ sdk/lib/ucrt/string/i386/strnset.asm | 89 + sdk/lib/ucrt/string/i386/strpbrk.asm | 16 + sdk/lib/ucrt/string/i386/strrev.asm | 105 + sdk/lib/ucrt/string/i386/strset.asm | 78 + sdk/lib/ucrt/string/i386/strspn.asm | 262 ++ sdk/lib/ucrt/string/memccpy.c | 48 + sdk/lib/ucrt/string/memcpy_s.cpp | 10 + sdk/lib/ucrt/string/memicmp.cpp | 120 + sdk/lib/ucrt/string/strcat.c | 80 + sdk/lib/ucrt/string/strcat_s.cpp | 21 + sdk/lib/ucrt/string/strcmp.c | 52 + sdk/lib/ucrt/string/strcoll.cpp | 78 + sdk/lib/ucrt/string/strcpy_s.cpp | 20 + sdk/lib/ucrt/string/strcspn.c | 12 + sdk/lib/ucrt/string/strdup.cpp | 61 + sdk/lib/ucrt/string/stricmp.cpp | 105 + sdk/lib/ucrt/string/stricoll.cpp | 86 + sdk/lib/ucrt/string/strlwr.cpp | 206 ++ sdk/lib/ucrt/string/strncat.c | 56 + sdk/lib/ucrt/string/strncat_s.cpp | 22 + sdk/lib/ucrt/string/strncmp.c | 101 + sdk/lib/ucrt/string/strncnt.cpp | 24 + sdk/lib/ucrt/string/strncoll.cpp | 98 + sdk/lib/ucrt/string/strncpy.c | 56 + sdk/lib/ucrt/string/strncpy_s.cpp | 22 + sdk/lib/ucrt/string/strnicmp.cpp | 129 + sdk/lib/ucrt/string/strnicol.cpp | 93 + sdk/lib/ucrt/string/strnlen.cpp | 223 ++ sdk/lib/ucrt/string/strnset.c | 46 + sdk/lib/ucrt/string/strnset_s.cpp | 23 + sdk/lib/ucrt/string/strpbrk.c | 12 + sdk/lib/ucrt/string/strrev.c | 51 + sdk/lib/ucrt/string/strset.c | 50 + sdk/lib/ucrt/string/strset_s.cpp | 21 + sdk/lib/ucrt/string/strspn.c | 170 ++ sdk/lib/ucrt/string/strtok.cpp | 33 + sdk/lib/ucrt/string/strtok_s.cpp | 83 + sdk/lib/ucrt/string/strupr.cpp | 206 ++ sdk/lib/ucrt/string/strxfrm.cpp | 147 + sdk/lib/ucrt/string/wcscat.cpp | 38 + sdk/lib/ucrt/string/wcscat_s.cpp | 21 + sdk/lib/ucrt/string/wcscmp.cpp | 40 + sdk/lib/ucrt/string/wcscoll.cpp | 88 + sdk/lib/ucrt/string/wcscpy.cpp | 27 + sdk/lib/ucrt/string/wcscpy_s.cpp | 18 + sdk/lib/ucrt/string/wcscspn.cpp | 36 + sdk/lib/ucrt/string/wcsdup.cpp | 60 + sdk/lib/ucrt/string/wcsicmp.cpp | 112 + sdk/lib/ucrt/string/wcsicoll.cpp | 93 + sdk/lib/ucrt/string/wcslwr.cpp | 192 ++ sdk/lib/ucrt/string/wcsncat.cpp | 39 + sdk/lib/ucrt/string/wcsncat_s.cpp | 20 + sdk/lib/ucrt/string/wcsncmp.cpp | 44 + sdk/lib/ucrt/string/wcsncnt.cpp | 24 + sdk/lib/ucrt/string/wcsncoll.cpp | 104 + sdk/lib/ucrt/string/wcsncpy.cpp | 45 + sdk/lib/ucrt/string/wcsncpy_s.cpp | 20 + sdk/lib/ucrt/string/wcsnicmp.cpp | 132 + sdk/lib/ucrt/string/wcsnicol.cpp | 103 + sdk/lib/ucrt/string/wcsnset.cpp | 26 + sdk/lib/ucrt/string/wcsnset_s.cpp | 21 + sdk/lib/ucrt/string/wcspbrk.cpp | 30 + sdk/lib/ucrt/string/wcsrev.cpp | 30 + sdk/lib/ucrt/string/wcsset.cpp | 29 + sdk/lib/ucrt/string/wcsset_s.cpp | 19 + sdk/lib/ucrt/string/wcsspn.cpp | 36 + sdk/lib/ucrt/string/wcstok.cpp | 34 + sdk/lib/ucrt/string/wcstok_s.cpp | 83 + sdk/lib/ucrt/string/wcsupr.cpp | 189 ++ sdk/lib/ucrt/string/wcsxfrm.cpp | 135 + sdk/lib/ucrt/string/wmemcpy_s.cpp | 45 + sdk/lib/ucrt/string/wmemmove_s.cpp | 35 + sdk/lib/ucrt/time/asctime.cpp | 197 ++ sdk/lib/ucrt/time/clock.cpp | 95 + sdk/lib/ucrt/time/ctime.cpp | 124 + sdk/lib/ucrt/time/days.cpp | 26 + sdk/lib/ucrt/time/difftime.cpp | 32 + sdk/lib/ucrt/time/ftime.cpp | 105 + sdk/lib/ucrt/time/gmtime.cpp | 204 ++ sdk/lib/ucrt/time/localtime.cpp | 211 ++ sdk/lib/ucrt/time/loctotime.cpp | 117 + sdk/lib/ucrt/time/mktime.cpp | 201 ++ sdk/lib/ucrt/time/strdate.cpp | 84 + sdk/lib/ucrt/time/strftime.cpp | 199 ++ sdk/lib/ucrt/time/strtime.cpp | 88 + sdk/lib/ucrt/time/time.cpp | 102 + sdk/lib/ucrt/time/timeset.cpp | 188 ++ sdk/lib/ucrt/time/tzset.cpp | 712 +++++ sdk/lib/ucrt/time/utime.cpp | 157 ++ sdk/lib/ucrt/time/wcsftime.cpp | 1207 ++++++++ 568 files changed, 115483 insertions(+) diff --git a/sdk/include/ucrt/assert.h b/sdk/include/ucrt/assert.h new file mode 100644 index 00000000000..be5dbfca7f8 --- /dev/null +++ b/sdk/include/ucrt/assert.h @@ -0,0 +1,50 @@ +// +// assert.h +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Defines the assert macro and related functionality. +// +#if defined _VCRT_BUILD && !defined _ASSERT_OK + #error assert.h not for CRT internal use +#endif + +#include <corecrt.h> + +#pragma warning(push) +#pragma warning(disable: _UCRT_DISABLED_WARNINGS) +_UCRT_DISABLE_CLANG_WARNINGS +_CRT_BEGIN_C_HEADER + +#if _CRT_HAS_C11 + +#define static_assert _Static_assert + +#endif // _CRT_HAS_C11 + +#undef assert + +#ifdef NDEBUG + + #define assert(expression) ((void)0) + +#else + + _ACRTIMP void __cdecl _wassert( + _In_z_ wchar_t const* _Message, + _In_z_ wchar_t const* _File, + _In_ unsigned _Line + ); + + #define assert(expression) (void)( \ + (!!(expression)) || \ + (_wassert(_CRT_WIDE(#expression), _CRT_WIDE(__FILE__), (unsigned)(__LINE__)), 0) \ + ) + +#endif + + + +_CRT_END_C_HEADER +_UCRT_RESTORE_CLANG_WARNINGS +#pragma warning(pop) // _UCRT_DISABLED_WARNINGS diff --git a/sdk/include/ucrt/complex.h b/sdk/include/ucrt/complex.h new file mode 100644 index 00000000000..72ee07b1c42 --- /dev/null +++ b/sdk/include/ucrt/complex.h @@ -0,0 +1,580 @@ +// +// complex.h +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// The complex math library. +// +#pragma once +#ifndef _COMPLEX +#define _COMPLEX + +#include <corecrt.h> + +#if (_CRT_HAS_CXX17 == 1) && !defined(_CRT_USE_C_COMPLEX_H) +#include <ccomplex> +#else // ^^^^ /std:c++17 ^^^^ // vvvv _CRT_USE_C_COMPLEX_H vvvv + +#pragma warning(push) +#pragma warning(disable: _UCRT_DISABLED_WARNINGS) +_UCRT_DISABLE_CLANG_WARNINGS + +_CRT_BEGIN_C_HEADER + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Types +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#ifndef _C_COMPLEX_T + #define _C_COMPLEX_T + typedef struct _C_double_complex + { + double _Val[2]; + } _C_double_complex; + + typedef struct _C_float_complex + { + float _Val[2]; + } _C_float_complex; + + typedef struct _C_ldouble_complex + { + long double _Val[2]; + } _C_ldouble_complex; +#endif + +typedef _C_double_complex _Dcomplex; +typedef _C_float_complex _Fcomplex; +typedef _C_ldouble_complex _Lcomplex; + + + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Macros +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#define _DCOMPLEX_(re, im) _Cbuild(re, im) +#define _FCOMPLEX_(re, im) _FCbuild(re, im) +#define _LCOMPLEX_(re, im) _LCbuild(re, im) + +#define _Complex_I _FCbuild(0.0F, 1.0F) +#define I _Complex_I + + + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Functions +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +_ACRTIMP double __cdecl cabs(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl cacos(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl cacosh(_In_ _Dcomplex _Z); +_ACRTIMP double __cdecl carg(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl casin(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl casinh(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl catan(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl catanh(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl ccos(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl ccosh(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl cexp(_In_ _Dcomplex _Z); +_ACRTIMP double __cdecl cimag(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl clog(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl clog10(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl conj(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl cpow(_In_ _Dcomplex _X, _In_ _Dcomplex _Y); +_ACRTIMP _Dcomplex __cdecl cproj(_In_ _Dcomplex _Z); +_ACRTIMP double __cdecl creal(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl csin(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl csinh(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl csqrt(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl ctan(_In_ _Dcomplex _Z); +_ACRTIMP _Dcomplex __cdecl ctanh(_In_ _Dcomplex _Z); +_ACRTIMP double __cdecl norm(_In_ _Dcomplex _Z); + +_ACRTIMP float __cdecl cabsf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl cacosf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl cacoshf(_In_ _Fcomplex _Z); +_ACRTIMP float __cdecl cargf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl casinf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl casinhf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl catanf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl catanhf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl ccosf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl ccoshf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl cexpf(_In_ _Fcomplex _Z); +_ACRTIMP float __cdecl cimagf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl clogf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl clog10f(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl conjf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl cpowf(_In_ _Fcomplex _X, _In_ _Fcomplex _Y); +_ACRTIMP _Fcomplex __cdecl cprojf(_In_ _Fcomplex _Z); +_ACRTIMP float __cdecl crealf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl csinf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl csinhf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl csqrtf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl ctanf(_In_ _Fcomplex _Z); +_ACRTIMP _Fcomplex __cdecl ctanhf(_In_ _Fcomplex _Z); +_ACRTIMP float __cdecl normf(_In_ _Fcomplex _Z); + +_ACRTIMP long double __cdecl cabsl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl cacosl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl cacoshl(_In_ _Lcomplex _Z); +_ACRTIMP long double __cdecl cargl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl casinl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl casinhl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl catanl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl catanhl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl ccosl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl ccoshl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl cexpl(_In_ _Lcomplex _Z); +_ACRTIMP long double __cdecl cimagl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl clogl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl clog10l(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl conjl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl cpowl(_In_ _Lcomplex _X, _In_ _Lcomplex _Y); +_ACRTIMP _Lcomplex __cdecl cprojl(_In_ _Lcomplex _Z); +_ACRTIMP long double __cdecl creall(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl csinl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl csinhl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl csqrtl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl ctanl(_In_ _Lcomplex _Z); +_ACRTIMP _Lcomplex __cdecl ctanhl(_In_ _Lcomplex _Z); +_ACRTIMP long double __cdecl norml(_In_ _Lcomplex _Z); + +_ACRTIMP _Dcomplex __cdecl _Cbuild(_In_ double _Re, _In_ double _Im); +_ACRTIMP _Dcomplex __cdecl _Cmulcc(_In_ _Dcomplex _X, _In_ _Dcomplex _Y); +_ACRTIMP _Dcomplex __cdecl _Cmulcr(_In_ _Dcomplex _X, _In_ double _Y); + +_ACRTIMP _Fcomplex __cdecl _FCbuild(_In_ float _Re, _In_ float _Im); +_ACRTIMP _Fcomplex __cdecl _FCmulcc(_In_ _Fcomplex _X, _In_ _Fcomplex _Y); +_ACRTIMP _Fcomplex __cdecl _FCmulcr(_In_ _Fcomplex _X, _In_ float _Y); + +_ACRTIMP _Lcomplex __cdecl _LCbuild(_In_ long double _Re, _In_ long double _Im); +_ACRTIMP _Lcomplex __cdecl _LCmulcc(_In_ _Lcomplex _X, _In_ _Lcomplex _Y); +_ACRTIMP _Lcomplex __cdecl _LCmulcr(_In_ _Lcomplex _X, _In_ long double _Y); + + + +#ifdef __cplusplus +extern "C++" +{ + //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // + // double complex overloads + // + //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + inline _Dcomplex __CRTDECL acos(_In_ _Dcomplex _X) throw() + { + return cacos(_X); + } + + inline _Dcomplex __CRTDECL acosh(_In_ _Dcomplex _X) throw() + { + return cacosh(_X); + } + + inline _Dcomplex __CRTDECL asin(_In_ _Dcomplex _X) throw() + { + return casin(_X); + } + + inline _Dcomplex __CRTDECL asinh(_In_ _Dcomplex _X) throw() + { + return casinh(_X); + } + + inline _Dcomplex __CRTDECL atan(_In_ _Dcomplex _X) throw() + { + return catan(_X); + } + + inline _Dcomplex __CRTDECL atanh(_In_ _Dcomplex _X) throw() + { + return catanh(_X); + } + + inline _Dcomplex __CRTDECL cos(_In_ _Dcomplex _X) throw() + { + return ccos(_X); + } + + inline _Dcomplex __CRTDECL cosh(_In_ _Dcomplex _X) throw() + { + return ccosh(_X); + } + + inline _Dcomplex __CRTDECL proj(_In_ _Dcomplex _X) throw() + { + return cproj(_X); + } + + inline _Dcomplex __CRTDECL exp(_In_ _Dcomplex _X) throw() + { + return cexp(_X); + } + + inline _Dcomplex __CRTDECL log(_In_ _Dcomplex _X) throw() + { + return clog(_X); + } + + inline _Dcomplex __CRTDECL log10(_In_ _Dcomplex _X) throw() + { + return clog10(_X); + } + + inline _Dcomplex __CRTDECL pow(_In_ _Dcomplex _X, _In_ _Dcomplex _Y) throw() + { + return cpow(_X, _Y); + } + + inline _Dcomplex __CRTDECL sin(_In_ _Dcomplex _X) throw() + { + return csin(_X); + } + + inline _Dcomplex __CRTDECL sinh(_In_ _Dcomplex _X) throw() + { + return csinh(_X); + } + + inline _Dcomplex __CRTDECL sqrt(_In_ _Dcomplex _X) throw() + { + return csqrt(_X); + } + + inline _Dcomplex __CRTDECL tan(_In_ _Dcomplex _X) throw() + { + return ctan(_X); + } + + inline _Dcomplex __CRTDECL tanh(_In_ _Dcomplex _X) throw() + { + return ctanh(_X); + } + + inline double __CRTDECL abs(_In_ _Dcomplex _X) throw() + { + return cabs(_X); + } + + inline double __CRTDECL arg(_In_ _Dcomplex _X) throw() + { + return carg(_X); + } + + inline double __CRTDECL imag(_In_ _Dcomplex _X) throw() + { + return cimag(_X); + } + + inline double __CRTDECL real(_In_ _Dcomplex _X) throw() + { + return creal(_X); + } + + + + //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // + // float complex overloads + // + //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + inline _Fcomplex __CRTDECL acos(_In_ _Fcomplex _X) throw() + { + return cacosf(_X); + } + + inline _Fcomplex __CRTDECL acosh(_In_ _Fcomplex _X) throw() + { + return cacoshf(_X); + } + + inline _Fcomplex __CRTDECL asin(_In_ _Fcomplex _X) throw() + { + return casinf(_X); + } + + inline _Fcomplex __CRTDECL asinh(_In_ _Fcomplex _X) throw() + { + return casinhf(_X); + } + + inline _Fcomplex __CRTDECL atan(_In_ _Fcomplex _X) throw() + { + return catanf(_X); + } + + inline _Fcomplex __CRTDECL atanh(_In_ _Fcomplex _X) throw() + { + return catanhf(_X); + } + + inline _Fcomplex __CRTDECL conj(_In_ _Fcomplex _X) throw() + { + return conjf(_X); + } + + inline _Fcomplex __CRTDECL cos(_In_ _Fcomplex _X) throw() + { + return ccosf(_X); + } + + inline _Fcomplex __CRTDECL cosh(_In_ _Fcomplex _X) throw() + { + return ccoshf(_X); + } + + inline _Fcomplex __CRTDECL cproj(_In_ _Fcomplex _X) throw() + { + return cprojf(_X); + } + + inline _Fcomplex __CRTDECL proj(_In_ _Fcomplex _X) throw() + { + return cprojf(_X); + } + + inline _Fcomplex __CRTDECL exp(_In_ _Fcomplex _X) throw() + { + return cexpf(_X); + } + + inline _Fcomplex __CRTDECL log(_In_ _Fcomplex _X) throw() + { + return clogf(_X); + } + + inline _Fcomplex __CRTDECL log10(_In_ _Fcomplex _X) throw() + { + return clog10f(_X); + } + + inline float __CRTDECL norm(_In_ _Fcomplex _X) throw() + { + return normf(_X); + } + + inline _Fcomplex __CRTDECL pow(_In_ _Fcomplex _X, _In_ _Fcomplex _Y) throw() + { + return cpowf(_X, _Y); + } + + inline _Fcomplex __CRTDECL sin(_In_ _Fcomplex _X) throw() + { + return csinf(_X); + } + + inline _Fcomplex __CRTDECL sinh(_In_ _Fcomplex _X) throw() + { + return csinhf(_X); + } + + inline _Fcomplex __CRTDECL sqrt(_In_ _Fcomplex _X) throw() + { + return csqrtf(_X); + } + + inline _Fcomplex __CRTDECL tan(_In_ _Fcomplex _X) throw() + { + return ctanf(_X); + } + + inline _Fcomplex __CRTDECL tanh(_In_ _Fcomplex _X) throw() + { + return ctanhf(_X); + } + + inline float __CRTDECL abs(_In_ _Fcomplex _X) throw() + { + return cabsf(_X); + } + + inline float __CRTDECL arg(_In_ _Fcomplex _X) throw() + { + return cargf(_X); + } + + inline float __CRTDECL carg(_In_ _Fcomplex _X) throw() + { + return cargf(_X); + } + + inline float __CRTDECL cimag(_In_ _Fcomplex _X) throw() + { + return cimagf(_X); + } + + inline float __CRTDECL creal(_In_ _Fcomplex _X) throw() + { + return crealf(_X); + } + + inline float __CRTDECL imag(_In_ _Fcomplex _X) throw() + { + return cimagf(_X); + } + + inline float __CRTDECL real(_In_ _Fcomplex _X) throw() + { + return crealf(_X); + } + + + + //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // + // long double complex overloads + // + //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + inline _Lcomplex __CRTDECL acos(_In_ _Lcomplex _X) throw() + { + return cacosl(_X); + } + + inline _Lcomplex __CRTDECL acosh(_In_ _Lcomplex _X) throw() + { + return cacoshl(_X); + } + + inline _Lcomplex __CRTDECL asin(_In_ _Lcomplex _X) throw() + { + return casinl(_X); + } + + inline _Lcomplex __CRTDECL asinh(_In_ _Lcomplex _X) throw() + { + return casinhl(_X); + } + + inline _Lcomplex __CRTDECL atan(_In_ _Lcomplex _X) throw() + { + return catanl(_X); + } + + inline _Lcomplex __CRTDECL atanh(_In_ _Lcomplex _X) throw() + { + return catanhl(_X); + } + + inline _Lcomplex __CRTDECL conj(_In_ _Lcomplex _X) throw() + { + return conjl(_X); + } + + inline _Lcomplex __CRTDECL cos(_In_ _Lcomplex _X) throw() + { + return ccosl(_X); + } + + inline _Lcomplex __CRTDECL cosh(_In_ _Lcomplex _X) throw() + { + return ccoshl(_X); + } + + inline _Lcomplex __CRTDECL cproj(_In_ _Lcomplex _X) throw() + { + return cprojl(_X); + } + + inline _Lcomplex __CRTDECL proj(_In_ _Lcomplex _X) throw() + { + return cprojl(_X); + } + + inline _Lcomplex __CRTDECL exp(_In_ _Lcomplex _X) throw() + { + return cexpl(_X); + } + + inline _Lcomplex __CRTDECL log(_In_ _Lcomplex _X) throw() + { + return clogl(_X); + } + + inline _Lcomplex __CRTDECL log10(_In_ _Lcomplex _X) throw() + { + return clog10l(_X); + } + + inline long double __CRTDECL norm(_In_ _Lcomplex _X) throw() + { + return norml(_X); + } + + inline _Lcomplex __CRTDECL pow(_In_ _Lcomplex _X, _In_ _Lcomplex _Y) throw() + { + return cpowl(_X, _Y); + } + + inline _Lcomplex __CRTDECL sin(_In_ _Lcomplex _X) throw() + { + return csinl(_X); + } + + inline _Lcomplex __CRTDECL sinh(_In_ _Lcomplex _X) throw() + { + return csinhl(_X); + } + + inline _Lcomplex __CRTDECL sqrt(_In_ _Lcomplex _X) throw() + { + return csqrtl(_X); + } + + inline _Lcomplex __CRTDECL tan(_In_ _Lcomplex _X) throw() + { + return ctanl(_X); + } + + inline _Lcomplex __CRTDECL tanh(_In_ _Lcomplex _X) throw() + { + return ctanhl(_X); + } + + inline long double __CRTDECL abs(_In_ _Lcomplex _X) throw() + { + return cabsl(_X); + } + + inline long double __CRTDECL arg(_In_ _Lcomplex _X) throw() + { + return cargl(_X); + } + + inline long double __CRTDECL carg(_In_ _Lcomplex _X) throw() + { + return cargl(_X); + } + + inline long double __CRTDECL cimag(_In_ _Lcomplex _X) throw() + { + return cimagl(_X); + } + + inline long double __CRTDECL creal(_In_ _Lcomplex _X) throw() + { + return creall(_X); + } + + inline long double __CRTDECL imag(_In_ _Lcomplex _X) throw() + { + return cimagl(_X); + } + + inline long double __CRTDECL real(_In_ _Lcomplex _X) throw() + { + return creall(_X); + } + +} // extern "C++" +#endif // __cplusplus + +_CRT_END_C_HEADER +_UCRT_RESTORE_CLANG_WARNINGS +#pragma warning(pop) // _UCRT_DISABLED_WARNINGS +#endif // (_CRT_HAS_CXX17 == 1) && !defined(_CRT_USE_C_COMPLEX_H) +#endif // _COMPLEX diff --git a/sdk/include/ucrt/conio.h b/sdk/include/ucrt/conio.h new file mode 100644 index 00000000000..a0f5e9c192c --- /dev/null +++ b/sdk/include/ucrt/conio.h @@ -0,0 +1,504 @@ +// +// conio.h +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// This file declares the direct console I/O functions. +// +#pragma once +#ifndef _INC_CONIO // include guard for 3rd party interop +#define _INC_CONIO + +#include <corecrt.h> +#include <corecrt_wconio.h> + +#pragma warning(push) +#pragma warning(disable: _UCRT_DISABLED_WARNINGS) +_UCRT_DISABLE_CLANG_WARNINGS + +_CRT_BEGIN_C_HEADER + + _Check_return_wat_ + _Success_(_BufferCount > 0) + _DCRTIMP errno_t __cdecl _cgets_s( + _Out_writes_z_(_BufferCount) char* _Buffer, + _In_ size_t _BufferCount, + _Out_ size_t* _SizeRead + ); + + __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1( + _Success_(return == 0) + errno_t, _cgets_s, + _Out_writes_z_(*_Buffer) char, _Buffer, + _Out_ size_t*, _SizeRead + ) + + _Check_return_opt_ + _DCRTIMP int __cdecl _cputs( + _In_z_ char const* _Buffer + ); + + //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // + // Narrow Character Formatted Output Functions (Console) + // + //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + _Check_return_opt_ + _DCRTIMP int __cdecl __conio_common_vcprintf( + _In_ unsigned __int64 _Options, + _In_z_ _Printf_format_string_params_(2) char const* _Format, + _In_opt_ _locale_t _Locale, + va_list _ArgList + ); + + _Check_return_opt_ + _DCRTIMP int __cdecl __conio_common_vcprintf_s( + _In_ unsigned __int64 _Options, + _In_z_ _Printf_format_string_params_(2) char const* _Format, + _In_opt_ _locale_t _Locale, + va_list _ArgList + ); + + _Check_return_opt_ + _DCRTIMP int __cdecl __conio_common_vcprintf_p( + _In_ unsigned __int64 _Options, + _In_z_ _Printf_format_string_params_(2) char const* _Format, + _In_opt_ _locale_t _Locale, + va_list _ArgList + ); + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _vcprintf_l( + _In_z_ _Printf_format_string_params_(2) char const* const _Format, + _In_opt_ _locale_t const _Locale, + va_list _ArgList + ) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + return __conio_common_vcprintf( + _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, + _Format, _Locale, _ArgList); + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _vcprintf( + _In_z_ _Printf_format_string_ char const* const _Format, + va_list _ArgList + ) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + return _vcprintf_l(_Format, NULL, _ArgList); + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _vcprintf_s_l( + _In_z_ _Printf_format_string_params_(2) char const* const _Format, + _In_opt_ _locale_t const _Locale, + va_list _ArgList + ) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + return __conio_common_vcprintf_s( + _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, + _Format, _Locale, _ArgList); + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _vcprintf_s( + _In_z_ _Printf_format_string_ char const* const _Format, + va_list _ArgList + ) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + return _vcprintf_s_l(_Format, NULL, _ArgList); + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _vcprintf_p_l( + _In_z_ _Printf_format_string_params_(2) char const* const _Format, + _In_opt_ _locale_t const _Locale, + va_list _ArgList + ) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + return __conio_common_vcprintf_p( + _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, + _Format, _Locale, _ArgList); + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _vcprintf_p( + _In_z_ char const* const _Format, + va_list _ArgList + ) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + return _vcprintf_p_l(_Format, NULL, _ArgList); + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _cprintf_l( + _In_z_ _Printf_format_string_params_(0) char const* const _Format, + _In_opt_ _locale_t const _Locale, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Locale); + _Result = _vcprintf_l(_Format, _Locale, _ArgList); + __crt_va_end(_ArgList); + return _Result; + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _cprintf( + _In_z_ _Printf_format_string_ char const* const _Format, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Format); + _Result = _vcprintf_l(_Format, NULL, _ArgList); + __crt_va_end(_ArgList); + return _Result; + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _cprintf_s_l( + _In_z_ _Printf_format_string_params_(0) char const* const _Format, + _In_opt_ _locale_t const _Locale, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Locale); + _Result = _vcprintf_s_l(_Format, _Locale, _ArgList); + __crt_va_end(_ArgList); + return _Result; + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _cprintf_s( + _In_z_ _Printf_format_string_ char const* const _Format, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Format); + _Result = _vcprintf_s_l(_Format, NULL, _ArgList); + __crt_va_end(_ArgList); + return _Result; + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _cprintf_p_l( + _In_z_ _Printf_format_string_params_(0) char const* const _Format, + _In_opt_ _locale_t const _Locale, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Locale); + _Result = _vcprintf_p_l(_Format, _Locale, _ArgList); + __crt_va_end(_ArgList); + return _Result; + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _cprintf_p( + _In_z_ _Printf_format_string_ char const* const _Format, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Format); + _Result = _vcprintf_p_l(_Format, NULL, _ArgList); + __crt_va_end(_ArgList); + return _Result; + } +#endif + + + //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // + // Narrow Character Formatted Input Functions (Console) + // + //-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + _Check_return_opt_ + _DCRTIMP int __cdecl __conio_common_vcscanf( + _In_ unsigned __int64 _Options, + _In_z_ _Scanf_format_string_params_(2) char const* _Format, + _In_opt_ _locale_t _Locale, + va_list _ArgList + ); + + _Check_return_opt_ _CRT_INSECURE_DEPRECATE(_vcscanf_s_l) + _CRT_STDIO_INLINE int __CRTDECL _vcscanf_l( + _In_z_ _Scanf_format_string_params_(2) char const* const _Format, + _In_opt_ _locale_t const _Locale, + va_list _ArgList + ) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + return __conio_common_vcscanf( + _CRT_INTERNAL_LOCAL_SCANF_OPTIONS, + _Format, _Locale, _ArgList); + } +#endif + + _Check_return_opt_ _CRT_INSECURE_DEPRECATE(_vcscanf_s) + _CRT_STDIO_INLINE int __CRTDECL _vcscanf( + _In_z_ _Scanf_format_string_params_(1) char const* const _Format, + va_list _ArgList + ) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + return _vcscanf_l(_Format, NULL, _ArgList); + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _vcscanf_s_l( + _In_z_ _Scanf_format_string_params_(2) char const* const _Format, + _In_opt_ _locale_t const _Locale, + va_list _ArgList + ) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + return __conio_common_vcscanf( + _CRT_INTERNAL_LOCAL_SCANF_OPTIONS | _CRT_INTERNAL_SCANF_SECURECRT, + _Format, _Locale, _ArgList); + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _vcscanf_s( + _In_z_ _Scanf_format_string_params_(1) char const* const _Format, + va_list _ArgList + ) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + return _vcscanf_s_l(_Format, NULL, _ArgList); + } +#endif + + _Check_return_opt_ _CRT_INSECURE_DEPRECATE(_cscanf_s_l) + _CRT_STDIO_INLINE int __CRTDECL _cscanf_l( + _In_z_ _Scanf_format_string_params_(0) char const* const _Format, + _In_opt_ _locale_t const _Locale, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Locale); + + _Result = _vcscanf_l(_Format, _Locale, _ArgList); + + __crt_va_end(_ArgList); + return _Result; + } +#endif + + _Check_return_opt_ _CRT_INSECURE_DEPRECATE(_cscanf_s) + _CRT_STDIO_INLINE int __CRTDECL _cscanf( + _In_z_ _Scanf_format_string_ char const* const _Format, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Format); + + _Result = _vcscanf_l(_Format, NULL, _ArgList); + + __crt_va_end(_ArgList); + return _Result; + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _cscanf_s_l( + _In_z_ _Scanf_format_string_params_(0) char const* const _Format, + _In_opt_ _locale_t const _Locale, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Locale); + _Result = _vcscanf_s_l(_Format, _Locale, _ArgList); + __crt_va_end(_ArgList); + return _Result; + } +#endif + + _Check_return_opt_ + _CRT_STDIO_INLINE int __CRTDECL _cscanf_s( + _In_z_ _Scanf_format_string_ char const* const _Format, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Format); + _Result = _vcscanf_s_l(_Format, NULL, _ArgList); + __crt_va_end(_ArgList); + return _Result; + } +#endif + + + _DCRTIMP int __cdecl _kbhit(void); + + _Check_return_ _DCRTIMP int __cdecl _getch(void); + _Check_return_ _DCRTIMP int __cdecl _getche(void); + _Check_return_opt_ _DCRTIMP int __cdecl _putch (_In_ int _Ch); + _Check_return_opt_ _DCRTIMP int __cdecl _ungetch(_In_ int _Ch); + + _Check_return_ _DCRTIMP int __cdecl _getch_nolock (void); + _Check_return_ _DCRTIMP int __cdecl _getche_nolock (void); + _Check_return_opt_ _DCRTIMP int __cdecl _putch_nolock (_In_ int _Ch); + _Check_return_opt_ _DCRTIMP int __cdecl _ungetch_nolock(_In_ int _Ch); + + #if defined(_CRT_INTERNAL_NONSTDC_NAMES) && _CRT_INTERNAL_NONSTDC_NAMES + + // Suppress double-deprecation warnings: + #pragma warning(push) + #pragma warning(disable: 4141) + + _Success_(return != 0) + _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_cgets) _CRT_INSECURE_DEPRECATE(_cgets_s) + _DCRTIMP char* __cdecl cgets( + _At_(&_Buffer[0], _In_reads_(1)) + _At_(&_Buffer[1], _Out_writes_(1)) + _At_(&_Buffer[2], _Post_z_ _Out_writes_to_(_Buffer[0], _Buffer[1])) + char* _Buffer + ); + + #pragma warning(pop) + + _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_cputs) + _DCRTIMP int __cdecl cputs( + _In_z_ char const* _String + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_getch) + _DCRTIMP int __cdecl getch(void); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_getche) + _DCRTIMP int __cdecl getche(void); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_kbhit) + _DCRTIMP int __cdecl kbhit(void); + + _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_putch) + _DCRTIMP int __cdecl putch( + _In_ int _Ch + ); + + _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_ungetch) + _DCRTIMP int __cdecl ungetch( + _In_ int _Ch + ); + + _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_cprintf) + _CRT_STDIO_INLINE int __CRTDECL cprintf( + _In_z_ _Printf_format_string_ char const* const _Format, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Format); + _Result = _vcprintf_l(_Format, NULL, _ArgList); + __crt_va_end(_ArgList); + return _Result; + } +#endif + + _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_cscanf) + _CRT_STDIO_INLINE int __CRTDECL cscanf( + _In_z_ _Scanf_format_string_ char const* const _Format, + ...) +#if defined _NO_CRT_STDIO_INLINE +; +#else + { + int _Result; + va_list _ArgList; + __crt_va_start(_ArgList, _Format); + + _Result = _vcscanf_l(_Format, NULL, _ArgList); + + __crt_va_end(_ArgList); + return _Result; + } +#endif + + #endif // _CRT_INTERNAL_NONSTDC_NAMES + +_CRT_END_C_HEADER + +_UCRT_RESTORE_CLANG_WARNINGS +#pragma warning(pop) // _UCRT_DISABLED_WARNINGS +#endif // _INC_CONIO diff --git a/sdk/include/ucrt/corecrt.h b/sdk/include/ucrt/corecrt.h new file mode 100644 index 00000000000..b89f0a94c22 --- /dev/null +++ b/sdk/include/ucrt/corecrt.h @@ -0,0 +1,2075 @@ +// +// corecrt.h +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Declarations used throughout the CoreCRT library. +// +#pragma once + +#include <vcruntime.h> + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Windows API Partitioning and ARM Desktop Support +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#ifndef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP + #ifdef WINAPI_FAMILY + #include <winapifamily.h> + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) + #define _CRT_USE_WINAPI_FAMILY_DESKTOP_APP + #else + #ifdef WINAPI_FAMILY_PHONE_APP + #if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP + #define _CRT_USE_WINAPI_FAMILY_PHONE_APP + #endif + #endif + + #ifdef WINAPI_FAMILY_GAMES + #if WINAPI_FAMILY == WINAPI_FAMILY_GAMES + #define _CRT_USE_WINAPI_FAMILY_GAMES + #endif + #endif + #endif + #else + #define _CRT_USE_WINAPI_FAMILY_DESKTOP_APP + #endif +#endif + +#ifndef _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE + #define _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE 1 +#endif + +#ifndef _CRT_BUILD_DESKTOP_APP + #ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP + #define _CRT_BUILD_DESKTOP_APP 1 + #else + #define _CRT_BUILD_DESKTOP_APP 0 + #endif +#endif + +// Verify that the ARM Desktop SDK is available when building an ARM Desktop app +#ifdef _M_ARM + #if _CRT_BUILD_DESKTOP_APP && !_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE + #error Compiling Desktop applications for the ARM platform is not supported. + #endif +#endif + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Warning Suppression +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +// C4412: function signature contains type '_locale_t'; +// C++ objects are unsafe to pass between pure code and mixed or native. (/Wall) +#ifndef _UCRT_DISABLED_WARNING_4412 + #ifdef _M_CEE_PURE + #define _UCRT_DISABLED_WARNING_4412 4412 + #else + #define _UCRT_DISABLED_WARNING_4412 + #endif +#endif + +// Use _UCRT_EXTRA_DISABLED_WARNINGS to add additional warning suppressions to UCRT headers. +#ifndef _UCRT_EXTRA_DISABLED_WARNINGS + #define _UCRT_EXTRA_DISABLED_WARNINGS +#endif + +// C4324: structure was padded due to __declspec(align()) (/W4) +// C4514: unreferenced inline function has been removed (/Wall) +// C4574: 'MACRO' is defined to be '0': did you mean to use '#if MACRO'? (/Wall) +// C4668: '__cplusplus' is not defined as a preprocessor macro (/Wall) +// C4710: function not inlined (/Wall) +// C4793: 'function' is compiled as native code (/Wall and /W1 under /clr:pure) +// C4820: padding after data member (/Wall) +// C4995: name was marked #pragma deprecated +// C4996: __declspec(deprecated) +// C28719: Banned API, use a more robust and secure replacement. +// C28726: Banned or deprecated API, use a more robust and secure replacement. +// C28727: Banned API. +#ifndef _UCRT_DISABLED_WARNINGS + #define _UCRT_DISABLED_WARNINGS 4324 _UCRT_DISABLED_WARNING_4412 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 _UCRT_EXTRA_DISABLED_WARNINGS +#endif + +#ifndef _UCRT_DISABLE_CLANG_WARNINGS + #ifdef __clang__ + // warning: declspec(deprecated) [-Wdeprecated-declarations] + // warning: __declspec attribute 'allocator' is not supported [-Wignored-attributes] + // warning: '#pragma optimize' is not supported [-Wignored-pragma-optimize] + // warning: unknown pragma ignored [-Wunknown-pragmas] + #define _UCRT_DISABLE_CLANG_WARNINGS \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \ + _Pragma("clang diagnostic ignored \"-Wignored-attributes\"") \ + _Pragma("clang diagnostic ignored \"-Wignored-pragma-optimize\"") \ + _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") + #else // __clang__ + #define _UCRT_DISABLE_CLANG_WARNINGS + #endif // __clang__ +#endif // _UCRT_DISABLE_CLANG_WARNINGS + +#ifndef _UCRT_RESTORE_CLANG_WARNINGS + #ifdef __clang__ + #define _UCRT_RESTORE_CLANG_WARNINGS _Pragma("clang diagnostic pop") + #else // __clang__ + #define _UCRT_RESTORE_CLANG_WARNINGS + #endif // __clang__ +#endif // _UCRT_RESTORE_CLANG_WARNINGS + +#pragma warning(push) +#pragma warning(disable: _UCRT_DISABLED_WARNINGS) +_UCRT_DISABLE_CLANG_WARNINGS + +_CRT_BEGIN_C_HEADER + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Annotation Macros +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#ifndef _ACRTIMP + #if defined _CRTIMP && !defined _VCRT_DEFINED_CRTIMP + #define _ACRTIMP _CRTIMP + #elif !defined _CORECRT_BUILD && defined _DLL + #define _ACRTIMP __declspec(dllimport) + #else + #define _ACRTIMP + #endif +#endif + +// If you need the ability to remove __declspec(import) from an API, to support static replacement, +// declare the API using _ACRTIMP_ALT instead of _ACRTIMP. +#ifndef _ACRTIMP_ALT + #define _ACRTIMP_ALT _ACRTIMP +#endif + +#ifndef _DCRTIMP + #if defined _CRTIMP && !defined _VCRT_DEFINED_CRTIMP + #define _DCRTIMP _CRTIMP + #elif !defined _CORECRT_BUILD && defined _DLL + #define _DCRTIMP __declspec(dllimport) + #else + #define _DCRTIMP + #endif +#endif + +#if defined _CRT_SUPPRESS_RESTRICT || defined _CORECRT_BUILD + #define _CRTRESTRICT +#else + #define _CRTRESTRICT __declspec(restrict) +#endif + +#if defined _MSC_VER && _MSC_VER >= 1900 && !defined _CORECRT_BUILD + #define _CRTALLOCATOR __declspec(allocator) +#else + #define _CRTALLOCATOR +#endif + +#if defined _M_CEE && defined _M_X64 + // This is only needed when managed code is calling the native APIs, + // targeting the 64-bit runtime. + #define _CRT_JIT_INTRINSIC __declspec(jitintrinsic) +#else + #define _CRT_JIT_INTRINSIC +#endif + +// __declspec(guard(overflow)) enabled by /sdl compiler switch for CRT allocators +#ifdef _GUARDOVERFLOW_CRT_ALLOCATORS + #define _CRT_GUARDOVERFLOW __declspec(guard(overflow)) +#else + #define _CRT_GUARDOVERFLOW +#endif + +#if defined _DLL && (defined _M_HYBRID || defined _M_ARM64EC) && (defined _CORECRT_BUILD || defined _VCRT_BUILD) + #define _CRT_HYBRIDPATCHABLE __declspec(hybrid_patchable) +#else + #define _CRT_HYBRIDPATCHABLE +#endif + +// The CLR requires code calling other SecurityCritical code or using SecurityCritical types +// to be marked as SecurityCritical. +// _CRT_SECURITYCRITICAL_ATTRIBUTE covers this for internal function definitions. +// _CRT_INLINE_PURE_SECURITYCRITICAL_ATTRIBUTE is for inline pure functions defined in the header. +// This is clr:pure-only because for mixed mode we compile inline functions as native. +#ifdef _M_CEE_PURE + #define _CRT_INLINE_PURE_SECURITYCRITICAL_ATTRIBUTE [System::Security::SecurityCritical] +#else + #define _CRT_INLINE_PURE_SECURITYCRITICAL_ATTRIBUTE +#endif + +#ifndef _CONST_RETURN + #ifdef __cplusplus + #define _CONST_RETURN const + #define _CRT_CONST_CORRECT_OVERLOADS + #else + #define _CONST_RETURN + #endif +#endif + +#define _WConst_return _CONST_RETURN // For backwards compatibility + +#ifndef _CRT_ALIGN + #ifdef __midl + #define _CRT_ALIGN(x) + #else + #define _CRT_ALIGN(x) __declspec(align(x)) + #endif +#endif + +#if defined _PREFAST_ && defined _CA_SHOULD_CHECK_RETURN + #define _Check_return_opt_ _Check_return_ +#else + #define _Check_return_opt_ +#endif + +#if defined _PREFAST_ && defined _CA_SHOULD_CHECK_RETURN_WER + #define _Check_return_wat_ _Check_return_ +#else + #define _Check_return_wat_ +#endif + +#if !defined __midl && !defined MIDL_PASS && defined _PREFAST_ + #define __crt_typefix(ctype) __declspec("SAL_typefix(" _CRT_STRINGIZE(ctype) ")") +#else + #define __crt_typefix(ctype) +#endif + +#ifndef _CRT_NOEXCEPT + #ifdef __cplusplus + #define _CRT_NOEXCEPT noexcept + #else + #define _CRT_NOEXCEPT + #endif +#endif + + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Miscellaneous Stuff +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#ifdef __cplusplus +extern "C++" +{ + template<bool _Enable, typename _Ty> + struct _CrtEnableIf; + + template<typename _Ty> + struct _CrtEnableIf<true, _Ty> + { + typedef _Ty _Type; + }; +} +#endif + +#if defined __cplusplus + typedef bool __crt_bool; +#elif defined __midl + // MIDL understands neither bool nor _Bool. Use char as a best-fit + // replacement (the differences won't matter in practice). + typedef char __crt_bool; +#else + typedef _Bool __crt_bool; +#endif + +#define _ARGMAX 100 +#define _TRUNCATE ((size_t)-1) +#define _CRT_INT_MAX 2147483647 +#define _CRT_SIZE_MAX ((size_t)-1) + +#define __FILEW__ _CRT_WIDE(__FILE__) +#define __FUNCTIONW__ _CRT_WIDE(__FUNCTION__) + +#ifdef __cplusplus + #ifndef _STATIC_ASSERT + #define _STATIC_ASSERT(expr) static_assert((expr), #expr) + #endif +#else + #ifndef _STATIC_ASSERT + #ifdef __clang__ + #define _STATIC_ASSERT(expr) _Static_assert((expr), #expr) + #else + #define _STATIC_ASSERT(expr) typedef char __static_assert_t[(expr) != 0] + #endif + #endif +#endif + +#ifndef NULL + #ifdef __cplusplus + #define NULL 0 + #else + #define NULL ((void *)0) + #endif +#endif + +// CRT headers are included into some kinds of source files where only data type +// definitions and macro definitions are required but function declarations and +// inline function definitions are not. These files include assembly files, IDL +// files, and resource files. The tools that process these files often have a +// limited ability to process C and C++ code. The _CRT_FUNCTIONS_REQUIRED macro +// is defined to 1 when we are compiling a file that actually needs functions to +// be declared (and defined, where applicable), and to 0 when we are compiling a +// file that does not. This allows us to suppress declarations and definitions +// that are not compilable with the aforementioned tools. +#if !defined _CRT_FUNCTIONS_REQUIRED + #if defined __assembler || defined __midl || defined RC_INVOKED + #define _CRT_FUNCTIONS_REQUIRED 0 + #else + #define _CRT_FUNCTIONS_REQUIRED 1 + #endif +#endif + +#if !defined _NO_INLINING && !_CRT_FUNCTIONS_REQUIRED + #define _NO_INLINING // Suppress <tchar.h> inlines +#endif + +#ifndef _CRT_UNUSED + #define _CRT_UNUSED(x) (void)x +#endif + +#ifndef _CRT_HAS_CXX17 + #ifdef _MSVC_LANG + #if _MSVC_LANG > 201402 + #define _CRT_HAS_CXX17 1 + #else /* _MSVC_LANG > 201402 */ + #define _CRT_HAS_CXX17 0 + #endif /* _MSVC_LANG > 201402 */ + #else /* _MSVC_LANG */ + #if defined __cplusplus && __cplusplus > 201402 + #define _CRT_HAS_CXX17 1 + #else /* __cplusplus > 201402 */ + #define _CRT_HAS_CXX17 0 + #endif /* __cplusplus > 201402 */ + #endif /* _MSVC_LANG */ +#endif /* _CRT_HAS_CXX17 */ + +#ifndef _CRT_HAS_C11 + #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L + #define _CRT_HAS_C11 1 + #else /* defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L */ + #define _CRT_HAS_C11 0 + #endif /* defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L */ +#endif /* _CRT_HAS_C11 */ + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Invalid Parameter Handler +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#ifdef _DEBUG + _ACRTIMP void __cdecl _invalid_parameter( + _In_opt_z_ wchar_t const*, + _In_opt_z_ wchar_t const*, + _In_opt_z_ wchar_t const*, + _In_ unsigned int, + _In_ uintptr_t + ); +#endif + +_ACRTIMP_ALT void __cdecl _invalid_parameter_noinfo(void); +_ACRTIMP __declspec(noreturn) void __cdecl _invalid_parameter_noinfo_noreturn(void); + +__declspec(noreturn) +_ACRTIMP void __cdecl _invoke_watson( + _In_opt_z_ wchar_t const* _Expression, + _In_opt_z_ wchar_t const* _FunctionName, + _In_opt_z_ wchar_t const* _FileName, + _In_ unsigned int _LineNo, + _In_ uintptr_t _Reserved); + +#ifndef _CRT_SECURE_INVALID_PARAMETER + #ifdef _DEBUG + #define _CRT_SECURE_INVALID_PARAMETER(expr) \ + ::_invalid_parameter(_CRT_WIDE(#expr), __FUNCTIONW__, __FILEW__, __LINE__, 0) + #else + // By default, _CRT_SECURE_INVALID_PARAMETER in retail invokes + // _invalid_parameter_noinfo_noreturn(), which is marked + // __declspec(noreturn) and does not return control to the application. + // Even if _set_invalid_parameter_handler() is used to set a new invalid + // parameter handler which does return control to the application, + // _invalid_parameter_noinfo_noreturn() will terminate the application + // and invoke Watson. You can overwrite the definition of + // _CRT_SECURE_INVALID_PARAMETER if you need. + // + // _CRT_SECURE_INVALID_PARAMETER is used in the Standard C++ Libraries + // and the SafeInt library. + #define _CRT_SECURE_INVALID_PARAMETER(expr) \ + ::_invalid_parameter_noinfo_noreturn() + #endif +#endif + + + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Deprecation and Warnings +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#define _CRT_WARNING_MESSAGE(NUMBER, MESSAGE) \ + __FILE__ "(" _CRT_STRINGIZE(__LINE__) "): warning " NUMBER ": " MESSAGE + +#if ( defined _CRT_DECLARE_NONSTDC_NAMES && _CRT_DECLARE_NONSTDC_NAMES) || \ + (!defined _CRT_DECLARE_NONSTDC_NAMES && !__STDC__ ) + #define _CRT_INTERNAL_NONSTDC_NAMES 1 +#else + #define _CRT_INTERNAL_NONSTDC_NAMES 0 +#endif + +#if defined _CRT_NONSTDC_NO_DEPRECATE && !defined _CRT_NONSTDC_NO_WARNINGS + #define _CRT_NONSTDC_NO_WARNINGS +#endif + +#ifndef _CRT_NONSTDC_DEPRECATE + #ifdef _CRT_NONSTDC_NO_WARNINGS + #define _CRT_NONSTDC_DEPRECATE(_NewName) + #else + #define _CRT_NONSTDC_DEPRECATE(_NewName) _CRT_DEPRECATE_TEXT( \ + "The POSIX name for this item is deprecated. Instead, use the ISO C " \ + "and C++ conformant name: " #_NewName ". See online help for details.") + #endif +#endif + + + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Managed CRT Support +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#ifndef _PGLOBAL + #ifdef _M_CEE + #ifdef __cplusplus_cli + #define _PGLOBAL __declspec(process) + #else + #define _PGLOBAL + #endif + #else + #define _PGLOBAL + #endif +#endif + +#ifndef _AGLOBAL + #ifdef _M_CEE + #define _AGLOBAL __declspec(appdomain) + #else + #define _AGLOBAL + #endif +#endif + +#if defined _M_CEE && !defined _M_CEE_PURE + #define _M_CEE_MIXED +#endif + + + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// SecureCRT Configuration +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#if defined _CRTBLD || defined _CORECRT_BUILD || defined _VCRT_BUILD + // Disable C++ overloads internally: + #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 0 + #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 0 + #define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 0 +#endif + +#if !_CRT_FUNCTIONS_REQUIRED + // If we don't require function declarations at all, we need not define the + // overloads (MIDL and RC do not need the C++ overloads). + #undef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES + #undef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT + #undef _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES + #undef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY + #undef _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY + + #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 0 + #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 0 + #define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 0 + #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY 0 + #define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY 0 +#endif + +#define __STDC_SECURE_LIB__ 200411L +#define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__ // For backwards compatibility + +#ifndef __STDC_WANT_SECURE_LIB__ + #define __STDC_WANT_SECURE_LIB__ 1 +#endif + +#if !__STDC_WANT_SECURE_LIB__ && !defined _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS +#endif + +#ifndef RC_INVOKED + #if defined _CRT_SECURE_NO_DEPRECATE_GLOBALS && !defined _CRT_SECURE_NO_WARNINGS_GLOBALS + #define _CRT_SECURE_NO_WARNINGS_GLOBALS + #endif +#endif + +#ifndef _CRT_INSECURE_DEPRECATE_GLOBALS + #ifdef RC_INVOKED + #define _CRT_INSECURE_DEPRECATE_GLOBALS(replacement) + #else + #ifdef _CRT_SECURE_NO_WARNINGS_GLOBALS + #define _CRT_INSECURE_DEPRECATE_GLOBALS(replacement) + #else + #define _CRT_INSECURE_DEPRECATE_GLOBALS(replacement) _CRT_INSECURE_DEPRECATE(replacement) + #endif + #endif +#endif + +#if defined _CRT_MANAGED_HEAP_NO_DEPRECATE && !defined _CRT_MANAGED_HEAP_NO_WARNINGS + #define _CRT_MANAGED_HEAP_NO_WARNINGS +#endif + +#define _SECURECRT_FILL_BUFFER_PATTERN 0xFE + +#if defined _CRT_OBSOLETE_NO_DEPRECATE && !defined _CRT_OBSOLETE_NO_WARNINGS + #define _CRT_OBSOLETE_NO_WARNINGS +#endif + +#ifndef _CRT_OBSOLETE + #ifdef _CRT_OBSOLETE_NO_WARNINGS + #define _CRT_OBSOLETE(_NewItem) + #else + #define _CRT_OBSOLETE(_NewItem) _CRT_DEPRECATE_TEXT( \ + "This function or variable has been superceded by newer library " \ + "or operating system functionality. Consider using " #_NewItem " " \ + "instead. See online help for details.") + #endif +#endif + +#ifndef RC_INVOKED + #ifndef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES + #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 0 + #else + #if !__STDC_WANT_SECURE_LIB__ && _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES + #error Cannot use Secure CRT C++ overloads when __STDC_WANT_SECURE_LIB__ is 0 + #endif + #endif + + #ifndef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT + // _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT is ignored if + // _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES is set to 0 + #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 0 + #else + #if !__STDC_WANT_SECURE_LIB__ && _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT + #error Cannot use Secure CRT C++ overloads when __STDC_WANT_SECURE_LIB__ is 0 + #endif + #endif + + #ifndef _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES + #if __STDC_WANT_SECURE_LIB__ + #define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 1 + #else + #define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 0 + #endif + #else + #if !__STDC_WANT_SECURE_LIB__ && _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES + #error Cannot use Secure CRT C++ overloads when __STDC_WANT_SECURE_LIB__ is 0 + #endif + #endif + + #ifndef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY + #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY 0 + #else + #if !__STDC_WANT_SECURE_LIB__ && _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY + #error Cannot use Secure CRT C++ overloads when __STDC_WANT_SECURE_LIB__ is 0 + #endif + #endif + + #ifndef _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY + #define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY 0 + #else + #if !__STDC_WANT_SECURE_LIB__ && _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY + #error Cannot use Secure CRT C++ overloads when __STDC_WANT_SECURE_LIB__ is 0 + #endif + #endif +#endif + +#ifndef _CRT_SECURE_CPP_NOTHROW + #define _CRT_SECURE_CPP_NOTHROW throw() +#endif + + + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Basic Types +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +typedef int errno_t; +typedef unsigned short wint_t; +typedef unsigned short wctype_t; +typedef long __time32_t; +typedef __int64 __time64_t; + +typedef struct __crt_locale_data_public +{ + unsigned short const* _locale_pctype; + _Field_range_(1, 2) int _locale_mb_cur_max; + unsigned int _locale_lc_codepage; +} __crt_locale_data_public; + +typedef struct __crt_locale_pointers +{ + struct __crt_locale_data* locinfo; + struct __crt_multibyte_data* mbcinfo; +} __crt_locale_pointers; + +typedef __crt_locale_pointers* _locale_t; + +typedef struct _Mbstatet +{ // state of a multibyte translation + unsigned long _Wchar; + unsigned short _Byte, _State; +} _Mbstatet; + +typedef _Mbstatet mbstate_t; + +#if defined _USE_32BIT_TIME_T && defined _WIN64 + #error You cannot use 32-bit time_t (_USE_32BIT_TIME_T) with _WIN64 +#endif + +#if defined _VCRT_BUILD || defined _CORECRT_BUILD + #define _CRT_NO_TIME_T +#endif + +#ifndef _CRT_NO_TIME_T + #ifdef _USE_32BIT_TIME_T + typedef __time32_t time_t; + #else + typedef __time64_t time_t; + #endif +#endif + +// Indicate that these common types are defined +#ifndef _TIME_T_DEFINED + #define _TIME_T_DEFINED +#endif + +#if __STDC_WANT_SECURE_LIB__ + typedef size_t rsize_t; +#endif + + + + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// C++ Secure Overload Generation Macros +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#ifndef RC_INVOKED + #if defined __cplusplus && _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(_ReturnType, _FuncName, _DstType, _Dst) \ + extern "C++" \ + { \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size]) _CRT_SECURE_CPP_NOTHROW \ + { \ + return _FuncName(_Dst, _Size); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1) \ + extern "C++" \ + { \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + return _FuncName(_Dst, _Size, _TArg1); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + extern "C++" \ + { \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + return _FuncName(_Dst, _Size, _TArg1, _TArg2); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + extern "C++" \ + { \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + return _FuncName(_Dst, _Size, _TArg1, _TArg2, _TArg3); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) \ + extern "C++" \ + { \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4) _CRT_SECURE_CPP_NOTHROW \ + { \ + return _FuncName(_Dst, _Size, _TArg1, _TArg2, _TArg3, _TArg4); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1) \ + extern "C++" \ + { \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + return _FuncName(_HArg1, _Dst, _Size, _TArg1); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + extern "C++" \ + { \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + return _FuncName(_HArg1, _Dst, _Size, _TArg1, _TArg2); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + extern "C++" \ + { \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + return _FuncName(_HArg1, _Dst, _Size, _TArg1, _TArg2, _TArg3); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(_ReturnType, _FuncName, _HType1, _HArg1, _HType2, _HArg2, _DstType, _Dst) \ + extern "C++" \ + { \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _HType2 _HArg2, _DstType (&_Dst)[_Size]) _CRT_SECURE_CPP_NOTHROW \ + { \ + return _FuncName(_HArg1, _HArg2, _Dst, _Size); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1) \ + extern "C++" \ + { \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg1); \ + return _VFuncName(_Dst, _Size, _TArg1, _ArgList); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + extern "C++" \ + { \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg2); \ + return _VFuncName(_Dst, _Size, _TArg1, _TArg2, _ArgList); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(_ReturnType, _FuncName, _DstType, _Src) \ + extern "C++" \ + { \ + template <size_t _DriveSize, size_t _DirSize, size_t _NameSize, size_t _ExtSize> \ + inline \ + _ReturnType __CRTDECL _FuncName( \ + _In_z_ _DstType const* _Src, \ + _Post_z_ _DstType (&_Drive)[_DriveSize], \ + _Post_z_ _DstType (&_Dir)[_DirSize], \ + _Post_z_ _DstType (&_Name)[_NameSize], \ + _Post_z_ _DstType (&_Ext)[_ExtSize] \ + ) _CRT_SECURE_CPP_NOTHROW \ + { \ + return _FuncName(_Src, _Drive, _DriveSize, _Dir, _DirSize, _Name, _NameSize, _Ext, _ExtSize); \ + } \ + } + + #else // ^^^ _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES ^^^ // vvv !_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES vvv // + + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(_ReturnType, _FuncName, _DstType, _Dst) + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1) + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1) + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(_ReturnType, _FuncName, _HType1, _HArg1, _HType2, _HArg2, _DstType, _Dst) + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1) + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(_ReturnType, _FuncName, _DstType, _Src) + + #endif // !_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES +#endif + + + +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _SalAttributeDst, _DstType, _Dst) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _FuncName##_s, _VFuncName, _VFuncName##_s, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _VFuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE(_DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(_DeclSpec, _FuncName, _FuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE(_DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(_DeclSpec, _FuncName, _FuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + + + +#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst) \ + __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _SalAttributeDst, _DstType, _Dst) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _SalAttributeDst, _DstType, _DstType, _Dst, _TType1, _TArg1) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) \ + __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) \ + __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _VFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, __cdecl, _FuncName, _FuncName##_s, _VFuncName, _VFuncName##_s, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE(_DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(_DeclSpec, _FuncName, _FuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + +#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE(_DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(_DeclSpec, _FuncName, _FuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + + + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// C++ Standard Overload Generation Macros +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#ifndef RC_INVOKED + #if defined __cplusplus && _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES + + #define __RETURN_POLICY_SAME(_FunctionCall, _Dst) return (_FunctionCall) + #define __RETURN_POLICY_DST(_FunctionCall, _Dst) return ((_FunctionCall) == 0 ? _Dst : 0) + #define __RETURN_POLICY_VOID(_FunctionCall, _Dst) (_FunctionCall); return + #define __EMPTY_DECLSPEC + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_SalAttributeDst _DstType *_Dst) \ + { \ + _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst); \ + return _FuncName(_Dst); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst)); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst)); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size]) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, _Size), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1]) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, 1), _Dst); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_CGETS(_ReturnType, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_SalAttributeDst _DstType *_Dst) \ + { \ + _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst); \ + return _FuncName(_Dst); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst)); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst)); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) \ + _ReturnType __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size]) _CRT_SECURE_CPP_NOTHROW \ + { \ + size_t _SizeRead = 0; \ + errno_t _Err = _FuncName##_s(_Dst + 2, (_Size - 2) < ((size_t)_Dst[0]) ? (_Size - 2) : ((size_t)_Dst[0]), &_SizeRead); \ + _Dst[1] = (_DstType)(_SizeRead); \ + return (_Err == 0 ? _Dst + 2 : 0); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1]) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName((_DstType *)_Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) \ + _ReturnType __CRTDECL _FuncName<2>(_DstType (&_Dst)[2]) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName((_DstType *)_Dst); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1) \ + { \ + _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1); \ + return _FuncName(_Dst, _TArg1); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst, _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst, _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst, _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst, _TArg1); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_SecureDstType (&_Dst)[_Size], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, _Size, _TArg1), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, 1, _TArg1), _Dst); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2); \ + return _FuncName(_Dst, _TArg1, _TArg2); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst, _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst, _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst, _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst, _TArg1, _TArg2); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_SecureDstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, _Size, _TArg1, _TArg2), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, 1, _TArg1, _TArg2), _Dst); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) \ + { \ + _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); \ + return _FuncName(_Dst, _TArg1, _TArg2, _TArg3); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _TArg3); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _TArg3); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst, _TArg1, _TArg2, _TArg3); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_SecureDstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, _Size, _TArg1, _TArg2, _TArg3), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, 1, _TArg1, _TArg2, _TArg3), _Dst); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4) \ + { \ + _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4); \ + return _FuncName(_Dst, _TArg1, _TArg2, _TArg3, _TArg4); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _TArg3, _TArg4); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _TArg3, _TArg4); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst, _TArg1, _TArg2, _TArg3, _TArg4); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, _Size, _TArg1, _TArg2, _TArg3, _TArg4), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, 1, _TArg1, _TArg2, _TArg3, _TArg4), _Dst); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_HType1 _HArg1, _SalAttributeDst _DstType *_Dst, _TType1 _TArg1) \ + { \ + _ReturnType __cdecl _FuncName(_HType1 _HArg1, _SalAttributeDst _DstType *_Dst, _TType1 _TArg1); \ + return _FuncName(_HArg1, _Dst, _TArg1); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _T &_Dst, _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_HArg1, static_cast<_DstType *>(_Dst), _TArg1); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, const _T &_Dst, _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_HArg1, static_cast<_DstType *>(_Dst), _TArg1); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _SalAttributeDst _DstType * &_Dst, _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_HArg1, _Dst, _TArg1); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_HArg1, _Dst, _Size, _TArg1), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_HType1 _HArg1, _DstType (&_Dst)[1], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_HArg1, _Dst, 1, _TArg1), _Dst); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_HType1 _HArg1, _HType2 _HArg2, _SalAttributeDst _DstType *_Dst) \ + { \ + _ReturnType __cdecl _FuncName(_HType1 _HArg1, _HType2 _HArg2, _SalAttributeDst _DstType *_Dst); \ + return _FuncName(_HArg1, _HArg2, _Dst); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _HType2 _HArg2, _T &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_HArg1, _HArg2, static_cast<_DstType *>(_Dst)); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _HType2 _HArg2, const _T &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_HArg1, _HArg2, static_cast<_DstType *>(_Dst)); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _HType2 _HArg2, _SalAttributeDst _DstType * &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_HArg1, _HArg2, _Dst); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_HType1 _HArg1, _HType2 _HArg2, _DstType (&_Dst)[_Size]) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_HArg1, _HArg2, _Dst, _Size), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_HType1 _HArg1, _HType2 _HArg2, _DstType (&_Dst)[1]) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_HArg1, _HArg2, _Dst, 1), _Dst); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _SecureFuncName, _VFuncName, _SecureVFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, va_list _ArgList) \ + { \ + _ReturnType _CC _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, va_list _ArgList); \ + return _VFuncName(_Dst, _TArg1, _ArgList); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst, _TType1 _TArg1, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg1); \ + return __insecure_##_VFuncName(static_cast<_DstType *>(_Dst), _TArg1, _ArgList); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst, _TType1 _TArg1, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg1); \ + return __insecure_##_VFuncName(static_cast<_DstType *>(_Dst), _TArg1, _ArgList); \ + } \ + \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst, _TType1 _TArg1, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg1); \ + return __insecure_##_VFuncName(_Dst, _TArg1, _ArgList); \ + } \ + \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg1); \ + _ReturnPolicy(_SecureVFuncName(_Dst, _Size, _TArg1, _ArgList), _Dst); \ + } \ + \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg1); \ + _ReturnPolicy(_SecureVFuncName(_Dst, 1, _TArg1, _ArgList), _Dst); \ + } \ + \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) \ + _ReturnType __CRTDECL _VFuncName(_T &_Dst, _TType1 _TArg1, va_list _ArgList) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_VFuncName(static_cast<_DstType *>(_Dst), _TArg1, _ArgList); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) \ + _ReturnType __CRTDECL _VFuncName(const _T &_Dst, _TType1 _TArg1, va_list _ArgList) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_VFuncName(static_cast<_DstType *>(_Dst), _TArg1, _ArgList); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) \ + _ReturnType __CRTDECL _VFuncName(_SalAttributeDst _DstType *&_Dst, _TType1 _TArg1, va_list _ArgList) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_VFuncName(_Dst, _TArg1, _ArgList); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _VFuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, va_list _ArgList) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureVFuncName(_Dst, _Size, _TArg1, _ArgList), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) \ + _ReturnType __CRTDECL _VFuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1, va_list _ArgList) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureVFuncName(_Dst, 1, _TArg1, _ArgList), _Dst); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _SecureVFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _ArgList) \ + { \ + _ReturnType _CC _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _ArgList); \ + return _VFuncName(_Dst, _TArg1, _TArg2, _ArgList); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst, _TType1 _TArg1, _TType2 _TArg2, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg2); \ + return __insecure_##_VFuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _ArgList); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst, _TType1 _TArg1, _TType2 _TArg2, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg2); \ + return __insecure_##_VFuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _ArgList); \ + } \ + \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) \ + _ReturnType __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst, _TType1 _TArg1, _TType2 _TArg2, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg2); \ + return __insecure_##_VFuncName(_Dst, _TArg1, _TArg2, _ArgList); \ + } \ + \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_SecureDstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg2); \ + _ReturnPolicy(_SecureVFuncName(_Dst, _Size, _TArg1, _TArg2, _ArgList), _Dst); \ + } \ + \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1, _TType2 _TArg2, ...) _CRT_SECURE_CPP_NOTHROW \ + { \ + va_list _ArgList; \ + __crt_va_start(_ArgList, _TArg2); \ + _ReturnPolicy(_SecureVFuncName(_Dst, 1, _TArg1, _TArg2, _ArgList), _Dst); \ + } \ + \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) \ + _ReturnType __CRTDECL _VFuncName(_T &_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _ArgList) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_VFuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _ArgList); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) \ + _ReturnType __CRTDECL _VFuncName(const _T &_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _ArgList) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_VFuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _ArgList); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) \ + _ReturnType __CRTDECL _VFuncName(_SalAttributeDst _DstType *&_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _ArgList) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_VFuncName(_Dst, _TArg1, _TArg2, _ArgList); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _VFuncName(_SecureDstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, va_list _ArgList) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureVFuncName(_Dst, _Size, _TArg1, _TArg2, _ArgList), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) \ + _ReturnType __CRTDECL _VFuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1, _TType2 _TArg2, va_list _ArgList) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureVFuncName(_Dst, 1, _TArg1, _TArg2, _ArgList), _Dst); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __inline \ + size_t __CRTDECL __insecure_##_FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2) \ + { \ + _DeclSpec size_t __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2); \ + return _FuncName(_Dst, _TArg1, _TArg2); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + size_t __CRTDECL _FuncName(_T &_Dst, _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + size_t __CRTDECL _FuncName(const _T &_Dst, _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + size_t __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst, _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst, _TArg1, _TArg2); \ + } \ + template <size_t _Size> \ + inline \ + size_t __CRTDECL _FuncName(_SecureDstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + size_t _Ret = 0; \ + _SecureFuncName(&_Ret, _Dst, _Size, _TArg1, _TArg2); \ + return (_Ret > 0 ? (_Ret - 1) : _Ret); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + size_t __CRTDECL _FuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + size_t _Ret = 0; \ + _SecureFuncName(&_Ret, _Dst, 1, _TArg1, _TArg2); \ + return (_Ret > 0 ? (_Ret - 1) : _Ret); \ + } \ + } + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + __inline \ + size_t __CRTDECL __insecure_##_FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) \ + { \ + _DeclSpec size_t __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); \ + return _FuncName(_Dst, _TArg1, _TArg2, _TArg3); \ + } \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + size_t __CRTDECL _FuncName(_T &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _TArg3); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + size_t __CRTDECL _FuncName(const _T &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _TArg3); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + size_t __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst, _TArg1, _TArg2, _TArg3); \ + } \ + template <size_t _Size> \ + inline \ + size_t __CRTDECL _FuncName(_SecureDstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + size_t _Ret = 0; \ + _SecureFuncName(&_Ret, _Dst, _Size, _TArg1, _TArg2, _TArg3); \ + return (_Ret > 0 ? (_Ret - 1) : _Ret); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + size_t __CRTDECL _FuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + size_t _Ret = 0; \ + _SecureFuncName(&_Ret, _Dst, 1, _TArg1, _TArg2, _TArg3); \ + return (_Ret > 0 ? (_Ret - 1) : _Ret); \ + } \ + } + + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_DstType *_Dst) + + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst)); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst)); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_DstType * &_Dst) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_SecureDstType (&_Dst)[_Size]) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, _Size), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1]) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, 1), _Dst); \ + } \ + } + + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_DstType *_Dst, _TType1 _TArg1) + + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst, _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst, _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_DstType * &_Dst, _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst, _TArg1); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_SecureDstType (&_Dst)[_Size], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, _Size, _TArg1), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, 1, _TArg1), _Dst); \ + } \ + } + + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2) + + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst, _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst, _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst, _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst, _TArg1, _TArg2); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_SecureDstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, _Size, _TArg1, _TArg2), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, 1, _TArg1, _TArg2), _Dst); \ + } \ + } + + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + __inline \ + _ReturnType __CRTDECL __insecure_##_FuncName(_DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) + + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + extern "C++" \ + { \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_T &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _TArg3); \ + } \ + template <typename _T> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(const _T &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(static_cast<_DstType *>(_Dst), _TArg1, _TArg2, _TArg3); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName(_SalAttributeDst _DstType * &_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + return __insecure_##_FuncName(_Dst, _TArg1, _TArg2, _TArg3); \ + } \ + template <size_t _Size> \ + inline \ + _ReturnType __CRTDECL _FuncName(_SecureDstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, _Size, _TArg1, _TArg2, _TArg3), _Dst); \ + } \ + template <> \ + inline \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + _ReturnType __CRTDECL _FuncName<1>(_DstType (&_Dst)[1], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \ + { \ + _ReturnPolicy(_SecureFuncName(_Dst, 1, _TArg1, _TArg2, _TArg3), _Dst); \ + } \ + } + + #if _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_CGETS(_ReturnType, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_CGETS(_ReturnType, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _SecureFuncName, _VFuncName, _SecureVFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _SecureFuncName, _VFuncName, _SecureVFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _VFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST(_ReturnType, _ReturnPolicy, _DeclSpec, __cdecl, _FuncName, _VFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _VFuncName##_s, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) \ + __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType _DstType, _Dst) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) \ + __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) \ + __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType _DstType, _Dst, _TType1, _TArg1) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) \ + __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + + #else // ^^^ _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT ^^^ // vvv _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT vvv // + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_GETS(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) _DeclSpec _ReturnType __cdecl _FuncName(_DstType *_Dst); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_HType1 _HArg1, _SalAttributeDst _DstType *_Dst, _TType1 _TArg1); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_HType1 _HArg1, _HType2 _HArg2, _SalAttributeDst _DstType *_Dst); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _SecureFuncName,_VFuncName, _SecureVFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType _CC _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, ...); \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) _DeclSpec _ReturnType _CC _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, va_list _Args); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _VFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, ...); \ + _CRT_INSECURE_DEPRECATE(_VFuncName##_s) _DeclSpec _ReturnType __cdecl _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _Args); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) _DeclSpec _ReturnType _CC _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, ...); \ + _CRT_INSECURE_DEPRECATE(_VFuncName##_s) _DeclSpec _ReturnType _CC _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _Args); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec size_t __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec size_t __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); + + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + + #endif // !_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT + + #else // ^^^ _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES ^^^ // vvv !_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES vvv // + + #define __RETURN_POLICY_SAME(_FunctionCall) + #define __RETURN_POLICY_DST(_FunctionCall) + #define __RETURN_POLICY_VOID(_FunctionCall) + #define __EMPTY_DECLSPEC + + #if _CRT_FUNCTIONS_REQUIRED + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_CGETS(_ReturnType, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_HType1 _HArg1, _SalAttributeDst _DstType *_Dst, _TType1 _TArg1); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_HType1 _HArg1, _HType2 _HArg2, _SalAttributeDst _DstType *_Dst); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _SecureFuncName, _VFuncName, _SecureVFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType _CC _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, ...); \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) _DeclSpec _ReturnType _CC _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, va_list _Args); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _SecureVFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) _DeclSpec _ReturnType _CC _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, ...); \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) _DeclSpec _ReturnType _CC _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _Args); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec size_t __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec size_t __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_GETS(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) _DeclSpec _ReturnType __cdecl _FuncName(_DstType *_Dst); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_HType1 _HArg1, _SalAttributeDst _DstType *_Dst, _TType1 _TArg1); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_HType1 _HArg1, _HType2 _HArg2, _SalAttributeDst _DstType *_Dst); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _SecureFuncName, _VFuncName, _SecureVFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType _CC _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, ...); \ + _CRT_INSECURE_DEPRECATE(_SecureVFuncName) _DeclSpec _ReturnType _CC _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, va_list _Args); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _VFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, ...); \ + _CRT_INSECURE_DEPRECATE(_VFuncName##_s) _DeclSpec _ReturnType __cdecl _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _Args); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_FuncName##_s) _DeclSpec _ReturnType _CC _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, ...); \ + _CRT_INSECURE_DEPRECATE(_VFuncName##_s) _DeclSpec _ReturnType _CC _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _Args); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec size_t __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2); + + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec size_t __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); + + + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst) + + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) + + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1) + + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) + + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2) + + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) + + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) + + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) \ + _CRT_INSECURE_DEPRECATE(_SecureFuncName) \ + __inline \ + _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) + + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) + + #else // ^^^ _CRT_FUNCTIONS_REQUIRED ^^^ // vvv !_CRT_FUNCTIONS_REQUIRED vvv // + + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_CGETS(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_GETS(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(...) + #define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(...) + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(...) + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(...) + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(...) + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(...) + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(...) + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(...) + #define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_3_EX(...) + #define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_3_EX(...) + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_0_EX(...) + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_0_EX(...) + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_1_EX(...) + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_1_EX(...) + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(...) + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(...) + #define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(...) + #define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(...) + + #endif // !_CRT_FUNCTIONS_REQUIRED + #endif // !_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES +#endif + +_CRT_END_C_HEADER + +_UCRT_RESTORE_CLANG_WARNINGS +#pragma warning(pop) // _UCRT_DISABLED_WARNINGS diff --git a/sdk/include/ucrt/corecrt_io.h b/sdk/include/ucrt/corecrt_io.h new file mode 100644 index 00000000000..5beefbc8812 --- /dev/null +++ b/sdk/include/ucrt/corecrt_io.h @@ -0,0 +1,572 @@ +// +// corecrt_io.h +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// This file declares the low-level I/O and file handling functionality. These +// declarations are split out to support the Windows build. +// +#pragma once + +#include <corecrt_share.h> +#include <corecrt_wio.h> + +#pragma warning(push) +#pragma warning(disable: _UCRT_DISABLED_WARNINGS) +_UCRT_DISABLE_CLANG_WARNINGS + +_CRT_BEGIN_C_HEADER + + + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Types +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#ifdef _USE_32BIT_TIME_T + #define _finddata_t _finddata32_t + #define _finddatai64_t _finddata32i64_t +#else + #define _finddata_t _finddata64i32_t + #define _finddatai64_t __finddata64_t +#endif + +struct _finddata32_t +{ + unsigned attrib; + __time32_t time_create; // -1 for FAT file systems + __time32_t time_access; // -1 for FAT file systems + __time32_t time_write; + _fsize_t size; + char name[260]; +}; + +struct _finddata32i64_t +{ + unsigned attrib; + __time32_t time_create; // -1 for FAT file systems + __time32_t time_access; // -1 for FAT file systems + __time32_t time_write; + __int64 size; + char name[260]; +}; + +struct _finddata64i32_t +{ + unsigned attrib; + __time64_t time_create; // -1 for FAT file systems + __time64_t time_access; // -1 for FAT file systems + __time64_t time_write; + _fsize_t size; + char name[260]; +}; + +struct __finddata64_t +{ + unsigned attrib; + __time64_t time_create; // -1 for FAT file systems + __time64_t time_access; // -1 for FAT file systems + __time64_t time_write; + __int64 size; + char name[260]; +}; + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Macros +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// File attribute constants for the _findfirst() family of functions +#define _A_NORMAL 0x00 // Normal file - No read/write restrictions +#define _A_RDONLY 0x01 // Read only file +#define _A_HIDDEN 0x02 // Hidden file +#define _A_SYSTEM 0x04 // System file +#define _A_SUBDIR 0x10 // Subdirectory +#define _A_ARCH 0x20 // Archive file + + + +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// Functions +// +//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +#ifdef _USE_32BIT_TIME_T + #define _findfirst _findfirst32 + #define _findnext _findnext32 + #define _findfirsti64 _findfirst32i64 + #define _findnexti64 _findnext32i64 +#else + #define _findfirst _findfirst64i32 + #define _findnext _findnext64i32 + #define _findfirsti64 _findfirst64 + #define _findnexti64 _findnext64 +#endif + +#if _CRT_FUNCTIONS_REQUIRED + + _Check_return_ + _ACRTIMP int __cdecl _access( + _In_z_ char const* _FileName, + _In_ int _AccessMode + ); + + _Check_return_wat_ + _ACRTIMP errno_t __cdecl _access_s( + _In_z_ char const* _FileName, + _In_ int _AccessMode + ); + + _Check_return_ + _ACRTIMP int __cdecl _chmod( + _In_z_ char const* _FileName, + _In_ int _Mode + ); + + _Check_return_ + _ACRTIMP int __cdecl _chsize( + _In_ int _FileHandle, + _In_ long _Size + ); + + _Check_return_wat_ + _ACRTIMP errno_t __cdecl _chsize_s( + _In_ int _FileHandle, + _In_ __int64 _Size + ); + + _Check_return_opt_ + _ACRTIMP int __cdecl _close( + _In_ int _FileHandle + ); + + _Check_return_opt_ + _ACRTIMP int __cdecl _commit( + _In_ int _FileHandle + ); + + _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s) + _ACRTIMP int __cdecl _creat( + _In_z_ char const* _FileName, + _In_ int _PermissionMode + ); + + _Check_return_ + _ACRTIMP int __cdecl _dup( + _In_ int _FileHandle + ); + + _Check_return_ + _ACRTIMP int __cdecl _dup2( + _In_ int _FileHandleSrc, + _In_ int _FileHandleDst + ); + + _Check_return_ + _ACRTIMP int __cdecl _eof( + _In_ int _FileHandle + ); + + _Check_return_ + _ACRTIMP long __cdecl _filelength( + _In_ int _FileHandle + ); + + _Success_(return != -1) + _Check_return_ + _ACRTIMP intptr_t __cdecl _findfirst32( + _In_z_ char const* _FileName, + _Out_ struct _finddata32_t* _FindData + ); + + _Success_(return != -1) + _Check_return_ + _ACRTIMP int __cdecl _findnext32( + _In_ intptr_t _FindHandle, + _Out_ struct _finddata32_t* _FindData + ); + + _Check_return_opt_ + _ACRTIMP int __cdecl _findclose( + _In_ intptr_t _FindHandle + ); + + _ACRTIMP intptr_t __cdecl _get_osfhandle( + _In_ int _FileHandle + ); + + _Check_return_ + _ACRTIMP int __cdecl _isatty( + _In_ int _FileHandle + ); + + _ACRTIMP int __cdecl _locking( + _In_ int _FileHandle, + _In_ int _LockMode, + _In_ long _NumOfBytes + ); + + _Check_return_opt_ + _ACRTIMP long __cdecl _lseek( + _In_ int _FileHandle, + _In_ long _Offset, + _In_ int _Origin + ); + + _Success_(return == 0) + _Check_return_wat_ + _ACRTIMP errno_t __cdecl _mktemp_s( + _Inout_updates_z_(_Size) char* _TemplateName, + _In_ size_t _Size + ); + + __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0( + errno_t, _mktemp_s, + _Prepost_z_ char, _TemplateName + ) + + _Success_(return != 0) + _Check_return_ __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0( + char *, __RETURN_POLICY_DST, _ACRTIMP, _mktemp, + _Inout_z_, char, _TemplateName + ) + + _ACRTIMP int __cdecl _open_osfhandle( + _In_ intptr_t _OSFileHandle, + _In_ int _Flags + ); + + #ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP + _Success_(return != -1) + _Check_return_ + _DCRTIMP int __cdecl _pipe( + _Out_writes_(2) int* _PtHandles, + _In_ unsigned int _PipeSize, + _In_ int _TextMode + ); + #endif + + _Success_(return != -1) + _Check_return_ + _ACRTIMP int __cdecl _read( + _In_ int _FileHandle, + _Out_writes_bytes_(_MaxCharCount) void* _DstBuf, + _In_ unsigned int _MaxCharCount + ); + + _ACRTIMP int __cdecl remove( + _In_z_ char const* _FileName + ); + + _Check_return_ + _ACRTIMP int __cdecl rename( + _In_z_ char const* _OldFilename, + _In_z_ char const* _NewFilename + ); + + _ACRTIMP int __cdecl _unlink( + _In_z_ char const* _FileName + ); + + _Check_return_ + _ACRTIMP int __cdecl _setmode( + _In_ int _FileHandle, + _In_ int _Mode + ); + + _Check_return_ + _ACRTIMP long __cdecl _tell( + _In_ int _FileHandle + ); + + _CRT_INSECURE_DEPRECATE(_umask_s) + _ACRTIMP int __cdecl _umask( + _In_ int _Mode + ); + + _Check_return_wat_ + _ACRTIMP errno_t __cdecl _umask_s( + _In_ int _NewMode, + _Out_ int* _OldMode + ); + + _ACRTIMP int __cdecl _write( + _In_ int _FileHandle, + _In_reads_bytes_(_MaxCharCount) void const* _Buf, + _In_ unsigned int _MaxCharCount + ); + + _Check_return_ + _ACRTIMP __int64 __cdecl _filelengthi64( + _In_ int _FileHandle + ); + + _Success_(return != -1) + _Check_return_ + _ACRTIMP intptr_t __cdecl _findfirst32i64( + _In_z_ char const* _FileName, + _Out_ struct _finddata32i64_t* _FindData + ); + + _Success_(return != -1) + _Check_return_ + _ACRTIMP intptr_t __cdecl _findfirst64i32( + _In_z_ char const* _FileName, + _Out_ struct _finddata64i32_t* _FindData + ); + + _Success_(return != -1) + _Check_return_ + _ACRTIMP intptr_t __cdecl _findfirst64( + _In_z_ char const* _FileName, + _Out_ struct __finddata64_t* _FindData + ); + + _Success_(return != -1) + _Check_return_ + _ACRTIMP int __cdecl _findnext32i64( + _In_ intptr_t _FindHandle, + _Out_ struct _finddata32i64_t* _FindData + ); + + _Success_(return != -1) + _Check_return_ + _ACRTIMP int __cdecl _findnext64i32( + _In_ intptr_t _FindHandle, + _Out_ struct _finddata64i32_t* _FindData + ); + + _Success_(return != -1) + _Check_return_ + _ACRTIMP int __cdecl _findnext64( + _In_ intptr_t _FindHandle, + _Out_ struct __finddata64_t* _FindData + ); + + _Check_return_opt_ + _ACRTIMP __int64 __cdecl _lseeki64( + _In_ int _FileHandle, + _In_ __int64 _Offset, + _In_ int _Origin + ); + + _Check_return_ + _ACRTIMP __int64 __cdecl _telli64( + _In_ int _FileHandle + ); + + _Check_return_wat_ + _ACRTIMP errno_t __cdecl _sopen_s( + _Out_ int* _FileHandle, + _In_z_ char const* _FileName, + _In_ int _OpenFlag, + _In_ int _ShareFlag, + _In_ int _PermissionMode + ); + + _Check_return_ + _ACRTIMP errno_t __cdecl _sopen_s_nolock( + _Out_ int* _FileHandle, + _In_z_ char const* _FileName, + _In_ int _OpenFlag, + _In_ int _ShareFlag, + _In_ int _PermissionMode + ); + + _ACRTIMP errno_t __cdecl _sopen_dispatch( + _In_z_ char const* _FileName, + _In_ int _OFlag, + _In_ int _ShFlag, + _In_ int _PMode, + _Out_ int* _PFileHandle, + _In_ int _BSecure + ); + + + + #ifdef __cplusplus + + // These function do not validate pmode; use _sopen_s instead. + extern "C++" _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s) + inline int __CRTDECL _open( + _In_z_ char const* const _FileName, + _In_ int const _OFlag, + _In_ int const _PMode = 0 + ) + { + int _FileHandle; + // Last parameter passed as 0 because we don't want to validate pmode from _open + errno_t const _Result = _sopen_dispatch(_FileName, _OFlag, _SH_DENYNO, _PMode, &_FileHandle, 0); + return _Result ? -1 : _FileHandle; + } + + extern "C++" _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s) + inline int __CRTDECL _sopen( + _In_z_ char const* const _FileName, + _In_ int const _OFlag, + _In_ int const _ShFlag, + _In_ int const _PMode = 0 + ) + { + int _FileHandle; + // Last parameter passed as 0 because we don't want to validate pmode from _sopen + errno_t const _Result = _sopen_dispatch(_FileName, _OFlag, _ShFlag, _PMode, &_FileHandle, 0); + return _Result ? -1 : _FileHandle; + } + + #else + + _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s) + _ACRTIMP int __cdecl _open( + _In_z_ char const* _FileName, + _In_ int _OpenFlag, + ...); + + _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s) + _ACRTIMP int __cdecl _sopen( + _In_z_ char const* _FileName, + _In_ int _OpenFlag, + _In_ int _ShareFlag, + ...); + + #endif + + + + #if defined(_CRT_INTERNAL_NONSTDC_NAMES) && _CRT_INTERNAL_NONSTDC_NAMES + // Suppress warnings about double deprecation + #pragma warning(push) + #pragma warning(disable: 4141) + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_access) + _ACRTIMP int __cdecl access( + _In_z_ char const* _FileName, + _In_ int _AccessMode + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_chmod) + _ACRTIMP int __cdecl chmod( + _In_z_ char const* _FileName, + _In_ int _AccessMode + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_chsize) + _ACRTIMP int __cdecl chsize( + _In_ int _FileHandle, + _In_ long _Size + ); + + _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_close) + _ACRTIMP int __cdecl close( + _In_ int _FileHandle + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_creat) _CRT_INSECURE_DEPRECATE(_sopen_s) + _ACRTIMP int __cdecl creat( + _In_z_ char const* _FileName, + _In_ int _PermissionMode + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_dup) + _ACRTIMP int __cdecl dup( + _In_ int _FileHandle + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_dup2) + _ACRTIMP int __cdecl dup2( + _In_ int _FileHandleSrc, + _In_ int _FileHandleDst + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_eof) + _ACRTIMP int __cdecl eof( + _In_ int _FileHandle + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_filelength) + _ACRTIMP long __cdecl filelength( + _In_ int _FileHandle + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_isatty) + _ACRTIMP int __cdecl isatty( + _In_ int _FileHandle + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_locking) + _ACRTIMP int __cdecl locking( + _In_ int _FileHandle, + _In_ int _LockMode, + _In_ long _NumOfBytes + ); + + _Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_lseek) + _ACRTIMP long __cdecl lseek( + _In_ int _FileHandle, + _In_ long _Offset, + _In_ int _Origin + ); + + _Success_(return != 0) + _CRT_NONSTDC_DEPRECATE(_mktemp) _CRT_INSECURE_DEPRECATE(_mktemp_s) + _ACRTIMP char * __cdecl mktemp( + _Inout_z_ char* _TemplateName + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_open) _CRT_INSECURE_DEPRECATE(_sopen_s) + _ACRTIMP int __cdecl open( + _In_z_ char const* _FileName, + _In_ int _OpenFlag, + ...); + + _Success_(return != -1) + _CRT_NONSTDC_DEPRECATE(_read) + _ACRTIMP int __cdecl read( + _In_ int _FileHandle, + _Out_writes_bytes_(_MaxCharCount) void* _DstBuf, + _In_ unsigned int _MaxCharCount + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_setmode) + _ACRTIMP int __cdecl setmode( + _In_ int _FileHandle, + _In_ int _Mode + ); + + _CRT_NONSTDC_DEPRECATE(_sopen) _CRT_INSECURE_DEPRECATE(_sopen_s) + _ACRTIMP int __cdecl sopen( + _In_ char const* _FileName, + _In_ int _OpenFlag, + _In_ int _ShareFlag, + ...); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_tell) + _ACRTIMP long __cdecl tell( + _In_ int _FileHandle + ); + + _CRT_NONSTDC_DEPRECATE(_umask) _CRT_INSECURE_DEPRECATE(_umask_s) + _ACRTIMP int __cdecl umask( + _In_ int _Mode + ); + + _CRT_NONSTDC_DEPRECATE(_unlink) + _ACRTIMP int __cdecl unlink( + _In_z_ char const* _FileName + ); + + _Check_return_ _CRT_NONSTDC_DEPRECATE(_write) + _ACRTIMP int __cdecl write( + _In_ int _FileHandle, + _In_reads_bytes_(_MaxCharCount) void const* _Buf, + _In_ unsigned int _MaxCharCount + ); + + #pragma warning(pop) + #endif // _CRT_INTERNAL_NONSTDC_NAMES +#endif // _CRT_FUNCTIONS_REQUIRED + +_CRT_END_C_HEADER +_UCRT_RESTORE_CLANG_WARNINGS +#pragma warning(pop) // _UCRT_DISABLED_WARNINGS diff --git a/sdk/include/ucrt/corecrt_malloc.h b/sdk/include/ucrt/corecrt_malloc.h new file mode 100644 index 00000000000..b6d90bdf975 --- /dev/null +++ b/sdk/include/ucrt/corecrt_malloc.h @@ -0,0 +1,234 @@ +// +// corecrt_malloc.h +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// The memory allocation library. These pieces of the allocation library are +// shared by both <stdlib.h> and <malloc.h>. +// +#pragma once + +#include <corecrt.h> + +#pragma warning(push) +#pragma warning(disable: _UCRT_DISABLED_WARNINGS) +_UCRT_DISABLE_CLANG_WARNINGS + +_CRT_BEGIN_C_HEADER + + + +#if defined _DEBUG && defined _CRTDBG_MAP_ALLOC + #pragma push_macro("_aligned_free") + #pragma push_macro("_aligned_malloc") + #pragma push_macro("_aligned_msize") + #pragma push_macro("_aligned_offset_malloc") + #pragma push_macro("_aligned_offset_realloc") + #pragma push_macro("_aligned_offset_recalloc") + #pragma push_macro("_aligned_realloc") + #pragma push_macro("_aligned_recalloc") + #pragma push_macro("_expand") + #pragma push_macro("_freea") + #pragma push_macro("_msize") + #pragma push_macro("_recalloc") + #pragma push_macro("calloc") + #pragma push_macro("free") + #pragma push_macro("malloc") + #pragma push_macro("realloc") + + #undef _aligned_free + #undef _aligned_malloc + #undef _aligned_msize + #undef _aligned_offset_malloc + #undef _aligned_offset_realloc + #undef _aligned_offset_recalloc + #undef _aligned_realloc + #undef _aligned_recalloc + #undef _expand + #undef _freea + #undef _msize + #undef _recalloc + #undef calloc + #undef free + #undef malloc + #undef realloc +#endif + +_Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Count * _Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT +void* __cdecl _calloc_base( + _In_ size_t _Count, + _In_ size_t _Size + ); + +_Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Count * _Size) +_ACRTIMP _CRT_JIT_INTRINSIC _CRTALLOCATOR _CRTRESTRICT _CRT_HYBRIDPATCHABLE +void* __cdecl calloc( + _In_ _CRT_GUARDOVERFLOW size_t _Count, + _In_ _CRT_GUARDOVERFLOW size_t _Size + ); + +_Check_return_ +_ACRTIMP int __cdecl _callnewh( + _In_ size_t _Size + ); + +_Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Size) +_ACRTIMP _CRTALLOCATOR _CRT_HYBRIDPATCHABLE +void* __cdecl _expand( + _Pre_notnull_ void* _Block, + _In_ _CRT_GUARDOVERFLOW size_t _Size + ); + +_ACRTIMP +void __cdecl _free_base( + _Pre_maybenull_ _Post_invalid_ void* _Block + ); + +_ACRTIMP _CRT_HYBRIDPATCHABLE +void __cdecl free( + _Pre_maybenull_ _Post_invalid_ void* _Block + ); + +_Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT +void* __cdecl _malloc_base( + _In_ size_t _Size + ); + +_Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Size) +_ACRTIMP _CRTALLOCATOR _CRT_JIT_INTRINSIC _CRTRESTRICT _CRT_HYBRIDPATCHABLE +void* __cdecl malloc( + _In_ _CRT_GUARDOVERFLOW size_t _Size + ); + +_Check_return_ +_ACRTIMP +size_t __cdecl _msize_base( + _Pre_notnull_ void* _Block + ) _CRT_NOEXCEPT; + +_Check_return_ +_ACRTIMP _CRT_HYBRIDPATCHABLE +size_t __cdecl _msize( + _Pre_notnull_ void* _Block + ); + +_Success_(return != 0) _Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT +void* __cdecl _realloc_base( + _Pre_maybenull_ _Post_invalid_ void* _Block, + _In_ size_t _Size + ); + +_Success_(return != 0) _Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT _CRT_HYBRIDPATCHABLE +void* __cdecl realloc( + _Pre_maybenull_ _Post_invalid_ void* _Block, + _In_ _CRT_GUARDOVERFLOW size_t _Size + ); + +_Success_(return != 0) _Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Count * _Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT +void* __cdecl _recalloc_base( + _Pre_maybenull_ _Post_invalid_ void* _Block, + _In_ size_t _Count, + _In_ size_t _Size + ); + +_Success_(return != 0) _Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Count * _Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT +void* __cdecl _recalloc( + _Pre_maybenull_ _Post_invalid_ void* _Block, + _In_ _CRT_GUARDOVERFLOW size_t _Count, + _In_ _CRT_GUARDOVERFLOW size_t _Size + ); + +_ACRTIMP +void __cdecl _aligned_free( + _Pre_maybenull_ _Post_invalid_ void* _Block + ); + +_Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT +void* __cdecl _aligned_malloc( + _In_ _CRT_GUARDOVERFLOW size_t _Size, + _In_ size_t _Alignment + ); + +_Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT +void* __cdecl _aligned_offset_malloc( + _In_ _CRT_GUARDOVERFLOW size_t _Size, + _In_ size_t _Alignment, + _In_ size_t _Offset + ); + +_Check_return_ +_ACRTIMP +size_t __cdecl _aligned_msize( + _Pre_notnull_ void* _Block, + _In_ size_t _Alignment, + _In_ size_t _Offset + ); + +_Success_(return != 0) _Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT +void* __cdecl _aligned_offset_realloc( + _Pre_maybenull_ _Post_invalid_ void* _Block, + _In_ _CRT_GUARDOVERFLOW size_t _Size, + _In_ size_t _Alignment, + _In_ size_t _Offset + ); + +_Success_(return != 0) _Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Count * _Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT +void* __cdecl _aligned_offset_recalloc( + _Pre_maybenull_ _Post_invalid_ void* _Block, + _In_ _CRT_GUARDOVERFLOW size_t _Count, + _In_ _CRT_GUARDOVERFLOW size_t _Size, + _In_ size_t _Alignment, + _In_ size_t _Offset + ); + +_Success_(return != 0) _Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT +void* __cdecl _aligned_realloc( + _Pre_maybenull_ _Post_invalid_ void* _Block, + _In_ _CRT_GUARDOVERFLOW size_t _Size, + _In_ size_t _Alignment + ); + +_Success_(return != 0) _Check_return_ _Ret_maybenull_ _Post_writable_byte_size_(_Count * _Size) +_ACRTIMP _CRTALLOCATOR _CRTRESTRICT +void* __cdecl _aligned_recalloc( + _Pre_maybenull_ _Post_invalid_ void* _Block, + _In_ _CRT_GUARDOVERFLOW size_t _Count, + _In_ _CRT_GUARDOVERFLOW size_t _Size, + _In_ size_t _Alignment + ); + +#if defined _DEBUG && defined _CRTDBG_MAP_ALLOC + #pragma pop_macro("realloc") + #pragma pop_macro("malloc") + #pragma pop_macro("free") + #pragma pop_macro("calloc") + #pragma pop_macro("_recalloc") + #pragma pop_macro("_msize") + #pragma pop_macro("_freea") + #pragma pop_macro("_expand") + #pragma pop_macro("_aligned_recalloc") + #pragma pop_macro("_aligned_realloc") + #pragma pop_macro("_aligned_offset_recalloc") + #pragma pop_macro("_aligned_offset_realloc") + #pragma pop_macro("_aligned_offset_malloc") + #pragma pop_macro("_aligned_msize") + #pragma pop_macro("_aligned_malloc") + #pragma pop_macro("_aligned_free") +#endif + + + +_CRT_END_C_HEADER +_UCRT_RESTORE_CLANG_WARNINGS +#pragma warning(pop) // _UCRT_DISABLED_WARNINGS diff --git a/sdk/include/ucrt/corecrt_math.h b/sdk/include/ucrt/corecrt_math.h new file mode 100644 index 00000000000..fdfe1f02e66 --- /dev/null +++ b/sdk/include/ucrt/corecrt_math.h @@ -0,0 +1,998 @@ +// +// corecrt_math.h +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// The majority of the C Standard Library <math.h> functionality. +// +#pragma once +#ifndef _INC_MATH // include guard for 3rd party interop +#define _INC_MATH + +#include <corecrt.h> + +#pragma warning(push) +#pragma warning(disable: _UCRT_DISABLED_WARNINGS) +_UCRT_DISABLE_CLANG_WARNINGS + +_CRT_BEGIN_C_HEADER + +#ifndef __assembler + // Definition of the _exception struct, which is passed to the matherr function + // when a floating point exception is detected: + struct _exception + { + int type; // exception type - see below + char* name; // name of function where error occurred + double arg1; // first argument to function + double arg2; // second argument (if any) to function + double retval; // value to be returned by function + }; + + // Definition of the _complex struct to be used by those who use the complex + // functions and want type checking. + #ifndef _COMPLEX_DEFINED + #define _COMPLEX_DEFINED + + struct _complex + { + double x, y; // real and imaginary parts + }; + + #if defined(_CRT_INTERNAL_NONSTDC_NAMES) && _CRT_INTERNAL_NONSTDC_NAMES && !defined __cplusplus + // Non-ANSI name for compatibility + #define complex _complex + #endif + #endif +#endif // __assembler + + + +// On x86, when not using /arch:SSE2 or greater, floating point operations +// are performed using the x87 instruction set and FLT_EVAL_METHOD is 2. +// (When /fp:fast is used, floating point operations may be consistent, so +// we use the default types.) +#if defined _M_IX86 && _M_IX86_FP < 2 && !defined _M_FP_FAST + typedef long double float_t; + typedef long double double_t; +#else + typedef float float_t; + typedef double double_t; +#endif + + + +// Constant definitions for the exception type passed in the _exception struct +#define _DOMAIN 1 // argument domain error +#define _SING 2 // argument singularity +#define _OVERFLOW 3 // overflow range error +#define _UNDERFLOW 4 // underflow range error +#define _TLOSS 5 // total loss of precision +#define _PLOSS 6 // partial loss of precision + +// Definitions of _HUGE and HUGE_VAL - respectively the XENIX and ANSI names +// for a value returned in case of error by a number of the floating point +// math routines. +#ifndef __assembler + #ifndef _M_CEE_PURE + extern double const _HUGE; + #else + double const _HUGE = System::Double::PositiveInfinity; + #endif +#endif + +#ifndef _HUGE_ENUF + #define _HUGE_ENUF 1e+300 // _HUGE_ENUF*_HUGE_ENUF must overflow +#endif + +#define INFINITY ((float)(_HUGE_ENUF * _HUGE_ENUF)) +#define HUGE_VAL ((double)INFINITY) +#define HUGE_VALF ((float)INFINITY) +#define HUGE_VALL ((long double)INFINITY) +#ifndef _UCRT_NEGATIVE_NAN +// This operation creates a negative NAN adding a - to make it positive +#define NAN (-(float)(INFINITY * 0.0F)) +#else +// Keep this for backwards compatibility +#define NAN ((float)(INFINITY * 0.0F)) +#endif + +#define _DENORM (-2) +#define _FINITE (-1) +#define _INFCODE 1 +#define _NANCODE 2 + +#define FP_INFINITE _INFCODE +#define FP_NAN _NANCODE +#define FP_NORMAL _FINITE +#define FP_SUBNORMAL _DENORM +#define FP_ZERO 0 + +#define _C2 1 // 0 if not 2's complement +#define FP_ILOGB0 (-0x7fffffff - _C2) +#define FP_ILOGBNAN 0x7fffffff + +#define MATH_ERRNO 1 +#define MATH_ERREXCEPT 2 +#define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT) + +// Values for use as arguments to the _fperrraise function +#define _FE_DIVBYZERO 0x04 +#define _FE_INEXACT 0x20 +#define _FE_INVALID 0x01 +#define _FE_OVERFLOW 0x08 +#define _FE_UNDERFLOW 0x10 + +#define _D0_C 3 // little-endian, small long doubles +#define _D1_C 2 +#define _D2_C 1 +#define _D3_C 0 + +#define _DBIAS 0x3fe +#define _DOFF 4 + +#define _F0_C 1 // little-endian +#define _F1_C 0 + +#define _FBIAS 0x7e +#define _FOFF 7 +#define _FRND 1 + +#define _L0_C 3 // little-endian, 64-bit long doubles +#define _L1_C 2 +#define _L2_C 1 +#define _L3_C 0 + +#define _LBIAS 0x3fe +#define _LOFF 4 + +// IEEE 754 double properties +#define _DFRAC ((unsigned short)((1 << _DOFF) - 1)) +#define _DMASK ((unsigned short)(0x7fff & ~_DFRAC)) +#define _DMAX ((unsigned short)((1 << (15 - _DOFF)) - 1)) +#define _DSIGN ((unsigned short)0x8000) + +// IEEE 754 float properties +#define _FFRAC ((unsigned short)((1 << _FOFF) - 1)) +#define _FMASK ((unsigned short)(0x7fff & ~_FFRAC)) +#define _FMAX ((unsigned short)((1 << (15 - _FOFF)) - 1)) +#define _FSIGN ((unsigned short)0x8000) + +// IEEE 754 long double properties +#define _LFRAC ((unsigned short)(-1)) +#define _LMASK ((unsigned short)0x7fff) +#define _LMAX ((unsigned short)0x7fff) +#define _LSIGN ((unsigned short)0x8000) + +#define _DHUGE_EXP (int)(_DMAX * 900L / 1000) +#define _FHUGE_EXP (int)(_FMAX * 900L / 1000) +#define _LHUGE_EXP (int)(_LMAX * 900L / 1000) + +#define _DSIGN_C(_Val) (((_double_val *)(char*)&(_Val))->_Sh[_D0_C] & _DSIGN) +#define _FSIGN_C(_Val) (((_float_val *)(char*)&(_Val))->_Sh[_F0_C] & _FSIGN) +#define _LSIGN_C(_Val) (((_ldouble_val*)(char*)&(_Val))->_Sh[_L0_C] & _LSIGN) + +void __cdecl _fperrraise(_In_ int _Except); + +_Check_return_ _ACRTIMP short __cdecl _dclass(_In_ double _X); +_Check_return_ _ACRTIMP short __cdecl _ldclass(_In_ long double _X); +_Check_return_ _ACRTIMP short __cdecl _fdclass(_In_ float _X); + +_Check_return_ _ACRTIMP int __cdecl _dsign(_In_ double _X); +_Check_return_ _ACRTIMP int __cdecl _ldsign(_In_ long double _X); +_Check_return_ _ACRTIMP int __cdecl _fdsign(_In_ float _X); + +_Check_return_ _ACRTIMP int __cdecl _dpcomp(_In_ double _X, _In_ double _Y); +_Check_return_ _ACRTIMP int __cdecl _ldpcomp(_In_ long double _X, _In_ long double _Y); +_Check_return_ _ACRTIMP int __cdecl _fdpcomp(_In_ float _X, _In_ float _Y); + +_Check_return_ _ACRTIMP short __cdecl _dtest(_In_ double* _Px); +_Check_return_ _ACRTIMP short __cdecl _ldtest(_In_ long double* _Px); +_Check_return_ _ACRTIMP short __cdecl _fdtest(_In_ float* _Px); + +_ACRTIMP short __cdecl _d_int(_Inout_ double* _Px, _In_ short _Xexp); +_ACRTIMP short __cdecl _ld_int(_Inout_ long double* _Px, _In_ short _Xexp); +_ACRTIMP short __cdecl _fd_int(_Inout_ float* _Px, _In_ short _Xexp); + +_ACRTIMP short __cdecl _dscale(_Inout_ double* _Px, _In_ long _Lexp); +_ACRTIMP short __cdecl _ldscale(_Inout_ long double* _Px, _In_ long _Lexp); +_ACRTIMP short __cdecl _fdscale(_Inout_ float* _Px, _In_ long _Lexp); + +_ACRTIMP short __cdecl _dunscale(_Out_ short* _Pex, _Inout_ double* _Px); +_ACRTIMP short __cdecl _ldunscale(_Out_ short* _Pex, _Inout_ long double* _Px); +_ACRTIMP short __cdecl _fdunscale(_Out_ short* _Pex, _Inout_ float* _Px); + +_Check_return_ _ACRTIMP short __cdecl _dexp(_Inout_ double* _Px, _In_ double _Y, _In_ long _Eoff); +_Check_return_ _ACRTIMP short __cdecl _ldexp(_Inout_ long double* _Px, _In_ long double _Y, _In_ long _Eoff); +_Check_return_ _ACRTIMP short __cdecl _fdexp(_Inout_ float* _Px, _In_ float _Y, _In_ long _Eoff); + +_Check_return_ _ACRTIMP short __cdecl _dnorm(_Inout_updates_(4) unsigned short* _Ps); +_Check_return_ _ACRTIMP short __cdecl _fdnorm(_Inout_updates_(2) unsigned short* _Ps); + +_Check_return_ _ACRTIMP double __cdecl _dpoly(_In_ double _X, _In_reads_(_N) double const* _Tab, _In_ int _N); +_Check_return_ _ACRTIMP long double __cdecl _ldpoly(_In_ long double _X, _In_reads_(_N) long double const* _Tab, _In_ int _N); +_Check_return_ _ACRTIMP float __cdecl _fdpoly(_In_ float _X, _In_reads_(_N) float const* _Tab, _In_ int _N); + +_Check_return_ _ACRTIMP double __cdecl _dlog(_In_ double _X, _In_ int _Baseflag); +_Check_return_ _ACRTIMP long double __cdecl _ldlog(_In_ long double _X, _In_ int _Baseflag); +_Check_return_ _ACRTIMP float __cdecl _fdlog(_In_ float _X, _In_ int _Baseflag); + +_Check_return_ _ACRTIMP double __cdecl _dsin(_In_ double _X, _In_ unsigned int _Qoff); +_Check_return_ _ACRTIMP long double __cdecl _ldsin(_In_ long double _X, _In_ unsigned int _Qoff); +_Check_return_ _ACRTIMP float __cdecl _fdsin(_In_ float _X, _In_ unsigned int _Qoff); + +// double declarations +typedef union +{ // pun floating type as integer array + unsigned short _Sh[4]; + double _Val; +} _double_val; + +// float declarations +typedef union +{ // pun floating type as integer array + unsigned short _Sh[2]; + float _Val; +} _float_val; + +// long double declarations +typedef union +{ // pun floating type as integer array + unsigned short _Sh[4]; + long double _Val; +} _ldouble_val; + +typedef union +{ // pun float types as integer array + unsigned short _Word[4]; + float _Float; + double _Double; + long double _Long_double; +} _float_const; + +extern const _float_const _Denorm_C, _Inf_C, _Nan_C, _Snan_C, _Hugeval_C; +extern const _float_const _FDenorm_C, _FInf_C, _FNan_C, _FSnan_C; +extern const _float_const _LDenorm_C, _LInf_C, _LNan_C, _LSnan_C; + +extern const _float_const _Eps_C, _Rteps_C; +extern const _float_const _FEps_C, _FRteps_C; +extern const _float_const _LEps_C, _LRteps_C; + +extern const double _Zero_C, _Xbig_C; +extern const float _FZero_C, _FXbig_C; +extern const long double _LZero_C, _LXbig_C; + +#define _FP_LT 1 +#define _FP_EQ 2 +#define _FP_GT 4 + +#ifndef __cplusplus + + #define _CLASS_ARG(_Val) __pragma(warning(suppress:6334))(sizeof ((_Val) + (float)0) == sizeof (float) ? 'f' : sizeof ((_Val) + (double)0) == sizeof (double) ? 'd' : 'l') + #define _CLASSIFY(_Val, _FFunc, _DFunc, _LDFunc) (_CLASS_ARG(_Val) == 'f' ? _FFunc((float)(_Val)) : _CLASS_ARG(_Val) == 'd' ? _DFunc((double)(_Val)) : _LDFunc((long double)(_Val))) + #define _CLASSIFY2(_Val1, _Val2, _FFunc, _DFunc, _LDFunc) (_CLASS_ARG((_Val1) + (_Val2)) == 'f' ? _FFunc((float)(_Val1), (float)(_Val2)) : _CLASS_ARG((_Val1) + (_Val2)) == 'd' ? _DFunc((double)(_Val1), (double)(_Val2)) : _LDFunc((long double)(_Val1), (long double)(_Val2))) + + #define fpclassify(_Val) (_CLASSIFY(_Val, _fdclass, _dclass, _ldclass)) + #define _FPCOMPARE(_Val1, _Val2) (_CLASSIFY2(_Val1, _Val2, _fdpcomp, _dpcomp, _ldpcomp)) + + #define isfinite(_Val) (fpclassify(_Val) <= 0) + #define isinf(_Val) (fpclassify(_Val) == FP_INFINITE) + #define isnan(_Val) (fpclassify(_Val) == FP_NAN) + #define isnormal(_Val) (fpclassify(_Val) == FP_NORMAL) + #define signbit(_Val) (_CLASSIFY(_Val, _fdsign, _dsign, _ldsign)) + + #define isgreater(x, y) ((_FPCOMPARE(x, y) & _FP_GT) != 0) + #define isgreaterequal(x, y) ((_FPCOMPARE(x, y) & (_FP_EQ | _FP_GT)) != 0) + #define isless(x, y) ((_FPCOMPARE(x, y) & _FP_LT) != 0) + #define islessequal(x, y) ((_FPCOMPARE(x, y) & (_FP_LT | _FP_EQ)) != 0) + #define islessgreater(x, y) ((_FPCOMPARE(x, y) & (_FP_LT | _FP_GT)) != 0) + #define isunordered(x, y) (_FPCOMPARE(x, y) == 0) + +#else // __cplusplus +extern "C++" +{ + _Check_return_ inline int fpclassify(_In_ float _X) throw() + { + return _fdtest(&_X); + } + + _Check_return_ inline int fpclassify(_In_ double _X) throw() + { + return _dtest(&_X); + } + + _Check_return_ inline int fpclassify(_In_ long double _X) throw() + { + return _ldtest(&_X); + } + + _Check_return_ inline bool signbit(_In_ float _X) throw() + { + return _fdsign(_X) != 0; + } + + _Check_return_ inline bool signbit(_In_ double _X) throw() + { + return _dsign(_X) != 0; + } + + _Check_return_ inline bool signbit(_In_ long double _X) throw() + { + return _ldsign(_X) != 0; + } + + _Check_return_ inline int _fpcomp(_In_ float _X, _In_ float _Y) throw() + { + return _fdpcomp(_X, _Y); + } + + _Check_return_ inline int _fpcomp(_In_ double _X, _In_ double _Y) throw() + { + return _dpcomp(_X, _Y); + } + + _Check_return_ inline int _fpcomp(_In_ long double _X, _In_ long double _Y) throw() + { + return _ldpcomp(_X, _Y); + } + + template <class _Trc, class _Tre> struct _Combined_type + { // determine combined type + typedef float _Type; + }; + + template <> struct _Combined_type<float, double> + { // determine combined type + typedef double _Type; + }; + + template <> struct _Combined_type<float, long double> + { // determine combined type + typedef long double _Type; + }; + + template <class _Ty, class _T2> struct _Real_widened + { // determine widened real type + typedef long double _Type; + }; + + template <> struct _Real_widened<float, float> + { // determine widened real type + typedef float _Type; + }; ... 114479 lines suppressed ...
2 weeks, 6 days
1
0
0
0
[reactos] 01/33: [PSEH] Fix SEH compatibility macros for dummy PSEH
by Timo Kreuzer
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f1b60c66f00ff31fadbea…
commit f1b60c66f00ff31fadbea5366a3303cb834bccb4 Author: Timo Kreuzer <timo.kreuzer(a)reactos.org> AuthorDate: Thu Nov 28 12:25:46 2024 +0200 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Thu Jan 16 14:18:53 2025 +0200 [PSEH] Fix SEH compatibility macros for dummy PSEH This is used with Clang, which does have native SEH, but it's broken and can cause the compiler to crash. Previously some code was not handling this and instead used native SEH for clang. Fix this by always using _SEH2_* macros instead of relying on __USE_PSEH2__ to be defined. --- modules/rostests/apitests/include/apitest.h | 19 ------------------- sdk/include/psdk/rpc.h | 27 ++++++++------------------- sdk/include/reactos/wine/exception.h | 11 ----------- 3 files changed, 8 insertions(+), 49 deletions(-) diff --git a/modules/rostests/apitests/include/apitest.h b/modules/rostests/apitests/include/apitest.h index 9a627e49560..18cd1ac0da7 100644 --- a/modules/rostests/apitests/include/apitest.h +++ b/modules/rostests/apitests/include/apitest.h @@ -12,7 +12,6 @@ #define InvalidPointer ((PVOID)0x5555555555555555ULL) // #define InvalidPointer ((PVOID)0x0123456789ABCDEFULL) -#ifdef __USE_PSEH2__ #include <pseh/pseh2.h> #define StartSeh() \ @@ -32,24 +31,6 @@ "Exception 0x%08lx, expected 0x%08lx\n", \ ExceptionStatus, (ExpectedStatus)); \ } -#else -#define StartSeh() \ -{ \ - NTSTATUS ExceptionStatus = STATUS_SUCCESS; \ - __try \ - { - -#define EndSeh(ExpectedStatus) \ - } \ - __except(EXCEPTION_EXECUTE_HANDLER) \ - { \ - ExceptionStatus = GetExceptionCode(); \ - } \ - ok(ExceptionStatus == (ExpectedStatus), \ - "Exception 0x%08lx, expected 0x%08lx\n", \ - ExceptionStatus, (ExpectedStatus)); \ -} -#endif #define ok_hr(status, expected) ok_hex(status, expected) #define ok_hr_(file, line, status, expected) ok_hex_(file, line, status, expected) diff --git a/sdk/include/psdk/rpc.h b/sdk/include/psdk/rpc.h index 257823505d9..42d76d9a952 100644 --- a/sdk/include/psdk/rpc.h +++ b/sdk/include/psdk/rpc.h @@ -118,25 +118,14 @@ typedef int RPC_STATUS; #include <excpt.h> #include <winerror.h> - #ifndef __USE_PSEH2__ - #define RpcTryExcept __try { - #define RpcExcept(expr) } __except (expr) { - #define RpcEndExcept } - #define RpcTryFinally __try { - #define RpcFinally } __finally { - #define RpcEndFinally } - #define RpcExceptionCode() GetExceptionCode() - #define RpcAbnormalTermination() AbnormalTermination() - #else - #define RpcTryExcept _SEH2_TRY - #define RpcExcept(expr) _SEH2_EXCEPT((expr)) - #define RpcEndExcept _SEH2_END; - #define RpcTryFinally _SEH2_TRY - #define RpcFinally _SEH2_FINALLY - #define RpcEndFinally _SEH2_END; - #define RpcExceptionCode() _SEH2_GetExceptionCode() - #define RpcAbnormalTermination() (_SEH2_GetExceptionCode() != 0) - #endif + #define RpcTryExcept _SEH2_TRY + #define RpcExcept(expr) _SEH2_EXCEPT((expr)) + #define RpcEndExcept _SEH2_END; + #define RpcTryFinally _SEH2_TRY + #define RpcFinally _SEH2_FINALLY + #define RpcEndFinally _SEH2_END; + #define RpcExceptionCode() _SEH2_GetExceptionCode() + #define RpcAbnormalTermination() (_SEH2_GetExceptionCode() != 0) #endif #if defined(__RPC_WIN64__) diff --git a/sdk/include/reactos/wine/exception.h b/sdk/include/reactos/wine/exception.h index 8d0b3ea46c0..409d1e64407 100644 --- a/sdk/include/reactos/wine/exception.h +++ b/sdk/include/reactos/wine/exception.h @@ -55,7 +55,6 @@ typedef struct _WINE_EXCEPTION_REGISTRATION_RECORD #define PEXCEPTION_REGISTRATION_RECORD PWINE_EXCEPTION_REGISTRATION_RECORD #endif -#ifdef __USE_PSEH2__ #define __TRY _SEH2_TRY #define __EXCEPT(func) _SEH2_EXCEPT(func(_SEH2_GetExceptionInformation())) #define __EXCEPT_CTX(func, ctx) _SEH2_EXCEPT((func)(GetExceptionInformation(), ctx)) @@ -76,16 +75,6 @@ typedef struct _WINE_EXCEPTION_REGISTRATION_RECORD #ifndef AbnormalTermination #define AbnormalTermination() _SEH2_AbnormalTermination() #endif -#else -#define __TRY __try -#define __EXCEPT(func) __except(func(GetExceptionInformation())) -#define __EXCEPT_CTX(func, ctx) __except((func)(GetExceptionInformation(), ctx)) -#define __EXCEPT_PAGE_FAULT __except(GetExceptionCode() == STATUS_ACCESS_VIOLATION) -#define __EXCEPT_ALL __except(1) -#define __ENDTRY -#define __FINALLY(func) __finally { func(!AbnormalTermination()); } -#define __FINALLY_CTX(func, ctx) __finally { func(!AbnormalTermination(), ctx); } -#endif #if defined(__MINGW32__) || defined(__CYGWIN__) #define sigjmp_buf jmp_buf
2 weeks, 6 days
1
0
0
0
[reactos] 01/01: [RTL/x64] Improve RtlWalkFrameChain to handle user mode
by Timo Kreuzer
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=ca0fa4af1e1a0d43d99d6…
commit ca0fa4af1e1a0d43d99d653e7031c1edfacac019 Author: Timo Kreuzer <timo.kreuzer(a)reactos.org> AuthorDate: Sat Jul 13 07:59:44 2024 +0300 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Thu Jan 16 13:40:23 2025 +0200 [RTL/x64] Improve RtlWalkFrameChain to handle user mode --- sdk/lib/rtl/amd64/unwind.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/sdk/lib/rtl/amd64/unwind.c b/sdk/lib/rtl/amd64/unwind.c index ee7313bc62f..910d9cdeac3 100644 --- a/sdk/lib/rtl/amd64/unwind.c +++ b/sdk/lib/rtl/amd64/unwind.c @@ -943,6 +943,7 @@ RtlWalkFrameChain(OUT PVOID *Callers, PVOID HandlerData; ULONG i, FramesToSkip; PRUNTIME_FUNCTION FunctionEntry; + MODE CurrentMode = RtlpGetMode(); DPRINT("Enter RtlWalkFrameChain\n"); @@ -956,11 +957,6 @@ RtlWalkFrameChain(OUT PVOID *Callers, /* Get the stack limits */ RtlpGetStackLimits(&StackLow, &StackHigh); - /* Check if we want the user-mode stack frame */ - if (Flags & 1) - { - } - _SEH2_TRY { /* Loop the frames */ @@ -990,15 +986,26 @@ RtlWalkFrameChain(OUT PVOID *Callers, } /* Check if we are in kernel mode */ - if (RtlpGetMode() == KernelMode) + if (CurrentMode == KernelMode) { /* Check if we left the kernel range */ - if (!(Flags & 1) && (Context.Rip < 0xFFFF800000000000ULL)) + if (Context.Rip < 0xFFFF800000000000ULL) { - break; + /* Bail out, unless user mode was requested */ + if ((Flags & 1) == 0) + { + break; + } + + /* We are in user mode now, get UM stack bounds */ + CurrentMode = UserMode; + StackLow = (ULONG64)NtCurrentTeb()->NtTib.StackLimit; + StackHigh = (ULONG64)NtCurrentTeb()->NtTib.StackBase; } } - else + + /* Check (again) if we are in user mode now */ + if (CurrentMode == UserMode) { /* Check if we left the user range */ if ((Context.Rip < 0x10000) ||
2 weeks, 6 days
1
0
0
0
[reactos] 01/01: [SHELL32] Move SHOpenPropSheetA to propsheet.cpp (#7624)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f482244f45978b66ff35d…
commit f482244f45978b66ff35d508ff4439c7ddf3eb1e Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Thu Jan 16 20:09:30 2025 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Thu Jan 16 20:09:30 2025 +0900 [SHELL32] Move SHOpenPropSheetA to propsheet.cpp (#7624) Improve consistency of code management. JIRA issue: CORE-19278 - Move SHOpenPropSheetA from utils.cpp into propsheet.cpp that contains SHOpenPropSheetW. --- dll/win32/shell32/propsheet.cpp | 35 +++++++++++++++++++++++++++++++++++ dll/win32/shell32/utils.cpp | 38 -------------------------------------- 2 files changed, 35 insertions(+), 38 deletions(-) diff --git a/dll/win32/shell32/propsheet.cpp b/dll/win32/shell32/propsheet.cpp index 3fccaa0ac1a..7768e16c358 100644 --- a/dll/win32/shell32/propsheet.cpp +++ b/dll/win32/shell32/propsheet.cpp @@ -160,6 +160,41 @@ SHELL32_OpenPropSheet(LPCWSTR pszCaption, HKEY *ahKeys, UINT cKeys, return (Result != -1); } +/************************************************************************* + * SHOpenPropSheetA [SHELL32.707] + * + * @see
https://learn.microsoft.com/en-us/windows/win32/api/shlobj/nf-shlobj-shopen…
+ */ +EXTERN_C +BOOL WINAPI +SHOpenPropSheetA( + _In_opt_ LPCSTR pszCaption, + _In_opt_ HKEY *ahKeys, + _In_ UINT cKeys, + _In_ const CLSID *pclsidDefault, + _In_ IDataObject *pDataObject, + _In_opt_ IShellBrowser *pShellBrowser, + _In_opt_ LPCSTR pszStartPage) +{ + CStringW strStartPageW, strCaptionW; + LPCWSTR pszCaptionW = NULL, pszStartPageW = NULL; + + if (pszCaption) + { + strStartPageW = pszCaption; + pszCaptionW = strCaptionW; + } + + if (pszStartPage) + { + strStartPageW = pszStartPage; + pszStartPageW = strStartPageW; + } + + return SHOpenPropSheetW(pszCaptionW, ahKeys, cKeys, pclsidDefault, + pDataObject, pShellBrowser, pszStartPageW); +} + /************************************************************************* * SHOpenPropSheetW [SHELL32.80] * diff --git a/dll/win32/shell32/utils.cpp b/dll/win32/shell32/utils.cpp index a384c6c4925..440d22f6460 100644 --- a/dll/win32/shell32/utils.cpp +++ b/dll/win32/shell32/utils.cpp @@ -1116,44 +1116,6 @@ CopyStreamUI( return hr; } -/************************************************************************* - * SHOpenPropSheetA [SHELL32.707] - * - * @see
https://learn.microsoft.com/en-us/windows/win32/api/shlobj/nf-shlobj-shopen…
- */ -EXTERN_C -BOOL WINAPI -SHOpenPropSheetA( - _In_opt_ LPCSTR pszCaption, - _In_opt_ HKEY *ahKeys, - _In_ UINT cKeys, - _In_ const CLSID *pclsidDefault, - _In_ IDataObject *pDataObject, - _In_opt_ IShellBrowser *pShellBrowser, - _In_opt_ LPCSTR pszStartPage) -{ - CStringW strStartPageW, strCaptionW; - LPCWSTR pszCaptionW = NULL, pszStartPageW = NULL; - - TRACE("(%s, %p, %u, %p, %p, %p, %s)", debugstr_a(pszCaption), ahKeys, cKeys, pclsidDefault, - pDataObject, pShellBrowser, debugstr_a(pszStartPage)); - - if (pszCaption) - { - strStartPageW = pszCaption; - pszCaptionW = strCaptionW; - } - - if (pszStartPage) - { - strStartPageW = pszStartPage; - pszStartPageW = strStartPageW; - } - - return SHOpenPropSheetW(pszCaptionW, ahKeys, cKeys, pclsidDefault, - pDataObject, pShellBrowser, pszStartPageW); -} - /************************************************************************* * Activate_RunDLL [SHELL32.105] *
2 weeks, 6 days
1
0
0
0
← Newer
1
...
18
19
20
21
22
23
24
...
28
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Results per page:
10
25
50
100
200