// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md #pragma once #include "algorithm/Algorithm.hpp" #include #include #include namespace sys::cpu { class AlgorithmFactory { std::map> algorithms; public: Algorithm *get(sys::cpu::AlgoID); enum class PutResult { Added, Replaced, }; PutResult emplace(sys::cpu::AlgoID id, std::unique_ptr &&algorithm); /// use algorithms from factory depending on list to calculate frequency /// return used algorithm in used paramter AlgorithmResult calculate(const std::list &algorithms, const cpu::AlgorithmData &data, AlgoID *used = nullptr); /// reset internal algorithms data void reset(const std::list &algorithms); void remove(sys::cpu::AlgoID id); }; }; // namespace sys::cpu