13#ifndef ATHCONTAINERS_AUXVECTORDATA_H
14#define ATHCONTAINERS_AUXVECTORDATA_H
22#include "AthLinks/DataLink.h"
291 const std::string& clsname,
320 const std::string& optname,
323 const std::string& optname,
326 const std::string& optname,
343 const std::string& clsname,
344 const std::string& optname,
641#ifndef XAOD_STANDALONE
645#ifndef XAOD_STANDALONE
956 auxid,
bool allowMissing)
const ;
986 typedef AthContainers_detail::lock_guard<mutex_t>
guard_t;
Hold information about an option setting request.
Describe a range over an auxiliary variable, for low-overhead access.
Allow customizing how aux data types are treated.
Basic definitions for auxiliary types.
Interface for const operations on an auxiliary store.
Macro to provide hints for optimization.
Define macros for attributes used to control the static checker.
Object reference supporting deferred reading from StoreGate.
Interface to allow an object to lock itself when made const in SG.
Hold information about an option setting request.
const element_type & const_reference_type
element_type & reference_type
Reference types returned by aux data accessors.
Base class for elements of a container that can have aux data.
Manage cache of pointers to aux element vectors.
void ** m_cache[2]
Pointer to the cache vector.
std::vector< void ** > m_allcache
All cache vectors that have been allocated.
void * getDecorationArray(SG::auxid_t auxid, const AuxVectorData &parent)
Return a pointer to the start of an aux decoration vector.
const void * getDataArrayAllowMissing(SG::auxid_t auxid, const AuxVectorData &parent)
Return a const pointer to the start of an aux data vector.
size_t m_cache_len
Length of the cache vector.
const AuxDataSpanBase * getDataSpan(SG::auxid_t auxid, const AuxVectorData &parent)
Return a reference to a description of this vector's start+size.
void swap(Cache &other)
Swap this cache object with another.
void * getDataArray(SG::auxid_t auxid, AuxVectorData &parent)
Return a pointer to the start of an aux data vector.
void * cachePtr(SG::auxid_t auxid)
Test to see if auxid is valid in the cache.
Cache()
Cache manager constructor.
const void * getDataArray(SG::auxid_t auxid, const AuxVectorData &parent)
Return a const pointer to the start of an aux data vector.
Cache & operator=(Cache &&rhs)
Cache manager move assignment.
void clear()
Clear the cache (and free any old cache vectors).
void store(SG::auxid_t auxid, void *ptr)
Store a pointer for auxid in the cache.
~Cache()
Cache manager destructor.
bool clearDecorations() const
Clear all decorations.
const SG::auxid_set_t & getAuxIDs() const
Return a set of identifiers for existing data items in store associated with this object.
const AuxDataSpanBase * getDataSpanOol(SG::auxid_t auxid, bool allowMissing) const
Return a reference to a description of this vector's start+size, out-of-line portion.
bool isAvailableOol(auxid_t id) const
Out-of-line portion of isAvailable.
const SG::IConstAuxStore * getConstStoreOol() const
Same as getConstStore.
static size_t s_minCacheLen ATLAS_THREAD_SAFE
Minimum length to use for the cache vector.
void setStore(SG::IAuxStore *store)
Set the store associated with this object.
const SG::auxid_set_t & getDecorIDs() const
Return a set of identifiers for decorations for this object.
bool hasNonConstStore() const
Return true if this object has an associated non-const store.
DataLink< SG::IConstAuxStore > m_constStoreLink
Associated store link, const.
void * getDataOol(SG::auxid_t auxid, bool allowMissing)
Out-of-line portion of data access.
void * getDecorationArray(SG::auxid_t auxid) const
Return a pointer to the start of an aux data vector for a decoration.
AuxDataTraits< T >::const_reference_type getData(SG::auxid_t auxid, size_t ndx) const
Return const reference to an aux data item.
void setCache(SG::auxid_t auxid, const void *ptr)
Explicitly set a cache pointer.
bool setOption(auxid_t id, const std::string &optname, T arg)
Set an option for an auxiliary data variable.
void lockDecoration(SG::auxid_t auxid)
Explicitly lock a decoration.
const SG::IAuxStore * getStore() const
Return the current store, as a non-const interface.
AuxVectorData & operator=(AuxVectorData &&rhs)
Move assignment.
bool isAvailableWritableAsDecoration(auxid_t id) const
Test to see if a variable is available for writing as a decoration.
bool setOption(const std::string &name, const std::string &clsname, const std::string &optname, T arg)
Set an option for an auxiliary data variable.
bool setOption(const std::string &name, const std::string &optname, int arg)
Set an option for an auxiliary data variable.
SG::IAuxStore * m_store
Associated store, non-const.
void clearDecorCache(SG::auxid_t auxid)
Clear the cached decoration pointer for a single variable.
void clearCache()
Clear the cached aux data pointers.
AuxDataTraits< T >::reference_type getDecoration(SG::auxid_t auxid, size_t ndx) const
Return reference to an aux decoration item.
void * getDecorationOol(SG::auxid_t auxid) const
Out-of-line portion of data access (decorator version).
bool isAvailable(auxid_t id) const
Test to see if a variable exists in the store.
virtual size_t size_v() const =0
Return the size of the container.
static const SG::auxid_set_t s_emptySet
Empty auxid set, used for a return value when we have no associated store.
AuxDataTraits< T >::reference_type getData(SG::auxid_t auxid, size_t ndx)
Return reference to an aux data item.
bool setOption(const std::string &name, const std::string &optname, double arg)
void * getDataArray(SG::auxid_t auxid)
Return a pointer to the start of an aux data vector.
virtual size_t capacity_v() const =0
Return the capacity of the container.
AuxVectorData(const AuxVectorData &)
Copy not allowed.
AthContainers_detail::mutex mutex_t
Mutex used to synchronize modifications to the cache vector.
const DataLink< SG::IConstAuxStore > getConstStoreLink() const
Return the data link to the current store, as a const interface.
AthContainers_detail::lock_guard< mutex_t > guard_t
const AuxDataSpanBase * getDataSpan(SG::auxid_t auxid) const
Return a reference to a description of this vector's start+size.
const SG::IConstAuxStore * m_constStore
Associated store, const.
bool isAvailableWritableOol(auxid_t id)
Out-of-line portion of isAvailableWritable.
void setNonConstStore(SG::IAuxStore *store)
Set the store associated with this object.
AuxVectorData()
Constructor.
const void * getDataArray(SG::auxid_t auxid) const
Return a const pointer to the start of an aux data vector.
bool isAvailableWritableAsDecorationOol(auxid_t id) const
Out-of-line portion of isAvailableWritableAsDecoration.
const void * getDataArrayAllowMissing(SG::auxid_t auxid) const
Return a const pointer to the start of an aux data vector.
SG::IAuxStore * getStore()
Return the current store, as a non-const interface.
virtual ~AuxVectorData()
Destructor.
void setCache(SG::auxid_t auxid, void *ptr)
Explicitly set a cache pointer.
bool setOption(auxid_t id, const AuxDataOption &option)
Set an option for an auxiliary data variable.
const SG::auxid_set_t & getWritableAuxIDs() const
Return a set of identifiers for writable data items in this store.
bool setOption(const std::string &name, const std::string &optname, float arg)
void swap(AuxVectorData &other)
Swap this instance with another.
const SG::IConstAuxStore * getConstStore() const
Return the current store, as a const interface.
virtual void lock() override
Lock the container.
bool isAvailableWritable(auxid_t id)
Test to see if a variable is available for writing.
void clearCache(SG::auxid_t auxid)
Clear the cached aux data pointers for a single variable.
bool hasStore() const
Return true if this object has an associated store.
Interface for non-const operations on an auxiliary store.
Interface for const operations on an auxiliary store.
A set of aux data identifiers.
Define likely/unlikely macros for branch prediction.
size_t auxid_t
Identifier for a particular aux data item.
Minimal span-like object describing the range of an auxiliary variable.