#ifndef ROOT_TKeySQL
#define ROOT_TKeySQL
#ifndef ROOT_TKey
#include "TKey.h"
#endif
class TSQLFile;
class TKeySQL : public TKey {
private:
TKeySQL(const TKeySQL&);
TKeySQL& operator=(const TKeySQL&);
protected:
TKeySQL();
virtual Int_t Read(const char *name) { return TKey::Read(name); }
void StoreKeyObject(const void* obj, const TClass* cl);
void* ReadKeyObject(void* obj, const TClass* expectedClass);
Long64_t fKeyId;
Long64_t fObjId;
public:
TKeySQL(TDirectory* mother, const TObject* obj, const char* name, const char* title = 0);
TKeySQL(TDirectory* mother, const void* obj, const TClass* cl, const char* name, const char* title = 0);
TKeySQL(TDirectory* mother, Long64_t keyid, Long64_t objid,
const char* name, const char* title,
const char* keydatetime, Int_t cycle, const char* classname);
virtual ~TKeySQL();
Bool_t IsKeyModified(const char* keyname, const char* keytitle, const char* keydatime, Int_t cycle, const char* classname);
Long64_t GetDBKeyId() const { return fKeyId; }
Long64_t GetDBObjId() const { return fObjId; }
Long64_t GetDBDirId() const;
virtual void Delete(Option_t *option="");
virtual void DeleteBuffer() {}
virtual void FillBuffer(char *&) {}
virtual char *GetBuffer() const { return 0; }
virtual Long64_t GetSeekKey() const { return GetDBObjId() > 0 ? GetDBObjId() : 0; }
virtual Long64_t GetSeekPdir() const { return GetDBDirId() > 0 ? GetDBDirId() : 0; }
virtual void Keep() {}
virtual Int_t Read(TObject* obj);
virtual TObject *ReadObj();
virtual TObject *ReadObjWithBuffer(char *bufferRead);
virtual void *ReadObjectAny(const TClass *expectedClass);
virtual void ReadBuffer(char *&) {}
virtual Bool_t ReadFile() { return kTRUE; }
virtual void SetBuffer() { fBuffer = 0; }
virtual Int_t WriteFile(Int_t =1, TFile* = 0) { return 0; }
ClassDef(TKeySQL,1)
};
#endif