2#include <ossia/detail/string_view.hpp>
3#include <ossia/network/dataspace/dataspace_base_defs_fwd.hpp>
5#include <boost/mp11/list.hpp>
11struct matching_unit_u_list;
13using angle_u_list = boost::mp11::mp_list<degree_u, radian_u>;
15using 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
19using 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>;
23using gain_u_list = boost::mp11::mp_list<linear_u, midigain_u, decibel_u, decibel_raw_u>;
25using orientation_u_list = boost::mp11::mp_list<quaternion_u, euler_u, axis_u>;
27using 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>;
31using 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>;
35using 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,
39using 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>;
41using 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>;
46struct matching_unit_u_list<angle_u>
48 using type = angle_u_list;
51struct matching_unit_u_list<color_u>
53 using type = color_u_list;
56struct matching_unit_u_list<distance_u>
58 using type = distance_u_list;
61struct matching_unit_u_list<position_u>
63 using type = position_u_list;
66struct matching_unit_u_list<orientation_u>
68 using type = orientation_u_list;
71struct matching_unit_u_list<gain_u>
73 using type = gain_u_list;
76struct matching_unit_u_list<speed_u>
78 using type = speed_u_list;
81struct matching_unit_u_list<timing_u>
83 using type = timing_u_list;
87struct matching_unit_u_list<angle_u_list>
92struct matching_unit_u_list<color_u_list>
97struct matching_unit_u_list<distance_u_list>
99 using type = distance_u;
102struct matching_unit_u_list<position_u_list>
104 using type = position_u;
107struct matching_unit_u_list<orientation_u_list>
109 using type = orientation_u;
112struct matching_unit_u_list<gain_u_list>
117struct matching_unit_u_list<speed_u_list>
119 using type = speed_u;
122struct matching_unit_u_list<timing_u_list>
124 using type = timing_u;
128struct matching_unit_list;
130using angle_list = boost::mp11::mp_list<degree, radian>;
132using color_list = boost::mp11::mp_list<
133 argb, rgba, rgb, bgr, argb8, rgba8, hsv, cmy8, xyz
136using distance_list = boost::mp11::mp_list<
137 meter, kilometer, decimeter, centimeter, millimeter, micrometer, nanometer,
138 picometer, inch, foot, mile>;
140using gain_list = boost::mp11::mp_list<linear, midigain, decibel, decibel_raw>;
142using orientation_list = boost::mp11::mp_list<quaternion, euler, axis>;
144using position_list = boost::mp11::mp_list<
145 cartesian_3d, cartesian_2d, spherical, polar, aed, ad, opengl, cylindrical, azd>;
147using speed_list = boost::mp11::mp_list<
148 meter_per_second, miles_per_hour, kilometer_per_hour, knot, foot_per_second,
151using time_list = boost::mp11::mp_list<
152 second, bark, bpm, cent, frequency, mel, midi_pitch, millisecond, playback_speed>;
154using dataspace_list = boost::mp11::mp_list<
155 distance_list, position_list, speed_list, orientation_list, angle_list, color_list,
156 gain_list, time_list>;
158using strong_value_variant_list = boost::mp11::mp_list<
159 ossia::value, distance, position, speed, orientation, angle, color, gain,
163struct matching_unit_list<angle>
165 using type = angle_list;
168struct matching_unit_list<color>
170 using type = color_list;
173struct matching_unit_list<distance>
175 using type = distance_list;
178struct matching_unit_list<position>
180 using type = position_list;
183struct matching_unit_list<orientation>
185 using type = orientation_list;
188struct matching_unit_list<gain>
190 using type = gain_list;
193struct matching_unit_list<speed>
195 using type = speed_list;
198struct matching_unit_list<timing>
200 using type = time_list;
204struct matching_unit_list<angle_list>
209struct matching_unit_list<color_list>
214struct matching_unit_list<distance_list>
216 using type = distance;
219struct matching_unit_list<position_list>
221 using type = position;
224struct matching_unit_list<orientation_list>
226 using type = orientation;
229struct matching_unit_list<gain_list>
234struct matching_unit_list<speed_list>
239struct matching_unit_list<time_list>
245struct dataspace_traits<angle_u_list>
247 using neutral_unit = radian_u;
248 static constexpr auto text() { constexpr_return(ossia::make_string_array(
"angle")); }
252struct dataspace_traits<color_u_list>
254 using neutral_unit = argb_u;
255 static constexpr auto text() { constexpr_return(ossia::make_string_array(
"color")); }
259struct dataspace_traits<distance_u_list>
261 using neutral_unit = meter_u;
262 static constexpr auto text()
264 constexpr_return(ossia::make_string_array(
"distance"));
269struct dataspace_traits<gain_u_list>
271 using neutral_unit = linear_u;
272 static constexpr auto text() { constexpr_return(ossia::make_string_array(
"gain")); }
276struct dataspace_traits<orientation_u_list>
278 using neutral_unit = quaternion_u;
279 static constexpr auto text()
281 constexpr_return(ossia::make_string_array(
"orientation"));
285struct 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"));
295struct 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")); }
302struct 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