Gaia-ECS v0.9.3
A simple and powerful entity component system
Loading...
Searching...
No Matches
gaia::mem::MemoryPage< T, RequestedBlockSize > Struct Template Reference
+ Inheritance diagram for gaia::mem::MemoryPage< T, RequestedBlockSize >:

Public Types

using Page = MemoryPage< T, RequestedBlockSize >
 
using BlockArray = cnt::sarray< uint8_t, BlockArrayBytes >
 
using BitView = core::bit_view< NBlocks_Bits >
 

Public Member Functions

 MemoryPage (void *ptr)
 Free bits to use in the future.
 
void write_block_idx (uint32_t blockIdx, uint32_t value)
 
uint8_t read_block_idx (uint32_t blockIdx) const
 
GAIA_NODISCARD void * alloc_block ()
 Allocate a new block for this page.
 
void free_block (void *pBlock)
 Release the block allocated by this page.
 
GAIA_NODISCARD uint32_t used_blocks_cnt () const
 
GAIA_NODISCARD bool full () const
 
GAIA_NODISCARD bool empty () const
 
- Public Member Functions inherited from gaia::mem::MemoryPageHeader
 MemoryPageHeader (void *ptr)
 
- Public Member Functions inherited from gaia::cnt::fwd_llist_base< MemoryPage< T, RequestedBlockSize > >
fwd_llist_link< MemoryPage< T, RequestedBlockSize > > & get_fwd_llist_link ()
 
const fwd_llist_link< MemoryPage< T, RequestedBlockSize > > & get_fwd_llist_link () const
 

Static Public Member Functions

static constexpr uint32_t next_multiple_of_alignment (uint32_t num)
 
static constexpr uint32_t calculate_block_size ()
 

Public Attributes

BlockArray m_blocks
 Implicit list of blocks.
 
uint32_t m_blockCnt: NBlocks_Bits
 Number of blocks in the block array.
 
uint32_t m_usedBlocks: NBlocks_Bits
 Number of used blocks out of NBlocks.
 
uint32_t m_nextFreeBlock: NBlocks_Bits
 Index of the next block to recycle.
 
uint32_t m_freeBlocks: NBlocks_Bits
 Number of blocks to recycle.
 
- Public Attributes inherited from gaia::mem::MemoryPageHeader
void * m_data
 Pointer to data managed by page.
 
- Public Attributes inherited from gaia::cnt::fwd_llist_base< MemoryPage< T, RequestedBlockSize > >
fwd_llist_link< MemoryPage< T, RequestedBlockSize > > fwd_link_GAIA
 

Static Public Attributes

static constexpr uint32_t MemoryBlockBytes = calculate_block_size()
 
static constexpr uint16_t NBlocks = 48
 
static constexpr uint16_t NBlocks_Bits = (uint16_t)core::count_bits(NBlocks)
 
static constexpr uint32_t InvalidBlockId = NBlocks + 1
 
static constexpr uint32_t BlockArrayBytes = ((uint32_t)NBlocks_Bits * (uint32_t)NBlocks + 7) / 8
 

The documentation for this struct was generated from the following file: