21 boost::arithmetic<UnitInterval>,
22 boost::arithmetic<UnitInterval, double>,
23 boost::totally_ordered<UnitInterval>
26 constexpr UnitInterval() : UnitInterval(0.0) {}
27 constexpr explicit UnitInterval(
double v) : m_value(clamp(v)) {}
28 UnitInterval(
const UnitInterval&) =
default;
29 UnitInterval& operator=(
const UnitInterval&) =
default;
32 UnitInterval& operator+=(
const UnitInterval&);
33 UnitInterval& operator-=(
const UnitInterval&);
34 UnitInterval& operator*=(
const UnitInterval&);
35 UnitInterval& operator/=(
const UnitInterval&);
37 UnitInterval& operator+=(
double);
38 UnitInterval& operator-=(
double);
39 UnitInterval& operator*=(
double);
40 UnitInterval& operator/=(
double);
43 bool operator<(
const UnitInterval& other)
const;
44 bool operator==(
const UnitInterval& other)
const;
46 double value()
const {
return m_value; }
47 UnitInterval complement()
const;
50 constexpr static double clamp(
double v)
52 return (v > 1.0 ? 1.0 : (v < 0.0 ? 0.0 : v));
54 UnitInterval& clamp();