|
|
@@ -45,7 +45,7 @@
|
|
|
} while (false)
|
|
|
|
|
|
namespace jvalidate {
|
|
|
-template <RegexEngine RE, typename ExtensionVisitor> class ValidationVisitor {
|
|
|
+template <Adapter Root, RegexEngine RE, typename ExtensionVisitor> class ValidationVisitor {
|
|
|
private:
|
|
|
JVALIDATE_TRIBOOL_TYPE(StoreResults, ForValid, ForInvalid, ForAnything);
|
|
|
using VisitedAnnotation = std::tuple<std::unordered_set<size_t>, std::unordered_set<std::string>>;
|
|
|
@@ -56,6 +56,7 @@ private:
|
|
|
detail::Pointer schema_path_;
|
|
|
|
|
|
schema::Node const * schema_;
|
|
|
+ Root const * root_;
|
|
|
|
|
|
ValidationResult * result_;
|
|
|
|
|
|
@@ -78,9 +79,10 @@ public:
|
|
|
* @param[optional] result A cache of result/annotation info for the user to
|
|
|
* receive a detailed summary of why a document is supported/unsupported.
|
|
|
*/
|
|
|
- ValidationVisitor(schema::Node const & schema, ValidationConfig const & cfg, RE & regex,
|
|
|
- ExtensionVisitor extension, ValidationResult * result)
|
|
|
- : schema_(&schema), result_(result), cfg_(cfg), extension_(extension), regex_(regex) {}
|
|
|
+ ValidationVisitor(schema::Node const & schema, Root const & root, ValidationConfig const & cfg,
|
|
|
+ RE & regex, ExtensionVisitor extension, ValidationResult * result)
|
|
|
+ : schema_(&schema), root_(&root), result_(result), cfg_(cfg), extension_(extension),
|
|
|
+ regex_(regex) {}
|
|
|
|
|
|
Status visit(constraint::ExtensionConstraint const & cons, Adapter auto const & document) const {
|
|
|
// Because we don't provide any contract constraint on our ExtensionVisitor,
|