// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "ITensorHandleFactory.hpp" #include #include namespace armnn { //Forward class IMemoryManager; /// class TensorHandleFactoryRegistry { public: TensorHandleFactoryRegistry() = default; TensorHandleFactoryRegistry(const TensorHandleFactoryRegistry& other) = delete; TensorHandleFactoryRegistry(TensorHandleFactoryRegistry&& other) = delete; /// Register a TensorHandleFactory and transfer ownership void RegisterFactory(std::unique_ptr allocator); /// Register a memory manager with shared ownership void RegisterMemoryManager(std::shared_ptr memoryManger); /// Find a TensorHandleFactory by Id /// Returns nullptr if not found ITensorHandleFactory* GetFactory(ITensorHandleFactory::FactoryId id) const; /// Aquire memory required for inference void AquireMemory(); /// Release memory required for inference void ReleaseMemory(); private: std::vector> m_Factories; std::vector> m_MemoryManagers; }; } // namespace armnn