diff options
author | sterin <github@bsterin.com> | 2018-03-30 00:48:27 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-30 00:48:27 -0700 |
commit | 4a39f3265f2db7d22bfc9915c87d16f3837f5c85 (patch) | |
tree | 2b3c89f78d16e1c735aa033a9d990935d8663135 /src | |
parent | d879336fad13d7cba08d658375b2a44c6b4cb6fa (diff) | |
parent | 8d472cd55e49c62bce489b9a2dcfcfa3a7759cf2 (diff) | |
download | abc-4a39f3265f2db7d22bfc9915c87d16f3837f5c85.tar.gz abc-4a39f3265f2db7d22bfc9915c87d16f3837f5c85.tar.bz2 abc-4a39f3265f2db7d22bfc9915c87d16f3837f5c85.zip |
Merge pull request #2 from rqou/master
Use C99 header stdint.h to determine platform-dependent types and macros
Diffstat (limited to 'src')
-rw-r--r-- | src/misc/util/abc_global.h | 53 | ||||
-rw-r--r-- | src/misc/util/utilBridge.c | 3 |
2 files changed, 56 insertions, 0 deletions
diff --git a/src/misc/util/abc_global.h b/src/misc/util/abc_global.h index b68d7b4c..14523abd 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_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 <limits.h> +#include <stddef.h> +#include <stdint.h> + +#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_USE_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_USE_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_USE_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_USE_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_USE_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..f988b656 100644 --- a/src/misc/util/utilBridge.c +++ b/src/misc/util/utilBridge.c @@ -22,6 +22,9 @@ #include <string.h> #include <stdlib.h> #include <assert.h> + +#include <misc/util/abc_global.h> + #if defined(LIN) || defined(LIN64) #include <unistd.h> #endif |