Helios Engine
A modular ECS based data-oriented C++23 game engine framework
Loading...
Searching...
No Matches
access_decl.hpp
Go to the documentation of this file.
1#pragma once
2
7
8namespace helios::ecs {
9
10/**
11 * @brief Registers access declarations for each parameter type.
12 * @tparam Params System parameter types
13 * @param builder Access policy builder to accumulate into
14 */
15template <typename... Params>
16constexpr void RegisterParamAccess(AccessPolicyBuilder& builder) {
17 (SystemParamTraits<std::remove_cvref_t<Params>>::RegisterAccess(builder),
18 ...);
19}
20
21/**
22 * @brief Declares read-only component access.
23 * @tparam Cs Component types
24 * @param builder Access policy builder
25 */
26template <ComponentTrait... Cs>
27 requires utils::UniqueTypes<Cs...>
29 builder.Query<const Cs&...>();
30}
31
32/**
33 * @brief Declares mutable component access.
34 * @tparam Cs Component types
35 * @param builder Access policy builder
36 */
37template <ComponentTrait... Cs>
38 requires utils::UniqueTypes<Cs...>
40 builder.Query<Cs&...>();
41}
42
43/**
44 * @brief Declares component access using query access specifiers.
45 * @tparam AccessTypes Component access types (`const T&`, `T&`, etc.)
46 * @param builder Access policy builder
47 */
48template <typename... AccessTypes>
49constexpr void DeclareQueryAccess(AccessPolicyBuilder& builder) {
50 builder.Query<AccessTypes...>();
51}
52
53} // namespace helios::ecs
Fluent builder for constructing an AccessPolicy.
constexpr auto Query(this auto &&self) -> decltype(std::forward< decltype(self)>(self))
Declares a query over component types.
Concept that checks if all types in a pack are unique (after removing cv/ref qualifiers).
constexpr void DeclareReadComponents(AccessPolicyBuilder &builder)
Declares read-only component access.
constexpr void DeclareQueryAccess(AccessPolicyBuilder &builder)
Declares component access using query access specifiers.
constexpr void RegisterParamAccess(AccessPolicyBuilder &builder)
Registers access declarations for each parameter type.
constexpr void DeclareWriteComponents(AccessPolicyBuilder &builder)
Declares mutable component access.
Primary template — deliberately incomplete.