ATLAS Offline Software
Loading...
Searching...
No Matches
xAOD::TAuxVector Class Reference

Auxiliary vector type for types known to ROOT. More...

#include <TAuxVector.h>

Inheritance diagram for xAOD::TAuxVector:
Collaboration diagram for xAOD::TAuxVector:

Public Member Functions

 TAuxVector (const TAuxVectorFactory *factory, SG::auxid_t auxid, const ::TClass *cl, size_t size, size_t capacity, bool isLinked)
 Constructor.
 TAuxVector (const TAuxVector &parent)
 Copy constructor.
 ~TAuxVector ()
 Destructor.
TAuxVectoroperator= (const TAuxVector &other)
 Assignment operator.
virtual bool setOption (const AuxDataOption &)
 Set an option for this variable.
virtual std::unique_ptr< IAuxTypeVectortoPacked ()
 Make a packed version of the variable.
virtual const std::type_info * objType () const
 Return the type of the complete object to be saved.
virtual std::unique_ptr< IAuxTypeVectorlinkedVector ()
 Return IAuxTypeVector of a linked variable, if there is one.
bool isLinked () const
 Return true if this variable is linked from another one.
auxid_t auxid () const
 Return the auxid of the variable this vector represents.
const AuxDataSpanBase & getDataSpan () const
 Return a reference to a description of this vector's start+size.
Function implementing the SG::IAuxTypeVector interface
virtual std::unique_ptr< SG::IAuxTypeVectorclone () const override
 Copy the managed vector.
virtual void * toPtr () override
 Return a pointer to the start of the vector's data.
virtual const void * toPtr () const override
 Return a pointer to the start of the vector's data.
virtual void * toVector () override
 Return a pointer to the STL vector itself.
virtual size_t size () const override
 Return the size of the vector.
virtual bool resize (size_t sz) override
 Change the size of the vector.
virtual void reserve (size_t sz) override
 Change the capacity of the vector.
virtual bool shift (size_t pos, ptrdiff_t offs) override
 Shift the elements of the vector.
virtual bool insertMove (size_t pos, void *src, size_t src_pos, size_t src_n, SG::IAuxStore &srcStore) override
 Insert a range of elements via move.

Protected Member Functions

virtual SG::AuxDataSpanBase getDataSpanImpl () const override final
 Return a span object describing the current vector.
void storeDataSpan ()
 Update the stored span.
void storeDataSpan (void *beg, size_t size)
 Update the stored span.
void resetDataSpan ()
 Invalidate the stored span.

Private Member Functions

void copyRange (const void *src, void *dst, size_t n)
 Function copying the payload of a range to a new location.
void clearRange (void *dst, size_t n)

Private Attributes

const TAuxVectorFactorym_factory
 The parent factory object.
std::unique_ptr<::TVirtualCollectionProxy > m_proxy
 ROOT's description of the vector type Cloned from the proxy held by the TClass and permanently bound to m_vec.
void * m_vec
 Pointer to the vector object.
auxid_t m_auxid
 The auxid of the variable this vector represents.
bool m_isLinked
 True if this variable is linked from another one.
CxxUtils::CachedValue< AuxDataSpanBase > m_span
 Description of the vector start+size.

Detailed Description

Auxiliary vector type for types known to ROOT.

This class is used for types known to ROOT, which have not received a concrete auxiliary vector type yet. (By having been accessed explicitly.)

The code is pretty much a copy of what Scott wrote for RootStorageSvc for the offline code.

Author
Scott Snyder Scott.nosp@m..Sny.nosp@m.der@c.nosp@m.ern..nosp@m.ch
Attila Krasznahorkay Attil.nosp@m.a.Kr.nosp@m.aszna.nosp@m.hork.nosp@m.ay@ce.nosp@m.rn.c.nosp@m.h

Definition at line 30 of file TAuxVector.h.

Constructor & Destructor Documentation

◆ TAuxVector() [1/2]

xAOD::TAuxVector::TAuxVector ( const TAuxVectorFactory * factory,
SG::auxid_t auxid,
const ::TClass * cl,
size_t size,
size_t capacity,
bool isLinked )

Constructor.

Definition at line 20 of file TAuxVector.cxx.

25 m_factory( factory ),
26 m_proxy( cl->GetCollectionProxy()->Generate() ), m_vec( cl->New() ) {
27
28 // A little sanity check:
29 if( ! m_proxy ) {
30 ::Fatal( "xAOD::TAuxVector::TAuxVector",
31 XAOD_MESSAGE( "No collection proxy found for type %s" ),
32 cl->GetName() );
33 }
34 else {
35 m_proxy->PushProxy( m_vec );
36 }
37
38 // Make sure the object is of the right size:
39 this->resize( size );
40 }
#define XAOD_MESSAGE(MESSAGE)
Simple macro for printing error/verbose messages.
bool isLinked() const
Return true if this variable is linked from another one.
auxid_t auxid() const
Return the auxid of the variable this vector represents.
IAuxTypeVector(auxid_t auxid, bool isLinked)
Constructor.
std::unique_ptr<::TVirtualCollectionProxy > m_proxy
ROOT's description of the vector type Cloned from the proxy held by the TClass and permanently bound ...
Definition TAuxVector.h:94
virtual size_t size() const override
Return the size of the vector.
virtual bool resize(size_t sz) override
Change the size of the vector.
void * m_vec
Pointer to the vector object.
Definition TAuxVector.h:96
const TAuxVectorFactory * m_factory
The parent factory object.
Definition TAuxVector.h:89
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]

◆ TAuxVector() [2/2]

xAOD::TAuxVector::TAuxVector ( const TAuxVector & parent)

Copy constructor.

Definition at line 42 of file TAuxVector.cxx.

43 : IAuxTypeVector( parent ),
44 m_factory( parent.m_factory ), m_proxy( parent.m_proxy->Generate() ),
45 m_vec( parent.m_proxy->GetCollectionClass()->New() ) {
46
47 m_proxy->PushProxy( m_vec );
48
49 // Check the size of the parent object:
50 const size_t size = parent.size();
51 // Check if we need to do anything:
52 if( ! size ) {
53 return;
54 }
55
56 // First off, resize this vector:
57 this->resize( size );
58
59 // Get a pointer to the start of the parent's payload:
60 const void* parentPtr = parent.toPtr();
61
62 // Do the copy:
63 this->copyRange( parentPtr, this->toPtr(), size );
64 }
virtual void * toPtr() override
Return a pointer to the start of the vector's data.
void copyRange(const void *src, void *dst, size_t n)
Function copying the payload of a range to a new location.

◆ ~TAuxVector()

xAOD::TAuxVector::~TAuxVector ( )

Destructor.

Definition at line 66 of file TAuxVector.cxx.

66 {
67
68 m_proxy->Destructor( m_vec );
69 }

Member Function Documentation

◆ auxid()

auxid_t SG::IAuxTypeVector::auxid ( ) const
inlineinherited

Return the auxid of the variable this vector represents.

Definition at line 232 of file IAuxTypeVector.h.

233 {
234 return m_auxid;
235 }
auxid_t m_auxid
The auxid of the variable this vector represents.

◆ clearRange()

void xAOD::TAuxVector::clearRange ( void * dst,
size_t n )
private

Definition at line 239 of file TAuxVector.cxx.

239 {
240
241 // Size of an element in the vector:
242 size_t eltsz = m_proxy->GetIncrement();
243
244 // If the payload is a class:
245 if( m_proxy->GetValueClass() ) {
246 m_factory->clear (dst, 0, n);
247 }
248 // If the payload is an array of primitives, the cleaning is much simpler:
249 else {
250 memset( dst, 0, n * eltsz );
251 }
252
253 return;
254 }

◆ clone()

std::unique_ptr< SG::IAuxTypeVector > xAOD::TAuxVector::clone ( ) const
overridevirtual

Copy the managed vector.

Implements SG::IAuxTypeVector.

Definition at line 109 of file TAuxVector.cxx.

109 {
110
111 return std::make_unique< TAuxVector >( *this );
112 }

◆ copyRange()

void xAOD::TAuxVector::copyRange ( const void * src,
void * dst,
size_t n )
private

Function copying the payload of a range to a new location.

Definition at line 228 of file TAuxVector.cxx.

228 {
229
230 SG::AuxVectorInterface idst( auxid(), n, dst );
231 m_factory->copy( auxid(),
232 idst, 0,
233 SG::AuxVectorInterface( auxid(), n, src ), 0,
234 n );
235
236 return;
237 }

◆ getDataSpan()

const AuxDataSpanBase & SG::IAuxTypeVector::getDataSpan ( ) const
inlineinherited

Return a reference to a description of this vector's start+size.

This returns a reference to an AuxDataSpanBase, which gives the start and size of the vector. This object will be updated if the vector changes.

For low overhead, we want this to be a non-virtual function call. However, for variables being read, the usage pattern is that we first create the @IAuxTypeVector object, give the underlying std::vector object to ROOT, and then ROOT fills the vector without the involvement of the IAuxTypeVector. To be able to have this work correctly, we need to defer initializing the span object until the first time that getDataSpan gets called. We do this with a CachedValue. If the span has already been initialized, we just return it; otherwise, we make a virtual call to fetch the vector from the derived class.

Be aware: this is in principle a const-correctness violation, since AuxDataSpanBase has a non-const pointer to the start of the vector. But doing it properly is kind of painful, and as this interface is only meant to be used internally, it's likely not a real problem.

Definition at line 261 of file IAuxTypeVector.h.

262 {
263 if (!m_span.isValid()) {
264 m_span.set (this->getDataSpanImpl());
265 }
266 return *m_span.ptr();
267 }
virtual AuxDataSpanBase getDataSpanImpl() const =0
Return a span object describing the current vector.
CxxUtils::CachedValue< AuxDataSpanBase > m_span
Description of the vector start+size.

◆ getDataSpanImpl()

SG::AuxDataSpanBase xAOD::TAuxVector::getDataSpanImpl ( ) const
finaloverrideprotectedvirtual

Return a span object describing the current vector.

Implements SG::IAuxTypeVector.

Definition at line 256 of file TAuxVector.cxx.

257 {
258 return SG::AuxDataSpanBase( const_cast<void*> (toPtr()), size() );
259 }

◆ insertMove()

bool xAOD::TAuxVector::insertMove ( size_t pos,
void * src,
size_t src_pos,
size_t src_n,
SG::IAuxStore & srcStore )
overridevirtual

Insert a range of elements via move.

Implements SG::IAuxTypeVector.

Definition at line 206 of file TAuxVector.cxx.

209 {
210 size_t eltsz = m_proxy->GetIncrement();
211 const void* orig = this->getDataSpan().beg;
212
213 char* srcp = reinterpret_cast<char*> (src);
214 char* begp = srcp + src_pos*eltsz;
215
216 shift (pos, src_n);
217 // FIXME: want move, not copy.
218 // But i don't seem to be able to call move operations through cling,
219 // so just use copy for now.
220 copyRange (begp,
221 reinterpret_cast<char*>(this->toPtr()) + pos*eltsz,
222 src_n);
223 this->storeDataSpan();
224 return this->getDataSpan().beg == orig;
225 }
const AuxDataSpanBase & getDataSpan() const
Return a reference to a description of this vector's start+size.
void storeDataSpan()
Update the stored span.
virtual bool shift(size_t pos, ptrdiff_t offs) override
Shift the elements of the vector.
void * beg
Pointer to the start of the variable's vector.
Definition AuxDataSpan.h:54

◆ isLinked()

bool SG::IAuxTypeVector::isLinked ( ) const
inlineinherited

Return true if this variable is linked from another one.

This is inlined here rather than being a virtual function because this is frequently called from loops over auxids.

Definition at line 226 of file IAuxTypeVector.h.

226{ return m_isLinked; }
bool m_isLinked
True if this variable is linked from another one.

◆ linkedVector()

virtual std::unique_ptr< IAuxTypeVector > SG::IAuxTypeVector::linkedVector ( )
inlinevirtualinherited

Return IAuxTypeVector of a linked variable, if there is one.

If the variable represented by this vector has a linked variable, then return its IAuxTypeVector. Otherwise, return nullptr. Beware of potential threading issues: the returned object is not locked, so it should not be modified in contexts where the parent container cannot be modified.

This returns a unique_ptr, so it can generally be called only once on a given instance. After that, it will return nullptr.

Reimplemented in SG::JaggedVecVectorT< JaggedVecVectorHolder< T, ALLOC > >, SG::PackedLinkVectorT< PackedLinkVectorHolder< CONT, ALLOC > >, and SG::PackedLinkVectorT< PackedLinkVVectorHolder< CONT, VALLOC, VELT, ALLOC > >.

Definition at line 217 of file IAuxTypeVector.h.

217{ return nullptr; }

◆ objType()

virtual const std::type_info * SG::IAuxTypeVector::objType ( ) const
inlinevirtualinherited

Return the type of the complete object to be saved.

For example, if the object is a std::vector, then we return the type_info of the vector. But if we're holding a PackedContainer, then we return the type_info of the PackedContainer.

Can return null if the operation is not supported. In that case, I/O will use the type found from the variable registry.

Reimplemented in SG::AuxTypeVectorHolder< T, CONT >, SG::AuxTypeVectorHolder< Elt, typename AuxDataTraits< Elt, ALLOC >::vector_type >, SG::AuxTypeVectorHolder< JaggedVecElt< T >, AuxDataTraits< JaggedVecElt< T >, AuxAllocator_t< JaggedVecElt< T > > >::vector_type >, SG::AuxTypeVectorHolder< JaggedVecElt< T >, AuxDataTraits< JaggedVecElt< T >, VEC::allocator_type >::vector_type >, SG::AuxTypeVectorHolder< PackedLink< CONT >, AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type >, SG::AuxTypeVectorHolder< PackedLink< CONT >, typename AuxDataTraits< PackedLink< CONT >, ALLOC >::vector_type >, SG::AuxTypeVectorHolder< PackedLink< TARG >, AuxDataTraits< PackedLink< TARG >, VEC::allocator_type >::vector_type >, SG::AuxTypeVectorHolder< std::vector< SG::PackedLink< TARG >, VALLOC >, AuxDataTraits< std::vector< SG::PackedLink< TARG >, VALLOC >, VEC::allocator_type >::vector_type >, SG::AuxTypeVectorHolder< T, std::vector< T > >, SG::AuxTypeVectorHolder< typename AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type, AuxDataTraits< typename AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type, AuxAllocator_t< typename AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type > >::vector_type >, SG::AuxTypeVectorHolder< VELT, typename AuxDataTraits< VELT, ALLOC >::vector_type >, SG::RootAuxVector, and xAOD::AuxPersInfo< T >.

Definition at line 202 of file IAuxTypeVector.h.

202{ return 0; }

◆ operator=()

TAuxVector & xAOD::TAuxVector::operator= ( const TAuxVector & other)

Assignment operator.

Definition at line 71 of file TAuxVector.cxx.

71 {
72
73 // Check if anything needs to be done:
74 if( this == &other ) {
75 return *this;
76 }
77
78 // Clean out the previous payload:
79 m_proxy->Destructor( m_vec );
80
81 // Get the information from the other object:
82 IAuxTypeVector::operator=( other );
83 m_factory = other.m_factory;
84 m_proxy.reset( other.m_proxy->Generate() );
85
86 // Create a new vector:
87 m_vec = m_proxy->GetCollectionClass()->New();
88 m_proxy->PushProxy( m_vec );
89
90 IAuxTypeVector::resetDataSpan();
91
92 // Check the size of the other object:
93 const size_t size = other.size();
94 // Check if we need to do anything:
95 if( ! size ) {
96 return *this;
97 }
98
99 // Get a pointer to the start of the other object's payload:
100 const void* otherPtr = other.toPtr();
101
102 // Do the copy:
103 this->copyRange( otherPtr, this->toPtr(), size );
104
105 // Return a reference to this object:
106 return *this;
107 }

◆ reserve()

void xAOD::TAuxVector::reserve ( size_t sz)
overridevirtual

Change the capacity of the vector.

Implements SG::IAuxTypeVector.

Definition at line 143 of file TAuxVector.cxx.

143 {
144
145 return;
146 }

◆ resetDataSpan()

void SG::IAuxTypeVector::resetDataSpan ( )
inlineprotectedinherited

Invalidate the stored span.

Definition at line 297 of file IAuxTypeVector.h.

298 {
299 m_span.reset();
300 }

◆ resize()

bool xAOD::TAuxVector::resize ( size_t sz)
overridevirtual

Change the size of the vector.

Implements SG::IAuxTypeVector.

Definition at line 135 of file TAuxVector.cxx.

135 {
136
137 const void* orig = this->getDataSpan().beg;
138 m_proxy->Allocate( sz, false );
139 this->storeDataSpan();
140 return this->getDataSpan().beg == orig;
141 }
static Double_t sz

◆ setOption()

virtual bool SG::IAuxTypeVector::setOption ( const AuxDataOption & )
inlinevirtualinherited

Set an option for this variable.

Parameters
optionThe option to set.

The interpretation of the option depends on the particular representation of the variable provided by the concrete class.

Returns true if the option setting was successful; false otherwise.

Reimplemented in SG::AuxTypeVectorHolder< T, CONT >, SG::AuxTypeVectorHolder< Elt, typename AuxDataTraits< Elt, ALLOC >::vector_type >, SG::AuxTypeVectorHolder< JaggedVecElt< T >, AuxDataTraits< JaggedVecElt< T >, AuxAllocator_t< JaggedVecElt< T > > >::vector_type >, SG::AuxTypeVectorHolder< JaggedVecElt< T >, AuxDataTraits< JaggedVecElt< T >, VEC::allocator_type >::vector_type >, SG::AuxTypeVectorHolder< PackedLink< CONT >, AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type >, SG::AuxTypeVectorHolder< PackedLink< CONT >, typename AuxDataTraits< PackedLink< CONT >, ALLOC >::vector_type >, SG::AuxTypeVectorHolder< PackedLink< TARG >, AuxDataTraits< PackedLink< TARG >, VEC::allocator_type >::vector_type >, SG::AuxTypeVectorHolder< std::vector< SG::PackedLink< TARG >, VALLOC >, AuxDataTraits< std::vector< SG::PackedLink< TARG >, VALLOC >, VEC::allocator_type >::vector_type >, SG::AuxTypeVectorHolder< T, std::vector< T > >, SG::AuxTypeVectorHolder< typename AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type, AuxDataTraits< typename AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type, AuxAllocator_t< typename AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type > >::vector_type >, and SG::AuxTypeVectorHolder< VELT, typename AuxDataTraits< VELT, ALLOC >::vector_type >.

Definition at line 172 of file IAuxTypeVector.h.

173 { return false; }

◆ shift()

bool xAOD::TAuxVector::shift ( size_t pos,
ptrdiff_t offs )
overridevirtual

Shift the elements of the vector.

Parameters
posThe starting index for the shift.
offsThe (signed) amount of the shift.

This operation shifts the elements in the vectors for all aux data items, to implement an insertion or deletion. offs may be either positive or negative.

If offs is positive, then the container is growing. The container size should be increased by offs, the element at pos moved to pos + offs, and similarly for following elements. The elements between pos and pos + offs should be default-initialized.

If offs is negative, then the container is shrinking. The element at pos should be moved to pos + offs, and similarly for following elements. The container should then be shrunk by -offs elements (running destructors as appropriate).

Returns true if it is known that iterators have not been invalidated; false otherwise. (Will always return false when increasing the size of an empty container.)

Implements SG::IAuxTypeVector.

Definition at line 174 of file TAuxVector.cxx.

174 {
175
176 size_t eltsz = m_proxy->GetIncrement();
177 if( offs < 0 ) {
178
179 if( -offs > static_cast< ptrdiff_t >( pos ) ) {
180 offs = -pos;
181 }
182 char* beg = reinterpret_cast< char* >( m_proxy->At( 0 ) );
183 copyRange( beg + eltsz * pos,
184 beg + eltsz * ( pos + offs ),
185 m_proxy->Size() - pos );
186 m_proxy->Allocate( m_proxy->Size() + offs, false );
187 this->storeDataSpan();
188 return true;
189
190 } else if( offs > 0 ) {
191
192 size_t oldsz = m_proxy->Size();
193 m_proxy->Allocate( oldsz + offs, false );
194 char* beg = reinterpret_cast< char* >( m_proxy->At( 0 ) );
195 copyRange( beg + eltsz * pos,
196 beg + eltsz * ( pos + offs ),
197 m_proxy->Size() - pos - offs);
198 clearRange( beg + eltsz * pos, offs );
199 this->storeDataSpan();
200 return false;
201 }
202
203 return true;
204 }
void clearRange(void *dst, size_t n)

◆ size()

size_t xAOD::TAuxVector::size ( ) const
overridevirtual

Return the size of the vector.

Implements SG::IAuxTypeVector.

Definition at line 130 of file TAuxVector.cxx.

130 {
131
132 return m_proxy->Size();
133 }

◆ storeDataSpan() [1/2]

void SG::IAuxTypeVector::storeDataSpan ( void * beg,
size_t size )
inlineprotectedinherited

Update the stored span.

Parameters
begThe start of the vector.
sizeThe length of the vector.

Definition at line 284 of file IAuxTypeVector.h.

285 {
286 // Only do this if the span is already valid, so that it doesn't
287 // get marked valid before ROOT I/O.
288 if (m_span.isValid()) {
289 m_span.store (AuxDataSpanBase (beg, size));
290 }
291 }
virtual size_t size() const =0
Return the size of the vector.

◆ storeDataSpan() [2/2]

void xAOD::TAuxVector::storeDataSpan ( )
protected

Update the stored span.

Definition at line 261 of file TAuxVector.cxx.

262 {
263 IAuxTypeVector::storeDataSpan( toPtr(), size() );
264 }

◆ toPacked()

virtual std::unique_ptr< IAuxTypeVector > SG::IAuxTypeVector::toPacked ( )
inlinevirtualinherited

Make a packed version of the variable.

If possible, return a new vector object that stores the data in a PackedContainer. The data itself should be moved to the new container (so that this vector becomes empty). This ensures that pointers to the data are preserved.

If successful, a newly-allocated object is returned. A null pointer is returned on failure (operation not supported, type can't be packed, type is already packed).

Reimplemented in SG::AuxTypeVectorHolder< T, CONT >, SG::AuxTypeVectorHolder< Elt, typename AuxDataTraits< Elt, ALLOC >::vector_type >, SG::AuxTypeVectorHolder< JaggedVecElt< T >, AuxDataTraits< JaggedVecElt< T >, AuxAllocator_t< JaggedVecElt< T > > >::vector_type >, SG::AuxTypeVectorHolder< JaggedVecElt< T >, AuxDataTraits< JaggedVecElt< T >, VEC::allocator_type >::vector_type >, SG::AuxTypeVectorHolder< PackedLink< CONT >, AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type >, SG::AuxTypeVectorHolder< PackedLink< CONT >, typename AuxDataTraits< PackedLink< CONT >, ALLOC >::vector_type >, SG::AuxTypeVectorHolder< PackedLink< TARG >, AuxDataTraits< PackedLink< TARG >, VEC::allocator_type >::vector_type >, SG::AuxTypeVectorHolder< std::vector< SG::PackedLink< TARG >, VALLOC >, AuxDataTraits< std::vector< SG::PackedLink< TARG >, VALLOC >, VEC::allocator_type >::vector_type >, SG::AuxTypeVectorHolder< T, std::vector< T > >, SG::AuxTypeVectorHolder< typename AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type, AuxDataTraits< typename AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type, AuxAllocator_t< typename AuxDataTraits< PackedLink< CONT >, AuxAllocator_t< PackedLink< CONT > > >::vector_type > >::vector_type >, and SG::AuxTypeVectorHolder< VELT, typename AuxDataTraits< VELT, ALLOC >::vector_type >.

Definition at line 188 of file IAuxTypeVector.h.

188{ return 0; }

◆ toPtr() [1/2]

const void * xAOD::TAuxVector::toPtr ( ) const
overridevirtual

Return a pointer to the start of the vector's data.

Implements SG::IAuxTypeVector.

Definition at line 120 of file TAuxVector.cxx.

120 {
121
122 return m_proxy->At( 0 );
123 }

◆ toPtr() [2/2]

void * xAOD::TAuxVector::toPtr ( )
overridevirtual

Return a pointer to the start of the vector's data.

Implements SG::IAuxTypeVector.

Definition at line 115 of file TAuxVector.cxx.

115 {
116
117 return m_proxy->At( 0 );
118 }

◆ toVector()

void * xAOD::TAuxVector::toVector ( )
overridevirtual

Return a pointer to the STL vector itself.

Implements SG::IAuxTypeVector.

Definition at line 125 of file TAuxVector.cxx.

125 {
126
127 return m_vec;
128 }

Member Data Documentation

◆ m_auxid

auxid_t SG::IAuxTypeVector::m_auxid
privateinherited

The auxid of the variable this vector represents.

Definition at line 305 of file IAuxTypeVector.h.

◆ m_factory

const TAuxVectorFactory* xAOD::TAuxVector::m_factory
private

The parent factory object.

Definition at line 89 of file TAuxVector.h.

◆ m_isLinked

bool SG::IAuxTypeVector::m_isLinked
privateinherited

True if this variable is linked from another one.

Definition at line 308 of file IAuxTypeVector.h.

◆ m_proxy

std::unique_ptr<::TVirtualCollectionProxy> xAOD::TAuxVector::m_proxy
private

ROOT's description of the vector type Cloned from the proxy held by the TClass and permanently bound to m_vec.

That makes things a bit more efficient, and prevents potential thread-safety problems.

Definition at line 94 of file TAuxVector.h.

◆ m_span

CxxUtils::CachedValue<AuxDataSpanBase> SG::IAuxTypeVector::m_span
privateinherited

Description of the vector start+size.

Definition at line 311 of file IAuxTypeVector.h.

◆ m_vec

void* xAOD::TAuxVector::m_vec
private

Pointer to the vector object.

Definition at line 96 of file TAuxVector.h.


The documentation for this class was generated from the following files: