|
| QueryInfo & | fetch () |
| | Fetches the QueryInfo object. Creates or refreshes the backing QueryInfo if needed.
|
| |
| void | match_all (QueryInfo &queryInfo) |
| | Matches the query against all relevant archetypes.
|
| |
| GAIA_NODISCARD bool | match_one (QueryInfo &queryInfo, const Archetype &archetype, EntitySpan targetEntities) |
| | Matches the query against a single archetype.
|
| |
| GAIA_NODISCARD bool | matches_any (QueryInfo &queryInfo, const Archetype &archetype, EntitySpan targetEntities) |
| | Returns whether any supplied target entity matches the query on archetype.
|
| |
| GAIA_NODISCARD QueryCachePolicy | cache_policy () |
| | Returns the effective cache policy chosen for the query.
|
| |
|
QueryImpl & | cache_src_trav (uint16_t maxItems) |
| | Enables traversed-source snapshot reuse and caps the cached source closure size. This only matters for queries using traversed sources (for example src(...).trav()). For queries without source traversal the value is normalized away, so it does not affect shared cache identity. Use this only when traversed source closures stay small and stable enough for snapshot reuse to be cheaper than rebuilding them on demand.
|
| |
| GAIA_NODISCARD uint16_t | cache_src_trav () const |
| | Returns the traversed-source snapshot cap. 0 disables explicit traversed-source snapshot caching.
|
| |
| QueryImpl & | kind (QueryCacheKind cacheKind) |
| | Sets the hard cache-kind requirement for the query.
|
| |
| QueryImpl & | scope (QueryCacheScope cacheScope) |
| | Sets the cache scope used by cached queries.
|
| |
| QueryImpl & | match_prefab () |
| | Makes the query include prefab entities in matches.
|
| |
| GAIA_NODISCARD QueryCacheScope | scope () const |
| | Returns the currently requested cache scope.
|
| |
| GAIA_NODISCARD QueryCacheKind | kind () const |
| | Returns the currently requested cache kind.
|
| |
| GAIA_NODISCARD QueryKindRes | kind_error () |
| | Returns the validation result for the current query shape and requested kind.
|
| |
| GAIA_NODISCARD const char * | kind_error_str () |
| | Returns a human-readable description of the current kind validation result.
|
| |
| GAIA_NODISCARD bool | valid () |
| | Returns whether the current query shape satisfies the requested kind.
|
| |
|
GAIA_NODISCARD bool | can_process_archetype (const QueryInfo &queryInfo, const Archetype &archetype) const |
| |
|
template<typename TIter > |
| GAIA_NODISCARD bool | can_process_archetype_inter (const QueryInfo &queryInfo, const Archetype &archetype, int8_t barrierPasses=-1) const |
| |
|
template<bool HasFilters, typename TIter , typename Func > |
| void | run_query_batch_no_group_id (const QueryInfo &queryInfo, const uint32_t idxFrom, const uint32_t idxTo, Func func) |
| |
|
template<bool HasFilters, typename TIter , typename Func , QueryExecType ExecType> |
| void | run_query_batch_no_group_id_par (const QueryInfo &queryInfo, const uint32_t idxFrom, const uint32_t idxTo, Func func) |
| |
|
template<bool HasFilters, typename TIter , typename Func > |
| void | run_query_batch_with_group_id (const QueryInfo &queryInfo, const uint32_t idxFrom, const uint32_t idxTo, Func func) |
| |
|
template<bool HasFilters, typename TIter , typename Func , QueryExecType ExecType> |
| void | run_query_batch_with_group_id_par (const QueryInfo &queryInfo, const uint32_t idxFrom, const uint32_t idxTo, Func func) |
| |
|
template<bool HasFilters, QueryExecType ExecType, typename TIter , typename Func > |
| void | run_query (const QueryInfo &queryInfo, Func func) |
| |
|
template<QueryExecType ExecType, typename TIter , typename Func > |
| void | run_query_on_archetypes (QueryInfo &queryInfo, Func func) |
| |
|
template<QueryExecType ExecType, typename TIter , typename Func > |
| void | run_query_on_chunks (QueryInfo &queryInfo, Func func) |
| |
|
GAIA_NODISCARD bool | can_use_direct_chunk_iteration_fastpath (const QueryInfo &queryInfo) const |
| |
|
template<typename Func , typename... T> |
| void | run_query_on_chunks_direct (QueryInfo &queryInfo, Func func, core::func_type_list< T... >) |
| |
|
template<typename TIter , typename Func , typename... T> |
| GAIA_FORCEINLINE void | run_query_on_chunk (TIter &it, Func func, core::func_type_list< T... > types) |
| |
|
template<typename TIter , typename Func , typename... T> |
| GAIA_FORCEINLINE void | run_query_on_chunk (const QueryInfo &queryInfo, TIter &it, Func func, core::func_type_list< T... > types) |
| |
|
template<typename TIter , typename Func , typename... T> |
| GAIA_FORCEINLINE void | run_query_on_chunk_direct (TIter &it, Func func, core::func_type_list< T... > types) |
| |
|
template<typename TIter , typename Func , typename... T> |
| GAIA_FORCEINLINE void | run_query_on_direct_entity (TIter &it, Func func, core::func_type_list< T... > types) |
| |
|
template<typename TIter , typename Func , typename... T> |
| GAIA_FORCEINLINE void | run_query_on_direct_entity_direct (TIter &it, Func func, core::func_type_list< T... > types) |
| |
|
template<QueryExecType ExecType, typename Func , typename... T> |
| void | each_inter (QueryInfo &queryInfo, Func func, core::func_type_list< T... >) |
| |
|
template<QueryExecType ExecType, typename Func > |
| void | each_inter (QueryInfo &queryInfo, Func func) |
| |
|
template<QueryExecType ExecType, typename Func > |
| void | each_inter (Func func) |
| |
|
template<typename TIter > |
| GAIA_NODISCARD std::span< const detail::BfsChunkRun > | cached_direct_seed_runs (QueryInfo &queryInfo, const QueryTerm &seedTerm, const DirectEntitySeedInfo &seedInfo) |
| |
|
template<typename TIter > |
| GAIA_NODISCARD std::span< const Entity > | cached_direct_seed_entities (QueryInfo &queryInfo, const QueryTerm &seedTerm, const DirectEntitySeedInfo &seedInfo) |
| |
|
template<typename TIter > |
| GAIA_NODISCARD std::span< const Entity > | cached_direct_seed_chunk_entities (QueryInfo &queryInfo, const QueryTerm &seedTerm, const DirectEntitySeedInfo &seedInfo) |
| |
| template<typename TIter , typename Func > |
| void | for_each_direct_or_union (World &world, const QueryInfo &queryInfo, Func &&func) |
| | Visits the deduplicated OR union for direct-seeded queries without materializing an entity seed array first.
|
| |
|
template<bool UseFilters, typename TIter > |
| GAIA_NODISCARD bool | empty_inter (const QueryInfo &queryInfo) const |
| | Fast empty() path for direct non-fragmenting queries that can seed from entity-backed indices.
|
| |
| GAIA_NODISCARD bool | matches_target_entities (QueryInfo &queryInfo, const Archetype &archetype, EntitySpan targetEntities) |
| | Returns whether any of the provided target entities matches the query semantics.
|
| |
|
template<bool UseFilters, typename TIter > |
| GAIA_NODISCARD uint32_t | count_inter (const QueryInfo &queryInfo) const |
| | Fast count() path for direct non-fragmenting queries that can seed from entity-backed indices.
|
| |
|
template<typename TIter , typename Func > |
| void | each_chunk_runs_iter (QueryInfo &queryInfo, std::span< const detail::BfsChunkRun > runs, Func func) |
| |
|
template<typename TIter , typename Func , typename... T> |
| void | each_chunk_runs (QueryInfo &queryInfo, std::span< const detail::BfsChunkRun > runs, Func func, core::func_type_list< T... >) |
| |
|
template<typename TIter , typename Func > |
| void | each_direct_entities_iter (QueryInfo &queryInfo, std::span< const Entity > entities, Func func) |
| |
|
template<typename TIter , typename Func , typename... T> |
| void | each_direct_entities (QueryInfo &queryInfo, std::span< const Entity > entities, Func func, core::func_type_list< T... >) |
| |
|
template<typename TIter , typename Func > |
| void | each_direct_iter_inter (QueryInfo &queryInfo, Func func) |
| | Runs an iterator-based each() callback over directly seeded entities using one-row chunk views.
|
| |
|
template<typename TIter , typename Func , typename... T> |
| void | each_direct_inter (QueryInfo &queryInfo, Func func, core::func_type_list< T... >) |
| | Runs a typed each() callback over directly seeded entities.
|
| |
|
template<bool UseFilters, typename TIter , typename ContainerOut > |
| void | arr_inter (QueryInfo &queryInfo, ContainerOut &outArray) |
| |
|
| QueryImpl (World &world, QueryCache &queryCache, ArchetypeId &nextArchetypeId, uint32_t &worldVersion, const EntityToArchetypeMap &entityToArchetypeMap, const ArchetypeDArray &allArchetypes) |
| |
| GAIA_NODISCARD QueryId | id () const |
| | Returns the cache handle id of this query.
|
| |
| GAIA_NODISCARD uint32_t | gen () const |
| | Returns the cache handle generation of this query.
|
| |
|
void | reset () |
| | Release any data allocated by the query.
|
| |
|
void | destroy () |
| | Destroys the current cached query state and local scratch data.
|
| |
| GAIA_NODISCARD bool | is_cached () const |
| | Returns whether the query is stored in the query cache.
|
| |
| QueryImpl & | add (const char *str,...) |
| | Creates a query from a null-terminated expression string.
|
| |
| QueryImpl & | add (QueryInput item) |
| | Adds a prebuilt query input item.
|
| |
| QueryImpl & | is (Entity entity, const QueryTermOptions &options=QueryTermOptions{}) |
| | Adds a semantic Is(entity) requirement.
|
| |
| QueryImpl & | in (Entity entity, QueryTermOptions options=QueryTermOptions{}) |
| | Adds an inherited in(entity) requirement.
|
| |
| QueryImpl & | all (Entity entity, const QueryTermOptions &options=QueryTermOptions{}) |
| | Adds a required entity or pair term.
|
| |
| template<typename T > |
| QueryImpl & | all (const QueryTermOptions &options) |
| | Adds a required typed term.
|
| |
| template<typename T > |
| QueryImpl & | all () |
| | Adds a required typed term.
|
| |
| QueryImpl & | any (Entity entity, const QueryTermOptions &options=QueryTermOptions{}) |
| | Adds an optional entity or pair term.
|
| |
| template<typename T > |
| QueryImpl & | any (const QueryTermOptions &options) |
| | Adds an optional typed term.
|
| |
| template<typename T > |
| QueryImpl & | any () |
| | Adds an optional typed term.
|
| |
| QueryImpl & | or_ (Entity entity, const QueryTermOptions &options=QueryTermOptions{}) |
| | OR terms (at least one has to match). A single OR term is canonicalized to ALL during query normalization.
|
| |
| template<typename T > |
| QueryImpl & | or_ (const QueryTermOptions &options) |
| | Adds an OR typed term.
|
| |
| template<typename T > |
| QueryImpl & | or_ () |
| | Adds an OR typed term.
|
| |
| QueryImpl & | no (Entity entity, const QueryTermOptions &options=QueryTermOptions{}) |
| | Adds an excluded entity or pair term.
|
| |
| template<typename T > |
| QueryImpl & | no (const QueryTermOptions &options) |
| | Adds an excluded typed term.
|
| |
| template<typename T > |
| QueryImpl & | no () |
| | Adds an excluded typed term.
|
| |
| QueryImpl & | var_name (Entity varEntity, util::str_view name) |
| | Assigns a human-readable name to a query variable entity (Var0..Var7). The name can be used later by set_var(name, value).
|
| |
|
QueryImpl & | var_name (Entity varEntity, const char *name) |
| | Assigns a human-readable name to a query variable entity (Var0..Var7).
|
| |
| QueryImpl & | set_var (Entity varEntity, Entity value) |
| | Binds a query variable (Var0..Var7) to a concrete entity value. Bound values are applied at runtime before query evaluation.
|
| |
| QueryImpl & | set_var (util::str_view name, Entity value) |
| | Binds a named query variable to a concrete entity value.
|
| |
|
QueryImpl & | set_var (const char *name, Entity value) |
| | Binds a named query variable to a concrete entity value.
|
| |
|
QueryImpl & | clear_var (Entity varEntity) |
| | Clears binding for a single query variable (Var0..Var7). The variable becomes unbound for the next query evaluation.
|
| |
|
QueryImpl & | clear_vars () |
| | Clears all runtime variable bindings.
|
| |
| QueryImpl & | changed (Entity entity) |
| | Marks a runtime component or pair for changed() filtering.
|
| |
| template<typename T > |
| QueryImpl & | changed () |
| | Marks a typed term for changed() filtering.
|
| |
| QueryImpl & | sort_by (Entity entity, TSortByFunc func) |
| | Sorts the query by the specified entity and function.
|
| |
| template<typename T > |
| QueryImpl & | sort_by (TSortByFunc func) |
| | Sorts the query by the specified component and function.
|
| |
| template<typename Rel , typename Tgt > |
| QueryImpl & | sort_by (TSortByFunc func) |
| | Sorts the query by the specified pair and function.
|
| |
|
GAIA_NODISCARD OrderByWalkView | walk (Entity relation) |
| | Walks the relation graph in breadth-first levels for the given relation. Pair(relation, X) on entity E means E depends on X. This path evaluates traversal per entity, so it works for both fragmenting relations such as ChildOf and non-fragmenting relations such as Parent.
|
| |
| QueryImpl & | depth_order (Entity relation=ChildOf) |
| | Orders cached query entries by fragmenting relation depth so iteration runs breadth-first top-down. Intended only for fragmenting relations such as ChildOf or DependsOn where the target participates in archetype identity. Unlike walk(...), this affects the cached query iteration order itself and can therefore prune fragmenting disabled subtrees at the archetype level. For non-fragmenting relations such as Parent, use walk(...) instead.
|
| |
| template<typename Rel > |
| QueryImpl & | depth_order () |
| | Orders cached query entries by fragmenting relation depth so iteration runs breadth-first top-down.
|
| |
| QueryImpl & | group_by (Entity entity, TGroupByFunc func=group_by_func_default) |
| | Organizes matching archetypes into groups according to the grouping function and entity.
|
| |
| template<typename T > |
| QueryImpl & | group_by (TGroupByFunc func=group_by_func_default) |
| | Organizes matching archetypes into groups according to the grouping function.
|
| |
| template<typename Rel , typename Tgt > |
| QueryImpl & | group_by (TGroupByFunc func=group_by_func_default) |
| | Organizes matching archetypes into groups according to the grouping function.
|
| |
| QueryImpl & | group_dep (Entity relation) |
| | Declares an explicit relation dependency for grouped cache invalidation. Useful for custom group_by callbacks that depend on hierarchy or relation topology.
|
| |
| template<typename Rel > |
| QueryImpl & | group_dep () |
| | Declares an explicit relation dependency for grouped cache invalidation. Useful for custom group_by callbacks that depend on hierarchy or relation topology.
|
| |
| QueryImpl & | group_id (GroupId groupId) |
| | Selects the group to iterate over.
|
| |
| QueryImpl & | group_id (Entity entity) |
| | Selects the group to iterate over.
|
| |
| template<typename T > |
| QueryImpl & | group_id () |
| | Selects the group to iterate over.
|
| |
| template<typename Func > |
| void | each (Func func) |
| | Iterates query matches using the default execution mode.
|
| |
| template<typename Func > |
| void | each (Func func, QueryExecType execType) |
| | Iterates query matches using the selected execution mode.
|
| |
| template<typename Func > |
| void | each_arch (Func func) |
| | Iterates matching archetypes instead of individual entities.
|
| |
| bool | empty (Constraints constraints=Constraints::EnabledOnly) |
| | Returns true or false depending on whether there are any entities matching the query.
|
| |
| uint32_t | count (Constraints constraints=Constraints::EnabledOnly) |
| | Calculates the number of entities matching the query.
|
| |
| template<typename Container > |
| void | arr (Container &outArray, Constraints constraints=Constraints::EnabledOnly) |
| | Appends all components or entities matching the query to the output array.
|
| |
| GAIA_NODISCARD std::span< const Entity > | ordered_entities_walk (QueryInfo &queryInfo, Entity relation, Constraints constraints=Constraints::EnabledOnly) |
| | Builds and caches BFS walk order for the current query result.
|
| |
| template<typename Func > |
| void | each_walk (Func func, Entity relation, Constraints constraints=Constraints::EnabledOnly) |
| | Iterates entities matching the query ordered in dependency BFS levels. For relation R this treats Pair(R, X) on entity E as "E depends on X". Systems depending on no other matched system are first, then their dependents level-by-level. Nodes on the same level are ordered by entity id.
|
| |
|
void | diag () |
| | Run diagnostics.
|
| |
| GAIA_NODISCARD util::str | bytecode () |
| | Returns a textual dump of the generated query VM bytecode.
|
| |
|
void | diag_bytecode () |
| | Prints a textual dump of the generated query VM bytecode.
|
| |
|
|
static GAIA_NODISCARD bool | match_filters (const Chunk &chunk, const QueryInfo &queryInfo, uint32_t changedWorldVersion) |
| |
|
static GAIA_NODISCARD bool | has_depth_order_hierarchy_enabled_barrier (const QueryInfo &queryInfo) |
| |
|
static GAIA_NODISCARD bool | survives_cascade_hierarchy_enabled_barrier (const QueryInfo &queryInfo, const Archetype &archetype) |
| | Fast enabled-subtree gate for cached depth_order(...) queries over fragmenting hierarchy relations. ChildOf is the native built-in example, but the rule is semantic: the relation must support depth_order(...) and also form a fragmenting hierarchy chain. For such relations, all rows in the archetype share the same direct parent target. That lets us prune the entire archetype when its parent chain crosses a disabled entity. Non-fragmenting hierarchy relations such as Parent cannot use this archetype-level check and must stay on the per-entity walk(...) path instead.
|
| |
|
template<typename T > |
| static GAIA_NODISCARD constexpr bool | is_write_query_arg () |
| |
|
template<typename TIter > |
| static void | finish_iter_writes (TIter &it) |
| |
|
template<typename... T> |
| static void | finish_typed_chunk_writes (World &world, Chunk *pChunk, uint16_t from, uint16_t to) |
| |
|
template<typename T , typename TIter > |
| static void | finish_typed_iter_write_arg (TIter &it, uint32_t fieldIdx) |
| |
|
template<typename TIter , typename... T, size_t... I> |
| static void | finish_typed_iter_writes (TIter &it, std::index_sequence< I... >) |
| |
|
template<typename TIter > |
| static GAIA_NODISCARD ExecPayloadKind | exec_payload_kind (const QueryInfo &queryInfo) |
| |
|
template<typename TIter > |
| static GAIA_NODISCARD bool | needs_nontrivial_payload (const QueryInfo &queryInfo) |
| |
|
template<typename Func , typename TIter > |
| static void | run_query_func (World *pWorld, Func func, ChunkBatch &batch) |
| | Execute the functor for a given chunk batch.
|
| |
|
template<typename Func , typename TIter > |
| static void | run_query_arch_func (World *pWorld, Func func, ChunkBatch &batch) |
| | Execute the functor for a given chunk batch.
|
| |
|
template<typename Func , typename TIter > |
| static void | run_query_func (World *pWorld, Func func, std::span< ChunkBatch > batches) |
| | Execute the functor in batches.
|
| |
|
template<typename... T> |
| static GAIA_NODISCARD constexpr bool | has_write_query_args () |
| |
|
template<typename T > |
| static GAIA_FORCEINLINE decltype(auto) | chunk_view_auto (Chunk *pChunk) |
| |
|
template<typename Func , typename... T> |
| static GAIA_FORCEINLINE void | run_query_on_chunk_rows_direct (Chunk *pChunk, uint16_t from, uint16_t to, Func &func, core::func_type_list< T... >) |
| |
| static GAIA_NODISCARD bool | is_adjunct_direct_term (const World &world, const QueryTerm &term) |
| | Returns whether a direct term is backed by non-fragmenting storage and must be evaluated per entity.
|
| |
| static GAIA_NODISCARD bool | uses_semantic_is_matching (const QueryTerm &term) |
| | Returns whether a term uses semantic Is matching rather than direct storage matching.
|
| |
| static GAIA_NODISCARD bool | uses_in_is_matching (const QueryTerm &term) |
| | Returns whether a term uses strict semantic Is matching that excludes the base entity itself.
|
| |
| static GAIA_NODISCARD bool | uses_non_direct_is_matching (const QueryTerm &term) |
| | Returns whether a term uses any semantic Is matching rather than direct storage matching.
|
| |
| static GAIA_NODISCARD bool | uses_inherited_id_matching (const World &world, const QueryTerm &term) |
| | Returns whether a term uses semantic inherited-id matching rather than direct storage matching.
|
| |
|
static GAIA_NODISCARD bool | match_entity_term (const World &world, Entity entity, const QueryTerm &term) |
| | Evaluates term presence for a concrete entity using either direct or semantic semantics.
|
| |
|
static GAIA_NODISCARD bool | match_single_direct_target_term (const World &world, Entity entity, Entity termId, QueryCtx::DirectTargetEvalKind kind) |
| | Evaluates a compiled single-term direct-target query without re-walking the generic term loop.
|
| |
|
static GAIA_NODISCARD uint32_t | count_direct_term_entities (const World &world, const QueryTerm &term) |
| |
|
static void | collect_direct_term_entities (const World &world, const QueryTerm &term, cnt::darray< Entity > &out) |
| |
|
template<typename Func > |
| static GAIA_NODISCARD bool | for_each_direct_term_entity (const World &world, const QueryTerm &term, Func &&func) |
| |
|
static GAIA_NODISCARD bool | can_use_direct_entity_seed_eval (const QueryInfo &queryInfo) |
| | Detects queries that can skip archetype seeding and start directly from entity-backed term indices.
|
| |
|
static GAIA_NODISCARD bool | can_use_direct_target_eval (const QueryInfo &queryInfo) |
| | Detects queries whose terms can be evaluated directly against concrete target entities.
|
| |
|
static GAIA_NODISCARD bool | has_only_direct_or_terms (const QueryInfo &queryInfo) |
| | Detects the special direct OR/NOT shape that can be answered from a union of direct term entity sets.
|
| |
|
template<typename TIter > |
| static GAIA_NODISCARD constexpr Constraints | direct_seed_constraints () |
| |
|
static void | append_chunk_run (cnt::darray< detail::BfsChunkRun > &runs, const EntityContainer &ec, uint32_t entityOffset) |
| |
|
static GAIA_NODISCARD bool | should_prefer_direct_seed_term (const World &world, const QueryTerm &candidate, uint32_t candidateCount, const DirectEntitySeedPlan &plan) |
| | Chooses the narrowest available seed for direct non-fragmenting evaluation.
|
| |
|
static GAIA_NODISCARD DirectEntitySeedPlan | direct_entity_seed_plan (const World &world, const QueryInfo &queryInfo) |
| |
|
static GAIA_NODISCARD bool | match_direct_entity_terms (const World &world, Entity entity, const QueryInfo &queryInfo, const DirectEntitySeedInfo &seedInfo) |
| | Evaluates the remaining direct terms for a single seeded entity after the seed term itself was consumed.
|
| |
|
static GAIA_NODISCARD const QueryTerm * | find_direct_all_seed_term (const QueryInfo &queryInfo, const DirectEntitySeedPlan &plan) |
| |
|
static GAIA_NODISCARD DirectEntitySeedEvalPlan | direct_all_seed_eval_plan (const QueryInfo &queryInfo, const DirectEntitySeedInfo &seedInfo) |
| |
| static GAIA_NODISCARD bool | can_use_direct_seed_run_cache (const World &world, const QueryInfo &queryInfo, const QueryTerm &seedTerm) |
| | Returns whether a repeated semantic or inherited seed can be cached as chunk runs.
|
| |
|
template<typename TIter , typename Func > |
| static GAIA_NODISCARD bool | for_each_direct_all_seed (const World &world, const QueryInfo &queryInfo, const DirectEntitySeedPlan &plan, Func &&func) |
| |
|
template<typename TIter > |
| static GAIA_NODISCARD bool | match_direct_entity_constraints (const World &world, const QueryInfo &queryInfo, Entity entity) |
| | Applies iterator-specific entity state constraints to the direct seeded path.
|
| |
|
static GAIA_NODISCARD bool | can_use_archetype_bucket_count (const World &world, const QueryInfo &queryInfo, const DirectEntitySeedInfo &seedInfo) |
| | Detects when a direct seed can be counted by archetype buckets instead of per entity checks.
|
| |
|
template<typename TIter > |
| static GAIA_NODISCARD uint32_t | count_direct_entity_seed_by_archetype (const World &world, const QueryInfo &queryInfo, const cnt::darray< Entity > &seedEntities, const DirectEntitySeedInfo &seedInfo) |
| | Groups seeded entities by archetype and counts whole buckets when only structural ALL/NOT terms remain.
|
| |
|
template<typename TIter > |
| static GAIA_NODISCARD uint32_t | count_direct_or_union (const World &world, const QueryInfo &queryInfo) |
| | Counts the union of direct OR term entity sets while deduplicating entities across terms.
|
| |
| template<typename TIter > |
| static GAIA_NODISCARD bool | is_empty_direct_or_union (const World &world, const QueryInfo &queryInfo) |
| | Returns whether the direct OR union becomes empty after applying NOT terms and iterator constraints.
|
| |
|
static DirectEntitySeedInfo | build_direct_entity_seed (const World &world, const QueryInfo &queryInfo, cnt::darray< Entity > &out) |
| | Builds the best direct entity seed set from the smallest positive ALL term or the OR union fallback.
|
| |
| static GAIA_NODISCARD bool | has_direct_not_terms (const QueryInfo &queryInfo) |
| | Returns whether direct OR evaluation still has direct NOT terms that must be checked per entity.
|
| |
|
static GAIA_NODISCARD bool | match_entity_filters (const World &world, Entity entity, const QueryInfo &queryInfo) |
| | Evaluates the entity-level terms that are not fully represented by archetype membership.
|
| |
|
template<typename TIter > |
| static void | init_direct_entity_iter (const QueryInfo &queryInfo, const World &world, const EntityContainer &ec, TIter &it, uint8_t *pIndices, Entity *pTermIds, const Archetype *&pLastArchetype) |
| |
|
template<typename TIter > |
| static void | init_direct_entity_iter (const QueryInfo &queryInfo, const World &world, Entity entity, TIter &it, uint8_t *pIndices, Entity *pTermIds) |
| |
|
template<typename TIter > |
| static void | init_direct_entity_iter_basic (const EntityContainer &ec, TIter &it, const Archetype *&pLastArchetype) |
| |
|
template<typename T > |
| static GAIA_NODISCARD bool | can_use_direct_bfs_chunk_term_eval (World &world, const QueryInfo &queryInfo) |
| |
|
template<typename... T> |
| static GAIA_NODISCARD bool | can_use_direct_chunk_term_eval (World &world, const QueryInfo &queryInfo) |
| |
|
template<typename T > |
| static GAIA_NODISCARD constexpr bool | can_use_raw_chunk_row_arg () |
| |
|
template<typename T > |
| static Entity | inherited_query_arg_id (World &world) |
| |
|
template<typename T > |
| static decltype(auto) | inherited_query_entity_arg_by_id (World &world, Entity entity, Entity termId) |
| |
|
template<typename T > |
| static decltype(auto) | inherited_query_entity_arg_by_id_cached (World &world, Entity entity, Entity termId, const Archetype *&pLastArchetype, Entity &cachedOwner, bool &cachedDirect) |
| |
|
template<typename... T, typename Func , size_t... I> |
| static void | invoke_inherited_query_args_by_id (World &world, Entity entity, const Entity *pArgIds, Func &func, std::index_sequence< I... >) |
| |
|
template<typename... T, typename Func , size_t... I> |
| static void | invoke_inherited_query_args_by_id_cached (World &world, Entity entity, const Entity *pArgIds, const Archetype **pLastArchetypes, Entity *pCachedOwners, bool *pCachedDirect, Func &func, std::index_sequence< I... >) |
| |
|
template<typename... T, typename Func , size_t... I> |
| static void | invoke_query_args_by_id (World &world, Entity entity, const Entity *pArgIds, Func &func, std::index_sequence< I... >) |
| |
|
template<typename... T, size_t... I> |
| static void | finish_query_args_by_id (World &world, Entity entity, const Entity *pArgIds, std::index_sequence< I... >) |
| |