aboutsummaryrefslogtreecommitdiff
path: root/src/backends/RegistryCommon.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/RegistryCommon.hpp')
-rw-r--r--src/backends/RegistryCommon.hpp20
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