8#ifndef TRIGGERALGS_ABSTRACT_FACTORY_HXX_
9#define TRIGGERALGS_ABSTRACT_FACTORY_HXX_
28 auto it = makers.find(alg_name);
30 if (it == makers.end()) {
31 makers[alg_name] = creator;
42 auto it = makers.find(alg_name);
44 if (it != makers.end()) {
45 TLOG() <<
"[AF] Factory building " << alg_name <<
".";
56 if (s_single_factory ==
nullptr) {
57 s_single_factory = std::make_shared<AbstractFactory<T>>();
59 return s_single_factory;
static creation_map & get_makers()
static std::shared_ptr< AbstractFactory< T > > get_instance()
std::unordered_map< std::string, maker_creator > creation_map
static std::shared_ptr< AbstractFactory< T > > s_single_factory
static void register_creator(const std::string alg_name, maker_creator creator)
std::unique_ptr< T > build_maker(const std::string &alg_name)
std::function< std::unique_ptr< T >()> maker_creator