00001 //==================================================================== 00002 // EventSelectorDataStream.h 00003 //-------------------------------------------------------------------- 00004 // 00005 // Package : EventSelectorDataStream (LHCb Event Selector Package) 00006 // 00007 // Author : M.Frank 00008 // Created : 4/10/00 00009 // 00010 //==================================================================== 00011 #ifndef GAUDIKERNEL_EVENTSELECTORDATASTREAM_H 00012 #define GAUDIKERNEL_EVENTSELECTORDATASTREAM_H 1 00013 00014 // Include files 00015 #include "GaudiKernel/IEvtSelector.h" 00016 #include "GaudiKernel/Property.h" 00017 00018 // STL include files 00019 #include <vector> 00020 #include <iostream> 00021 00022 // Forward declarations 00023 class MsgStream; 00024 class ISvcLocator; 00025 class EventSelectorDataStream; 00026 00041 class EventSelectorDataStream : virtual public IInterface { 00043 friend MsgStream& operator<<(MsgStream& s, const EventSelectorDataStream& obj); 00045 friend std::ostream& operator<<(std::ostream& s, const EventSelectorDataStream& obj); 00046 public: 00047 typedef std::vector< StringProperty > Properties; 00048 protected: 00050 long m_refCount; 00052 std::string m_name; 00054 std::string m_definition; 00056 std::string m_criteria; 00058 std::string m_selectorType; 00060 IEvtSelector* m_pSelector; 00062 ISvcLocator* m_pSvcLocator; 00064 Properties* m_properties; 00066 bool m_initialized; 00068 virtual ~EventSelectorDataStream(); 00069 public: 00071 EventSelectorDataStream(const std::string& nam, const std::string& def, ISvcLocator* svcloc); 00076 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvUnknown); 00078 virtual unsigned long addRef(); 00080 virtual unsigned long release(); 00082 virtual void setSelector(IEvtSelector* pSelector); 00084 virtual StatusCode initialize(); 00086 virtual StatusCode finalize(); 00088 StringProperty* property(const std::string& nam); 00090 const StringProperty* property(const std::string& nam) const; 00092 const Properties& properties() { 00093 return *m_properties; 00094 } 00096 const std::string& name() const { 00097 return m_name; 00098 } 00100 const std::string& criteria() const { 00101 return m_criteria; 00102 } 00104 const std::string& selectorType() const { 00105 return m_selectorType; 00106 } 00108 const std::string& definition() const { 00109 return m_definition; 00110 } 00112 IEvtSelector* selector() const { 00113 return m_pSelector; 00114 } 00116 bool isInitialized() const { 00117 return m_initialized; 00118 } 00119 }; 00120 #endif // GAUDIKERNEL_EVENTSELECTORDATASTREAM_H