blob: 7b04f442d204bd65c787e07c376de3780ff8bf2c [file] [log] [blame]
Sadik Armaganb8a26d82021-10-04 15:13:11 +01001//
2// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include <armnn/backends/IMemoryOptimizerStrategy.hpp>
9
10#include <algorithm>
11
12namespace armnn
13{
14
Finn Williamsb03e8ff2021-11-08 15:22:45 +000015struct IMemoryOptimizerStrategyFactory
Sadik Armaganb8a26d82021-10-04 15:13:11 +010016{
Finn Williamsb03e8ff2021-11-08 15:22:45 +000017 virtual ~IMemoryOptimizerStrategyFactory() = default;
18 virtual std::unique_ptr<IMemoryOptimizerStrategy> CreateMemoryOptimizerStrategy() = 0;
19};
Sadik Armaganb8a26d82021-10-04 15:13:11 +010020
Finn Williamsb03e8ff2021-11-08 15:22:45 +000021template <typename T>
22struct StrategyFactory : public IMemoryOptimizerStrategyFactory
23{
24 std::unique_ptr<IMemoryOptimizerStrategy> CreateMemoryOptimizerStrategy() override
Sadik Armaganb8a26d82021-10-04 15:13:11 +010025 {
Jim Flynne1fdd282021-10-26 21:26:10 +010026 return std::make_unique<T>();
Sadik Armaganb8a26d82021-10-04 15:13:11 +010027 }
Sadik Armaganb8a26d82021-10-04 15:13:11 +010028};
29
30} // namespace armnn