/* vim: syntax=cpp */ #pragma once #include "cstdint" namespace std { using ptrdiff_t = uint64_t; using size_t = uint64_t; // FIXME: I don't understand what this does. using max_align_t = uint64_t; using nullptr_t = decltype(nullptr); enum class byte : unsigned char {}; // byte type operations template constexpr byte& operator<<=(byte& b, IntType shift) noexcept; template constexpr byte operator<<(byte b, IntType shift) noexcept; template constexpr byte& operator>>=(byte& b, IntType shift) noexcept; template constexpr byte operator>>(byte b, IntType shift) noexcept; constexpr byte& operator|=(byte& l, byte r) noexcept; constexpr byte operator|(byte l, byte r) noexcept; constexpr byte& operator&=(byte& l, byte r) noexcept; constexpr byte operator&(byte l, byte r) noexcept; constexpr byte& operator^=(byte& l, byte r) noexcept; constexpr byte operator^(byte l, byte r) noexcept; constexpr byte operator~(byte b) noexcept; template constexpr IntType to_integer(byte b) noexcept; }