| 123456789101112131415161718192021222324252627282930 |
- #pragma once
- #include <jvalidate/constraint/visitor.h>
- #include <jvalidate/detail/pointer.h>
- #include <jvalidate/enum.h>
- #include <jvalidate/forward.h>
- #include <jvalidate/status.h>
- namespace jvalidate::constraint {
- class Constraint {
- public:
- virtual ~Constraint() = default;
- virtual Status accept(ConstraintVisitor const & visitor) const = 0;
- };
- template <typename CRTP> class SimpleConstraint : public Constraint {
- public:
- Status accept(ConstraintVisitor const & visitor) const final {
- return visitor.visit(*static_cast<CRTP const *>(this));
- }
- };
- class ExtensionConstraint : public Constraint {
- public:
- Status accept(ConstraintVisitor const & visitor) const final { return visitor.visit(*this); }
- virtual Status validate(adapter::Adapter const & json, detail::Pointer const & where,
- ValidationResult * result) const = 0;
- };
- }
|