Skip to content
Flecs v4.1
builder.hpp
Go to the documentation of this file.
1/**
2 * @file addons/cpp/mixins/query/builder.hpp
3 * @brief Query builder.
4 */
5
6#pragma once
7
9#include "builder_i.hpp"
10
11namespace flecs {
12namespace _ {
13 template <typename ... Components>
14 using query_builder_base = builder<
15 query<Components...>, ecs_query_desc_t, query_builder<Components...>,
16 query_builder_i, Components ...>;
17}
18
19/** Query builder.
20 *
21 * @ingroup cpp_core_queries
22 */
23template <typename ... Components>
24struct query_builder final : _::query_builder_base<Components...> {
25 query_builder(flecs::world_t* world, flecs::entity query_entity)
26 : _::query_builder_base<Components...>(world)
27 {
28 _::populate_signature<Components...>(world, this);
29 this->desc_.entity = query_entity.id();
30 }
31
32 query_builder(flecs::world_t* world, const char *name = nullptr)
33 : _::query_builder_base<Components...>(world)
34 {
35 _::populate_signature<Components...>(world, this);
36 this->set_name(name);
37 }
38
39 template <typename Func>
40 void each(Func&& func) {
41 this->build().each(FLECS_FWD(func));
42 }
43};
44
45}
ecs_world_t world_t
World type.
Definition c_types.hpp:18
struct ecs_query_desc_t ecs_query_desc_t
Used with ecs_query_init().
Int to enum.
Definition component.hpp:18
Query builder interface.
entity_t id() const
Get entity ID.
Entity.
Definition entity.hpp:30
Base & name(const char *name)
Specify the value of the identifier by name.
Definition builder_i.hpp:58
The world.
Definition world.hpp:129
flecs::query_builder< Comps... > query_builder(Args &&... args) const
Create a query builder.
conditional_t< sizeof...(Args)==0 &&_::is_sparse_query< Comps... >::value, flecs::sparse_query< Comps... >, flecs::query< Comps... > > query(Args &&... args) const
Create a query.
Builder base class.