ATLAS Offline Software
|
Access an auxiliary variable atomically. More...
#include <AtomicDecorator.h>
Public Types | |
using | Base = Decorator< T, ALLOC > |
Base class. More... | |
using | reference_type = std::atomic< T > & |
Type referencing an item. More... | |
using | element_type = typename AuxDataTraits< T, ALLOC >::element_type |
Type the user sees. More... | |
using | container_pointer_type = std::atomic< T > * |
Pointer into the container holding this item. More... | |
using | const_container_pointer_type = const std::atomic< T > * |
using | span = typename AuxDataTraits< T, AuxAllocator_t< T > >::span |
A span over elements in the container. More... | |
using | const_span = typename AuxDataTraits< T, AuxAllocator_t< T > >::const_span |
Public Member Functions | |
AtomicDecorator (const std::string &name) | |
Constructor. More... | |
AtomicDecorator (const std::string &name, const std::string &clsname) | |
Constructor. More... | |
AtomicDecorator (const SG::auxid_t auxid) | |
Constructor taking an auxid directly. More... | |
template<class ELT > | |
reference_type | operator() (const ELT &e) const |
Fetch the variable for one element, as a non-const reference. More... | |
reference_type | operator() (const AuxVectorData &container, size_t index) const |
Fetch the variable for one element, as a non-const reference. More... | |
void | set (const AuxElement &e, const element_type &x) const |
Set the variable for one element. More... | |
const_container_pointer_type | getDataArray (const AuxVectorData &container) const |
Get a pointer to the start of the auxiliary data array. More... | |
container_pointer_type | getDecorationArray (const AuxVectorData &container) const |
Get a pointer to the start of the auxiliary data array. More... | |
void | set (const ELT &e, const element_type &x) const |
Set the variable for one element. More... | |
const_span | getDataSpan (const AuxVectorData &container) const |
Get a span over the auxilary data array. More... | |
span | getDecorationSpan (const AuxVectorData &container) const |
Get a span over the auxilary data array. More... | |
bool | isAvailable (const ELT &e) const |
Test to see if this variable exists in the store. More... | |
bool | isAvailable (const AuxVectorData &c) const |
Test to see if this variable exists in the store. More... | |
bool | isAvailableWritable (const ELT &e) const |
Test to see if this variable exists in the store and is writable. More... | |
bool | isAvailableWritable (const AuxVectorData &c) const |
Test to see if this variable exists in the store and is writable. More... | |
SG::auxid_t | auxid () const |
Return the aux id for this variable. More... | |
Private Attributes | |
SG::auxid_t | m_auxid |
The cached auxid . More... | |
Access an auxiliary variable atomically.
Definition at line 42 of file AtomicDecorator.h.
using SG::AtomicDecorator< T, ALLOC >::Base = Decorator<T, ALLOC> |
Base class.
Definition at line 47 of file AtomicDecorator.h.
using SG::AtomicDecorator< T, ALLOC >::const_container_pointer_type = const std::atomic<T>* |
Definition at line 57 of file AtomicDecorator.h.
|
inherited |
Definition at line 75 of file Decorator.h.
using SG::AtomicDecorator< T, ALLOC >::container_pointer_type = std::atomic<T>* |
Pointer into the container holding this item.
Definition at line 56 of file AtomicDecorator.h.
using SG::AtomicDecorator< T, ALLOC >::element_type = typename AuxDataTraits<T, ALLOC>::element_type |
Type the user sees.
Definition at line 53 of file AtomicDecorator.h.
using SG::AtomicDecorator< T, ALLOC >::reference_type = std::atomic<T>& |
Type referencing an item.
Definition at line 50 of file AtomicDecorator.h.
|
inherited |
A span over elements in the container.
Definition at line 74 of file Decorator.h.
SG::AtomicDecorator< T, ALLOC >::AtomicDecorator | ( | const std::string & | name | ) |
Constructor.
name | Name of this aux variable. |
The name -> auxid lookup is done here.
SG::AtomicDecorator< T, ALLOC >::AtomicDecorator | ( | const std::string & | name, |
const std::string & | clsname | ||
) |
Constructor.
name | Name of this aux variable. |
clsname | The name of its associated class. May be blank. |
The name -> auxid lookup is done here.
SG::AtomicDecorator< T, ALLOC >::AtomicDecorator | ( | const SG::auxid_t | auxid | ) |
Constructor taking an auxid directly.
auxid | ID for this auxiliary variable. |
Will throw SG::ExcAuxTypeMismatch
if the types don't match.
|
inherited |
Return the aux id for this variable.
const_container_pointer_type SG::AtomicDecorator< T, ALLOC >::getDataArray | ( | const AuxVectorData & | container | ) | const |
Get a pointer to the start of the auxiliary data array.
container | The container from which to fetch the variable. |
|
inherited |
Get a span over the auxilary data array.
container | The container from which to fetch the variable. |
container_pointer_type SG::AtomicDecorator< T, ALLOC >::getDecorationArray | ( | const AuxVectorData & | container | ) | const |
Get a pointer to the start of the auxiliary data array.
container | The container from which to fetch the variable. |
If the container is locked, this will allow fetching only variables that do not yet exist (in which case they will be marked as decorations) or variables already marked as decorations.
|
inherited |
Get a span over the auxilary data array.
container | The container from which to fetch the variable. |
If the container is locked, this will allow fetching only variables that do not yet exist (in which case they will be marked as decorations) or variables already marked as decorations.
|
inherited |
Test to see if this variable exists in the store.
c | The container in which to test the variable. |
|
inherited |
Test to see if this variable exists in the store.
e | An element of the container in which to test the variable. |
|
inherited |
Test to see if this variable exists in the store and is writable.
c | The container in which to test the variable. |
|
inherited |
Test to see if this variable exists in the store and is writable.
e | An element of the container in which to test the variable. |
reference_type SG::AtomicDecorator< T, ALLOC >::operator() | ( | const AuxVectorData & | container, |
size_t | index | ||
) | const |
Fetch the variable for one element, as a non-const reference.
container | The container from which to fetch the variable. |
index | The 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.
If the container is locked, this will allow fetching only variables that do not yet exist (in which case they will be marked as decorations) or variables already marked as decorations.
reference_type SG::AtomicDecorator< T, ALLOC >::operator() | ( | const ELT & | e | ) | const |
Fetch the variable for one element, as a non-const reference.
e | The element for which to fetch the variable. |
If the container is locked, this will allow fetching only variables that do not yet exist (in which case they will be marked as decorations) or variables already marked as decorations.
void SG::AtomicDecorator< T, ALLOC >::set | ( | const AuxElement & | e, |
const element_type & | x | ||
) | const |
Set the variable for one element.
e | The element for which to fetch the variable. |
x | The variable value to set. |
|
inherited |
Set the variable for one element.
e | The element for which to fetch the variable. |
x | The variable value to set. |
|
privateinherited |
The cached auxid
.
Definition at line 249 of file Decorator.h.