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