ATLAS Offline Software
IAuxTypeVectorFactory.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 /*
4  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5 */
14 #ifndef ATHCONTAINERSINTERFACES_IAUXTYPEVECTORFACTORY_H
15 #define ATHCONTAINERSINTERFACES_IAUXTYPEVECTORFACTORY_H
16 
17 
19 #include <cstddef>
20 #include <typeinfo>
21 #include <memory>
22 #include <cstdlib>
23 
24 
25 namespace SG {
26 
27 
28 class IAuxTypeVector;
29 class AuxVectorData;
30 
31 
50 {
51 public:
56 
57 
67  virtual
68  std::unique_ptr<IAuxTypeVector> create (SG::auxid_t auxid,
69  size_t size,
70  size_t capacity,
71  bool isLinked) const = 0;
72 
73 
93  virtual
94  std::unique_ptr<IAuxTypeVector> createFromData (SG::auxid_t auxid,
95  void* data,
96  IAuxTypeVector* linkedVector,
97  bool isPacked,
98  bool ownFlag,
99  bool isLinked) const = 0;
100 
101 
113  virtual void copy (SG::auxid_t auxid,
114  AuxVectorData& dst, size_t dst_index,
115  const AuxVectorData& src, size_t src_index,
116  size_t n) const = 0;
117 
118 
132  void copy (SG::auxid_t auxid,
133  AuxVectorData&& dst, size_t dst_index,
134  const AuxVectorData& src, size_t src_index,
135  size_t n) const
136  {
137  copy (auxid, dst, dst_index, src, src_index, n);
138  }
139 
140 
153  virtual void copyForOutput (SG::auxid_t auxid,
154  AuxVectorData& dst, size_t dst_index,
155  const AuxVectorData& src, size_t src_index,
156  size_t n) const = 0;
157 
158 
171  virtual void swap (SG::auxid_t auxid,
172  AuxVectorData& a, size_t aindex,
173  AuxVectorData& b, size_t bindex,
174  size_t n) const = 0;
175 
176 
184  virtual void clear (SG::auxid_t auxid,
185  AuxVectorData& dst, size_t dst_index,
186  size_t n) const = 0;
187 
188 
192  virtual size_t getEltSize() const = 0;
193 
194 
198  virtual const std::type_info* tiVec() const = 0;
199 
200 
206  virtual bool isDynamic() const = 0;
207 
208 
214  virtual const std::type_info* tiAlloc() const = 0;
215 
216 
220  virtual std::string tiAllocName() const = 0;
221 };
222 
223 
224 } // namespace SG
225 
226 
227 #endif // not ATHCONTAINERSINTERFACES_IAUXTYPEVECTORFACTORY_H
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
SG::IAuxTypeVectorFactory::createFromData
virtual std::unique_ptr< IAuxTypeVector > createFromData(SG::auxid_t auxid, void *data, IAuxTypeVector *linkedVector, bool isPacked, bool ownFlag, bool isLinked) const =0
Create a vector object of this type from a data blob.
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
SG::IAuxTypeVectorFactory::getEltSize
virtual size_t getEltSize() const =0
Return the size of an element of this vector type.
WriteCellNoiseToCool.src
src
Definition: WriteCellNoiseToCool.py:513
SG::IAuxTypeVectorFactory::create
virtual std::unique_ptr< IAuxTypeVector > create(SG::auxid_t auxid, size_t size, size_t capacity, bool isLinked) const =0
Create a vector object of this type.
SG::IAuxTypeVectorFactory::clear
virtual void clear(SG::auxid_t auxid, AuxVectorData &dst, size_t dst_index, size_t n) const =0
Clear a range of elements within a vector.
SG::IAuxTypeVectorFactory::tiAllocName
virtual std::string tiAllocName() const =0
Return the (demangled) name of the vector allocator.
SG::IAuxTypeVectorFactory::swap
virtual void swap(SG::auxid_t auxid, AuxVectorData &a, size_t aindex, AuxVectorData &b, size_t bindex, size_t n) const =0
Swap elements between vectors.
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
SG::auxid_t
size_t auxid_t
Identifier for a particular aux data item.
Definition: AuxTypes.h:27
beamspotman.n
n
Definition: beamspotman.py:731
SG::IAuxTypeVectorFactory
Interface for factory objects that create vectors.
Definition: IAuxTypeVectorFactory.h:50
SG::IAuxTypeVectorFactory::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 =0
Copy elements between vectors, possibly applying thinning.
SG::IAuxTypeVectorFactory::tiAlloc
virtual const std::type_info * tiAlloc() const =0
Return the type_info of the vector allocator.
SG::IAuxTypeVectorFactory::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 =0
Copy elements between vectors.
SG::IAuxTypeVectorFactory::isDynamic
virtual bool isDynamic() const =0
True if the vectors created by this factory work by dynamic emulation (via TVirtualCollectionProxy or...
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
SG::IAuxTypeVectorFactory::tiVec
virtual const std::type_info * tiVec() const =0
Return the type_info of the vector.
SG::IAuxTypeVectorFactory::~IAuxTypeVectorFactory
virtual ~IAuxTypeVectorFactory()
Destructor.
Definition: IAuxTypeVectorFactory.h:55
AuxTypes.h
Basic definitions for auxiliary types.
a
TList * a
Definition: liststreamerinfos.cxx:10
SG::IAuxTypeVectorFactory::copy
void copy(SG::auxid_t auxid, AuxVectorData &&dst, size_t dst_index, const AuxVectorData &src, size_t src_index, size_t n) const
Copy elements between vectors.
Definition: IAuxTypeVectorFactory.h:132
SG::IAuxTypeVector
Abstract interface for manipulating vectors of arbitrary types.
Definition: IAuxTypeVector.h:40
SG::AuxVectorData
Manage lookup of vectors of auxiliary data.
Definition: AuxVectorData.h:167