32 #include "../config/PropertySource.h" 34 #include <Rcs_macros.h> 35 #include <Rcs_resourcePath.h> 44 static std::map<std::string, ControlPolicy::ControlPolicyCreateFunction>
registry;
49 registry[name] = creator;
55 auto iter = registry.find(name);
56 if (iter == registry.end()) {
57 std::ostringstream os;
58 os <<
"Unknown control policy type '" << name <<
"'!";
59 throw std::invalid_argument(os.str());
64 bool found = Rcs_getAbsoluteFileName(dataFile, filepath);
67 Rcs_printResourcePath();
68 std::ostringstream os;
69 os <<
"Policy file '" << dataFile <<
"' does not exist!";
70 throw std::invalid_argument(os.str());
74 return iter->second(filepath);
79 std::string policyType;
80 std::string policyFile;
88 std::vector<std::string> names;
89 for (
auto& elem : registry) {
90 names.push_back(elem.first);
virtual bool getProperty(std::string &out, const char *property)=0
static std::vector< std::string > getTypeNames()
List available policy names.
static void registerType(const char *name, ControlPolicyCreateFunction creator)
static std::map< std::string, ControlPolicy::ControlPolicyCreateFunction > registry
ControlPolicy *(* ControlPolicyCreateFunction)(const char *)
Policy factory function. Should read a policy from a file.
static ControlPolicy * create(const char *name, const char *dataFile)