|
ATLAS Offline Software
|
Go to the documentation of this file.
30 : m_trackIndices (false)
41 m_trackIndices (rhs.m_trackIndices)
232 if (!skipDestClear)
to.clearAux();
236 if (
p->hasStore() || !skipDestClear)
240 p->setIndex (
index,
this);
278 b->setIndex (bindex, bcont);
280 a->setIndex (aindex, acont);
296 r.swap (auxid, *acont, aindex, *bcont, bindex, 1);
299 if (!a_ids.test (auxid)) {
300 r.swap (auxid, *acont, aindex, *bcont, bindex, 1);
320 for (
size_t i = 0;
i <
sz;
i++)
324 size_t naux = auxid_set.
size();
328 m_auxdata.push_back (
vec.getDataArrayForResort (auxid));
370 size_t index = m_index;
371 size_t auxindex = elt->
index();
373 size_t ii1 = m_imap[auxindex-
index];
378 size_t naux = m_auxids.size();
380 for (
size_t iid = 0; iid < naux; iid++) {
387 m_vec.setIndexForResort (elt,
index+
idx);
std::vector< size_t > m_imap
static AuxTypeRegistry & instance()
Return the singleton registry instance.
Exception — Attempt to set aux data store on container that doesn't track indices,...
std::vector< SG::auxid_t > m_auxids
Base class for elements of a container that can have aux data.
@ NEVER_TRACK_INDICES
Never track indices, regardless of the setting of the ownership policy.
std::vector< void * > m_auxdata
bool hasNonConstStore() const
Return true if this object has an associated non-const store.
@ ALWAYS_TRACK_INDICES
Always track indices, regardless of the setting of the ownership policy.
AuxVectorData & operator=(AuxVectorData &&rhs)
Move assignment.
void setStore(SG::IAuxStore *store)
Set the store associated with this object.
std::vector< size_t > vec
std::vector< size_t > m_rmap
Exception — Non-const operation performed on const aux data.
virtual ~AuxVectorBase()
Destructor.
Manage index tracking and synchronization of auxiliary data.
Manage index tracking and synchronization of auxiliary data.
const SG::auxid_set_t & getAuxIDs() const
Return a set of identifiers for existing data items in store associated with this object.
OwnershipPolicy
describes the possible element ownership policies (see e.g. DataVector)
Handle mappings between names and auxid_t.
void swapElementsAux(size_t aindex, size_t bindex, SG::AuxElement *a, SG::AuxElement *b, AuxVectorBase *bcont)
Swap indices and auxiliary data between two elements.
#define ATHCONTAINERS_ASSERT(X)
AuxVectorBase & operator=(AuxVectorBase &&rhs)
Move assignment.
void resize(size_t size)
Resize the aux data associated with this container.
void setStore(SG::IAuxStore *store)
Set the store associated with this object.
size_t auxid_t
Identifier for a particular aux data item.
bit_t size() const
Count the number of 1 bits in the set.
@ OWN_ELEMENTS
this data object owns its elements
SG::IAuxStore * getStore()
Return the current store, as a non-const interface.
size_t index() const
Return the index of this element within its container.
bool hasStore() const
Return true if this object has an associated store.
void reserve1(const std::false_type &, size_t size)
Change the capacity of the aux data associated with this container.
void resize1(const std::false_type &, size_t size)
Resize the aux data associated with this container.
bool m_trackIndices
Flag if index tracking is enabled.
void initAuxVectorBase1(const std::false_type &, SG::OwnershipPolicy, SG::IndexTrackingPolicy)
Initialize index tracking mode — no-auxdata specialization.
void clearCache()
Clear the cached aux data pointers.
void resortElement(size_t idx, SG::AuxElement *elt)
void moveAux(size_t index, SG::AuxElement *p, bool clear=false, bool skipDestClear=false)
Set index on an element and copy auxiliary data.
Interface for non-const operations on an auxiliary store.
AuxVectorBase()
Default constructor.
A set of aux data identifiers.
Manage lookup of vectors of auxiliary data.
const SG::AuxVectorData * container() const
Return the container holding this element.
Interface for const operations on an auxiliary store.
bool trackIndices() const
Return true if index tracking is enabled for this container.
virtual void reserve(size_t sz)=0
Change the capacity of all aux data vectors.