Logo ROOT  
Reference Guide
TObject.h
Go to the documentation of this file.
1// @(#)root/base:$Id$
2// Author: Rene Brun 26/12/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_TObject
13#define ROOT_TObject
14
15
16// #include "RConfigure.h" // included via Rtypes.h
17#include "Rtypes.h"
18#include "TStorage.h"
19#include "TVersionCheck.h"
20
21#include <stdarg.h>
22#include <string>
23#include <iosfwd>
24
25#ifdef WIN32
26#undef RemoveDirectory
27#endif
28
29class TList;
30class TBrowser;
31class TBuffer;
32class TObjArray;
33class TMethod;
34class TTimer;
35
36namespace ROOT {
37namespace Internal {
39}}
40
41class TObject {
42
43private:
44 UInt_t fUniqueID; ///< object unique identifier
45 UInt_t fBits; ///< bit field status word
46
47 static Longptr_t fgDtorOnly; ///< object for which to call dtor only (i.e. no delete)
48 static Bool_t fgObjectStat; ///< if true keep track of objects in TObjectTable
49
50 static void AddToTObjectTable(TObject *);
51
52protected:
53 void MakeZombie() { fBits |= kZombie; }
54 virtual void DoError(int level, const char *location, const char *fmt, va_list va) const;
55
56public:
57 //----- Global bits (can be set for any object and should not be reused).
58 //----- Bits 0 - 13 are reserved as global bits. Bits 14 - 23 can be used
59 //----- in different class hierarchies (make sure there is no overlap in
60 //----- any given hierarchy).
62 kCanDelete = BIT(0), ///< if object in a list can be deleted
63 // 2 is taken by TDataMember
64 kMustCleanup = BIT(3), ///< if object destructor must call RecursiveRemove()
65 kIsReferenced = BIT(4), ///< if object is referenced by a TRef or TRefArray
66 kHasUUID = BIT(5), ///< if object has a TUUID (its fUniqueID=UUIDNumber)
67 kCannotPick = BIT(6), ///< if object in a pad cannot be picked
68 // 7 is taken by TAxis and TClass.
69 kNoContextMenu = BIT(8), ///< if object does not want context menu
70 // 9, 10 are taken by TH1, TF1, TAxis and a few others
71 // 12 is taken by TAxis
72 kInvalidObject = BIT(13) ///< if object ctor succeeded but object should not be used
73 };
74
76 kObjInCanvas = BIT(3) ///< for backward compatibility only, use kMustCleanup
77 };
78
79 //----- Private bits, clients can only test but not change them
80 enum {
81 kIsOnHeap = 0x01000000, ///< object is on heap
82 kNotDeleted = 0x02000000, ///< object has not been deleted
83 kZombie = 0x04000000, ///< object ctor failed
84 kInconsistent = 0x08000000, ///< class overload Hash but does call RecursiveRemove in destructor
85 // kCheckedHash = 0x10000000, ///< CheckedHash has check for the consistency of Hash/RecursiveRemove
86 kBitMask = 0x00ffffff
87 };
88
89 //----- Write() options
90 enum {
91 kSingleKey = BIT(0), ///< write collection with single key
92 kOverwrite = BIT(1), ///< overwrite existing object with same name
93 kWriteDelete = BIT(2), ///< write object, then delete previous key with same name
94 };
95
96protected:
97 enum { // DeprectatedWriteOptions
98 ///< Used to request that the class specific implementation of `TObject::Write`
99 ///< just prepare the objects to be ready to be written but do not actually write
100 ///< them into the TBuffer. This is just for example by TBufferMerger to request
101 ///< that the TTree inside the file calls `TTree::FlushBaskets` (outside of the merging lock)
102 ///< and TBufferMerger will later ask for the write (inside the merging lock).
103 ///< To take advantage of this feature the class needs to overload `TObject::Write`
104 ///< and use this enum value accordingly. (See `TTree::Write` and `TObject::Write`)
105 ///< Do not use, this feature will be migrate to the Merge function (See TClass and TTree::Merge)
106 kOnlyPrepStep = BIT(3)
107 };
108
109public:
110
111 TObject();
112 TObject(const TObject &object);
113 TObject &operator=(const TObject &rhs);
114 virtual ~TObject();
115
116 virtual void AppendPad(Option_t *option="");
117 virtual void Browse(TBrowser *b);
118 virtual const char *ClassName() const;
119 virtual void Clear(Option_t * /*option*/ ="") { }
120 ULong_t CheckedHash(); // Not virtual
121 virtual TObject *Clone(const char *newname="") const;
122 virtual Int_t Compare(const TObject *obj) const;
123 virtual void Copy(TObject &object) const;
124 virtual void Delete(Option_t *option=""); // *MENU*
125 virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
126 virtual void Draw(Option_t *option="");
127 virtual void DrawClass() const; // *MENU*
128 virtual TObject *DrawClone(Option_t *option="") const; // *MENU*
129 virtual void Dump() const; // *MENU*
130 virtual void Execute(const char *method, const char *params, Int_t *error = nullptr);
131 virtual void Execute(TMethod *method, TObjArray *params, Int_t *error = nullptr);
132 virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
133 virtual TObject *FindObject(const char *name) const;
134 virtual TObject *FindObject(const TObject *obj) const;
135 virtual Option_t *GetDrawOption() const;
136 virtual UInt_t GetUniqueID() const;
137 virtual const char *GetName() const;
138 virtual const char *GetIconName() const;
139 virtual Option_t *GetOption() const { return ""; }
140 virtual char *GetObjectInfo(Int_t px, Int_t py) const;
141 virtual const char *GetTitle() const;
142 virtual Bool_t HandleTimer(TTimer *timer);
144 virtual ULong_t Hash() const;
145 virtual Bool_t InheritsFrom(const char *classname) const;
146 virtual Bool_t InheritsFrom(const TClass *cl) const;
147 virtual void Inspect() const; // *MENU*
148 virtual Bool_t IsFolder() const;
149 virtual Bool_t IsEqual(const TObject *obj) const;
150 virtual Bool_t IsSortable() const { return kFALSE; }
151
154
155 virtual Bool_t Notify();
156 virtual void ls(Option_t *option="") const;
157 virtual void Paint(Option_t *option="");
158 virtual void Pop();
159 virtual void Print(Option_t *option="") const;
160 virtual Int_t Read(const char *name);
161 virtual void RecursiveRemove(TObject *obj);
162 virtual void SaveAs(const char *filename="",Option_t *option="") const; // *MENU*
163 virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
164 virtual void SetDrawOption(Option_t *option=""); // *MENU*
165 virtual void SetUniqueID(UInt_t uid);
166 virtual void UseCurrentStyle();
167 virtual Int_t Write(const char *name = nullptr, Int_t option = 0, Int_t bufsize = 0);
168 virtual Int_t Write(const char *name = nullptr, Int_t option = 0, Int_t bufsize = 0) const;
169
170 /// IsDestructed
171 ///
172 /// \note This function must be non-virtual as it can be used on destructed (but
173 /// not yet modified) memory. This is used for example in TClonesArray to record
174 /// the element that have been destructed but not deleted and thus are ready for
175 /// re-use (by operator new with placement).
176 ///
177 /// \return true if this object's destructor has been run.
179
180 //----- operators
181 void *operator new(size_t sz) { return TStorage::ObjectAlloc(sz); }
182 void *operator new[](size_t sz) { return TStorage::ObjectAllocArray(sz); }
183 void *operator new(size_t sz, void *vp) { return TStorage::ObjectAlloc(sz, vp); }
184 void *operator new[](size_t sz, void *vp) { return TStorage::ObjectAlloc(sz, vp); }
185 void operator delete(void *ptr);
186 void operator delete[](void *ptr);
187#ifdef R__SIZEDDELETE
188 // Sized deallocation.
189 void operator delete(void*, size_t);
190 void operator delete[](void*, size_t);
191#endif
192#ifdef R__PLACEMENTDELETE
193 void operator delete(void *ptr, void *vp);
194 void operator delete[](void *ptr, void *vp);
195#endif
196
197 //----- bit manipulation
198 void SetBit(UInt_t f, Bool_t set);
199 void SetBit(UInt_t f) { fBits |= f & kBitMask; }
200 void ResetBit(UInt_t f) { fBits &= ~(f & kBitMask); }
201 R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const { return (Bool_t) ((fBits & f) != 0); }
202 Int_t TestBits(UInt_t f) const { return (Int_t) (fBits & f); }
204
205 //---- error handling
206 virtual void Info(const char *method, const char *msgfmt, ...) const
207#if defined(__GNUC__) && !defined(__CINT__)
208 __attribute__((format(printf, 3, 4))) /* 1 is the this pointer */
209#endif
210 ;
211 virtual void Warning(const char *method, const char *msgfmt, ...) const
212#if defined(__GNUC__) && !defined(__CINT__)
213 __attribute__((format(printf, 3, 4))) /* 1 is the this pointer */
214#endif
215 ;
216 virtual void Error(const char *method, const char *msgfmt, ...) const
217#if defined(__GNUC__) && !defined(__CINT__)
218 __attribute__((format(printf, 3, 4))) /* 1 is the this pointer */
219#endif
220 ;
221 virtual void SysError(const char *method, const char *msgfmt, ...) const
222#if defined(__GNUC__) && !defined(__CINT__)
223 __attribute__((format(printf, 3, 4))) /* 1 is the this pointer */
224#endif
225 ;
226 virtual void Fatal(const char *method, const char *msgfmt, ...) const
227#if defined(__GNUC__) && !defined(__CINT__)
228 __attribute__((format(printf, 3, 4))) /* 1 is the this pointer */
229#endif
230 ;
231
232 void AbstractMethod(const char *method) const;
233 void MayNotUse(const char *method) const;
234 void Obsolete(const char *method, const char *asOfVers, const char *removedFromVers) const;
235
236 //---- static functions
237 static Longptr_t GetDtorOnly();
238 static void SetDtorOnly(void *obj);
239 static Bool_t GetObjectStat();
240 static void SetObjectStat(Bool_t stat);
241
242 friend class TClonesArray; // needs to reset kNotDeleted in fBits
244
245 ClassDef(TObject,1) //Basic ROOT object
246};
247
248////////////////////////////////////////////////////////////////////////////////
249/// TObject constructor. It sets the two data words of TObject to their
250/// initial values. The unique ID is set to 0 and the status word is
251/// set depending if the object is created on the stack or allocated
252/// on the heap. Depending on the ROOT environment variable "Root.ObjStat"
253/// (see TEnv) the object is added to the global TObjectTable for
254/// bookkeeping.
255
256inline TObject::TObject() : fBits(kNotDeleted) // Need to leave fUniqueID unset
257{
258 // This will be reported by valgrind as uninitialized memory reads for
259 // object created on the stack, use $ROOTSYS/etc/valgrind-root.supp
261
262 fUniqueID = 0;
263
264#ifdef R__WIN32
266#else
268#endif
269}
270
271////////////////////////////////////////////////////////////////////////////////
272/// TObject copy ctor.
273
274inline TObject::TObject(const TObject &obj)
275{
276 fBits = obj.fBits;
277
278 // This will be reported by valgrind as uninitialized memory reads for
279 // object created on the stack, use $ROOTSYS/etc/valgrind-root.supp
281
282 fBits &= ~kIsReferenced;
283 fBits &= ~kCanDelete;
284
285 // Set only after used in above call
286 fUniqueID = obj.fUniqueID; // when really unique don't copy
287
288#ifdef R__WIN32
290#else
292#endif
293}
294
295////////////////////////////////////////////////////////////////////////////////
296/// TObject assignment operator.
297
299{
300 if (R__likely(this != &rhs)) {
301 fUniqueID = rhs.fUniqueID; // when really unique don't copy
302 if (IsOnHeap()) { // test uses fBits so don't move next line
303 fBits = rhs.fBits;
304 fBits |= kIsOnHeap;
305 } else {
306 fBits = rhs.fBits;
307 fBits &= ~kIsOnHeap;
308 }
309 fBits &= ~kIsReferenced;
310 fBits &= ~kCanDelete;
311 }
312 return *this;
313}
314
315
316////////////////////////////////////////////////////////////////////////////////
317/// @brief Check and record whether this class has a consistent
318/// Hash/RecursiveRemove setup (*) and then return the regular Hash value for
319/// this object. The intent is for this routine to be called instead of directly
320/// calling the function Hash during "insert" operations. See TObject::HasInconsistenTObjectHash();
321///
322/// (*) The setup is consistent when all classes in the class hierarchy that overload
323/// TObject::Hash do call ROOT::CallRecursiveRemoveIfNeeded in their destructor.
324/// i.e. it is safe to call the Hash virtual function during the RecursiveRemove operation.
325
327{
328 // Testing and recording whether we already called HasInconstistentTObjectHash
329 // for this object could save some cpu cycles in some circuntances (at the cost
330 // of reserving yet another bit).
331 // For each insert (CheckedHash is called only for insert in THashList/THashTable), it
332 // cost one memory fetch, one arithmetic operation and one branching.
333 // This save a virtual function call which itself contains a static variable memory
334 // fetch, a branching (of whether the static was already set or not).
335 // Given that a virtual function call is essentially 2 memory fetches (virtual table
336 // location and then content), one arithmetic operation and one function call/jump),
337 // we guess-estimate that the version recording-then-testing-prior-check would start
338 // saving cpu cycle when each object is inserted in average 1.5 times in a THashList/THashTable.
339
340 // if ( !fBits & kCheckedHash) {
341 if (!CheckTObjectHashConsistency())
343 // fBits &= kChecked;
344 //}
345 return Hash();
346}
347
348////////////////////////////////////////////////////////////////////////////////
349/// @brief Return true is the type of this object is *known* to have an
350/// inconsistent setup for Hash and RecursiveRemove (i.e. missing call to
351/// RecursiveRemove in destructor).
352///
353/// Note: Since the consistency is only tested for during inserts, this
354/// routine will return true for object that have never been inserted
355/// whether or not they have a consistent setup. This has no negative
356/// side-effect as searching for the object with the right or wrong
357/// Hash will always yield a not-found answer (Since anyway no hash
358/// can be guaranteed unique, there is always a check)
359
361{
362 return fBits & kInconsistent;
363}
364
365// Global bits (can be set for any object and should not be reused).
366// Only here for backward compatibility reasons.
367// For detailed description see TObject::EStatusBits above.
378
379namespace cling {
380 std::string printValue(TObject *val);
381}
382
383namespace ROOT {
384
385namespace Internal {
386 bool DeleteChangesMemory();
387} // Internal
388
389namespace Detail {
390
391
392/// @brief Check if the TObject's memory has been deleted.
393/// @warning This should be only used for error mitigation as the answer is only
394/// sometimes correct. It actually just checks whether the object has been
395/// deleted, so this will falsely return true for an object that has
396/// been destructed but its memory has not been deleted. This will return an
397/// undefined value if the memory is re-used between the deletion and the check.
398/// i.e. This is useful to prevent a segmentation fault in case where the problem
399/// can be detected when the deletion and the usage are 'close-by'
400/// @warning In enviroment where delete taints (changes) the memory, this function
401/// always returns false as the marker left by ~TObject will be overwritten.
402/// @param obj The memory to check
403/// @return true if the object has been destructed and it can be inferred that it has been deleted
406}
407
408}} // ROOT::Details
409
410#endif
#define R__ALWAYS_INLINE
Definition: RConfig.hxx:564
#define R__likely(expr)
Definition: RConfig.hxx:599
#define R__unlikely(expr)
Definition: RConfig.hxx:598
#define f(i)
Definition: RSha256.hxx:104
bool Bool_t
Definition: RtypesCore.h:63
int Int_t
Definition: RtypesCore.h:45
long Longptr_t
Definition: RtypesCore.h:82
const Bool_t kFALSE
Definition: RtypesCore.h:101
unsigned int UInt_t
Definition: RtypesCore.h:46
unsigned long ULong_t
Definition: RtypesCore.h:55
const char Option_t
Definition: RtypesCore.h:66
#define ClassDef(name, id)
Definition: Rtypes.h:335
#define BIT(n)
Definition: Rtypes.h:85
Option_t Option_t option
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 b
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 Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
char name[80]
Definition: TGX11.cxx:110
EObjBits
Definition: TObject.h:368
@ kCanDelete
Definition: TObject.h:369
@ kIsReferenced
Definition: TObject.h:372
@ kCannotPick
Definition: TObject.h:374
@ kInvalidObject
Definition: TObject.h:376
@ kObjInCanvas
Definition: TObject.h:371
@ kNoContextMenu
Definition: TObject.h:375
@ kMustCleanup
Definition: TObject.h:370
@ kHasUUID
Definition: TObject.h:373
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
Buffer base class used for serializing objects.
Definition: TBuffer.h:43
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:81
An array of clone (identical) objects.
Definition: TClonesArray.h:29
A doubly linked list.
Definition: TList.h:38
Each ROOT class (see TClass) has a linked list of methods.
Definition: TMethod.h:38
An array of TObjects.
Definition: TObjArray.h:31
Mother of all ROOT objects.
Definition: TObject.h:41
void AbstractMethod(const char *method) const
Use this method to implement an "abstract" method that you don't want to leave purely abstract.
Definition: TObject.cxx:1012
virtual Bool_t IsFolder() const
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
Definition: TObject.cxx:556
virtual void Inspect() const
Dump contents of this object in a graphics canvas.
Definition: TObject.cxx:547
virtual void Clear(Option_t *="")
Definition: TObject.h:119
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Computes distance from point (px,py) to the object.
Definition: TObject.cxx:265
Bool_t HasInconsistentHash() const
Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveR...
Definition: TObject.h:360
static void SetObjectStat(Bool_t stat)
Turn on/off tracking of objects in the TObjectTable.
Definition: TObject.cxx:1051
virtual Bool_t Notify()
This method must be overridden to handle object notification.
Definition: TObject.cxx:589
Bool_t IsDestructed() const
IsDestructed.
Definition: TObject.h:178
ULong_t CheckedHash()
Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return t...
Definition: TObject.h:326
virtual Bool_t IsEqual(const TObject *obj) const
Default equal comparison (objects are equal if they have the same address in memory).
Definition: TObject.cxx:566
@ kOverwrite
overwrite existing object with same name
Definition: TObject.h:92
@ kSingleKey
write collection with single key
Definition: TObject.h:91
@ kWriteDelete
write object, then delete previous key with same name
Definition: TObject.h:93
virtual const char * GetName() const
Returns name of object.
Definition: TObject.cxx:440
TObject & operator=(const TObject &rhs)
TObject assignment operator.
Definition: TObject.h:298
virtual void Browse(TBrowser *b)
Browse object. May be overridden for another default action.
Definition: TObject.cxx:198
void SetBit(UInt_t f)
Definition: TObject.h:199
virtual void Dump() const
Dump contents of object on stdout.
Definition: TObject.cxx:349
UInt_t fUniqueID
object unique identifier
Definition: TObject.h:44
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition: TObject.h:201
virtual const char * GetIconName() const
Returns mime type name of object.
Definition: TObject.cxx:450
virtual void RecursiveRemove(TObject *obj)
Recursively remove this object from a list.
Definition: TObject.cxx:654
virtual void DoError(int level, const char *location, const char *fmt, va_list va) const
Interface to ErrorHandler (protected).
Definition: TObject.cxx:931
virtual Bool_t HandleTimer(TTimer *timer)
Execute action in response of a timer timing out.
Definition: TObject.cxx:494
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
Definition: TObject.cxx:223
virtual UInt_t GetUniqueID() const
Return the unique object id.
Definition: TObject.cxx:458
@ kIsOnHeap
object is on heap
Definition: TObject.h:81
@ kNotDeleted
object has not been deleted
Definition: TObject.h:82
@ kBitMask
Definition: TObject.h:86
@ kZombie
object ctor failed
Definition: TObject.h:83
@ kInconsistent
class overload Hash but does call RecursiveRemove in destructor
Definition: TObject.h:84
UInt_t fBits
bit field status word
Definition: TObject.h:45
virtual Bool_t IsSortable() const
Definition: TObject.h:150
virtual Option_t * GetOption() const
Definition: TObject.h:139
static Longptr_t fgDtorOnly
object for which to call dtor only (i.e. no delete)
Definition: TObject.h:47
void InvertBit(UInt_t f)
Definition: TObject.h:203
virtual void SysError(const char *method, const char *msgfmt,...) const
Issue system error message.
Definition: TObject.cxx:984
R__ALWAYS_INLINE Bool_t IsOnHeap() const
Definition: TObject.h:152
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Definition: TObject.cxx:207
virtual void UseCurrentStyle()
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyl...
Definition: TObject.cxx:796
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
Definition: TObject.cxx:424
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
Definition: TObject.cxx:956
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:1023
virtual TObject * DrawClone(Option_t *option="") const
Draw a clone of this object in the current selected pad for instance with: gROOT->SetSelectedPad(gPad...
Definition: TObject.cxx:298
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to an event at (px,py).
Definition: TObject.cxx:394
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
Definition: TObject.cxx:404
virtual void Execute(const char *method, const char *params, Int_t *error=nullptr)
Execute method on this object with the given parameter string, e.g.
Definition: TObject.cxx:360
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
Definition: TObject.cxx:184
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Returns string containing info about the object at position (px,py).
Definition: TObject.cxx:469
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
Definition: TObject.cxx:746
R__ALWAYS_INLINE Bool_t IsZombie() const
Definition: TObject.h:153
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
Definition: TObject.cxx:875
@ kOnlyPrepStep
Used to request that the class specific implementation of TObject::Write just prepare the objects to ...
Definition: TObject.h:106
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save this object in the file specified by filename.
Definition: TObject.cxx:681
virtual void Delete(Option_t *option="")
Delete this object.
Definition: TObject.cxx:248
static Longptr_t GetDtorOnly()
Return destructor only flag.
Definition: TObject.cxx:1059
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:775
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Definition: TObject.cxx:526
static Bool_t GetObjectStat()
Get status of object stat flag.
Definition: TObject.cxx:1044
virtual void Copy(TObject &object) const
Copy this to obj.
Definition: TObject.cxx:140
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:970
virtual void SetDrawOption(Option_t *option="")
Set drawing option for object.
Definition: TObject.cxx:759
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
Definition: TObject.cxx:998
static void SetDtorOnly(void *obj)
Set destructor only flag.
Definition: TObject.cxx:1067
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
Definition: TObject.cxx:786
virtual const char * GetTitle() const
Returns title of object.
Definition: TObject.cxx:484
EDeprecatedStatusBits
Definition: TObject.h:75
@ kObjInCanvas
for backward compatibility only, use kMustCleanup
Definition: TObject.h:76
virtual void DrawClass() const
Draw class inheritance tree of the class to which this object belongs.
Definition: TObject.cxx:289
Int_t TestBits(UInt_t f) const
Definition: TObject.h:202
virtual Int_t Compare(const TObject *obj) const
Compare abstract method.
Definition: TObject.cxx:238
void MakeZombie()
Definition: TObject.h:53
virtual ~TObject()
TObject destructor.
Definition: TObject.cxx:158
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
Definition: TObject.cxx:274
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
Definition: TObject.cxx:602
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
Definition: TObject.cxx:631
virtual void Pop()
Pop on object drawn in a pad to the top of the display list.
Definition: TObject.cxx:611
TObject()
TObject constructor.
Definition: TObject.h:256
virtual ULong_t Hash() const
Return hash value for this object.
Definition: TObject.cxx:516
virtual void ls(Option_t *option="") const
The ls function lists the contents of a class on stdout.
Definition: TObject.cxx:575
static Bool_t fgObjectStat
if true keep track of objects in TObjectTable
Definition: TObject.h:48
void ResetBit(UInt_t f)
Definition: TObject.h:200
EStatusBits
Definition: TObject.h:61
@ kCannotPick
if object in a pad cannot be picked
Definition: TObject.h:67
@ kNoContextMenu
if object does not want context menu
Definition: TObject.h:69
@ kCanDelete
if object in a list can be deleted
Definition: TObject.h:62
@ kHasUUID
if object has a TUUID (its fUniqueID=UUIDNumber)
Definition: TObject.h:66
@ kInvalidObject
if object ctor succeeded but object should not be used
Definition: TObject.h:72
@ kIsReferenced
if object is referenced by a TRef or TRefArray
Definition: TObject.h:65
@ kMustCleanup
if object destructor must call RecursiveRemove()
Definition: TObject.h:64
virtual Int_t Read(const char *name)
Read contents of object with specified name from the current directory.
Definition: TObject.cxx:643
static void AddToTObjectTable(TObject *)
Private helper function which will dispatch to TObjectTable::AddObj.
Definition: TObject.cxx:175
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Definition: TObject.cxx:944
void Obsolete(const char *method, const char *asOfVers, const char *removedFromVers) const
Use this method to declare a method obsolete.
Definition: TObject.cxx:1032
static void UpdateIsOnHeap(volatile const UInt_t &uniqueID, volatile UInt_t &bits)
Definition: TStorage.h:131
static void * ObjectAllocArray(size_t size)
Used to allocate array of TObject on the heap (via TObject::operator new[]()).
Definition: TStorage.cxx:344
static void * ObjectAlloc(size_t size)
Used to allocate a TObject on the heap (via TObject::operator new()).
Definition: TStorage.cxx:332
Handles synchronous and a-synchronous timer events.
Definition: TTimer.h:51
R__ALWAYS_INLINE bool HasBeenDeleted(const TObject *obj)
Check if the TObject's memory has been deleted.
Definition: TObject.h:404
bool DeleteChangesMemory()
Definition: TObject.cxx:127
bool DeleteChangesMemoryImpl()
Definition: TObject.cxx:76
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.