11 template <
typename Domain>
12 struct value_set_clamp
18 const auto& values = domain.values;
19 if(b == bounding_mode::FREE || values.empty())
21 return std::forward<U>(val);
25 auto it = ossia::find(values, val);
31 struct value_set_get_visitor
34 std::vector<ossia::value> operator()(
const ossia::domain_base<T>& dom)
36 return std::vector<ossia::value>(dom.values.begin(), dom.values.end());
39 std::vector<ossia::value> operator()(
const ossia::domain_base<bool>&)
44 std::vector<ossia::value> operator()(
const ossia::domain_base<ossia::impulse>& dom)
46 return std::vector<ossia::value>{};
49 std::vector<ossia::value> operator()(
const ossia::vector_domain& dom)
51 std::vector<ossia::value> v(dom.values.size());
52 for(std::size_t i = 0; i < dom.values.size(); i++)
54 v[i] = std::vector<ossia::value>(dom.values[i].begin(), dom.values[i].end());
59 template <std::
size_t N>
60 std::vector<ossia::value> operator()(
const ossia::vecf_domain<N>& dom)
62 std::vector<ossia::value> v(N);
63 for(std::size_t i = 0; i < N; i++)
65 v[i] = std::vector<ossia::value>(dom.values[i].begin(), dom.values[i].end());
71 struct value_set_update_visitor
73 const std::vector<ossia::value>& values;
75 void operator()(ossia::domain_base<T>& dom)
78 dom.values.reserve(values.size());
79 for(
auto& value : values)
81 if(
auto r = value.target<T>())
82 dom.values.push_back(*r);
86 void operator()(ossia::vector_domain& dom)
88 for(
auto& set : dom.values)
91 for(
auto& value : values)
93 dom.values[0].insert(value);
98 void operator()(ossia::domain_base<ossia::value>& dom)
101 for(
auto& value : values)
103 dom.values.push_back(value);
107 template <std::
size_t N>
108 void operator()(ossia::vecf_domain<N>& dom)
110 for(std::size_t i = 0; i < N; i++)
111 dom.values[i].clear();
113 for(
auto& value : values)
115 if(
auto r = value.target<
float>())
117 for(std::size_t i = 0; i < N; i++)
119 dom.values[i].insert(*r);
125 void operator()(ossia::domain_base<impulse>&) { }
127 void operator()(ossia::domain_base<bool>&) { }
The value class.
Definition: value.hpp:173
bounding_mode
Address behaviors at crossing domain boundaries.
Definition: parameter_properties.hpp:56