#pragma once #include #include namespace jvalidate::constraint { class MaximumConstraint : public SimpleConstraint { private: double value_; bool exclusive_; public: MaximumConstraint(double value, bool exclusive) : value_(value), exclusive_(exclusive) {} bool operator()(double arg) const { return exclusive_ ? arg < value_ : arg <= value_; } }; class MinimumConstraint : public SimpleConstraint { private: double value_; bool exclusive_; public: MinimumConstraint(double value, bool exclusive) : value_(value), exclusive_(exclusive) {} bool operator()(double arg) const { return exclusive_ ? arg > value_ : arg >= value_; } }; class MultipleOfConstraint : public SimpleConstraint { private: int64_t value_; public: MultipleOfConstraint(int64_t value) : value_(value) {} bool operator()(int64_t arg) const { return (arg % value_) == 0; } }; }