ATLAS Offline Software
|
Factory object that creates vectors for packed links. More...
#include <PackedLinkVectorFactory.h>
Public Types | |
using | Base = AuxTypeVectorFactoryImpl< PackedLink< CONT >, ALLOC > |
using | AuxTypeVector_t = PackedLinkVector< CONT, ALLOC > |
using | Helper = detail::PackedLinkVectorHelper< CONT > |
using | vector_value_type = typename AuxTypeVector_t::vector_value_type |
Public Member Functions | |
virtual std::unique_ptr< IAuxTypeVector > | create (SG::auxid_t auxid, size_t size, size_t capacity, bool isLinked) const override |
Create a vector object of this type. More... | |
virtual std::unique_ptr< IAuxTypeVector > | createFromData (SG::auxid_t auxid, void *data, IAuxTypeVector *linkedVector, bool isPacked, bool ownFlag, bool isLinked) const override |
Create a vector object of this type from a data blob. More... | |
virtual void | copy (SG::auxid_t auxid, AuxVectorData &dst, size_t dst_index, const AuxVectorData &src, size_t src_index, size_t n) const override |
Copy elements between vectors. More... | |
virtual void | copyForOutput (SG::auxid_t auxid, AuxVectorData &dst, size_t dst_index, const AuxVectorData &src, size_t src_index, size_t n) const override |
Copy elements between vectors, possibly applying thinning. More... | |
virtual void | swap (SG::auxid_t auxid, AuxVectorData &a, size_t aindex, AuxVectorData &b, size_t bindex, size_t n) const override |
Swap elements between vectors. More... | |
void | copy (SG::auxid_t auxid, AuxVectorData &&dst, size_t dst_index, const AuxVectorData &src, size_t src_index, size_t n) const |
Copy elements between vectors. More... | |
virtual void | clear (SG::auxid_t auxid, AuxVectorData &dst, size_t dst_index, size_t n) const override |
Clear a range of elements within a vector. More... | |
virtual size_t | getEltSize () const override |
Return the size of an element of this vector type. More... | |
virtual size_t | getEltSize () const =0 |
Return the size of an element of this vector type. More... | |
virtual const std::type_info * | tiVec () const override |
Return the type_info of the vector. More... | |
virtual const std::type_info * | tiVec () const =0 |
Return the type_info of the vector. More... | |
virtual bool | isDynamic () const override |
True if the vectors created by this factory work by dynamic emulation (via TVirtualCollectionProxy or similar); false if the std::vector code is used directly. More... | |
virtual bool | isDynamic () const =0 |
True if the vectors created by this factory work by dynamic emulation (via TVirtualCollectionProxy or similar); false if the std::vector code is used directly. More... | |
virtual const std::type_info * | tiAlloc () const override |
Return the type_info of the vector allocator. More... | |
virtual const std::type_info * | tiAlloc () const =0 |
Return the type_info of the vector allocator. More... | |
virtual std::string | tiAllocName () const override |
Return the (demangled) name of the vector allocator. More... | |
virtual std::string | tiAllocName () const =0 |
Return the (demangled) name of the vector allocator. More... | |
Private Member Functions | |
vector_value_type * | copyImpl (SG::auxid_t auxid, AuxVectorData &dst, size_t dst_index, const AuxVectorData &src, size_t src_index, size_t n) const |
Helper for copy; returns a pointer to the first destination object, or nullptr if the destination was cleared rather than copied. More... | |
Factory object that creates vectors for packed links.
This is an implementation of IAuxTypeVectorFactory
that makes vectors using PackedLinkVector
.
Definition at line 33 of file PackedLinkVectorFactory.h.
using SG::PackedLinkVectorFactory< CONT, ALLOC >::AuxTypeVector_t = PackedLinkVector<CONT, ALLOC> |
Definition at line 38 of file PackedLinkVectorFactory.h.
using SG::PackedLinkVectorFactory< CONT, ALLOC >::Base = AuxTypeVectorFactoryImpl<PackedLink<CONT>, ALLOC> |
Definition at line 37 of file PackedLinkVectorFactory.h.
using SG::PackedLinkVectorFactory< CONT, ALLOC >::Helper = detail::PackedLinkVectorHelper<CONT> |
Definition at line 39 of file PackedLinkVectorFactory.h.
using SG::PackedLinkVectorFactory< CONT, ALLOC >::vector_value_type = typename AuxTypeVector_t::vector_value_type |
Definition at line 40 of file PackedLinkVectorFactory.h.
|
overridevirtualinherited |
Clear a range of elements within a vector.
auxid | The aux data item being operated on. |
dst | Container holding the element |
dst_index | Index of the first element in the vector. |
n | Number of elements to clear. |
Implements SG::IAuxTypeVectorFactory.
|
inlineinherited |
Copy elements between vectors.
auxid | The aux data item being operated on. |
dst | Container for the destination vector. Declared as a rvalue reference to allow passing a temporary here (such as from AuxVectorInterface). |
dst_index | Index of the first destination element in the vector. |
src | Container for the source vector. |
src_index | Index of the first source element in the vector. |
n | Number of elements to copy. |
dst
and @ src can be either the same or different.
Definition at line 132 of file IAuxTypeVectorFactory.h.
|
overridevirtual |
Copy elements between vectors.
auxid | The aux data item being operated on. |
dst | Container for the destination vector. |
dst_index | Index of the first destination element in the vector. |
src | Container for the source vector. |
src_index | Index of the first source element in the vector. |
n | Number of elements to copy. |
dst
and @ src can be either the same or different.
Reimplemented from SG::AuxTypeVectorFactoryImpl< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >.
|
overridevirtual |
Copy elements between vectors, possibly applying thinning.
auxid | The aux data item being operated on. |
dst | Container for the destination vector. |
dst_index | Index of the first destination element in the vector. |
src | Container for the source vector. |
src_index | Index of source element in the vector. |
src_index | Index of the first source element in the vector. |
n | Number of elements to copy. |
dst
and @ src can be either the same or different.
Reimplemented from SG::AuxTypeVectorFactoryImpl< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >.
|
privateinherited |
Helper for copy; returns a pointer to the first destination object, or nullptr if the destination was cleared rather than copied.
|
overridevirtual |
Create a vector object of this type.
auxid | ID for the variable being created. |
size | Initial size of the new vector. |
capacity | Initial capacity of the new vector. |
isLinked | True if this variable is linked from another one. Must be false. |
Reimplemented from SG::AuxTypeVectorFactoryImpl< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >.
|
overridevirtual |
Create a vector object of this type from a data blob.
auxid | ID for the variable being created. |
data | The vector object. |
linkedVector | The interface for another variable linked to this one. (We do not take ownership.) |
isPacked | If true, data is a PackedContainer . |
ownFlag | If true, the newly-created IAuxTypeVector object will take ownership of data . |
isLinked | True if this variable is linked from another one. |
data
should be a pointer to a std::vector<SG::PackedLink<CONT>, ALLOC<...> > object obtained with new. For this method, isPacked and isLinked must both be false.
Reimplemented from SG::AuxTypeVectorFactoryImpl< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >.
|
pure virtualinherited |
Return the size of an element of this vector type.
Implemented in SG::RootAuxVectorFactory, SG::AuxTypeVectorFactoryImpl< T, ALLOC >, and xAOD::TAuxVectorFactory.
|
overridevirtualinherited |
Return the size of an element of this vector type.
|
pure virtualinherited |
True if the vectors created by this factory work by dynamic emulation (via TVirtualCollectionProxy
or similar); false if the std::vector code is used directly.
Implemented in SG::RootAuxVectorFactory, SG::AuxTypeVectorFactoryImpl< T, ALLOC >, and xAOD::TAuxVectorFactory.
|
overridevirtualinherited |
True if the vectors created by this factory work by dynamic emulation (via TVirtualCollectionProxy
or similar); false if the std::vector code is used directly.
|
overridevirtual |
Swap elements between vectors.
auxid | The aux data item being operated on. |
a | Container for the first vector. |
aindex | Index of the first element in the first vector. |
b | Container for the second vector. |
bindex | Index of the first element in the second vector. |
n | Number of elements to swap. |
a
and @ b can be either the same or different. However, the ranges should not overlap.
Reimplemented from SG::AuxTypeVectorFactoryImpl< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >.
|
pure virtualinherited |
Return the type_info
of the vector allocator.
May be nullptr for a dynamic vector.
Implemented in SG::RootAuxVectorFactory, SG::AuxTypeVectorFactoryImpl< T, ALLOC >, and xAOD::TAuxVectorFactory.
|
overridevirtualinherited |
Return the type_info
of the vector allocator.
|
pure virtualinherited |
Return the (demangled) name of the vector allocator.
Implemented in SG::RootAuxVectorFactory, SG::AuxTypeVectorFactoryImpl< T, ALLOC >, and xAOD::TAuxVectorFactory.
|
overridevirtualinherited |
Return the (demangled) name of the vector allocator.
|
pure virtualinherited |
Return the type_info
of the vector.
Implemented in SG::RootAuxVectorFactory, SG::AuxTypeVectorFactoryImpl< T, ALLOC >, and xAOD::TAuxVectorFactory.
|
overridevirtualinherited |
Return the type_info
of the vector.