From 40c8a398fdd9d84e9506a19935bc78ef78548a2b Mon Sep 17 00:00:00 2001 From: Robert Ou Date: Mon, 26 Mar 2018 22:45:07 -0700 Subject: Add an option to use C99 stdint.h If ABC_HAVE_STDINT_H is defined, standard C99 headers will be used to define all of the platform-dependent types required. arch_flags will also no longer be required. This new define is optional and must be manually enabled by setting ARCHFLAGS. --- src/misc/util/abc_global.h | 53 ++++++++++++++++++++++++++++++++++++++++++++++ src/misc/util/utilBridge.c | 3 +++ 2 files changed, 56 insertions(+) (limited to 'src') diff --git a/src/misc/util/abc_global.h b/src/misc/util/abc_global.h index b68d7b4c..12f09e1f 100644 --- a/src/misc/util/abc_global.h +++ b/src/misc/util/abc_global.h @@ -96,6 +96,49 @@ ABC_NAMESPACE_HEADER_START /// BASIC TYPES /// //////////////////////////////////////////////////////////////////////// +#ifdef ABC_HAVE_STDINT_H +// If there is stdint.h, assume this is a reasonably-modern platform that +// would also have stddef.h and limits.h +#include +#include +#include + +#if UINTPTR_MAX == 0xFFFFFFFFFFFFFFFF +#define SIZEOF_VOID_P 8 +#ifdef _WIN32 +#define NT64 +#else +#define LIN64 +#endif +#elif UINTPTR_MAX == 0xFFFFFFFF +#define SIZEOF_VOID_P 4 +#ifdef _WIN32 +#define NT +#else +#define LIN +#endif +#else + #error unsupported platform +#endif + +#if ULONG_MAX == 0xFFFFFFFFFFFFFFFF +#define SIZEOF_LONG 8 +#elif ULONG_MAX == 0xFFFFFFFF +#define SIZEOF_LONG 4 +#else + #error unsupported platform +#endif + +#if UINT_MAX == 0xFFFFFFFFFFFFFFFF +#define SIZEOF_INT 8 +#elif UINT_MAX == 0xFFFFFFFF +#define SIZEOF_INT 4 +#else + #error unsupported platform +#endif + +#endif + /** * Pointer difference type; replacement for ptrdiff_t. * This is a signed integral type that is the same size as a pointer. @@ -103,6 +146,8 @@ ABC_NAMESPACE_HEADER_START */ #if defined(__ccdoc__) typedef platform_dependent_type ABC_PTRDIFF_T; +#elif defined(ABC_HAVE_STDINT_H) +typedef ptrdiff_t ABC_PTRDIFF_T; #elif defined(LIN64) typedef long ABC_PTRDIFF_T; #elif defined(NT64) @@ -120,6 +165,8 @@ typedef int ABC_PTRDIFF_T; */ #if defined(__ccdoc__) typedef platform_dependent_type ABC_PTRUINT_T; +#elif defined(ABC_HAVE_STDINT_H) +typedef uintptr_t ABC_PTRUINT_T; #elif defined(LIN64) typedef unsigned long ABC_PTRUINT_T; #elif defined(NT64) @@ -137,6 +184,8 @@ typedef unsigned int ABC_PTRUINT_T; */ #if defined(__ccdoc__) typedef platform_dependent_type ABC_PTRINT_T; +#elif defined(ABC_HAVE_STDINT_H) +typedef intptr_t ABC_PTRINT_T; #elif defined(LIN64) typedef long ABC_PTRINT_T; #elif defined(NT64) @@ -152,6 +201,8 @@ typedef int ABC_PTRINT_T; */ #if defined(__ccdoc__) typedef platform_dependent_type ABC_INT64_T; +#elif defined(ABC_HAVE_STDINT_H) +typedef int64_t ABC_INT64_T; #elif defined(LIN64) typedef long ABC_INT64_T; #elif defined(NT64) || defined(LIN) @@ -167,6 +218,8 @@ typedef signed __int64 ABC_INT64_T; */ #if defined(__ccdoc__) typedef platform_dependent_type ABC_UINT64_T; +#elif defined(ABC_HAVE_STDINT_H) +typedef uint64_t ABC_UINT64_T; #elif defined(LIN64) typedef unsigned long ABC_UINT64_T; #elif defined(NT64) || defined(LIN) diff --git a/src/misc/util/utilBridge.c b/src/misc/util/utilBridge.c index 70ea8ec7..96e8a2cf 100644 --- a/src/misc/util/utilBridge.c +++ b/src/misc/util/utilBridge.c @@ -22,6 +22,9 @@ #include #include #include + +#include "abc_global.h" + #if defined(LIN) || defined(LIN64) #include #endif -- cgit v1.2.3 From 8d472cd55e49c62bce489b9a2dcfcfa3a7759cf2 Mon Sep 17 00:00:00 2001 From: Robert Ou Date: Thu, 29 Mar 2018 19:08:24 -0700 Subject: Rename new flag to ABC_USE_STDINT_H --- src/misc/util/abc_global.h | 12 ++++++------ src/misc/util/utilBridge.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/misc/util/abc_global.h b/src/misc/util/abc_global.h index 12f09e1f..14523abd 100644 --- a/src/misc/util/abc_global.h +++ b/src/misc/util/abc_global.h @@ -96,7 +96,7 @@ ABC_NAMESPACE_HEADER_START /// BASIC TYPES /// //////////////////////////////////////////////////////////////////////// -#ifdef ABC_HAVE_STDINT_H +#ifdef ABC_USE_STDINT_H // If there is stdint.h, assume this is a reasonably-modern platform that // would also have stddef.h and limits.h #include @@ -146,7 +146,7 @@ ABC_NAMESPACE_HEADER_START */ #if defined(__ccdoc__) typedef platform_dependent_type ABC_PTRDIFF_T; -#elif defined(ABC_HAVE_STDINT_H) +#elif defined(ABC_USE_STDINT_H) typedef ptrdiff_t ABC_PTRDIFF_T; #elif defined(LIN64) typedef long ABC_PTRDIFF_T; @@ -165,7 +165,7 @@ typedef int ABC_PTRDIFF_T; */ #if defined(__ccdoc__) typedef platform_dependent_type ABC_PTRUINT_T; -#elif defined(ABC_HAVE_STDINT_H) +#elif defined(ABC_USE_STDINT_H) typedef uintptr_t ABC_PTRUINT_T; #elif defined(LIN64) typedef unsigned long ABC_PTRUINT_T; @@ -184,7 +184,7 @@ typedef unsigned int ABC_PTRUINT_T; */ #if defined(__ccdoc__) typedef platform_dependent_type ABC_PTRINT_T; -#elif defined(ABC_HAVE_STDINT_H) +#elif defined(ABC_USE_STDINT_H) typedef intptr_t ABC_PTRINT_T; #elif defined(LIN64) typedef long ABC_PTRINT_T; @@ -201,7 +201,7 @@ typedef int ABC_PTRINT_T; */ #if defined(__ccdoc__) typedef platform_dependent_type ABC_INT64_T; -#elif defined(ABC_HAVE_STDINT_H) +#elif defined(ABC_USE_STDINT_H) typedef int64_t ABC_INT64_T; #elif defined(LIN64) typedef long ABC_INT64_T; @@ -218,7 +218,7 @@ typedef signed __int64 ABC_INT64_T; */ #if defined(__ccdoc__) typedef platform_dependent_type ABC_UINT64_T; -#elif defined(ABC_HAVE_STDINT_H) +#elif defined(ABC_USE_STDINT_H) typedef uint64_t ABC_UINT64_T; #elif defined(LIN64) typedef unsigned long ABC_UINT64_T; diff --git a/src/misc/util/utilBridge.c b/src/misc/util/utilBridge.c index 96e8a2cf..f988b656 100644 --- a/src/misc/util/utilBridge.c +++ b/src/misc/util/utilBridge.c @@ -23,7 +23,7 @@ #include #include -#include "abc_global.h" +#include #if defined(LIN) || defined(LIN64) #include -- cgit v1.2.3