ATLAS Offline Software
Loading...
Searching...
No Matches
SG::RootAuxVector Class Reference

Dynamic implementation of IAuxTypeVector, relying on root vector proxy. More...

#include <RootAuxVectorFactory.h>

Inheritance diagram for SG::RootAuxVector:
Collaboration diagram for SG::RootAuxVector:

Public Member Functions

 RootAuxVector (const RootAuxVectorFactory *factory, SG::auxid_t auxid, size_t size, size_t capacity, bool isLinked)
 Constructor.
 RootAuxVector (const RootAuxVectorFactory *factory, SG::auxid_t auxid, void *data, bool isPacked, bool ownFlag, bool isLinked)
 Constructor, from a pointer to a vector object.
 RootAuxVector (const RootAuxVector &other)
 Copy constructor.
RootAuxVectoroperator= (const RootAuxVector &)=delete
virtual ~RootAuxVector () override
 Destructor.
virtual std::unique_ptr< SG::IAuxTypeVectorclone () const override
 Make a copy of this 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 overall object.
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 elements into the vector via move semantics.
virtual const std::type_info * objType () const override
 Return the type of the complete object to be saved.
virtual void toTransient (const EventContext &ctx) override
 Perform post-read processing on this auxiliary variable.
virtual bool setOption (const AuxDataOption &)
 Set an option for this variable.
virtual std::unique_ptr< IAuxTypeVectortoPacked ()
 Make a packed version of the variable.
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 AuxDataSpanBasegetDataSpan () const
 Return a reference to a description of this vector's start+size.

Protected Member Functions

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

Private Member Functions

void storeDataSpan ()
 Update the stored span.

Private Attributes

const RootAuxVectorFactorym_factory
 Pointer back to the factory class for this type.
std::unique_ptr< TVirtualCollectionProxy > m_proxy
 The collection proxy for the vector.
void * m_obj
 Pointer to the overall object itself.
void * m_vec
 Pointer to the vector object itself.
bool m_ownFlag
 Should be delete 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< AuxDataSpanBasem_span
 Description of the vector start+size.

Detailed Description

Dynamic implementation of IAuxTypeVector, relying on root vector proxy.

This is used for the case when we need to manipulate an aux data vector present in an input data file but we have neither a proper template instantiation for the factory (because the variable was never explicitly referenced), nor can we find a dictionary entry for the factory.

This implementation works by relying entirely on the root dictionary information.

Definition at line 46 of file RootAuxVectorFactory.h.

Constructor & Destructor Documentation

◆ RootAuxVector() [1/3]

SG::RootAuxVector::RootAuxVector ( const RootAuxVectorFactory * factory,
SG::auxid_t auxid,
size_t size,
size_t capacity,
bool isLinked )

Constructor.

Makes a new vector.

Parameters
factoryThe factory object for this type.
auxidThe auxid of the variable this vector represents.
sizeInitial size of the new vector.
capacityInitial capacity of the new vector.
isLinkedTrue if this variable is linked from another one.

Definition at line 65 of file RootAuxVectorFactory.cxx.

70 m_factory (factory),
71 m_ownFlag (true)
72{
73 const TClass* vecClass = factory->vecClass();
74 m_proxy.reset (vecClass->GetCollectionProxy()->Generate());
75 m_obj = factory->objClass()->New ();
76 m_vec = reinterpret_cast<char*> (m_obj) + factory->offset();
77 m_proxy->PushProxy (m_vec);
78 this->resize (size);
79}
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.
const RootAuxVectorFactory * m_factory
Pointer back to the factory class for this type.
void * m_vec
Pointer to the vector object itself.
std::unique_ptr< TVirtualCollectionProxy > m_proxy
The collection proxy for the vector.
bool m_ownFlag
Should be delete the vector object?
void * m_obj
Pointer to the overall object itself.
virtual bool resize(size_t sz) override
Change the size of the vector.
virtual size_t size() const override
Return the size of the vector.

◆ RootAuxVector() [2/3]

SG::RootAuxVector::RootAuxVector ( const RootAuxVectorFactory * factory,
SG::auxid_t auxid,
void * data,
bool isPacked,
bool ownFlag,
bool isLinked )

Constructor, from a pointer to a vector object.

Parameters
factoryThe factory object for this type.
auxidThe auxid of the variable this vector represents.
dataThe vector object.
isPackedIf true, data is a PackedContainer.
ownFlagIf true, then take ownership of data.
isLinkedTrue if this variable is linked from another one.

If the element type is T, then data should be a pointer to a std::vector<T> object, which was obtained with new.

This version does not support packed containers, so isPacked must be false.

Definition at line 97 of file RootAuxVectorFactory.cxx.

104 m_factory (factory),
105 m_ownFlag (ownFlag)
106{
107 if (isPacked) std::abort();
108 const TClass* vecClass = factory->vecClass();
109 m_proxy.reset (vecClass->GetCollectionProxy()->Generate());
110 m_obj = data;
111 m_vec = reinterpret_cast<char*> (m_obj) + factory->offset();
112 m_proxy->PushProxy (m_vec);
113}
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11

◆ RootAuxVector() [3/3]

SG::RootAuxVector::RootAuxVector ( const RootAuxVector & other)

Copy constructor.

Parameters
otherThe vector to copy.

Definition at line 120 of file RootAuxVectorFactory.cxx.

121 : IAuxTypeVector (other),
122 m_factory (other.m_factory),
123 m_proxy (other.m_proxy->Generate()),
124 m_ownFlag (true)
125{
126 m_obj = m_factory->objClass()->New ();
127 m_vec = reinterpret_cast<char*> (m_obj) + m_factory->offset();
128 m_proxy->PushProxy (m_vec);
129 size_t sz = other.size();
130 this->resize (sz);
131
132 if (sz > 0) {
133 const RootUtils::Type& rootType = m_factory->rootType();
134 const void* otherPtr = other.toPtr();
135 rootType.copyRange (this->toPtr(), otherPtr, sz);
136 }
137}
static Double_t sz
virtual void * toPtr() override
Return a pointer to the start of the vector's data.
char rootType(char typeidType)
This function is used internally in the code when creating primitive dynamic auxiliary branches.

◆ ~RootAuxVector()

SG::RootAuxVector::~RootAuxVector ( )
overridevirtual

Destructor.

This will free the vector data.

Definition at line 145 of file RootAuxVectorFactory.cxx.

146{
147 if (m_ownFlag)
148 m_factory->objClass()->Destructor (m_obj);
149}

Member Function Documentation

◆ auxid()

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

Return the auxid of the variable this vector represents.

Definition at line 244 of file IAuxTypeVector.h.

245 {
246 return m_auxid;
247 }
auxid_t m_auxid
The auxid of the variable this vector represents.

◆ clone()

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

Make a copy of this vector.

Implements SG::IAuxTypeVector.

Definition at line 155 of file RootAuxVectorFactory.cxx.

156{
157 return std::make_unique<RootAuxVector> (*this);
158}

◆ 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 273 of file IAuxTypeVector.h.

274 {
275 if (!m_span.isValid()) {
276 m_span.set (this->getDataSpanImpl());
277 }
278 return *m_span.ptr();
279 }
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()

AuxDataSpanBase SG::RootAuxVector::getDataSpanImpl ( ) const
finaloverrideprotectedvirtual

Return a span object describing the current vector.

Used to initialize m_span the first time that getDataSpan is called.

Implements SG::IAuxTypeVector.

Definition at line 361 of file RootAuxVectorFactory.cxx.

362{
363 void* ptr ATLAS_THREAD_SAFE = const_cast<void*>(this->toPtr());
364 return AuxDataSpanBase (ptr, m_proxy->Size());
365}
#define ATLAS_THREAD_SAFE
void * ptr(T *p)
Definition SGImplSvc.cxx:74

◆ insertMove()

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

Insert elements into the vector via move semantics.

Parameters
posThe starting index of the insertion.
srcStart of the vector containing the range of elements to insert.
src_posPosition of the first element to insert.
src_nNumber of elements to insert.
srcStoreThe source store.

The size of the container will be increased by src_n, with the elements starting at pos copied to pos+src_n.

The contents of the source range will then be moved to our vector starting at pos. This will be done via move semantics if possible; otherwise, it will be done with a copy.

Returns true if it is known that the vector's memory did not move, false otherwise.

Implements SG::IAuxTypeVector.

Definition at line 302 of file RootAuxVectorFactory.cxx.

305{
306 size_t eltsz = m_proxy->GetIncrement();
307 const void* orig = this->getDataSpan().beg;
308 const RootUtils::Type& rootType = m_factory->rootType();
309
310 char* srcp = reinterpret_cast<char*> (src);
311 char* begp = srcp + src_pos*eltsz;
312
313 shift (pos, src_n);
314 // FIXME: want move, not copy.
315 // But i don't seem to be able to call move operations through cling,
316 // so just use copy for now.
317 rootType.copyRange (reinterpret_cast<char*>(this->toPtr()) + pos*eltsz,
318 begp, src_n);
319 this->storeDataSpan();
320 return this->getDataSpan().beg == orig;
321}
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 238 of file IAuxTypeVector.h.

238{ 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 229 of file IAuxTypeVector.h.

229{ return nullptr; }

◆ objType()

const std::type_info * SG::RootAuxVector::objType ( ) const
overridevirtual

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 from SG::IAuxTypeVector.

Definition at line 335 of file RootAuxVectorFactory.cxx.

336{
337 return m_factory->objClass()->GetTypeInfo();
338}

◆ operator=()

RootAuxVector & SG::RootAuxVector::operator= ( const RootAuxVector & )
delete

◆ reserve()

void SG::RootAuxVector::reserve ( size_t sz)
overridevirtual

Change the capacity of the vector.

Parameters
szThe new vector capacity.

Implements SG::IAuxTypeVector.

Definition at line 221 of file RootAuxVectorFactory.cxx.

222{
223}

◆ resetDataSpan()

void SG::IAuxTypeVector::resetDataSpan ( )
inlineprotectedinherited

Invalidate the stored span.

Definition at line 309 of file IAuxTypeVector.h.

310 {
311 m_span.reset();
312 }

◆ resize()

bool SG::RootAuxVector::resize ( size_t sz)
overridevirtual

Change the size of the vector.

Parameters
szThe new vector size. Returns true if it is known that iterators have not been invalidated; false otherwise.

Implements SG::IAuxTypeVector.

Definition at line 208 of file RootAuxVectorFactory.cxx.

209{
210 const void* orig = this->getDataSpan().beg;
211 m_proxy->Allocate(sz, false);
212 this->storeDataSpan();
213 return this->getDataSpan().beg == orig;
214}

◆ 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 171 of file IAuxTypeVector.h.

172 { return false; }

◆ shift()

bool SG::RootAuxVector::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 252 of file RootAuxVectorFactory.cxx.

253{
254 size_t eltsz = m_proxy->GetIncrement();
255
256 const RootUtils::Type& rootType = m_factory->rootType();
257
258 if (offs < 0) {
259 if (-offs > static_cast<ptrdiff_t>(pos)) offs = -pos;
260 char* beg = reinterpret_cast<char*>(m_proxy->At(0));
261 rootType.copyRange (beg + eltsz*(pos+offs),
262 beg + eltsz*pos,
263 m_proxy->Size() - pos);
264 m_proxy->Allocate (m_proxy->Size() + offs, false);
265 this->storeDataSpan();
266 return true;
267 }
268 else if (offs > 0) {
269 size_t oldsz = m_proxy->Size();
270 m_proxy->Allocate (oldsz + offs, false);
271 char* beg = reinterpret_cast<char*>(m_proxy->At(0));
272 if (pos < oldsz)
273 rootType.copyRange (beg + eltsz*(pos+offs),
274 beg + eltsz*pos,
275 oldsz - pos);
276 rootType.clearRange (beg + eltsz*pos, offs);
277 this->storeDataSpan();
278 return false;
279 }
280 return true;
281}

◆ size()

size_t SG::RootAuxVector::size ( ) const
overridevirtual

Return the size of the vector.

Implements SG::IAuxTypeVector.

Definition at line 196 of file RootAuxVectorFactory.cxx.

197{
198 return m_proxy->Size();
199}

◆ 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 296 of file IAuxTypeVector.h.

297 {
298 // Only do this if the span is already valid, so that it doesn't
299 // get marked valid before ROOT I/O.
300 if (m_span.isValid()) {
301 m_span.store (AuxDataSpanBase (beg, size));
302 }
303 }
virtual size_t size() const =0
Return the size of the vector.

◆ storeDataSpan() [2/2]

void SG::RootAuxVector::storeDataSpan ( )
private

Update the stored span.

Definition at line 371 of file RootAuxVectorFactory.cxx.

372{
374}
void storeDataSpan(void *beg, size_t size)
Update the stored span.

◆ 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 200 of file IAuxTypeVector.h.

200{ return 0; }

◆ toPtr() [1/2]

const void * SG::RootAuxVector::toPtr ( ) const
overridevirtual

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

Implements SG::IAuxTypeVector.

Definition at line 175 of file RootAuxVectorFactory.cxx.

176{
177 if (m_proxy->Size() == 0)
178 return 0;
179 TVirtualCollectionProxy* proxy ATLAS_THREAD_SAFE = m_proxy.get();
180 return proxy->At(0);
181}

◆ toPtr() [2/2]

void * SG::RootAuxVector::toPtr ( )
overridevirtual

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

Implements SG::IAuxTypeVector.

Definition at line 164 of file RootAuxVectorFactory.cxx.

165{
166 if (m_proxy->Size() == 0)
167 return 0;
168 return m_proxy->At(0);
169}

◆ toTransient()

void SG::RootAuxVector::toTransient ( const EventContext & ctx)
overridevirtual

Perform post-read processing on this auxiliary variable.

Parameters
ctxThe current event context.

Some object types require some processing after being read before they are usable. This can be indicated by specializing SG::ToTransient for the vector type containing the variable. This method will call such a ToTransient method on the contents, if one is defined.

Implements SG::IAuxTypeVector.

Definition at line 350 of file RootAuxVectorFactory.cxx.

351{
352 m_factory->toTransient (ctx, *this);
353}

◆ toVector()

void * SG::RootAuxVector::toVector ( )
overridevirtual

Return a pointer to the overall object.

Implements SG::IAuxTypeVector.

Definition at line 187 of file RootAuxVectorFactory.cxx.

188{
189 return m_obj;
190}

Member Data Documentation

◆ m_auxid

auxid_t SG::IAuxTypeVector::m_auxid
privateinherited

The auxid of the variable this vector represents.

Definition at line 317 of file IAuxTypeVector.h.

◆ m_factory

const RootAuxVectorFactory* SG::RootAuxVector::m_factory
private

Pointer back to the factory class for this type.

Definition at line 249 of file RootAuxVectorFactory.h.

◆ m_isLinked

bool SG::IAuxTypeVector::m_isLinked
privateinherited

True if this variable is linked from another one.

Definition at line 320 of file IAuxTypeVector.h.

◆ m_obj

void* SG::RootAuxVector::m_obj
private

Pointer to the overall object itself.

Definition at line 258 of file RootAuxVectorFactory.h.

◆ m_ownFlag

bool SG::RootAuxVector::m_ownFlag
private

Should be delete the vector object?

Definition at line 264 of file RootAuxVectorFactory.h.

◆ m_proxy

std::unique_ptr<TVirtualCollectionProxy> SG::RootAuxVector::m_proxy
private

The collection proxy for the vector.

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 255 of file RootAuxVectorFactory.h.

◆ m_span

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

Description of the vector start+size.

Definition at line 323 of file IAuxTypeVector.h.

◆ m_vec

void* SG::RootAuxVector::m_vec
private

Pointer to the vector object itself.

Definition at line 261 of file RootAuxVectorFactory.h.


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