// // Copyright © 2020 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include #include #include namespace armnn { // An implementation of IMemoryManager to be used with SampleTensorHandle class SampleMemoryManager : public IMemoryManager { public: SampleMemoryManager(); virtual ~SampleMemoryManager(); class Pool; Pool* Manage(unsigned int numBytes); void Allocate(Pool *pool); void* GetPointer(Pool *pool); void Acquire() override; void Release() override; class Pool { public: Pool(unsigned int numBytes); ~Pool(); void Acquire(); void Release(); void* GetPointer(); void Reserve(unsigned int numBytes); private: unsigned int m_Size; void* m_Pointer; }; private: SampleMemoryManager(const SampleMemoryManager&) = delete; // Noncopyable SampleMemoryManager& operator=(const SampleMemoryManager&) = delete; // Noncopyable std::forward_list m_Pools; std::vector m_FreePools; }; }