2 #include <ossia/detail/string_view.hpp>
3 #include <ossia/network/dataspace/dataspace_base_defs_fwd.hpp>
5 #include <boost/mp11/list.hpp>
11 struct matching_unit_u_list;
13 using angle_u_list = boost::mp11::mp_list<degree_u, radian_u>;
15 using color_u_list = boost::mp11::mp_list<
16 argb_u, rgba_u, rgb_u, bgr_u, argb8_u, rgba8_u, hsv_u, cmy8_u, xyz_u
19 using distance_u_list = boost::mp11::mp_list<
20 meter_u, kilometer_u, decimeter_u, centimeter_u, millimeter_u, micrometer_u,
21 nanometer_u, picometer_u, inch_u, foot_u, mile_u>;
23 using gain_u_list = boost::mp11::mp_list<linear_u, midigain_u, decibel_u, decibel_raw_u>;
25 using orientation_u_list = boost::mp11::mp_list<quaternion_u, euler_u, axis_u>;
27 using position_u_list = boost::mp11::mp_list<
28 cartesian_3d_u, cartesian_2d_u, spherical_u, polar_u, aed_u, ad_u, opengl_u,
29 cylindrical_u, azd_u>;
31 using speed_u_list = boost::mp11::mp_list<
32 meter_per_second_u, miles_per_hour_u, kilometer_per_hour_u, knot_u,
33 foot_per_second_u, foot_per_hour_u>;
35 using timing_u_list = boost::mp11::mp_list<
36 second_u, bark_u, bpm_u, cent_u, frequency_u, mel_u, midi_pitch_u, millisecond_u,
39 using dataspace_variant_u_list = boost::mp11::mp_list<
40 distance_u, position_u, speed_u, orientation_u, angle_u, color_u, gain_u, timing_u>;
41 using dataspace_u_list = boost::mp11::mp_list<
42 distance_u_list, position_u_list, speed_u_list, orientation_u_list, angle_u_list,
43 color_u_list, gain_u_list, timing_u_list>;
46 struct matching_unit_u_list<angle_u>
48 using type = angle_u_list;
51 struct matching_unit_u_list<color_u>
53 using type = color_u_list;
56 struct matching_unit_u_list<distance_u>
58 using type = distance_u_list;
61 struct matching_unit_u_list<position_u>
63 using type = position_u_list;
66 struct matching_unit_u_list<orientation_u>
68 using type = orientation_u_list;
71 struct matching_unit_u_list<gain_u>
73 using type = gain_u_list;
76 struct matching_unit_u_list<speed_u>
78 using type = speed_u_list;
81 struct matching_unit_u_list<timing_u>
83 using type = timing_u_list;
87 struct matching_unit_u_list<angle_u_list>
92 struct matching_unit_u_list<color_u_list>
97 struct matching_unit_u_list<distance_u_list>
99 using type = distance_u;
102 struct matching_unit_u_list<position_u_list>
104 using type = position_u;
107 struct matching_unit_u_list<orientation_u_list>
109 using type = orientation_u;
112 struct matching_unit_u_list<gain_u_list>
117 struct matching_unit_u_list<speed_u_list>
119 using type = speed_u;
122 struct matching_unit_u_list<timing_u_list>
124 using type = timing_u;
127 template <
typename T>
128 struct matching_unit_list;
130 using angle_list = boost::mp11::mp_list<degree, radian>;
132 using color_list = boost::mp11::mp_list<
133 argb, rgba, rgb, bgr, argb8, rgba8, hsv, cmy8, xyz
136 using distance_list = boost::mp11::mp_list<
137 meter, kilometer, decimeter, centimeter, millimeter, micrometer, nanometer,
138 picometer, inch, foot, mile>;
140 using gain_list = boost::mp11::mp_list<linear, midigain, decibel, decibel_raw>;
142 using orientation_list = boost::mp11::mp_list<quaternion, euler, axis>;
144 using position_list = boost::mp11::mp_list<
145 cartesian_3d, cartesian_2d, spherical, polar, aed, ad, opengl, cylindrical, azd>;
147 using speed_list = boost::mp11::mp_list<
148 meter_per_second, miles_per_hour, kilometer_per_hour, knot, foot_per_second,
151 using time_list = boost::mp11::mp_list<
152 second, bark, bpm, cent, frequency, mel, midi_pitch, millisecond, playback_speed>;
154 using dataspace_list = boost::mp11::mp_list<
155 distance_list, position_list, speed_list, orientation_list, angle_list, color_list,
156 gain_list, time_list>;
158 using strong_value_variant_list = boost::mp11::mp_list<
159 ossia::value, distance, position, speed, orientation, angle, color, gain,
163 struct matching_unit_list<angle>
165 using type = angle_list;
168 struct matching_unit_list<color>
170 using type = color_list;
173 struct matching_unit_list<distance>
175 using type = distance_list;
178 struct matching_unit_list<position>
180 using type = position_list;
183 struct matching_unit_list<orientation>
185 using type = orientation_list;
188 struct matching_unit_list<gain>
190 using type = gain_list;
193 struct matching_unit_list<speed>
195 using type = speed_list;
198 struct matching_unit_list<timing>
200 using type = time_list;
204 struct matching_unit_list<angle_list>
209 struct matching_unit_list<color_list>
214 struct matching_unit_list<distance_list>
216 using type = distance;
219 struct matching_unit_list<position_list>
221 using type = position;
224 struct matching_unit_list<orientation_list>
226 using type = orientation;
229 struct matching_unit_list<gain_list>
234 struct matching_unit_list<speed_list>
239 struct matching_unit_list<time_list>
245 struct dataspace_traits<angle_u_list>
247 using neutral_unit = radian_u;
248 static constexpr
auto text() { constexpr_return(ossia::make_string_array(
"angle")); }
252 struct dataspace_traits<color_u_list>
254 using neutral_unit = argb_u;
255 static constexpr
auto text() { constexpr_return(ossia::make_string_array(
"color")); }
259 struct dataspace_traits<distance_u_list>
261 using neutral_unit = meter_u;
262 static constexpr
auto text()
264 constexpr_return(ossia::make_string_array(
"distance"));
269 struct dataspace_traits<gain_u_list>
271 using neutral_unit = linear_u;
272 static constexpr
auto text() { constexpr_return(ossia::make_string_array(
"gain")); }
276 struct dataspace_traits<orientation_u_list>
278 using neutral_unit = quaternion_u;
279 static constexpr
auto text()
281 constexpr_return(ossia::make_string_array(
"orientation"));
285 struct dataspace_traits<position_u_list>
287 using neutral_unit = cartesian_3d_u;
288 static constexpr
auto text()
290 constexpr_return(ossia::make_string_array(
"position"));
295 struct dataspace_traits<speed_u_list>
297 using neutral_unit = meter_per_second_u;
298 static constexpr
auto text() { constexpr_return(ossia::make_string_array(
"speed")); }
302 struct dataspace_traits<timing_u_list>
304 using neutral_unit = second_u;
305 static constexpr
auto text() { constexpr_return(ossia::make_string_array(
"time")); }
The value class.
Definition: value.hpp:173