 |
Shiokaze Framework
A research-oriented fluid solver for computer graphics
|
|
Go to the documentation of this file.
25 #ifndef SHKZ_CONFIGURABLE_H
26 #define SHKZ_CONFIGURABLE_H
89 return *
reinterpret_cast<const T *
>(environment.at(key));
117 for(
const auto &key : names ) {
118 result = result && environment.find(key) != environment.end();
141 for(
auto it=m_children.rbegin(); it!=m_children.rend(); ++it ) (*it)->load(config);
142 for(
auto it=m_recursive_children.rbegin(); it!=m_recursive_children.rend(); ++it ) (*it)->recursive_load(config);
155 for(
auto it=m_children.rbegin(); it!=m_children.rend(); ++it ) (*it)->configure(config);
156 for(
auto it=m_recursive_children.rbegin(); it!=m_recursive_children.rend(); ++it ) (*it)->recursive_configure(config);
158 m_configure_done =
true;
167 assert(m_configure_done);
169 merged_environment.insert(environment.begin(),environment.end());
170 initialize(merged_environment);
171 for(
auto it=m_children.rbegin(); it!=m_children.rend(); ++it ) (*it)->initialize(merged_environment);
172 for(
auto it=m_recursive_children.rbegin(); it!=m_recursive_children.rend(); ++it ) (*it)->recursive_initialize(merged_environment);
174 m_initialize_done =
true;
183 return m_initialize_done;
193 m_children.push_back(child);
202 m_recursive_children.push_back(child);
212 m_children.erase(find(m_children.begin(),m_children.end(),child));
221 m_recursive_children.erase(find(m_recursive_children.begin(),m_recursive_children.end(),child));
248 m_environment[name] = value;
264 instance->m_environment.clear();
277 instance->m_environment[name] = value;
288 instance->m_environment = env;
298 virtual void post_load () {}
299 virtual void post_configure () {}
300 virtual void post_initialize () {}
302 std::vector<configurable *> m_children;
303 std::vector<recursive_configurable *> m_recursive_children;
306 bool m_load_done{
false}, m_configure_done{
false}, m_initialize_done{
false};
void set_environment(std::string name, const void *value)
Set the pointer to an environmental value associated with an input name.
Definition: configurable.h:247
virtual void recursive_initialize(const configurable::environment_map &environment=configurable::environment_map())
Initialize the program itself and relay the same to its children. Used to get things ready for actual...
Definition: configurable.h:166
virtual void setup_now(configuration &config=get_global_configuration())
Run load - configure - initialize processes.
Definition: configurable.h:95
recursive_configurable()=default
Default constructor.
virtual void setup_now(configuration &config=get_global_configuration()) override
Run recursive_load - recursive_configure - recursive_initialize processes.
Definition: configurable.h:227
virtual void initialize(const environment_map &environment)
Initialize the program. Used to get things ready for actual use.
Definition: configurable.h:67
static configuration & set_global_configuration(const configuration &config)
Assign the global settings of the program.
static const T & get_env(const environment_map &environment, std::string key)
Extract an specified type of pointer from the input environment.
Definition: configurable.h:88
Class for managing the workflow of load - configure - initialize.
Definition: configurable.h:40
virtual bool is_ready() const
Get if the instance is initialized.
Definition: configurable.h:182
virtual void load(configuration &config)
Load the program. Used to load files and libraries into memory.
Definition: configurable.h:53
virtual void recursive_load(configuration &config)
Load the program itself and relay the same to its children. Used to load files and libraries into mem...
Definition: configurable.h:139
#define SHKZ_BEGIN_NAMESPACE
Name space beggining definition for shiokaze.
Definition: common.h:39
virtual bool not_recursive()
Check if this instance is not derived from recursive_configurable.
Definition: configurable.h:107
static configuration & get_global_configuration()
Get the global settings of the program.
virtual void remove_child(recursive_configurable *child)
Remove a child instance.
Definition: configurable.h:220
Class for setting environemt.
Definition: configurable.h:255
virtual void remove_child(configurable *child)
Remove a child instance.
Definition: configurable.h:210
Extended configurable class that holds multiple children of configurable.
Definition: configurable.h:126
bool check_set(const environment_map &environment, std::vector< std::string > names)
Check if the values for a variable keys exist.
Definition: configurable.h:115
virtual void recursive_configure(configuration &config)
Configure the program itself and relay the same to its children. Used to load and set parameters.
Definition: configurable.h:152
environment_setter(recursive_configurable *instance)
Constructor for environment_setter.
Definition: configurable.h:263
virtual void configure(configuration &config)
Configure the program. Used to load and set parameters.
Definition: configurable.h:60
std::map< std::string, const void * > environment_map
Type for environment_map.
Definition: configurable.h:46
Class that controls the settings of the program.
Definition: configuration.h:39
#define SHKZ_END_NAMESPACE
Name space end definition for shiokaze.
Definition: common.h:44
virtual void add_child(recursive_configurable *child)
Add a child instance.
Definition: configurable.h:201
environment_setter(recursive_configurable *instance, std::string name, const void *value)
Constructor for environment_setter.
Definition: configurable.h:276
virtual void add_child(configurable *child)
Add a child instance.
Definition: configurable.h:191
environment_setter(recursive_configurable *instance, const configurable::environment_map &env)
Constructor for environment_setter.
Definition: configurable.h:287
virtual bool not_recursive() override
Check if this instance is not derived from recursive_configurable.
Definition: configurable.h:238