8#ifndef TRIGGERALGS_ABSTRACT_FACTORY_HPP_
9#define TRIGGERALGS_ABSTRACT_FACTORY_HPP_
16#include <unordered_map>
24 using creation_map = std::unordered_map<std::string, maker_creator>;
32 std::unique_ptr<T>
build_maker(
const std::string& alg_name);
36 static std::shared_ptr<AbstractFactory<T>>
get_instance();
AbstractFactory(const AbstractFactory &)=delete
AbstractFactory & operator=(const AbstractFactory &)=delete
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
virtual ~AbstractFactory()
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