#ifndef ROOT_TFile #define ROOT_TFile //+SEQ,CopyRight,T=NOINCLUDE. ////////////////////////////////////////////////////////////////////////// // // // TFile // // // // ROOT file. // // // ////////////////////////////////////////////////////////////////////////// #ifndef ROOT_TDirectory //*KEEP,TDirectory. #include "TDirectory.h" //*KEND. #endif class TFree; class TFile : public TDirectory { protected: Int_t fD; //File descriptor Seek_t fBEGIN; //First used byte in file Seek_t fEND; //Last used byte in file Int_t fVersion; //File format version Int_t fCompress; //(=1 file is compressed, 0 otherwise) TString fOption; //File options Char_t fUnits; //Number of bytes for file pointers Seek_t fSeekFree; //Location on disk of free segments structure Int_t fNbytesFree; //Number of bytes for free segments structure Int_t fWritten; //Number of objects written so far Double_t fSumBuffer; //Sum of buffer sizes of objects written so far Double_t fSum2Buffer; //Sum of squares of buffer sizes of objects written so far TList *fFree; //Free segments linked list table UInt_t fBytesWrite; //Number of bytes written to this file UInt_t fBytesRead; //Number of bytes read from this file static UInt_t fgBytesWrite; //Number of bytes written by all TFile objects static UInt_t fgBytesRead; //Number of bytes read by all TFile objects static const Int_t kBegin; static const Char_t kUnits; void Init(Bool_t create); public: enum ERelativeTo { kBeg = 0, kCur = 1, kEnd = 2 }; TFile(); TFile(const Text_t *fname, Option_t *option="", const Text_t *ftitle="", Int_t compress=1); TFile(const TFile &file); virtual ~TFile(); virtual void Close(Option_t *option=""); // *MENU* virtual void Copy(TObject &file); virtual void Delete(const Text_t *namecycle=""); virtual void Draw(Option_t *option=""); virtual void FillBuffer(char *&buffer); virtual void Flush() const; Int_t GetBestBuffer(); Int_t GetCompressionLevel() {return fCompress;} Float_t GetCompressionFactor(); virtual Seek_t GetEND() {return fEND;} Int_t GetFd() const { return fD; } TList *GetListOfFree() {return fFree;} virtual Int_t GetNfree() {return fFree->GetSize();} Option_t *GetOption() const { return fOption.Data();} UInt_t GetBytesRead() const { return fBytesRead; } UInt_t GetBytesWritten() const { return fBytesWrite; } Int_t GetVersion() const { return fVersion; } virtual Bool_t IsOpen() const; virtual void ls(Option_t *option=""); virtual void MakeFree(Seek_t first, Seek_t last); virtual void Map(); // *MENU* virtual void Paint(Option_t *option=""); virtual void Print(Option_t *option=""); virtual Bool_t ReadBuffer(char *buf, int len); virtual void ReadFree(); virtual void Recover(); virtual void Seek(Seek_t offset, ERelativeTo pos = kBeg); virtual void SetCompressionLevel(Int_t level=1); virtual void SetEND(Seek_t last) {fEND = last;} virtual void SetOption(Option_t *option=">") {fOption = option;} virtual Int_t Sizeof() const; void SumBuffer(Int_t bufsize); virtual Bool_t WriteBuffer(const char *buf, int len); virtual void Write(const Text_t *name=0, Int_t opt=0, Int_t bufsiz=0); virtual void WriteFree(); virtual void WriteHeader(); static TFile *Open(const Text_t *name, Option_t *option="", const Text_t *ftitle="", Int_t compress=1); static UInt_t GetFileBytesRead(); static UInt_t GetFileBytesWritten(); static void SetFileBytesRead(UInt_t bytes=0); static void SetFileBytesWritten(UInt_t bytes=0); ClassDef(TFile,1) //ROOT file }; R__EXTERN TFile *gFile; #endif