Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Friends | List of all members
uni20::configuration Class Reference

Parser-independent configuration with CLI/API > file > attribute > environment > default precedence. More...

#include <configuration.hpp>

Public Types

using environment_reader = std::function< std::optional< std::string >(std::string const &)>
 

Public Member Functions

template<ConfigurationValue T>
configuration_binding & add (std::string id)
 
template<ConfigurationValue T>
configuration_binding & add (std::string id, T initial)
 
void attributes (std::string repository, attribute_map values)
 
configuration_binding & binding (std::string const &id)
 
configuration_binding const & binding (std::string const &id) const
 
 configuration (environment_reader reader=[](std::string const &name) -> std::optional< std::string > { if(auto p=std::getenv(name.c_str())) return std::string(p);return std::nullopt;})
 
void copy_attributes (attribute_map &output, std::map< std::string, std::string > const &keys) const
 Copy only explicitly selected resolved fields to output-object attributes.
 
template<ConfigurationValue T>
T get (std::string const &id) const
 Resolve and convert a value without choosing a runtime precision.
 
void option_file (std::string path, attribute_map values)
 Supply one already parsed option file; reject undeclared or ambiguous keys before use.
 
std::optional< resolved_value > resolve (std::string const &id) const
 
void set (std::string const &id, metadata_value value)
 
metadata_document snapshot (std::string group="configuration") const
 

Friends

class cli::configuration
 

Detailed Description

Parser-independent configuration with CLI/API > file > attribute > environment > default precedence.

A present empty/false/zero value wins. Invalid winners never fall back. Each resolve call makes a new owned result, permitting bootstrap resolution before input attributes are loaded. The environment reader is injectable and returns nullopt only for absence.

Member Typedef Documentation

◆ environment_reader

using uni20::configuration::environment_reader = std::function<std::optional<std::string>(std::string const&)>

Constructor & Destructor Documentation

◆ configuration()

uni20::configuration::configuration ( environment_reader  reader = [](std::string const& name) -> std::optional<std::string> { if (auto p = std::getenv(name.c_str())) return std::string(p); return std::nullopt; })
inlineexplicit

Member Function Documentation

◆ add() [1/2]

template<ConfigurationValue T>
configuration_binding & uni20::configuration::add ( std::string  id)
inline

◆ add() [2/2]

template<ConfigurationValue T>
configuration_binding & uni20::configuration::add ( std::string  id,
T  initial 
)
inline

◆ attributes()

void uni20::configuration::attributes ( std::string  repository,
attribute_map  values 
)
inline

◆ binding() [1/2]

configuration_binding & uni20::configuration::binding ( std::string const &  id)
inline

◆ binding() [2/2]

configuration_binding const & uni20::configuration::binding ( std::string const &  id) const
inline

◆ copy_attributes()

void uni20::configuration::copy_attributes ( attribute_map &  output,
std::map< std::string, std::string > const &  keys 
) const
inline

Copy only explicitly selected resolved fields to output-object attributes.

◆ get()

template<ConfigurationValue T>
T uni20::configuration::get ( std::string const &  id) const
inline

Resolve and convert a value without choosing a runtime precision.

◆ option_file()

void uni20::configuration::option_file ( std::string  path,
attribute_map  values 
)
inline

Supply one already parsed option file; reject undeclared or ambiguous keys before use.

◆ resolve()

std::optional< resolved_value > uni20::configuration::resolve ( std::string const &  id) const
inline

◆ set()

void uni20::configuration::set ( std::string const &  id,
metadata_value  value 
)
inline

◆ snapshot()

metadata_document uni20::configuration::snapshot ( std::string  group = "configuration") const
inline

Friends And Related Symbol Documentation

◆ cli::configuration

friend class cli::configuration
friend

The documentation for this class was generated from the following file: