00001 // ===================================================================== 00021 // ===================================================================== 00022 #ifndef __TOUTPUTOBJECTSTREAM_HH 00023 #define __TOUTPUTOBJECTSTREAM_HH 00024 00025 #include "Tglobals.h" 00026 #include "TObjectStream.hh" 00027 00028 class TStreamableObject; 00029 class TObjectFilter; 00030 00031 00051 class TOutputObjectStream 00052 : public TObjectStream 00053 { 00054 00055 public: 00056 TOutputObjectStream( Tstream_t streamtype = tUnknownStream ); 00057 TOutputObjectStream( TObjectFilter* filter, Tstream_t streamtype = tUnknownStream ); 00058 00059 protected: 00060 virtual ~TOutputObjectStream(); 00061 00062 public: 00063 virtual Tint Write( TStreamableObject& object ) = 0; 00064 friend Tint operator<<( TOutputObjectStream& left, TStreamableObject& object ); 00065 friend Tint operator<<( TOutputObjectStream& left, const TStreamableObject& object ); 00066 00067 }; 00068 00069 inline Tint operator<<( TOutputObjectStream& left, TStreamableObject& object ) 00070 { 00071 return left.Write( object ); 00072 } 00073 00074 inline Tint operator<<( TOutputObjectStream& left, const TStreamableObject& object ) 00075 { 00076 return left.Write( *(TStreamableObject*)(&object) ); 00077 } 00078 00079 #endif