9#include <boost/python/class.hpp>
10#include <boost/python/copy_const_reference.hpp>
11#include <boost/python/default_call_policies.hpp>
12#include <boost/python/make_constructor.hpp>
13#include <boost/python/overloads.hpp>
29 validator->setLower(extract<T>(
lower));
32 validator->setUpper(extract<T>(
upper));
46 const bool exclusive =
false) {
48 if (
lower.ptr() != Py_None) {
49 validator->setLower(extract<T>(
lower));
50 validator->setLowerExclusive(exclusive);
52 if (
upper.ptr() != Py_None) {
53 validator->setUpper(extract<T>(
upper));
54 validator->setUpperExclusive(exclusive);
60#define EXPORT_BOUNDEDVALIDATOR(ElementType, prefix) \
61 class_<BoundedValidator<ElementType>, bases<IValidator>, boost::noncopyable>(#prefix "BoundedValidator") \
62 .def("__init__", make_constructor(&createBoundedValidator<ElementType>, default_call_policies(), \
63 (arg("lower") = object(), arg("upper") = object()))) \
64 .def("__init__", make_constructor(&createExclusiveBoundedValidator<ElementType>, default_call_policies(), \
65 (arg("lower") = object(), arg("upper") = object(), arg("exclusive") = false))) \
66 .def("setLower", &BoundedValidator<ElementType>::setLower, (arg("self"), arg("lower")), "Set the lower bound") \
67 .def("setUpper", &BoundedValidator<ElementType>::setUpper, (arg("self"), arg("upper")), "Set the upper bound") \
68 .def("setLowerExclusive", &BoundedValidator<ElementType>::setLowerExclusive, (arg("self"), arg("exclusive")), \
69 "Sets if the lower bound is exclusive") \
70 .def("setUpperExclusive", &BoundedValidator<ElementType>::setUpperExclusive, (arg("self"), arg("exclusive")), \
71 "Sets if the upper bound is exclsuive") \
72 .def("setExclusive", &BoundedValidator<ElementType>::setExclusive, (arg("self"), arg("exclusive")), \
73 "Sets both bounds to be inclusive/exclusive") \
74 .def("lower", &BoundedValidator<ElementType>::lower, arg("self"), return_value_policy<copy_const_reference>(), \
75 "Returns the lower bound") \
76 .def("upper", &BoundedValidator<ElementType>::upper, arg("self"), return_value_policy<copy_const_reference>(), \
77 "Returns the upper bound") \
78 .def("setBounds", &BoundedValidator<ElementType>::setBounds, (arg("self"), arg("lower"), arg("upper")), \
80 .def("hasLower", &BoundedValidator<ElementType>::hasLower, arg("self"), \
81 "Returns True if a lower bound has been set") \
82 .def("hasUpper", &BoundedValidator<ElementType>::hasUpper, arg("self"), \
83 "Returns True if an upper bound has been set") \
84 .def("isLowerExclusive", &BoundedValidator<ElementType>::isLowerExclusive, arg("self"), \
85 "Returns True if the lower bound is exclusive") \
86 .def("isUpperExclusive", &BoundedValidator<ElementType>::isUpperExclusive, arg("self"), \
87 "Returns True if the upper bound is exclusive");
void export_BoundedValidator()
#define EXPORT_BOUNDEDVALIDATOR(ElementType, prefix)
A macro for generating exports for each type.
double lower
lower and upper bounds on the multiplier, if known
BoundedValidator is a validator that requires the values to be between upper or lower bounds,...
IValidator is the basic interface for all validators for properties.
bool isNone(const PyObject *ptr)