Append scalar data to existing storage.
305 {
306 std::visit([&](auto& existing_vec) {
307 using ExistingType = typename std::decay_t<decltype(existing_vec)>::value_type;
308
309 if constexpr (std::is_same_v<ExistingType, T>) {
310 existing_vec.insert(existing_vec.end(),
311 new_data.begin(),
312 new_data.end());
313 } else if constexpr (std::is_arithmetic_v<ExistingType> && std::is_arithmetic_v<T>) {
314 for (const auto& val : new_data) {
315 existing_vec.push_back(static_cast<ExistingType>(val));
316 }
317 } else {
318 error<std::invalid_argument>(
321 std::source_location::current(),
322 "Cannot append: incompatible types in variant (existing: {}, new: {})",
323 typeid(ExistingType).name(),
324 typeid(T).name());
325 }
326 },
328
331 [](const auto& vec) { return static_cast<uint64_t>(vec.size()); },
333 }
334 }
std::vector< DataDimension > & m_dimensions
@ Runtime
General runtime operations (default fallback)
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.