added more MIO_SIZEOF_XXX_T macros.

added MIO_HAVE_BUJILTIN_CTZL/CTZLL for gcc 3.4 or later
This commit is contained in:
hyung-hwan 2019-03-25 11:42:26 +00:00
parent 6eed4425ec
commit 9cc53fc237

View File

@ -65,21 +65,29 @@
#if defined(MIO_SIZEOF_CHAR) && (MIO_SIZEOF_CHAR == 1) #if defined(MIO_SIZEOF_CHAR) && (MIO_SIZEOF_CHAR == 1)
# define MIO_HAVE_UINT8_T # define MIO_HAVE_UINT8_T
# define MIO_HAVE_INT8_T # define MIO_HAVE_INT8_T
# define MIO_SIZEOF_UINT8_T (MIO_SIZEOF_CHAR)
# define MIO_SIZEOF_INT8_T (MIO_SIZEOF_CHAR)
typedef unsigned char mio_uint8_t; typedef unsigned char mio_uint8_t;
typedef signed char mio_int8_t; typedef signed char mio_int8_t;
#elif defined(MIO_SIZEOF___INT8) && (MIO_SIZEOF___INT8 == 1) #elif defined(MIO_SIZEOF___INT8) && (MIO_SIZEOF___INT8 == 1)
# define MIO_HAVE_UINT8_T # define MIO_HAVE_UINT8_T
# define MIO_HAVE_INT8_T # define MIO_HAVE_INT8_T
# define MIO_SIZEOF_UINT8_T (MIO_SIZEOF___INT8)
# define MIO_SIZEOF_INT8_T (MIO_SIZEOF___INT8)
typedef unsigned __int8 mio_uint8_t; typedef unsigned __int8 mio_uint8_t;
typedef signed __int8 mio_int8_t; typedef signed __int8 mio_int8_t;
#elif defined(MIO_SIZEOF___INT8_T) && (MIO_SIZEOF___INT8_T == 1) #elif defined(MIO_SIZEOF___INT8_T) && (MIO_SIZEOF___INT8_T == 1)
# define MIO_HAVE_UINT8_T # define MIO_HAVE_UINT8_T
# define MIO_HAVE_INT8_T # define MIO_HAVE_INT8_T
# define MIO_SIZEOF_UINT8_T (MIO_SIZEOF___INT8_T)
# define MIO_SIZEOF_INT8_T (MIO_SIZEOF___INT8_T)
typedef unsigned __int8_t mio_uint8_t; typedef unsigned __int8_t mio_uint8_t;
typedef signed __int8_t mio_int8_t; typedef signed __int8_t mio_int8_t;
#else #else
# define MIO_HAVE_UINT8_T # define MIO_HAVE_UINT8_T
# define MIO_HAVE_INT8_T # define MIO_HAVE_INT8_T
# define MIO_SIZEOF_UINT8_T (1)
# define MIO_SIZEOF_INT8_T (1)
typedef unsigned char mio_uint8_t; typedef unsigned char mio_uint8_t;
typedef signed char mio_int8_t; typedef signed char mio_int8_t;
#endif #endif
@ -88,21 +96,29 @@
#if defined(MIO_SIZEOF_SHORT) && (MIO_SIZEOF_SHORT == 2) #if defined(MIO_SIZEOF_SHORT) && (MIO_SIZEOF_SHORT == 2)
# define MIO_HAVE_UINT16_T # define MIO_HAVE_UINT16_T
# define MIO_HAVE_INT16_T # define MIO_HAVE_INT16_T
# define MIO_SIZEOF_UINT16_T (MIO_SIZEOF_SHORT)
# define MIO_SIZEOF_INT16_T (MIO_SIZEOF_SHORT)
typedef unsigned short int mio_uint16_t; typedef unsigned short int mio_uint16_t;
typedef signed short int mio_int16_t; typedef signed short int mio_int16_t;
#elif defined(MIO_SIZEOF___INT16) && (MIO_SIZEOF___INT16 == 2) #elif defined(MIO_SIZEOF___INT16) && (MIO_SIZEOF___INT16 == 2)
# define MIO_HAVE_UINT16_T # define MIO_HAVE_UINT16_T
# define MIO_HAVE_INT16_T # define MIO_HAVE_INT16_T
# define MIO_SIZEOF_UINT16_T (MIO_SIZEOF___INT16)
# define MIO_SIZEOF_INT16_T (MIO_SIZEOF___INT16)
typedef unsigned __int16 mio_uint16_t; typedef unsigned __int16 mio_uint16_t;
typedef signed __int16 mio_int16_t; typedef signed __int16 mio_int16_t;
#elif defined(MIO_SIZEOF___INT16_T) && (MIO_SIZEOF___INT16_T == 2) #elif defined(MIO_SIZEOF___INT16_T) && (MIO_SIZEOF___INT16_T == 2)
# define MIO_HAVE_UINT16_T # define MIO_HAVE_UINT16_T
# define MIO_HAVE_INT16_T # define MIO_HAVE_INT16_T
# define MIO_SIZEOF_UINT16_T (MIO_SIZEOF___INT16_T)
# define MIO_SIZEOF_INT16_T (MIO_SIZEOF___INT16_T)
typedef unsigned __int16_t mio_uint16_t; typedef unsigned __int16_t mio_uint16_t;
typedef signed __int16_t mio_int16_t; typedef signed __int16_t mio_int16_t;
#else #else
# define MIO_HAVE_UINT16_T # define MIO_HAVE_UINT16_T
# define MIO_HAVE_INT16_T # define MIO_HAVE_INT16_T
# define MIO_SIZEOF_UINT16_T (2)
# define MIO_SIZEOF_INT16_T (2)
typedef unsigned short int mio_uint16_t; typedef unsigned short int mio_uint16_t;
typedef signed short int mio_int16_t; typedef signed short int mio_int16_t;
#endif #endif
@ -112,31 +128,43 @@
#if defined(MIO_SIZEOF_INT) && (MIO_SIZEOF_INT == 4) #if defined(MIO_SIZEOF_INT) && (MIO_SIZEOF_INT == 4)
# define MIO_HAVE_UINT32_T # define MIO_HAVE_UINT32_T
# define MIO_HAVE_INT32_T # define MIO_HAVE_INT32_T
# define MIO_SIZEOF_UINT32_T (MIO_SIZEOF_INT)
# define MIO_SIZEOF_INT32_T (MIO_SIZEOF_INT)
typedef unsigned int mio_uint32_t; typedef unsigned int mio_uint32_t;
typedef signed int mio_int32_t; typedef signed int mio_int32_t;
#elif defined(MIO_SIZEOF_LONG) && (MIO_SIZEOF_LONG == 4) #elif defined(MIO_SIZEOF_LONG) && (MIO_SIZEOF_LONG == 4)
# define MIO_HAVE_UINT32_T # define MIO_HAVE_UINT32_T
# define MIO_HAVE_INT32_T # define MIO_HAVE_INT32_T
typedef unsigned long mio_uint32_t; # define MIO_SIZEOF_UINT32_T (MIO_SIZEOF_LONG)
typedef signed long mio_int32_t; # define MIO_SIZEOF_INT32_T (MIO_SIZEOF_LONG)
typedef unsigned long int mio_uint32_t;
typedef signed long int mio_int32_t;
#elif defined(MIO_SIZEOF___INT32) && (MIO_SIZEOF___INT32 == 4) #elif defined(MIO_SIZEOF___INT32) && (MIO_SIZEOF___INT32 == 4)
# define MIO_HAVE_UINT32_T # define MIO_HAVE_UINT32_T
# define MIO_HAVE_INT32_T # define MIO_HAVE_INT32_T
# define MIO_SIZEOF_UINT32_T (MIO_SIZEOF___INT32)
# define MIO_SIZEOF_INT32_T (MIO_SIZEOF___INT32)
typedef unsigned __int32 mio_uint32_t; typedef unsigned __int32 mio_uint32_t;
typedef signed __int32 mio_int32_t; typedef signed __int32 mio_int32_t;
#elif defined(MIO_SIZEOF___INT32_T) && (MIO_SIZEOF___INT32_T == 4) #elif defined(MIO_SIZEOF___INT32_T) && (MIO_SIZEOF___INT32_T == 4)
# define MIO_HAVE_UINT32_T # define MIO_HAVE_UINT32_T
# define MIO_HAVE_INT32_T # define MIO_HAVE_INT32_T
# define MIO_SIZEOF_UINT32_T (MIO_SIZEOF___INT32_T)
# define MIO_SIZEOF_INT32_T (MIO_SIZEOF___INT32_T)
typedef unsigned __int32_t mio_uint32_t; typedef unsigned __int32_t mio_uint32_t;
typedef signed __int32_t mio_int32_t; typedef signed __int32_t mio_int32_t;
#elif defined(__MSDOS__) #elif defined(__DOS__)
# define MIO_HAVE_UINT32_T # define MIO_HAVE_UINT32_T
# define MIO_HAVE_INT32_T # define MIO_HAVE_INT32_T
# define MIO_SIZEOF_UINT32_T (4)
# define MIO_SIZEOF_INT32_T (4)
typedef unsigned long int mio_uint32_t; typedef unsigned long int mio_uint32_t;
typedef signed long int mio_int32_t; typedef signed long int mio_int32_t;
#else #else
# define MIO_HAVE_UINT32_T # define MIO_HAVE_UINT32_T
# define MIO_HAVE_INT32_T # define MIO_HAVE_INT32_T
# define MIO_SIZEOF_UINT32_T (4)
# define MIO_SIZEOF_INT32_T (4)
typedef unsigned int mio_uint32_t; typedef unsigned int mio_uint32_t;
typedef signed int mio_int32_t; typedef signed int mio_int32_t;
#endif #endif
@ -145,33 +173,38 @@
#if defined(MIO_SIZEOF_INT) && (MIO_SIZEOF_INT == 8) #if defined(MIO_SIZEOF_INT) && (MIO_SIZEOF_INT == 8)
# define MIO_HAVE_UINT64_T # define MIO_HAVE_UINT64_T
# define MIO_HAVE_INT64_T # define MIO_HAVE_INT64_T
# define MIO_SIZEOF_UINT64_T (MIO_SIZEOF_INT)
# define MIO_SIZEOF_INT64_T (MIO_SIZEOF_INT)
typedef unsigned int mio_uint64_t; typedef unsigned int mio_uint64_t;
typedef signed int mio_int64_t; typedef signed int mio_int64_t;
#elif defined(MIO_SIZEOF_LONG) && (MIO_SIZEOF_LONG == 8) #elif defined(MIO_SIZEOF_LONG) && (MIO_SIZEOF_LONG == 8)
# define MIO_HAVE_UINT64_T # define MIO_HAVE_UINT64_T
# define MIO_HAVE_INT64_T # define MIO_HAVE_INT64_T
typedef unsigned long mio_uint64_t; # define MIO_SIZEOF_UINT64_T (MIO_SIZEOF_LONG)
typedef signed long mio_int64_t; # define MIO_SIZEOF_INT64_T (MIO_SIZEOF_LONG)
typedef unsigned long int mio_uint64_t;
typedef signed long int mio_int64_t;
#elif defined(MIO_SIZEOF_LONG_LONG) && (MIO_SIZEOF_LONG_LONG == 8) #elif defined(MIO_SIZEOF_LONG_LONG) && (MIO_SIZEOF_LONG_LONG == 8)
# define MIO_HAVE_UINT64_T # define MIO_HAVE_UINT64_T
# define MIO_HAVE_INT64_T # define MIO_HAVE_INT64_T
typedef unsigned long long mio_uint64_t; # define MIO_SIZEOF_UINT64_T (MIO_SIZEOF_LONG_LONG)
typedef signed long long mio_int64_t; # define MIO_SIZEOF_INT64_T (MIO_SIZEOF_LONG_LONG)
typedef unsigned long long int mio_uint64_t;
typedef signed long long int mio_int64_t;
#elif defined(MIO_SIZEOF___INT64) && (MIO_SIZEOF___INT64 == 8) #elif defined(MIO_SIZEOF___INT64) && (MIO_SIZEOF___INT64 == 8)
# define MIO_HAVE_UINT64_T # define MIO_HAVE_UINT64_T
# define MIO_HAVE_INT64_T # define MIO_HAVE_INT64_T
# define MIO_SIZEOF_UINT64_T (MIO_SIZEOF_LONG___INT64)
# define MIO_SIZEOF_INT64_T (MIO_SIZEOF_LONG___INT64)
typedef unsigned __int64 mio_uint64_t; typedef unsigned __int64 mio_uint64_t;
typedef signed __int64 mio_int64_t; typedef signed __int64 mio_int64_t;
#elif defined(MIO_SIZEOF___INT64_T) && (MIO_SIZEOF___INT64_T == 8) #elif defined(MIO_SIZEOF___INT64_T) && (MIO_SIZEOF___INT64_T == 8)
# define MIO_HAVE_UINT64_T # define MIO_HAVE_UINT64_T
# define MIO_HAVE_INT64_T # define MIO_HAVE_INT64_T
# define MIO_SIZEOF_UINT64_T (MIO_SIZEOF_LONG___INT64_T)
# define MIO_SIZEOF_INT64_T (MIO_SIZEOF_LONG___INT64_T)
typedef unsigned __int64_t mio_uint64_t; typedef unsigned __int64_t mio_uint64_t;
typedef signed __int64_t mio_int64_t; typedef signed __int64_t mio_int64_t;
#elif defined(_WIN64) || defined(_WIN32)
# define MIO_HAVE_UINT64_T
# define MIO_HAVE_INT64_T
typedef unsigned __int64 mio_uint64_t;
typedef signed __int64 mio_int64_t;
#else #else
/* no 64-bit integer */ /* no 64-bit integer */
#endif #endif
@ -180,26 +213,36 @@
#if defined(MIO_SIZEOF_INT) && (MIO_SIZEOF_INT == 16) #if defined(MIO_SIZEOF_INT) && (MIO_SIZEOF_INT == 16)
# define MIO_HAVE_UINT128_T # define MIO_HAVE_UINT128_T
# define MIO_HAVE_INT128_T # define MIO_HAVE_INT128_T
# define MIO_SIZEOF_UINT128_T (MIO_SIZEOF_INT)
# define MIO_SIZEOF_INT128_T (MIO_SIZEOF_INT)
typedef unsigned int mio_uint128_t; typedef unsigned int mio_uint128_t;
typedef signed int mio_int128_t; typedef signed int mio_int128_t;
#elif defined(MIO_SIZEOF_LONG) && (MIO_SIZEOF_LONG == 16) #elif defined(MIO_SIZEOF_LONG) && (MIO_SIZEOF_LONG == 16)
# define MIO_HAVE_UINT128_T # define MIO_HAVE_UINT128_T
# define MIO_HAVE_INT128_T # define MIO_HAVE_INT128_T
typedef unsigned long mio_uint128_t; # define MIO_SIZEOF_UINT128_T (MIO_SIZEOF_LONG)
typedef signed long mio_int128_t; # define MIO_SIZEOF_INT128_T (MIO_SIZEOF_LONG)
typedef unsigned long int mio_uint128_t;
typedef signed long int mio_int128_t;
#elif defined(MIO_SIZEOF_LONG_LONG) && (MIO_SIZEOF_LONG_LONG == 16) #elif defined(MIO_SIZEOF_LONG_LONG) && (MIO_SIZEOF_LONG_LONG == 16)
# define MIO_HAVE_UINT128_T # define MIO_HAVE_UINT128_T
# define MIO_HAVE_INT128_T # define MIO_HAVE_INT128_T
typedef unsigned long long mio_uint128_t; # define MIO_SIZEOF_UINT128_T (MIO_SIZEOF_LONG_LONG)
typedef signed long long mio_int128_t; # define MIO_SIZEOF_INT128_T (MIO_SIZEOF_LONG_LONG)
typedef unsigned long long int mio_uint128_t;
typedef signed long long int mio_int128_t;
#elif defined(MIO_SIZEOF___INT128) && (MIO_SIZEOF___INT128 == 16) #elif defined(MIO_SIZEOF___INT128) && (MIO_SIZEOF___INT128 == 16)
# define MIO_HAVE_UINT128_T # define MIO_HAVE_UINT128_T
# define MIO_HAVE_INT128_T # define MIO_HAVE_INT128_T
# define MIO_SIZEOF_UINT128_T (MIO_SIZEOF___INT128)
# define MIO_SIZEOF_INT128_T (MIO_SIZEOF___INT128)
typedef unsigned __int128 mio_uint128_t; typedef unsigned __int128 mio_uint128_t;
typedef signed __int128 mio_int128_t; typedef signed __int128 mio_int128_t;
#elif defined(MIO_SIZEOF___INT128_T) && (MIO_SIZEOF___INT128_T == 16) #elif defined(MIO_SIZEOF___INT128_T) && (MIO_SIZEOF___INT128_T == 16)
# define MIO_HAVE_UINT128_T # define MIO_HAVE_UINT128_T
# define MIO_HAVE_INT128_T # define MIO_HAVE_INT128_T
# define MIO_SIZEOF_UINT128_T (MIO_SIZEOF___INT128_T)
# define MIO_SIZEOF_INT128_T (MIO_SIZEOF___INT128_T)
#if defined(MIO_SIZEOF___UINT128_T) && (MIO_SIZEOF___UINT128_T == MIO_SIZEOF___INT128_T) #if defined(MIO_SIZEOF___UINT128_T) && (MIO_SIZEOF___UINT128_T == MIO_SIZEOF___INT128_T)
typedef __uint128_t mio_uint128_t; typedef __uint128_t mio_uint128_t;
typedef __int128_t mio_int128_t; typedef __int128_t mio_int128_t;
@ -214,6 +257,7 @@
/* no 128-bit integer */ /* no 128-bit integer */
#endif #endif
#if defined(MIO_HAVE_UINT8_T) && (MIO_SIZEOF_VOID_P == 1) #if defined(MIO_HAVE_UINT8_T) && (MIO_SIZEOF_VOID_P == 1)
# error UNSUPPORTED POINTER SIZE # error UNSUPPORTED POINTER SIZE
#elif defined(MIO_HAVE_UINT16_T) && (MIO_SIZEOF_VOID_P == 2) #elif defined(MIO_HAVE_UINT16_T) && (MIO_SIZEOF_VOID_P == 2)
@ -771,6 +815,8 @@ struct mio_cmgr_t
#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
#define MIO_HAVE_BUILTIN_CTZ #define MIO_HAVE_BUILTIN_CTZ
#define MIO_HAVE_BUILTIN_CTZL
#define MIO_HAVE_BUILTIN_CTZLL
#define MIO_HAVE_BUILTIN_EXPECT #define MIO_HAVE_BUILTIN_EXPECT
#endif #endif