// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include "BackendRegistry.hpp" #include namespace armnn { BackendRegistry& BackendRegistry::Instance() { static BackendRegistry instance; return instance; } void BackendRegistry::Register(const BackendId& id, FactoryFunction factory) { if (m_BackendFactories.count(id) > 0) { throw InvalidArgumentException(std::string(id) + " already registered as backend", CHECK_LOCATION()); } m_BackendFactories[id] = factory; } BackendRegistry::FactoryFunction BackendRegistry::GetFactory(const BackendId& id) const { auto it = m_BackendFactories.find(id); if (it == m_BackendFactories.end()) { throw InvalidArgumentException(std::string(id) + " has no backend factory registered", CHECK_LOCATION()); } return it->second; } void BackendRegistry::Swap(BackendRegistry::FactoryStorage& other) { BackendRegistry& instance = Instance(); std::swap(instance.m_BackendFactories, other); } BackendIdSet BackendRegistry::GetBackendIds() const { BackendIdSet result; for (const auto& it : m_BackendFactories) { result.insert(it.first); } return result; } } // namespace armnn