46 lines
875 B
C++
46 lines
875 B
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
|
|
#include "MacroUtils.h"
|
|
|
|
consteval size_t operator""_KiB( size_t const value )
|
|
{
|
|
return value * 1024;
|
|
}
|
|
|
|
consteval size_t operator""_MiB( size_t const value )
|
|
{
|
|
return value * 1024_KiB;
|
|
}
|
|
|
|
consteval size_t operator""_GiB( size_t const value )
|
|
{
|
|
return value * 1024_MiB;
|
|
}
|
|
|
|
struct GlobalMemory
|
|
{
|
|
struct State
|
|
{
|
|
std::byte* memory;
|
|
size_t available;
|
|
};
|
|
|
|
std::byte* memory;
|
|
size_t available;
|
|
size_t capacity;
|
|
|
|
void init( size_t size );
|
|
void destroy();
|
|
|
|
[[nodiscard]]
|
|
std::byte* allocate( size_t size );
|
|
[[nodiscard]]
|
|
std::byte* allocate( size_t size, size_t alignment );
|
|
|
|
[[nodiscard]]
|
|
State getState() const; //< Do not do any permanent allocations after calling this.
|
|
void restoreState( State const& state ); //< Call this before permanent allocations.
|
|
};
|