|
ATLAS Offline Software
|
Go to the documentation of this file.
14 #ifndef ATHCONTAINERS_AUXVECTORBASE_H
15 #define ATHCONTAINERS_AUXVECTORBASE_H
217 const std::string& clsname =
"")
const;
227 const std::string& clsname =
"");
237 const std::string& clsname =
"")
const;
356 template <
class ForwardIterator>
369 template <
class ForwardIterator>
381 template <
class ForwardIterator>
431 void shift (DVL& cont,
size_t pos, ptrdiff_t offs);
452 bool skipDestClear =
false);
470 bool skipDestClear =
false);
494 template <
class ForwardIterator>
497 bool skipDestClear =
false);
553 template <
class ForwardIterator>
556 ForwardIterator
end);
597 template <
class ForwardIterator>
614 template <
class ForwardIterator>
628 template <
class ForwardIterator>
638 template <
class ForwardIterator>
649 template <
class ForwardIterator>
662 template <
class ForwardIterator>
665 ForwardIterator
end);
715 DVL& cont,
size_t pos, ptrdiff_t offs);
747 DVL& cont,
size_t pos, ptrdiff_t offs);
765 template <
class ForwardIterator>
771 bool skipDestClear =
false);
794 template <
class ForwardIterator>
800 bool skipDestClear =
false);
811 template <
class ForwardIterator>
815 ForwardIterator
end);
831 template <
class ForwardIterator>
873 #ifndef XAOD_STANDALONE
882 #endif // not DATAMODEL_AUXVECTORBASE_H
void shift1(const std::false_type &, DVL &cont, size_t pos, ptrdiff_t offs)
Shift the elements of the container.
void setIndices1(const std::true_type &, ForwardIterator beg, ForwardIterator end, size_t first)
Set container/index for all elements within a range.
const_span< T > getConstDataSpan(const std::string &name) const
Return a span over an aux data item.
void initAuxVectorBase(SG::OwnershipPolicy ownPolicy, SG::IndexTrackingPolicy indexTrackingPolicy)
Initialize index tracking mode.
void resortAux(size_t index, ForwardIterator beg, ForwardIterator end)
Reset indices / reorder aux data after elements have been permuted.
std::vector< size_t > m_imap
void clearIndex1(const std::false_type &, ForwardIterator elt)
Clear the container / index for element elt.
std::vector< SG::auxid_t > m_auxids
Base class for elements of a container that can have aux data.
std::vector< void * > m_auxdata
typename AuxDataTraits< T >::const_span const_span
Exceptions that can be thrown from AthContainers.
void setStore(SG::IAuxStore *store)
Set the store associated with this object.
void setIndexForResort(SG::AuxElement *elt, size_t idx)
An overridable variant of assert.
std::vector< size_t > vec
span< T > getDataSpan(const std::string &name)
Return a span over an aux data item.
void moveAux(size_t index, const void *p, bool clear=false, bool skipDestClear=false)
Set index on an element and copy auxiliary data.
std::vector< size_t > m_rmap
bool isAvailableWritable(auxid_t id)
Test to see if a variable is available for writing.
virtual ~AuxVectorBase()
Destructor.
void moveAux1(const std::true_type &, size_t index, ForwardIterator beg, ForwardIterator end, bool clear=false, bool skipDestClear=false)
Set index on a range of elements and copy auxiliary data.
Manage index tracking and synchronization of auxiliary data.
Simplified version of the C++20 std::span.
void resortAux1(const std::false_type &, size_t index, ForwardIterator beg, ForwardIterator end)
Reset indices / reorder aux data after elements have been permuted.
void clearIndices1(const std::false_type &, ForwardIterator, ForwardIterator)
Clear the container / index for a range of elements.
static constexpr bool supportsThinning
Mark that this type supports thinning operations.
bool isAvailable(auxid_t id) const
Test to see if a variable exists in the store.
OwnershipPolicy
describes the possible element ownership policies (see e.g. DataVector)
void setNonConstStore(SG::IAuxStore *store)
Synonym for setStore with IAuxStore.
void swapElementsAux(size_t aindex, size_t bindex, SG::AuxElement *a, SG::AuxElement *b, AuxVectorBase *bcont)
Swap indices and auxiliary data between two elements.
AuxVectorBase & operator=(AuxVectorBase &&rhs)
Move assignment.
void resize(size_t size)
Resize the aux data associated with this container.
void clearIndex(ForwardIterator elt)
Clear the container / index for element elt.
size_t auxid_t
Identifier for a particular aux data item.
const_span< T > getDataSpan(const std::string &name) const
Return a span over an aux data item.
void resortAux1(const std::true_type &, size_t index, ForwardIterator a, ForwardIterator b)
Reset indices / reorder aux data after elements have been permuted.
span< T > getDecorationSpan(const std::string &name) const
Return a span over an aux data item for a decoration.
void * getDataArrayForResort(SG::auxid_t auxid)
void reserve(size_t size)
Change the capacity of the aux data associated with this container.
Allow customizing how aux data types are treated.
void reserve1(const std::false_type &, size_t size)
Change the capacity of the aux data associated with this container.
Manage lookup of vectors of auxiliary data.
void resize1(const std::false_type &, size_t size)
Resize the aux data associated with this container.
void moveAux(size_t index, ForwardIterator beg, ForwardIterator end, bool clear=false, bool skipDestClear=false)
Set index on a range of elements and copy auxiliary data.
void setIndices(ForwardIterator beg, ForwardIterator end, size_t first=0)
Set container/index for all elements within a range.
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.
bool isAvailableWritable(const std::string &name, const std::string &clsname="")
Test to see if a variable is available for writing.
void moveAux1(const std::false_type &, size_t index, ForwardIterator beg, ForwardIterator end, bool clear=false, bool skipDestClear=false)
Set index on a range of elements and copy auxiliary data.
void resortElement(size_t idx, SG::AuxElement *elt)
Associate AuxStore classes with EDM container classes.
void moveAux(size_t index, SG::AuxElement *p, bool clear=false, bool skipDestClear=false)
Set index on an element and copy auxiliary data.
Helper to factor out template-independent part of resortAux.
Interface for non-const operations on an auxiliary store.
bool isAvailable(const std::string &name, const std::string &clsname="") const
Test to see if a variable exists in the store.
void clearIndices1(const std::true_type &, ForwardIterator beg, ForwardIterator end)
Clear the container / index for a range of elements.
void setIndices1(const std::false_type &, ForwardIterator beg, ForwardIterator end, size_t first)
Set container/index for all elements within a range.
void clearIndex1(const std::true_type &, ForwardIterator elt)
Clear the container / index for element elt.
AuxVectorBase()
Default constructor.
void shift1(const std::true_type &, DVL &cont, size_t pos, ptrdiff_t offs)
Shift the elements of the container.
void setConstStore(const SG::IConstAuxStore *store)
Synonym for setStore with IConstAuxStore.
typename AuxDataTraits< T >::span span
Spans over auxiliary variables.
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Handle mappings between names and auxid_t.
Interface for non-const operations on an auxiliary store.
void clearIndices(ForwardIterator beg, ForwardIterator end)
Clear the container / index for a range of elements.
void swap(AuxVectorBase &other)
Swap with another container.
bool isAvailableWritableAsDecoration(auxid_t id) const
Test to see if a variable is available for writing as a decoration.
Manage lookup of vectors of auxiliary data.
Interface for const operations on an auxiliary store.
bool trackIndices() const
Return true if index tracking is enabled for this container.
void shift(DVL &cont, size_t pos, ptrdiff_t offs)
Shift the elements of the container.
void swapElementsAux(size_t aindex, size_t bindex, const void *a, const void *b, AuxVectorBase *bcont)
Swap indices and auxiliary data between two elements.
macros to associate a CLID to a type
Base class for elements of a container that can have aux data.
bool isAvailableWritableAsDecoration(const std::string &name, const std::string &clsname="") const
Test to see if a variable is available for writing as a decoration.