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