35 lines
1.1 KiB
Plaintext
35 lines
1.1 KiB
Plaintext
|
/* 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<class IntType>
|
||
|
constexpr byte& operator<<=(byte& b, IntType shift) noexcept;
|
||
|
template<class IntType>
|
||
|
constexpr byte operator<<(byte b, IntType shift) noexcept;
|
||
|
template<class IntType>
|
||
|
constexpr byte& operator>>=(byte& b, IntType shift) noexcept;
|
||
|
template<class IntType>
|
||
|
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<class IntType>
|
||
|
constexpr IntType to_integer(byte b) noexcept;
|
||
|
}
|