source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/corecrt.h@ 1167

Last change on this file since 1167 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 20.7 KB
Line 
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6
7#ifndef _INC_CORECRT
8#define _INC_CORECRT
9
10#include <_mingw.h>
11
12#ifndef __WIDL__
13#undef _CRT_PACKING
14#define _CRT_PACKING 8
15#pragma pack(push,_CRT_PACKING)
16#endif
17
18#ifdef __ERRCODE_DEFINED_MS
19/* #define __ERRCODE_DEFINED_MS */
20typedef int errcode;
21#endif
22
23#ifndef _CRTNOALIAS
24#define _CRTNOALIAS
25#endif
26
27#ifndef _CRTRESTRICT
28#define _CRTRESTRICT
29#endif
30
31#ifndef _SIZE_T_DEFINED
32#define _SIZE_T_DEFINED
33#undef size_t
34#ifdef _WIN64
35__MINGW_EXTENSION typedef unsigned __int64 size_t;
36#else
37typedef unsigned int size_t;
38#endif /* _WIN64 */
39#endif /* _SIZE_T_DEFINED */
40
41#ifndef _SSIZE_T_DEFINED
42#define _SSIZE_T_DEFINED
43#undef ssize_t
44#ifdef _WIN64
45__MINGW_EXTENSION typedef __int64 ssize_t;
46#else
47typedef int ssize_t;
48#endif /* _WIN64 */
49#endif /* _SSIZE_T_DEFINED */
50
51#ifndef _RSIZE_T_DEFINED
52typedef size_t rsize_t;
53#define _RSIZE_T_DEFINED
54#endif
55
56#ifndef _INTPTR_T_DEFINED
57#define _INTPTR_T_DEFINED
58#ifndef __intptr_t_defined
59#define __intptr_t_defined
60#undef intptr_t
61#ifdef _WIN64
62__MINGW_EXTENSION typedef __int64 intptr_t;
63#else
64typedef int intptr_t;
65#endif /* _WIN64 */
66#endif /* __intptr_t_defined */
67#endif /* _INTPTR_T_DEFINED */
68
69#ifndef _UINTPTR_T_DEFINED
70#define _UINTPTR_T_DEFINED
71#ifndef __uintptr_t_defined
72#define __uintptr_t_defined
73#undef uintptr_t
74#ifdef _WIN64
75__MINGW_EXTENSION typedef unsigned __int64 uintptr_t;
76#else
77typedef unsigned int uintptr_t;
78#endif /* _WIN64 */
79#endif /* __uintptr_t_defined */
80#endif /* _UINTPTR_T_DEFINED */
81
82#ifndef _PTRDIFF_T_DEFINED
83#define _PTRDIFF_T_DEFINED
84#ifndef _PTRDIFF_T_
85#define _PTRDIFF_T_
86#undef ptrdiff_t
87#ifdef _WIN64
88__MINGW_EXTENSION typedef __int64 ptrdiff_t;
89#else
90typedef int ptrdiff_t;
91#endif /* _WIN64 */
92#endif /* _PTRDIFF_T_ */
93#endif /* _PTRDIFF_T_DEFINED */
94
95#ifndef _WCHAR_T_DEFINED
96#define _WCHAR_T_DEFINED
97#if !defined(__cplusplus) && !defined(__WIDL__)
98typedef unsigned short wchar_t;
99#endif /* C++ */
100#endif /* _WCHAR_T_DEFINED */
101
102#ifndef _WCTYPE_T_DEFINED
103#define _WCTYPE_T_DEFINED
104#ifndef _WINT_T
105#define _WINT_T
106typedef unsigned short wint_t;
107typedef unsigned short wctype_t;
108#endif /* _WINT_T */
109#endif /* _WCTYPE_T_DEFINED */
110
111#ifndef _ERRCODE_DEFINED
112#define _ERRCODE_DEFINED
113typedef int errno_t;
114#endif
115
116#ifndef _TIME32_T_DEFINED
117#define _TIME32_T_DEFINED
118typedef long __time32_t;
119#endif
120
121#ifndef _TIME64_T_DEFINED
122#define _TIME64_T_DEFINED
123__MINGW_EXTENSION typedef __int64 __time64_t;
124#endif /* _TIME64_T_DEFINED */
125
126#ifdef _USE_32BIT_TIME_T
127#ifdef _WIN64
128#error You cannot use 32-bit time_t (_USE_32BIT_TIME_T) with _WIN64
129#undef _USE_32BIT_TIME_T
130#endif
131#endif /* _USE_32BIT_TIME_T */
132
133#ifndef _TIME_T_DEFINED
134#define _TIME_T_DEFINED
135#ifdef _USE_32BIT_TIME_T
136typedef __time32_t time_t;
137#else
138typedef __time64_t time_t;
139#endif
140#endif /* _TIME_T_DEFINED */
141
142#ifndef _CRT_SECURE_CPP_NOTHROW
143#define _CRT_SECURE_CPP_NOTHROW throw()
144#endif
145
146#ifndef __CRTDECL
147#if !defined(__cplusplus) && defined(__GNUC__)
148#define __CRTDECL __cdecl __attribute__ ((__unused__))
149#else
150#define __CRTDECL __cdecl
151#endif
152#endif
153
154#if defined(__cplusplus) && _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES
155
156#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(__ret,__func,__dsttype,__dst) \
157 extern "C++" { \
158 template <size_t __size> \
159 inline __ret __cdecl __func(__dsttype (&__dst)[__size]) { \
160 return __func(__dst,__size); \
161 } \
162 }
163
164#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(__ret,__func,__dsttype,__dst,__type1,__arg1) \
165 extern "C++" {\
166 template <size_t __size> \
167 inline __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1) { \
168 return __func(__dst,__size,__arg1); \
169 }\
170 }
171
172#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2)\
173 extern "C++" {\
174 template <size_t __size> inline\
175 __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2) { \
176 return __func(__dst,__size,__arg1,__arg2); \
177 }\
178 }
179
180#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) \
181 extern "C++" { \
182 template <size_t __size> inline \
183 __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, __type3 __arg3) { \
184 return __func(__dst,__size,__arg1,__arg2,__arg3); \
185 }\
186 }
187
188#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3,__type4,__arg4) \
189 extern "C++" { \
190 template <size_t __size> inline \
191 __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, __type3 __arg3, __type4 __arg4) { \
192 return __func(__dst,__size,__arg1,__arg2,__arg3,__arg4); \
193 }\
194 }
195
196#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1) \
197 extern "C++" { \
198 template <size_t __size> inline \
199 __ret __cdecl __func(__type0 __arg0, __dsttype (&__dst)[__size], __type1 __arg1) { \
200 return __func(__arg0, __dst, __size, __arg1); \
201 } \
202 }
203
204#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2) \
205 extern "C++" { \
206 template <size_t __size> inline \
207 __ret __cdecl __func(__type0 __arg0, __dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2) { \
208 return __func(__arg0, __dst, __size, __arg1, __arg2); \
209 } \
210 }
211
212#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) \
213 extern "C++" { \
214 template <size_t __size> inline \
215 __ret __cdecl __func(__type0 __arg0, __dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, __type3 __arg3) { \
216 return __func(__arg0, __dst, __size, __arg1, __arg2, __arg3); \
217 } \
218 }
219
220#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(__ret,__func,__type1,__arg1,__type2,__arg2,__dsttype,__dst) \
221 extern "C++" { \
222 template <size_t __size> inline \
223 __ret __cdecl __func(__type1 __arg1, __type2 __arg2, __dsttype (&__dst)[__size]) { \
224 return __func(__arg1, __arg2, __dst, __size); \
225 } \
226 }
227
228#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1) \
229 extern "C++" {\
230 template <size_t __size> \
231 inline __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, ...) { \
232 va_list __vaargs; \
233 _crt_va_start(__vaargs, __arg1); \
234 __ret __retval = __vfunc(__dst,__size,__arg1,__vaargs); \
235 _crt_va_end(__vaargs); \
236 return __retval; \
237 }\
238 }
239
240#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1,__type2,__arg2) \
241 extern "C++" {\
242 template <size_t __size> \
243 inline __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, ...) { \
244 va_list __vaargs; \
245 _crt_va_start(__vaargs, __arg2); \
246 __ret __retval = __vfunc(__dst,__size,__arg1,__arg2,__vaargs); \
247 _crt_va_end(__vaargs); \
248 return __retval; \
249 }\
250 }
251
252#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(__ret,__func,__dsttype,__src) \
253 extern "C++" { \
254 template <size_t __drive_size, size_t __dir_size, size_t __name_size, size_t __ext_size> inline \
255 __ret __cdecl __func(const __dsttype *__src, __dsttype (&__drive)[__drive_size], __dsttype (&__dir)[__dir_size], __dsttype (&__name)[__name_size], __dsttype (&__ext)[__ext_size]) { \
256 return __func(__src, __drive, __drive_size, __dir, __dir_size, __name, __name_size, __ext, __ext_size); \
257 } \
258 }
259
260#else
261
262#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(__ret,__func,__dsttype,__dst)
263#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(__ret,__func,__dsttype,__dst,__type1,__arg1)
264#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2)
265#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3)
266#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3,__type4,__arg4)
267#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1)
268#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2)
269#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3)
270#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(__ret,__func,__type1,__arg1,__type2,__arg2,__dsttype,__dst)
271#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1)
272#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1,__type2,__arg2)
273#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(__ret,__func,__dsttype,__src)
274
275#endif
276
277#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(__ret_type, __ret_policy, __decl_spec, __name, __dst_attr, __dst_type, __dst) \
278 __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name##_s, __dst_attr, __dst_type, __dst)
279#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(__ret_type, __ret_policy, __decl_spec, __name, __dst_attr, __dst_type, __dst, __arg1_type, __arg1) \
280 __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2)
281#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2(__ret_type, __ret_policy, __decl_spec, __name, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2) \
282 __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2)
283#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3(__ret_type, __ret_policy, __decl_spec, __name, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3) \
284 __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3)
285#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4(__ret_type, __ret_policy, __decl_spec, __name, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3, __arg4_type, __arg4) \
286 __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3, __arg4_type, __arg4)
287
288#if defined(__cplusplus) && _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
289
290#define __RETURN_POLICY_SAME(__func_call, __dst) return (__func_call)
291#define __RETURN_POLICY_DST(__func_call, __dst) return ((__func_call) == 0 ? __dst : 0)
292#define __RETURN_POLICY_VOID(__func_call, __dst) (__func_call); return
293#define __EMPTY_DECLSPEC
294
295#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __dst_attr, __dst_type, __dst) \
296 __inline __ret_type __CRTDECL __insecure_##__name(__dst_attr __dst_type *__dst) \
297 { \
298 __decl_spec __ret_type __cdecl __name(__dst_type *__dst); \
299 return __name(__dst); \
300 } \
301 extern "C++" { \
302 template <typename _T> \
303 inline __ret_type __CRTDECL __name(_T &__dst) _CRT_SECURE_CPP_NOTHROW { \
304 return __insecure_##__name(static_cast<__dst_type*>(__dst)); \
305 } \
306 template <typename _T> \
307 inline __ret_type __CRTDECL __name(const _T &__dst) _CRT_SECURE_CPP_NOTHROW { \
308 return __insecure_##__name(static_cast<__dst_type *>(__dst)); \
309 } \
310 template <> \
311 inline __ret_type __CRTDECL __name(__dst_type *&__dst) _CRT_SECURE_CPP_NOTHROW { \
312 return __insecure_##__name(__dst); \
313 } \
314 template <size_t __size> \
315 inline __ret_type __CRTDECL __name(__dst_type (&__dst)[__size]) _CRT_SECURE_CPP_NOTHROW { \
316 __ret_policy(__sec_name(__dst, __size), __dst); \
317 } \
318 }
319
320#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __sec_dst_type, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2) \
321 __inline __ret_type __CRTDECL __insecure_##__name(__dst_attr __dst_type *__dst, __arg1_type __arg1, __arg2_type __arg2) \
322 { \
323 __decl_spec __ret_type __cdecl __name(__dst_type *__dst, __arg1_type, __arg2_type); \
324 return __name(__dst, __arg1, __arg2); \
325 } \
326 extern "C++" { \
327 template <typename _T> \
328 inline __ret_type __CRTDECL __name(_T &__dst, __arg1_type __arg1, __arg2_type __arg2) _CRT_SECURE_CPP_NOTHROW { \
329 return __insecure_##__name(static_cast<__dst_type*>(__dst), __arg1, __arg2); \
330 } \
331 template <typename _T> \
332 inline __ret_type __CRTDECL __name(const _T &__dst, __arg1_type __arg1, __arg2_type __arg2) _CRT_SECURE_CPP_NOTHROW { \
333 return __insecure_##__name(static_cast<__dst_type *>(__dst), __arg1, __arg2); \
334 } \
335 template <> \
336 inline __ret_type __CRTDECL __name(__dst_type *&__dst, __arg1_type __arg1, __arg2_type __arg2) _CRT_SECURE_CPP_NOTHROW { \
337 return __insecure_##__name(__dst, __arg1, __arg2); \
338 } \
339 template <size_t __size> \
340 inline __ret_type __CRTDECL __name(__sec_dst_type (&__dst)[__size], __arg1_type __arg1, __arg2_type __arg2) _CRT_SECURE_CPP_NOTHROW { \
341 __ret_policy(__sec_name(__dst, __size), __dst); \
342 } \
343 }
344
345#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __sec_dst_type, __dst_attr, __dst_type, __dst, __arg1_type, __arg1) \
346 __inline __ret_type __CRTDECL __insecure_##__name(__dst_attr __dst_type *__dst, __arg1_type __arg1) \
347 { \
348 __decl_spec __ret_type __cdecl __name(__dst_type *__dst, __arg1_type); \
349 return __name(__dst, __arg1); \
350 } \
351 extern "C++" { \
352 template <typename _T> \
353 inline __ret_type __CRTDECL __name(_T &__dst, __arg1_type __arg1) _CRT_SECURE_CPP_NOTHROW { \
354 return __insecure_##__name(static_cast<__dst_type*>(__dst), __arg1); \
355 } \
356 template <typename _T> \
357 inline __ret_type __CRTDECL __name(const _T &__dst, __arg1_type __arg1) _CRT_SECURE_CPP_NOTHROW { \
358 return __insecure_##__name(static_cast<__dst_type *>(__dst), __arg1); \
359 } \
360 template <> \
361 inline __ret_type __CRTDECL __name(__dst_type *&__dst, __arg1_type __arg1) _CRT_SECURE_CPP_NOTHROW { \
362 return __insecure_##__name(__dst, __arg1); \
363 } \
364 template <size_t __size> \
365 inline __ret_type __CRTDECL __name(__sec_dst_type (&__dst)[__size], __arg1_type __arg1) _CRT_SECURE_CPP_NOTHROW { \
366 __ret_policy(__sec_name(__dst, __size), __dst); \
367 } \
368 }
369
370#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __sec_dst_type, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3) \
371 __inline __ret_type __CRTDECL __insecure_##__name(__dst_attr __dst_type *__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3) \
372 { \
373 __decl_spec __ret_type __cdecl __name(__dst_type *__dst, __arg1_type, __arg2_type, __arg3_type); \
374 return __name(__dst, __arg1, __arg2, __arg3); \
375 } \
376 extern "C++" { \
377 template <typename _T> \
378 inline __ret_type __CRTDECL __name(_T &__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3) _CRT_SECURE_CPP_NOTHROW { \
379 return __insecure_##__name(static_cast<__dst_type*>(__dst), __arg1, __arg2, __arg3); \
380 } \
381 template <typename _T> \
382 inline __ret_type __CRTDECL __name(const _T &__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3) _CRT_SECURE_CPP_NOTHROW { \
383 return __insecure_##__name(static_cast<__dst_type *>(__dst), __arg1, __arg2, __arg3); \
384 } \
385 template <> \
386 inline __ret_type __CRTDECL __name(__dst_type *&__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3) _CRT_SECURE_CPP_NOTHROW { \
387 return __insecure_##__name(__dst, __arg1, __arg2, __arg3); \
388 } \
389 template <size_t __size> \
390 inline __ret_type __CRTDECL __name(__sec_dst_type (&__dst)[__size], __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3) _CRT_SECURE_CPP_NOTHROW { \
391 __ret_policy(__sec_name(__dst, __size), __dst); \
392 } \
393 }
394
395#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __sec_dst_type, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3, __arg4_type, __arg4) \
396 __inline __ret_type __CRTDECL __insecure_##__name(__dst_attr __dst_type *__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3, __arg4_type __arg4) \
397 { \
398 __decl_spec __ret_type __cdecl __name(__dst_type *__dst, __arg1_type, __arg2_type, __arg3_type, __arg4_type); \
399 return __name(__dst, __arg1, __arg2, __arg3, __arg4); \
400 } \
401 extern "C++" { \
402 template <typename _T> \
403 inline __ret_type __CRTDECL __name(_T &__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3, __arg4_type __arg4) _CRT_SECURE_CPP_NOTHROW { \
404 return __insecure_##__name(static_cast<__dst_type*>(__dst), __arg1, __arg2, __arg3, __arg4); \
405 } \
406 template <typename _T> \
407 inline __ret_type __CRTDECL __name(const _T &__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3, __arg4_type __arg4) _CRT_SECURE_CPP_NOTHROW { \
408 return __insecure_##__name(static_cast<__dst_type *>(__dst), __arg1, __arg2, __arg3, __arg4); \
409 } \
410 template <> \
411 inline __ret_type __CRTDECL __name(__dst_type *&__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3, __arg4_type __arg4) _CRT_SECURE_CPP_NOTHROW { \
412 return __insecure_##__name(__dst, __arg1, __arg2, __arg3, __arg4); \
413 } \
414 template <size_t __size> \
415 inline __ret_type __CRTDECL __name(__sec_dst_type (&__dst)[__size], __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3, __arg4_type __arg4) _CRT_SECURE_CPP_NOTHROW { \
416 __ret_policy(__sec_name(__dst, __size)); \
417 } \
418 }
419
420#else
421
422#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __dst_attr, __dst_type, __dst)
423#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __dst_attr, __dst_type, __dst, __arg1_type, __arg1)
424#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2)
425#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3)
426#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3, __arg4_type, __arg4)
427
428#endif
429
430struct threadlocaleinfostruct;
431struct threadmbcinfostruct;
432typedef struct threadlocaleinfostruct *pthreadlocinfo;
433typedef struct threadmbcinfostruct *pthreadmbcinfo;
434struct __lc_time_data;
435
436typedef struct localeinfo_struct {
437 pthreadlocinfo locinfo;
438 pthreadmbcinfo mbcinfo;
439} _locale_tstruct,*_locale_t;
440
441#ifndef _TAGLC_ID_DEFINED
442#define _TAGLC_ID_DEFINED
443typedef struct tagLC_ID {
444 unsigned short wLanguage;
445 unsigned short wCountry;
446 unsigned short wCodePage;
447} LC_ID,*LPLC_ID;
448#endif /* _TAGLC_ID_DEFINED */
449
450#ifndef _THREADLOCALEINFO
451#define _THREADLOCALEINFO
452typedef struct threadlocaleinfostruct {
453#ifdef _UCRT
454 const unsigned short *_locale_pctype;
455 int _locale_mb_cur_max;
456 unsigned int _locale_lc_codepage;
457#else
458 int refcount;
459 unsigned int lc_codepage;
460 unsigned int lc_collate_cp;
461 unsigned long lc_handle[6];
462 LC_ID lc_id[6];
463 struct {
464 char *locale;
465 wchar_t *wlocale;
466 int *refcount;
467 int *wrefcount;
468 } lc_category[6];
469 int lc_clike;
470 int mb_cur_max;
471 int *lconv_intl_refcount;
472 int *lconv_num_refcount;
473 int *lconv_mon_refcount;
474 struct lconv *lconv;
475 int *ctype1_refcount;
476 unsigned short *ctype1;
477 const unsigned short *pctype;
478 const unsigned char *pclmap;
479 const unsigned char *pcumap;
480 struct __lc_time_data *lc_time_curr;
481#endif
482} threadlocinfo;
483#endif /* _THREADLOCALEINFO */
484
485#ifndef __crt_typefix
486#define __crt_typefix(ctype)
487#endif
488
489#ifndef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
490#ifdef WINAPI_FAMILY
491#include <winapifamily.h>
492#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
493#define _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
494#endif
495#else /* !WINAPI_FAMILY */
496#define _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
497#endif /* !WINAPI_FAMILY */
498#endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP */
499
500#ifndef __WIDL__
501#pragma pack(pop)
502#endif
503
504#endif /* _INC_CORECRT */
Note: See TracBrowser for help on using the repository browser.