2#include "gaia/config/config.h"
4#include "gaia/cnt/map.h"
5#include "gaia/ecs/id.h"
6#include "gaia/ecs/query.h"
7#include "gaia/util/move_func.h"
9#if GAIA_SYSTEMS_ENABLED
18 struct SystemRuntimeData {
36 using TSystemRunFunc = util::MoveFunc<SchedJob(Query&, QueryExecType, RunMode)>;
39 TSystemRunFunc on_each_func;
47 class SystemRegistry {
48 cnt::map<EntityLookupKey, SystemRuntimeData> m_system_data;
56 for (
auto& it: m_system_data) {
57 it.second.on_each_func = {};
66 SystemRuntimeData& data_add(Entity system) {
67 return m_system_data[EntityLookupKey(system)];
73 GAIA_NODISCARD SystemRuntimeData* data_try(Entity system) {
74 const auto it = m_system_data.find(EntityLookupKey(system));
75 if (it == m_system_data.end())
83 GAIA_NODISCARD
const SystemRuntimeData* data_try(Entity system)
const {
84 const auto it = m_system_data.find(EntityLookupKey(system));
85 if (it == m_system_data.end())
94 GAIA_NODISCARD SystemRuntimeData& data(Entity system) {
95 auto* pData = data_try(system);
96 GAIA_ASSERT(pData !=
nullptr);
104 GAIA_NODISCARD
const SystemRuntimeData& data(Entity system)
const {
105 const auto* pData = data_try(system);
106 GAIA_ASSERT(pData !=
nullptr);
115 void del(Entity system) {
116 const auto it = m_system_data.find(EntityLookupKey(system));
117 if (it == m_system_data.end())
120 it->second.on_each_func = {};
121 m_system_data.erase(it);
Checks if endianess was detected correctly at compile-time.
Definition bitset.h:9