00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TDirectoryFile
00013 #define ROOT_TDirectoryFile
00014
00015
00016
00017
00018
00019
00020
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;
00037 Bool_t fWritable;
00038 TDatime fDatimeC;
00039 TDatime fDatimeM;
00040 Int_t fNbytesKeys;
00041 Int_t fNbytesName;
00042 Int_t fBufferSize;
00043 Long64_t fSeekDir;
00044 Long64_t fSeekParent;
00045 Long64_t fSeekKeys;
00046 TFile *fFile;
00047 TList *fKeys;
00048
00049 virtual void CleanTargets();
00050
00051 private:
00052 TDirectoryFile(const TDirectoryFile &directory);
00053 void operator=(const TDirectoryFile &);
00054
00055 public:
00056
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)
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)
00127 };
00128
00129 #endif