7 #include "../stdlib/algorithm.h" 15 template <
class ValType,
template <
class>
class... Modifiers>
22 ValType
set(
const ValType& value) {
27 ValType
set(
const ValType& value,
const Time&) {
33 template <
class ValType,
template <
class>
class T,
template <
class>
class... Modifiers>
36 ValueMod(T<ValType> modifier, Modifiers<ValType>... modifiers)
37 :
ValueMod<ValType, Modifiers...>(modifiers...), modifier(modifier) {}
40 auto new_val = modifier.process(value);
44 ValType
set(
const ValType& value) {
45 auto new_value = modifier.process(value);
50 ValType
set(
const ValType& value,
const Time& t) {
51 auto new_value = modifier.process(value, t);
61 template <
class ValType,
template <
class>
class... Modifiers>
64 Value(ValType val, Modifiers<ValType>... modifiers)
65 :
ValueMod<ValType, Modifiers...>(modifiers...)
70 void set(
const ValType& new_value) {
75 void set(
const ValType& new_value,
const Time& t) {
79 operator ValType()
const {
94 void reset(
const ValType& val) {
109 value = initial_value;
114 if (new_value > value)
115 value = std::min(new_value, value + acceleration);
117 value = std::max(new_value, value - decceleration);
122 T
process(
const T& new_value,
const S& step) {
123 if (new_value > value)
124 value = std::min(new_value, T(value + acceleration * step));
126 value = std::max(new_value, T(value - decceleration * step));
137 return process(initial_value);
143 if (new_value < bottom)
150 return process(new_value);
Value(ValType val, Modifiers< ValType >...modifiers)
Definition: value.h:64
ValType initial(const ValType &value)
Definition: value.h:39
T initial(T initial_value)
Definition: value.h:136
T top
Definition: value.h:134
ValueMod(T< ValType > modifier, Modifiers< ValType >...modifiers)
Definition: value.h:36
T process(const T &new_value)
Definition: value.h:113
T initial(T initial_value)
Definition: value.h:108
ValType initial(const ValType &v)
Definition: value.h:18
T process(const T &new_value, const S &)
Definition: value.h:149
T value
Definition: value.h:106
Value & operator=(const ValType &new_value)
Definition: value.h:89
T process(const T &new_value)
Definition: value.h:140
T process(const T &new_value, const S &step)
Definition: value.h:122
void reset(const ValType &val)
Definition: value.h:94
ValType set(const ValType &value)
Definition: value.h:22
T decceleration
Definition: value.h:105