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