#pragma once #include #include #include #include namespace jvalidate::constraint { struct MaximumConstraint { double value; bool exclusive; bool operator()(double arg) const { return exclusive ? arg < value : arg <= value; } }; struct MinimumConstraint { double value; bool exclusive; bool operator()(double arg) const { return exclusive ? arg > value : arg >= value; } }; struct MultipleOfConstraint { double value; bool operator()(double arg) const { if (std::fabs(std::remainder(arg, value)) <= std::numeric_limits::epsilon()) { return true; } double const div = arg / value; return std::isfinite(div) && detail::is_json_integer(div); } }; }