21 if (m_Factories.find(
id) != m_Factories.end())
24 std::string(
id) +
" already registered as IBackend factory",
27 m_Factories[id] = factory;
29 if (m_ProfilingService.has_value())
31 if (m_ProfilingService.has_value() && m_ProfilingService.value().IsProfilingEnabled())
33 m_ProfilingService.value().IncrementCounterValue(armnn::profiling::REGISTERED_BACKENDS);
41 m_Factories.erase(
id);
43 if (m_ProfilingService.has_value() && m_ProfilingService.value().IsProfilingEnabled())
45 m_ProfilingService.value().IncrementCounterValue(armnn::profiling::UNREGISTERED_BACKENDS);
51 return (m_Factories.find(
id) != m_Factories.end());
56 auto it = m_Factories.find(
id);
57 if (it == m_Factories.end())
60 std::string(
id) +
" has no IBackend factory registered",
69 return m_Factories.size();
75 for (
const auto& it : m_Factories)
77 result.insert(it.first);
84 static const std::string delimitator =
", ";
86 std::stringstream output;
89 if (output.tellp() != std::streampos(0))
91 output << delimitator;
106 m_ProfilingService = profilingService;
FactoryFunction GetFactory(const BackendId &id) const
BackendIdSet GetBackendIds() const
bool IsBackendRegistered(const BackendId &id) const
std::function< PointerType()> FactoryFunction
void Register(const BackendId &id, FactoryFunction factory)
void swap(OriginsDescriptor &first, OriginsDescriptor &second)
std::unordered_set< BackendId > BackendIdSet
static void Swap(BackendRegistry &instance, FactoryStorage &other)
For testing only.
std::unordered_map< BackendId, FactoryFunction > FactoryStorage
BackendRegistry & BackendRegistryInstance()
Copyright (c) 2020 ARM Limited.
std::string GetBackendIdsAsString() const
void SetProfilingService(armnn::Optional< profiling::ProfilingService &> profilingService)
void Deregister(const BackendId &id)