From b35cc8e2e544965c7609811ff1370fcea13799d3 Mon Sep 17 00:00:00 2001 From: Stephen Heumann Date: Fri, 30 Aug 2024 18:40:03 -0500 Subject: [PATCH] Include width macros in and (C23). --- ORCACDefs/limits.h | 14 ++++++++++++++ ORCACDefs/stdint.h | 43 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/ORCACDefs/limits.h b/ORCACDefs/limits.h index 213b212..930bf8b 100644 --- a/ORCACDefs/limits.h +++ b/ORCACDefs/limits.h @@ -34,5 +34,19 @@ #define LLONG_MAX 9223372036854775807 #define ULLONG_MAX 18446744073709551615u #endif +#if !defined(__KeepNamespacePure__) || __STDC_VERSION__ >= 202311L +#define BOOL_WIDTH 1 +#define CHAR_WIDTH 8 +#define SCHAR_WIDTH 8 +#define UCHAR_WIDTH 8 +#define SHRT_WIDTH 16 +#define USHRT_WIDTH 16 +#define INT_WIDTH 16 +#define UINT_WIDTH 16 +#define LONG_WIDTH 32 +#define ULONG_WIDTH 32 +#define LLONG_WIDTH 64 +#define ULLONG_WIDTH 64 +#endif #endif diff --git a/ORCACDefs/stdint.h b/ORCACDefs/stdint.h index a425c50..542b594 100644 --- a/ORCACDefs/stdint.h +++ b/ORCACDefs/stdint.h @@ -159,7 +159,48 @@ typedef unsigned long long uintmax_t; #define WCHAR_MAX 65535u #endif -/* WINT_MIN and WINT_MAX are not defined because wint_t is not defined. */ +/* Widths of integer types */ +#if !defined(__KeepNamespacePure__) || __STDC_VERSION__ >= 202311L +#define INT8_WIDTH 8 +#define INT16_WIDTH 16 +#define INT32_WIDTH 32 +#define INT64_WIDTH 64 +#define UINT8_WIDTH 8 +#define UINT16_WIDTH 16 +#define UINT32_WIDTH 32 +#define UINT64_WIDTH 64 + +#define INT_LEAST8_WIDTH 8 +#define INT_LEAST16_WIDTH 16 +#define INT_LEAST32_WIDTH 32 +#define INT_LEAST64_WIDTH 64 +#define UINT_LEAST8_WIDTH 8 +#define UINT_LEAST16_WIDTH 16 +#define UINT_LEAST32_WIDTH 32 +#define UINT_LEAST64_WIDTH 64 + +#define INT_FAST8_WIDTH 16 +#define INT_FAST16_WIDTH 16 +#define INT_FAST32_WIDTH 32 +#define INT_FAST64_WIDTH 64 +#define UINT_FAST8_WIDTH 16 +#define UINT_FAST16_WIDTH 16 +#define UINT_FAST32_WIDTH 32 +#define UINT_FAST64_WIDTH 64 + +#define INTPTR_WIDTH 32 +#define UINTPTR_WIDTH 32 + +#define INTMAX_WIDTH 64 +#define UINTMAX_WIDTH 64 + +#define PTRDIFF_WIDTH 32 +#define SIG_ATOMIC_WIDTH 16 +#define SIZE_WIDTH 32 +#define WCHAR_WIDTH 16 +#endif + +/* WINT_{MIN,MAX,WIDTH} are not defined because wint_t is not defined. */ /* Macros for minimum-width integer constants */ #define INT8_C(val) (val)