823{
824 if (frame_index >=
m_data.size()) {
825 return { std::span<const uint8_t> {} };
826 }
827
831 out = std::visit(
833 using T =
typename std::decay_t<
decltype(vec)>::value_type;
834 if constexpr (std::is_same_v<T, uint8_t> || std::is_same_v<T, uint16_t> || std::is_same_v<T, float>) {
835 const size_t nn = std::min(layer_elems, vec.size());
837 } else {
838 return { std::span<const uint8_t> {} };
839 }
840 },
842 });
843 return out;
844}
Memory::SeqlockArray m_slot_locks
std::vector< DataVariant > m_data
typename detail::span_const_from_vector_variant< DataVariant >::type DataSpanVariant
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.