Mercurial > hg > th-libs
diff th_types.h @ 150:9bc7f60f3013
More portability stuff. :|
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 07 Jan 2015 20:21:27 +0200 |
parents | 6a0e9980b76b |
children | d560371c85c0 |
line wrap: on
line diff
--- a/th_types.h Wed Jan 07 17:04:31 2015 +0200 +++ b/th_types.h Wed Jan 07 20:21:27 2015 +0200 @@ -11,18 +11,67 @@ #ifndef _TH_TYPES_H #define _TH_TYPES_H +// Check for standard headers #ifdef HAVE_STDINT_H -#include <stdint.h> -#ifndef HAVE_INT_TYPES -#define HAVE_INT_TYPES 1 -#endif +# include <stdint.h> +# ifndef HAVE_INT_TYPES +# define HAVE_INT_TYPES 1 +# endif +// Check for arch bitness +# if UINTPTR_MAX == 0xffffffff +# define TH_ARCH 32 +# elif UINTPTR_MAX == 0xffffffffffffffff +# define TH_ARCH 64 +# endif #endif #ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#ifndef HAVE_INT_TYPES -#define HAVE_INT_TYPES 1 +# include <sys/types.h> +# ifndef HAVE_INT_TYPES +# define HAVE_INT_TYPES 1 +# endif +#endif + +#if !defined(TH_ARCH) +# if defined(__LP64__) || defined(_LP64) +# define TH_ARCH 64 +# else +# define TH_ARCH 32 +# endif +#endif + + +#if !defined(TH_ARCH) && (defined(__WIN32) || defined(_WIN32)) +# define TH_ARCH 32 #endif + + +// Do we have a valid arch? +// If so, set some printf specifiers +#if TH_ARCH == 32 +# define TH_ARCH_32BIT 1 +# define TH_PRIu32 "u" +# define TH_PRId32 "d" +# define TH_PRIx32 "x" +# define TH_PRIu64 "llu" +# define TH_PRId64 "lld" +# define TH_PRIx64 "llx" +# define TH_PRIu_SIZE_T "u" +# define TH_PRId_SSIZE_T "d" +# define TH_PRIx_SIZE_T "x" +#elif TH_ARCH == 64 +# define TH_ARCH_64BIT 1 +# define TH_PRIu32 "u" +# define TH_PRId32 "d" +# define TH_PRIx32 "x" +# define TH_PRIu64 "lu" +# define TH_PRId64 "ld" +# define TH_PRIx64 "lx" +# define TH_PRIu_SIZE_T "lu" +# define TH_PRId_SSIZE_T "ld" +# define TH_PRIx_SIZE_T "lx" +#else +# error Could not determine architecture (32/64bit), please define TH_ARCH=32 or 64 #endif // Shorthand types