Get data for multiple region segments efficiently.
168{
170
171 if (spans.empty() || segments.empty())
172 return {};
173
174 auto const_spans = spans | std::views::transform([](const auto& span) {
175 return std::span<const double>(span.data(), span.size());
176 });
177
178 auto extracted_channels = extract_segments_data<double>(
179 segments,
180 std::vector<std::span<const double>>(const_spans.begin(), const_spans.end()),
182
183 return extracted_channels
184 | std::views::transform([](auto&& channel) {
185 return DataVariant(std::forward<
decltype(channel)>(channel));
186 })
187 | std::ranges::to<std::vector>();
188}
const std::vector< std::span< double > > & get_span_cache() const
Get the cached spans for each channel, recomputing if dirty.
ContainerDataStructure m_structure
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.
std::vector< DataDimension > dimensions
OrganizationStrategy organization