The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
DataObjectHandleBase Class Reference

DataObjectHandleBase GaudiKernel/DataObjectHandleBase.h. More...

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

Inheritance diagram for DataObjectHandleBase:
Collaboration diagram for DataObjectHandleBase:

Public Member Functions

 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 &&)
 
DataObjectHandleBaseoperator= (const DataObjectHandleBase &)
 
template<std::derived_from< IProperty > OWNER, class K>
 DataObjectHandleBase (OWNER *owner, Gaudi::DataHandle::Mode m, std::string name, K key={}, std::string doc="")
 Autodeclaring constructor with property name, mode, key and documentation.
 
bool isOptional () const
 Check if the data object declared is optional for the algorithm.
 
void setOptional (bool optional=true)
 
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 IDataHandleHolderowner () const
 
virtual Mode mode () const
 
virtual void setKey (DataObjID key)
 
virtual void updateKey (std::string key)
 
virtual const std::string & objKey () const
 
virtual const DataObjIDfullKey () const
 
virtual void reset (bool)
 
virtual std::string pythonRepr () const
 
virtual bool isCondition () const
 

Protected Member Functions

bool init () override
 
DataObjectfetch () const
 

Protected Attributes

SmartIF< IDataProviderSvcm_EDS
 
SmartIF< IMessageSvcm_MS
 
bool m_init = false
 
bool m_optional = 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.
 
IDataHandleHolderm_owner = nullptr
 

Friends

std::ostream & operator<< (std::ostream &str, const DataObjectHandleBase &d)
 

Additional Inherited Members

- Public Types inherited from Gaudi::DataHandle
enum  Mode { Reader = 1 << 2 , Writer = 1 << 4 }
 
using PropertyType = DataHandleProperty
 
- Static Protected Attributes inherited from Gaudi::DataHandle
static const std::string default_type = "unknown_t"
 

Detailed Description

DataObjectHandleBase GaudiKernel/DataObjectHandleBase.h.

Base class for handles to Data Objects in the Event Store, to simplify access via Properties.

Author
Charles Leggett
Date
2015-09-01

Definition at line 34 of file DataObjectHandleBase.h.

Constructor & Destructor Documentation

◆ DataObjectHandleBase() [1/5]

DataObjectHandleBase::DataObjectHandleBase ( DataObjID k,
Gaudi::DataHandle::Mode a,
IDataHandleHolder * owner )

Definition at line 47 of file DataObjectHandleBase.cpp.

48 : Gaudi::DataHandle( std::move( k ), a, owner ) {
49 m_owner->declare( *this );
50}
IDataHandleHolder * m_owner
Definition DataHandle.h:80
virtual IDataHandleHolder * owner() const
Definition DataHandle.h:52

◆ DataObjectHandleBase() [2/5]

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

Definition at line 54 of file DataObjectHandleBase.cpp.

55 : DataObjectHandleBase( DataObjID{ std::move( k ) }, a, owner ) {}
DataObjectHandleBase(DataObjID k, Gaudi::DataHandle::Mode a, IDataHandleHolder *owner)

◆ ~DataObjectHandleBase()

DataObjectHandleBase::~DataObjectHandleBase ( )
override

Definition at line 58 of file DataObjectHandleBase.cpp.

58{ owner()->renounce( *this ); }
virtual void renounce(Gaudi::DataHandle &)=0

◆ DataObjectHandleBase() [3/5]

DataObjectHandleBase::DataObjectHandleBase ( const DataObjectHandleBase & )
delete

◆ DataObjectHandleBase() [4/5]

DataObjectHandleBase::DataObjectHandleBase ( DataObjectHandleBase && other)

Definition at line 26 of file DataObjectHandleBase.cpp.

27 : Gaudi::DataHandle( other )
28 , m_EDS( std::move( other.m_EDS ) )
29 , m_MS( std::move( other.m_MS ) )
30 , m_init( other.m_init )
31 , m_optional( other.m_optional ) {
32 m_owner->declare( *this );
33}
SmartIF< IDataProviderSvc > m_EDS
SmartIF< IMessageSvc > m_MS

◆ DataObjectHandleBase() [5/5]

template<std::derived_from< IProperty > OWNER, class K>
DataObjectHandleBase::DataObjectHandleBase ( OWNER * owner,
Gaudi::DataHandle::Mode m,
std::string name,
K key = {},
std::string doc = "" )
inline

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

Note
the use of requires is required to avoid ambiguities

Definition at line 48 of file DataObjectHandleBase.h.

48 {},
49 std::string doc = "" )
50 : DataObjectHandleBase( std::move( key ), m, owner ) {
51 auto p = owner->declareProperty( std::move( name ), *this, std::move( doc ) );
52 p->template setOwnerType<OWNER>();
53 }
constexpr double m

Member Function Documentation

◆ fetch()

DataObject * DataObjectHandleBase::fetch ( ) const
protected

Definition at line 61 of file DataObjectHandleBase.cpp.

61 {
62 // convenience towards users -- remind them to register
63 // but as m_MS is not yet set, we cannot use a MsgStream...
64 if ( !m_init ) {
65 std::cerr << ( owner() ? owner()->name() : "<UNKNOWN>:" ) << "DataObjectHandle: uninitialized data handle"
66 << std::endl;
67 }
68 DataObject* p = nullptr;
69 m_EDS->retrieveObject( objKey(), p ).ignore();
70 return p;
71}
virtual const std::string & objKey() const
Definition DataHandle.h:59
virtual const std::string & name() const =0
Retrieve the name of the instance.

◆ init()

bool DataObjectHandleBase::init ( )
overrideprotectedvirtual

Reimplemented from Gaudi::DataHandle.

Definition at line 75 of file DataObjectHandleBase.cpp.

75 {
76 if ( m_init ) return true; // initialization already done
77
78 if ( !owner() ) return false;
79
80 Gaudi::Algorithm* algorithm = dynamic_cast<Gaudi::Algorithm*>( owner() );
81 if ( algorithm ) {
82 // Fetch the event Data Service from the algorithm
83 m_EDS = algorithm->evtSvc();
84 m_MS = algorithm->msgSvc();
85 } else {
86 AlgTool* tool = dynamic_cast<AlgTool*>( owner() );
87 if ( tool ) {
88 m_EDS = tool->evtSvc();
89 m_MS = tool->msgSvc();
90 } else {
91 throw GaudiException( "owner is neither AlgTool nor Gaudi::Algorithm", "Invalid Cast", StatusCode::FAILURE );
92 }
93 }
94 m_init = true;
95 return true;
96}
const SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
SmartIF< IDataProviderSvc > & evtSvc() const
shortcut for method eventSvc
Definition Algorithm.h:233
constexpr static const auto FAILURE
Definition StatusCode.h:100

◆ isOptional()

bool DataObjectHandleBase::isOptional ( ) const
inline

Check if the data object declared is optional for the algorithm.

Definition at line 58 of file DataObjectHandleBase.h.

58{ return m_optional; }

◆ isValid()

bool DataObjectHandleBase::isValid ( ) const

Definition at line 100 of file DataObjectHandleBase.cpp.

100{ return fullKey() != INVALID_DATAOBJID; }
const DataObjID INVALID_DATAOBJID
virtual const DataObjID & fullKey() const
Definition DataHandle.h:60

◆ operator=()

DataObjectHandleBase & DataObjectHandleBase::operator= ( const DataObjectHandleBase & other)

Definition at line 36 of file DataObjectHandleBase.cpp.

36 {
37 // FIXME: operator= should not change our owner, only our 'value'
38 Gaudi::DataHandle::operator=( other );
39 m_EDS = other.m_EDS;
40 m_MS = other.m_MS;
41 m_init = other.m_init;
42 m_optional = other.m_optional;
43 return *this;
44}

◆ setOptional()

void DataObjectHandleBase::setOptional ( bool optional = true)
inline

Definition at line 59 of file DataObjectHandleBase.h.

59{ m_optional = optional; }

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream & str,
const DataObjectHandleBase & d )
friend

Definition at line 104 of file DataObjectHandleBase.cpp.

104 {
105
106 str << d.fullKey() << " m: " << d.mode();
107 if ( d.owner() ) str << " o: " << d.owner()->name();
108 str << " opt: " << d.isOptional();
109 return str;
110}
bool isOptional() const
Check if the data object declared is optional for the algorithm.
virtual Mode mode() const
Definition DataHandle.h:54

Member Data Documentation

◆ m_EDS

SmartIF<IDataProviderSvc> DataObjectHandleBase::m_EDS
protected

Definition at line 69 of file DataObjectHandleBase.h.

◆ m_init

bool DataObjectHandleBase::m_init = false
protected

Definition at line 72 of file DataObjectHandleBase.h.

◆ m_MS

SmartIF<IMessageSvc> DataObjectHandleBase::m_MS
protected

Definition at line 70 of file DataObjectHandleBase.h.

◆ m_optional

bool DataObjectHandleBase::m_optional = false
protected

Definition at line 73 of file DataObjectHandleBase.h.


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