00001 // ===================================================================== 00030 // ===================================================================== 00031 #ifndef __TDATASECTION_HH 00032 #define __TDATASECTION_HH 00033 00034 #include "Tglobals.h" 00035 #include "TStreamableObject.hh" 00036 #include "TDataSegmentList.hh" 00037 00038 class TOutputObjectStream; 00039 class TOutputObjectFile; 00040 class TOutputObjectSocket; 00041 class TOutputObjectSharedMemory; 00042 00043 00063 class TDataSection 00064 : public TStreamableObject, public TDataSegmentList 00065 { 00066 00067 public: 00068 TDataSection( const Tstring& id = TunknownID ); 00069 TDataSection( const TDataSection& right ); 00070 ~TDataSection(); 00071 00072 public: 00073 Tint GetRecordSize(); 00074 Tint Record( TOutputObjectStream* objectfile ); 00075 Tvoid Clear(); 00076 Tint Serialize( Tvoid* buffer ); 00077 00078 public: 00079 const TDataSection& operator=( const TDataSection& right ); 00080 Tbool operator==( const TDataSection& right ) const; 00081 Tbool operator!=( const TDataSection& right ) const; 00082 const TDataSegment& operator[]( Tint n ) const; 00083 TDataSegment& operator[]( Tint n ); 00084 const TDataSegment& operator[]( const Tstring& id ) const; 00085 TDataSegment& operator[]( const Tstring& id ); 00086 friend Tostream& operator<<( Tostream& tos, const TDataSection& right ); 00087 00088 public: 00089 Tbool FindDataSegment( const Tstring& id, TDataSegment& segment ) const; 00090 Tint FindDataSegment( const Tstring& id ) const; 00091 Tbool FindDataElement( const Tstring& segid, const Tstring& eleid, TDataElement& element ) const; 00092 Tint FindDataElement( const Tstring& segid, const Tstring& eleid ) const; 00093 Tbool FindDataElement( Tstring idset[ 2 ], TDataElement& element ) const; 00094 Tint FindDataElement( Tstring idset[ 2 ] ) const; 00095 Tbool FindDataElement( const TstringList& idset, TDataElement& element ) const; 00096 Tint FindDataElement( const TstringList& idset ) const; 00097 00098 private: 00099 Tint record( TOutputObjectFile* ofile ); 00100 Tint record( TOutputObjectSocket* osocket ); 00101 Tint record( TOutputObjectSharedMemory* omemory ); 00102 00103 }; 00104 00105 #endif