1 //
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 
12 namespace armnn
13 {
14 
15 struct IMemoryOptimizerStrategyFactory
16 {
17     virtual ~IMemoryOptimizerStrategyFactory() = default;
18     virtual std::unique_ptr<IMemoryOptimizerStrategy> CreateMemoryOptimizerStrategy() = 0;
19 };
20 
21 template <typename T>
22 struct StrategyFactory : public IMemoryOptimizerStrategyFactory
23 {
CreateMemoryOptimizerStrategyarmnn::StrategyFactory24     std::unique_ptr<IMemoryOptimizerStrategy> CreateMemoryOptimizerStrategy() override
25     {
26         return std::make_unique<T>();
27     }
28 };
29 
30 } // namespace armnn