home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 7 / FreshFishVol7.bin / bbs / gnu / gcc-2.3.3-src.lha / GNU / src / amiga / gcc-2.3.3 / gstddef.h < prev    next >
C/C++ Source or Header  |  1994-02-06  |  7KB  |  244 lines

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