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_CRTDEFS 8 #define _INC_CRTDEFS 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 */ 20 typedef 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 37 typedef 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 47 typedef int ssize_t; 48 #endif /* _WIN64 */ 49 #endif /* _SSIZE_T_DEFINED */ 50 51 #ifndef _RSIZE_T_DEFINED 52 typedef 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 64 typedef 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 77 typedef 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 90 typedef 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__) 98 typedef 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 106 typedef unsigned short wint_t; 107 typedef unsigned short wctype_t; 108 #endif /* _WINT_T */ 109 #endif /* _WCTYPE_T_DEFINED */ 110 111 #ifndef _ERRCODE_DEFINED 112 #define _ERRCODE_DEFINED 113 typedef int errno_t; 114 #endif 115 116 #ifndef _TIME32_T_DEFINED 117 #define _TIME32_T_DEFINED 118 typedef 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 136 typedef __time32_t time_t; 137 #else 138 typedef __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 #if defined(__cplusplus) && _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 147 148 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(__ret,__func,__dsttype,__dst) \ 149 extern "C++" { \ 150 template <size_t __size> \ 151 inline __ret __cdecl __func(__dsttype (&__dst)[__size]) { \ 152 return __func(__dst,__size); \ 153 } \ 154 } 155 156 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(__ret,__func,__dsttype,__dst,__type1,__arg1) \ 157 extern "C++" {\ 158 template <size_t __size> \ 159 inline __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1) { \ 160 return __func(__dst,__size,__arg1); \ 161 }\ 162 } 163 164 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2)\ 165 extern "C++" {\ 166 template <size_t __size> inline\ 167 __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2) { \ 168 return __func(__dst,__size,__arg1,__arg2); \ 169 }\ 170 } 171 172 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) \ 173 extern "C++" { \ 174 template <size_t __size> inline \ 175 __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, __type3 __arg3) { \ 176 return __func(__dst,__size,__arg1,__arg2,__arg3); \ 177 }\ 178 } 179 180 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3,__type4,__arg4) \ 181 extern "C++" { \ 182 template <size_t __size> inline \ 183 __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, __type3 __arg3, __type4 __arg4) { \ 184 return __func(__dst,__size,__arg1,__arg2,__arg3,__arg4); \ 185 }\ 186 } 187 188 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1) \ 189 extern "C++" { \ 190 template <size_t __size> inline \ 191 __ret __cdecl __func(__type0 __arg0, __dsttype (&__dst)[__size], __type1 __arg1) { \ 192 return __func(__arg0, __dst, __size, __arg1); \ 193 } \ 194 } 195 196 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2) \ 197 extern "C++" { \ 198 template <size_t __size> inline \ 199 __ret __cdecl __func(__type0 __arg0, __dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2) { \ 200 return __func(__arg0, __dst, __size, __arg1, __arg2); \ 201 } \ 202 } 203 204 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) \ 205 extern "C++" { \ 206 template <size_t __size> inline \ 207 __ret __cdecl __func(__type0 __arg0, __dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, __type3 __arg3) { \ 208 return __func(__arg0, __dst, __size, __arg1, __arg2, __arg3); \ 209 } \ 210 } 211 212 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(__ret,__func,__type1,__arg1,__type2,__arg2,__dsttype,__dst) \ 213 extern "C++" { \ 214 template <size_t __size> inline \ 215 __ret __cdecl __func(__type1 __arg1, __type2 __arg2, __dsttype (&__dst)[__size]) { \ 216 return __func(__arg1, __arg2, __dst, __size); \ 217 } \ 218 } 219 220 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1) \ 221 extern "C++" {\ 222 template <size_t __size> \ 223 inline __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, ...) { \ 224 va_list __vaargs; \ 225 _crt_va_start(__vaargs, __arg1); \ 226 __ret __retval = __vfunc(__dst,__size,__arg1,__vaargs); \ 227 _crt_va_end(__vaargs); \ 228 return __retval; \ 229 }\ 230 } 231 232 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1,__type2,__arg2) \ 233 extern "C++" {\ 234 template <size_t __size> \ 235 inline __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, ...) { \ 236 va_list __vaargs; \ 237 _crt_va_start(__vaargs, __arg2); \ 238 __ret __retval = __vfunc(__dst,__size,__arg1,__arg2,__vaargs); \ 239 _crt_va_end(__vaargs); \ 240 return __retval; \ 241 }\ 242 } 243 244 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(__ret,__func,__dsttype,__src) \ 245 extern "C++" { \ 246 template <size_t __drive_size, size_t __dir_size, size_t __name_size, size_t __ext_size> inline \ 247 __ret __cdecl __func(const __dsttype *__src, __dsttype (&__drive)[__drive_size], __dsttype (&__dir)[__dir_size], __dsttype (&__name)[__name_size], __dsttype (&__ext)[__ext_size]) { \ 248 return __func(__src, __drive, __drive_size, __dir, __dir_size, __name, __name_size, __ext, __ext_size); \ 249 } \ 250 } 251 252 #else 253 254 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(__ret,__func,__dsttype,__dst) 255 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(__ret,__func,__dsttype,__dst,__type1,__arg1) 256 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2) 257 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) 258 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3,__type4,__arg4) 259 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1) 260 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2) 261 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) 262 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(__ret,__func,__type1,__arg1,__type2,__arg2,__dsttype,__dst) 263 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1) 264 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1,__type2,__arg2) 265 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(__ret,__func,__dsttype,__src) 266 267 #endif 268 269 #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(__ret_type, __ret_policy, __decl_spec, __name, __dst_attr, __dst_type, __dst) \ 270 __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name##_s, __dst_attr, __dst_type, __dst) 271 #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(__ret_type, __ret_policy, __decl_spec, __name, __dst_attr, __dst_type, __dst, __arg1_type, __arg1) \ 272 __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) 273 #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) \ 274 __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) 275 #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) \ 276 __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) 277 #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) \ 278 __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) 279 280 #if defined(__cplusplus) && _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 281 282 #define __RETURN_POLICY_SAME(__func_call, __dst) return (__func_call) 283 #define __RETURN_POLICY_DST(__func_call, __dst) return ((__func_call) == 0 ? __dst : 0) 284 #define __RETURN_POLICY_VOID(__func_call, __dst) (__func_call); return 285 #define __EMPTY_DECLSPEC 286 287 #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __dst_attr, __dst_type, __dst) \ 288 __inline __ret_type __CRTDECL __insecure_##__name(__dst_attr __dst_type *__dst) \ 289 { \ 290 __decl_spec __ret_type __cdecl __name(__dst_type *__dst); \ 291 return __name(__dst); \ 292 } \ 293 extern "C++" { \ 294 template <typename _T> \ 295 inline __ret_type __CRTDECL __name(_T &__dst) _CRT_SECURE_CPP_NOTHROW { \ 296 return __insecure_##__name(static_cast<__dst_type*>(__dst)); \ 297 } \ 298 template <typename _T> \ 299 inline __ret_type __CRTDECL __name(const _T &__dst) _CRT_SECURE_CPP_NOTHROW { \ 300 return __insecure_##__name(static_cast<__dst_type *>(__dst)); \ 301 } \ 302 template <> \ 303 inline __ret_type __CRTDECL __name(__dst_type *&__dst) _CRT_SECURE_CPP_NOTHROW { \ 304 return __insecure_##__name(__dst); \ 305 } \ 306 template <size_t __size> \ 307 inline __ret_type __CRTDECL __name(__dst_type (&__dst)[__size]) _CRT_SECURE_CPP_NOTHROW { \ 308 __ret_policy(__sec_name(__dst, __size), __dst); \ 309 } \ 310 } 311 312 #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) \ 313 __inline __ret_type __CRTDECL __insecure_##__name(__dst_attr __dst_type *__dst, __arg1_type __arg1, __arg2_type __arg2) \ 314 { \ 315 __decl_spec __ret_type __cdecl __name(__dst_type *__dst, __arg1_type, __arg2_type); \ 316 return __name(__dst, __arg1, __arg2); \ 317 } \ 318 extern "C++" { \ 319 template <typename _T> \ 320 inline __ret_type __CRTDECL __name(_T &__dst, __arg1_type __arg1, __arg2_type __arg2) _CRT_SECURE_CPP_NOTHROW { \ 321 return __insecure_##__name(static_cast<__dst_type*>(__dst), __arg1, __arg2); \ 322 } \ 323 template <typename _T> \ 324 inline __ret_type __CRTDECL __name(const _T &__dst, __arg1_type __arg1, __arg2_type __arg2) _CRT_SECURE_CPP_NOTHROW { \ 325 return __insecure_##__name(static_cast<__dst_type *>(__dst), __arg1, __arg2); \ 326 } \ 327 template <> \ 328 inline __ret_type __CRTDECL __name(__dst_type *&__dst, __arg1_type __arg1, __arg2_type __arg2) _CRT_SECURE_CPP_NOTHROW { \ 329 return __insecure_##__name(__dst, __arg1, __arg2); \ 330 } \ 331 template <size_t __size> \ 332 inline __ret_type __CRTDECL __name(__sec_dst_type (&__dst)[__size], __arg1_type __arg1, __arg2_type __arg2) _CRT_SECURE_CPP_NOTHROW { \ 333 __ret_policy(__sec_name(__dst, __size), __dst); \ 334 } \ 335 } 336 337 #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) \ 338 __inline __ret_type __CRTDECL __insecure_##__name(__dst_attr __dst_type *__dst, __arg1_type __arg1) \ 339 { \ 340 __decl_spec __ret_type __cdecl __name(__dst_type *__dst, __arg1_type); \ 341 return __name(__dst, __arg1); \ 342 } \ 343 extern "C++" { \ 344 template <typename _T> \ 345 inline __ret_type __CRTDECL __name(_T &__dst, __arg1_type __arg1) _CRT_SECURE_CPP_NOTHROW { \ 346 return __insecure_##__name(static_cast<__dst_type*>(__dst), __arg1); \ 347 } \ 348 template <typename _T> \ 349 inline __ret_type __CRTDECL __name(const _T &__dst, __arg1_type __arg1) _CRT_SECURE_CPP_NOTHROW { \ 350 return __insecure_##__name(static_cast<__dst_type *>(__dst), __arg1); \ 351 } \ 352 template <> \ 353 inline __ret_type __CRTDECL __name(__dst_type *&__dst, __arg1_type __arg1) _CRT_SECURE_CPP_NOTHROW { \ 354 return __insecure_##__name(__dst, __arg1); \ 355 } \ 356 template <size_t __size> \ 357 inline __ret_type __CRTDECL __name(__sec_dst_type (&__dst)[__size], __arg1_type __arg1) _CRT_SECURE_CPP_NOTHROW { \ 358 __ret_policy(__sec_name(__dst, __size), __dst); \ 359 } \ 360 } 361 362 #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) \ 363 __inline __ret_type __CRTDECL __insecure_##__name(__dst_attr __dst_type *__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3) \ 364 { \ 365 __decl_spec __ret_type __cdecl __name(__dst_type *__dst, __arg1_type, __arg2_type, __arg3_type); \ 366 return __name(__dst, __arg1, __arg2, __arg3); \ 367 } \ 368 extern "C++" { \ 369 template <typename _T> \ 370 inline __ret_type __CRTDECL __name(_T &__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3) _CRT_SECURE_CPP_NOTHROW { \ 371 return __insecure_##__name(static_cast<__dst_type*>(__dst), __arg1, __arg2, __arg3); \ 372 } \ 373 template <typename _T> \ 374 inline __ret_type __CRTDECL __name(const _T &__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3) _CRT_SECURE_CPP_NOTHROW { \ 375 return __insecure_##__name(static_cast<__dst_type *>(__dst), __arg1, __arg2, __arg3); \ 376 } \ 377 template <> \ 378 inline __ret_type __CRTDECL __name(__dst_type *&__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3) _CRT_SECURE_CPP_NOTHROW { \ 379 return __insecure_##__name(__dst, __arg1, __arg2, __arg3); \ 380 } \ 381 template <size_t __size> \ 382 inline __ret_type __CRTDECL __name(__sec_dst_type (&__dst)[__size], __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3) _CRT_SECURE_CPP_NOTHROW { \ 383 __ret_policy(__sec_name(__dst, __size), __dst); \ 384 } \ 385 } 386 387 #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) \ 388 __inline __ret_type __CRTDECL __insecure_##__name(__dst_attr __dst_type *__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3, __arg4_type __arg4) \ 389 { \ 390 __decl_spec __ret_type __cdecl __name(__dst_type *__dst, __arg1_type, __arg2_type, __arg3_type, __arg4_type); \ 391 return __name(__dst, __arg1, __arg2, __arg3, __arg4); \ 392 } \ 393 extern "C++" { \ 394 template <typename _T> \ 395 inline __ret_type __CRTDECL __name(_T &__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3, __arg4_type __arg4) _CRT_SECURE_CPP_NOTHROW { \ 396 return __insecure_##__name(static_cast<__dst_type*>(__dst), __arg1, __arg2, __arg3, __arg4); \ 397 } \ 398 template <typename _T> \ 399 inline __ret_type __CRTDECL __name(const _T &__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3, __arg4_type __arg4) _CRT_SECURE_CPP_NOTHROW { \ 400 return __insecure_##__name(static_cast<__dst_type *>(__dst), __arg1, __arg2, __arg3, __arg4); \ 401 } \ 402 template <> \ 403 inline __ret_type __CRTDECL __name(__dst_type *&__dst, __arg1_type __arg1, __arg2_type __arg2, __arg3_type __arg3, __arg4_type __arg4) _CRT_SECURE_CPP_NOTHROW { \ 404 return __insecure_##__name(__dst, __arg1, __arg2, __arg3, __arg4); \ 405 } \ 406 template <size_t __size> \ 407 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 { \ 408 __ret_policy(__sec_name(__dst, __size)); \ 409 } \ 410 } 411 412 #else 413 414 #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(__ret_type, __ret_policy, __decl_spec, __name, __sec_name, __dst_attr, __dst_type, __dst) 415 #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) 416 #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) 417 #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) 418 #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) 419 420 #endif 421 422 struct threadlocaleinfostruct; 423 struct threadmbcinfostruct; 424 typedef struct threadlocaleinfostruct *pthreadlocinfo; 425 typedef struct threadmbcinfostruct *pthreadmbcinfo; 426 struct __lc_time_data; 427 428 typedef struct localeinfo_struct { 429 pthreadlocinfo locinfo; 430 pthreadmbcinfo mbcinfo; 431 } _locale_tstruct,*_locale_t; 432 433 #ifndef _TAGLC_ID_DEFINED 434 #define _TAGLC_ID_DEFINED 435 typedef struct tagLC_ID { 436 unsigned short wLanguage; 437 unsigned short wCountry; 438 unsigned short wCodePage; 439 } LC_ID,*LPLC_ID; 440 #endif /* _TAGLC_ID_DEFINED */ 441 442 #ifndef _THREADLOCALEINFO 443 #define _THREADLOCALEINFO 444 typedef struct threadlocaleinfostruct { 445 int refcount; 446 unsigned int lc_codepage; 447 unsigned int lc_collate_cp; 448 unsigned long lc_handle[6]; 449 LC_ID lc_id[6]; 450 struct { 451 char *locale; 452 wchar_t *wlocale; 453 int *refcount; 454 int *wrefcount; 455 } lc_category[6]; 456 int lc_clike; 457 int mb_cur_max; 458 int *lconv_intl_refcount; 459 int *lconv_num_refcount; 460 int *lconv_mon_refcount; 461 struct lconv *lconv; 462 int *ctype1_refcount; 463 unsigned short *ctype1; 464 const unsigned short *pctype; 465 const unsigned char *pclmap; 466 const unsigned char *pcumap; 467 struct __lc_time_data *lc_time_curr; 468 } threadlocinfo; 469 #endif /* _THREADLOCALEINFO */ 470 471 #ifndef __crt_typefix 472 #define __crt_typefix(ctype) 473 #endif 474 475 #ifndef __WIDL__ 476 #pragma pack(pop) 477 #endif 478 479 #endif /* _INC_CRTDEFS */ 480