#pragma once #include #include #include #include #include namespace jvalidate::detail { class StdRegexEngine { public: std::regex regex_; public: StdRegexEngine(std::string const & regex) : regex_(regex) {} bool search(std::string const & text) const { return std::regex_search(text, regex_); } }; } namespace jvalidate { template class ValidatorT { private: schema::Node const & schema_; std::unordered_map regex_cache_; public: ValidatorT(schema::Node const & schema) : schema_(schema) {} template Status validate(A const & json, ValidationResult const * result = nullptr) const { return ValidationVisitor(json, schema_, regex_cache_, result).validate(); } }; class Validator : public ValidatorT<> { public: using Validator::ValidatorT::ValidatorT; }; }