summaryrefslogtreecommitdiff
path: root/src/desktop/rule/Engine.hpp
blob: b0ea118e7f7d4554ad0f65c4f9c4881323e9db4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#pragma once

#include "Rule.hpp"

namespace Desktop::Rule {
    class CRuleEngine {
      public:
        CRuleEngine()  = default;
        ~CRuleEngine() = default;

        void                          registerRule(SP<IRule>&& rule);
        void                          unregisterRule(const std::string& name);
        void                          unregisterRule(const SP<IRule>& rule);
        void                          updateAllRules();
        void                          cleanExecRules();
        void                          clearAllRules();
        const std::vector<SP<IRule>>& rules();

      private:
        std::vector<SP<IRule>> m_rules;
    };

    SP<CRuleEngine> ruleEngine();
}