ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
SG::MetaContDataBucket< T > Class Template Reference

Allow converting MetaCont<T> to T. More...

#include <MetaContDataBucket.h>

Inheritance diagram for SG::MetaContDataBucket< T >:
Collaboration diagram for SG::MetaContDataBucket< T >:

Public Member Functions

virtual void * cast (CLID clid, IRegisterTransient *irt=0, bool isConst=true) override
 Return the contents of the DataBucket, converted to type given by clid. More...
 
virtual void * cast (const std::type_info &tinfo, IRegisterTransient *irt=0, bool isConst=true) override
 Return the contents of the DataBucket, converted to type given by std::type_info. More...
 
virtual void * cast (CLID clid, const std::type_info &tinfo, SG::IRegisterTransient *irt=0, bool isConst=true) override
 Return the contents of the DataBucket, converted to type given by clid. More...
 
virtual const CLIDclID () const override
 
virtual void * object () override
 
virtual const std::type_info & tinfo () const override
 Return the type_info for the stored object. More...
 
 operator T* ()
 
 operator const T * () const
 
template<class T >
T * cast (SG::IRegisterTransient *irt=0, bool isConst=true)
 Return the contents of the DataBucket, converted to type T. More...
 
virtual void relinquish () override
 Give up ownership of the DataBucket contents. More...
 
virtual void lock () override
 If the held object derives from ILockable, call lock() on it. More...
 

Static Public Member Functions

static const CLIDclassID ()
 

Protected Member Functions

T * ptr ()
 
const T * cptr () const
 
void * tryStaticConversion (CLID clid)
 Try a conversion using static SG_BASES information. More...
 
void * tryStaticConversion (const std::type_info &tinfo)
 Try a conversion using static SG_BASES information. More...
 

Private Types

typedef std::pair< const CopyConversionBase *, void * > ent_t
 Objects made by copy conversion. More...
 
typedef std::vector< ent_tvec_t
 

Private Member Functions

const SourceID getSID () const
 Return the metadata source id for the current event store. More...
 

Private Attributes

T * m_ptr
 
vec_t m_cnvcopies
 

Detailed Description

template<class T>
class SG::MetaContDataBucket< T >

Allow converting MetaCont<T> to T.

Metadata objects of type T are stored in MetaDataStore as MetaCont<T>. However, to allow using xAOD objects, we'd like to be able to reference a DataLink<T> pointing at this store. That means that the cast operation of the DataBucket for MetaCont<T> needs to be able to convert to a T as well as MetaCont<T>. We can arrange this using this custom DataBucket class, which overrides the cast() methods. The use of this class is enabled by specializing DataBucketTrait in MetaCont.h.

Definition at line 40 of file MetaContDataBucket.h.

Member Typedef Documentation

◆ ent_t

template<class T >
typedef std::pair<const CopyConversionBase*, void*> SG::DataBucket< T >::ent_t
privateinherited

Objects made by copy conversion.

Definition at line 160 of file DataBucket.h.

◆ vec_t

template<class T >
typedef std::vector<ent_t> SG::DataBucket< T >::vec_t
privateinherited

Definition at line 161 of file DataBucket.h.

Member Function Documentation

◆ cast() [1/4]

template<class T >
virtual void* SG::MetaContDataBucket< T >::cast ( CLID  clid,
const std::type_info &  tinfo,
SG::IRegisterTransient irt = 0,
bool  isConst = true 
)
overridevirtual

Return the contents of the DataBucket, converted to type given by clid.

Note that only derived->base conversions are allowed here.

Parameters
clidThe class ID to which to convert.
tinfoThe std::type_info of the type to which to convert.
irtTo be called if we make a new instance.
isConstTrue if the object being converted is regarded as const.

This allows the callee to choose whether to use clid or tinfo. Here we use clid.

Reimplemented from SG::DataBucket< T >.

◆ cast() [2/4]

template<class T >
virtual void* SG::MetaContDataBucket< T >::cast ( CLID  clid,
IRegisterTransient irt = 0,
bool  isConst = true 
)
overridevirtual

Return the contents of the DataBucket, converted to type given by clid.

Note that only derived->base conversions are allowed here.

Parameters
clidThe class ID to which to convert.
irtTo be called if we make a new instance.
isConstTrue if the object being converted is regarded as const.

Reimplemented from SG::DataBucket< T >.

◆ cast() [3/4]

template<class T >
virtual void* SG::MetaContDataBucket< T >::cast ( const std::type_info &  tinfo,
IRegisterTransient irt = 0,
bool  isConst = true 
)
overridevirtual

Return the contents of the DataBucket, converted to type given by std::type_info.

Note that only derived->base conversions are allowed here.

Parameters
clidThe std::type_info of the type to which to convert.
irtTo be called if we make a new instance.
isConstTrue if the object being converted is regarded as const.

Reimplemented from SG::DataBucket< T >.

◆ cast() [4/4]

template<class T >
T* DataBucketBase::cast ( SG::IRegisterTransient irt = 0,
bool  isConst = true 
)
inherited

Return the contents of the DataBucket, converted to type T.

Note that only derived->base conversions are allowed here. T must have a valid Class ID for this to work.

Parameters
irtTo be called if we make a new instance.
isConstTrue if the object being converted is regarded as const.

◆ classID()

template<class T >
static const CLID& SG::DataBucket< T >::classID ( )
staticinherited

◆ clID()

template<class T >
virtual const CLID& SG::DataBucket< T >::clID ( ) const
overridevirtualinherited

◆ cptr()

template<class T >
const T* SG::DataBucket< T >::cptr ( ) const
inlineprotectedinherited

Definition at line 133 of file DataBucket.h.

133 { return m_ptr; }

◆ getSID()

template<class T >
const SourceID SG::MetaContDataBucket< T >::getSID ( ) const
private

Return the metadata source id for the current event store.

Returns an empty string if there's no source ID set.

◆ lock()

template<class T >
virtual void SG::DataBucket< T >::lock ( )
overridevirtualinherited

If the held object derives from ILockable, call lock() on it.

Implements DataBucketBase.

◆ object()

template<class T >
virtual void* SG::DataBucket< T >::object ( )
inlineoverridevirtualinherited

Implements DataBucketBase.

Definition at line 51 of file DataBucket.h.

52  {
53  typedef typename std::remove_const<T>::type T_nc;
54  return const_cast<T_nc*>(m_ptr);
55  }

◆ operator const T *()

template<class T >
SG::DataBucket< T >::operator const T * ( ) const
inlineinherited

Definition at line 74 of file DataBucket.h.

74 { return cptr(); }

◆ operator T*()

template<class T >
SG::DataBucket< T >::operator T* ( )
inlineinherited

Definition at line 73 of file DataBucket.h.

73 { return ptr(); } //FIXME can we do without?

◆ ptr()

template<class T >
T* SG::DataBucket< T >::ptr ( )
inlineprotectedinherited

Definition at line 132 of file DataBucket.h.

132 { return m_ptr; }

◆ relinquish()

template<class T >
virtual void SG::DataBucket< T >::relinquish ( )
inlineoverridevirtualinherited

Give up ownership of the DataBucket contents.

This leaks the contents and it is useful mainly for error handling.

Implements DataBucketBase.

Definition at line 123 of file DataBucket.h.

123 { m_ptr=0;} //LEAKS m_ptr

◆ tinfo()

template<class T >
virtual const std::type_info& SG::DataBucket< T >::tinfo ( ) const
inlineoverridevirtualinherited

Return the type_info for the stored object.

Implements DataBucketBase.

Reimplemented in SG::DVLDataBucket< T >, and SG::DVLDataBucket< DV >.

Definition at line 60 of file DataBucket.h.

61  {
62  return typeid(T);
63  }

◆ tryStaticConversion() [1/2]

template<class T >
void* SG::DataBucket< T >::tryStaticConversion ( CLID  clid)
protectedinherited

Try a conversion using static SG_BASES information.

Parameters
clidThe class ID to which to convert.

This can all be unfolded at compile time, so is fast, but doesn't take into account SG_ADD_BASES.

◆ tryStaticConversion() [2/2]

template<class T >
void* SG::DataBucket< T >::tryStaticConversion ( const std::type_info &  tinfo)
protectedinherited

Try a conversion using static SG_BASES information.

Parameters
tinfoThe std::type_info of the type to which to convert.

This can all be unfolded at compile time, so is fast, but doesn't take into account SG_ADD_BASES.

Member Data Documentation

◆ m_cnvcopies

template<class T >
vec_t SG::DataBucket< T >::m_cnvcopies
privateinherited

Definition at line 162 of file DataBucket.h.

◆ m_ptr

template<class T >
T* SG::DataBucket< T >::m_ptr
privateinherited

Definition at line 157 of file DataBucket.h.


The documentation for this class was generated from the following file:
SG::DataBucket::cptr
const T * cptr() const
Definition: DataBucket.h:133
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
SG::DataBucket::ptr
T * ptr()
Definition: DataBucket.h:132
SG::DataBucket::m_ptr
T * m_ptr
Definition: DataBucket.h:157
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35