41std::pair<size_t, bool>
50 return std::make_pair (0u,
true);
53 for (
size_t i = 1; i < links.size(); ++i) {
54 if (links[i].key() == sgkey)
return std::make_pair (i,
true);
57 size_t oldsz = links.size();
58 size_t newsz = oldsz+1;
59 if (oldsz == 0 && sgkey != 0) {
63 initLinkFunc (links.back(), sgkey, sg);
64 return std::make_pair (links.size() - 1, cacheValid);
97 bool cacheValid =
true;
99 size_t in_coll = l.collection();
103 (lv, srcDLinks.
at(in_coll).
key(), DLinks, sg, initLinkFunc);
104 l.setCollection (
index);
105 cacheValid &= thisValid;
112#ifndef XAOD_STANDALONE
137 bool cacheValid =
true;
139 if (l.collection() != 0) {
140 sgkey_t sgkey = dlinks[l.collection()].key();
141 size_t index = l.index();
143 size_t index_out =
index;
148 l.setIndex (index_out);
149 if (sgkey_out != sgkey) {
153 l.setCollection (
index);
Implementation of IAuxTypeVector for PackedLink types.
sgkey_t key() const
Return the SG key that we reference, as a hash.
virtual bool tryELRemap(sgkey_t sgkey_in, size_t index_in, sgkey_t &sgkey_out, size_t &index_out)
Test to see if the target of an ElementLink has moved.
static bool thin(sgkey_t &sgkey, size_t &index, const SG::ThinningCache *thinningCache)
Adjust for thinning, with explicitly provided thinning cache.
Abstract interface for manipulating vectors of arbitrary types.
virtual bool resize(size_t sz)=0
Change the size of the vector.
Cache thinning decisions for converters.
const T & at(size_t index) const
Bounds-checked element access.
Helper to access the IAuxTypeVector for an aux variable.
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.
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 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.
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
A packed version of ElementLink.