00001 // This file's extension implies that it's C, but it's really -*- C++ -*-. 00002 /* And was taken from ATLAS CVS by bv@bnl.gov 2008/7/16. Any bugs, 00003 * blame me, not them! */ 00004 #ifndef DYBKERNEL_GETMESSAGESVC_H 00005 #define DYBKERNEL_GETMESSAGESVC_H 1 00006 00012 #include <cassert> 00013 class IMessageSvc; 00014 namespace Dyb { 00015 namespace Options { 00016 enum CreateOptions { 00017 Eager, 00018 Lazy 00019 }; 00020 } 00028 IMessageSvc* getMessageSvc(); 00029 IMessageSvc* getMessageSvc( const Options::CreateOptions o ); 00030 00034 class IMessageSvcHolder { 00035 public: 00038 IMessageSvcHolder() : m_ims() {} 00039 00043 IMessageSvcHolder(const Options::CreateOptions o); 00044 00050 IMessageSvcHolder(IMessageSvc *ims); 00051 00053 IMessageSvcHolder(const IMessageSvcHolder&); 00054 IMessageSvcHolder& operator=(const IMessageSvcHolder&); 00055 00057 ~IMessageSvcHolder(); 00059 IMessageSvc* get() const; 00061 operator const IMessageSvc*() const { return this->get(); } 00063 operator IMessageSvc*() { return this->get(); } 00064 private: 00065 mutable IMessageSvc* m_ims; //mutable to have op() const 00066 }; 00067 } 00068 00069 #endif