34 bool is_valid()
const {
35 return m_rule !=
nullptr;
38 operator rule_t*()
const {
55 template <
typename Func>
56 void each_term(
const Func& func)
const {
57 this->
filter().each_term(func);
63 this->m_world = obj.m_world;
64 this->m_rule = obj.m_rule;
65 obj.m_world =
nullptr;
99template<
typename ... Components>
102 using Terms =
typename _::term_ptrs<Components...>::array;
104 ecs_iter_t get_iter(flecs::world_t *
world)
const override {
120 using rule_base::rule_base;
122 int32_t find_var(
const char *name) {
128template <
typename... Comps,
typename... Args>
134template <
typename... Comps,
typename... Args>
140inline rule_base::operator rule<>()
const {
FLECS_API void ecs_rule_fini(ecs_rule_t *rule)
Delete a rule.
FLECS_API const ecs_filter_t * ecs_rule_get_filter(const ecs_rule_t *rule)
Obtain filter from rule.
FLECS_API bool ecs_rule_next(ecs_iter_t *it)
Progress rule iterator.
FLECS_API char * ecs_rule_str(const ecs_rule_t *rule)
Convert rule to a string.
FLECS_API bool ecs_rule_next_instanced(ecs_iter_t *it)
Progress instanced iterator.
FLECS_API ecs_iter_t ecs_rule_iter(const ecs_world_t *world, const ecs_rule_t *rule)
Iterate a rule.
FLECS_API ecs_rule_t * ecs_rule_init(ecs_world_t *world, const ecs_filter_desc_t *desc)
Create a rule.
FLECS_API int32_t ecs_rule_find_var(const ecs_rule_t *rule, const char *name)
Find variable index.
flecs::rule< Comps... > rule(Args &&... args) const
Create a rule.
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.
ecs_entity_t ecs_get_entity(const ecs_poly_t *poly)
Get entity from poly.
Used with ecs_filter_init.
ecs_term_t * terms_buffer
For filters with lots of terms an outside array can be provided.
Filters alllow for ad-hoc quick filtering of entity tables.
void destruct()
Free the rule.
flecs::string rule_str() const
Converts this rule to a string that can be used to aid debugging the behavior of the rule.
flecs::string str() const
Converts this rule to a string expression.
void move(flecs::rule_base &&obj)
Move the rule.