13#ifndef ATHCONTAINERS_PACKEDLINKVECTOR_H
14#define ATHCONTAINERS_PACKEDLINKVECTOR_H
21#include "AthLinks/ElementLink.h"
22#include "AthLinks/DataLink.h"
39template <
class CONT,
class ALLOC = AuxAllocator_t<PackedLink<CONT> > >
42 typename AuxDataTraits<PackedLink<CONT>, ALLOC>::vector_type>
95 void* src,
size_t src_pos,
size_t src_n,
122 class VELT =
typename AuxDataTraits<PackedLink<CONT>, VALLOC >::vector_type,
126 typename AuxDataTraits<VELT, ALLOC>::vector_type>
179 void* src,
size_t src_pos,
size_t src_n,
206template <
class HOLDER>
225 size_t size,
size_t capacity,
226 std::unique_ptr<IAuxTypeVector> linkedVec);
249 virtual std::unique_ptr<IAuxTypeVector>
clone()
const override;
270template <
class CONT,
class ALLOC = AuxAllocator_t<PackedLink<CONT> > >
Implementation of IAuxTypeVector for specific types.
Manage lookup of vectors of auxiliary data.
Definition of PackedLink type.
Helper functions for managing PackedLink variables.
Allow customizing how aux data types are treated.
std::vector< T, allocator_type > vector_type
Container type used to store this variable.
CONT vector_type
Type of the STL vector used for storage.
virtual size_t size() const override
AuxTypeVectorHolder(auxid_t auxid, vector_type *vecPtr, bool ownFlag, bool isLinked)
Constructor.
AuxDataTraits< T >::element_type element_type
Type that the user sees.
Interface for non-const operations on an auxiliary store.
Abstract interface for manipulating vectors of arbitrary types.
auxid_t auxid() const
Return the auxid of the variable this vector represents.
PackedLinkVVectorHolder(auxid_t auxid, vector_type *vecPtr, IAuxTypeVector *linkedVec, bool ownFlag)
Constructor.
AuxTypeVectorHolder< VELT, typename AuxDataTraits< VELT, ALLOC >::vector_type > Base
typename Base::element_type element_type
detail::PackedLinkVectorHelper< CONT > Helper
Helper for manipulating PackedLink instances.
virtual bool insertMove(size_t pos, void *src, size_t src_pos, size_t src_n, IAuxStore &srcStore) override
Insert elements into the vector via move semantics.
IAuxTypeVector * m_linkedVec
Interface for the linked vector of DataLinks.
typename Base::vector_type vector_type
virtual bool insertMove(size_t pos, void *src, size_t src_pos, size_t src_n, IAuxStore &srcStore) override
Insert elements into the vector via move semantics.
AuxTypeVectorHolder< PackedLink< CONT >, typename AuxDataTraits< PackedLink< CONT >, ALLOC >::vector_type > Base
IAuxTypeVector * m_linkedVec
Interface for the linked vector of DataLinks.
typename Base::vector_type vector_type
typename Base::element_type element_type
detail::PackedLinkVectorHelper< CONT > Helper
Helper for manipulating PackedLink instances.
PackedLinkVectorHolder(auxid_t auxid, vector_type *vecPtr, IAuxTypeVector *linkedVec, bool ownFlag)
Constructor.
Implementation of IAuxTypeVector holding a vector of PackedLink.
PackedLinkVectorT(const PackedLinkVectorT &other)
virtual std::unique_ptr< IAuxTypeVector > linkedVector() override
typename Base::element_type element_type
std::unique_ptr< IAuxTypeVector > m_linkedVecHolder
PackedLinkVectorT(PackedLinkVectorT &&other)
typename Base::vector_value_type vector_value_type
typename Base::vector_type vector_type
virtual std::unique_ptr< IAuxTypeVector > clone() const override
PackedLinkVectorT(auxid_t auxid, size_t size, size_t capacity, std::unique_ptr< IAuxTypeVector > linkedVec)
Constructor.
PackedLinkVectorT & operator=(const PackedLinkVectorT &other)=delete
No assignment.
Helper functions for managing PackedLink variables.
PackedLinkVectorT< PackedLinkVVectorHolder< CONT, VALLOC, VELT, ALLOC > > PackedLinkVVector
PackedLinkVectorT< PackedLinkVectorHolder< CONT, ALLOC > > PackedLinkVector
std::allocator< T > AuxAllocator_t
The default allocator type to use for auxiliary variables.
size_t auxid_t
Identifier for a particular aux data item.