19 , m_query(
nullptr) { }
39 operator query_t*()
const {
98 template <
typename Func>
99 void each_term(
const Func& func)
const {
100 this->
filter().each_term(func);
103 filter_base filter()
const {
109 ecs_assert(f != NULL, ECS_INVALID_PARAMETER, NULL);
113 int32_t field_count()
const {
128 operator query<>()
const;
135template<
typename ... Components>
143 using Terms =
typename _::term_ptrs<Components...>::array;
145 ecs_iter_t get_iter(flecs::world_t *
world)
const override {
161 using query_base::query_base;
165template <
typename... Comps,
typename... Args>
171template <
typename... Comps,
typename... Args>
177template <
typename Base,
typename ... Components>
179 m_desc->parent = parent;
180 return *
static_cast<Base*
>(
this);
184inline query_base::operator
query<>()
const {
#define ecs_assert(condition, error_code,...)
Assert.
#define ecs_abort(error_code,...)
Abort.
flecs::query_builder< Comps... > query_builder(Args &&... args) const
Create a query builder.
flecs::query< Comps... > query(Args &&... args) const
Create a query.
char * ecs_filter_str(const ecs_world_t *world, const ecs_filter_t *filter)
Convert filter to string expression.
bool(* ecs_iter_next_action_t)(ecs_iter_t *it)
Function prototype for iterating an iterator.
const ecs_query_group_info_t * ecs_query_get_group_info(const ecs_query_t *query, uint64_t group_id)
Get information about query group.
bool ecs_query_next_instanced(ecs_iter_t *iter)
Same as ecs_query_next, but always instanced.
void ecs_query_fini(ecs_query_t *query)
Destroy a query.
ecs_query_t * ecs_query_init(ecs_world_t *world, const ecs_query_desc_t *desc)
Create a query.
ecs_iter_t ecs_query_iter(const ecs_world_t *world, ecs_query_t *query)
Return a query iterator.
bool ecs_query_next(ecs_iter_t *iter)
Progress the query iterator.
bool ecs_query_orphaned(const ecs_query_t *query)
Returns whether query is orphaned.
const ecs_filter_t * ecs_query_get_filter(const ecs_query_t *query)
Get filter from a query.
bool ecs_query_changed(ecs_query_t *query, const ecs_iter_t *it)
Returns whether the query data changed since the last iteration.
ecs_entity_t ecs_get_entity(const ecs_poly_t *poly)
Get entity from poly.
ecs_term_t * terms_buffer
For filters with lots of terms an outside array can be provided.
Filters allow for ad-hoc quick filtering of entity tables.
ecs_term_t * terms
Array containing terms for filter.
int8_t term_count
Number of elements in terms array.
Used with ecs_query_init().
ecs_filter_desc_t filter
Filter for the query.
Type that contains information about a query group.
void * ctx
Group context, returned by on_group_create.
bool changed() const
Returns whether the query data changed since the last iteration.
void * group_ctx(uint64_t group_id) const
Get context for group.
bool orphaned() const
Returns whether query is orphaned.
const flecs::query_group_info_t * group_info(uint64_t group_id) const
Get info for group.
void destruct()
Free the query.
Base & observable(const query_base &parent)
Specify parent query (creates subquery)
Class that describes a term.