00001 // ===================================================================== 00002 // $Id: TOutputObjectFile.cc,v 1.6 2004/03/07 10:30:32 goiwai Exp $ 00003 // $Name: CLDAQ-1-14-03 $ 00004 // $Log: TOutputObjectFile.cc,v $ 00005 // Revision 1.6 2004/03/07 10:30:32 goiwai 00006 // ROOTに組みこむためのおまじないマクロを埋めこみました。 00007 // 全てにおいて完全に動作するわけではありません。 00008 // 00009 // Revision 1.5 2003/12/06 10:56:19 goiwai 00010 // フィルタ関連の修整と Read(),Write()の戻り値の修整です. 00011 // Read()もWrite()も処理したレコードサイズを返します. 00012 // フィルタがある場合も同様です. 00013 // それぞれのストリームのDataSizeの扱いですが,これは扱ったレコードサイズ 00014 // でなく扱ったファイルやソケットなどのサイズになります.レコードサイズと 00015 // 一致するとは限りません. 00016 // 00017 // Revision 1.4 2003/10/12 13:05:33 goiwai 00018 // *** empty log message *** 00019 // 00020 // Revision 1.3 2003/10/06 17:02:42 goiwai 00021 // *** empty log message *** 00022 // 00023 // Revision 1.2 2003/07/30 16:19:31 goiwai 00024 // ファイルにコミットログをつけることにしました. 00025 // 00026 // ===================================================================== 00027 #include "TOutputObjectFile.hh" 00028 #include "TObjectFilter.hh" 00029 #include "TOutputObjectFilter.hh" 00030 00031 TOutputObjectFile::TOutputObjectFile( const Tstring& filename, const Tstring& mode ) 00032 : TObjectFile( filename, mode ), TOutputObjectStream( tFileStream ) 00033 {;} 00034 00035 TOutputObjectFile::TOutputObjectFile( TOutputObjectFilter* filter, const Tstring& filename, const Tstring& mode ) 00036 : TObjectFile( filename, mode ), TOutputObjectStream( filter, tFileStream ) 00037 {;} 00038 00039 TOutputObjectFile::~TOutputObjectFile() 00040 {;} 00041 00042 Tint TOutputObjectFile::Write( TStreamableObject& object ) 00043 { 00044 if ( HasFilter() ) { 00045 return theObjectFilter -> Filtering( object, this ); 00046 } 00047 00048 theLastDataSize = theDataSize; 00049 theDataSize = 0; 00050 theDataSize = object.Record( this ); 00051 theTotalDataSize += theDataSize; 00052 00053 return theDataSize; 00054 } 00055 00056 #ifdef __CLDAQ_ROOT_DLL 00057 ClassImp(TOutputObjectFile) 00058 #endif