// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include #include #include "optimizations/All.hpp" namespace armnn { class Optimizer { public: using OptimizationPtr = std::unique_ptr; using Optimizations = std::vector; static void Pass(Graph& graph, const Optimizations& optimizations); private: ~Optimizer() = default; Optimizer(); }; template void Append(Optimizer::Optimizations& optimizations, T&& optimization) { optimizations.emplace_back(new T(optimization)); }; template void Append(Optimizer::Optimizations& optimizations, Front&& front, Others&&... others) { Append(optimizations, std::forward(front)); Append(optimizations, std::forward(others)...); }; template Optimizer::Optimizations MakeOptimizations(Args&&... args) { Optimizer::Optimizations optimizations; Append(optimizations, std::forward(args)...); return optimizations; } } // namespace armnn