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

◆ safe_copy_data_variant()

void MayaFlux::Kakshya::safe_copy_data_variant ( const DataVariant input,
DataVariant output 
)

Safely copy data from a DataVariant to another DataVariant, handling type conversion.

Parameters
inputSource DataVariant.
outputDestination DataVariant.

Definition at line 34 of file DataUtils.cpp.

35{
36 std::visit([&](const auto& input_vec, auto& output_vec) {
37 using InputType = typename std::decay_t<decltype(input_vec)>::value_type;
38 using OutputType = typename std::decay_t<decltype(output_vec)>::value_type;
39
40 if constexpr (ProcessableData<InputType> && ProcessableData<OutputType>) {
41 std::vector<OutputType> temp_storage;
42 auto input_span = extract_from_variant<OutputType>(input, temp_storage);
43
44 output_vec.resize(input_span.size());
45 std::copy(input_span.begin(), input_span.end(), output_vec.begin());
46 } else {
47 error<std::invalid_argument>(
48 Journal::Component::Kakshya,
49 Journal::Context::Runtime,
50 std::source_location::current(),
51 "Unsupported type conversion from {} to {}",
52 typeid(InputType).name(),
53 typeid(OutputType).name());
54 }
55 },
56 input, output);
57}

References MayaFlux::Journal::Kakshya, and MayaFlux::Journal::Runtime.

Referenced by MayaFlux::Kakshya::ContiguousAccessProcessor::process(), MayaFlux::Kakshya::RegionOrganizationProcessor::process_region_segment(), and MayaFlux::Kakshya::DynamicSoundStream::set_all_data().

+ Here is the caller graph for this function: