25#ifndef _CONFIGURATION_CONFIGMANAGER_H
26#define _CONFIGURATION_CONFIGMANAGER_H
28#include <boost/program_options/options_description.hpp>
29#include <boost/program_options/variables_map.hpp>
36namespace Configuration {
125 template <
typename T>
148 template <
typename T1,
typename T2>
202 template <
typename T>
Manages a set of configuration classes.
std::unique_ptr< std::type_index > m_root_config
void registerConfiguration()
Registers a Configuration to the manager.
void registerDependency()
Registers a dependency between two configurations.
static void deregisterInstance(long id)
std::map< std::type_index, std::unique_ptr< Configuration > > m_config_dictionary
T & getConfiguration()
Returns a reference to the requested configuration.
virtual ~ConfigManager()=default
Destructor.
void initialize(const std::map< std::string, boost::program_options::variable_value > &user_values)
Initialize the manager.
std::map< std::type_index, std::set< std::type_index > > m_dependency_map
boost::program_options::options_description closeRegistration()
Terminates the manager registration phase.
static ConfigManager & getInstance(long id)
Returns a reference to the ConfigManager with the given ID.