ATLAS Offline Software
Loading...
Searching...
No Matches
Athena::IMessageSvcHolder Class Reference

get a IMessageSvc* on 1st use (if not set) and release it on ~ More...

#include <getMessageSvc.h>

Collaboration diagram for Athena::IMessageSvcHolder:

Public Member Functions

 IMessageSvcHolder ()
 will take the IMessageSvc* lazily from getMessageSvc() in get() Slow, but useful for classes without direct access to IMessageSvc*
 IMessageSvcHolder (const Options::CreateOptions o)
 allows to get the IMessageSvc immediately
 IMessageSvcHolder (IMessageSvc *ims)
 IMessageSvcHolder (const IMessageSvcHolder &)
 behaves like the constructor taking an IMessageSvc *
IMessageSvcHolderoperator= (const IMessageSvcHolder &)
 ~IMessageSvcHolder ()
 releases the IMessageSvc
IMessageSvc * get ()
 upon first access sets m_ims as needed
 operator IMessageSvc * ()
 conversion to IMessageSvc*, same as get

Private Attributes

IMessageSvc * m_ims

Detailed Description

get a IMessageSvc* on 1st use (if not set) and release it on ~

Definition at line 60 of file getMessageSvc.h.

Constructor & Destructor Documentation

◆ IMessageSvcHolder() [1/4]

Athena::IMessageSvcHolder::IMessageSvcHolder ( )
inline

will take the IMessageSvc* lazily from getMessageSvc() in get() Slow, but useful for classes without direct access to IMessageSvc*

Definition at line 64 of file getMessageSvc.h.

64: m_ims() {}

◆ IMessageSvcHolder() [2/4]

IMessageSvcHolder::IMessageSvcHolder ( const Options::CreateOptions o)

allows to get the IMessageSvc immediately

Parameters
oif o is Athena::Options::Eager it will create a MessageSvc instance there and then.

Definition at line 90 of file getMessageSvc.cxx.

90 :
91 m_ims(0)
92{
94}
IMessageSvc * getMessageSvc(bool quiet=false)

◆ IMessageSvcHolder() [3/4]

IMessageSvcHolder::IMessageSvcHolder ( IMessageSvc * ims)

Definition at line 69 of file getMessageSvc.cxx.

69 : m_ims(ims) {
70 assert(m_ims);
71 m_ims->addRef(); //take ownership till we go out of scope
72}

◆ IMessageSvcHolder() [4/4]

IMessageSvcHolder::IMessageSvcHolder ( const IMessageSvcHolder & rhs)

behaves like the constructor taking an IMessageSvc *

Definition at line 74 of file getMessageSvc.cxx.

74 :
75 m_ims(rhs.m_ims)
76{
77 if (m_ims) m_ims->addRef(); //take ownership till we go out of scope
78}

◆ ~IMessageSvcHolder()

IMessageSvcHolder::~IMessageSvcHolder ( )

releases the IMessageSvc

Definition at line 96 of file getMessageSvc.cxx.

96 {
97 if (m_ims) m_ims->release();
98}

Member Function Documentation

◆ get()

IMessageSvc * IMessageSvcHolder::get ( )

upon first access sets m_ims as needed

Definition at line 101 of file getMessageSvc.cxx.

101 {
102 if (!m_ims) m_ims = getMessageSvc();
103 return m_ims;
104}

◆ operator IMessageSvc *()

Athena::IMessageSvcHolder::operator IMessageSvc * ( )
inline

conversion to IMessageSvc*, same as get

Definition at line 87 of file getMessageSvc.h.

87{ return this->get(); }
IMessageSvc * get()
upon first access sets m_ims as needed

◆ operator=()

IMessageSvcHolder & IMessageSvcHolder::operator= ( const IMessageSvcHolder & rhs)

Definition at line 81 of file getMessageSvc.cxx.

81 {
82 if (this != & rhs && m_ims != rhs.m_ims) {
83 if (m_ims) m_ims->release(); //give up our IMessageSvc*
84 m_ims = rhs.m_ims;
85 if (m_ims) m_ims->addRef(); //take ownership till we go out of scope
86 }
87 return *this;
88}

Member Data Documentation

◆ m_ims

IMessageSvc* Athena::IMessageSvcHolder::m_ims
private

Definition at line 89 of file getMessageSvc.h.


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