Helios Engine 0.1.0
A modular ECS based data-oriented C++23 game engine
 
Loading...
Searching...
No Matches
helios::ecs::details Namespace Reference

Classes

class  AddComponentCmd
 Command to add a component to an entity. More...
 
class  AddComponentsCmd
 Command to add multiple components to an entity. More...
 
class  Archetype
 Represents a unique combination of component types. More...
 
struct  ArchetypeEdgeKey
 Key for archetype edge transitions. More...
 
struct  ArchetypeEdgeKeyHash
 Hash function for ArchetypeEdgeKey. More...
 
class  Archetypes
 Manages archetypes and entity-archetype relationships. More...
 
class  ClearAllEventsCmd
 Command to clear all event queues without removing registration. More...
 
class  ClearComponentsCmd
 Command to clear all components from an entity. More...
 
class  ClearEventsCmd
 Command to clear all events of a specific type from the queue. More...
 
class  CmdBuffer
 Command buffer to record operations to be executed later. More...
 
class  CmdQueue
 Command queue for deferred ECS operations. More...
 
class  Components
 Manager for all component storages in the ECS world. More...
 
class  ComponentStorage
 Type-specific component storage using sparse set. More...
 
class  ComponentStorageBase
 Base class for type-erased component storage. More...
 
struct  ComponentTypeExtractor
 Type trait to extract the underlying component type from const/reference wrappers. More...
 
class  DestroyEntitiesCmd
 Command to destroy multiple entities. More...
 
class  DestroyEntityCmd
 Command to destroy a single entity. More...
 
class  Entities
 Entity manager responsible for entity creation, destruction, and validation. More...
 
class  EventManager
 Manages event lifecycle with double buffering and registration tracking. More...
 
struct  EventMetadata
 Metadata for registered events. More...
 
class  EventQueue
 Queue for managing multiple event types. More...
 
class  EventStorage
 Type-erased storage for events using a byte vector. More...
 
class  FunctionCmd
 Command that executes a function with World reference. More...
 
class  InsertResourceCmd
 Command to insert a resource into the world. More...
 
class  QueryCacheManager
 Manages query state caching with Bevy-inspired optimizations. More...
 
struct  QueryCacheStats
 Statistics for query cache performance. More...
 
class  QueryIterator
 Iterator for query results without entity information. More...
 
struct  QueryState
 Query state that caches archetype matching results. More...
 
class  QueryWithEntityIterator
 Iterator for query results with entity information. More...
 
class  RemoveComponentCmd
 Command to remove a component from an entity. More...
 
class  RemoveComponentsCmd
 Command to remove multiple components from an entity. More...
 
class  RemoveResourceCmd
 Command to remove a resource from the world. More...
 
class  Resources
 Resource container for World. More...
 
class  ResourceStorage
 Type-specific resource storage. More...
 
class  ResourceStorageBase
 Base class for type-erased resource storage. More...
 
class  SystemLocalStorage
 Local storage for system-specific data (commands, events, and temporary allocations). More...
 
class  TryAddComponentCmd
 Command to try add a component (only if missing). More...
 
class  TryAddComponentsCmd
 Command to try add multiple components (only missing ones). More...
 
class  TryDestroyEntitiesCmd
 Command to try destroy multiple entities. More...
 
class  TryDestroyEntityCmd
 Command to try destroy a single entity. More...
 
class  TryInsertResourceCmd
 Command to try insert a resource (only if missing). More...
 
class  TryRemoveComponentCmd
 Command to try remove a single component (only if present). More...
 
class  TryRemoveComponentsCmd
 Command to try remove multiple components (only those present). More...
 
class  TryRemoveResourceCmd
 Command to try remove a resource (only if present). More...
 

Concepts

concept  ValidWorldComponentAccess
 Concept for valid World/Component access combinations.
 
concept  AllocatorFor
 Concept for STL-compatible allocators.
 

Typedefs

template<typename T >
using ComponentTypeExtractor_t = typename ComponentTypeExtractor< T >::type
 
template<typename T >
using ComponentAccessType = std::conditional_t< std::is_reference_v< T >, T, std::conditional_t< std::is_const_v< T >, const ComponentTypeExtractor_t< T > &, ComponentTypeExtractor_t< T > & > >
 Helper to determine the proper return type for component access.
 

Variables

constexpr size_t kDefaultFrameAllocatorCapacity = 64UZ * 1024UZ
 Default initial capacity for the per-system frame allocator (64KB).
 
template<typename T >
constexpr bool IsConstComponent = std::is_const_v<std::remove_reference_t<T>>
 Helper to check if a type represents a const-qualified component access.
 
template<typename... Components>
constexpr bool AllComponentsConst = (IsConstComponent<Components> && ...)
 Helper to check if all component types are const-qualified.
 
template<typename T >
constexpr bool IsConstWorld = WorldType<T> && std::is_const_v<std::remove_reference_t<T>>
 Helper to detect if World type is const.
 

Typedef Documentation

◆ ComponentAccessType

template<typename T >
using helios::ecs::details::ComponentAccessType = typedef std::conditional_t<std::is_reference_v<T>, T, std::conditional_t<std::is_const_v<T>, const ComponentTypeExtractor_t<T>&, ComponentTypeExtractor_t<T>& > >

Helper to determine the proper return type for component access.

Returns appropriate reference type based on const qualification:

  • const T& for const-qualified access
  • T& for mutable access
  • T for value types (copy)
    Template Parameters
    TRequested component access type
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/query.hpp.

Definition at line 98 of file query.hpp.

◆ ComponentTypeExtractor_t

Variable Documentation

◆ AllComponentsConst

template<typename... Components>
constexpr bool helios::ecs::details::AllComponentsConst = (IsConstComponent<Components> && ...)
constexpr

Helper to check if all component types are const-qualified.

Used to determine if an iterator can work with const Components.

Template Parameters
ComponentsComponent types to check
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/query.hpp.

Definition at line 66 of file query.hpp.

◆ IsConstComponent

template<typename T >
constexpr bool helios::ecs::details::IsConstComponent = std::is_const_v<std::remove_reference_t<T>>
constexpr

Helper to check if a type represents a const-qualified component access.

Determines if the requested access is const-qualified for read-only operations.

Template Parameters
TType to check for const qualification
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/query.hpp.

Definition at line 58 of file query.hpp.

◆ IsConstWorld

template<typename T >
constexpr bool helios::ecs::details::IsConstWorld = WorldType<T> && std::is_const_v<std::remove_reference_t<T>>
constexpr

Helper to detect if World type is const.

Used for compile-time validation of const World access.

Template Parameters
TWorld type
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/ecs/query.hpp.

Definition at line 74 of file query.hpp.

◆ kDefaultFrameAllocatorCapacity

constexpr size_t helios::ecs::details::kDefaultFrameAllocatorCapacity = 64UZ * 1024UZ
inlineconstexpr

Default initial capacity for the per-system frame allocator (64KB).

Definition at line 27 of file system_local_storage.hpp.