00001 // $Id: Services.h,v 1.6 2007/10/01 11:40:19 marcocle Exp $ 00002 #ifndef DETDESC_SERVICES_H 00003 #define DETDESC_SERVICES_H 1 00004 00005 #include <iostream> 00006 // Forward declarations 00007 class ISvcLocator; 00008 class IDataProviderSvc; 00009 class IMessageSvc; 00010 class IUpdateManagerSvc; 00011 00012 namespace DetDesc { 00013 00020 class Services { 00021 00022 public: 00023 00025 virtual unsigned long addRef() ; 00026 00028 virtual unsigned long release() ; 00029 00030 00031 public: 00037 ISvcLocator* svcLocator(); 00043 IDataProviderSvc* detSvc(); 00049 IMessageSvc* msgSvc(); 00050 00056 IUpdateManagerSvc* updMgrSvc(bool create = false); 00057 00059 static void setServices ( DetDesc::Services* val ); 00060 00061 // static acessor 00062 static Services* services(); 00063 00064 protected: 00065 00067 Services(); 00068 00070 virtual ~Services(); 00071 00072 private: 00073 00075 Services( const Services & ); 00076 00077 private: 00079 ISvcLocator* m_svcLocator; 00081 IDataProviderSvc* m_detSvc; 00083 IMessageSvc* m_msgSvc; 00085 IUpdateManagerSvc* m_updMgrSvc; 00086 00088 int m_refCount; 00089 00090 00092 static DetDesc::Services* s_services ; 00093 00094 }; 00095 00096 } 00097 00098 #endif