#pragma once typedef unsigned short size_t; typedef int ssize_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; typedef unsigned long long int uint64_t; typedef char int8_t; typedef short int16_t; typedef int int32_t; typedef long long int int64_t; /* in x86: * byte: 1 byte, 8 bits * word: 2 bytes, 16 bits * dword: 4 bytes, 32 bits * qword: 8 bytes, 64 bits * */ typedef uint16_t uword_t; typedef int16_t word_t; // Type Traits template struct integral_constant { constexpr T operator()() const { return v; } constexpr operator T() const { return v; } static const T value = v; }; /* is_same */ template struct is_same : integral_constant {}; template struct is_same : integral_constant {}; /* is_unsigned */ template struct is_unsigned : integral_constant(-1))> {};