1+ /*
2+ * PROJECT: ReactOS CRT headers
3+ * LICENSE: MIT (https://spdx.org/licenses/MIT)
4+ * PURPOSE: Declarations used throughout the CoreCRT library.
5+ * COPYRIGHT: Copyright (c) Microsoft Corporation. All rights reserved.
6+ */
17
28#pragma once
39
@@ -20,6 +26,169 @@ typedef struct localeinfo_struct
2026#define DEFINED_localeinfo_struct 1
2127#endif
2228
29+ #ifndef RC_INVOKED
30+ #if defined __cplusplus && _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES
31+
32+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0 (_ReturnType, _FuncName, _DstType, _Dst ) \
33+ extern " C++" \
34+ { \
35+ template <size_t _Size> \
36+ inline \
37+ _ReturnType __CRTDECL _FuncName (_DstType (&_Dst)[_Size]) _CRT_SECURE_CPP_NOTHROW \
38+ { \
39+ return _FuncName (_Dst, _Size); \
40+ } \
41+ }
42+
43+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1 (_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1 ) \
44+ extern " C++" \
45+ { \
46+ template <size_t _Size> \
47+ inline \
48+ _ReturnType __CRTDECL _FuncName (_DstType (&_Dst)[_Size], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \
49+ { \
50+ return _FuncName (_Dst, _Size, _TArg1); \
51+ } \
52+ }
53+
54+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2 (_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2 ) \
55+ extern " C++" \
56+ { \
57+ template <size_t _Size> \
58+ inline \
59+ _ReturnType __CRTDECL _FuncName (_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \
60+ { \
61+ return _FuncName (_Dst, _Size, _TArg1, _TArg2); \
62+ } \
63+ }
64+
65+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3 (_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3 ) \
66+ extern " C++" \
67+ { \
68+ template <size_t _Size> \
69+ inline \
70+ _ReturnType __CRTDECL _FuncName (_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \
71+ { \
72+ return _FuncName (_Dst, _Size, _TArg1, _TArg2, _TArg3); \
73+ } \
74+ }
75+
76+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4 (_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4 ) \
77+ extern " C++" \
78+ { \
79+ template <size_t _Size> \
80+ inline \
81+ _ReturnType __CRTDECL _FuncName (_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4) _CRT_SECURE_CPP_NOTHROW \
82+ { \
83+ return _FuncName (_Dst, _Size, _TArg1, _TArg2, _TArg3, _TArg4); \
84+ } \
85+ }
86+
87+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1 (_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1 ) \
88+ extern " C++" \
89+ { \
90+ template <size_t _Size> \
91+ inline \
92+ _ReturnType __CRTDECL _FuncName (_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1) _CRT_SECURE_CPP_NOTHROW \
93+ { \
94+ return _FuncName (_HArg1, _Dst, _Size, _TArg1); \
95+ } \
96+ }
97+
98+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2 (_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2 ) \
99+ extern " C++" \
100+ { \
101+ template <size_t _Size> \
102+ inline \
103+ _ReturnType __CRTDECL _FuncName (_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \
104+ { \
105+ return _FuncName (_HArg1, _Dst, _Size, _TArg1, _TArg2); \
106+ } \
107+ }
108+
109+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3 (_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3 ) \
110+ extern " C++" \
111+ { \
112+ template <size_t _Size> \
113+ inline \
114+ _ReturnType __CRTDECL _FuncName (_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) _CRT_SECURE_CPP_NOTHROW \
115+ { \
116+ return _FuncName (_HArg1, _Dst, _Size, _TArg1, _TArg2, _TArg3); \
117+ } \
118+ }
119+
120+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0 (_ReturnType, _FuncName, _HType1, _HArg1, _HType2, _HArg2, _DstType, _Dst ) \
121+ extern " C++" \
122+ { \
123+ template <size_t _Size> \
124+ inline \
125+ _ReturnType __CRTDECL _FuncName (_HType1 _HArg1, _HType2 _HArg2, _DstType (&_Dst)[_Size]) _CRT_SECURE_CPP_NOTHROW \
126+ { \
127+ return _FuncName (_HArg1, _HArg2, _Dst, _Size); \
128+ } \
129+ }
130+
131+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST (_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1 ) \
132+ extern " C++" \
133+ { \
134+ template <size_t _Size> \
135+ inline \
136+ _ReturnType __CRTDECL _FuncName (_DstType (&_Dst)[_Size], _TType1 _TArg1, ...) _CRT_SECURE_CPP_NOTHROW \
137+ { \
138+ va_list _ArgList; \
139+ __crt_va_start (_ArgList, _TArg1); \
140+ return _VFuncName (_Dst, _Size, _TArg1, _ArgList); \
141+ } \
142+ }
143+
144+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST (_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2 ) \
145+ extern " C++" \
146+ { \
147+ template <size_t _Size> \
148+ inline \
149+ _ReturnType __CRTDECL _FuncName (_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, ...) _CRT_SECURE_CPP_NOTHROW \
150+ { \
151+ va_list _ArgList; \
152+ __crt_va_start (_ArgList, _TArg2); \
153+ return _VFuncName (_Dst, _Size, _TArg1, _TArg2, _ArgList); \
154+ } \
155+ }
156+
157+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH (_ReturnType, _FuncName, _DstType, _Src ) \
158+ extern " C++" \
159+ { \
160+ template <size_t _DriveSize, size_t _DirSize, size_t _NameSize, size_t _ExtSize> \
161+ inline \
162+ _ReturnType __CRTDECL _FuncName ( \
163+ _In_z_ _DstType const * _Src, \
164+ _Post_z_ _DstType (&_Drive)[_DriveSize], \
165+ _Post_z_ _DstType (&_Dir)[_DirSize], \
166+ _Post_z_ _DstType (&_Name)[_NameSize], \
167+ _Post_z_ _DstType (&_Ext)[_ExtSize] \
168+ ) _CRT_SECURE_CPP_NOTHROW \
169+ { \
170+ return _FuncName (_Src, _Drive, _DriveSize, _Dir, _DirSize, _Name, _NameSize, _Ext, _ExtSize); \
171+ } \
172+ }
173+
174+ #else // ^^^ _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES ^^^ // vvv !_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES vvv //
175+
176+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0 (_ReturnType, _FuncName, _DstType, _Dst )
177+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1 (_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1 )
178+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2 (_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2 )
179+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3 (_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3 )
180+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4 (_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4 )
181+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1 (_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1 )
182+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2 (_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2 )
183+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3 (_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3 )
184+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0 (_ReturnType, _FuncName, _HType1, _HArg1, _HType2, _HArg2, _DstType, _Dst )
185+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST (_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1 )
186+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST (_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2 )
187+ #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH (_ReturnType, _FuncName, _DstType, _Src )
188+
189+ #endif // !_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES
190+ #endif
191+
23192#ifdef __cplusplus
24193} // extern "C"
25194#endif
0 commit comments