home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / gnu / gcc-2.6.3-bin.lha / GNU / lib / gcc-lib / amigados / 2.6.3 / include / stddef.h < prev    next >
C/C++ Source or Header  |  1994-12-23  |  9KB  |  323 lines

  1. #ifndef _STDDEF_H
  2. #ifndef _STDDEF_H_
  3. #ifndef _ANSI_STDDEF_H
  4. #ifndef __STDDEF_H__
  5.  
  6. #ifdef amigados
  7.  
  8. /* GNU libc has special support in this file, 4.3bsd-net2 libc deserves that
  9.    just as well. The system headers are ANSI compliant, the used compiler IS
  10.    gcc, so it's really ok to use the system header, no reason to hassle
  11.    with a jungle of ifdefs. Besides, amigados is only defined if compiling
  12.    with host=amigados, it doesn't apply if compiling with target=amigados
  13.    on a different host with possibly different system headers. Same thing
  14.    would apply to gstdarg.h and gvarargs.h, but those headers are more
  15.    easily fixable than this one and I'm sick of writing the same comment
  16.    there as well. MW
  17.  
  18.    Include the contents of <stddef.h> inline rather than with a #include,
  19.    to avoid infinite include recursion when this file is installed in
  20.    gcc's include directory as stddef.h.  (fnf)  */
  21.  
  22. #define _STDDEF_H_
  23.  
  24. #include <machine/ansi.h>
  25.  
  26. typedef    _PTRDIFF_T_    ptrdiff_t;
  27.  
  28. #ifdef    _SIZE_T_
  29. typedef    _SIZE_T_    size_t;
  30. #undef    _SIZE_T_
  31. #endif
  32.  
  33. #ifdef    _WCHAR_T_
  34. typedef    _WCHAR_T_    wchar_t;
  35. #undef    _WCHAR_T_
  36. #endif
  37.  
  38. #ifndef    NULL
  39. #define    NULL    0
  40. #endif
  41.  
  42. #define    offsetof(type, member)    ((size_t)(&((type *)0)->member))
  43.  
  44. #else /* not amigados */
  45.  
  46. /* Any one of these symbols __need_* means that GNU libc
  47.    wants us just to define one data type.  So don't define
  48.    the symbols that indicate this file's entire job has been done.  */
  49. #if (!defined(__need_wchar_t) && !defined(__need_size_t)    \
  50.      && !defined(__need_ptrdiff_t) && !defined(__need_NULL))
  51. #define _STDDEF_H
  52. #define _STDDEF_H_
  53. /* snaroff@next.com says the NeXT needs this.  */
  54. #define _ANSI_STDDEF_H
  55. /* Irix 5.1 needs this.  */
  56. #define __STDDEF_H__
  57. #endif
  58.  
  59. #ifndef __sys_stdtypes_h
  60. /* This avoids lossage on SunOS but only if stdtypes.h comes first.
  61.    There's no way to win with the other order!  Sun lossage.  */
  62.  
  63. /* On 4.3bsd-net2, make sure ansi.h is included, so we have
  64.    one less case to deal with in the following.  */
  65. #if defined (__BSD_NET2__) || defined (____386BSD____) || defined (__FreeBSD__) || defined(__NetBSD__)
  66. #include <machine/ansi.h>
  67. #endif
  68.  
  69. /* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
  70.     defined if the corresponding type is *not* defined.  */
  71. #ifdef _ANSI_H_
  72. #if !defined(_SIZE_T_) && !defined(_BSD_SIZE_T_)
  73. #define _SIZE_T
  74. #endif
  75. #if !defined(_PTRDIFF_T_) && !defined(_BSD_PTRDIFF_T_)
  76. #define _PTRDIFF_T
  77. #endif
  78. /* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
  79.    instead of _WCHAR_T_. */
  80. #if !defined(_WCHAR_T_) && !defined(_BSD_WCHAR_T_)
  81. #ifndef _BSD_WCHAR_T_
  82. #define _WCHAR_T
  83. #endif
  84. #endif
  85. /* Undef _FOO_T_ if we are supposed to define foo_t.  */
  86. #if defined (__need_ptrdiff_t) || defined (_STDDEF_H_)
  87. #undef _PTRDIFF_T_
  88. #undef _BSD_PTRDIFF_T_
  89. #endif
  90. #if defined (__need_size_t) || defined (_STDDEF_H_)
  91. #undef _SIZE_T_
  92. #undef _BSD_SIZE_T_
  93. #endif
  94. #if defined (__need_wchar_t) || defined (_STDDEF_H_)
  95. #undef _WCHAR_T_
  96. #undef _BSD_WCHAR_T_
  97. #endif
  98. #endif /* _ANSI_H_ */
  99.  
  100. /* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
  101.    Just ignore it.  */
  102. #if defined (__sequent__) && defined (_PTRDIFF_T_)
  103. #undef _PTRDIFF_T_
  104. #endif
  105.  
  106. /* In case nobody has defined these types, but we aren't running under
  107.    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE__TYPE__, and
  108.    __WCHAR_TYPE__ have reasonable values.  This can happen if the
  109.    parts of GCC is compiled by an older compiler, that actually
  110.    include gstddef.h, such as collect2.  */
  111.  
  112. /* Signed type of difference of two pointers.  */
  113.  
  114. /* Define this type if we are doing the whole job,
  115.    or if we want this type in particular.  */
  116. #if defined (_STDDEF_H) || defined (__need_ptrdiff_t)
  117. #ifndef _PTRDIFF_T    /* in case <sys/types.h> has defined it. */
  118. #ifndef _T_PTRDIFF_
  119. #ifndef _T_PTRDIFF
  120. #ifndef __PTRDIFF_T
  121. #ifndef _PTRDIFF_T_
  122. #ifndef _BSD_PTRDIFF_T_
  123. #ifndef ___int_ptrdiff_t_h
  124. #ifndef _GCC_PTRDIFF_T
  125. #define _PTRDIFF_T
  126. #define _T_PTRDIFF_
  127. #define _T_PTRDIFF
  128. #define __PTRDIFF_T
  129. #define _PTRDIFF_T_
  130. #define _BSD_PTRDIFF_T_
  131. #define ___int_ptrdiff_t_h
  132. #define _GCC_PTRDIFF_T
  133. #ifndef __PTRDIFF_TYPE__
  134. #define __PTRDIFF_TYPE__ long int
  135. #endif
  136. typedef __PTRDIFF_TYPE__ ptrdiff_t;
  137. #endif /* _GCC_PTRDIFF_T */
  138. #endif /* ___int_ptrdiff_t_h */
  139. #endif /* _BSD_PTRDIFF_T_ */
  140. #endif /* _PTRDIFF_T_ */
  141. #endif /* __PTRDIFF_T */
  142. #endif /* _T_PTRDIFF */
  143. #endif /* _T_PTRDIFF_ */
  144. #endif /* _PTRDIFF_T */
  145.  
  146. /* If this symbol has done its job, get rid of it.  */
  147. #undef    __need_ptrdiff_t
  148.  
  149. #endif /* _STDDEF_H or __need_ptrdiff_t.  */
  150.  
  151. /* Unsigned type of `sizeof' something.  */
  152.  
  153. /* Define this type if we are doing the whole job,
  154.    or if we want this type in particular.  */
  155. #if defined (_STDDEF_H) || defined (__need_size_t)
  156. #ifndef _SIZE_T    /* in case <sys/types.h> has defined it. */
  157. #ifndef _SYS_SIZE_T_H
  158. #ifndef _T_SIZE_
  159. #ifndef _T_SIZE
  160. #ifndef __SIZE_T
  161. #ifndef _SIZE_T_
  162. #ifndef _BSD_SIZE_T_
  163. #ifndef _SIZE_T_DEFINED_
  164. #ifndef ___int_size_t_h
  165. #ifndef _GCC_SIZE_T
  166. #ifndef _SIZET_
  167. #ifndef __size_t
  168. #define _SIZE_T
  169. #define _SYS_SIZE_T_H
  170. #define _T_SIZE_
  171. #define _T_SIZE
  172. #define __SIZE_T
  173. #define _SIZE_T_
  174. #define _BSD_SIZE_T_
  175. #define _SIZE_T_DEFINED_
  176. #define ___int_size_t_h
  177. #define _GCC_SIZE_T
  178. #define _SIZET_
  179. #define __size_t
  180. #ifndef __SIZE_TYPE__
  181. #define __SIZE_TYPE__ long unsigned int
  182. #endif
  183. #if !(defined (__GNUG__) && defined (size_t))
  184. typedef __SIZE_TYPE__ size_t;
  185. #endif /* !(defined (__GNUG__) && defined (size_t)) */
  186. #endif /* __size_t */
  187. #endif /* _SIZET_ */
  188. #endif /* _GCC_SIZE_T */
  189. #endif /* ___int_size_t_h */
  190. #endif /* _SIZE_T_DEFINED_ */
  191. #endif /* _BSD_SIZE_T_ */
  192. #endif /* _SIZE_T_ */
  193. #endif /* __SIZE_T */
  194. #endif /* _T_SIZE */
  195. #endif /* _T_SIZE_ */
  196. #endif /* _SYS_SIZE_T_H */
  197. #endif /* _SIZE_T */
  198. #undef    __need_size_t
  199. #endif /* _STDDEF_H or __need_size_t.  */
  200.  
  201.  
  202. /* Wide character type.
  203.    Locale-writers should change this as necessary to
  204.    be big enough to hold unique values not between 0 and 127,
  205.    and not (wchar_t) -1, for each defined multibyte character.  */
  206.  
  207. /* Define this type if we are doing the whole job,
  208.    or if we want this type in particular.  */
  209. #if defined (_STDDEF_H) || defined (__need_wchar_t)
  210. #ifndef _WCHAR_T
  211. #ifndef _T_WCHAR_
  212. #ifndef _T_WCHAR
  213. #ifndef __WCHAR_T
  214. #ifndef _WCHAR_T_
  215. #ifndef _BSD_WCHAR_T_
  216. #ifndef _WCHAR_T_DEFINED_
  217. #ifndef _WCHAR_T_H
  218. #ifndef ___int_wchar_t_h
  219. #ifndef __INT_WCHAR_T_H
  220. #ifndef _GCC_WCHAR_T
  221. #define _WCHAR_T
  222. #define _T_WCHAR_
  223. #define _T_WCHAR
  224. #define __WCHAR_T
  225. #define _WCHAR_T_
  226. #define _BSD_WCHAR_T_
  227. #define _WCHAR_T_DEFINED_
  228. #define _WCHAR_T_H
  229. #define ___int_wchar_t_h
  230. #define __INT_WCHAR_T_H
  231. #define _GCC_WCHAR_T
  232.  
  233. /* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
  234.    instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other
  235.    symbols in the _FOO_T_ family, stays defined even after its
  236.    corresponding type is defined).  If we define wchar_t, then we
  237.    must undef _WCHAR_T_; for BSD/386 1.1 (and perhaps others), if
  238.    we undef _WCHAR_T_, then we must also define rune_t, since 
  239.    headers like runetype.h assume that if machine/ansi.h is included,
  240.    and _BSD_WCHAR_T_ is not defined, then rune_t is available.
  241.    machine/ansi.h says, "Note that _WCHAR_T_ and _RUNE_T_ must be of
  242.    the same type." */
  243. #ifdef _BSD_WCHAR_T_
  244. #undef _BSD_WCHAR_T_
  245. #ifdef _BSD_RUNE_T_
  246. #if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE)
  247. typedef _BSD_RUNE_T_ rune_t;
  248. #endif
  249. #endif
  250. #endif
  251.  
  252. #ifndef __WCHAR_TYPE__
  253. #define __WCHAR_TYPE__ int
  254. #endif
  255.  
  256. #endif /* not  amigados */
  257. typedef __WCHAR_TYPE__ wchar_t;
  258. #endif
  259. #endif
  260. #endif
  261. #endif
  262. #endif
  263. #endif
  264. #endif
  265. #endif
  266. #endif
  267. #endif
  268. #endif
  269. #undef    __need_wchar_t
  270. #endif /* _STDDEF_H or __need_wchar_t.  */
  271.  
  272. /*  In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
  273.     are already defined.  */
  274. #ifdef _ANSI_H_
  275. /*  The references to _GCC_PTRDIFF_T_, _GCC_SIZE_T_, and _GCC_WCHAR_T_
  276.     are probably typos and should be removed before 2.7 is released.  */
  277. #ifdef _GCC_PTRDIFF_T_
  278. #undef _PTRDIFF_T_
  279. #undef _BSD_PTRDIFF_T_
  280. #endif
  281. #ifdef _GCC_SIZE_T_
  282. #undef _SIZE_T_
  283. #undef _BSD_SIZE_T_
  284. #endif
  285. #ifdef _GCC_WCHAR_T_
  286. #undef _WCHAR_T_
  287. #undef _BSD_WCHAR_T_
  288. #endif
  289. /*  The following ones are the real ones.  */
  290. #ifdef _GCC_PTRDIFF_T
  291. #undef _PTRDIFF_T_
  292. #endif
  293. #ifdef _GCC_SIZE_T
  294. #undef