TDirectoryFile.h

Go to the documentation of this file.
00001 // @(#)root/io:$Id: TDirectoryFile.h 34564 2010-07-23 02:50:45Z pcanal $
00002 // Author: Rene Brun   22/01/2007
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #ifndef ROOT_TDirectoryFile
00013 #define ROOT_TDirectoryFile
00014 
00015 
00016 //////////////////////////////////////////////////////////////////////////
00017 //                                                                      //
00018 // TDirectoryFile                                                       //
00019 //                                                                      //
00020 // Describe directory structure in a ROOT file.                         //
00021 //                                                                      //
00022 //////////////////////////////////////////////////////////////////////////
00023 
00024 #ifndef ROOT_TDirectory
00025 #include "TDirectory.h"
00026 #endif
00027 
00028 class TList;
00029 class TBrowser;
00030 class TKey;
00031 class TFile;
00032 
00033 class TDirectoryFile : public TDirectory {
00034 
00035 protected:
00036    Bool_t      fModified;        //true if directory has been modified
00037    Bool_t      fWritable;        //true if directory is writable
00038    TDatime     fDatimeC;         //Date and time when directory is created
00039    TDatime     fDatimeM;         //Date and time of last modification
00040    Int_t       fNbytesKeys;      //Number of bytes for the keys
00041    Int_t       fNbytesName;      //Number of bytes in TNamed at creation time
00042    Int_t       fBufferSize;      //Default buffer size to create new TKeys
00043    Long64_t    fSeekDir;         //Location of directory on file
00044    Long64_t    fSeekParent;      //Location of parent directory on file
00045    Long64_t    fSeekKeys;        //Location of Keys record on file
00046    TFile      *fFile;            //pointer to current file in memory
00047    TList      *fKeys;            //Pointer to keys list in memory
00048 
00049    virtual void         CleanTargets();
00050 
00051 private:
00052    TDirectoryFile(const TDirectoryFile &directory);  //Directories cannot be copied
00053    void operator=(const TDirectoryFile &); //Directories cannot be copied
00054 
00055 public:
00056    // TDirectory status bits
00057    enum { kCloseDirectory = BIT(7) };
00058 
00059    TDirectoryFile();
00060    TDirectoryFile(const char *name, const char *title, Option_t *option="", TDirectory* motherDir = 0);
00061    virtual ~TDirectoryFile();
00062    virtual void        Append(TObject *obj, Bool_t replace = kFALSE);
00063            void        Add(TObject *obj, Bool_t replace = kFALSE) { Append(obj,replace); }
00064            Int_t       AppendKey(TKey *key);
00065    virtual void        Browse(TBrowser *b);
00066            void        Build(TFile* motherFile = 0, TDirectory* motherDir = 0);
00067    virtual TObject    *CloneObject(const TObject *obj, Bool_t autoadd = kTRUE);
00068    virtual void        Close(Option_t *option="");
00069    virtual void        Copy(TObject &) const { MayNotUse("Copy(TObject &)"); }
00070    virtual Bool_t      cd(const char *path = 0);
00071    virtual void        Delete(const char *namecycle="");
00072    virtual void        FillBuffer(char *&buffer);
00073    virtual TKey       *FindKey(const char *keyname) const;
00074    virtual TKey       *FindKeyAny(const char *keyname) const;
00075    virtual TObject    *FindObjectAny(const char *name) const;
00076    virtual TObject    *FindObjectAnyFile(const char *name) const;
00077    virtual TObject    *Get(const char *namecycle);
00078    virtual TDirectory *GetDirectory(const char *apath, Bool_t printError = false, const char *funcname = "GetDirectory");
00079    template <class T> inline void GetObject(const char* namecycle, T*& ptr) // See TDirectory::Get for information
00080       {
00081          ptr = (T*)GetObjectChecked(namecycle,TBuffer::GetClass(typeid(T)));
00082       }
00083    virtual void       *GetObjectChecked(const char *namecycle, const char* classname);
00084    virtual void       *GetObjectChecked(const char *namecycle, const TClass* cl);
00085    virtual void       *GetObjectUnchecked(const char *namecycle);
00086    virtual Int_t       GetBufferSize() const;
00087    const TDatime      &GetCreationDate() const { return fDatimeC; }
00088    virtual TFile      *GetFile() const { return fFile; }
00089    virtual TKey       *GetKey(const char *name, Short_t cycle=9999) const;
00090    virtual TList      *GetListOfKeys() const { return fKeys; }
00091    const TDatime      &GetModificationDate() const { return fDatimeM; }
00092    virtual Int_t       GetNbytesKeys() const { return fNbytesKeys; }
00093    virtual Int_t       GetNkeys() const { return fKeys->GetSize(); }
00094    virtual Long64_t    GetSeekDir() const { return fSeekDir; }
00095    virtual Long64_t    GetSeekParent() const { return fSeekParent; }
00096    virtual Long64_t    GetSeekKeys() const { return fSeekKeys; }
00097    Bool_t              IsModified() const { return fModified; }
00098    Bool_t              IsWritable() const { return fWritable; }
00099    virtual void        ls(Option_t *option="") const;
00100    virtual TDirectory *mkdir(const char *name, const char *title="");
00101    virtual TFile      *OpenFile(const char *name, Option_t *option= "",
00102                             const char *ftitle = "", Int_t compress = 1,
00103                             Int_t netopt = 0);
00104    virtual void        Purge(Short_t nkeep=1);
00105    virtual void        ReadAll(Option_t *option="");
00106    virtual Int_t       ReadKeys(Bool_t forceRead=kTRUE);
00107    virtual Int_t       ReadTObject(TObject *obj, const char *keyname);
00108    virtual void        rmdir(const char *name);
00109    virtual void        Save();
00110    virtual void        SaveSelf(Bool_t force = kFALSE);
00111    virtual Int_t       SaveObjectAs(const TObject *obj, const char *filename="", Option_t *option="") const;
00112    virtual void        SetBufferSize(Int_t bufsize);
00113    void                SetModified() {fModified = kTRUE;}
00114    void                SetSeekDir(Long64_t v) { fSeekDir = v; }
00115    virtual void        SetTRefAction(TObject *ref, TObject *parent);
00116    void                SetWritable(Bool_t writable=kTRUE);
00117    virtual Int_t       Sizeof() const;
00118    virtual Int_t       Write(const char *name=0, Int_t opt=0, Int_t bufsize=0);
00119    virtual Int_t       Write(const char *name=0, Int_t opt=0, Int_t bufsize=0) const ;
00120    virtual Int_t       WriteTObject(const TObject *obj, const char *name=0, Option_t *option="", Int_t bufsize=0);
00121    virtual Int_t       WriteObjectAny(const void *obj, const char *classname, const char *name, Option_t *option="", Int_t bufsize=0);
00122    virtual Int_t       WriteObjectAny(const void *obj, const TClass *cl, const char *name, Option_t *option="", Int_t bufsize=0);
00123    virtual void        WriteDirHeader();
00124    virtual void        WriteKeys();
00125 
00126    ClassDef(TDirectoryFile,5)  //Describe directory structure in a ROOT file
00127 };
00128 
00129 #endif

Generated on Tue Jul 5 14:26:46 2011 for ROOT_528-00b_version by  doxygen 1.5.1