18 { S::name() } -> std::convertible_to<std::string_view>;
19 { S::schema() } -> std::convertible_to<const ParamSchema&>;
20} && std::is_default_constructible_v<S>;
22template <
class Params>
30 Params next = params_;
31 if (
auto err = next.apply(m))
return err;
32 if (
auto err = detail::validate_params(next))
return err;
37 [[nodiscard]]
const Params&
params() const noexcept {
return params_; }
45 for (std::size_t i = 0; i < n; ++i) {
46 if (m.field[i] < s.
size()) s.
begin()[m.field[i]].
set_raw(¶ms_, m.value[i]);
49 [[nodiscard]] std::string
describe_params()
const {
return params_.describe(); }
Definition params.hpp:102
const ParamDesc * begin() const noexcept
Definition params.hpp:112
std::size_t size() const noexcept
Definition params.hpp:111
Params params_type
Definition strategy.hpp:27
std::optional< std::string > configure(const ParamMap &m)
Applies string parameters, then runs validate() const when the params struct declares one.
Definition strategy.hpp:31
static const ParamSchema & schema()
Definition strategy.hpp:28
std::string describe_params() const
Definition strategy.hpp:51
const Params & params() const noexcept
Read-only: parameters change through configure() and apply_param_update().
Definition strategy.hpp:39
void apply_param_update(const ParamUpdateMsg &m) noexcept
Engine thread: assigns the (field, raw value) pairs of a ParamUpdateMsg, which the publisher validate...
Definition strategy.hpp:43
Definition strategy.hpp:19
Strategy hooks (ADR-0012): the hook table, the compile-time checker and the Fill view.
Definition strategy.hpp:16
std::map< std::string, std::string > ParamMap
Definition params.hpp:119
Strategy parameter schema (8.6, ADR-0012).
void(* set_raw)(void *obj, std::int64_t raw) noexcept
Definition params.hpp:97
New strategy parameter values (ADR-0013): up to kMaxFields (field index, raw value) pairs,...
Definition messages.hpp:574
static constexpr std::size_t kMaxFields
Definition messages.hpp:575