| The Gaudi Framework v32r1 (f65d50dc)

Public Member Functions | Private Member Functions | Private Attributes | List of all members
DataObjectHandle< AnyDataWrapper< T > > Class Template Reference

specialization for AnyDataWrapper More...

`#include <GaudiKernel/DataObjectHandle.h>`

Inheritance diagram for DataObjectHandle< AnyDataWrapper< T > >:
[legend]
Collaboration diagram for DataObjectHandle< AnyDataWrapper< T > >:
[legend]

## Public Member Functions
T * | get () const
| Retrieve object from transient data store. More...
T * | getIfExists () const
const T * | put (T &&object) const
| Register object in transient store. More...
std::optional< std::size_t > | size () const
| Size of boxed item, if boxed item has a 'size' method. More...
| DataObjectHandleBase (const DataObjID &k, Gaudi::DataHandle::Mode a, IDataHandleHolder *owner)
| DataObjectHandleBase (const std::string &k, Gaudi::DataHandle::Mode a, IDataHandleHolder *owner)
| DataObjectHandleBase (const DataObjectHandleBase &)=delete
| DataObjectHandleBase (DataObjectHandleBase &&)
template<class OWNER , class K , typename = std::enable_if_t<std::is_base_of_v<IProperty, OWNER>>>
| DataObjectHandleBase (OWNER *owner, Gaudi::DataHandle::Mode m, std::string name, const K &key={}, std::string doc="")
| Autodeclaring constructor with property name, mode, key and documentation. More...
Public Member Functions inherited from DataObjectHandleBase
| DataObjectHandleBase (const DataObjID &k, Gaudi::DataHandle::Mode a, IDataHandleHolder *owner)
| DataObjectHandleBase (const std::string &k, Gaudi::DataHandle::Mode a, IDataHandleHolder *owner)
virtual | ~DataObjectHandleBase ()
| DataObjectHandleBase (const DataObjectHandleBase &)=delete
| DataObjectHandleBase (DataObjectHandleBase &&)
DataObjectHandleBase & | operator= (const DataObjectHandleBase &)
template<class OWNER , class K , typename = std::enable_if_t<std::is_base_of_v<IProperty, OWNER>>>
| DataObjectHandleBase (OWNER *owner, Gaudi::DataHandle::Mode m, std::string name, const K &key={}, std::string doc="")
| Autodeclaring constructor with property name, mode, key and documentation. More...
std::string | toString () const
std::string | pythonRepr () const override
void | fromString (const std::string &s)
bool | isOptional () const
| Check if the data object declared is optional for the algorithm. More...
void | setOptional (bool optional=true)
bool | initialized () const
bool | wasRead () const
bool | wasWritten () const
bool | isValid () const
Public Member Functions inherited from Gaudi::DataHandle
| DataHandle (const DataObjID &k, Mode a=Reader, IDataHandleHolder *owner=nullptr)
| DataHandle (const DataObjID &k, const bool &isCond, Mode a=Reader, IDataHandleHolder *owner=nullptr)
virtual | ~DataHandle ()=default
virtual void | setOwner (IDataHandleHolder *o)
virtual IDataHandleHolder * | owner () const
virtual Mode | mode () const
virtual void | setKey (const DataObjID &key) const
virtual void | updateKey (const std::string &key) const
virtual const std::string & | objKey () const
virtual const DataObjID & | fullKey () const
virtual void | reset (bool)
virtual bool | isCondition () const

## Private Member Functions
AnyDataWrapper< T > * | _get (bool mustExist) const

## Private Attributes
bool | m_goodType = false

## Additional Inherited Members
Public Types inherited from DataObjectHandleBase
using | PropertyType = DataObjectHandleProperty
Public Types inherited from Gaudi::DataHandle
enum | Mode { Reader = 1 << 2, Writer = 1 << 4, Updater = Reader | Writer }
Protected Member Functions inherited from DataObjectHandleBase
void | setRead (bool wasRead=true)
void | setWritten (bool wasWritten=true)
bool | init () override
DataObject * | fetch () const
Protected Attributes inherited from DataObjectHandleBase
SmartIF< IDataProviderSvc > | m_EDS
SmartIF< IMessageSvc > | m_MS
bool | m_init = false
bool | m_optional = false
bool | m_wasRead = false
bool | m_wasWritten = false
bool | m_searchDone = false
| Whether the search part of the fetch method (so dealing with alt names was already executed or not. More...
std::mutex | m_searchMutex
| A Mutex protecting the calls to the search part of the fetch method, so that we are sure that we only call it once. More...
Protected Attributes inherited from Gaudi::DataHandle
DataObjID | m_key = {"NONE"}
| The key of the object behind this DataHandle Although it may look strange to have it mutable, this can actually change in case the object had alternative names, and it should not be visible to the end user, for which the Handle is still the same. More...
IDataHandleHolder * | m_owner = nullptr

## Detailed Description

### template<typename T>
class DataObjectHandle< AnyDataWrapper< T > >

specialization for AnyDataWrapper

Definition at line 211 of file DataObjectHandle.h.

## Member Function Documentation

## ◆ _get()

template<typename T >

AnyDataWrapper< T > * DataObjectHandle< AnyDataWrapper< T > >::_get | ( | bool | mustExist | ) | const
| private

Definition at line 246 of file DataObjectHandle.h.

246 {
247 auto obj = fetch();
248 if ( UNLIKELY( !obj ) ) {
249 if ( mustExist ) {
250 throw GaudiException( "Cannot retrieve " + objKey() + " from transient store.",
251 m_owner ? owner()->name() : "no owner", StatusCode::FAILURE );
252
253 } else {
254 return nullptr;
255 }
256 }
257 if ( UNLIKELY( !m_goodType ) ) m_goodType = ::details::verifyType<AnyDataWrapper<T>>( obj );
258 return static_cast<AnyDataWrapper<T>*>( obj );
259 }
UNLIKELY
#define UNLIKELY(x)
Definition: Kernel.h:96
GaudiException
Define general base for Gaudi exception.
Definition: GaudiException.h:21
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
Gaudi::DataHandle::owner
virtual IDataHandleHolder * owner() const
Definition: DataHandle.h:40
Gaudi::DataHandle::objKey
virtual const std::string & objKey() const
Definition: DataHandle.h:47
AnyDataWrapper
Definition: AnyDataWrapper.h:26
Gaudi::DataHandle::m_owner
IDataHandleHolder * m_owner
Definition: DataHandle.h:66
DataObjectHandle< AnyDataWrapper< T > >::m_goodType
bool m_goodType
Definition: DataObjectHandle.h:240
DataObjectHandleBase::fetch
DataObject * fetch() const
Definition: DataObjectHandleBase.cpp:59
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86

## ◆ DataObjectHandleBase() [1/5]

template<typename T >

DataObjectHandleBase::DataObjectHandleBase
| delete

## ◆ DataObjectHandleBase() [2/5]

template<typename T >

DataObjectHandleBase::DataObjectHandleBase

Definition at line 16 of file DataObjectHandleBase.cpp.

17 : Gaudi::DataHandle( other )
18 , m_EDS( std::move( other.m_EDS ) )
19 , m_MS( std::move( other.m_MS ) )
20 , m_init( other.m_init )
21 , m_optional( other.m_optional )
22 , m_wasRead( other.m_wasRead )
23 , m_wasWritten( other.m_wasWritten )
24 , m_searchDone( other.m_searchDone ) {
25 m_owner->declare( *this );
26 }
IDataHandleHolder::declare
virtual void declare(Gaudi::DataHandle &)=0
DataObjectHandleBase::m_wasRead
bool m_wasRead
Definition: DataObjectHandleBase.h:79
DataObjectHandleBase::m_EDS
SmartIF< IDataProviderSvc > m_EDS
Definition: DataObjectHandleBase.h:74
DataObjectHandleBase::m_init
bool m_init
Definition: DataObjectHandleBase.h:77
DataObjectHandleBase::m_searchDone
bool m_searchDone
Whether the search part of the fetch method (so dealing with alt names was already executed or not.
Definition: DataObjectHandleBase.h:87
DataObjectHandleBase::m_optional
bool m_optional
Definition: DataObjectHandleBase.h:78
Gaudi::DataHandle::m_owner
IDataHandleHolder * m_owner
Definition: DataHandle.h:66
Gaudi::DataHandle
Definition: DataHandle.h:27
std::move
T move(T... args)
DataObjectHandleBase::m_MS
SmartIF< IMessageSvc > m_MS
Definition: DataObjectHandleBase.h:75
DataObjectHandleBase::m_wasWritten
bool m_wasWritten
Definition: DataObjectHandleBase.h:80

## ◆ DataObjectHandleBase() [3/5]

template<typename T >
template<class OWNER , class K , typename = std::enable_if_t<std::is_base_of_v<IProperty, OWNER>>>

DataObjectHandleBase::DataObjectHandleBase | ( | class OWNER | ,
|  | class K | ,
|  | typename | = `std::enable_if_t<std::is_base_of_v<IProperty, OWNER>>`
| ) |  |
| inline

Autodeclaring constructor with property name, mode, key and documentation.

Note
  the use std::enable_if is required to avoid ambiguities

Definition at line 40 of file DataObjectHandleBase.h.

40 {},
41 std::string doc = "" )
42 : DataObjectHandleBase( key, m, owner ) {
43 auto p = owner->declareProperty( std::move( name ), *this, std::move( doc ) );
44 p->template setOwnerType<OWNER>();
45 }
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
Gaudi::DataHandle::owner
virtual IDataHandleHolder * owner() const
Definition: DataHandle.h:40
std::string
STL class.
Gaudi::Units::m
constexpr double m
Definition: SystemOfUnits.h:92
std::move
T move(T... args)
DataObjectHandleBase::DataObjectHandleBase
DataObjectHandleBase(const DataObjID &k, Gaudi::DataHandle::Mode a, IDataHandleHolder *owner)
Definition: DataObjectHandleBase.cpp:45

## ◆ DataObjectHandleBase() [4/5]

template<typename T >

DataObjectHandleBase::DataObjectHandleBase

Definition at line 52 of file DataObjectHandleBase.cpp.

53 : DataObjectHandleBase( DataObjID( k ), a, owner ) {}
DataObjID
Definition: DataObjID.h:37
Gaudi::DataHandle::owner
virtual IDataHandleHolder * owner() const
Definition: DataHandle.h:40
DataObjectHandleBase::DataObjectHandleBase
DataObjectHandleBase(const DataObjID &k, Gaudi::DataHandle::Mode a, IDataHandleHolder *owner)
Definition: DataObjectHandleBase.cpp:45

## ◆ DataObjectHandleBase() [5/5]

template<typename T >

DataObjectHandleBase::DataObjectHandleBase

Definition at line 45 of file DataObjectHandleBase.cpp.

46 : Gaudi::DataHandle( k, a, owner ) {
47 m_owner->declare( *this );
48 }
IDataHandleHolder::declare
virtual void declare(Gaudi::DataHandle &)=0
Gaudi::DataHandle::owner
virtual IDataHandleHolder * owner() const
Definition: DataHandle.h:40
Gaudi::DataHandle::m_owner
IDataHandleHolder * m_owner
Definition: DataHandle.h:66
Gaudi::DataHandle
Definition: DataHandle.h:27

## ◆ get()

template<typename T >

T* DataObjectHandle< AnyDataWrapper< T > >::get | ( |  | ) | const
| inline

Retrieve object from transient data store.

Definition at line 218 of file DataObjectHandle.h.

218 { return &_get( true )->getData(); }
DataObjectHandle< AnyDataWrapper< T > >::_get
AnyDataWrapper< T > * _get(bool mustExist) const
Definition: DataObjectHandle.h:246

## ◆ getIfExists()

template<typename T >

T* DataObjectHandle< AnyDataWrapper< T > >::getIfExists | ( |  | ) | const
| inline

Definition at line 219 of file DataObjectHandle.h.

219 {
220 auto data = _get( false );
221 if ( data ) {
222 return &data->getData();
223 } else {
224 return nullptr;
225 }
226 }
DataObjectHandle< AnyDataWrapper< T > >::_get
AnyDataWrapper< T > * _get(bool mustExist) const
Definition: DataObjectHandle.h:246

## ◆ put()

template<typename T >

const T * DataObjectHandle< AnyDataWrapper< T > >::put | ( | T && | object | ) | const

Register object in transient store.

Definition at line 264 of file DataObjectHandle.h.

264 {
265 assert( m_init );
266 auto objectp = std::make_unique<AnyDataWrapper<T>>( std::move( obj ) );
267 StatusCode rc = m_EDS->registerObject( objKey(), objectp.get() );
268 if ( rc.isFailure() ) {
269 throw GaudiException( "Error in put of " + objKey(), "DataObjectHandle<T>::put", StatusCode::FAILURE );
270 }
271 return &objectp.release()->getData();
272 }
GaudiException
Define general base for Gaudi exception.
Definition: GaudiException.h:21
Gaudi::DataHandle::objKey
virtual const std::string & objKey() const
Definition: DataHandle.h:47
DataObjectHandleBase::m_EDS
SmartIF< IDataProviderSvc > m_EDS
Definition: DataObjectHandleBase.h:74
DataObjectHandleBase::m_init
bool m_init
Definition: DataObjectHandleBase.h:77
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
IOTest.rc
rc
Definition: IOTest.py:101
std::move
T move(T... args)
IDataProviderSvc::registerObject
StatusCode registerObject(std::string_view fullPath, DataObject *pObject)
Register object with the data store.
Definition: IDataProviderSvc.h:62
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86

## ◆ size()

template<typename T >

std::optional<std::size_t> DataObjectHandle< AnyDataWrapper< T > >::size | ( |  | ) | const
| inline

Size of boxed item, if boxed item has a 'size' method.

Definition at line 236 of file DataObjectHandle.h.

236 { return _get()->size(); }
DataObjectHandle< AnyDataWrapper< T > >::_get
AnyDataWrapper< T > * _get(bool mustExist) const
Definition: DataObjectHandle.h:246

## Member Data Documentation

## ◆ m_goodType

template<typename T >

bool DataObjectHandle< AnyDataWrapper< T > >::m_goodType = false
| mutable private

Definition at line 240 of file DataObjectHandle.h.

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

- GaudiKernel/GaudiKernel/DataObjectHandle.h