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