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 #ifdef __ERRCODE_DEFINED_MS 13 /* #define __ERRCODE_DEFINED_MS */ 14 typedef int errcode; 15 #endif 16 17 #ifndef _CRTNOALIAS 18 #define _CRTNOALIAS 19 #endif 20 21 #ifndef _CRTRESTRICT 22 #define _CRTRESTRICT 23 #endif 24 25 #ifndef _RSIZE_T_DEFINED 26 typedef size_t rsize_t; 27 #define _RSIZE_T_DEFINED 28 #endif 29 30 #if defined(__cplusplus) && _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 31 32 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(__ret,__func,__dsttype,__dst) \ 33 extern "C++" { \ 34 template <size_t __size> \ 35 inline __ret __cdecl __func(__dsttype (&__dst)[__size]) { \ 36 return __func(__dst,__size); \ 37 } \ 38 } 39 40 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(__ret,__func,__dsttype,__dst,__type1,__arg1) \ 41 extern "C++" {\ 42 template <size_t __size> \ 43 inline __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1) { \ 44 return __func(__dst,__size,__arg1); \ 45 }\ 46 } 47 48 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2)\ 49 extern "C++" {\ 50 template <size_t __size> inline\ 51 __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2) { \ 52 return __func(__dst,__size,__arg1,__arg2); \ 53 }\ 54 } 55 56 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) \ 57 extern "C++" { \ 58 template <size_t __size> inline \ 59 __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, __type3 __arg3) { \ 60 return __func(__dst,__size,__arg1,__arg2,__arg3); \ 61 }\ 62 } 63 64 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3,__type4,__arg4) \ 65 extern "C++" { \ 66 template <size_t __size> inline \ 67 __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, __type3 __arg3, __type4 __arg4) { \ 68 return __func(__dst,__size,__arg1,__arg2,__arg3,__arg4); \ 69 }\ 70 } 71 72 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1) \ 73 extern "C++" { \ 74 template <size_t __size> inline \ 75 __ret __cdecl __func(__type0 __arg0, __dsttype (&__dst)[__size], __type1 __arg1) { \ 76 return __func(__arg0, __dst, __size, __arg1); \ 77 } \ 78 } 79 80 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2) \ 81 extern "C++" { \ 82 template <size_t __size> inline \ 83 __ret __cdecl __func(__type0 __arg0, __dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2) { \ 84 return __func(__arg0, __dst, __size, __arg1, __arg2); \ 85 } \ 86 } 87 88 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) \ 89 extern "C++" { \ 90 template <size_t __size> inline \ 91 __ret __cdecl __func(__type0 __arg0, __dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, __type3 __arg3) { \ 92 return __func(__arg0, __dst, __size, __arg1, __arg2, __arg3); \ 93 } \ 94 } 95 96 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(__ret,__func,__type1,__arg1,__type2,__arg2,__dsttype,__dst) \ 97 extern "C++" { \ 98 template <size_t __size> inline \ 99 __ret __cdecl __func(__type1 __arg1, __type2 __arg2, __dsttype (&__dst)[__size]) { \ 100 return __func(__arg1, __arg2, __dst, __size); \ 101 } \ 102 } 103 104 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1) \ 105 extern "C++" {\ 106 template <size_t __size> \ 107 inline __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, ...) { \ 108 va_list __vaargs; \ 109 _crt_va_start(__vaargs, __arg1); \ 110 __ret __retval = __vfunc(__dst,__size,__arg1,__vaargs); \ 111 _crt_va_end(__vaargs); \ 112 return __retval; \ 113 }\ 114 } 115 116 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1,__type2,__arg2) \ 117 extern "C++" {\ 118 template <size_t __size> \ 119 inline __ret __cdecl __func(__dsttype (&__dst)[__size], __type1 __arg1, __type2 __arg2, ...) { \ 120 va_list __vaargs; \ 121 _crt_va_start(__vaargs, __arg2); \ 122 __ret __retval = __vfunc(__dst,__size,__arg1,__arg2,__vaargs); \ 123 _crt_va_end(__vaargs); \ 124 return __retval; \ 125 }\ 126 } 127 128 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(__ret,__func,__dsttype,__src) \ 129 extern "C++" { \ 130 template <size_t __drive_size, size_t __dir_size, size_t __name_size, size_t __ext_size> inline \ 131 __ret __cdecl __func(const __dsttype *__src, __dsttype (&__drive)[__drive_size], __dsttype (&__dir)[__dir_size], __dsttype (&__name)[__name_size], __dsttype (&__ext)[__ext_size]) { \ 132 return __func(__src, __drive, __drive_size, __dir, __dir_size, __name, __name_size, __ext, __ext_size); \ 133 } \ 134 } 135 136 #else 137 138 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(__ret,__func,__dsttype,__dst) 139 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(__ret,__func,__dsttype,__dst,__type1,__arg1) 140 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2) 141 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) 142 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3,__type4,__arg4) 143 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1) 144 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2) 145 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) 146 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(__ret,__func,__type1,__arg1,__type2,__arg2,__dsttype,__dst) 147 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1) 148 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1,__type2,__arg2) 149 #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(__ret,__func,__dsttype,__src) 150 151 #endif 152 153 struct threadlocaleinfostruct; 154 struct threadmbcinfostruct; 155 typedef struct threadlocaleinfostruct *pthreadlocinfo; 156 typedef struct threadmbcinfostruct *pthreadmbcinfo; 157 struct __lc_time_data; 158 159 typedef struct localeinfo_struct { 160 pthreadlocinfo locinfo; 161 pthreadmbcinfo mbcinfo; 162 } _locale_tstruct,*_locale_t; 163 164 #ifndef _TAGLC_ID_DEFINED 165 #define _TAGLC_ID_DEFINED 166 typedef struct tagLC_ID { 167 unsigned short wLanguage; 168 unsigned short wCountry; 169 unsigned short wCodePage; 170 } LC_ID,*LPLC_ID; 171 #endif /* _TAGLC_ID_DEFINED */ 172 173 #ifndef _THREADLOCALEINFO 174 #define _THREADLOCALEINFO 175 typedef struct threadlocaleinfostruct { 176 int refcount; 177 unsigned int lc_codepage; 178 unsigned int lc_collate_cp; 179 unsigned long lc_handle[6]; 180 LC_ID lc_id[6]; 181 struct { 182 char *locale; 183 wchar_t *wlocale; 184 int *refcount; 185 int *wrefcount; 186 } lc_category[6]; 187 int lc_clike; 188 int mb_cur_max; 189 int *lconv_intl_refcount; 190 int *lconv_num_refcount; 191 int *lconv_mon_refcount; 192 struct lconv *lconv; 193 int *ctype1_refcount; 194 unsigned short *ctype1; 195 const unsigned short *pctype; 196 const unsigned char *pclmap; 197 const unsigned char *pcumap; 198 struct __lc_time_data *lc_time_curr; 199 } threadlocinfo; 200 #endif /* _THREADLOCALEINFO */ 201 202 #ifndef __crt_typefix 203 #define __crt_typefix(ctype) 204 #endif 205 206 #endif /* _INC_CRTDEFS */ 207