75 lines
1.5 KiB
C
75 lines
1.5 KiB
C
#ifndef MINIMALINT_H
|
|
#define MINIMALINT_H
|
|
|
|
#if defined(__x86_64__) || defined(__aarch64__)
|
|
#define __WORDSIZE 64
|
|
#elif defined(__mips__)
|
|
#define __WORDSIZE 32
|
|
#endif
|
|
|
|
typedef unsigned char uint8_t;
|
|
typedef unsigned short uint16_t;
|
|
typedef unsigned int uint32_t;
|
|
typedef unsigned long long uint64_t;
|
|
|
|
typedef char int8_t;
|
|
typedef short int16_t;
|
|
typedef int int32_t;
|
|
typedef long long int64_t;
|
|
|
|
#if __WORDSIZE == 64
|
|
typedef int64_t intptr_t;
|
|
typedef uint64_t uintptr_t;
|
|
#elif __WORDSIZE == 32
|
|
typedef int32_t intptr_t;
|
|
typedef uint32_t uintptr_t;
|
|
#else
|
|
#error Unsupported or unknown wordsize
|
|
#endif
|
|
|
|
typedef intptr_t ssize_t;
|
|
typedef uintptr_t size_t;
|
|
|
|
typedef uint32_t socklen_t;
|
|
typedef uint32_t pid_t;
|
|
|
|
typedef long time_t;
|
|
typedef int clockid_t;
|
|
struct timespec {
|
|
time_t tv_sec; /* seconds */
|
|
long tv_nsec; /* nanoseconds */
|
|
};
|
|
|
|
// Compile time tests in supported compilers
|
|
#ifdef __SIZEOF_SHORT__
|
|
#if __SIZEOF_SHORT__ != 2
|
|
#error __SIZEOF_SHORT__ is not 2
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __SIZEOF_INT__
|
|
#if __SIZEOF_INT__ != 4
|
|
#error __SIZEOF_INT__ is not 4
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __SIZEOF_LONG_LONG__
|
|
#if __SIZEOF_LONG_LONG__ != 8
|
|
#error __SIZEOF_LONG_LONG__ is not 8
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __SIZEOF_POINTER__
|
|
#if __SIZEOF_POINTER__ != (__WORDSIZE / 8)
|
|
#error __SIZEOF_POINTER__ is not (__WORDSIZE / 8)
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __SIZEOF_SIZE_T__
|
|
#if __SIZEOF_SIZE_T__ != (__WORDSIZE / 8)
|
|
#error __SIZEOF_SIZE_T__ is not (__WORDSIZE / 8)
|
|
#endif
|
|
#endif
|
|
|
|
#endif // !MINIMALINT_H
|