00001 // ===================================================================== 00036 // ===================================================================== 00037 #ifndef CLDAQ__TOUTPUTOBJECTSTREAM_HH 00038 #define CLDAQ__TOUTPUTOBJECTSTREAM_HH 00039 00040 #include "Tglobals.h" 00041 #include "TObjectStream.hh" 00042 00043 class TStreamableObject; 00044 class TOutputObjectFilter; 00045 00046 00066 class TOutputObjectStream 00067 : public TObjectStream 00068 { 00069 00070 protected: 00071 TOutputObjectFilter* theObjectFilter; 00072 00073 public: 00074 TOutputObjectStream( Tstream_t streamtype = tUnknownStream ); 00075 TOutputObjectStream( TOutputObjectFilter* filter, Tstream_t streamtype = tUnknownStream ); 00076 00077 protected: 00078 virtual ~TOutputObjectStream(); 00079 00080 public: 00081 TOutputObjectFilter* GetObjectFilter() const; 00082 Tvoid SetObjectFilter( TOutputObjectFilter* filter ); 00083 Tbool HasFilter() const; 00084 00085 public: 00086 virtual Tint Write( TStreamableObject& object ) = 0; 00087 friend Tint operator<<( TOutputObjectStream& left, TStreamableObject& object ); 00088 friend Tint operator<<( TOutputObjectStream& left, const TStreamableObject& object ); 00089 00090 #ifdef __CLDAQ_ROOT_DLL 00091 ClassDef(TOutputObjectStream,0) 00092 #endif 00093 00094 }; 00095 00096 inline Tint operator<<( TOutputObjectStream& left, TStreamableObject& object ) 00097 { 00098 return left.Write( object ); 00099 } 00100 00101 inline Tint operator<<( TOutputObjectStream& left, const TStreamableObject& object ) 00102 { 00103 return left.Write( *(TStreamableObject*)(&object) ); 00104 } 00105 00106 inline TOutputObjectFilter* TOutputObjectStream::GetObjectFilter() const 00107 { 00108 return theObjectFilter; 00109 } 00110 00111 inline Tvoid TOutputObjectStream::SetObjectFilter( TOutputObjectFilter* filter ) 00112 { 00113 theObjectFilter = filter; 00114 return; 00115 } 00116 00117 inline Tbool TOutputObjectStream::HasFilter() const 00118 { 00119 return ( theObjectFilter != 0 ) ? Ttrue : Tfalse; 00120 } 00121 00122 #endif