00001 #ifndef DBIRESULTKEY 00002 #define DBIRESULTKEY 00003 00023 #include <list> 00024 #include <iosfwd> 00025 #include <string> 00026 00027 #include "TObject.h" 00028 00029 #include "Context/TimeStamp.h" 00030 00031 class DbiResultKey; 00032 std::ostream& operator<<(std::ostream& os, const DbiResultKey& key); 00033 00034 class DbiResultKey : public TObject 00035 { 00036 00037 public: 00038 00039 using TObject::Compare; 00040 00041 // Constructors and destructors. 00042 DbiResultKey(const DbiResultKey* that = 0); 00043 DbiResultKey(std::string tableName, 00044 std::string rowName, 00045 UInt_t seqno, 00046 TimeStamp ts); 00047 virtual ~DbiResultKey(); 00048 00049 // State testing member functions 00050 std::string AsString() const; 00051 Float_t Compare(const DbiResultKey* that) const; 00052 static const DbiResultKey* 00053 GetEmptyKey() { return &fgEmptyKey; } 00054 Int_t GetNumVrecs() const { return fNumVRecKeys; } 00055 std::string GetTableRowName() const; 00056 Bool_t IsEqualTo(const DbiResultKey* that) const { 00057 return this->Compare(that) == 1.; } 00058 00059 // State changing member functions 00060 00061 void AddVRecKey(UInt_t seqno, TimeStamp ts); 00062 00063 // push this put to the public: portion so that rootcint dict compiles 00064 struct VRecKey { 00065 VRecKey() : SeqNo(0), VersionDate() {} 00066 VRecKey(UInt_t seqno, TimeStamp ts) : SeqNo(seqno), VersionDate(ts) {} 00067 UInt_t SeqNo; 00068 TimeStamp VersionDate; 00069 }; 00070 00071 private: 00072 00073 static DbiResultKey fgEmptyKey; 00074 00075 // Data members 00076 00078 std::string fTableName; 00079 00081 std::string fRowName; 00082 00084 std::list<DbiResultKey::VRecKey> fVRecKeys; 00085 00087 Int_t fNumVRecKeys; 00088 00089 // Removed: ClassDef(DbiResultKey,1) // output string stream 00090 00091 }; 00092 00093 00094 #endif // DBIRESULTKEY 00095