157765Selan #ifndef _STDDEF_H 257765Selan #ifndef _STDDEF_H_ 357765Selan #ifndef _ANSI_STDDEF_H 457765Selan 557765Selan /* Any one of these symbols __need_* means that GNU libc 657765Selan wants us just to define one data type. So don't define 757765Selan the symbols that indicate this file's entire job has been done. */ 857765Selan #if (!defined(__need_wchar_t) && !defined(__need_size_t) \ 957765Selan && !defined(__need_ptrdiff_t) && !defined(__need_NULL)) 1057765Selan #define _STDDEF_H 1157765Selan #define _STDDEF_H_ 1257765Selan /* snaroff@next.com says the NeXT needs this. */ 1357765Selan #define _ANSI_STDDEF_H 1457765Selan #endif 1557765Selan 1657765Selan #ifndef __sys_stdtypes_h 1757765Selan /* This avoids lossage on SunOS but only if stdtypes.h comes first. 1857765Selan There's no way to win with the other order! Sun lossage. */ 1957765Selan 2057765Selan /* On 4.3bsd-net2, make sure ansi.h is included, so we have 2157765Selan one less case to deal with in the following. */ 22*60374Selan /* #if defined (__BSD_NET2__) || defined (____386BSD____)*/ 2357765Selan #include <machine/ansi.h> 24*60374Selan /* #endif*/ 2557765Selan 2657765Selan /* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are 2757765Selan defined if the corresponding type is *not* defined. */ 2857765Selan #ifdef _ANSI_H_ 2957765Selan #ifndef _SIZE_T_ 3057765Selan #define _SIZE_T 3157765Selan #endif 3257765Selan #ifndef _PTRDIFF_T_ 3357765Selan #define _PTRDIFF_T 3457765Selan #endif 3557765Selan #ifndef _WCHAR_T_ 3657765Selan #define _WCHAR_T 3757765Selan #endif 3857765Selan #undef _PTRDIFF_T_ 3957765Selan #ifndef __need_ptrdiff_t 4057765Selan #undef _SIZE_T_ 4157765Selan #undef _WCHAR_T_ 4257765Selan #endif 4357765Selan #endif /* _ANSI_H_ */ 4457765Selan 4557765Selan /* In case nobody has defined these types, but we aren't running under 4657765Selan GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE__TYPE__, and 4757765Selan __WCHAR_TYPE__ have reasonable values. This can happen if the 4857765Selan parts of GCC is compiled by an older compiler, that actually 4957765Selan include gstddef.h, such as collect2. */ 5057765Selan 5157765Selan /* Signed type of difference of two pointers. */ 5257765Selan 5357765Selan /* Define this type if we are doing the whole job, 5457765Selan or if we want this type in particular. */ 5557765Selan #if defined (_STDDEF_H) || defined (__need_ptrdiff_t) 5657765Selan #ifndef _PTRDIFF_T /* in case <sys/types.h> has defined it. */ 5757765Selan #ifndef _T_PTRDIFF_ 5857765Selan #ifndef _T_PTRDIFF 5957765Selan #ifndef __PTRDIFF_T 6057765Selan #ifndef _PTRDIFF_T_ 6157765Selan #ifndef ___int_ptrdiff_t_h 6257765Selan #ifndef _GCC_PTRDIFF_T 6357765Selan #define _PTRDIFF_T 6457765Selan #define _T_PTRDIFF_ 6557765Selan #define _T_PTRDIFF 6657765Selan #define __PTRDIFF_T 6757765Selan #define _PTRDIFF_T_ 6857765Selan #define ___int_ptrdiff_t_h 6957765Selan #define _GCC_PTRDIFF_T 7057765Selan #ifndef __PTRDIFF_TYPE__ 7157765Selan #define __PTRDIFF_TYPE__ long int 7257765Selan #endif 7357765Selan typedef __PTRDIFF_TYPE__ ptrdiff_t; 7457765Selan #endif /* _GCC_PTRDIFF_T */ 7557765Selan #endif /* ___int_ptrdiff_t_h */ 7657765Selan #endif /* _PTRDIFF_T_ */ 7757765Selan #endif /* __PTRDIFF_T */ 7857765Selan #endif /* _T_PTRDIFF */ 7957765Selan #endif /* _T_PTRDIFF_ */ 8057765Selan #endif /* _PTRDIFF_T */ 8157765Selan 8257765Selan /* If this symbol has done its job, get rid of it. */ 8357765Selan #undef __need_ptrdiff_t 8457765Selan 8557765Selan #endif /* _STDDEF_H or __need_ptrdiff_t. */ 8657765Selan 8757765Selan /* Unsigned type of `sizeof' something. */ 8857765Selan 8957765Selan /* Define this type if we are doing the whole job, 9057765Selan or if we want this type in particular. */ 9157765Selan #if defined (_STDDEF_H) || defined (__need_size_t) 9257765Selan #ifndef _SIZE_T /* in case <sys/types.h> has defined it. */ 9357765Selan #ifndef _T_SIZE_ 9457765Selan #ifndef _T_SIZE 9557765Selan #ifndef __SIZE_T 9657765Selan #ifndef _SIZE_T_ 9757765Selan #ifndef ___int_size_t_h 9857765Selan #ifndef _GCC_SIZE_T 9957765Selan #ifndef _SIZET_ 10057765Selan #define _SIZE_T 10157765Selan #define _T_SIZE_ 10257765Selan #define _T_SIZE 10357765Selan #define __SIZE_T 10457765Selan #define _SIZE_T_ 10557765Selan #define ___int_size_t_h 10657765Selan #define _GCC_SIZE_T 10757765Selan #define _SIZET_ 10857765Selan #ifndef __SIZE_TYPE__ 10957765Selan #define __SIZE_TYPE__ long unsigned int 11057765Selan #endif 11157765Selan typedef __SIZE_TYPE__ size_t; 11257765Selan #endif /* _SIZET_ */ 11357765Selan #endif /* _GCC_SIZE_T */ 11457765Selan #endif /* ___int_size_t_h */ 11557765Selan #endif /* _SIZE_T_ */ 11657765Selan #endif /* __SIZE_T */ 11757765Selan #endif /* _T_SIZE */ 11857765Selan #endif /* _T_SIZE_ */ 11957765Selan #endif /* _SIZE_T */ 12057765Selan #undef __need_size_t 12157765Selan #endif /* _STDDEF_H or __need_size_t. */ 12257765Selan 12357765Selan 12457765Selan /* Wide character type. 12557765Selan Locale-writers should change this as necessary to 12657765Selan be big enough to hold unique values not between 0 and 127, 12757765Selan and not (wchar_t) -1, for each defined multibyte character. */ 12857765Selan 12957765Selan /* Define this type if we are doing the whole job, 13057765Selan or if we want this type in particular. */ 13157765Selan #if defined (_STDDEF_H) || defined (__need_wchar_t) 13257765Selan #ifndef _WCHAR_T 13357765Selan #ifndef _T_WCHAR_ 13457765Selan #ifndef _T_WCHAR 13557765Selan #ifndef __WCHAR_T 13657765Selan #ifndef _WCHAR_T_ 13757765Selan #ifndef ___int_wchar_t_h 13857765Selan #ifndef _GCC_WCHAR_T 13957765Selan #define _WCHAR_T 14057765Selan #define _T_WCHAR_ 14157765Selan #define _T_WCHAR 14257765Selan #define __WCHAR_T 14357765Selan #define _WCHAR_T_ 14457765Selan #define ___int_wchar_t_h 14557765Selan #define _GCC_WCHAR_T 14657765Selan #ifndef __WCHAR_TYPE__ 14757765Selan #define __WCHAR_TYPE__ int 14857765Selan #endif 14957765Selan #ifdef __GNUG__ 15057765Selan /* In C++, wchar_t is a distinct basic type, 15157765Selan and we can expect __wchar_t to be defined by cc1plus. */ 15257765Selan typedef __wchar_t wchar_t; 15357765Selan #else 15457765Selan /* In C, cpp tells us which type to make an alias for. */ 15557765Selan typedef __WCHAR_TYPE__ wchar_t; 15657765Selan #endif 15757765Selan #endif 15857765Selan #endif 15957765Selan #endif 16057765Selan #endif 16157765Selan #endif 16257765Selan #endif 16357765Selan #endif 16457765Selan #undef __need_wchar_t 16557765Selan #endif /* _STDDEF_H or __need_wchar_t. */ 16657765Selan 16757765Selan /* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc. 16857765Selan are already defined. We need not worry about the case of wanting just 16957765Selan one of these types, not on 4.3bsd-net2, because only the GNU libc 17057765Selan header files do that. */ 17157765Selan #ifdef _ANSI_H_ 17257765Selan #undef _PTRDIFF_T_ 17357765Selan #ifdef _STDDEF_H /* This is a kludge. 17457765Selan _STDDEF_H is defined when we are using the whole file, 17557765Selan undefined when obstack.h wants just ptrdiff_t. */ 17657765Selan #undef _SIZE_T_ 17757765Selan #undef _WCHAR_T_ 17857765Selan #endif 17957765Selan #endif 18057765Selan 18157765Selan #endif /* __sys_stdtypes_h */ 18257765Selan 18357765Selan /* A null pointer constant. */ 18457765Selan 18557765Selan #if defined (_STDDEF_H) || defined (__need_NULL) 18657765Selan #undef NULL /* in case <stdio.h> has defined it. */ 18757765Selan #define NULL ((void *)0) 18857765Selan #endif /* NULL not defined and <stddef.h> or need NULL. */ 18957765Selan #undef __need_NULL 19057765Selan 19157765Selan #ifdef _STDDEF_H 19257765Selan 19357765Selan /* Offset of member MEMBER in a struct of type TYPE. */ 19457765Selan 19557765Selan #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 19657765Selan 19757765Selan #endif /* _STDDEF_H was defined this time */ 19857765Selan 19957765Selan #endif /* _ANSI_STDDEF_H was not defined before */ 20057765Selan #endif /* _STDDEF_H_ was not defined before */ 20157765Selan #endif /* _STDDEF_H was not defined before */ 202