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