TKeyXML-

TKeyXML is represents one block of data in TXMLFile

Normally this block corresponds to data of single object like histogram, TObjArray and so on.

class TKeyXML : public TKey

class

private:
   TKeyXML(const TKeyXML &);            // TKeyXML objects are not copiable.
   TKeyXML &operator=(const TKeyXML &); // TKeyXML objects are not copiable.

protected:
   TKeyXML();

public:
   TKeyXML(TDirectory *mother, Long64_t keyid, const TObject *obj, const char *name = 0, const char *title = 0);
   TKeyXML(TDirectory *mother, Long64_t keyid, const void *obj, const TClass *cl, const char *name,
           const char *title = 0);
   TKeyXML(TDirectory *mother, Long64_t keyid, XMLNodePointer_t keynode);
   virtual ~TKeyXML();

   // redefined TKey Methods
   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 fKeyNode ? 1024 : 0; }
   virtual Long64_t GetSeekPdir() const { return fKeyNode ? 1024 : 0; }
   // virtual ULong_t   Hash() const { return 0; }
   virtual void Keep() {}
   // virtual void      ls(Option_t* ="") const;
   // virtual void      Print(Option_t* ="") const {}

   virtual Int_t Read(TObject *tobj);
   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; }

   // TKeyXML specific methods

   XMLNodePointer_t KeyNode() const { return fKeyNode; }
   Long64_t GetKeyId() const { return fKeyId; }
   Bool_t IsSubdir() const { return fSubdir; }
   void SetSubir() { fSubdir = kTRUE; }
   void UpdateObject(TObject *obj);
   void UpdateAttributes();

protected:
   virtual Int_t Read(const char *name) { return TKey::Read(name); }
   void StoreObject(const void *obj, const TClass *cl, Bool_t check_tobj = kFALSE);
   void StoreKeyAttributes();
   TXMLEngine *XMLEngine();

   void *XmlReadAny(void *obj, const TClass *expectedClass);

   XMLNodePointer_t fKeyNode; //! node with stored object
   Long64_t fKeyId;           //! unique identifier of key for search methods
   Bool_t fSubdir;            //! indicates that key contains subdirectory