The Gaudi Framework  v41r0 (bdbe7744)
Loading...
Searching...
No Matches
DataObjectHandle< AnyDataWithViewWrapper< View, Owned > > Class Template Reference

specialization for AnyDataWithViewWrapper More...

#include </builds/gaudi/Gaudi/GaudiKernel/include/GaudiKernel/DataObjectHandle.h>

Inheritance diagram for DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >:
Collaboration diagram for DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >:

Public Member Functions

View * get () const
 Retrieve object from transient data store.
View * getIfExists () const
const View * put (std::unique_ptr< AnyDataWithViewWrapper< View, Owned > > objectp) const
 Register object in transient store.
const View * put (Owned &&obj) const
std::optional< std::size_t > size () const
 Size of boxed item, if boxed item has a 'size' method.
std::string pythonRepr () const override
 DataObjectHandleBase (DataObjID k, Gaudi::DataHandle::Mode a, IDataHandleHolder *owner)
 DataObjectHandleBase (std::string k, Gaudi::DataHandle::Mode a, IDataHandleHolder *owner)
 DataObjectHandleBase (const DataObjectHandleBase &)=delete
 DataObjectHandleBase (DataObjectHandleBase &&)
bool exist () const
 Check the existence of the object in the transient store.
AnyDataWithViewWrapper< View, Owned > * getOrCreate () const
 Get object from store or create a new one if it doesn't exist.
Public Member Functions inherited from DataObjectHandleBase
 DataObjectHandleBase (DataObjID k, Gaudi::DataHandle::Mode a, IDataHandleHolder *owner)
 DataObjectHandleBase (std::string k, Gaudi::DataHandle::Mode a, IDataHandleHolder *owner)
 ~DataObjectHandleBase () override
 DataObjectHandleBase (const DataObjectHandleBase &)=delete
 DataObjectHandleBase (DataObjectHandleBase &&)
DataObjectHandleBase & operator= (const DataObjectHandleBase &)
bool isValid () const
Public Member Functions inherited from Gaudi::DataHandle
 DataHandle (DataObjID k, Mode a=Reader, IDataHandleHolder *owner=nullptr)
 DataHandle (DataObjID k, 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 (DataObjID key)
virtual void updateKey (std::string key)
virtual const std::string & objKey () const
virtual const DataObjID & fullKey () const
virtual void reset (bool)
virtual bool isCondition () const

Private Member Functions

AnyDataWithViewWrapper< View, Owned > * _get (bool mustExist) const

Additional Inherited Members

Public Types inherited from Gaudi::DataHandle
enum  Mode { Reader = 1 << 2 , Writer = 1 << 4 }
using PropertyType = DataHandleProperty
Protected Member Functions inherited from DataObjectHandleBase
bool init () override
DataObject * fetch () const
Protected Attributes inherited from DataObjectHandleBase
SmartIF< IDataProviderSvc > m_EDS
SmartIF< IMessageSvc > m_MS
bool m_init = false
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.
IDataHandleHolder * m_owner = nullptr
Static Protected Attributes inherited from Gaudi::DataHandle
static const std::string default_type = "unknown_t"

Detailed Description

template<typename View, typename Owned>
class DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >

specialization for AnyDataWithViewWrapper

Definition at line 379 of file DataObjectHandle.h.

Member Function Documentation

◆ _get()

template<typename View, typename Owned>
AnyDataWithViewWrapper< View, Owned > * DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >::_get ( bool mustExist) const
inlineprivate

Definition at line 417 of file DataObjectHandle.h.

417 {
418 auto obj = fetch();
419 if ( !obj ) {
420 if ( mustExist ) {
421 throw GaudiException( "Cannot retrieve \'" + objKey() + "\' from transient store.",
422 m_owner ? owner()->name() : "no owner", StatusCode::FAILURE );
423
424 } else {
425 return nullptr;
426 }
427 }
428#ifndef NDEBUG
430#endif
431 return static_cast<AnyDataWithViewWrapper<View, Owned>*>( obj );
432 }
DataObject * fetch() const
DataObjectHandle.h GaudiKernel/DataObjectHandle.h.
IDataHandleHolder * m_owner
Definition DataHandle.h:86
virtual IDataHandleHolder * owner() const
Definition DataHandle.h:58
virtual const std::string & objKey() const
Definition DataHandle.h:65

◆ DataObjectHandleBase() [1/4]

( const DataObjectHandleBase & )

◆ DataObjectHandleBase() [2/4]

( DataObjectHandleBase && other)

◆ DataObjectHandleBase() [3/4]

◆ DataObjectHandleBase() [4/4]

( std::string k,
Gaudi::DataHandle::Mode a,
IDataHandleHolder * owner )

◆ exist()

bool DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >::exist ( ) const
inline

Check the existence of the object in the transient store.

Definition at line 128 of file DataObjectHandle.h.

128{ return get( false ) != nullptr; }

◆ get()

template<typename View, typename Owned>
View * DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >::get ( ) const
inline

Retrieve object from transient data store.

Definition at line 386 of file DataObjectHandle.h.

386{ return &_get( true )->getData(); }
AnyDataWithViewWrapper< View, Owned > * _get(bool mustExist) const

◆ getIfExists()

template<typename View, typename Owned>
View * DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >::getIfExists ( ) const
inline

Definition at line 387 of file DataObjectHandle.h.

387 {
388 auto data = _get( false );
389 return data ? &data->getData() : nullptr;
390 }

◆ getOrCreate()

AnyDataWithViewWrapper< View, Owned > * DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >::getOrCreate ( ) const

Get object from store or create a new one if it doesn't exist.

Definition at line 133 of file DataObjectHandle.h.

184 {
185 T* obj = get( false );
186 return obj ? obj : put( std::make_unique<T>() );
187}
const View * put(std::unique_ptr< AnyDataWithViewWrapper< View, Owned > > objectp) const
Register object in transient store.

◆ put() [1/2]

template<typename View, typename Owned>
const View * DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >::put ( Owned && obj) const
inline

Definition at line 402 of file DataObjectHandle.h.

◆ put() [2/2]

template<typename View, typename Owned>
const View * DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >::put ( std::unique_ptr< AnyDataWithViewWrapper< View, Owned > > objectp) const
inline

Register object in transient store.

Definition at line 395 of file DataObjectHandle.h.

395 {
396 assert( m_init );
397 if ( auto sc = m_EDS->registerObject( objKey(), objectp.get() ); sc.isFailure() ) {
398 throw GaudiException( "Error in put of " + objKey(), "DataObjectHandle<AnyDataWithViewWrapper<T>::put", sc );
399 }
400 return &objectp.release()->getData();
401 }
SmartIF< IDataProviderSvc > m_EDS
T * get() const
Retrieve object from transient data store.

◆ pythonRepr()

template<typename View, typename Owned>
std::string DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >::pythonRepr ( ) const
inlineoverridevirtual

Reimplemented from Gaudi::DataHandle.

Definition at line 411 of file DataObjectHandle.h.

411 {
413 System::typeinfoName( typeid( View ) ) );
414 }
static const std::string default_type
Definition DataHandle.h:88

◆ size()

template<typename View, typename Owned>
std::optional< std::size_t > DataObjectHandle< AnyDataWithViewWrapper< View, Owned > >::size ( ) const
inline

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

Definition at line 409 of file DataObjectHandle.h.

409{ return _get()->size(); }

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