Blaze/GlobalMemory.h

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.
};