| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

Dyb::IMessageSvcHolder Class Reference

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

#include <getMessageSvc.h>

Collaboration diagram for Dyb::IMessageSvcHolder:

[legend]
List of all members.

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
IMessageSvcget () const
 upon first access sets m_ims as needed
 operator const IMessageSvc * () const
 conversion to IMessageSvc*, same as get
 operator IMessageSvc * ()
 conversion to IMessageSvc*, same as get

Private Attributes

IMessageSvcm_ims

Detailed Description

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

Definition at line 34 of file getMessageSvc.h.


Constructor & Destructor Documentation

Dyb::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 38 of file getMessageSvc.h.

00038 : m_ims() {}

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

allows to get the IMessageSvc immediately

Parameters:
o,: if o is Dyb::Options::Eager it will create a MessageSvc instance there and then.

Definition at line 43 of file getMessageSvc.cc.

00043                                                                      :
00044   m_ims(0)
00045 {
00046   if (opt == Dyb::Options::Eager) m_ims = getMessageSvc(opt);
00047 }

IMessageSvcHolder::IMessageSvcHolder ( IMessageSvc ims  ) 

Definition at line 22 of file getMessageSvc.cc.

00022                                                      : m_ims(ims) {
00023   assert(m_ims);
00024   m_ims->addRef(); //take ownership till we go out of scope
00025 }

IMessageSvcHolder::IMessageSvcHolder ( const IMessageSvcHolder  ) 

behaves like the constructor taking an IMessageSvc *

Definition at line 27 of file getMessageSvc.cc.

00027                                                                  :
00028   m_ims(rhs.m_ims) 
00029 {
00030   if (m_ims) m_ims->addRef(); //take ownership till we go out of scope
00031 }

IMessageSvcHolder::~IMessageSvcHolder (  ) 

releases the IMessageSvc

Definition at line 49 of file getMessageSvc.cc.

00049                                       {
00050   if (m_ims) m_ims->release();
00051 }


Member Function Documentation

IMessageSvcHolder & IMessageSvcHolder::operator= ( const IMessageSvcHolder  ) 

Definition at line 34 of file getMessageSvc.cc.

00034                                                          {
00035   if (this != & rhs && m_ims != rhs.m_ims) {
00036     if (m_ims) m_ims->release(); //give up our IMessageSvc*
00037     m_ims = rhs.m_ims;
00038     if (m_ims) m_ims->addRef(); //take ownership till we go out of scope
00039   }
00040   return *this;
00041 }

IMessageSvc * IMessageSvcHolder::get (  )  const

upon first access sets m_ims as needed

Definition at line 54 of file getMessageSvc.cc.

00054                              {
00055   if (!m_ims) m_ims = getMessageSvc();
00056   return m_ims;
00057 }

Dyb::IMessageSvcHolder::operator const IMessageSvc * (  )  const [inline]

conversion to IMessageSvc*, same as get

Definition at line 61 of file getMessageSvc.h.

00061 { return this->get(); }

Dyb::IMessageSvcHolder::operator IMessageSvc * (  )  [inline]

conversion to IMessageSvc*, same as get

Definition at line 63 of file getMessageSvc.h.

00063 { return this->get(); }


Member Data Documentation

IMessageSvc* Dyb::IMessageSvcHolder::m_ims [mutable, private]

Definition at line 65 of file getMessageSvc.h.


The documentation for this class was generated from the following files:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:09:25 2011 for DybKernel by doxygen 1.4.7