Home | History | Annotate | Download | only in include
      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