Append scalar data to existing storage.
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
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 },
346
347
350 [](const auto& vec) { return static_cast<uint64_t>(vec.size()); },
352 }
353 }
std::vector< DataDimension > & m_dimensions
@ Runtime
General runtime operations (default fallback)
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.