00001 // ===================================================================== 00002 // $Id: TDataSegment.hh,v 1.3 2003/08/25 09:21:44 goiwai Exp $ 00003 // $Name: CLDAQ-1-08-01 $ 00004 // 00005 // $Log: TDataSegment.hh,v $ 00006 // Revision 1.3 2003/08/25 09:21:44 goiwai 00007 // operator[]( const Tstring& id ) を加えました. 00008 // segment[0] とか segment["tag"] とかすれば, TDataElement を得ることが出 00009 // 来ます. 00010 // size()を越えた範囲にも,チェックしないでアクセスします. 00011 // マッチしなかった場合は落ちます. 00012 // 同じ名前でタグされた DataElement がある場合,最初にマッチしたものが返っ 00013 // てきます. 00014 // 00015 // Revision 1.2 2003/07/30 16:17:51 goiwai 00016 // ファイルにコミットログをつけることにしました. 00017 // 00018 // ===================================================================== 00019 #ifndef __TDATASEGMENT_HH 00020 #define __TDATASEGMENT_HH 00021 00022 #include "Tglobals.h" 00023 #include "TStreamableObject.hh" 00024 #include "TDataElementList.hh" 00025 00026 class TOutputObjectStream; 00027 class TOutputObjectFile; 00028 class TOutputObjectSocket; 00029 class TOutputObjectSharedMemory; 00030 00031 class TDataSegment 00032 : public TStreamableObject, public TDataElementList 00033 { 00034 00035 public: 00036 TDataSegment( const Tstring& id = TunknownID ); 00037 TDataSegment( const TDataSegment& right ); 00038 ~TDataSegment(); 00039 00040 public: 00041 Tint GetRecordSize(); 00042 Tint Record( TOutputObjectStream* output ); 00043 Tvoid Clear(); 00044 Tint Serialize( Tvoid* buffer ); 00045 00046 public: 00047 const TDataSegment& operator=( const TDataSegment& right ); 00048 Tbool operator==( const TDataSegment& right ) const; 00049 Tbool operator!=( const TDataSegment& right ) const; 00050 const TDataElement& operator[]( Tint n ) const; 00051 TDataElement& operator[]( Tint n ); 00052 const TDataElement& operator[]( const Tstring& id ) const; 00053 TDataElement& operator[]( const Tstring& id ); 00054 friend Tostream& operator<<( Tostream& tos, const TDataSegment& right ); 00055 00056 public: 00057 Tbool FindDataElement( const Tstring& id, TDataElement& element ) const; 00058 Tint FindDataElement( const Tstring& id ) const; 00059 00060 private: 00061 Tint record( TOutputObjectFile* ofile ); 00062 Tint record( TOutputObjectSocket* osocket ); 00063 Tint record( TOutputObjectSharedMemory* omemory ); 00064 00065 00066 }; 00067 00068 #endif