25#ifndef ATHCONTAINERS_ATOMICCONSTACCESSOR_H
26#define ATHCONTAINERS_ATOMICCONSTACCESSOR_H
42template <
class T,
class ALLOC = AuxAllocator_t<T> >
60 static_assert (std::is_same<T, typename Base::element_type>::value,
61 "Bad type for AtomicConstAccessor");
62 static_assert (std::is_same<const T&, typename Base::const_reference_type>::value,
63 "Bad type for AtomicConstAccessor");
65 static_assert (std::is_same<const T*, typename Base::const_container_pointer_type>::value,
66 "Bad type for AtomicConstAccessor");
67 static_assert (
sizeof(T) ==
sizeof(std::atomic<T>),
68 "Bad type for AtomicConstAccessor");
69 static_assert (std::atomic<T>::is_always_lock_free,
70 "Bad type for AtomicConstAccessor");
107 template <IsConstAuxElement ELT>
Allow customizing how aux data types are treated.
Base class for elements of a container that can have aux data.
Helper class to provide constant type-safe access to aux data.
const_container_pointer_type getDataArray(const AuxVectorData &container) const
Get a pointer to the start of the auxiliary data array.
AtomicConstAccessor(const std::string &name)
Constructor.
AtomicConstAccessor(const SG::auxid_t auxid)
Constructor taking an auxid directly.
T operator()(const ELT &e) const
Fetch the variable for one element, as a const reference.
const std::atomic< T > * const_container_pointer_type
Pointer into the container holding this item.
ConstAccessor< T, ALLOC > Base
Base class.
typename AuxDataTraits< T, ALLOC >::element_type element_type
Type the user sees.
AtomicConstAccessor(const std::string &name, const std::string &clsname)
Constructor.
const std::atomic< T > & const_reference_type
Type referencing an item.
T element_type
The type the user sees.
Manage lookup of vectors of auxiliary data.
ConstAccessor(const std::string &name)
Constructor.
SG::auxid_t auxid() const
Return the aux id for this variable.
size_t auxid_t
Identifier for a particular aux data item.