9#ifndef SUP_SYSSUP_COMMON_SUBSYSFACTORY_HPP
10#define SUP_SYSSUP_COMMON_SUBSYSFACTORY_HPP
16#include <unordered_map>
23std::string
Demangle(
const char *name);
34 template <
class Base,
class... Args>
class Factory {
37 template <
class ... T>
46 static std::unique_ptr<Base>
Create(
const std::string &s, T&&... args) {
47 const auto& obj_map = Data();
48 auto i = obj_map.find(s);
49 if (i == obj_map.end()) {
52 return obj_map.at(s)(std::forward<T>(args)...);
62 Factory::Data()[name] = [](Args... args) -> std::unique_ptr<Base> {
63 return std::make_unique<T>(std::forward<Args>(args)...);
78 template <
class T>
friend struct Registrar;
80 using FuncType = std::unique_ptr<Base> (*)(Args...);
84 static std::unordered_map<std::string, FuncType> s;
89 template <
class Base,
class... Args>
91 bool Factory<Base, Args...>::Registrar<T>::registered =
Definition subsysFactory.hpp:34
friend Base
Definition subsysFactory.hpp:73
static std::unique_ptr< Base > Create(const std::string &s, T &&... args)
create subsystem object instance
Definition subsysFactory.hpp:46
ActionsInit class source file.
Definition actionMgr.cpp:32
std::string Demangle(const char *name)
Definition subsysFactory.cpp:16
Definition subsysFactory.hpp:56
static bool RegisterT()
Definition subsysFactory.hpp:59
friend T
Definition subsysFactory.hpp:57
static bool registered
Definition subsysFactory.hpp:67