#include <limits.h>
#if ULONG_MAX == 0xFFFFFFFF
typedef unsigned long uint32_t;
typedef long int32_t;
#elif UINT_MAX == 0xFFFFFFFF
typedef unsigned int uint32_t;
typedef int int32_t;
#elif USHRT_MAX == 0xFFFFFFFF
typedef unsigned short uint32_t;
typedef short int32_t;
#else /* ULONG_MAX, UINT_MAX, USHRT_MAX = 0xFFFFFFFF */
#error INTERNAL ERROR : Cannot find a 32-bit integral type
#endif /* ULONG_MAX, UINT_MAX, USHRT_MAX = 0xFFFFFFFF */
#if USHRT_MAX == 0xFFFF
typedef unsigned short uint16_t;
typedef short int16_t;
#elif UINT_MAX == 0xFFFF
typedef unsigned int uint16_t;
typedef int int16_t;
#elif ULONG_MAX == 0xFFFF
typedef unsigned long uint16_t;
typedef long int16_t;
#else /* ULONG_MAX, UINT_MAX, USHRT_MAX = 0xFFFF */
#error INTERNAL ERROR : Cannot find a 16-bit integral type
#endif /* ULONG_MAX, UINT_MAX, USHRT_MAX = 0xFFFF */ |