94   if (!initMotherDir) initMotherDir = 
gDirectory;
 
   96   if (strchr(
name,
'/')) {
 
   97      ::Error(
"TDirectoryFile",
"directory name (%s) cannot contain a slash", 
name);
 
  102      ::Error(
"TDirectoryFile",
"directory name cannot be \"\"");
 
  112   if (!motherdir || !
f) 
return;
 
  113   if (!
f->IsWritable()) 
return; 
 
  114   if (motherdir->GetKey(
name)) {
 
  115      Error(
"TDirectoryFile",
"An object with name %s exists already", 
name);
 
  122         Error(
"TDirectoryFile",
"Invalid class name: %s",classname);
 
  200      Info(
"~TDirectoryFile", 
"dtor called for %s", 
GetName());
 
  212   if (!obj || !
fList) 
return;
 
  229      Error(
"AppendKey",
"TDirectoryFile not initialized yet.");
 
  268      TKey *key = 
nullptr, *keyo = 
nullptr;
 
  274      while ((obj = nextin())) {
 
  280      while ((key = (
TKey *) next())) {
 
  282         if (!keyo || (keyo && strcmp(keyo->GetName(), key->
GetName()))) {
 
  312   if (motherDir && strlen(
GetName()) != 0) motherDir->
Append(
this);
 
  390   char *pobj = (
char*)obj->
IsA()->
New();
 
  391   if (!pobj) 
return nullptr;
 
  394   if (baseOffset==-1) {
 
  398      Fatal(
"CloneObject",
"Incorrect detection of the inheritance from TObject for class %s.\n",
 
  410      const Int_t bufsize = 10000;
 
  417         ((
TObject*)obj)->Streamer(buffer);
 
  450   while ((
f = (
TFile*)next())) {
 
  473                                         Bool_t printError, 
const char *funcname)
 
  476   if (apath) nch = strlen(apath);
 
  481   if (funcname==0 || strlen(funcname)==0) funcname = 
"GetDirectory";
 
  485   char *path = 
new char[nch+1]; path[0] = 0;
 
  486   if (nch) strlcpy(path,apath,nch+1);
 
  487   char *s = (
char*)strchr(path, 
':');
 
  496         if (
f && 0 == url->Compare(
f->GetFile()->GetEndpointUrl())) {
 
  506         if (s && *(s+1)) 
result = 
f->GetDirectory(s+1,printError,funcname);
 
  507         delete [] path; 
return result;
 
  509         if (printError) 
Error(funcname, 
"No such file %s", path);
 
  510         delete [] path; 
return nullptr;
 
  515   if (path[0] == 
'/') {
 
  519      delete [] path; 
return result;
 
  523   char *
slash = (
char*)strchr(path,
'/');
 
  525      if (!strcmp(path, 
"..")) {
 
  527         delete [] path; 
return result;
 
  531         if (printError) 
Error(funcname,
"Unknown directory %s", path);
 
  532         delete [] path; 
return nullptr;
 
  535      delete [] path; 
return obj;
 
  539   slash = (
char*)strchr(subdir.
Data(),
'/');
 
  542   if (!strcmp(subdir, 
"..")) {
 
  546      delete [] path; 
return result;
 
  550      if (printError) 
Error(funcname,
"Unknown directory %s", subdir.
Data());
 
  551      delete [] path; 
return nullptr;
 
  555   delete [] path; 
return result;
 
  635     Info(
"Delete",
"Call for this = %s namecycle = %s",
 
  636               GetName(), (namecycle ? namecycle : 
"null"));
 
  641   const char *nmcy = (namecycle) ? namecycle : 
"";
 
  645   Int_t deletetree   = 0;
 
  646   if(strcmp(
name,
"*") == 0)   deleteall = 1;
 
  647   if(strcmp(
name,
"*T") == 0){ deleteall = 1; deletetree = 1;}
 
  648   if(strcmp(
name,
"T*") == 0){ deleteall = 1; deletetree = 1;}
 
  649   if(namecycle==0 || !namecycle[0]){ deleteall = 1; deletetree = 1;}
 
  656   if (cycle >= 9999 ) {
 
  659      while ((idcur = (
TNamed *) next())) {
 
  666               if (!deletetree && deleteall) deleteOK = 0;
 
  675               idcur->
Delete(deletetree ? 
"T*;*" : 
"*");
 
  688   if (cycle != 9999 ) {
 
  692         while ((key = (
TKey *) nextkey())) {
 
  696               if (cycle == key->
GetCycle()) deleteOK = 1;
 
  697               if (cycle > 9999) deleteOK = 1;
 
  701                  if (!deletetree && deleteall) deleteOK = 0;
 
  702                  if (cycle == key->
GetCycle()) deleteOK = 2;
 
  749   tobuf(buffer, version);
 
  760   if (version > 1000) {
 
  806      Error(
"FindKeyAny", 
"Unexpected type of TDirectoryFile::fKeys!");
 
  810   if (
const TList *keyList = listOfKeys->GetListForObject(
name)) {
 
  812         if (key && !strcmp(key->GetName(), 
name)
 
  813             && (cycle == 9999 || cycle >= key->GetCycle())) {
 
  823   while ((key = (
TKey *) next())) {
 
  832   if (dirsav) dirsav->
cd();
 
  858      Error(
"FindObjectAny", 
"Unexpected type of TDirectoryFile::fKeys!");
 
  862   if (
const TList *keyList = listOfKeys->GetListForObject(
name)) {
 
  864         if (key && !strcmp(key->GetName(), 
name)
 
  865             && (cycle == 9999 || cycle >= key->GetCycle())) {
 
  866            return key->ReadObj();
 
  874   while ((key = (
TKey *) next())) {
 
  880         if (k) { 
if (dirsav) dirsav->
cd(); 
return k->
ReadObj();}
 
  883   if (dirsav) dirsav->
cd();
 
  945   for (
Int_t i = nch-1; i > 0; i--) {
 
  946      if (
name[i] == 
'/') {
 
  949         const char *subnamecycle = namecycle + i + 1;
 
  951         return dirToSearch?dirToSearch->
Get(subnamecycle):0;
 
  954   const char *namobj = 
name;
 
  960      if (idcur==
this && strlen(namobj)!=0) {
 
  965      } 
else if (cycle == 9999) {
 
  979      Error(
"Get", 
"Unexpected type of TDirectoryFile::fKeys!");
 
  983   if (
const TList *keyList = listOfKeys->GetListForObject(namobj)) {
 
  985         if (key && !strcmp(key->GetName(), namobj)
 
  986             && (cycle == 9999 || cycle == key->GetCycle())) {
 
  988            return key->ReadObj();
 
 1050   if (!namecycle || 
'\0' == namecycle[0]) {
 
 1051      Error(
"GetObjectChecked", 
"The provided key name is invalid.");
 
 1060   for (
Int_t i = nch-1; i > 0; i--) {
 
 1061      if (
name[i] == 
'/') {
 
 1064         const char *subnamecycle = namecycle + i + 1;
 
 1073   const char *namobj = 
name;
 
 1077   if (expectedClass==0 || expectedClass->
IsTObject()) {
 
 1080         if (objcur==
this && strlen(namobj)!=0) {
 
 1085         } 
else if (cycle == 9999) {
 
 1102      Error(
"GetObjectChecked", 
"Unexpected type of TDirectoryFile::fKeys!");
 
 1106   if (
const TList *keyList = listOfKeys->GetListForObject(namobj)) {
 
 1108         if (key && !strcmp(key->GetName(), namobj)
 
 1109             && (cycle == 9999 || cycle == key->GetCycle())) {
 
 1111            return key->ReadObjectAny(expectedClass);
 
 1139   if (!
fKeys) 
return nullptr;
 
 1143      Error(
"GetKey", 
"Unexpected type of TDirectoryFile::fKeys!");
 
 1147   if (
const TList *keyList = listOfKeys->GetListForObject(
name)) {
 
 1149         if (key && !strcmp(key->GetName(), 
name)
 
 1150             && (cycle == 9999 || cycle >= key->GetCycle())) {
 
 1191   } 
else if (!opt.
IsNull())
 
 1199      while ((obj = (
TObject *) nextobj())) {
 
 1206   if (diskobj && 
fKeys) {
 
 1209         TKey *key = (
TKey*)lnk->GetObject();
 
 1212         bool first = (lnk->Prev() == 
nullptr) || (s != lnk->Prev()->GetObject()->GetName());
 
 1213         bool hasbackup = (lnk->Next() != 
nullptr) && (s == lnk->Next()->GetObject()->GetName());
 
 1247   if (!
name || !title || !
name[0]) 
return nullptr;
 
 1248   if (!title[0]) title = 
name;
 
 1250      if (returnExistingDirectory)
 
 1253        Error(
"mkdir",
"An object with name %s exists already",
name);
 
 1258   if (
const char *
slash = strchr(
name,
'/')) {
 
 1264         if (!tmpdir) 
return nullptr;
 
 1266      if (!newdir) newdir = tmpdir;
 
 1295   while ((key = (
TKey*)prev())) {      
 
 1297      if (!keyprev) 
break;
 
 1329   Bool_t readdirs = ((opt!=0) && ((strcmp(opt,
"dirs")==0) || (strcmp(opt,
"dirs*")==0)));
 
 1332      while ((key = (
TKey *) next())) {
 
 1335         if (strstr(key->
GetClassName(),
"TDirectory")==0) 
continue;
 
 1339         if ((dir!=0) && (strcmp(opt,
"dirs*")==0)) dir->
ReadAll(
"dirs*");
 
 1342      while ((key = (
TKey *) next())) {
 
 1344         if (thing) { 
delete thing; }
 
 1390      char *header = 
new char[nbytes];
 
 1405      if (versiondir > 1000) {
 
 1410         Int_t sdir,sparent,skeys;
 
 1428      for (
Int_t i = 0; i < nkeys; i++) {
 
 1429         key = 
new TKey(
this);
 
 1432            Error(
"ReadKeys",
"reading illegal key, exiting after %d keys",i);
 
 1438            Error(
"ReadKeys",
"reading illegal key, exiting after %d keys",i);
 
 1463   if (!
fFile) { 
Error(
"ReadTObject",
"No file open"); 
return 0; }
 
 1466      Error(
"ReadTObject", 
"Unexpected type of TDirectoryFile::fKeys!");
 
 1470   if (
const TList *keyList = listOfKeys->GetListForObject(keyname)) {
 
 1472         if (key && !strcmp(key->GetName(), keyname) ) {
 
 1473            return key->Read(obj);
 
 1478   Error(
"ReadTObject",
"Key not found");
 
 1521   while ((idcur = next())) {
 
 1558         TObject *idcur = lnk->GetObject();
 
 1563         lnk = lnk->NextSP();
 
 1596   if (fname.
Index(
".json") > 0) {
 
 1601      if (!local) 
return 0;
 
 1602      nbytes = obj->
Write();
 
 1606      obj->
Info(
"SaveAs", 
"ROOT file %s has been created", fname.
Data());
 
 1633         if (dirsav != 
this) 
cd();
 
 1636         if (dirsav && dirsav != 
this) dirsav->
cd();
 
 1672      if (execid > 0) ref->
SetBit(execid << 8);
 
 1690      while ((idcur = next())) {
 
 1722   if (
b.IsReading()) {
 
 1731         b.ClassBegin(dirclass, R__v);
 
 1735         b.ClassMember(
"CreateTime",
"TString");
 
 1740         b.ClassMember(
"ModifyTime",
"TString");
 
 1745         b.ClassMember(
"UUID",
"TString");
 
 1750         b.ClassEnd(dirclass);
 
 1759         if (version > 1000) {
 
 1765            Int_t sdir,sparent,skeys;
 
 1789         b.ClassMember(
"CreateTime",
"TString");
 
 1793         b.ClassMember(
"ModifyTime",
"TString");
 
 1798         b.ClassMember(
"UUID",
"TString");
 
 1811         if (version > 1000) {
 
 1821         if (version <=1000) 
for (
Int_t i=0;i<3;i++) 
b << 
Int_t(0);
 
 1843   while ((obj=next())) {
 
 1844      nbytes += obj->
Write(0,opt,bufsize);
 
 1857   Error(
"Write const",
"A const TDirectory object should not be saved. We try to proceed anyway.");
 
 1910      const char *objname = 
"no name specified";
 
 1912      else if (obj) objname = obj->
GetName();
 
 1913      Error(
"WriteTObject",
"The current directory (%s) is not associated with a file. The object (%s) has not been written.",
GetName(),objname);
 
 1930   TKey *key=0, *oldkey=0;
 
 1932   if (bufsize > 0) bsize = bufsize;
 
 1941   Int_t nch = strlen(oname);
 
 1942   char *newName = 
nullptr;
 
 1943   if (nch && oname[nch-1] == 
' ') {
 
 1944      newName = 
new char[nch+1];
 
 1945      strlcpy(newName,oname,nch+1);
 
 1946      for (
Int_t i=0;i<nch;i++) {
 
 1947         if (newName[nch-i-1] != 
' ') 
break;
 
 1948         newName[nch-i-1] = 0;
 
 1966   if (newName) 
delete [] newName;
 
 2025         Error(
"WriteObjectAny",
"Unknown class: %s",classname);
 
 2049   if (!
fFile) 
return 0;
 
 2052      Error(
"WriteObject",
"Unknown type for %s, it can not be written.",
name);
 
 2066   const char *className = cl->
GetName();
 
 2074      Error(
"WriteObjectAny",
 
 2075            "The class requested (%s) for the key name \"%s\"" 
 2076            " is an instance of an stl collection and does not have a compiled CollectionProxy." 
 2077            " Please generate the dictionary for this collection (%s). No data will be written.",
 
 2078            className, oname, className);
 
 2082   TKey *key, *oldkey = 
nullptr;
 
 2084   if (bufsize > 0) bsize = bufsize;
 
 2090   Int_t nch = strlen(oname);
 
 2091   char *newName = 
nullptr;
 
 2092   if (nch && oname[nch-1] == 
' ') {
 
 2093      newName = 
new char[nch+1];
 
 2094      strlcpy(newName,oname,nch+1);
 
 2095      for (
Int_t i=0;i<nch;i++) {
 
 2096         if (newName[nch-i-1] != 
' ') 
break;
 
 2097         newName[nch-i-1] = 0;
 
 2115   if (newName) 
delete [] newName;
 
 2142   if (!
f->IsBinary()) {
 
 2144      f->DirWriteHeader(
this);
 
 2149   char *header = 
new char[nbytes];
 
 2150   char *buffer = header;
 
 2156   f->WriteBuffer(header, nbytes);
 
 2157   if (
f->MustFlush()) 
f->Flush();
 
 2171   if (!
f->IsBinary()) {
 
 2172      f->DirWriteKeys(
this);
 
 2184   Int_t nbytes = 
sizeof nkeys;          
 
 2186   while ((key = (
TKey*)next())) {
 
 2196   tobuf(buffer, nkeys);
 
 2197   while ((key = (
TKey*)next())) {
 
void frombuf(char *&buf, Bool_t *x)
 
void tobuf(char *&buf, Bool_t x)
 
const Bool_t kIterBackward
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t mask
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void reg
 
R__EXTERN TVirtualMutex * gROOTMutex
 
R__EXTERN TSystem * gSystem
 
#define R__LOCKGUARD(mutex)
 
Using a TBrowser one can browse all ROOT objects.
 
The concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket.
 
void MapObject(const TObject *obj, UInt_t offset=1) override
Add object to the fMap container.
 
void ResetMap() override
Delete existing fMap and reset map counter.
 
static Int_t ExportToFile(const char *filename, const TObject *obj, const char *option=nullptr)
Convert object into JSON and store in text file Returns size of the produce file Used in TObject::Sav...
 
Buffer base class used for serializing objects.
 
void SetBufferOffset(Int_t offset=0)
 
void SetReadMode()
Set buffer in read mode.
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
 
ROOT::DirAutoAdd_t GetDirectoryAutoAdd() const
Return the wrapper around the directory auto add function.
 
void BuildRealData(void *pointer=nullptr, Bool_t isTransient=kFALSE)
Build a full list of persistent data members.
 
Bool_t IsTObject() const
Return kTRUE is the class inherits from TObject.
 
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0, Bool_t isTransient=kFALSE) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
 
Int_t GetBaseClassOffset(const TClass *toBase, void *address=nullptr, bool isDerivedObject=true)
 
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
 
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
 
virtual bool UseRWLock(Bool_t enable=true)
Set this collection to use a RW lock upon access, making it thread safe.
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
 
void FillBuffer(char *&buffer)
Encode Date/Time into buffer, used by I/O system.
 
const char * AsSQLString() const
Return the date & time in SQL compatible string format, like: 1997-01-15 20:16:28.
 
virtual void Streamer(TBuffer &)
Stream a object of type TDatime.
 
void Set()
Set Date/Time to current time as reported by the system.
 
void ReadBuffer(char *&buffer)
Decode Date/Time from output buffer, used by I/O system.
 
A ROOT file is structured in Directories (like a file system).
 
void SetBufferSize(Int_t bufsize) override
Set the default buffer size when creating new TKeys.
 
void SetTRefAction(TObject *ref, TObject *parent) override
Find the action to be executed in the dictionary of the parent class and store the corresponding exec...
 
void Close(Option_t *option="") override
Delete all objects from memory and directory structure itself.
 
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
Save Directory keys and header.
 
Bool_t IsWritable() const override
 
void Streamer(TBuffer &) override
Stream a class object.
 
void Delete(const char *namecycle="") override
Delete Objects or/and keys in a directory.
 
virtual void ResetAfterMerge(TFileMergeInfo *)
Reset the TDirectory after its content has been merged into another Directory.
 
Int_t AppendKey(TKey *key) override
Insert key in the linked list of keys of this directory.
 
Int_t ReadKeys(Bool_t forceRead=kTRUE) override
Read the linked list of keys.
 
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
Find key with name keyname in the current directory.
 
TKey * GetKey(const char *name, Short_t cycle=9999) const override
Return pointer to key with name,cycle.
 
void * GetObjectChecked(const char *namecycle, const char *classname) override
See documentation of TDirectoryFile::GetObjectCheck(const char *namecycle, const TClass *cl)
 
void InitDirectoryFile(TClass *cl=nullptr)
Initialize the key associated with this directory (and the related data members.
 
void Purge(Short_t nkeep=1) override
Purge lowest key cycles in a directory.
 
void Save() override
Save recursively all directory keys and headers.
 
~TDirectoryFile() override
Destructor.
 
TObject * FindObjectAnyFile(const char *name) const override
Scan the memory lists of all files for an object with name.
 
Int_t fNbytesKeys
Number of bytes for the keys.
 
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()
Clean the pointers to this object (gDirectory, TContext, etc.)
 
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.
 
void WriteKeys() override
Write Keys linked list on the file.
 
TFile * GetFile() const override
 
Int_t fBufferSize
Default buffer size to create new TKeys.
 
Int_t Sizeof() const override
Return the size in bytes of the directory header.
 
TObject * CloneObject(const TObject *obj, Bool_t autoadd=kTRUE) override
Make a clone of an object using the Streamer facility.
 
TDirectory * GetDirectory(const char *apath, Bool_t printError=false, const char *funcname="GetDirectory") override
Find a directory named "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
Write object from pointer of class classname in this directory.
 
void BuildDirectoryFile(TFile *motherFile, TDirectory *motherDir)
Initialise directory to defaults.
 
void rmdir(const char *name) override
Removes subdirectory from the directory.
 
Int_t Write(const char *name=nullptr, Int_t opt=0, Int_t bufsize=0) override
Write all objects in memory to disk.
 
Long64_t fSeekDir
Location of directory on file.
 
Int_t fNbytesName
Number of bytes in TNamed at creation time.
 
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
Write object obj to this directory.
 
Int_t ReadTObject(TObject *obj, const char *keyname) override
Read object with keyname from the current directory.
 
TFile * OpenFile(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0) override
Interface to TFile::Open.
 
Int_t GetBufferSize() const override
Return the buffer size to create new TKeys.
 
Int_t SaveObjectAs(const TObject *obj, const char *filename="", Option_t *option="") const override
Save object in filename.
 
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
 
static constexpr Version_t Class_Version()
 
TDirectoryFile()
Default TDirectoryFile constructor.
 
TKey * FindKeyAny(const char *keyname) const override
Find key with name keyname in the current directory or its subdirectories.
 
void FillBuffer(char *&buffer) override
Encode directory header into output buffer.
 
void WriteDirHeader() override
Overwrite the Directory header record.
 
void SetWritable(Bool_t writable=kTRUE) override
Set the new value of fWritable recursively.
 
TClass * IsA() const override
 
void ReadAll(Option_t *option="") override
Read objects from a ROOT file directory into memory.
 
TList * fKeys
Pointer to keys list in memory.
 
void ls(Option_t *option="") const override
List Directory contents.
 
TDirectory::TContext keeps track and restore the current directory.
 
Describe directory structure in memory.
 
void Delete(const char *namecycle="") override
Delete Objects or/and keys in a directory.
 
virtual TList * GetList() const
 
virtual Int_t AppendKey(TKey *)
 
virtual TDirectory * GetDirectory(const char *namecycle, Bool_t printError=false, const char *funcname="GetDirectory")
Find a directory using apath.
 
virtual void ReadAll(Option_t *="")
 
virtual TObject * Get(const char *namecycle)
Return pointer to object identified by namecycle.
 
void CleanTargets()
Clean the pointers to this object (gDirectory, TContext, etc.).
 
virtual void Append(TObject *obj, Bool_t replace=kFALSE)
Append object to this directory.
 
static void DecodeNameCycle(const char *namecycle, char *name, Short_t &cycle, const size_t namesize=0)
Decode a namecycle "aap;2" into name "aap" and cycle "2".
 
virtual TFile * GetFile() const
 
TObject * FindObject(const char *name) const override
Find object by name in the list of memory objects.
 
virtual Bool_t cd()
Change current directory to "this" directory.
 
TDirectory * GetMotherDir() const
 
void GetObject(const char *namecycle, T *&ptr)
Get an object with proper type checking.
 
virtual void * GetObjectChecked(const char *namecycle, const char *classname)
See documentation of TDirectory::GetObjectCheck(const char *namecycle, const TClass *cl)
 
virtual TKey * FindKeyAny(const char *) const
 
virtual TObject * FindObjectAny(const char *name) const
Find object by name in the list of memory objects of the current directory or its sub-directories.
 
Streamer around an arbitrary STL like container, which implements basic container functionality.
 
A ROOT file is composed of a header, followed by consecutive data records (TKey instances) with a wel...
 
virtual void Seek(Long64_t offset, ERelativeTo pos=kBeg)
Seek to a specific position in the file. Pos it either kBeg, kCur or kEnd.
 
virtual Int_t DirReadKeys(TDirectory *)
 
TList * GetListOfFree() const
 
Int_t GetBestBuffer() const
Return the best buffer size of objects on this file.
 
virtual TKey * CreateKey(TDirectory *mother, const TObject *obj, const char *name, Int_t bufsize)
Creates key for object and converts data to buffer.
 
virtual Long64_t GetSize() const
Returns the current file size.
 
virtual Long64_t GetEND() const
 
void SumBuffer(Int_t bufsize)
Increment statistics for buffer sizes of objects in this file.
 
static TFile *& CurrentFile()
Return the current ROOT file if any.
 
virtual const TUrl * GetEndpointUrl() const
 
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
 
virtual Bool_t ReadBuffer(char *buf, Int_t len)
Read a buffer from the file.
 
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
 
Book space in a file, create I/O buffers, to fill them, (un)compress them.
 
void Delete(Option_t *option="") override
Delete an object from the file.
 
virtual Long64_t GetSeekKey() const
 
Int_t Sizeof() const override
Return the size in bytes of the key header structure.
 
Short_t GetKeep() const
Returns the "KEEP" status.
 
virtual const char * GetClassName() const
 
virtual Bool_t ReadFile()
Read the key structure from the file.
 
void ReadKeyBuffer(char *&buffer)
Decode input buffer.
 
virtual Long64_t GetSeekPdir() const
 
void SetMotherDir(TDirectory *dir)
 
virtual void ls(Bool_t current) const
List Key contents.
 
Short_t GetCycle() const
Return cycle number associated to this key.
 
virtual TObject * ReadObj()
To read a TObject* from the file.
 
virtual Int_t WriteFile(Int_t cycle=1, TFile *f=nullptr)
Write the encoded object supported by this key.
 
virtual char * GetBuffer() const
 
void FillBuffer(char *&buffer) override
Encode key header into output buffer.
 
TObject * Before(const TObject *obj) const override
Returns the object before object obj.
 
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
 
void Add(TObject *obj) override
 
TObject * Remove(TObject *obj) override
Remove object from the list.
 
TObject * First() const override
Return the first object in the list. Returns 0 when list is empty.
 
void AddBefore(const TObject *before, TObject *obj) override
Insert object before object before in the list.
 
virtual TObjLink * FirstLink() const
 
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
 
This class implements a shared memory region mapped to a file.
 
void Add(const TObject *obj, const char *name="")
Add an object to the list of objects to be stored in shared memory.
 
The TNamed class is the base class for all named ROOT classes.
 
const char * GetName() const override
Returns name of object.
 
const char * GetTitle() const override
Returns title of object.
 
TClass * IsA() const override
 
Wrapper around a TObject so it can be stored in a TList.
 
TObject * GetObject() const
 
Mother of all ROOT objects.
 
virtual Bool_t IsFolder() const
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
 
virtual const char * GetName() const
Returns name of object.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual void Streamer(TBuffer &)
Stream an object of class TObject.
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
 
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
 
@ kOnlyPrepStep
Used to request that the class specific implementation of TObject::Write just prepare the objects to ...
 
virtual void Delete(Option_t *option="")
Delete this object.
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
 
virtual TClass * IsA() const
 
virtual void ls(Option_t *option="") const
The ls function lists the contents of a class on stdout.
 
@ kCanDelete
if object in a list can be deleted
 
@ kIsReferenced
if object is referenced by a TRef or TRefArray
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
 
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
 
static Int_t DecreaseDirLevel()
Decrease the indentation level for ls().
 
Regular expression class.
 
virtual Int_t GetExecID() const
Returns the TExec id for the EXEC instruction in the comment field of a TRef data member.
 
Describes a persistent version of a class.
 
TObjArray * GetElements() const override
 
void ToLower()
Change string to lower-case.
 
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
 
const char * Data() const
 
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
 
virtual void Streamer(TBuffer &)
Stream a string object.
 
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
 
This class defines a UUID (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDent...
 
virtual void Streamer(TBuffer &)
 
const char * AsString() const
Return UUID as string. Copy string immediately since it will be reused.
 
void FillBuffer(char *&buffer)
Stream UUID into output buffer.
 
void StreamerV1(TBuffer &b)
Stream UUID from input buffer.
 
Abstract Interface class describing Streamer information for one class.
 
virtual TClass * GetClass() const =0
 
void(* DirAutoAdd_t)(void *, TDirectory *)