00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TKeyXML
00013 #define ROOT_TKeyXML
00014
00015 #ifndef ROOT_TXMLEngine
00016 #include "TXMLEngine.h"
00017 #endif
00018 #ifndef ROOT_TKey
00019 #include "TKey.h"
00020 #endif
00021
00022 class TXMLFile;
00023
00024 class TKeyXML : public TKey {
00025
00026 private:
00027 TKeyXML(const TKeyXML&);
00028 TKeyXML& operator=(const TKeyXML&);
00029
00030 protected:
00031 TKeyXML();
00032
00033 public:
00034 TKeyXML(TDirectory* mother, Long64_t keyid, const TObject* obj, const char* name = 0, const char* title = 0);
00035 TKeyXML(TDirectory* mother, Long64_t keyid, const void* obj, const TClass* cl, const char* name, const char* title = 0);
00036 TKeyXML(TDirectory* mother, Long64_t keyid, XMLNodePointer_t keynode);
00037 virtual ~TKeyXML();
00038
00039
00040 virtual void Delete(Option_t *option="");
00041 virtual void DeleteBuffer() {}
00042 virtual void FillBuffer(char *&) {}
00043 virtual char *GetBuffer() const { return 0; }
00044 virtual Long64_t GetSeekKey() const { return fKeyNode ? 1024 : 0;}
00045 virtual Long64_t GetSeekPdir() const { return fKeyNode ? 1024 : 0;}
00046
00047 virtual void Keep() {}
00048
00049
00050
00051 virtual Int_t Read(TObject* tobj);
00052 virtual TObject *ReadObj();
00053 virtual TObject *ReadObjWithBuffer(char *bufferRead);
00054 virtual void *ReadObjectAny(const TClass *expectedClass);
00055
00056 virtual void ReadBuffer(char *&) {}
00057 virtual void ReadFile() {}
00058 virtual void SetBuffer() { fBuffer = 0; }
00059 virtual Int_t WriteFile(Int_t =1, TFile* = 0) { return 0; }
00060
00061
00062
00063 XMLNodePointer_t KeyNode() const { return fKeyNode; }
00064 Long64_t GetKeyId() const { return fKeyId; }
00065 Bool_t IsSubdir() const { return fSubdir; }
00066 void SetSubir() { fSubdir = kTRUE; }
00067 void UpdateObject(TObject* obj);
00068 void UpdateAttributes();
00069
00070 protected:
00071 virtual Int_t Read(const char *name) { return TKey::Read(name); }
00072 void StoreObject(const void* obj, const TClass* cl);
00073 void StoreKeyAttributes();
00074 TXMLEngine* XMLEngine();
00075
00076 void* XmlReadAny(void* obj, const TClass* expectedClass);
00077
00078 XMLNodePointer_t fKeyNode;
00079 Long64_t fKeyId;
00080 Bool_t fSubdir;
00081
00082 ClassDef(TKeyXML,1)
00083 };
00084
00085 #endif