Reconstruct DataVariant from double data and structure info.
55{
56 if (structure_info.original_type == std::type_index(typeid(std::vector<double>))) {
58 }
59
60 if (structure_info.original_type == std::type_index(typeid(std::vector<float>))) {
61 std::vector<float> float_data;
62 float_data.reserve(double_data.size());
63 std::ranges::transform(double_data, std::back_inserter(float_data),
64 [](double val) { return static_cast<float>(val); });
66 }
67
68 if (structure_info.original_type == std::type_index(typeid(std::vector<uint16_t>))) {
69 std::vector<uint16_t> uint16_data;
70 uint16_data.reserve(double_data.size());
71 std::ranges::transform(double_data, std::back_inserter(uint16_data),
72 [](double val) { return static_cast<uint16_t>(std::clamp(val, 0.0, 65535.0)); });
74 }
75 if (structure_info.original_type == std::type_index(typeid(std::vector<uint8_t>))) {
76 std::vector<uint8_t> uint8_data;
77 uint8_data.reserve(double_data.size());
78 std::ranges::transform(double_data, std::back_inserter(uint8_data),
79 [](double val) { return static_cast<uint8_t>(std::clamp(val, 0.0, 255.0)); });
81 }
82
84}
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.