00001 // ===================================================================== 00002 // $Id: TOutputObjectStream.hh,v 1.1.1.1 2003/06/27 02:56:41 goiwai Exp $ 00003 // $Name: CLDAQ-1-06-02 $ 00004 // ===================================================================== 00005 #ifndef __TOUTPUTOBJECTSTREAM_HH 00006 #define __TOUTPUTOBJECTSTREAM_HH 00007 00008 #include "Tglobals.h" 00009 #include "TObjectStream.hh" 00010 00011 class TStreamableObject; 00012 class TObjectFilter; 00013 00014 class TOutputObjectStream 00015 : public TObjectStream 00016 { 00017 00018 public: 00019 TOutputObjectStream( Tstream_t streamtype = tUnknownStream ); 00020 TOutputObjectStream( TObjectFilter* filter, Tstream_t streamtype = tUnknownStream ); 00021 00022 protected: 00023 virtual ~TOutputObjectStream(); 00024 00025 public: 00026 virtual Tint Write( TStreamableObject& object ) = 0; 00027 friend Tint operator<<( TOutputObjectStream& left, TStreamableObject& object ); 00028 friend Tint operator<<( TOutputObjectStream& left, const TStreamableObject& object ); 00029 00030 }; 00031 00032 inline Tint operator<<( TOutputObjectStream& left, TStreamableObject& object ) 00033 { 00034 return( left.Write( object ) ); 00035 } 00036 00037 inline Tint operator<<( TOutputObjectStream& left, const TStreamableObject& object ) 00038 { 00039 return( left.Write( *(TStreamableObject*)(&object) ) ); 00040 } 00041 00042 #endif