xref: /csrg-svn/contrib/gcc-2.3.3/gstddef.h (revision 60374)
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