ATLAS Offline Software
Loading...
Searching...
No Matches
SG::AtomicConstAccessor< T, ALLOC > Class Template Reference

Access an auxiliary variable atomically. More...

#include <AtomicConstAccessor.h>

Inheritance diagram for SG::AtomicConstAccessor< T, ALLOC >:
Collaboration diagram for SG::AtomicConstAccessor< T, ALLOC >:

Public Types

using Base = ConstAccessor<T, ALLOC>
 Base class.
using const_reference_type = const std::atomic<T>&
 Type referencing an item.
using element_type = typename AuxDataTraits<T, ALLOC>::element_type
 Type the user sees.
using const_container_pointer_type = const std::atomic<T>*
 Pointer into the container holding this item.
using const_span = typename AuxDataTraits<T, ALLOC>::const_span
 A span over elements in the container.

Public Member Functions

 AtomicConstAccessor (const std::string &name)
 Constructor.
 AtomicConstAccessor (const std::string &name, const std::string &clsname)
 Constructor.
 AtomicConstAccessor (const SG::auxid_t auxid)
 Constructor taking an auxid directly.
template<IsConstAuxElement ELT>
operator() (const ELT &e) const
 Fetch the variable for one element, as a const reference.
operator() (const AuxVectorData &container, size_t index) const
 Fetch the variable for one element, as a const reference.
const_container_pointer_type getDataArray (const AuxVectorData &container) const
 Get a pointer to the start of the auxiliary data array.
template<IsConstAuxElement ELT>
const_reference_type withDefault (const ELT &e, const T &deflt) const
 Fetch the variable for one element, as a const reference, with a default.
const_reference_type withDefault (const AuxVectorData &container, size_t index, const T &deflt) const
 Fetch the variable for one element, as a const reference.
const_span getDataSpan (const AuxVectorData &container) const
 Get a span over the auxilary data array.
template<IsConstAuxElement ELT>
bool isAvailable (const ELT &e) const
 Test to see if this variable exists in the store.
bool isAvailable (const AuxVectorData &c) const
 Test to see if this variable exists in the store.
SG::auxid_t auxid () const
 Return the aux id for this variable.

Protected Attributes

SG::auxid_t m_auxid
 The cached auxid.

Detailed Description

template<class T, class ALLOC = AuxAllocator_t<T>>
class SG::AtomicConstAccessor< T, ALLOC >

Access an auxiliary variable atomically.

Definition at line 43 of file AtomicConstAccessor.h.

Member Typedef Documentation

◆ Base

template<class T, class ALLOC = AuxAllocator_t<T>>
using SG::AtomicConstAccessor< T, ALLOC >::Base = ConstAccessor<T, ALLOC>

Base class.

Definition at line 48 of file AtomicConstAccessor.h.

◆ const_container_pointer_type

template<class T, class ALLOC = AuxAllocator_t<T>>
using SG::AtomicConstAccessor< T, ALLOC >::const_container_pointer_type = const std::atomic<T>*

Pointer into the container holding this item.

Definition at line 57 of file AtomicConstAccessor.h.

◆ const_reference_type

template<class T, class ALLOC = AuxAllocator_t<T>>
using SG::AtomicConstAccessor< T, ALLOC >::const_reference_type = const std::atomic<T>&

Type referencing an item.

Definition at line 51 of file AtomicConstAccessor.h.

◆ const_span

template<class T, class ALLOC = AuxAllocator_t<T>>
using SG::ConstAccessor< T, ALLOC >::const_span = typename AuxDataTraits<T, ALLOC>::const_span
inherited

A span over elements in the container.

Definition at line 69 of file ConstAccessor.h.

◆ element_type

template<class T, class ALLOC = AuxAllocator_t<T>>
using SG::AtomicConstAccessor< T, ALLOC >::element_type = typename AuxDataTraits<T, ALLOC>::element_type

Type the user sees.

Definition at line 54 of file AtomicConstAccessor.h.

Constructor & Destructor Documentation

◆ AtomicConstAccessor() [1/3]

template<class T, class ALLOC = AuxAllocator_t<T>>
SG::AtomicConstAccessor< T, ALLOC >::AtomicConstAccessor ( const std::string & name)

Constructor.

Parameters
nameName of this aux variable.

The name -> auxid lookup is done here.

◆ AtomicConstAccessor() [2/3]

template<class T, class ALLOC = AuxAllocator_t<T>>
SG::AtomicConstAccessor< T, ALLOC >::AtomicConstAccessor ( const std::string & name,
const std::string & clsname )

Constructor.

Parameters
nameName of this aux variable.
clsnameThe name of its associated class. May be blank.

The name -> auxid lookup is done here.

◆ AtomicConstAccessor() [3/3]

template<class T, class ALLOC = AuxAllocator_t<T>>
SG::AtomicConstAccessor< T, ALLOC >::AtomicConstAccessor ( const SG::auxid_t auxid)

Constructor taking an auxid directly.

Parameters
auxidID for this auxiliary variable.

Will throw SG::ExcAuxTypeMismatch if the types don't match.

Member Function Documentation

◆ auxid()

template<class T, class ALLOC = AuxAllocator_t<T>>
SG::auxid_t SG::ConstAccessor< T, ALLOC >::auxid ( ) const
inherited

Return the aux id for this variable.

◆ getDataArray()

template<class T, class ALLOC = AuxAllocator_t<T>>
const_container_pointer_type SG::AtomicConstAccessor< T, ALLOC >::getDataArray ( const AuxVectorData & container) const

Get a pointer to the start of the auxiliary data array.

Parameters
containerThe container from which to fetch the variable.

◆ getDataSpan()

template<class T, class ALLOC = AuxAllocator_t<T>>
const_span SG::ConstAccessor< T, ALLOC >::getDataSpan ( const AuxVectorData & container) const
inherited

Get a span over the auxilary data array.

Parameters
containerThe container from which to fetch the variable.

◆ isAvailable() [1/2]

template<class T, class ALLOC = AuxAllocator_t<T>>
bool SG::ConstAccessor< T, ALLOC >::isAvailable ( const AuxVectorData & c) const
inherited

Test to see if this variable exists in the store.

Parameters
cThe container in which to test the variable.

◆ isAvailable() [2/2]

template<class T, class ALLOC = AuxAllocator_t<T>>
template<IsConstAuxElement ELT>
bool SG::ConstAccessor< T, ALLOC >::isAvailable ( const ELT & e) const
inherited

Test to see if this variable exists in the store.

Parameters
eAn element of the container in which to test the variable.

◆ operator()() [1/2]

template<class T, class ALLOC = AuxAllocator_t<T>>
T SG::AtomicConstAccessor< T, ALLOC >::operator() ( const AuxVectorData & container,
size_t index ) const

Fetch the variable for one element, as a const reference.

Parameters
containerThe container from which to fetch the variable.
indexThe index of the desired element.

This allows retrieving aux data by container / index. Looping over the index via this method will be faster then looping over the elements of the container.

As this class can be used only read-only for basic types, return the result by value. That makes it easier to call from python.

◆ operator()() [2/2]

template<class T, class ALLOC = AuxAllocator_t<T>>
template<IsConstAuxElement ELT>
T SG::AtomicConstAccessor< T, ALLOC >::operator() ( const ELT & e) const

Fetch the variable for one element, as a const reference.

Parameters
eThe element for which to fetch the variable.

As this class can be used only read-only for basic types, return the result by value. That makes it easier to call from python.

◆ withDefault() [1/2]

template<class T, class ALLOC = AuxAllocator_t<T>>
const_reference_type SG::ConstAccessor< T, ALLOC >::withDefault ( const AuxVectorData & container,
size_t index,
const T & deflt ) const
inherited

Fetch the variable for one element, as a const reference.

Parameters
containerThe container from which to fetch the variable.
indexThe index of the desired element.
defltDefault value.

This allows retrieving aux data by container / index. Looping over the index via this method will be faster then looping over the elements of the container. If this variable is not available, then return deflt instead.

◆ withDefault() [2/2]

template<class T, class ALLOC = AuxAllocator_t<T>>
template<IsConstAuxElement ELT>
const_reference_type SG::ConstAccessor< T, ALLOC >::withDefault ( const ELT & e,
const T & deflt ) const
inherited

Fetch the variable for one element, as a const reference, with a default.

Parameters
eThe element for which to fetch the variable.
defltDefault value.

If this variable is not available, then return deflt instead.

Member Data Documentation

◆ m_auxid

template<class T, class ALLOC = AuxAllocator_t<T>>
SG::auxid_t SG::ConstAccessor< T, ALLOC >::m_auxid
protectedinherited

The cached auxid.

Definition at line 211 of file ConstAccessor.h.


The documentation for this class was generated from the following file: