1 //
2 // Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include <armnn/Types.hpp>
8 #include <armnn/Exceptions.hpp>
9 #include <armnn/backends/IMemoryOptimizerStrategy.hpp>
10 
11 namespace armnn
12 {
13 
14 class StrategyValidator : public IMemoryOptimizerStrategy
15 {
16 public:
17 
SetStrategy(std::shared_ptr<IMemoryOptimizerStrategy> strategy)18     void SetStrategy(std::shared_ptr<IMemoryOptimizerStrategy> strategy)
19     {
20         m_Strategy = strategy;
21         m_MemBlockStrategyType = strategy->GetMemBlockStrategyType();
22     }
23 
GetName() const24     std::string GetName() const override
25     {
26         return "StrategyValidator";
27     }
28 
GetMemBlockStrategyType() const29     MemBlockStrategyType GetMemBlockStrategyType() const override
30     {
31         return m_MemBlockStrategyType;
32     }
33 
34     std::vector<MemBin> Optimize(std::vector<MemBlock>& memBlocks) override;
35 
36 private:
37     std::shared_ptr<IMemoryOptimizerStrategy> m_Strategy;
38     MemBlockStrategyType m_MemBlockStrategyType;
39 };
40 
41 } // namespace armnn