#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 Double_t fBytesWrite; //Number of bytes written to this file Double_t fBytesRead; //Number of bytes read from this file static Double_t fgBytesWrite; //Number of bytes written by all TFile objects static Double_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); // Interface to basic system I/O routines virtual Int_t SysOpen(const char *pathname, Int_t flags, UInt_t mode); virtual Int_t SysClose(Int_t fd); virtual Int_t SysRead(Int_t fd, void *buf, Int_t len); virtual Int_t SysWrite(Int_t fd, const void *buf, Int_t len); virtual Seek_t SysSeek(Int_t fd, Seek_t offset, Int_t whence); virtual Int_t SysSync(Int_t fd); private: TFile(const TFile &); //Files cannot be copied void operator=(const TFile &); 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); virtual ~TFile(); virtual void Close(Option_t *option=""); // *MENU* virtual void Copy(TObject &) { MayNotUse("Copy(TObject &)"); } virtual void Delete(const Text_t *namecycle=""); virtual void Draw(Option_t *option=""); virtual void FillBuffer(char *&buffer); virtual void Flush(); 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();} Double_t GetBytesRead() const { return fBytesRead; } Double_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 Double_t GetFileBytesRead(); static Double_t GetFileBytesWritten(); static void SetFileBytesRead(Double_t bytes=0); static void SetFileBytesWritten(Double_t bytes=0); ClassDef(TFile,1) //ROOT file }; R__EXTERN TFile *gFile; #endif