00001 #ifndef DBIROWSTREAM_H 00002 #define DBIROWSTREAM_H 00003 00004 /** 00005 * 00006 * $Id: TDbiRowStream.hxx,v 1.1 2011/01/18 05:49:20 finch Exp $ 00007 * 00008 * \class TDbiRowStream 00009 * 00010 * 00011 * \brief 00012 * <b>Concept</b> I/O buffer for a row of a table. 00013 * 00014 * \brief 00015 * <b>Purpose</b> This forms the base class for TDbiInRowStream (input) 00016 * and TDbiWriter (input) 00017 * 00018 * Contact: A.Finch@lancaster.ac.uk 00019 * 00020 * 00021 */ 00022 00023 #include <string> 00024 00025 #include "TDbiFieldType.hxx" 00026 00027 class TDbiTableMetaData; 00028 00029 class TDbiRowStream 00030 { 00031 00032 public: 00033 00034 // Constructors and destructors. 00035 TDbiRowStream(const TDbiTableMetaData* metaData); 00036 virtual ~TDbiRowStream(); 00037 00038 // State testing member functions 00039 virtual 00040 const TDbiFieldType& ColFieldType(UInt_t col) const; 00041 virtual string ColName(UInt_t col) const; 00042 virtual 00043 const TDbiFieldType& CurColFieldType() const; 00044 virtual string CurColName() const; 00045 virtual UInt_t CurColNum() const { return fCurCol;} 00046 Bool_t HasEpoch() const; 00047 Bool_t HasRowCounter() const { return fHasRowCounter; } 00048 Bool_t IsVLDTable() const { return fIsVLDTable; } 00049 virtual UInt_t NumCols() const; 00050 virtual string TableName() const; 00051 virtual string TableNameTc() const; 00052 virtual const TDbiTableMetaData* 00053 MetaData() const { return fMetaData; } 00054 // State changing member functions 00055 00056 virtual void DecrementCurCol() { 00057 fCurCol = (fCurCol <= 1) ? 1 : fCurCol -1; } 00058 // Allow IncrementCurCol to step off end (to catch attempt to read 00059 // too much data) 00060 virtual void IncrementCurCol() { ++fCurCol; } 00061 00062 protected: 00063 00064 virtual void ClearCurCol() { fCurCol = 1; } 00065 00066 private: 00067 00068 00069 // Data members 00070 00071 /// Current column in query (1..fNumCols) 00072 UShort_t fCurCol; 00073 00074 /// True if main table has ROW_COUNTER as second column 00075 Bool_t fHasRowCounter; 00076 00077 /// Owned by TDbiTableProxy 00078 const TDbiTableMetaData* fMetaData; 00079 00080 /// True if reading data for a *VLD table. 00081 Bool_t fIsVLDTable; 00082 00083 ClassDef(TDbiRowStream,0) // I/O of a table row. 00084 00085 }; 00086 00087 00088 #endif // DBIROWSTREAM_H 00089