13#ifndef ATHCONTAINERS_PACKEDLINKVECTORHELPER_H
14#define ATHCONTAINERS_PACKEDLINKVECTORHELPER_H
21#include "AthLinks/ElementLink.h"
22#include "AthLinks/DataLink.h"
34template <
class RANGE,
class CONT>
121 std::pair<AuxVectorData*, SG::auxid_t> >
m_data;
177 static std::pair<size_t, bool>
210#ifndef XAOD_STANDALONE
286 static std::pair<size_t, bool>
361 template <
class VALLOC>
380 template <
class VALLOC, ElementLinkRange<CONT> RANGE>
399 template <
class VALLOC, ElementLinkRange<CONT> RANGE>
407#ifndef XAOD_STANDALONE
Manage lookup of vectors of auxiliary data.
Abstract interface for manipulating vectors of arbitrary types.
Definition of PackedLink type.
Simplified version of the C++20 std::span.
Object reference supporting deferred reading from StoreGate.
ElementLink implementation for ROOT usage.
Manage lookup of vectors of auxiliary data.
Abstract interface for manipulating vectors of arbitrary types.
Cache thinning decisions for converters.
Auxiliary variable span wrapper (const).
Auxiliary variable span wrapper.
Helper to access the IAuxTypeVector for an aux variable.
IAuxTypeVector * operator->()
Return the IAuxTypeVector.
IAuxTypeVector & operator*()
Return the IAuxTypeVector.
LinkedVector(IAuxTypeVector &linkedVector)
Constructor from an IAuxTypeVector directly.
IAuxTypeVector * get()
Return the IAuxTypeVector.
LinkedVector(AuxVectorData &container, SG::auxid_t auxid)
Constructor from a container and aux ID.
std::variant< IAuxTypeVector *, std::pair< AuxVectorData *, SG::auxid_t > > m_data
Helper functions for managing PackedLink variables.
static std::pair< size_t, bool > findCollectionBase(LinkedVector &linkedVec, sgkey_t sgkey, DataLinkBase_span &links, IProxyDict *sg, InitLinkFunc_t *initLinkFunc)
Find the collection index in the linked DataLinks for a sgkey.
detail::AuxDataSpan< DataLinkBase > DataLinkBase_span
Spans over the linked DataLinks.
detail::AuxDataConstSpan< DataLinkBase > const_DataLinkBase_span
CxxUtils::span< PackedLinkBase > PackedLinkBase_span
Span over links.
::DataLinkBase DataLinkBase
static bool applyThinningBase(IAuxTypeVector &linkedVec, PackedLinkBase_span &links, DataLinkBase_span &dlinks, const SG::ThinningCache *tc, IProxyDict *sg, InitLinkFunc_t *initLinkFunc)
Apply thinning to packed links, to prepare them for output.
static DataLinkBase_span getLinkBaseSpan(IAuxTypeVector &linkedVec)
Return a span over all the linked DataLinkBase's, from the linked vector.
void InitLinkFunc_t(DataLinkBase &dl, sgkey_t sgkey, IProxyDict *sg)
Function to initialize a DataLink to a given hashed key.
static IProxyDict * storeFromSpan(DataLinkBase_span &links)
Return the current store from the first valid link in the span.
static const_DataLinkBase_span getLinkBaseSpan(const IAuxTypeVector &linkedVec)
Return a span over all the linked DataLinks.
static bool updateLinksBase(IAuxTypeVector &linkedVec, PackedLinkBase_span &links, const const_DataLinkBase_span &srcDLinks, IProxyDict *sg, InitLinkFunc_t *initLinkFunc)
Update collection index of a collection of PackedLink.
static bool resizeLinks(LinkedVector &linkedVec, size_t sz)
Resize a linked vector of DataLinks.
Helper functions for managing PackedLink variables.
static bool updateLinks(IAuxTypeVector &linkedVec, SG::PackedLink< CONT > *ptr, size_t n, const const_DataLinkBase_span &srcDLinks, IProxyDict *sg)
Update collection index of a collection of PackedLink.
CxxUtils::span< PLink_t > PackedLink_span
detail::AuxDataConstSpan< DataLink< CONT > > const_DataLink_span
static void initLink(DataLinkBase &dl, sgkey_t sgkey, IProxyDict *sg)
Initialize a DataLink.
static bool applyThinning(IAuxTypeVector &linkedVec, PackedLink< CONT > *ptr, size_t n, DataLinkBase_span &dlinks, const SG::ThinningCache *tc, IProxyDict *sg)
Apply thinning to packed links, to prepare them for output.
static bool assignVElt(std::vector< PLink_t, VALLOC > &velt, IAuxTypeVector &linkedVec, DataLinkBase_span &dlinks, const RANGE &x)
Assign a range of ElementLink to a vector of Packedlink.
ElementLink< CONT > Link_t
The (linked) data links.
static bool insertVElt(std::vector< PLink_t, VALLOC > &velt, size_t pos, IAuxTypeVector &linkedVec, DataLinkBase_span &dlinks, const RANGE &x)
Insert a range of ElementLink into a vector of Packedlink.
detail::AuxDataSpan< DataLink< CONT > > DataLink_span
static bool updateLinks(IAuxTypeVector &linkedVec, std::vector< SG::PackedLink< CONT >, VALLOC > *ptr, size_t n, const IAuxTypeVector &srclv, IProxyDict *sg)
Update collection index of a collection of PackedLink vectors.
PackedLink< CONT > PLink_t
The PackedLinks.
static std::pair< size_t, bool > findCollection(LinkedVector &linkedVec, sgkey_t sgkey, DataLinkBase_span &links, IProxyDict *sg)
Find the collection index in the linked DataLinks for a sgkey.
static bool updateLinks(IAuxTypeVector &linkedVec, SG::PackedLink< CONT > *ptr, size_t n, const IAuxTypeVector &srclv, IProxyDict *sg)
Update collection index of a collection of PackedLink.
Concept for a range of things that can convert to ElementLink<CONT>.
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
size_t auxid_t
Identifier for a particular aux data item.
Simplified version of the C++20 std::span.
A packed version of ElementLink.
A packed version of ElementLink.