21 if (m_Factories.find(
id) != m_Factories.end())
24 std::string(
id) +
" already registered as IBackend factory",
31 m_Factories[id] = factory;
40 m_Factories.erase(
id);
45 return (m_Factories.find(
id) != m_Factories.end());
50 auto it = m_Factories.find(
id);
51 if (it == m_Factories.end())
54 std::string(
id) +
" has no IBackend factory registered",
63 return m_Factories.size();
69 for (
const auto& it : m_Factories)
71 result.insert(it.first);
78 static const std::string delimitator =
", ";
80 std::stringstream output;
83 if (output.tellp() != std::streampos(0))
85 output << delimitator;
std::function< PointerType()> FactoryFunction
FactoryFunction GetFactory(const BackendId &id) const
std::unordered_map< BackendId, FactoryFunction > FactoryStorage
std::string GetBackendIdsAsString() const
static void Swap(BackendRegistry &instance, FactoryStorage &other)
BackendRegistry & BackendRegistryInstance()
BackendIdSet GetBackendIds() const
void swap(OriginsDescriptor &first, OriginsDescriptor &second)
uint32_t IncrementCounterValue(uint16_t counterUid) override
static ProfilingService & Instance()
bool IsBackendRegistered(const BackendId &id) const
std::unordered_set< BackendId > BackendIdSet
void Deregister(const BackendId &id)
void Register(const BackendId &id, FactoryFunction factory)