5 #include <unordered_map>
11 template<
typename ReturnType>
13 using factoryFunction = std::function<ReturnType(
const std::string&)>;
16 static bool registerTypeFactory(
const std::string& name, factoryFunction createFunc) {
17 if (AbstractFactory::getFactoryMethods().contains(name))
19 AbstractFactory::getFactoryMethods()[name] = createFunc;
22 static const factoryFunction& getTypeFactory(
const std::string& name) {
23 return AbstractFactory::getFactoryMethods().at(name);
26 static std::unordered_map<std::string, factoryFunction>& getFactoryMethods() {
27 static std::unordered_map<std::string, factoryFunction> factoryFunctions;
28 return factoryFunctions;