#pragma once #include "Utils.hpp" #include #include #include #include #include #include namespace BMapInspector::Ruleset { class IRule { public: IRule(); virtual ~IRule(); YYCC_DELETE_COPY_MOVE(IRule) public: virtual std::u8string_view GetRuleName() const = 0; virtual void Check(Utils::Reporter& reporter) const = 0; }; class RuleCollection { public: RuleCollection(); ~RuleCollection(); YYCC_DELETE_COPY_MOVE(RuleCollection) public: size_t GetRuleCount() const; const std::vector &GetRules() const; private: std::vector rules; }; } // namespace BMapInspector::Ruleset