00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef ROOT_TKeySQL
00014 #define ROOT_TKeySQL
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef ROOT_TKey
00025 #include "TKey.h"
00026 #endif
00027
00028 class TSQLFile;
00029
00030 class TKeySQL : public TKey {
00031
00032 private:
00033 TKeySQL(const TKeySQL&);
00034 TKeySQL& operator=(const TKeySQL&);
00035
00036 protected:
00037 TKeySQL();
00038
00039 virtual Int_t Read(const char *name) { return TKey::Read(name); }
00040 void StoreKeyObject(const void* obj, const TClass* cl);
00041 void* ReadKeyObject(void* obj, const TClass* expectedClass);
00042
00043 Long64_t fKeyId;
00044 Long64_t fObjId;
00045
00046 public:
00047 TKeySQL(TDirectory* mother, const TObject* obj, const char* name, const char* title = 0);
00048 TKeySQL(TDirectory* mother, const void* obj, const TClass* cl, const char* name, const char* title = 0);
00049 TKeySQL(TDirectory* mother, Long64_t keyid, Long64_t objid,
00050 const char* name, const char* title,
00051 const char* keydatetime, Int_t cycle, const char* classname);
00052 virtual ~TKeySQL();
00053
00054 Bool_t IsKeyModified(const char* keyname, const char* keytitle, const char* keydatime, Int_t cycle, const char* classname);
00055
00056 Long64_t GetDBKeyId() const { return fKeyId; }
00057 Long64_t GetDBObjId() const { return fObjId; }
00058 Long64_t GetDBDirId() const;
00059
00060
00061 virtual void Delete(Option_t *option="");
00062 virtual void DeleteBuffer() {}
00063 virtual void FillBuffer(char *&) {}
00064 virtual char *GetBuffer() const { return 0; }
00065 virtual Long64_t GetSeekKey() const { return GetDBObjId() > 0 ? GetDBObjId() : 0; }
00066 virtual Long64_t GetSeekPdir() const { return GetDBDirId() > 0 ? GetDBDirId() : 0; }
00067 virtual void Keep() {}
00068
00069 virtual Int_t Read(TObject* obj);
00070 virtual TObject *ReadObj();
00071 virtual TObject *ReadObjWithBuffer(char *bufferRead);
00072 virtual void *ReadObjectAny(const TClass *expectedClass);
00073
00074 virtual void ReadBuffer(char *&) {}
00075 virtual void ReadFile() {}
00076 virtual void SetBuffer() { fBuffer = 0; }
00077 virtual Int_t WriteFile(Int_t =1, TFile* = 0) { return 0; }
00078
00079 ClassDef(TKeySQL,1)
00080 };
00081
00082 #endif