home *** CD-ROM | disk | FTP | other *** search
- #ifndef _STDDEF_H
- #ifndef _STDDEF_H_
- #ifndef _ANSI_STDDEF_H
-
- #ifdef amigados
-
- /* GNU libc has special support in this file, 4.3bsd-net2 libc deserves that
- just as well. The system headers are ANSI compliant, the used compiler IS
- gcc, so it's really ok to use the system header, no reason to hassle
- with a jungle of ifdefs. Besides, amigados is only defined if compiling
- with host=amigados, it doesn't apply if compiling with target=amigados
- on a different host with possibly different system headers. Same thing
- would apply to gstdarg.h and gvarargs.h, but those headers are more
- easily fixable than this one and I'm sick of writing the same comment
- there as well. MW
-
- Include the contents of <stddef.h> inline rather than with a #include,
- to avoid infinite include recursion when this file is installed in
- gcc's include directory as stddef.h. (fnf) */
-
- #define _STDDEF_H_
-
- #include <machine/ansi.h>
-
- typedef _PTRDIFF_T_ ptrdiff_t;
-
- #ifdef _SIZE_T_
- typedef _SIZE_T_ size_t;
- #undef _SIZE_T_
- #endif
-
- #ifdef _WCHAR_T_
- typedef _WCHAR_T_ wchar_t;
- #undef _WCHAR_T_
- #endif
-
- #ifndef NULL
- #define NULL 0
- #endif
-
- #define offsetof(type, member) ((size_t)(&((type *)0)->member))
-
- #else /* not amigados */
-
- /* Any one of these symbols __need_* means that GNU libc
- wants us just to define one data type. So don't define
- the symbols that indicate this file's entire job has been done. */
- #if (!defined(__need_wchar_t) && !defined(__need_size_t) \
- && !defined(__need_ptrdiff_t) && !defined(__need_NULL))
- #define _STDDEF_H
- #define _STDDEF_H_
- /* snaroff@next.com says the NeXT needs this. */
- #define _ANSI_STDDEF_H
- #endif
-
- #ifndef __sys_stdtypes_h
- /* This avoids lossage on SunOS but only if stdtypes.h comes first.
- There's no way to win with the other order! Sun lossage. */
-
- /* On 4.3bsd-net2, make sure ansi.h is included, so we have
- one less case to deal with in the following. */
- #if defined (__BSD_NET2__) || defined (____386BSD____)
- #include <machine/ansi.h>
- #endif
-
- /* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
- defined if the corresponding type is *not* defined. */
- #ifdef _ANSI_H_
- #ifndef _SIZE_T_
- #define _SIZE_T
- #endif
- #ifndef _PTRDIFF_T_
- #define _PTRDIFF_T
- #endif
- #ifndef _WCHAR_T_
- #define _WCHAR_T
- #endif
- #undef _PTRDIFF_T_
- #ifndef __need_ptrdiff_t
- #undef _SIZE_T_
- #undef _WCHAR_T_
- #endif
- #endif /* _ANSI_H_ */
-
- /* In case nobody has defined these types, but we aren't running under
- GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE__TYPE__, and
- __WCHAR_TYPE__ have reasonable values. This can happen if the
- parts of GCC is compiled by an older compiler, that actually
- include gstddef.h, such as collect2. */
-
- /* Signed type of difference of two pointers. */
-
- /* Define this type if we are doing the whole job,
- or if we want this type in particular. */
- #if defined (_STDDEF_H) || defined (__need_ptrdiff_t)
- #ifndef _PTRDIFF_T /* in case <sys/types.h> has defined it. */
- #ifndef _T_PTRDIFF_
- #ifndef _T_PTRDIFF
- #ifndef __PTRDIFF_T
- #ifndef _PTRDIFF_T_
- #ifndef ___int_ptrdiff_t_h
- #ifndef _GCC_PTRDIFF_T
- #define _PTRDIFF_T
- #define _T_PTRDIFF_
- #define _T_PTRDIFF
- #define __PTRDIFF_T
- #define _PTRDIFF_T_
- #define ___int_ptrdiff_t_h
- #define _GCC_PTRDIFF_T
- #ifndef __PTRDIFF_TYPE__
- #define __PTRDIFF_TYPE__ long int
- #endif
- typedef __PTRDIFF_TYPE__ ptrdiff_t;
- #endif /* _GCC_PTRDIFF_T */
- #endif /* ___int_ptrdiff_t_h */
- #endif /* _PTRDIFF_T_ */
- #endif /* __PTRDIFF_T */
- #endif /* _T_PTRDIFF */
- #endif /* _T_PTRDIFF_ */
- #endif /* _PTRDIFF_T */
-
- /* If this symbol has done its job, get rid of it. */
- #undef __need_ptrdiff_t
-
- #endif /* _STDDEF_H or __need_ptrdiff_t. */
-
- /* Unsigned type of `sizeof' something. */
-
- /* Define this type if we are doing the whole job,
- or if we want this type in particular. */
- #if defined (_STDDEF_H) || defined (__need_size_t)
- #ifndef _SIZE_T /* in case <sys/types.h> has defined it. */
- #ifndef _T_SIZE_
- #ifndef _T_SIZE
- #ifndef __SIZE_T
- #ifndef _SIZE_T_
- #ifndef ___int_size_t_h
- #ifndef _GCC_SIZE_T
- #ifndef _SIZET_
- #define _SIZE_T
- #define _T_SIZE_
- #define _T_SIZE
- #define __SIZE_T
- #define _SIZE_T_
- #define ___int_size_t_h
- #define _GCC_SIZE_T
- #define _SIZET_
- #ifndef __SIZE_TYPE__
- #define __SIZE_TYPE__ long unsigned int
- #endif
- typedef __SIZE_TYPE__ size_t;
- #endif /* _SIZET_ */
- #endif /* _GCC_SIZE_T */
- #endif /* ___int_size_t_h */
- #endif /* _SIZE_T_ */
- #endif /* __SIZE_T */
- #endif /* _T_SIZE */
- #endif /* _T_SIZE_ */
- #endif /* _SIZE_T */
- #undef __need_size_t
- #endif /* _STDDEF_H or __need_size_t. */
-
-
- /* Wide character type.
- Locale-writers should change this as necessary to
- be big enough to hold unique values not between 0 and 127,
- and not (wchar_t) -1, for each defined multibyte character. */
-
- /* Define this type if we are doing the whole job,
- or if we want this type in particular. */
- #if defined (_STDDEF_H) || defined (__need_wchar_t)
- #ifndef _WCHAR_T
- #ifndef _T_WCHAR_
- #ifndef _T_WCHAR
- #ifndef __WCHAR_T
- #ifndef _WCHAR_T_
- #ifndef ___int_wchar_t_h
- #ifndef _GCC_WCHAR_T
- #define _WCHAR_T
- #define _T_WCHAR_
- #define _T_WCHAR
- #define __WCHAR_T
- #define _WCHAR_T_
- #define ___int_wchar_t_h
- #define _GCC_WCHAR_T
- #ifndef __WCHAR_TYPE__
- #define __WCHAR_TYPE__ int
- #endif
-
- #endif /* not amigados */
- #ifdef __GNUG__
- /* In C++, wchar_t is a distinct basic type,
- and we can expect __wchar_t to be defined by cc1plus. */
- typedef __wchar_t wchar_t;
- #else
- /* In C, cpp tells us which type to make an alias for. */
- typedef __WCHAR_TYPE__ wchar_t;
- #endif
- #endif
- #endif
- #endif
- #endif
- #endif
- #endif
- #endif
- #undef __need_wchar_t
- #endif /* _STDDEF_H or __need_wchar_t. */
-
- /* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
- are already defined. We need not worry about the case of wanting just
- one of these types, not on 4.3bsd-net2, because only the GNU libc
- header files do that. */
- #ifdef _ANSI_H_
- #undef _PTRDIFF_T_
- #ifdef _STDDEF_H /* This is a kludge.
- _STDDEF_H is defined when we are using the whole file,
- undefined when obstack.h wants just ptrdiff_t. */
- #undef _SIZE_T_
- #undef _WCHAR_T_
- #endif
- #endif
-
- #endif /* __sys_stdtypes_h */
-
- /* A null pointer constant. */
-
- #if defined (_STDDEF_H) || defined (__need_NULL)
- #undef NULL /* in case <stdio.h> has defined it. */
- #define NULL ((void *)0)
- #endif /* NULL not defined and <stddef.h> or need NULL. */
- #undef __need_NULL
-
- #ifdef _STDDEF_H
-
- /* Offset of member MEMBER in a struct of type TYPE. */
-
- #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
-
- #endif /* _STDDEF_H was defined this time */
-
- #endif /* _ANSI_STDDEF_H was not defined before */
- #endif /* _STDDEF_H_ was not defined before */
- #endif /* _STDDEF_H was not defined before */
-