22template <
class BaseIf>
30 std::scoped_lock lock(m_mutex);
31 assert(m_factories.size() == 0);
35template <
class BaseIf>
39 std::scoped_lock lock(m_mutex);
40 auto position = std::find(m_factories.begin(), m_factories.end(), factory);
41 if (position == m_factories.end()) {
42 m_factories.push_back(factory);
46template <
class BaseIf>
50 std::scoped_lock lock(m_mutex);
51 auto position = std::find(m_factories.begin(), m_factories.end(), factory);
52 if (position != m_factories.end()) {
53 m_factories.erase(position);
57template <
class BaseIf>
60 std::scoped_lock lock(m_mutex);
61 auto factory = std::find_if(
62 m_factories.begin(), m_factories.end(), [&](
auto& x) { return x->CanHandle(id); });
63 if (factory != m_factories.end()) {
70template <
class BaseIf>
97 static std::shared_ptr<FactoryRegistry<BaseIf>> registry =
98 std::make_shared<FactoryRegistry<BaseIf>>();
102template <
class BaseIf,
class Factory>
108template <
class BaseIf,
class Factory>
The base class for all factory objects that are registered in the FactoryRegistry.
Definition factoryRegistry.hpp:56
A simple registry of various factory objects.
Definition factoryRegistry.hpp:46
void Register(const FactoryIf *factory)
Register the factory if it was not already registered.
Definition factoryRegistry.ipp:36
void Deregister(const FactoryIf *factory) noexcept
Remove the factory from the registry if it was already registered.
Definition factoryRegistry.ipp:47
~FactoryRegistry()
Definition factoryRegistry.ipp:23
static std::shared_ptr< FactoryRegistry< BaseIf > > GetInstance()
Returns the registry singleton.
Definition factoryRegistry.ipp:71
const FactoryIf * FindCompatibleFactory(const AdapterIdType &id) const noexcept
Finds the first factory that can handle the given identifier.
Definition factoryRegistry.ipp:59
typename BaseIf::AdapterIdType AdapterIdType
Definition factoryRegistry.hpp:48
Factory m_factory
Definition factoryRegistry.hpp:203
RegisterFactory()
Definition factoryRegistry.ipp:103
std::shared_ptr< FactoryRegistry< BaseIf > > m_registry
Definition factoryRegistry.hpp:200
~RegisterFactory()
Definition factoryRegistry.ipp:109
Definition commandReplier.cpp:21