|
|
@@ -2,50 +2,22 @@
|
|
|
|
|
|
#include <jvalidate/forward.h>
|
|
|
|
|
|
+#define VISITOR_PURE_VIRTUAL(TYPE) virtual Status visit(TYPE const &) const = 0;
|
|
|
+
|
|
|
namespace jvalidate::constraint {
|
|
|
+/**
|
|
|
+ * @brief The base interface for visitors to be implemented off of.
|
|
|
+ * Provides a visit function for every provided concrete type of Constraint,
|
|
|
+ * as well as the ExtensionConstraint interface.
|
|
|
+ */
|
|
|
struct ConstraintVisitor {
|
|
|
virtual ~ConstraintVisitor() = default;
|
|
|
-
|
|
|
- virtual Status visit(ExtensionConstraint const &) const = 0;
|
|
|
-
|
|
|
- virtual Status visit(TypeConstraint const &) const = 0;
|
|
|
- virtual Status visit(EnumConstraint const &) const = 0;
|
|
|
- virtual Status visit(AllOfConstraint const &) const = 0;
|
|
|
- virtual Status visit(AnyOfConstraint const &) const = 0;
|
|
|
- virtual Status visit(OneOfConstraint const &) const = 0;
|
|
|
- virtual Status visit(NotConstraint const &) const = 0;
|
|
|
- virtual Status visit(ConditionalConstraint const &) const = 0;
|
|
|
-
|
|
|
- virtual Status visit(MaximumConstraint const &) const = 0;
|
|
|
- virtual Status visit(MinimumConstraint const &) const = 0;
|
|
|
- virtual Status visit(MultipleOfConstraint const &) const = 0;
|
|
|
-
|
|
|
- virtual Status visit(MaxLengthConstraint const &) const = 0;
|
|
|
- virtual Status visit(MinLengthConstraint const &) const = 0;
|
|
|
- virtual Status visit(PatternConstraint const &) const = 0;
|
|
|
- virtual Status visit(FormatConstraint const &) const = 0;
|
|
|
-
|
|
|
- virtual Status visit(AdditionalItemsConstraint const &) const = 0;
|
|
|
- virtual Status visit(ContainsConstraint const &) const = 0;
|
|
|
- virtual Status visit(MaxItemsConstraint const &) const = 0;
|
|
|
- virtual Status visit(MinItemsConstraint const &) const = 0;
|
|
|
- virtual Status visit(TupleConstraint const &) const = 0;
|
|
|
- virtual Status visit(UniqueItemsConstraint const &) const = 0;
|
|
|
-
|
|
|
- virtual Status visit(AdditionalPropertiesConstraint const &) const = 0;
|
|
|
- virtual Status visit(DependenciesConstraint const &) const = 0;
|
|
|
- virtual Status visit(MaxPropertiesConstraint const &) const = 0;
|
|
|
- virtual Status visit(MinPropertiesConstraint const &) const = 0;
|
|
|
- virtual Status visit(PatternPropertiesConstraint const &) const = 0;
|
|
|
- virtual Status visit(PropertiesConstraint const &) const = 0;
|
|
|
- virtual Status visit(PropertyNamesConstraint const &) const = 0;
|
|
|
- virtual Status visit(RequiredConstraint const &) const = 0;
|
|
|
-
|
|
|
- virtual Status visit(UnevaluatedItemsConstraint const &) const = 0;
|
|
|
- virtual Status visit(UnevaluatedPropertiesConstraint const &) const = 0;
|
|
|
+ CONSTRAINT_IMPLEMENTATION_LIST(VISITOR_PURE_VIRTUAL);
|
|
|
};
|
|
|
|
|
|
template <typename Cons> struct ExtensionConstraintVisitor {
|
|
|
virtual Status visit(Cons const &) const = 0;
|
|
|
};
|
|
|
}
|
|
|
+
|
|
|
+#undef VISITOR_PURE_VIRTUAL
|