MayaFlux 0.3.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ extract_structured_double()

template<OperationReadyData T>
static std::tuple< std::vector< std::span< double > >, DataStructureInfo > MayaFlux::Yantra::OperationHelper::extract_structured_double ( T &  compute_data)
inlinestatic

Extract structured double data from Datum container or direct ComputeData with automatic container handling.

Template Parameters
TOperationReadyData type
Parameters
compute_dataor Datum container with data and optional container
Returns
Tuple of [spans, structure_info]
Exceptions
std::runtime_errorif container required but not provided

Definition at line 215 of file OperationHelper.hpp.

216 {
217 if constexpr (is_IO<T>::value) {
218 DataStructureInfo info {};
219 info.original_type = std::type_index(typeid(std::decay_t<decltype(compute_data.data)>));
220 info.dimensions = compute_data.dimensions;
221 info.modality = compute_data.modality;
222
223 if constexpr (RequiresContainer<std::decay_t<decltype(compute_data.data)>>) {
224 if (!compute_data.has_container()) {
225 throw std::runtime_error("Container is required for region-like data extraction but not provided");
226 }
227 std::vector<std::span<double>> double_data = extract_numeric_data(compute_data.data, compute_data.container.value());
228 return std::make_tuple(double_data, info);
229 } else {
230 std::vector<std::span<double>> double_data = extract_numeric_data(compute_data.data, compute_data.needs_processig());
231 return std::make_tuple(double_data, info);
232 }
233 } else {
234 DataStructureInfo info {};
235 info.original_type = std::type_index(typeid(T));
236 std::vector<std::span<double>> double_data = extract_numeric_data(compute_data);
237 auto [dimensions, modality] = infer_structure(compute_data);
238 info.dimensions = dimensions;
239 info.modality = modality;
240
241 return std::make_tuple(double_data, info);
242 }
243 }
static std::span< double > extract_numeric_data(const T &compute_data)
extract numeric data from single-variant types
static std::pair< std::vector< Kakshya::DataDimension >, Kakshya::DataModality > infer_structure(const T &data, const std::shared_ptr< Kakshya::SignalSourceContainer > &container=nullptr)
Infer dimensions and modality from any ComputeData type.

References extract_numeric_data(), MayaFlux::Yantra::infer_structure(), and MayaFlux::Yantra::DataStructureInfo::original_type.

Referenced by setup_operation_buffer(), MayaFlux::Yantra::transform_by_energy(), MayaFlux::Yantra::transform_channel_operation(), MayaFlux::Yantra::transform_crossfade_regions(), MayaFlux::Yantra::transform_matrix(), MayaFlux::Yantra::transform_matrix_multichannel(), MayaFlux::Yantra::transform_outliers(), and MayaFlux::Yantra::transform_regions().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: