Helios Engine
A modular ECS based data-oriented C++23 game engine framework
Loading...
Searching...
No Matches
helios::ecs::ComponentManager::SparseStorageEntry Struct Reference

Type-erased entry for sparse-set component storage. More...

#include <manager.hpp>

Public Types

using ClearFn = void (*)(container::TypedBuffer<>& storage)
using TryRemoveFn
using ContainsFn
using SizeFn = size_t (*)(const container::TypedBuffer<>& storage)

Public Member Functions

constexpr SparseStorageEntry ()=default
 SparseStorageEntry (const SparseStorageEntry &)=delete
constexpr SparseStorageEntry (SparseStorageEntry &&) noexcept=default
constexpr ~SparseStorageEntry ()=default
SparseStorageEntryoperator= (const SparseStorageEntry &)=delete
constexpr SparseStorageEntryoperator= (SparseStorageEntry &&) noexcept=default
void Clear () noexcept
 Clears the underlying storage.
bool TryRemove (Entity entity)
 Tries to remove the component for the given entity.
bool Contains (Entity entity) const noexcept
 Checks if the component for the given entity exists.
size_t Size () const noexcept
 Gets the number of stored components.
template<ComponentTrait T>
auto As () noexcept -> SparseComponentStorage< T > &
 Gets the typed storage.
template<ComponentTrait T>
auto As () const noexcept -> const SparseComponentStorage< T > &
 Gets the typed storage (const).

Static Public Member Functions

template<ComponentTrait T>
static SparseStorageEntry From ()
 Creates a SparseStorageEntry for a specific component type T.

Public Attributes

container::TypedBuffer storage
ClearFn clear_fn = nullptr
TryRemoveFn try_remove_fn = nullptr
ContainsFn contains_fn = nullptr
SizeFn size_fn = nullptr

Detailed Description

Type-erased entry for sparse-set component storage.

Stores a SparseComponentStorage<T> inside a TypedBuffer along with type-erased function pointers for operations that need to be performed without knowing the concrete type (e.g., clearing all storages, removing an entity from all storages).

Definition at line 695 of file manager.hpp.

Member Typedef Documentation

◆ ClearFn

◆ ContainsFn

Initial value:
Entity entity)
Type-erased single-instance byte storage.
Unique identifier for entities with generation counter to handle recycling.
Definition entity.hpp:22

Definition at line 699 of file manager.hpp.

◆ SizeFn

◆ TryRemoveFn

Constructor & Destructor Documentation

◆ SparseStorageEntry() [1/3]

helios::ecs::ComponentManager::SparseStorageEntry::SparseStorageEntry ( )
constexprdefault

◆ SparseStorageEntry() [2/3]

helios::ecs::ComponentManager::SparseStorageEntry::SparseStorageEntry ( const SparseStorageEntry & )
delete

◆ SparseStorageEntry() [3/3]

helios::ecs::ComponentManager::SparseStorageEntry::SparseStorageEntry ( SparseStorageEntry && )
constexprdefaultnoexcept

◆ ~SparseStorageEntry()

helios::ecs::ComponentManager::SparseStorageEntry::~SparseStorageEntry ( )
constexprdefault

Member Function Documentation

◆ As() [1/2]

template<ComponentTrait T>
auto helios::ecs::ComponentManager::SparseStorageEntry::As ( ) const -> const SparseComponentStorage< T > &
inlinenodiscardnoexcept

Gets the typed storage (const).

Warning
Triggers assertion if the storage does not contain the expected type.
Template Parameters
TComponent type
Returns
Const reference to the typed storage

Definition at line 818 of file manager.hpp.

◆ As() [2/2]

template<ComponentTrait T>
auto helios::ecs::ComponentManager::SparseStorageEntry::As ( ) -> SparseComponentStorage< T > &
inlinenodiscardnoexcept

Gets the typed storage.

Warning
Triggers assertion if the storage does not contain the expected type.
Template Parameters
TComponent type
Returns
Mutable reference to the typed storage

Definition at line 806 of file manager.hpp.

◆ Clear()

void helios::ecs::ComponentManager::SparseStorageEntry::Clear ( )
inlinenoexcept

Clears the underlying storage.

Definition at line 753 of file manager.hpp.

◆ Contains()

bool helios::ecs::ComponentManager::SparseStorageEntry::Contains ( Entity entity) const
inlinenodiscardnoexcept

Checks if the component for the given entity exists.

Warning
Triggers assertion if entity is invalid.
Parameters
entityEntity
Returns
True if entity has the component, false otherwise

Definition at line 779 of file manager.hpp.

◆ From()

template<ComponentTrait T>
SparseStorageEntry helios::ecs::ComponentManager::SparseStorageEntry::From ( )
inlinestaticnodiscard

Creates a SparseStorageEntry for a specific component type T.

Template Parameters
TComponent type
Returns
Initialized SparseStorageEntry with a SparseComponentStorage<T> and appropriate function pointers

Definition at line 725 of file manager.hpp.

◆ operator=() [1/2]

SparseStorageEntry & helios::ecs::ComponentManager::SparseStorageEntry::operator= ( const SparseStorageEntry & )
delete

◆ operator=() [2/2]

SparseStorageEntry & helios::ecs::ComponentManager::SparseStorageEntry::operator= ( SparseStorageEntry && )
constexprdefaultnoexcept

◆ Size()

size_t helios::ecs::ComponentManager::SparseStorageEntry::Size ( ) const
inlinenodiscardnoexcept

Gets the number of stored components.

Returns
Number of components

Definition at line 791 of file manager.hpp.

◆ TryRemove()

bool helios::ecs::ComponentManager::SparseStorageEntry::TryRemove ( Entity entity)
inline

Tries to remove the component for the given entity.

Warning
Triggers assertion if entity is invalid.
Parameters
entityEntity
Returns
True if removed, false otherwise

Definition at line 765 of file manager.hpp.

Member Data Documentation

◆ clear_fn

ClearFn helios::ecs::ComponentManager::SparseStorageEntry::clear_fn = nullptr

Definition at line 704 of file manager.hpp.

◆ contains_fn

ContainsFn helios::ecs::ComponentManager::SparseStorageEntry::contains_fn = nullptr

Definition at line 706 of file manager.hpp.

◆ size_fn

SizeFn helios::ecs::ComponentManager::SparseStorageEntry::size_fn = nullptr

Definition at line 707 of file manager.hpp.

◆ storage

container::TypedBuffer helios::ecs::ComponentManager::SparseStorageEntry::storage

Definition at line 703 of file manager.hpp.

◆ try_remove_fn

TryRemoveFn helios::ecs::ComponentManager::SparseStorageEntry::try_remove_fn = nullptr

Definition at line 705 of file manager.hpp.