#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; // 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