diff options
Diffstat (limited to 'src/backends/RegistryCommon.hpp')
-rw-r--r-- | src/backends/RegistryCommon.hpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/backends/RegistryCommon.hpp b/src/backends/RegistryCommon.hpp index 616a63bd53..044a9e4250 100644 --- a/src/backends/RegistryCommon.hpp +++ b/src/backends/RegistryCommon.hpp @@ -21,11 +21,11 @@ struct RegisteredTypeName static const char * Name() { return "UNKNOWN"; } }; -template <typename RegisteredType, typename PointerType> +template <typename RegisteredType, typename PointerType, typename ParamType> class RegistryCommon { public: - using FactoryFunction = std::function<PointerType()>; + using FactoryFunction = std::function<PointerType(const ParamType&)>; void Register(const BackendId& id, FactoryFunction factory) { @@ -52,6 +52,20 @@ public: return it->second; } + FactoryFunction GetFactory(const BackendId& id, + FactoryFunction defaultFactory) const + { + auto it = m_Factories.find(id); + if (it == m_Factories.end()) + { + return defaultFactory; + } + else + { + return it->second; + } + } + size_t Size() const { return m_Factories.size(); @@ -116,4 +130,4 @@ struct StaticRegistryInitializer } }; -} // namespace armnn +} // namespace armnn
\ No newline at end of file |