IVGCVSW-3617 Add CL TensorHandleFactory

* Adds ClTensorHandleFactory
* Includes some refactoring of NeonTensorHandleFactory

Signed-off-by: Jan Eilers <jan.eilers@arm.com>
Change-Id: I9f0874b1945050267c5ece970e6d9b200ed8a865
diff --git a/src/backends/neon/NeonTensorHandleFactory.hpp b/src/backends/neon/NeonTensorHandleFactory.hpp
index a2e46e2..c401e0e 100644
--- a/src/backends/neon/NeonTensorHandleFactory.hpp
+++ b/src/backends/neon/NeonTensorHandleFactory.hpp
@@ -11,23 +11,28 @@
 namespace armnn
 {
 
+constexpr const char* NeonTensorHandleFactoryId() { return "Arm/Neon/TensorHandleFactory"; }
+
 class NeonTensorHandleFactory : public ITensorHandleFactory
 {
 public:
-    NeonTensorHandleFactory(std::weak_ptr<NeonMemoryManager> mgr, ITensorHandleFactory::FactoryId id)
-        : m_Id(id)
-        , m_MemoryManager(mgr)
+    NeonTensorHandleFactory(std::weak_ptr<NeonMemoryManager> mgr)
+                            : m_MemoryManager(mgr),
+                              m_ImportFlags(static_cast<MemorySourceFlags>(MemorySource::Undefined)),
+                              m_ExportFlags(static_cast<MemorySourceFlags>(MemorySource::Undefined))
     {}
 
     std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& parent,
-                                                         TensorShape const& subTensorShape,
-                                                         unsigned int const* subTensorOrigin) const override;
+                                                         const TensorShape& subTensorShape,
+                                                         const unsigned int* subTensorOrigin) const override;
 
     std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo) const override;
 
     std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
                                                       DataLayout dataLayout) const override;
 
+    static const FactoryId& GetIdStatic();
+
     const FactoryId GetId() const override;
 
     bool SupportsSubTensors() const override;
@@ -37,10 +42,9 @@
     MemorySourceFlags GetImportFlags() const override;
 
 private:
-    FactoryId m_Id = "Arm/Neon/TensorHandleFactory";
+    mutable std::shared_ptr<NeonMemoryManager> m_MemoryManager;
     MemorySourceFlags m_ImportFlags;
     MemorySourceFlags m_ExportFlags;
-    mutable std::shared_ptr<NeonMemoryManager> m_MemoryManager;
 };
 
 } // namespace armnn