// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "IMemoryPool.hpp" #include #include namespace armnn { class OffsetMemoryPool : public IMemoryPool { public: OffsetMemoryPool(arm_compute::IAllocator* allocator, size_t blobSize); ~OffsetMemoryPool(); OffsetMemoryPool(const OffsetMemoryPool&) = delete; OffsetMemoryPool& operator=(const OffsetMemoryPool&) = delete; OffsetMemoryPool(OffsetMemoryPool&&) = default; OffsetMemoryPool& operator=(OffsetMemoryPool &&) = default; void acquire(arm_compute::MemoryMappings& handles) override; void release(arm_compute::MemoryMappings& handles) override; arm_compute::MappingType mapping_type() const override; std::unique_ptr duplicate() override; void AllocatePool() override; void ReleasePool() override; private: /// Allocator to use for internal allocation arm_compute::IAllocator* m_Allocator; /// Memory blob void* m_Blob; /// Size of the allocated memory blob size_t m_BlobSize; /// Flag indicating whether memory has been allocated for the pool bool m_MemoryAllocated; }; } // namespace armnn