Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
TDirectoryFile.h
Go to the documentation of this file.
1// @(#)root/io:$Id$
2// Author: Rene Brun 22/01/2007
3
4/*************************************************************************
5 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TDirectoryFile
13#define ROOT_TDirectoryFile
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TDirectoryFile //
19// //
20// Describe directory structure in a ROOT file. //
21// //
22//////////////////////////////////////////////////////////////////////////
23
24#include "Compression.h"
25#include "TDirectory.h"
26#include "TDatime.h"
27#include "TList.h"
28
29class TKey;
30class TFile;
31
32class TDirectoryFile : public TDirectory {
33
34protected:
35 Bool_t fModified{kFALSE}; ///< True if directory has been modified
36 Bool_t fWritable{kFALSE}; ///< True if directory is writable
37 TDatime fDatimeC; ///< Date and time when directory is created
38 TDatime fDatimeM; ///< Date and time of last modification
39 Int_t fNbytesKeys{0}; ///< Number of bytes for the keys
40 Int_t fNbytesName{0}; ///< Number of bytes in TNamed at creation time
41 Int_t fBufferSize{0}; ///< Default buffer size to create new TKeys
42 Long64_t fSeekDir{0}; ///< Location of directory on file
43 Long64_t fSeekParent{0}; ///< Location of parent directory on file
44 Long64_t fSeekKeys{0}; ///< Location of Keys record on file
45 TFile *fFile{nullptr}; ///< Pointer to current file in memory
46 TList *fKeys{nullptr}; ///< Pointer to keys list in memory
47
49 void InitDirectoryFile(TClass *cl = nullptr);
50 void BuildDirectoryFile(TFile* motherFile, TDirectory* motherDir);
51
52private:
53 TDirectoryFile(const TDirectoryFile &directory) = delete; //Directories cannot be copied
54 void operator=(const TDirectoryFile &) = delete; //Directories cannot be copied
55
56public:
57 // TDirectory status bits
58 enum EStatusBits { kCloseDirectory = BIT(7) }; // Unused in ROOT, never set. Maybe only in external code.
59
61 TDirectoryFile(const char *name, const char *title, Option_t *option="", TDirectory* motherDir = nullptr);
62 ~TDirectoryFile() override;
63
64 void Append(TObject *obj, Bool_t replace = kFALSE) override;
65 void Add(TObject *obj, Bool_t replace = kFALSE) override { Append(obj,replace); }
66 Int_t AppendKey(TKey *key) override;
67 void Browse(TBrowser *b) override;
68 void Build(TFile* motherFile = nullptr, TDirectory* motherDir = nullptr) override { BuildDirectoryFile(motherFile, motherDir); }
69 TObject *CloneObject(const TObject *obj, Bool_t autoadd = kTRUE) override;
70 void Close(Option_t *option="") override;
71 void Copy(TObject &) const override { MayNotUse("Copy(TObject &)"); }
72 Bool_t cd() override;
73 Bool_t cd(const char *path) override;
74 void Delete(const char *namecycle="") override;
75 void FillBuffer(char *&buffer) override;
76 TKey *FindKey(const char *keyname) const override;
77 TKey *FindKeyAny(const char *keyname) const override;
78 TObject *FindObjectAny(const char *name) const override;
79 TObject *FindObjectAnyFile(const char *name) const override;
80 TObject *Get(const char *namecycle) override;
81 /// See documentation of TDirectoryFile::Get(const char *namecycle)
82 template <class T> inline T* Get(const char* namecycle)
83 {
84 return TDirectory::Get<T>(namecycle);
85 }
86 TDirectory *GetDirectory(const char *apath, Bool_t printError = false, const char *funcname = "GetDirectory") override;
87 void *GetObjectChecked(const char *namecycle, const char* classname) override;
88 void *GetObjectChecked(const char *namecycle, const TClass* cl) override;
89 void *GetObjectUnchecked(const char *namecycle) override;
90 Int_t GetBufferSize() const override;
91 const TDatime &GetCreationDate() const { return fDatimeC; }
92 TFile *GetFile() const override { return fFile; }
93 TKey *GetKey(const char *name, Short_t cycle=9999) const override;
94 TList *GetListOfKeys() const override { return fKeys; }
95 const TDatime &GetModificationDate() const { return fDatimeM; }
96 Int_t GetNbytesKeys() const override { return fNbytesKeys; }
97 Int_t GetNkeys() const override { return fKeys->GetSize(); }
98 Long64_t GetSeekDir() const override { return fSeekDir; }
99 Long64_t GetSeekParent() const override { return fSeekParent; }
100 Long64_t GetSeekKeys() const override { return fSeekKeys; }
101 Bool_t IsModified() const override { return fModified; }
102 Bool_t IsWritable() const override { return fWritable; }
103 void ls(Option_t *option="") const override;
104 TDirectory *mkdir(const char *name, const char *title="", Bool_t returnExistingDirectory = kFALSE) override;
105 TFile *OpenFile(const char *name, Option_t *option= "",
106 const char *ftitle = "", Int_t compress = ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault,
107 Int_t netopt = 0) override;
108 void Purge(Short_t nkeep=1) override;
109 void ReadAll(Option_t *option="") override;
110 Int_t ReadKeys(Bool_t forceRead=kTRUE) override;
111 Int_t ReadTObject(TObject *obj, const char *keyname) override;
113 void rmdir(const char *name) override;
114 void Save() override;
115 void SaveSelf(Bool_t force = kFALSE) override;
116 Int_t SaveObjectAs(const TObject *obj, const char *filename="", Option_t *option="") const override;
117 void SetBufferSize(Int_t bufsize) override;
118 void SetModified() override {fModified = kTRUE;}
119 void SetSeekDir(Long64_t v) override { fSeekDir = v; }
120 void SetTRefAction(TObject *ref, TObject *parent) override;
121 void SetWritable(Bool_t writable=kTRUE) override;
122 Int_t Sizeof() const override;
123 Int_t Write(const char *name=nullptr, Int_t opt=0, Int_t bufsize=0) override;
124 Int_t Write(const char *name=nullptr, Int_t opt=0, Int_t bufsize=0) const override;
125 Int_t WriteTObject(const TObject *obj, const char *name=nullptr, Option_t *option="", Int_t bufsize=0) override;
126 Int_t WriteObjectAny(const void *obj, const char *classname, const char *name, Option_t *option="", Int_t bufsize=0) override;
127 Int_t WriteObjectAny(const void *obj, const TClass *cl, const char *name, Option_t *option="", Int_t bufsize=0) override;
128 void WriteDirHeader() override;
129 void WriteKeys() override;
130
131 ClassDefOverride(TDirectoryFile,5) //Describe directory structure in a ROOT file
132};
133
134#endif
#define b(i)
Definition RSha256.hxx:100
int Int_t
Signed integer 4 bytes (int).
Definition RtypesCore.h:59
bool Bool_t
Boolean (0=false, 1=true) (bool).
Definition RtypesCore.h:77
short Short_t
Signed Short integer 2 bytes (short).
Definition RtypesCore.h:53
constexpr Bool_t kFALSE
Definition RtypesCore.h:108
long long Long64_t
Portable signed long integer 8 bytes.
Definition RtypesCore.h:83
constexpr Bool_t kTRUE
Definition RtypesCore.h:107
const char Option_t
Option string (const char).
Definition RtypesCore.h:80
#define BIT(n)
Definition Rtypes.h:91
#define ClassDefOverride(name, id)
Definition Rtypes.h:348
char name[80]
Definition TGX11.cxx:148
Using a TBrowser one can browse all ROOT objects.
Definition TBrowser.h:37
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:84
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
Definition TDatime.h:37
void SetModified() override
void SetBufferSize(Int_t bufsize) override
void SetTRefAction(TObject *ref, TObject *parent) override
void Close(Option_t *option="") override
Delete all objects from memory and directory structure itself.
Long64_t GetSeekDir() const override
Bool_t cd() override
Change current directory to "this" directory.
TFile * fFile
Pointer to current file in memory.
void Browse(TBrowser *b) override
Browse the content of the directory.
void Append(TObject *obj, Bool_t replace=kFALSE) override
Append object to this directory.
void SaveSelf(Bool_t force=kFALSE) override
Bool_t IsWritable() const override
Int_t GetNbytesKeys() const override
void Delete(const char *namecycle="") override
Delete Objects or/and keys in a directory.
Long64_t GetSeekKeys() const override
virtual void ResetAfterMerge(TFileMergeInfo *)
T * Get(const char *namecycle)
See documentation of TDirectoryFile::Get(const char *namecycle).
Int_t AppendKey(TKey *key) override
TDirectoryFile(const TDirectoryFile &directory)=delete
Int_t ReadKeys(Bool_t forceRead=kTRUE) override
TDatime fDatimeM
Date and time of last modification.
void * GetObjectUnchecked(const char *namecycle) override
Return pointer to object identified by namecycle.
TKey * FindKey(const char *keyname) const override
TKey * GetKey(const char *name, Short_t cycle=9999) const override
void * GetObjectChecked(const char *namecycle, const char *classname) override
See documentation of TDirectory::GetObjectCheck(const char *namecycle, const TClass *cl).
void Add(TObject *obj, Bool_t replace=kFALSE) override
Append object to this directory.
void InitDirectoryFile(TClass *cl=nullptr)
void Purge(Short_t nkeep=1) override
void Save() override
~TDirectoryFile() override
TDirectoryFile(const char *name, const char *title, Option_t *option="", TDirectory *motherDir=nullptr)
const TDatime & GetCreationDate() const
TObject * FindObjectAnyFile(const char *name) const override
Int_t fNbytesKeys
Number of bytes for the keys.
Int_t GetNkeys() const override
Bool_t IsModified() const override
Long64_t GetSeekParent() const override
void Copy(TObject &) const override
Copy this to obj.
Bool_t fModified
True if directory has been modified.
TDirectory * mkdir(const char *name, const char *title="", Bool_t returnExistingDirectory=kFALSE) override
Create a sub-directory "a" or a hierarchy of sub-directories "a/b/c/...".
TList * GetListOfKeys() const override
void CleanTargets()
TObject * FindObjectAny(const char *name) const override
Find object by name in the list of memory objects of the current directory or its sub-directories.
Long64_t fSeekKeys
Location of Keys record on file.
const TDatime & GetModificationDate() const
void WriteKeys() override
TFile * GetFile() const override
Int_t fBufferSize
Default buffer size to create new TKeys.
Int_t Sizeof() const override
Return size of the TNamed part of the TObject.
TObject * CloneObject(const TObject *obj, Bool_t autoadd=kTRUE) override
Clone an object.
TDirectory * GetDirectory(const char *apath, Bool_t printError=false, const char *funcname="GetDirectory") override
Find a directory using apath.
Long64_t fSeekParent
Location of parent directory on file.
Int_t WriteObjectAny(const void *obj, const char *classname, const char *name, Option_t *option="", Int_t bufsize=0) override
void BuildDirectoryFile(TFile *motherFile, TDirectory *motherDir)
void rmdir(const char *name) override
Removes subdirectory from the directory When directory is deleted, all keys in all subdirectories wil...
Int_t Write(const char *name=nullptr, Int_t opt=0, Int_t bufsize=0) override
Write this object to the current directory.
Long64_t fSeekDir
Location of directory on file.
void * GetObjectChecked(const char *namecycle, const TClass *cl) override
Return pointer to object identified by namecycle if and only if the actual object is a type suitable ...
Int_t fNbytesName
Number of bytes in TNamed at creation time.
Int_t Write(const char *name=nullptr, Int_t opt=0, Int_t bufsize=0) const override
Write this object to the current directory.
TDatime fDatimeC
Date and time when directory is created.
Bool_t fWritable
True if directory is writable.
Int_t WriteTObject(const TObject *obj, const char *name=nullptr, Option_t *option="", Int_t bufsize=0) override
Bool_t cd(const char *path) override
Change current directory to "this" directory or to the directory described by the path if given one.
void SetSeekDir(Long64_t v) override
Int_t ReadTObject(TObject *obj, const char *keyname) override
TFile * OpenFile(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0) override
Int_t GetBufferSize() const override
Int_t SaveObjectAs(const TObject *obj, const char *filename="", Option_t *option="") const override
Save object in filename, if filename is nullptr or "", a file with "<objectname>.root" is created.
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
void operator=(const TDirectoryFile &)=delete
TKey * FindKeyAny(const char *keyname) const override
void FillBuffer(char *&buffer) override
Encode TNamed into output buffer.
void WriteDirHeader() override
void SetWritable(Bool_t writable=kTRUE) override
void Build(TFile *motherFile=nullptr, TDirectory *motherDir=nullptr) override
void ReadAll(Option_t *option="") override
TList * fKeys
Pointer to keys list in memory.
void ls(Option_t *option="") const override
List Directory contents.
Int_t WriteObjectAny(const void *obj, const TClass *cl, const char *name, Option_t *option="", Int_t bufsize=0) override
TDirectory(const TDirectory &directory)=delete
virtual TObject * Get(const char *namecycle)
Return pointer to object identified by namecycle.
A class to pass information from the TFileMerger to the objects being merged.
A file, usually with extension .root, that stores data and code in the form of serialized objects in ...
Definition TFile.h:130
Book space in a file, create I/O buffers, to fill them, (un)compress them.
Definition TKey.h:28
A doubly linked list.
Definition TList.h:38
void MayNotUse(const char *method) const
Use this method to signal that a method (defined in a base class) may not be called in a derived clas...
Definition TObject.cxx:1160
TObject()
TObject constructor.
Definition TObject.h:259
@ kUseCompiledDefault
Use the compile-time default setting.
Definition Compression.h:53