ATLAS Offline Software
Loading...
Searching...
No Matches
PackedLinkConversions.h
Go to the documentation of this file.
1// This file's extension implies that it's C, but it's really -*- C++ -*-.
2/*
3 * Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration.
4 */
11
12
13#ifndef ATHCONTAINERS_PACKEDLINKCONVERSIONS_H
14#define ATHCONTAINERS_PACKEDLINKCONVERSIONS_H
15
16
21#include "AthLinks/ElementLink.h"
22#include "AthLinks/DataLink.h"
23#include "CxxUtils/ranges.h"
26#include <vector>
27
28
29namespace SG { namespace detail {
30
31
35template <class CONT>
68
69
73template <class CONT>
113
114
118template <class CONT>
120{
121private:
124
125
126public:
128 using value_type = typename PLVH::Link_t;
129
131 using PLink_t = typename PLVH::PLink_t;
132
134 using DLink_t = typename PLVH::DLink_t;
135
138
139
147 SG::auxid_t auxid,
148 SG::auxid_t linked_auxid);
149
150
155 const value_type operator() (const PackedLinkBase& plink) const;
156
157
163 void set (PackedLinkBase& pl, const value_type& link);
164
165
171 template <class VALLOC, ElementLinkRange<CONT> RANGE>
172 void set (std::vector<PLink_t, VALLOC>& plv, const RANGE& r);
173
174
181 template <class VALLOC, ElementLinkRange<CONT> RANGE>
182 void insert (std::vector<PLink_t, VALLOC>& plv, size_t pos, const RANGE& r);
183
184
185private:
188
191
194};
195
196
197} } // namespace SG::detail
198
199
201
202
203#endif // not ATHCONTAINERS_PACKEDLINKCONVERSIONS_H
Allow customizing how aux data types are treated.
Manage lookup of vectors of auxiliary data.
Definition of PackedLink type.
Helper functions for managing PackedLink variables.
Add to a range class conversions to containers.
Allow customizing how aux data types are treated.
Manage lookup of vectors of auxiliary data.
Helper: Convert a PackedLink to an ElementLink.
typename PLVH::const_DataLink_span const_DataLink_span
Type of span over DataLinks.
PackedLinkVectorHelper< CONT > PLVH
PackedLinkConstConverter(const const_DataLink_span &dlinks)
Constructor.
ElementLink< CONT > value_type
Resulting ElementLink type.
const value_type operator()(const PackedLinkBase &plink) const
Convert a PackedLink to an ElementLink.
const_DataLink_span m_dlinks
Span over DataLinks.
detail::PackedLinkVectorHelper< typename PROXY::Cont_t > PLVH
void insert(std::vector< PLink_t, VALLOC > &plv, size_t pos, const RANGE &r)
Insert a range of ElementLinks into a vector of PackedLinks.
void set(PackedLinkBase &pl, const value_type &link)
Convert an ElementLink to a PackedLink.
void set(std::vector< PLink_t, VALLOC > &plv, const RANGE &r)
Convert a range of ElementLinks to a vector of PackedLinks.
const value_type operator()(const PackedLinkBase &plink) const
Convert a PackedLink to an ElementLink.
PackedLinkConverter(AuxVectorData &container, SG::auxid_t auxid, SG::auxid_t linked_auxid)
Constructor.
typename AuxDataTraits< PackedLink< CONT > >::const_span const_PackedLink_span
A span over the input PackedLink objects.
PackedLinkVectorConstConverter(const const_DataLink_span &dlinks)
Constructor.
CxxUtils::range_with_conv< CxxUtils::transform_view_with_at< const_PackedLink_span, detail::PackedLinkConstConverter< CONT > > > value_type
Transform the span of PackedLinks to a span of ElementLinks.
value_type operator()(const std::vector< PackedLink< CONT >, VALLOC > &velt) const
Convert a vector of PackedLinks to a span over ElementLinks.
typename PLVH::const_DataLink_span const_DataLink_span
Type of span over DataLinks.
const_DataLink_span m_dlinks
Span over DataLinks.
Helper to access the IAuxTypeVector for an aux variable.
detail::AuxDataSpan< DataLinkBase > DataLinkBase_span
Spans over the linked DataLinks.
Helper functions for managing PackedLink variables.
detail::AuxDataConstSpan< DataLink< CONT > > const_DataLink_span
ElementLink< CONT > Link_t
The (linked) data links.
PackedLink< CONT > PLink_t
The PackedLinks.
int r
Definition globals.cxx:22
range_with_at< std::ranges::transform_view< SPAN, XFORM > > transform_view_with_at
Helper to add at() methods to a transform_view.
Forward declaration.
size_t auxid_t
Identifier for a particular aux data item.
Definition AuxTypes.h:27
Add at() methods to a range class.
Add to a range class conversions to containers.
C++20 range helpers.
A packed version of ElementLink.