ATLAS Offline Software
AuxTypeVectorFactory.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 */
18 
19 
20 #ifndef ATHCONTAINERS_AUXTYPEVECTORFACTORY_H
21 #define ATHCONTAINERS_AUXTYPEVECTORFACTORY_H
22 
23 
24 namespace SG {
25 
26 
37 template <class T, class ALLOC = AuxAllocator_t<T> >
39  : public IAuxTypeVectorFactory
40 {
41 public:
43 
45 
55  virtual
56  std::unique_ptr<IAuxTypeVector> create (SG::auxid_t auxid,
57  size_t size,
58  size_t capacity,
59  bool isLinked) const override;
60 
61 
81  virtual
82  std::unique_ptr<IAuxTypeVector> createFromData (SG::auxid_t auxid,
83  void* data,
84  IAuxTypeVector* linkedVector,
85  bool isPacked,
86  bool ownFlag,
87  bool isLinked) const override;
88 
89 
101  virtual void copy (SG::auxid_t auxid,
102  AuxVectorData& dst, size_t dst_index,
103  const AuxVectorData& src, size_t src_index,
104  size_t n) const override;
105 
106 
119  virtual void copyForOutput (SG::auxid_t auxid,
120  AuxVectorData& dst, size_t dst_index,
121  const AuxVectorData& src, size_t src_index,
122  size_t n) const override;
123 
124 
125 
138  virtual void swap (SG::auxid_t auxid,
139  AuxVectorData& a, size_t aindex,
140  AuxVectorData& b, size_t bindex,
141  size_t n) const override;
142 
143 
151  virtual void clear (SG::auxid_t auxid,
152  AuxVectorData& dst, size_t dst_index,
153  size_t n) const override;
154 
155 
159  virtual size_t getEltSize() const override;
160 
161 
165  virtual const std::type_info* tiVec() const override;
166 
167 
173  virtual bool isDynamic() const override;
174 
175 
179  virtual const std::type_info* tiAlloc() const override;
180 
181 
185  virtual std::string tiAllocName() const override;
186 
187 
188 private:
192  AuxVectorData& dst, size_t dst_index,
193  const AuxVectorData& src, size_t src_index,
194  size_t n) const;
195 
197  std::unique_ptr<IAuxTypeVector>
198  createFromData (auxid_t auxid, void* data, bool isPacked, bool ownFlag,
199  bool isLinked,
200  std::true_type) const;
201 
202  std::unique_ptr<IAuxTypeVector>
203  createFromData (auxid_t auxid, void* data, bool isPacked, bool ownFlag,
204  bool isLinked,
205  std::false_type) const;
206 };
207 
208 
209 
216 template <class T, class ALLOC = AuxAllocator_t<T> >
218  : public AuxTypeVectorFactoryImpl<T, ALLOC>
219 {
223  using Base::Base;
224 };
225 
226 
227 } // namespace SG
228 
229 
231 
232 
233 #endif // not ATHCONTAINERS_AUXTYPEVECTORFACTORY_H
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
SG::AuxTypeVectorFactoryImpl::copyForOutput
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.
WriteCellNoiseToCool.src
src
Definition: WriteCellNoiseToCool.py:513
SG::AuxTypeVectorFactory
Factory object that creates vectors using AuxTypeVector.
Definition: AuxTypeVectorFactory.h:219
SG::AuxTypeVectorFactoryImpl::createFromData
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.
SG::AuxTypeVectorFactoryImpl::tiAlloc
virtual const std::type_info * tiAlloc() const override
Return the type_info of the vector allocator.
SG::AuxTypeVectorFactoryImpl::copyImpl
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...
SG::AuxTypeVectorFactoryImpl::createFromData
std::unique_ptr< IAuxTypeVector > createFromData(auxid_t auxid, void *data, bool isPacked, bool ownFlag, bool isLinked, std::true_type) const
Helpers for creating vector from a data blob,.
SG::AuxTypeVectorFactoryImpl::create
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.
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
SG::AuxTypeVectorFactoryImpl< ElementLink< DataVector >, AuxAllocator_t< ElementLink< DataVector > > >::vector_value_type
typename AuxTypeVector_t::vector_value_type vector_value_type
Definition: AuxTypeVectorFactory.h:44
SG::auxid_t
size_t auxid_t
Identifier for a particular aux data item.
Definition: AuxTypes.h:27
SG::AuxTypeVectorT
Implementation of IAuxTypeVector holding a vector instance.
Definition: AuxTypeVector.h:303
SG::AuxTypeVectorFactoryImpl::AuxTypeVector_t
AuxTypeVector< T, ALLOC > AuxTypeVector_t
Definition: AuxTypeVectorFactory.h:42
beamspotman.n
n
Definition: beamspotman.py:731
SG::IAuxTypeVectorFactory
Interface for factory objects that create vectors.
Definition: IAuxTypeVectorFactory.h:50
AuxDataTraits.h
Allow customizing how aux data types are treated.
SG::AuxTypeVectorFactoryImpl::copy
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.
SG::AuxTypeVectorFactoryImpl
Factory object that creates vectors using AuxTypeVector.
Definition: AuxTypeVectorFactory.h:40
AuxVectorData.h
Manage lookup of vectors of auxiliary data.
normalizedTypeinfoName.h
Convert a type_info to a normalized string representation (matching the names used in the root dictio...
AuxTypeVector.h
Implementation of IAuxTypeVector for specific types.
AuxTypeVectorFactory.icc
SG::AuxTypeVectorFactoryImpl::swap
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.
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
SG::AuxTypeVectorFactoryImpl::getEltSize
virtual size_t getEltSize() const override
Return the size of an element of this vector type.
SG::AuxTypeVectorT::vector_value_type
typename Base::vector_value_type vector_value_type
Definition: AuxTypeVector.h:308
SG::AuxTypeVectorFactoryImpl::tiVec
virtual const std::type_info * tiVec() const override
Return the type_info of the vector.
a
TList * a
Definition: liststreamerinfos.cxx:10
SG::AuxTypeVectorFactoryImpl::createFromData
std::unique_ptr< IAuxTypeVector > createFromData(auxid_t auxid, void *data, bool isPacked, bool ownFlag, bool isLinked, std::false_type) const
IAuxTypeVectorFactory.h
Interface for factory objects that create vectors.
SG::IAuxTypeVector
Abstract interface for manipulating vectors of arbitrary types.
Definition: IAuxTypeVector.h:40
SG::AuxTypeVectorFactoryImpl::tiAllocName
virtual std::string tiAllocName() const override
Return the (demangled) name of the vector allocator.
SG::AuxTypeVectorFactoryImpl::clear
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.
SG::AuxVectorData
Manage lookup of vectors of auxiliary data.
Definition: AuxVectorData.h:167
SG::AuxTypeVectorFactoryImpl::isDynamic
virtual bool isDynamic() const override
True if the vectors created by this factory work by dynamic emulation (via TVirtualCollectionProxy or...