Return a value clamped to a given range using a given type
clamp_t(type, val, min, max);
type
the type of variable to use
val
current value
min
minimum allowable value
max
maximum allowable value
This macro does no typechecking and uses temporary variables of type 'type' to make all the comparisons.