summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsterin <github@bsterin.com>2018-03-30 00:48:27 -0700
committerGitHub <noreply@github.com>2018-03-30 00:48:27 -0700
commit4a39f3265f2db7d22bfc9915c87d16f3837f5c85 (patch)
tree2b3c89f78d16e1c735aa033a9d990935d8663135 /src
parentd879336fad13d7cba08d658375b2a44c6b4cb6fa (diff)
parent8d472cd55e49c62bce489b9a2dcfcfa3a7759cf2 (diff)
downloadabc-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.h53
-rw-r--r--src/misc/util/utilBridge.c3
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