/* from ISO/IEC 988:1999 spec */
/* 7.18.1.1 Exact-width integer types */
-#ifndef _INT8_T
-#define _INT8_T
-typedef signed char int8_t;
-#endif /*_INT8_T */
-
-#ifndef _INT16_T
-#define _INT16_T
-typedef short int16_t;
-#endif /* _INT16_T */
-
-#ifndef _INT32_T
-#define _INT32_T
-typedef int int32_t;
-#endif /* _INT32_T */
-
-#ifndef _INT64_T
-#define _INT64_T
-typedef long long int64_t;
-#endif /* _INT64_T */
-
-#ifndef _UINT8_T
-#define _UINT8_T
-typedef unsigned char uint8_t;
-#endif /*_UINT8_T */
-
-#ifndef _UINT16_T
-#define _UINT16_T
-typedef unsigned short uint16_t;
-#endif /* _UINT16_T */
-
-#ifndef _UINT32_T
-#define _UINT32_T
-typedef unsigned int uint32_t;
-#endif /* _UINT32_T */
-
-#ifndef _UINT64_T
-#define _UINT64_T
-typedef unsigned long long uint64_t;
-#endif /* _UINT64_T */
+#include <sys/_types/_int8_t.h>
+#include <sys/_types/_int16_t.h>
+#include <sys/_types/_int32_t.h>
+#include <sys/_types/_int64_t.h>
+
+#include <_types/_uint8_t.h>
+#include <_types/_uint16_t.h>
+#include <_types/_uint32_t.h>
+#include <_types/_uint64_t.h>
/* 7.18.1.2 Minimum-width integer types */
typedef int8_t int_least8_t;
/* 7.18.1.4 Integer types capable of holding object pointers */
-#ifndef _INTPTR_T
-#define _INTPTR_T
-typedef long intptr_t;
-#endif /* _INTPTR_T */
-
-#ifndef _UINTPTR_T
-#define _UINTPTR_T
-typedef unsigned long uintptr_t;
-#endif /* _UINTPTR_T */
+#include <sys/_types.h>
+#include <sys/_types/_intptr_t.h>
+#include <sys/_types/_uintptr_t.h>
/* 7.18.1.5 Greatest-width integer types */
-#ifndef _INTMAX_T
-#define _INTMAX_T
-#ifdef __INTMAX_TYPE__
-typedef __INTMAX_TYPE__ intmax_t;
-#else /* __INTMAX_TYPE__ */
-typedef long long intmax_t;
-#endif /* __INTMAX_TYPE__ */
-#endif /* _INTMAX_T */
-
-#ifndef _UINTMAX_T
-#define _UINTMAX_T
-#ifdef __UINTMAX_TYPE__
-typedef __UINTMAX_TYPE__ uintmax_t;
-#else /* __UINTMAX_TYPE__ */
-typedef unsigned long long uintmax_t;
-#endif /* __UINTMAX_TYPE__ */
-#endif /* _UINTMAX_T */
+#include <_types/_intmax_t.h>
+#include <_types/_uintmax_t.h>
/* 7.18.2 Limits of specified-width integer types:
* These #defines specify the minimum and maximum limits
#define PTRDIFF_MAX INT32_MAX
#endif
-/* We have no sig_atomic_t yet, so no SIG_ATOMIC_{MIN,MAX}.
- Should end up being {-127,127} or {0,255} ... or bigger.
- My bet would be on one of {U}INT32_{MIN,MAX}. */
-
#if __WORDSIZE == 64
#define SIZE_MAX UINT64_MAX
#else
#define SIZE_MAX UINT32_MAX
#endif
+#if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1
+#define RSIZE_MAX (SIZE_MAX >> 1)
+#endif
+
#ifndef WCHAR_MAX
# ifdef __WCHAR_MAX__
# define WCHAR_MAX __WCHAR_MAX__
#define UINT32_C(v) (v ## U)
#define UINT64_C(v) (v ## ULL)
+#ifdef __LP64__
+#define INTMAX_C(v) (v ## L)
+#define UINTMAX_C(v) (v ## UL)
+#else
#define INTMAX_C(v) (v ## LL)
#define UINTMAX_C(v) (v ## ULL)
+#endif
#endif /* _STDINT_H_ */