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

◆ append_to_existing()

template<typename T >
void MayaFlux::Kakshya::DataInsertion::append_to_existing ( std::vector< T >  new_data)
inlineprivate

Append scalar data to existing storage.

Definition at line 321 of file DataInsertion.hpp.

322 {
323 std::visit([&](auto& existing_vec) {
324 using ExistingType = typename std::decay_t<decltype(existing_vec)>::value_type;
325
326 if constexpr (std::is_same_v<ExistingType, T>) {
327 existing_vec.insert(existing_vec.end(),
328 new_data.begin(),
329 new_data.end());
330 } else if constexpr (std::is_arithmetic_v<ExistingType> && std::is_arithmetic_v<T>) {
331 // Convert and append
332 for (const auto& val : new_data) {
333 existing_vec.push_back(static_cast<ExistingType>(val));
334 }
335 } else {
336 error<std::invalid_argument>(
339 std::source_location::current(),
340 "Cannot append: incompatible types in variant (existing: {}, new: {})",
341 typeid(ExistingType).name(),
342 typeid(T).name());
343 }
344 },
345 m_variant);
346
347 // Update dimension size
348 if (!m_dimensions.empty()) {
349 m_dimensions[0].size = std::visit(
350 [](const auto& vec) { return static_cast<uint64_t>(vec.size()); },
351 m_variant);
352 }
353 }
std::vector< DataDimension > & m_dimensions
@ Runtime
General runtime operations (default fallback)
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.