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

◆ get_value_impl()

void MayaFlux::Kakshya::PlotContainer::get_value_impl ( const std::vector< uint64_t > &  coords,
void *  out,
const std::type_info &  type 
) const
overrideprotectedvirtual

Type-erased single-element read.

Implementations copy the native element at coords into out if type matches their native type, otherwise no-op. out points to a caller-owned buffer of exactly sizeof(native type) bytes.

Implements MayaFlux::Kakshya::NDDataContainer< DataVariant >.

Definition at line 543 of file PlotContainer.cpp.

547{
548 if (type != typeid(double) || coords.size() < 2 || coords[0] >= m_data.size())
549 return;
550
551 const auto idx = static_cast<size_t>(coords[0]);
552
553 seqlock_read_void(m_series_locks[idx], 8, [&] {
554 const auto* vec = std::get_if<std::vector<double>>(&m_data[idx]);
555 if (!vec || coords[1] >= vec->size())
556 return;
557 *static_cast<double*>(out) = (*vec)[coords[1]];
558 });
559}
std::vector< float > * out
std::vector< glm::ivec3 > coords
Definition VDBWriter.cpp:25
vk::PhysicalDeviceType type
Definition VKDevice.cpp:126
std::vector< DataVariant > m_data
Memory::SeqlockArray m_series_locks
bool seqlock_read_void(const Seqlock &lock, uint32_t max_attempts, Fn &&fn)
Invoke a void read functor under a Seqlock with a bounded retry count.
Definition SeqLock.hpp:268

References coords, m_data, m_series_locks, out, and type.