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

◆ create_scalar_view()

template<typename T >
requires std::is_arithmetic_v<T>
std::span< const T > MayaFlux::Kakshya::DataAccess::create_scalar_view ( ) const
private

Definition at line 326 of file DataAccess.hpp.

327{
328 return std::visit([this](auto& vec) -> std::span<const T> {
329 using StorageType = typename std::decay_t<decltype(vec)>::value_type;
330
331 if constexpr (std::is_same_v<StorageType, T>) {
332 return std::span<const T>(vec.data(), vec.size());
333 } else if constexpr (std::is_convertible_v<StorageType, T>) {
334 size_t required_bytes = vec.size() * sizeof(T);
335 void* cache_ptr = ensure_conversion_cache<T>(required_bytes);
336
337 T* cache_data = static_cast<T*>(cache_ptr);
338 std::ranges::transform(vec, cache_data,
339 [](auto val) { return static_cast<T>(val); });
340
341 return std::span<const T>(cache_data, vec.size());
342 } else {
343 error<std::invalid_argument>(
346 std::source_location::current(),
347 "Cannot convert storage type {} to requested type {}",
348 typeid(StorageType).name(),
349 typeid(T).name());
350 }
351 },
352 m_variant);
353}
@ Runtime
General runtime operations (default fallback)
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.

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