ATLAS Offline Software
Public Types | Public Member Functions | Private Attributes | List of all members
SG::JaggedVecVectorT< HOLDER > Class Template Reference

Implementation of IAuxTypeVector holding a vector of JaggedVec. More...

#include <JaggedVecVector.h>

Inheritance diagram for SG::JaggedVecVectorT< HOLDER >:
Collaboration diagram for SG::JaggedVecVectorT< HOLDER >:

Public Types

using Base = HOLDER
 
using vector_type = typename Base::vector_type
 
using element_type = typename Base::element_type
 
using vector_value_type = typename Base::vector_value_type
 

Public Member Functions

 JaggedVecVectorT (auxid_t auxid, size_t size, size_t capacity, std::unique_ptr< IAuxTypeVector > linkedVec)
 Constructor. More...
 
 JaggedVecVectorT (const JaggedVecVectorT &other)
 Copy constructor. More...
 
 JaggedVecVectorT (JaggedVecVectorT &&other)
 Move constructor. More...
 
JaggedVecVectorToperator= (const JaggedVecVectorT &other)=delete
 No assignment. More...
 
JaggedVecVectorToperator= (JaggedVecVectorT &&other)=delete
 
virtual std::unique_ptr< IAuxTypeVectorclone () const override
 Make a copy of this vector. More...
 
virtual std::unique_ptr< IAuxTypeVectorlinkedVector () override
 Return ownership of the linked vector. More...
 

Private Attributes

vector_type m_vec
 The contained vector. More...
 
std::unique_ptr< IAuxTypeVectorm_linkedVecHolder
 Holding ownership of the linked vector. More...
 

Detailed Description

template<class HOLDER>
class SG::JaggedVecVectorT< HOLDER >

Implementation of IAuxTypeVector holding a vector of JaggedVec.

This is a derived class of JaggedVecVectorHolder that holds the vector instance as a member variable (and thus manages memory internally). It is templated on the base class, so that we can also use this for classes which derive from AuxTypeVectorHolder.

When an instance of this is created, it gets ownership of the linked vector via the constructor. When this interface gets added to an auxiliary store, the ownership of the linked vector will be transferred away using the linkedVector() method, allowing it to be added to the store as well.

Definition at line 160 of file JaggedVecVector.h.

Member Typedef Documentation

◆ Base

template<class HOLDER >
using SG::JaggedVecVectorT< HOLDER >::Base = HOLDER

Definition at line 164 of file JaggedVecVector.h.

◆ element_type

template<class HOLDER >
using SG::JaggedVecVectorT< HOLDER >::element_type = typename Base::element_type

Definition at line 166 of file JaggedVecVector.h.

◆ vector_type

template<class HOLDER >
using SG::JaggedVecVectorT< HOLDER >::vector_type = typename Base::vector_type

Definition at line 165 of file JaggedVecVector.h.

◆ vector_value_type

template<class HOLDER >
using SG::JaggedVecVectorT< HOLDER >::vector_value_type = typename Base::vector_value_type

Definition at line 167 of file JaggedVecVector.h.

Constructor & Destructor Documentation

◆ JaggedVecVectorT() [1/3]

template<class HOLDER >
SG::JaggedVecVectorT< HOLDER >::JaggedVecVectorT ( auxid_t  auxid,
size_t  size,
size_t  capacity,
std::unique_ptr< IAuxTypeVector linkedVec 
)

Constructor.

Makes a new vector.

Parameters
auxidThe auxid of the variable this vector represents.
sizeInitial size of the new vector.
capacityInitial capacity of the new vector.
linkedVecOwnership of the linked vector.

◆ JaggedVecVectorT() [2/3]

template<class HOLDER >
SG::JaggedVecVectorT< HOLDER >::JaggedVecVectorT ( const JaggedVecVectorT< HOLDER > &  other)

Copy constructor.

◆ JaggedVecVectorT() [3/3]

template<class HOLDER >
SG::JaggedVecVectorT< HOLDER >::JaggedVecVectorT ( JaggedVecVectorT< HOLDER > &&  other)

Move constructor.

Member Function Documentation

◆ clone()

template<class HOLDER >
virtual std::unique_ptr<IAuxTypeVector> SG::JaggedVecVectorT< HOLDER >::clone ( ) const
overridevirtual

Make a copy of this vector.

◆ linkedVector()

template<class HOLDER >
virtual std::unique_ptr<IAuxTypeVector> SG::JaggedVecVectorT< HOLDER >::linkedVector ( )
overridevirtual

Return ownership of the linked vector.

◆ operator=() [1/2]

template<class HOLDER >
JaggedVecVectorT& SG::JaggedVecVectorT< HOLDER >::operator= ( const JaggedVecVectorT< HOLDER > &  other)
delete

No assignment.

◆ operator=() [2/2]

template<class HOLDER >
JaggedVecVectorT& SG::JaggedVecVectorT< HOLDER >::operator= ( JaggedVecVectorT< HOLDER > &&  other)
delete

Member Data Documentation

◆ m_linkedVecHolder

template<class HOLDER >
std::unique_ptr<IAuxTypeVector> SG::JaggedVecVectorT< HOLDER >::m_linkedVecHolder
private

Holding ownership of the linked vector.

Definition at line 216 of file JaggedVecVector.h.

◆ m_vec

template<class HOLDER >
vector_type SG::JaggedVecVectorT< HOLDER >::m_vec
private

The contained vector.

Definition at line 213 of file JaggedVecVector.h.


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