1*57765Selan #ifndef _STDDEF_H 2*57765Selan #ifndef _STDDEF_H_ 3*57765Selan #ifndef _ANSI_STDDEF_H 4*57765Selan 5*57765Selan /* Any one of these symbols __need_* means that GNU libc 6*57765Selan wants us just to define one data type. So don't define 7*57765Selan the symbols that indicate this file's entire job has been done. */ 8*57765Selan #if (!defined(__need_wchar_t) && !defined(__need_size_t) \ 9*57765Selan && !defined(__need_ptrdiff_t) && !defined(__need_NULL)) 10*57765Selan #define _STDDEF_H 11*57765Selan #define _STDDEF_H_ 12*57765Selan /* snaroff@next.com says the NeXT needs this. */ 13*57765Selan #define _ANSI_STDDEF_H 14*57765Selan #endif 15*57765Selan 16*57765Selan #ifndef __sys_stdtypes_h 17*57765Selan /* This avoids lossage on SunOS but only if stdtypes.h comes first. 18*57765Selan There's no way to win with the other order! Sun lossage. */ 19*57765Selan 20*57765Selan /* On 4.3bsd-net2, make sure ansi.h is included, so we have 21*57765Selan one less case to deal with in the following. */ 22*57765Selan #if defined (__BSD_NET2__) || defined (____386BSD____) 23*57765Selan #include <machine/ansi.h> 24*57765Selan #endif 25*57765Selan 26*57765Selan /* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are 27*57765Selan defined if the corresponding type is *not* defined. */ 28*57765Selan #ifdef _ANSI_H_ 29*57765Selan #ifndef _SIZE_T_ 30*57765Selan #define _SIZE_T 31*57765Selan #endif 32*57765Selan #ifndef _PTRDIFF_T_ 33*57765Selan #define _PTRDIFF_T 34*57765Selan #endif 35*57765Selan #ifndef _WCHAR_T_ 36*57765Selan #define _WCHAR_T 37*57765Selan #endif 38*57765Selan #undef _PTRDIFF_T_ 39*57765Selan #ifndef __need_ptrdiff_t 40*57765Selan #undef _SIZE_T_ 41*57765Selan #undef _WCHAR_T_ 42*57765Selan #endif 43*57765Selan #endif /* _ANSI_H_ */ 44*57765Selan 45*57765Selan /* In case nobody has defined these types, but we aren't running under 46*57765Selan GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE__TYPE__, and 47*57765Selan __WCHAR_TYPE__ have reasonable values. This can happen if the 48*57765Selan parts of GCC is compiled by an older compiler, that actually 49*57765Selan include gstddef.h, such as collect2. */ 50*57765Selan 51*57765Selan /* Signed type of difference of two pointers. */ 52*57765Selan 53*57765Selan /* Define this type if we are doing the whole job, 54*57765Selan or if we want this type in particular. */ 55*57765Selan #if defined (_STDDEF_H) || defined (__need_ptrdiff_t) 56*57765Selan #ifndef _PTRDIFF_T /* in case <sys/types.h> has defined it. */ 57*57765Selan #ifndef _T_PTRDIFF_ 58*57765Selan #ifndef _T_PTRDIFF 59*57765Selan #ifndef __PTRDIFF_T 60*57765Selan #ifndef _PTRDIFF_T_ 61*57765Selan #ifndef ___int_ptrdiff_t_h 62*57765Selan #ifndef _GCC_PTRDIFF_T 63*57765Selan #define _PTRDIFF_T 64*57765Selan #define _T_PTRDIFF_ 65*57765Selan #define _T_PTRDIFF 66*57765Selan #define __PTRDIFF_T 67*57765Selan #define _PTRDIFF_T_ 68*57765Selan #define ___int_ptrdiff_t_h 69*57765Selan #define _GCC_PTRDIFF_T 70*57765Selan #ifndef __PTRDIFF_TYPE__ 71*57765Selan #define __PTRDIFF_TYPE__ long int 72*57765Selan #endif 73*57765Selan typedef __PTRDIFF_TYPE__ ptrdiff_t; 74*57765Selan #endif /* _GCC_PTRDIFF_T */ 75*57765Selan #endif /* ___int_ptrdiff_t_h */ 76*57765Selan #endif /* _PTRDIFF_T_ */ 77*57765Selan #endif /* __PTRDIFF_T */ 78*57765Selan #endif /* _T_PTRDIFF */ 79*57765Selan #endif /* _T_PTRDIFF_ */ 80*57765Selan #endif /* _PTRDIFF_T */ 81*57765Selan 82*57765Selan /* If this symbol has done its job, get rid of it. */ 83*57765Selan #undef __need_ptrdiff_t 84*57765Selan 85*57765Selan #endif /* _STDDEF_H or __need_ptrdiff_t. */ 86*57765Selan 87*57765Selan /* Unsigned type of `sizeof' something. */ 88*57765Selan 89*57765Selan /* Define this type if we are doing the whole job, 90*57765Selan or if we want this type in particular. */ 91*57765Selan #if defined (_STDDEF_H) || defined (__need_size_t) 92*57765Selan #ifndef _SIZE_T /* in case <sys/types.h> has defined it. */ 93*57765Selan #ifndef _T_SIZE_ 94*57765Selan #ifndef _T_SIZE 95*57765Selan #ifndef __SIZE_T 96*57765Selan #ifndef _SIZE_T_ 97*57765Selan #ifndef ___int_size_t_h 98*57765Selan #ifndef _GCC_SIZE_T 99*57765Selan #ifndef _SIZET_ 100*57765Selan #define _SIZE_T 101*57765Selan #define _T_SIZE_ 102*57765Selan #define _T_SIZE 103*57765Selan #define __SIZE_T 104*57765Selan #define _SIZE_T_ 105*57765Selan #define ___int_size_t_h 106*57765Selan #define _GCC_SIZE_T 107*57765Selan #define _SIZET_ 108*57765Selan #ifndef __SIZE_TYPE__ 109*57765Selan #define __SIZE_TYPE__ long unsigned int 110*57765Selan #endif 111*57765Selan typedef __SIZE_TYPE__ size_t; 112*57765Selan #endif /* _SIZET_ */ 113*57765Selan #endif /* _GCC_SIZE_T */ 114*57765Selan #endif /* ___int_size_t_h */ 115*57765Selan #endif /* _SIZE_T_ */ 116*57765Selan #endif /* __SIZE_T */ 117*57765Selan #endif /* _T_SIZE */ 118*57765Selan #endif /* _T_SIZE_ */ 119*57765Selan #endif /* _SIZE_T */ 120*57765Selan #undef __need_size_t 121*57765Selan #endif /* _STDDEF_H or __need_size_t. */ 122*57765Selan 123*57765Selan 124*57765Selan /* Wide character type. 125*57765Selan Locale-writers should change this as necessary to 126*57765Selan be big enough to hold unique values not between 0 and 127, 127*57765Selan and not (wchar_t) -1, for each defined multibyte character. */ 128*57765Selan 129*57765Selan /* Define this type if we are doing the whole job, 130*57765Selan or if we want this type in particular. */ 131*57765Selan #if defined (_STDDEF_H) || defined (__need_wchar_t) 132*57765Selan #ifndef _WCHAR_T 133*57765Selan #ifndef _T_WCHAR_ 134*57765Selan #ifndef _T_WCHAR 135*57765Selan #ifndef __WCHAR_T 136*57765Selan #ifndef _WCHAR_T_ 137*57765Selan #ifndef ___int_wchar_t_h 138*57765Selan #ifndef _GCC_WCHAR_T 139*57765Selan #define _WCHAR_T 140*57765Selan #define _T_WCHAR_ 141*57765Selan #define _T_WCHAR 142*57765Selan #define __WCHAR_T 143*57765Selan #define _WCHAR_T_ 144*57765Selan #define ___int_wchar_t_h 145*57765Selan #define _GCC_WCHAR_T 146*57765Selan #ifndef __WCHAR_TYPE__ 147*57765Selan #define __WCHAR_TYPE__ int 148*57765Selan #endif 149*57765Selan #ifdef __GNUG__ 150*57765Selan /* In C++, wchar_t is a distinct basic type, 151*57765Selan and we can expect __wchar_t to be defined by cc1plus. */ 152*57765Selan typedef __wchar_t wchar_t; 153*57765Selan #else 154*57765Selan /* In C, cpp tells us which type to make an alias for. */ 155*57765Selan typedef __WCHAR_TYPE__ wchar_t; 156*57765Selan #endif 157*57765Selan #endif 158*57765Selan #endif 159*57765Selan #endif 160*57765Selan #endif 161*57765Selan #endif 162*57765Selan #endif 163*57765Selan #endif 164*57765Selan #undef __need_wchar_t 165*57765Selan #endif /* _STDDEF_H or __need_wchar_t. */ 166*57765Selan 167*57765Selan /* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc. 168*57765Selan are already defined. We need not worry about the case of wanting just 169*57765Selan one of these types, not on 4.3bsd-net2, because only the GNU libc 170*57765Selan header files do that. */ 171*57765Selan #ifdef _ANSI_H_ 172*57765Selan #undef _PTRDIFF_T_ 173*57765Selan #ifdef _STDDEF_H /* This is a kludge. 174*57765Selan _STDDEF_H is defined when we are using the whole file, 175*57765Selan undefined when obstack.h wants just ptrdiff_t. */ 176*57765Selan #undef _SIZE_T_ 177*57765Selan #undef _WCHAR_T_ 178*57765Selan #endif 179*57765Selan #endif 180*57765Selan 181*57765Selan #endif /* __sys_stdtypes_h */ 182*57765Selan 183*57765Selan /* A null pointer constant. */ 184*57765Selan 185*57765Selan #if defined (_STDDEF_H) || defined (__need_NULL) 186*57765Selan #undef NULL /* in case <stdio.h> has defined it. */ 187*57765Selan #define NULL ((void *)0) 188*57765Selan #endif /* NULL not defined and <stddef.h> or need NULL. */ 189*57765Selan #undef __need_NULL 190*57765Selan 191*57765Selan #ifdef _STDDEF_H 192*57765Selan 193*57765Selan /* Offset of member MEMBER in a struct of type TYPE. */ 194*57765Selan 195*57765Selan #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 196*57765Selan 197*57765Selan #endif /* _STDDEF_H was defined this time */ 198*57765Selan 199*57765Selan #endif /* _ANSI_STDDEF_H was not defined before */ 200*57765Selan #endif /* _STDDEF_H_ was not defined before */ 201*57765Selan #endif /* _STDDEF_H was not defined before */ 202