~aleteoryx/muditaos

ref: dd12853503ae14476b711060679b5f481f643e0e muditaos/module-sys/SystemManager/cpu/AlgorithmFactory.cpp -rw-r--r-- 985 bytes
dd128535 — Adam Dobrowolski [MOS-226] Moved algorithms and their data to separate classes 4 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "AlgorithmFactory.hpp"
#include "SystemManager/cpu/algorithm/FrequencyHold.hpp"
#include <memory>

namespace sys::cpu {

    AlgorithmFactory::PutResult AlgorithmFactory::emplace(sys::cpu::AlgoID id, std::unique_ptr<Algorithm>&&algorithm)
    {
        if ( algorithms.find(id) != std::end(algorithms)) {
            algorithms[id] = std::move(algorithm);
            return  PutResult::Replaced;
        } 
        algorithms.emplace(id, std::move(algorithm));
        return PutResult::Added;
    }


    Algorithm* AlgorithmFactory::get(sys::cpu::AlgoID id)
    {
        if ( auto el = algorithms.find(id); el != std::end(algorithms)) {
            return el->second.get();
        }
        return nullptr;
    }

    void AlgorithmFactory::remove(sys::cpu::AlgoID id)
    {
        algorithms.erase(id);
    }
} // namespace sys::cpu