13#ifndef ATHCONTAINERS_JAGGEDVECCONVERSIONS_H
14#define ATHCONTAINERS_JAGGEDVECCONVERSIONS_H
46template <
class PAYLOAD_T>
129 const Elt_t&
elt (
size_t elt_index)
const noexcept;
175 :
public std::ranges::view_base
190 friend void ::test_JaggedVecProxyValBase();
203 :
public std::ranges::view_base
214 friend void ::test_JaggedVecProxyRefBase();
247template <
class PAYLOAD_T,
class BASE>
465 template <
CxxUtils::InputRangeOverT<PAYLOAD_T> RANGE>
478 template <class VALLOC>
523 void erase (nonnull_iterator first, nonnull_iterator last);
575 void insert (nonnull_iterator pos, ITERATOR first, ITERATOR last);
593 template <
CxxUtils::InputRangeOverT<PAYLOAD_T> RANGE>
602 template <
CxxUtils::InputRangeOverT<PAYLOAD_T> RANGE>
610 template <
CxxUtils::InputRangeOverT<PAYLOAD_T> RANGE>
634 void assign (ITERATOR first, ITERATOR last);
641 template <
CxxUtils::InputRangeOverT<PAYLOAD_T> RANGE>
690template <class PAYLOAD_T>
Describe a range over an auxiliary variable, for low-overhead access.
Allow customizing how aux data types are treated.
Basic definitions for auxiliary types.
Manage lookup of vectors of auxiliary data.
Abstract interface for manipulating vectors of arbitrary types.
void test_JaggedVecProxyValBase()
void test_JaggedVecProxyRefBase()
Definition of JaggedVecElt.
Add to a range class conversions to containers.
Manage lookup of vectors of auxiliary data.
Describe one element of a jagged vector (base class).
uint32_t index_type
Type for the indices.
Describe one element of a jagged vector.
Auxiliary variable span wrapper (const).
Auxiliary variable span wrapper.
const JaggedVecEltBase * m_elts
const_Payload_span m_payload
JaggedVecConstConverter(const JaggedVecEltBase *elts, const_Payload_span payload)
Constructor.
const element_type operator()(const JaggedVecEltBase &elt) const
Convert to a span.
detail::AuxDataConstSpan< Payload_t > const_Payload_span
CxxUtils::range_with_conv< typename AuxDataTraits< Payload_t >::const_span > element_type
JaggedVecConverter(AuxVectorData &container, auxid_t auxid, auxid_t linked_auxid)
Constructor.
JaggedVecProxyBase m_base
JVecProxyInSpan value_type
CxxUtils::range_with_conv< typename AuxDataTraits< Payload_t >::const_span > element_type
JaggedVecProxyT< Payload_t, JaggedVecProxyRefBase > JVecProxyInSpan
detail::AuxDataSpan< Payload_t > Payload_span
Base class for jagged vector proxies.
typename Elt_t::index_type index_type
Type used for indexing into a jagged vector.
std::span< Elt_t > Elt_span
A span of elements.
SG::JaggedVecEltBase Elt_t
Type of a jagged vector element.
JaggedVecProxyBase(const AuxDataSpanBase &elts, AuxVectorData &container, SG::auxid_t auxid)
Constructor.
const Elt_t & elt(size_t elt_index) const noexcept
Return one jagged vector element (const).
Elt_t & elt(size_t elt_index) noexcept
Return one jagged vector element (non-const).
void adjust1(size_t elt_index, index_type index, int n_add)
Add or remove payload items from one jagged vector element.
std::variant< IAuxTypeVector *, SG::auxid_t > m_linkedVec
Elt_span m_elts
The elements of the jagged vector.
void resize1(size_t elt_index, index_type n_new)
Resize one jagged vector element.
AuxVectorData & m_container
The container holding the variable.
JaggedVecProxyBase & m_base
The proxy base information.
JaggedVecProxyRefBase(JaggedVecProxyBase &base)
Constructor.
Proxy for jagged vectors.
void append_range(const RANGE &range)
detail::AuxDataSpan< Payload_t > Payload_span
JaggedVecProxyT(size_t elt_index, Payload_span payload, JaggedVecProxyBase &base)
Constructor.
size_t elt_begin() const noexcept
const_pointer const_iterator
const element_type * const_pointer
std::reverse_iterator< const_iterator > const_reverse_iterator
void assign_range(const RANGE &range)
void resize(size_t n, const Payload_t &x=Payload_t())
const_iterator cbegin() const noexcept
void insert_range(nonnull_iterator pos, const RANGE &range)
std::ptrdiff_t difference_type
reference front() noexcept
const_reverse_iterator crend() const noexcept
const_iterator cend() const noexcept
JaggedVecProxyBase::Elt_t Elt_t
iterator begin() noexcept
std::remove_cv_t< element_type > value_type
size_t size() const noexcept
Return the size of this jagged vector element.
void insert(nonnull_iterator pos, const Payload_t &x)
void assign(size_t n, const Payload_t &x)
size_t elt_end() const noexcept
reverse_iterator rbegin() noexcept
const element_type & const_reference
JaggedVecProxyT(size_t elt_index, Payload_span payload, const AuxDataSpanBase &elts, AuxVectorData &container, SG::auxid_t auxid)
Constructor.
reverse_iterator rend() noexcept
void erase(nonnull_iterator pos)
typename Elt_t::index_type index_type
const_reverse_iterator crbegin() const noexcept
std::vector< Payload_t > asVector() const
bool empty() const noexcept
JaggedVecProxyBase::Elt_span Elt_span
void push_back(const Payload_t &x)
std::reverse_iterator< iterator > reverse_iterator
reference back() noexcept
JaggedVecProxyBase m_base
The proxy base information.
JaggedVecProxyValBase(const AuxDataSpanBase &elts, AuxVectorData &container, SG::auxid_t auxid)
Constructor.
size_t auxid_t
Identifier for a particular aux data item.
Add to a range class conversions to containers.
Minimal span-like object describing the range of an auxiliary variable.
nonnull_iterator(iterator it)
nonnull_iterator(int)=delete
nonnull_iterator(std::nullptr_t)=delete