diff --git a/libc/include/inttypes.h b/libc/include/inttypes.h index 7c9a2fc01..2fd2415bf 100644 --- a/libc/include/inttypes.h +++ b/libc/include/inttypes.h @@ -22,8 +22,6 @@ #include #include -#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) || (__cplusplus >= 201103L) - #ifdef __LP64__ #define __PRI_64_prefix "l" #define __PRI_PTR_prefix "l" @@ -250,8 +248,6 @@ #define SCNxMAX "jx" /* uintmax_t */ #define SCNxPTR __PRI_PTR_prefix"x" /* uintptr_t */ -#endif /* __cplusplus || __STDC_FORMAT_MACROS */ - typedef struct { intmax_t quot; /* quotient */ intmax_t rem; /* remainder */ diff --git a/libc/include/stdint.h b/libc/include/stdint.h index 9bdfb0506..be49485f4 100644 --- a/libc/include/stdint.h +++ b/libc/include/stdint.h @@ -32,249 +32,174 @@ #include #include -#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) || (__cplusplus >= 201103L) -# define __STDINT_LIMITS -#endif - -#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) || (__cplusplus >= 201103L) -# define __STDINT_MACROS -#endif - typedef __int8_t int8_t; typedef __uint8_t uint8_t; + typedef __int16_t int16_t; typedef __uint16_t uint16_t; + typedef __int32_t int32_t; typedef __uint32_t uint32_t; + typedef __int64_t int64_t; typedef __uint64_t uint64_t; -/* - * int8_t & uint8_t - */ - typedef int8_t int_least8_t; typedef int8_t int_fast8_t; typedef uint8_t uint_least8_t; typedef uint8_t uint_fast8_t; -#ifdef __STDINT_LIMITS -# define INT8_MIN (-128) -# define INT8_MAX (127) -# define INT_LEAST8_MIN INT8_MIN -# define INT_LEAST8_MAX INT8_MAX -# define INT_FAST8_MIN INT8_MIN -# define INT_FAST8_MAX INT8_MAX - -# define UINT8_MAX (255) -# define UINT_LEAST8_MAX UINT8_MAX -# define UINT_FAST8_MAX UINT8_MAX -#endif - -#ifdef __STDINT_MACROS -# define INT8_C(c) c -# define INT_LEAST8_C(c) INT8_C(c) -# define INT_FAST8_C(c) INT8_C(c) - -# define UINT8_C(c) c -# define UINT_LEAST8_C(c) UINT8_C(c) -# define UINT_FAST8_C(c) UINT8_C(c) -#endif - -/* - * int16_t & uint16_t - */ - typedef int16_t int_least16_t; typedef int32_t int_fast16_t; typedef uint16_t uint_least16_t; typedef uint32_t uint_fast16_t; -#ifdef __STDINT_LIMITS -# define INT16_MIN (-32768) -# define INT16_MAX (32767) -# define INT_LEAST16_MIN INT16_MIN -# define INT_LEAST16_MAX INT16_MAX -# define INT_FAST16_MIN INT32_MIN -# define INT_FAST16_MAX INT32_MAX - -# define UINT16_MAX (65535) -# define UINT_LEAST16_MAX UINT16_MAX -# define UINT_FAST16_MAX UINT32_MAX -#endif - -#ifdef __STDINT_MACROS -# define INT16_C(c) c -# define INT_LEAST16_C(c) INT16_C(c) -# define INT_FAST16_C(c) INT32_C(c) - -# define UINT16_C(c) c -# define UINT_LEAST16_C(c) UINT16_C(c) -# define UINT_FAST16_C(c) UINT32_C(c) -#endif - -/* - * int32_t & uint32_t - */ - typedef int32_t int_least32_t; typedef int32_t int_fast32_t; typedef uint32_t uint_least32_t; typedef uint32_t uint_fast32_t; -#ifdef __STDINT_LIMITS -# define INT32_MIN (-2147483647-1) -# define INT32_MAX (2147483647) -# define INT_LEAST32_MIN INT32_MIN -# define INT_LEAST32_MAX INT32_MAX -# define INT_FAST32_MIN INT32_MIN -# define INT_FAST32_MAX INT32_MAX - -# define UINT32_MAX (4294967295U) -# define UINT_LEAST32_MAX UINT32_MAX -# define UINT_FAST32_MAX UINT32_MAX -#endif - -#ifdef __STDINT_MACROS -# define INT32_C(c) c -# define INT_LEAST32_C(c) INT32_C(c) -# define INT_FAST32_C(c) INT32_C(c) - -# define UINT32_C(c) c ## U -# define UINT_LEAST32_C(c) UINT32_C(c) -# define UINT_FAST32_C(c) UINT32_C(c) -#endif - -/* - * int64_t - */ - typedef int64_t int_least64_t; typedef int64_t int_fast64_t; typedef uint64_t uint_least64_t; typedef uint64_t uint_fast64_t; -#if __LP64__ -# define __INT64_C(c) c ## L -# define __UINT64_C(c) c ## UL -#else -# define __INT64_C(c) c ## LL -# define __UINT64_C(c) c ## ULL -#endif - -#ifdef __STDINT_LIMITS -# define INT64_MIN (__INT64_C(-9223372036854775807)-1) -# define INT64_MAX (__INT64_C(9223372036854775807)) -# define INT_LEAST64_MIN INT64_MIN -# define INT_LEAST64_MAX INT64_MAX -# define INT_FAST64_MIN INT64_MIN -# define INT_FAST64_MAX INT64_MAX -# define UINT64_MAX (__UINT64_C(18446744073709551615)) - -# define UINT_LEAST64_MAX UINT64_MAX -# define UINT_FAST64_MAX UINT64_MAX -#endif - -#ifdef __STDINT_MACROS -# define INT64_C(c) __INT64_C(c) -# define INT_LEAST64_C(c) INT64_C(c) -# define INT_FAST64_C(c) INT64_C(c) - -# define UINT64_C(c) __UINT64_C(c) -# define UINT_LEAST64_C(c) UINT64_C(c) -# define UINT_FAST64_C(c) UINT64_C(c) -#endif - -# define __PRI64_RANK "ll" -# define __PRIFAST_RANK "" -# define __PRIPTR_RANK "" - - -/* - * intptr_t & uintptr_t - */ - #ifdef __LP64__ - -typedef long intptr_t; -typedef unsigned long uintptr_t; - -#ifdef __STDINT_LIMITS -# define INTPTR_MIN INT64_MIN -# define INTPTR_MAX INT64_MAX -# define UINTPTR_MAX UINT64_MAX -# define PTRDIFF_MIN INT64_MIN -# define PTRDIFF_MAX INT64_MAX -#endif -#ifdef __STDINT_MACROS -# define INTPTR_C(c) INT64_C(c) -# define UINTPTR_C(c) UINT64_C(c) -# define PTRDIFF_C(c) INT64_C(c) -#endif - +typedef long intptr_t; +typedef unsigned long uintptr_t; #else - typedef int intptr_t; typedef unsigned int uintptr_t; - -#ifdef __STDINT_LIMITS -# define INTPTR_MIN INT32_MIN -# define INTPTR_MAX INT32_MAX -# define UINTPTR_MAX UINT32_MAX -# define PTRDIFF_MIN INT32_MIN -# define PTRDIFF_MAX INT32_MAX #endif -#ifdef __STDINT_MACROS -# define INTPTR_C(c) INT32_C(c) -# define UINTPTR_C(c) UINT32_C(c) -# define PTRDIFF_C(c) INT32_C(c) -#endif - -#endif /* __LP64__ */ - - -/* - * intmax_t & uintmax_t - */ typedef uint64_t uintmax_t; typedef int64_t intmax_t; -#ifdef __STDINT_LIMITS -# define INTMAX_MIN INT64_MIN -# define INTMAX_MAX INT64_MAX -# define UINTMAX_MAX UINT64_MAX -#endif - -#ifdef __STDINT_MACROS -# define INTMAX_C(c) INT64_C(c) -# define UINTMAX_C(c) UINT64_C(c) -#endif - -/* - * sig_atomic_t, size_t, wchar_t, and wint_t. - */ - -#ifdef __STDINT_LIMITS -# define SIG_ATOMIC_MAX INT32_MAX -# define SIG_ATOMIC_MIN INT32_MIN - -# define SIZE_MAX UINT32_MAX - -# ifndef WCHAR_MAX /* These might also have been defined by . */ -# define WCHAR_MAX INT32_MAX -# define WCHAR_MIN INT32_MIN -# endif - -# define WINT_MAX INT32_MAX -# define WINT_MIN INT32_MIN -#endif - /* Keep the kernel from trying to define these types... */ #define __BIT_TYPES_DEFINED__ +#define INT8_C(c) c +#define INT_LEAST8_C(c) INT8_C(c) +#define INT_FAST8_C(c) INT8_C(c) + +#define UINT8_C(c) c +#define UINT_LEAST8_C(c) UINT8_C(c) +#define UINT_FAST8_C(c) UINT8_C(c) + +#define INT16_C(c) c +#define INT_LEAST16_C(c) INT16_C(c) +#define INT_FAST16_C(c) INT32_C(c) + +#define UINT16_C(c) c +#define UINT_LEAST16_C(c) UINT16_C(c) +#define UINT_FAST16_C(c) UINT32_C(c) +#define INT32_C(c) c +#define INT_LEAST32_C(c) INT32_C(c) +#define INT_FAST32_C(c) INT32_C(c) + +#define UINT32_C(c) c ## U +#define UINT_LEAST32_C(c) UINT32_C(c) +#define UINT_FAST32_C(c) UINT32_C(c) +#define INT_LEAST64_C(c) INT64_C(c) +#define INT_FAST64_C(c) INT64_C(c) + +#define UINT_LEAST64_C(c) UINT64_C(c) +#define UINT_FAST64_C(c) UINT64_C(c) + +#define INTMAX_C(c) INT64_C(c) +#define UINTMAX_C(c) UINT64_C(c) + +#ifdef __LP64__ +# define INT64_C(c) c ## L +# define UINT64_C(c) c ## UL +# define INTPTR_C(c) INT64_C(c) +# define UINTPTR_C(c) UINT64_C(c) +# define PTRDIFF_C(c) INT64_C(c) +#else +# define INT64_C(c) c ## LL +# define UINT64_C(c) c ## ULL +# define INTPTR_C(c) INT32_C(c) +# define UINTPTR_C(c) UINT32_C(c) +# define PTRDIFF_C(c) INT32_C(c) +#endif + +#define INT8_MIN (-128) +#define INT8_MAX (127) +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST8_MAX INT8_MAX +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST8_MAX INT8_MAX + +#define UINT8_MAX (255) +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_FAST8_MAX UINT8_MAX + +#define INT16_MIN (-32768) +#define INT16_MAX (32767) +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST16_MAX INT16_MAX +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST16_MAX INT32_MAX + +#define UINT16_MAX (65535) +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_FAST16_MAX UINT32_MAX + +#define INT32_MIN (-2147483647-1) +#define INT32_MAX (2147483647) +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST32_MAX INT32_MAX +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST32_MAX INT32_MAX + +#define UINT32_MAX (4294967295U) +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INT64_MIN (INT64_C(-9223372036854775807)-1) +#define INT64_MAX (INT64_C(9223372036854775807)) +#define INT_LEAST64_MIN INT64_MIN +#define INT_LEAST64_MAX INT64_MAX +#define INT_FAST64_MIN INT64_MIN +#define INT_FAST64_MAX INT64_MAX +#define UINT64_MAX (UINT64_C(18446744073709551615)) + +#define UINT_LEAST64_MAX UINT64_MAX +#define UINT_FAST64_MAX UINT64_MAX + +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +#define SIG_ATOMIC_MAX INT32_MAX +#define SIG_ATOMIC_MIN INT32_MIN + +#ifndef WCHAR_MAX /* These might also have been defined by . */ +# define WCHAR_MAX INT32_MAX +# define WCHAR_MIN INT32_MIN +#endif + +#define WINT_MAX INT32_MAX +#define WINT_MIN INT32_MIN + +#ifdef __LP64__ +# define INTPTR_MIN INT64_MIN +# define INTPTR_MAX INT64_MAX +# define UINTPTR_MAX UINT64_MAX +# define PTRDIFF_MIN INT64_MIN +# define PTRDIFF_MAX INT64_MAX +# define SIZE_MAX UINT64_MAX +#else +# define INTPTR_MIN INT32_MIN +# define INTPTR_MAX INT32_MAX +# define UINTPTR_MAX UINT32_MAX +# define PTRDIFF_MIN INT32_MIN +# define PTRDIFF_MAX INT32_MAX +# define SIZE_MAX UINT32_MAX +#endif + #endif /* _STDINT_H */ diff --git a/tests/inttypes_test.cpp b/tests/inttypes_test.cpp index ec4a10401..df02d1fc1 100644 --- a/tests/inttypes_test.cpp +++ b/tests/inttypes_test.cpp @@ -16,8 +16,6 @@ #include -#define __STDC_FORMAT_MACROS // Otherwise not available in C++. - #include #include