| 123456789101112131415161718192021222324252627282930313233343536 |
- #pragma once
- #include <cmath>
- #include <limits>
- #include <jvalidate/detail/number.h>
- #include <jvalidate/forward.h>
- 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<double>::epsilon()) {
- return true;
- }
- double const div = arg / value;
- return std::isfinite(div) && detail::is_json_integer(div);
- }
- };
- }
|