Class ConfigSchema#
Defined in File config_schema.h
Nested Relationships#
Nested Types#
Class Documentation#
-
class ConfigSchema#
Dynamic config schema for map-like options.
The schema supports:
Option declaration (
def_option<T>)Optional canonicalizer (
set_canonicalizer)Resolution (
Resolve) that performs validation/defaulting, unknown-key policy, and canonicalization (last).
Public Types
-
using ConfigMap = ffi::Map<ffi::String, ffi::Any>#
Public Functions
-
template<typename T, typename ...Traits>
inline ConfigSchema &def_option(const ffi::String &key, Traits&&... traits)# Declare a typed option.
Validation/coercion is implicitly generated from
T. Additional optional traits may be supplied (e.g.refl::DefaultValue,const char*doc).- Template Parameters:
T – The canonical value type of this option.
Traits – Optional metadata/traits.
- Parameters:
key – Option key.
traits – Optional traits.
- Returns:
Reference to
*thisfor chaining.
-
inline void set_canonicalizer(Canonicalizer f)#
Set whole-object canonicalizer.
-
inline void set_error_on_unknown(bool value)#
Set whether unknown keys trigger an error.
-
inline ConfigMap Resolve(ConfigMap config) const#
Default/validate, then canonicalize a config object.
Resolve flow: 1) Validate/coerce declared options in declaration order. 2) Materialize defaults and enforce required options. 3) Apply unknown-key policy. 4) Run canonicalizer as final step.
- Parameters:
config – Input config object.
- Throws:
ValueError / TypeError – with option context.
- Returns:
Canonical validated config object.
-
inline const std::vector<OptionEntry> &ListOptions() const#
List declared options in declaration order.
- Returns:
Const reference to the option entries vector.
-
inline bool HasOption(const ffi::String &key) const#
Check if an option with the given key exists.
-
struct OptionEntry#
Schema entry for one declared option.
Public Members
-
ffi::String key#
Option key.
-
ffi::TypedFunction<ffi::Any(ffi::Any)> validator#
Per-option validator/coercer (Any -> Any).
-
bool has_default = false#
Whether this option has a default value or factory.
-
bool default_from_factory = false#
Whether the default is produced by a factory function.
-
ffi::Any default_value#
Default value, or factory function () -> Any when default_from_factory is true.
-
ffi::String key#