Horizon
package_rules.hpp
1 #pragma once
2 #include "nlohmann/json_fwd.hpp"
3 #include "rule_package_checks.hpp"
4 #include "rule_clearance_package.hpp"
5 #include "rules/rules.hpp"
6 #include "util/uuid.hpp"
7 
8 namespace horizon {
9 using json = nlohmann::json;
10 
11 class PackageRules : public Rules {
12 public:
13  PackageRules();
14 
15  void load_from_json(const json &j) override;
16  RulesCheckResult check(RuleID id, const class Package &pkg) const;
17  json serialize() const override;
18  std::set<RuleID> get_rule_ids() const override;
19  const Rule *get_rule(RuleID id) const override;
20  const Rule *get_rule(RuleID id, const UUID &uu) const override;
21  std::map<UUID, const Rule *> get_rules(RuleID id) const override;
22  void remove_rule(RuleID id, const UUID &uu) override;
23  Rule *add_rule(RuleID id) override;
24 
25 private:
26  RulePackageChecks rule_package_checks;
27  RuleClearancePackage rule_clearance_package;
28 
29  RulesCheckResult check_package(const class Package &pkg) const;
30  RulesCheckResult check_clearance(const class Package &pkg) const;
31 };
32 } // namespace horizon
nlohmann::basic_json
a class to store JSON values
Definition: json.hpp:166
nlohmann::json
basic_json<> json
default JSON class
Definition: json_fwd.hpp:61