Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TDirectory.h
Go to the documentation of this file.
1// @(#)root/base:$Id$
2// Author: Rene Brun 28/11/94
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, 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_TDirectory
13#define ROOT_TDirectory
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TDirectory //
19// //
20// Describe directory structure in memory. //
21// //
22//////////////////////////////////////////////////////////////////////////
23
24#include "TNamed.h"
25#include "TClass.h"
26#include "TUUID.h"
27#include <atomic>
28
29#ifdef R__LESS_INCLUDES
30class TList;
31#else
32#include "TList.h"
33#include "TBuffer.h"
34// #include "TDatime.h"
35#endif
36
37class TBrowser;
38class TKey;
39class TFile;
40namespace ROOT {
41namespace Internal {
42 struct TDirectoryAtomicAdapter;
43}}
44
45class TDirectory : public TNamed {
46public:
47 /** @class TContext
48 *
49 * Small helper to keep current directory context.
50 * Automatically reverts to "old" directory
51 */
52 class TContext {
53 private:
54 std::atomic<TDirectory*> fDirectory{nullptr}; //! Pointer to the previous current directory.
55 std::atomic<bool> fActiveDestructor{false}; //! Set to true during the destructor execution
56 std::atomic<bool> fDirectoryWait{false}; //! Set to true if a TDirectory might still access this object.
57 TContext *fPrevious{nullptr}; //! Pointer to the next TContext in the implied list of context pointing to fPrevious.
58 TContext *fNext{nullptr}; //! Pointer to the next TContext in the implied list of context pointing to fPrevious.
59
60 TContext(TContext&) = delete;
62
63 void CdNull();
64 friend class TDirectory;
65 public:
66 TContext(TDirectory *previous, TDirectory *newCurrent) : fDirectory(previous)
67 {
68 // Store the current directory so we can restore it
69 // later and cd to the new directory.
70 if (fDirectory)
71 (*fDirectory).RegisterContext(this);
72 if (newCurrent)
73 newCurrent->cd();
74 else
75 CdNull();
76 }
78 {
79 // Store the current directory so we can restore it
80 // later and cd to the new directory.
81 if (fDirectory)
82 (*fDirectory).RegisterContext(this);
83 }
85 {
86 // Store the current directory so we can restore it
87 // later and cd to the new directory.
88 if (fDirectory)
89 (*fDirectory).RegisterContext(this);
90 if (newCurrent)
91 newCurrent->cd();
92 else
93 CdNull();
94 }
95 ~TContext();
96 };
97
98protected:
99
100 TObject *fMother{nullptr}; // pointer to mother of the directory
101 TList *fList{nullptr}; // List of objects in memory
102 TUUID fUUID; // Unique identifier
103 mutable TString fPathBuffer; //! Buffer for GetPath() function
104 TContext *fContext{nullptr}; //! Pointer to a list of TContext object pointing to this TDirectory
105
106 std::vector<std::atomic<TDirectory*>*> fGDirectories; //! thread local gDirectory pointing to this object.
107
108 std::atomic<size_t> fContextPeg; //!Counter delaying the TDirectory destructor from finishing.
109 mutable std::atomic_flag fSpinLock; //! MSVC doesn't support = ATOMIC_FLAG_INIT;
110
111 static Bool_t fgAddDirectory; //!flag to add histograms, graphs,etc to the directory
112
113 Bool_t cd1(const char *path);
114 static Bool_t Cd1(const char *path);
115
116 void CleanTargets();
117 void FillFullPath(TString& buf) const;
118 void RegisterContext(TContext *ctxt);
119 void UnregisterContext(TContext *ctxt);
120 void RegisterGDirectory(std::atomic<TDirectory*>*);
121 void BuildDirectory(TFile* motherFile, TDirectory* motherDir);
122
123 friend class TContext;
125
126protected:
127 TDirectory(const TDirectory &directory) = delete; //Directories cannot be copied
128 void operator=(const TDirectory &) = delete; //Directories cannot be copied
129
130public:
131
132 TDirectory();
133 TDirectory(const char *name, const char *title, Option_t *option = "", TDirectory* motherDir = nullptr);
134 virtual ~TDirectory();
135 static void AddDirectory(Bool_t add=kTRUE);
136 static Bool_t AddDirectoryStatus();
137 virtual void Append(TObject *obj, Bool_t replace = kFALSE);
138 virtual void Add(TObject *obj, Bool_t replace = kFALSE) { Append(obj,replace); }
139 virtual Int_t AppendKey(TKey *) {return 0;}
140 void Browse(TBrowser *b) override;
141 virtual void Build(TFile* motherFile = nullptr, TDirectory* motherDir = nullptr) { BuildDirectory(motherFile, motherDir); }
142 void Clear(Option_t *option="") override;
143 virtual TObject *CloneObject(const TObject *obj, Bool_t autoadd = kTRUE);
144 virtual void Close(Option_t *option="");
145 static std::atomic<TDirectory*> &CurrentDirectory(); // Return the current directory for this thread.
146 void Copy(TObject &) const override { MayNotUse("Copy(TObject &)"); }
147 virtual Bool_t cd(const char *path = nullptr);
148 virtual void DeleteAll(Option_t *option="");
149 void Delete(const char *namecycle="") override;
150 void Draw(Option_t *option="") override;
151 virtual TKey *FindKey(const char * /*keyname*/) const {return nullptr;}
152 virtual TKey *FindKeyAny(const char * /*keyname*/) const {return nullptr;}
153 TObject *FindObject(const char *name) const override;
154 TObject *FindObject(const TObject *obj) const override;
155 virtual TObject *FindObjectAny(const char *name) const;
156 virtual TObject *FindObjectAnyFile(const char * /*name*/) const {return nullptr;}
157 virtual TObject *Get(const char *namecycle);
158 /// See documentation of TDirectoryFile::Get(const char *namecycle)
159 template <class T> inline T* Get(const char* namecycle)
160 {
161 return static_cast<T*>(GetObjectChecked(namecycle, TClass::GetClass<T>()));
162 }
163 virtual TDirectory *GetDirectory(const char *namecycle, Bool_t printError = false, const char *funcname = "GetDirectory");
164 /// Get an object with proper type checking. If the object doesn't exist in the file or if the type doesn't match,
165 /// a `nullptr` is returned. Also see TDirectory::Get().
166 template <class T> inline void GetObject(const char* namecycle, T*& ptr)
167 {
168 ptr = (T *)GetObjectChecked(namecycle, TClass::GetClass<T>());
169 }
170 virtual void *GetObjectChecked(const char *namecycle, const char* classname);
171 virtual void *GetObjectChecked(const char *namecycle, const TClass* cl);
172 virtual void *GetObjectUnchecked(const char *namecycle);
173 virtual Int_t GetBufferSize() const {return 0;}
174 virtual TFile *GetFile() const { return 0; }
175 virtual TKey *GetKey(const char * /*name */, Short_t /* cycle */=9999) const {return nullptr;}
176 virtual TList *GetList() const { return fList; }
177 virtual TList *GetListOfKeys() const { return nullptr; }
178 TObject *GetMother() const { return fMother; }
179 TDirectory *GetMotherDir() const { return !fMother ? nullptr : dynamic_cast<TDirectory*>(fMother); }
180 virtual Int_t GetNbytesKeys() const { return 0; }
181 virtual Int_t GetNkeys() const { return 0; }
182 virtual Long64_t GetSeekDir() const { return 0; }
183 virtual Long64_t GetSeekParent() const { return 0; }
184 virtual Long64_t GetSeekKeys() const { return 0; }
185 virtual const char *GetPathStatic() const;
186 virtual const char *GetPath() const;
187 TUUID GetUUID() const {return fUUID;}
188 Bool_t IsFolder() const override { return kTRUE; }
189 virtual Bool_t IsModified() const { return kFALSE; }
190 virtual Bool_t IsWritable() const { return kFALSE; }
191 void ls(Option_t *option="") const override;
192 virtual TDirectory *mkdir(const char *name, const char *title="", Bool_t returnExistingDirectory = kFALSE);
193 virtual TFile *OpenFile(const char * /*name*/, Option_t * /*option*/ = "",
194 const char * /*ftitle*/ = "", Int_t /*compress*/ = 1,
195 Int_t /*netopt*/ = 0) {return nullptr;}
196 void Paint(Option_t *option="") override;
197 void Print(Option_t *option="") const override;
198 virtual void Purge(Short_t /*nkeep*/=1) {}
199 virtual void pwd() const;
200 virtual void ReadAll(Option_t * /*option*/="") {}
201 virtual Int_t ReadKeys(Bool_t /*forceRead*/=kTRUE) {return 0;}
202 virtual Int_t ReadTObject(TObject * /*obj*/, const char * /*keyname*/) {return 0;}
203 virtual TObject *Remove(TObject*);
204 void RecursiveRemove(TObject *obj) override;
205 virtual void rmdir(const char *name);
206 virtual void Save() {}
207 virtual Int_t SaveObjectAs(const TObject * /*obj*/, const char * /*filename*/="", Option_t * /*option*/="") const;
208 virtual void SaveSelf(Bool_t /*force*/ = kFALSE) {}
209 virtual void SetBufferSize(Int_t /* bufsize */) {}
210 virtual void SetModified() {}
211 virtual void SetMother(TObject *mother) {fMother = (TObject*)mother;}
212 void SetName(const char* newname) override;
213 virtual void SetTRefAction(TObject * /*ref*/, TObject * /*parent*/) {}
214 virtual void SetSeekDir(Long64_t) {}
215 virtual void SetWritable(Bool_t) {}
216 Int_t Sizeof() const override {return 0;}
217 virtual Int_t Write(const char * /*name*/=nullptr, Int_t /*opt*/=0, Int_t /*bufsize*/=0) override {return 0;}
218 virtual Int_t Write(const char * /*name*/=nullptr, Int_t /*opt*/=0, Int_t /*bufsize*/=0) const override {return 0;}
219 virtual Int_t WriteTObject(const TObject *obj, const char *name =nullptr, Option_t * /*option*/="", Int_t /*bufsize*/ =0);
220private:
221 Int_t WriteObject(void *obj, const char* name, Option_t *option="", Int_t bufsize=0); // Intentionally not implemented.
222public:
223 /// Write an object with proper type checking.
224 /// \param[in] obj Pointer to an object to be written.
225 /// \param[in] name Name of the object in the file.
226 /// \param[in] option Options. See TDirectory::WriteTObject() or TDirectoryWriteObjectAny().
227 /// \param[in] bufsize Buffer size. See TDirectory::WriteTObject().
228 template <class T> inline Int_t WriteObject(const T* obj, const char* name, Option_t *option="", Int_t bufsize=0)
229 {
230 return WriteObjectAny(obj, TClass::GetClass<T>(), name, option, bufsize);
231 }
232 virtual Int_t WriteObjectAny(const void *, const char * /*classname*/, const char * /*name*/, Option_t * /*option*/="", Int_t /*bufsize*/ =0) {return 0;}
233 virtual Int_t WriteObjectAny(const void *, const TClass * /*cl*/, const char * /*name*/, Option_t * /*option*/="", Int_t /*bufsize*/ =0) {return 0;}
234 virtual void WriteDirHeader() {}
235 virtual void WriteKeys() {}
236
237 static Bool_t Cd(const char *path);
238 static void DecodeNameCycle(const char *namecycle, char *name, Short_t &cycle, const size_t namesize = 0);
239 static void EncodeNameCycle(char *buffer, const char *name, Short_t cycle);
240
241 ClassDefOverride(TDirectory,5) //Describe directory structure in memory
242};
243
244#ifndef __CINT__
245namespace ROOT {
246namespace Internal {
248 std::atomic<TDirectory*> &fValue;
249 TDirectoryAtomicAdapter(std::atomic<TDirectory*> &value) : fValue(value) {}
250
251 template <typename T>
252 explicit operator T*() const {
253 return (T*)fValue.load();
254 }
255
256 operator TDirectory*() const {
257 return fValue.load();
258 }
259
260 operator bool() const { return fValue.load() != nullptr; }
261
262 bool operator==(const TDirectory *other) const {
263 return fValue.load() == other;
264 }
265
266 bool operator!=(const TDirectory *other) const {
267 return fValue.load() != other;
268 }
269
270 bool operator==(TDirectory *other) const {
271 return fValue.load() == other;
272 }
273
274 bool operator!=(TDirectory *other) const {
275 return fValue.load() != other;
276 }
277
279 if (newvalue) {
280 newvalue->RegisterGDirectory(&fValue);
281 }
282 fValue = newvalue;
283 return newvalue;
284 }
285
286 TDirectory *operator->() const { return fValue.load(); }
287 };
288} // Internal
289} // ROOT
290#define gDirectory (ROOT::Internal::TDirectoryAtomicAdapter(TDirectory::CurrentDirectory()))
291
292#elif defined(__MAKECINT__)
293// To properly handle the use of gDirectory in header files (in static declarations)
295#endif
296
297#endif
#define R__EXTERN
Definition DllImport.h:27
#define b(i)
Definition RSha256.hxx:100
int Int_t
Definition RtypesCore.h:45
const Bool_t kFALSE
Definition RtypesCore.h:92
bool Bool_t
Definition RtypesCore.h:63
short Short_t
Definition RtypesCore.h:39
long long Long64_t
Definition RtypesCore.h:73
const Bool_t kTRUE
Definition RtypesCore.h:91
const char Option_t
Definition RtypesCore.h:66
#define ClassDefOverride(name, id)
Definition Rtypes.h:329
#define gDirectory
Definition TDirectory.h:290
char name[80]
Definition TGX11.cxx:110
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:80
Small helper to keep current directory context.
Definition TDirectory.h:52
TContext & operator=(TContext &)=delete
TContext(TDirectory *previous, TDirectory *newCurrent)
Definition TDirectory.h:66
std::atomic< bool > fDirectoryWait
Set to true during the destructor execution.
Definition TDirectory.h:56
void CdNull()
Set the current directory to null.
TContext(TDirectory *newCurrent)
Definition TDirectory.h:84
~TContext()
Destructor.
TContext * fPrevious
Set to true if a TDirectory might still access this object.
Definition TDirectory.h:57
std::atomic< bool > fActiveDestructor
Pointer to the previous current directory.
Definition TDirectory.h:55
TContext(TContext &)=delete
Pointer to the next TContext in the implied list of context pointing to fPrevious.
TContext * fNext
Pointer to the next TContext in the implied list of context pointing to fPrevious.
Definition TDirectory.h:58
std::atomic< TDirectory * > fDirectory
Definition TDirectory.h:54
Describe directory structure in memory.
Definition TDirectory.h:45
virtual Long64_t GetSeekDir() const
Definition TDirectory.h:182
std::vector< std::atomic< TDirectory * > * > fGDirectories
Pointer to a list of TContext object pointing to this TDirectory.
Definition TDirectory.h:106
Bool_t cd1(const char *path)
flag to add histograms, graphs,etc to the directory
void Delete(const char *namecycle="") override
Delete Objects or/and keys in a directory.
virtual void Close(Option_t *option="")
Delete all objects from memory and directory structure itself.
virtual void Save()
Definition TDirectory.h:206
virtual TList * GetList() const
Definition TDirectory.h:176
virtual void SetSeekDir(Long64_t)
Definition TDirectory.h:214
TDirectory(const TDirectory &directory)=delete
virtual Int_t Write(const char *=nullptr, Int_t=0, Int_t=0) override
Write this object to the current directory.
Definition TDirectory.h:217
virtual Int_t AppendKey(TKey *)
Definition TDirectory.h:139
virtual TDirectory * GetDirectory(const char *namecycle, Bool_t printError=false, const char *funcname="GetDirectory")
Find a directory using apath.
Bool_t IsFolder() const override
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
Definition TDirectory.h:188
virtual Int_t GetNkeys() const
Definition TDirectory.h:181
void RegisterGDirectory(std::atomic< TDirectory * > *)
Register a std::atomic<TDirectory*> that will soon be pointing to this TDirectory object.
virtual void WriteKeys()
Definition TDirectory.h:235
virtual Int_t GetNbytesKeys() const
Definition TDirectory.h:180
virtual const char * GetPath() const
Returns the full path of the directory.
std::atomic_flag fSpinLock
Counter delaying the TDirectory destructor from finishing.
Definition TDirectory.h:109
virtual void ReadAll(Option_t *="")
Definition TDirectory.h:200
virtual TObject * Get(const char *namecycle)
Return pointer to object identified by namecycle.
virtual void * GetObjectUnchecked(const char *namecycle)
Return pointer to object identified by namecycle.
virtual void DeleteAll(Option_t *option="")
Delete all objects from memory.
std::atomic< size_t > fContextPeg
thread local gDirectory pointing to this object.
Definition TDirectory.h:108
virtual void SetModified()
Definition TDirectory.h:210
virtual void rmdir(const char *name)
Removes subdirectory from the directory When directory is deleted, all keys in all subdirectories wil...
void Copy(TObject &) const override
Copy this to obj.
Definition TDirectory.h:146
static Bool_t AddDirectoryStatus()
Static function: see TDirectory::AddDirectory for more comments.
void FillFullPath(TString &buf) const
Recursive method to fill full path for directory.
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add objects like histograms, TGraph2D, etc in memory.
void CleanTargets()
Clean the pointers to this object (gDirectory, TContext, etc.).
void ls(Option_t *option="") const override
List Directory contents.
virtual Int_t WriteObjectAny(const void *, const TClass *, const char *, Option_t *="", Int_t=0)
Definition TDirectory.h:233
TContext * fContext
Buffer for GetPath() function.
Definition TDirectory.h:104
virtual TFile * OpenFile(const char *, Option_t *="", const char *="", Int_t=1, Int_t=0)
Definition TDirectory.h:193
virtual void Append(TObject *obj, Bool_t replace=kFALSE)
Append object to this directory.
Int_t WriteObject(const T *obj, const char *name, Option_t *option="", Int_t bufsize=0)
Write an object with proper type checking.
Definition TDirectory.h:228
virtual void WriteDirHeader()
Definition TDirectory.h:234
Int_t Sizeof() const override
Return size of the TNamed part of the TObject.
Definition TDirectory.h:216
TDirectory()
Directory default constructor.
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".
static Bool_t Cd(const char *path)
Change current directory to "path".
void Clear(Option_t *option="") override
Delete all objects from a Directory list.
virtual Int_t WriteTObject(const TObject *obj, const char *name=nullptr, Option_t *="", Int_t=0)
virtual void Add(TObject *obj, Bool_t replace=kFALSE)
Definition TDirectory.h:138
virtual Int_t WriteObjectAny(const void *, const char *, const char *, Option_t *="", Int_t=0)
Definition TDirectory.h:232
virtual TFile * GetFile() const
Definition TDirectory.h:174
TObject * FindObject(const char *name) const override
Find object by name in the list of memory objects.
virtual void Build(TFile *motherFile=nullptr, TDirectory *motherDir=nullptr)
Definition TDirectory.h:141
Int_t WriteObject(void *obj, const char *name, Option_t *option="", Int_t bufsize=0)
void Print(Option_t *option="") const override
Print all objects in the directory.
virtual ~TDirectory()
Destructor.
virtual Int_t ReadKeys(Bool_t=kTRUE)
Definition TDirectory.h:201
static Bool_t Cd1(const char *path)
Change current directory to "path".
virtual Bool_t IsWritable() const
Definition TDirectory.h:190
virtual TKey * GetKey(const char *, Short_t=9999) const
Definition TDirectory.h:175
virtual void Purge(Short_t=1)
Definition TDirectory.h:198
void UnregisterContext(TContext *ctxt)
UnRegister a TContext pointing to this TDirectory object.
virtual Int_t ReadTObject(TObject *, const char *)
Definition TDirectory.h:202
virtual void SetWritable(Bool_t)
Definition TDirectory.h:215
virtual Bool_t IsModified() const
Definition TDirectory.h:189
virtual void SetTRefAction(TObject *, TObject *)
Definition TDirectory.h:213
virtual void SaveSelf(Bool_t=kFALSE)
Definition TDirectory.h:208
void RecursiveRemove(TObject *obj) override
Recursively remove object from a Directory.
virtual Int_t SaveObjectAs(const TObject *, const char *="", Option_t *="") const
Save object in filename, if filename is 0 or "", a file with "objectname.root" is created.
TString fPathBuffer
Definition TDirectory.h:103
virtual TKey * FindKey(const char *) const
Definition TDirectory.h:151
virtual TDirectory * mkdir(const char *name, const char *title="", Bool_t returnExistingDirectory=kFALSE)
Create a sub-directory "a" or a hierarchy of sub-directories "a/b/c/...".
void SetName(const char *newname) override
Set the name for directory If the directory name is changed after the directory was written once,...
void BuildDirectory(TFile *motherFile, TDirectory *motherDir)
Initialise directory to defaults.
virtual Int_t GetBufferSize() const
Definition TDirectory.h:173
virtual Long64_t GetSeekParent() const
Definition TDirectory.h:183
virtual void SetMother(TObject *mother)
Definition TDirectory.h:211
virtual Long64_t GetSeekKeys() const
Definition TDirectory.h:184
virtual TList * GetListOfKeys() const
Definition TDirectory.h:177
TUUID fUUID
Definition TDirectory.h:102
TUUID GetUUID() const
Definition TDirectory.h:187
virtual TObject * FindObjectAnyFile(const char *) const
Definition TDirectory.h:156
static Bool_t fgAddDirectory
MSVC doesn't support = ATOMIC_FLAG_INIT;.
Definition TDirectory.h:111
TDirectory * GetMotherDir() const
Definition TDirectory.h:179
static void EncodeNameCycle(char *buffer, const char *name, Short_t cycle)
Encode the name and cycle into buffer like: "aap;2".
virtual const char * GetPathStatic() const
Returns the full path of the directory.
static std::atomic< TDirectory * > & CurrentDirectory()
Return the current directory for the current thread.
TObject * GetMother() const
Definition TDirectory.h:178
TObject * fMother
Definition TDirectory.h:100
void Browse(TBrowser *b) override
Browse the content of the directory.
void GetObject(const char *namecycle, T *&ptr)
Get an object with proper type checking.
Definition TDirectory.h:166
virtual void pwd() const
Print the path of the directory.
virtual void * GetObjectChecked(const char *namecycle, const char *classname)
See documentation of TDirectory::GetObjectCheck(const char *namecycle, const TClass *cl)
virtual TObject * CloneObject(const TObject *obj, Bool_t autoadd=kTRUE)
Clone an object.
virtual TObject * Remove(TObject *)
Remove an object from the in-memory list.
void RegisterContext(TContext *ctxt)
Register a TContext pointing to this TDirectory object.
TList * fList
Definition TDirectory.h:101
virtual TKey * FindKeyAny(const char *) const
Definition TDirectory.h:152
T * Get(const char *namecycle)
See documentation of TDirectoryFile::Get(const char *namecycle)
Definition TDirectory.h:159
virtual Int_t Write(const char *=nullptr, Int_t=0, Int_t=0) const override
Write this object to the current directory.
Definition TDirectory.h:218
virtual void SetBufferSize(Int_t)
Definition TDirectory.h:209
virtual Bool_t cd(const char *path=nullptr)
Change current directory to "this" directory.
void Paint(Option_t *option="") override
Paint all objects in the directory.
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.
void operator=(const TDirectory &)=delete
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition TFile.h:54
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:44
The TNamed class is the base class for all named ROOT classes.
Definition TNamed.h:29
Mother of all ROOT objects.
Definition TObject.h:37
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:946
Basic string class.
Definition TString.h:136
This class defines a UUID (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDent...
Definition TUUID.h:42
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
TDirectory * operator=(TDirectory *newvalue)
Definition TDirectory.h:278
bool operator!=(TDirectory *other) const
Definition TDirectory.h:274
bool operator==(TDirectory *other) const
Definition TDirectory.h:270
bool operator!=(const TDirectory *other) const
Definition TDirectory.h:266
TDirectoryAtomicAdapter(std::atomic< TDirectory * > &value)
Definition TDirectory.h:249
std::atomic< TDirectory * > & fValue
Definition TDirectory.h:248
bool operator==(const TDirectory *other) const
Definition TDirectory.h:262
th1 Draw()