library: libCore #include "TObject.h"

# TObject

class description - source file - inheritance tree (.pdf)

## class TObject

| Inheritance Chart:
`TObject` |
<- |
`Event` |
`TApplication` | <- |
`TGApplication` |
`TRint` |
`TArchiveFile` | <- |
`TZIPFile` |
`TArchiveMember` | <- |
`TZIPMember` |
`TAuthenticate` |
`TBits` |
| [more...]

        protected:

          virtual void DoError(int level, const char* location, const char* fmt, va_list va) const
                  void MakeZombie()

        public:

                              TObject()
                              TObject(const TObject& object)
                      virtual ~TObject()
                         void AbstractMethod(const char* method) const
                 virtual void AppendPad(Option_t* option = "")
                 virtual void Browse(TBrowser* b)
               static TClass* Class()
          virtual const char* ClassName() const
                 virtual void Clear(Option_t* = "")
             virtual TObject* Clone(const char* newname = "") const
                virtual Int_t Compare(const TObject* obj) const
                 virtual void Copy(TObject& object) const
                 virtual void Delete(Option_t* option = "")
                virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
                 virtual void Draw(Option_t* option = "")
                 virtual void DrawClass() const
             virtual TObject* DrawClone(Option_t* option = "") const
                 virtual void Dump() const
                 virtual void Error(const char* method, const char* msgfmt) const
                 virtual void Execute(const char* method, const char* params, Int_t* error = 0)
                 virtual void Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
                 virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
                 virtual void Fatal(const char* method, const char* msgfmt) const
             virtual TObject* FindObject(const char* name) const
             virtual TObject* FindObject(const TObject* obj) const
            virtual Option_t* GetDrawOption() const
                static Long_t GetDtorOnly()
          virtual const char* GetIconName() const
          virtual const char* GetName() const
                virtual char* GetObjectInfo(Int_t px, Int_t py) const
                static Bool_t GetObjectStat()
            virtual Option_t* GetOption() const
          virtual const char* GetTitle() const
               virtual UInt_t GetUniqueID() const
               virtual Bool_t HandleTimer(TTimer* timer)
              virtual ULong_t Hash() const
                 virtual void Info(const char* method, const char* msgfmt) const
               virtual Bool_t InheritsFrom(const char* classname) const
               virtual Bool_t InheritsFrom(const TClass* cl) const
                 virtual void Inspect() const
                         void InvertBit(UInt_t f)
              virtual TClass* IsA() const
               virtual Bool_t IsEqual(const TObject* obj) const
               virtual Bool_t IsFolder() const
                       Bool_t IsOnHeap() const
               virtual Bool_t IsSortable() const
                       Bool_t IsZombie() const
                 virtual void ls(Option_t* option = "") const
                         void MayNotUse(const char* method) const
               virtual Bool_t Notify()
                  static void operator delete(void* ptr)
                  static void operator delete(void* ptr, void* vp)
                  static void operator delete[](void* ptr)
                  static void operator delete[](void* ptr, void* vp)
                        void* operator new(size_t sz)
                        void* operator new(size_t sz, void* vp)
                        void* operator new[](size_t sz)
                        void* operator new[](size_t sz, void* vp)
                     TObject& operator=(const TObject& rhs)
                 virtual void Paint(Option_t* option = "")
                 virtual void Pop()
                 virtual void Print(Option_t* option = "") const
                virtual Int_t Read(const char* name)
                 virtual void RecursiveRemove(TObject* obj)
                         void ResetBit(UInt_t f)
                 virtual void SavePrimitive(ofstream& out, Option_t* option)
                         void SetBit(UInt_t f, Bool_t set)
                         void SetBit(UInt_t f)
                 virtual void SetDrawOption(Option_t* option = "")
                  static void SetDtorOnly(void* obj)
                  static void SetObjectStat(Bool_t stat)
                 virtual void SetUniqueID(UInt_t uid)
                 virtual void ShowMembers(TMemberInspector& insp, char* parent)
                 virtual void Streamer(TBuffer& b)
                         void StreamerNVirtual(TBuffer& b)
                 virtual void SysError(const char* method, const char* msgfmt) const
                       Bool_t TestBit(UInt_t f) const
                        Int_t TestBits(UInt_t f) const
                 virtual void UseCurrentStyle()
                 virtual void Warning(const char* method, const char* msgfmt) const
                virtual Int_t Write(const char* name = "0", Int_t option = 0, Int_t bufsize = 0)
                virtual Int_t Write(const char* name = "0", Int_t option = 0, Int_t bufsize = 0) const

### Data Members

        private:

                 UInt_t fUniqueID     object unique identifier
                 UInt_t fBits         bit field status word
          static Long_t fgDtorOnly    object for which to call dtor only (i.e. no delete)
          static Bool_t fgObjectStat  if true keep track of objects in TObjectTable

        public:

          static const TObject::EStatusBits kCanDelete
          static const TObject::EStatusBits kMustCleanup
          static const TObject::EStatusBits kObjInCanvas
          static const TObject::EStatusBits kIsReferenced
          static const TObject::EStatusBits kHasUUID
          static const TObject::EStatusBits kCannotPick
          static const TObject::EStatusBits kNoContextMenu
          static const TObject::EStatusBits kInvalidObject
                static const enum TObject:: kIsOnHeap
                static const enum TObject:: kNotDeleted
                static const enum TObject:: kZombie
                static const enum TObject:: kBitMask
                static const enum TObject:: kSingleKey
                static const enum TObject:: kOverwrite
                static const enum TObject:: kWriteDelete

## Class Description

     TObject

     Mother of all ROOT objects.

     The TObject class provides default behaviour and protocol for all
     objects in the ROOT system. It provides protocol for object I/O,
     error handling, sorting, inspection, printing, drawing, etc.
     Every object which inherits from TObject can be stored in the
     ROOT collection classes.

TObject() : fUniqueID(0), fBits(kNotDeleted)

     TObject constructor. It sets the two data words of TObject to their
     initial values. The unique ID is set to 0 and the status word is
     set depending if the object is created on the stack or allocated
     on the heap. Of the status word the high 8 bits are reserved for
     system usage and the low 24 bits are user settable. Depending on
     the ROOT environment variable "Root.MemStat" (see TEnv.h) the object
     is added to the global TObjectTable for bookkeeping.

TObject(const TObject &obj)

     TObject copy ctor.

void Copy(TObject &obj) const

     Copy this to obj.

~TObject()

     TObject destructor. Removes object from all canvases and object browsers
     if observer bit is on and remove from the global object table.

void AppendPad(Option_t *option)

     Append graphics object to current pad. In case no current pad is set
     yet, create a default canvas with the name "c1".

void Browse(TBrowser *b)

     Browse object. May be overridden for  other default action

const char* ClassName() const

     Returns name of class to which the object belongs.

TObject* Clone(const char *) const

     Make a clone of an object using the Streamer facility.
     If the object derives from TNamed, this function is called
     by TNamed::Clone. TNamed::Clone uses the optional argument to set
     a new name to the newly created object.

Int_t Compare(const TObject *) const

     Compare abstract method. Must be overridden if a class wants to be able
     to compare itself with other objects. Must return -1 if this is smaller
     than obj, 0 if objects are equal and 1 if this is larger than obj.

void Delete(Option_t *)

     Delete this object. Typically called as a command via the interpreter.
     Normally use "delete" operator when object has been allocated on the heap.

Int_t DistancetoPrimitive(Int_t, Int_t)

     Computes distance from point (px,py) to the object.
     This member function must be implemented for each graphics primitive.
     This default function returns a big number (999999).

void Draw(Option_t *option)

     Default Draw method for all objects

void DrawClass() const

     Draw class inheritance tree of the class to which this object belongs.
     If a class B inherits from a class A, description of B is drawn
     on the right side of description of A.
     Member functions overridden by B are shown in class A with a blue line
     crossing-out the corresponding member function.
     The following picture is the class inheritance tree of class TPaveLabel:

/* */

TObject* DrawClone(Option_t *option) const

     Draw a clone of this object in the current pad

void Dump() const

     Dump contents of object on stdout.
     Using the information in the object dictionary (class TClass)
     each data member is interpreted.
     If a data member is a pointer, the pointer value is printed

     The following output is the Dump of a TArrow object:
       fAngle                   0           Arrow opening angle (degrees)
       fArrowSize               0.2         Arrow Size
       fOption.*fData
       fX1                      0.1         X of 1st point
       fY1                      0.15        Y of 1st point
       fX2                      0.67        X of 2nd point
       fY2                      0.83        Y of 2nd point
       fUniqueID                0           object unique identifier
       fBits                    50331648    bit field status word
       fLineColor               1           line color
       fLineStyle               1           line style
       fLineWidth               1           line width
       fFillColor               19          fill area color
       fFillStyle               1001        fill area style

void Execute(const char *method, const char *params, Int_t *error)

     Execute method on this object with the given parameter string, e.g.
     "3.14,1,\"text\"".

void Execute(TMethod *method, TObjArray *params, Int_t *error)

     Execute method on this object with parameters stored in the TObjArray.
     The TObjArray should contain an argv vector like:

      argv[0] ... argv[n] = the list of TObjString parameters

void ExecuteEvent(Int_t, Int_t, Int_t)

     Execute action corresponding to an event at (px,py). This method
     must be overridden if an object can react to graphics events.

TObject* FindObject(const char *) const

     Must be redefined in derived classes.
     This function is typycally used with TCollections, but can also be used
     to find an object by name inside this object.

TObject* FindObject(const TObject *) const

     Must be redefined in derived classes.
     This function is typycally used with TCollections, but can also be used
     to find an object inside this object.

Option_t* GetDrawOption() const

     Get option used by the graphics system to draw this object.
     Note that before calling object.GetDrawOption(), you must
     have called object.Draw(..) before in the current pad.

const char* GetName() const

     Returns name of object. This default method returns the class name.
     Classes that give objects a name should override this method.

const char* GetIconName() const

     Returns mime type name of object. Used by the TBrowser (via TGMimeTypes
     class). Override for class of which you would like to have different
     icons for objects of the same class.

UInt_t GetUniqueID() const

     Return the unique object id.

char* GetObjectInfo(Int_t px, Int_t py) const

     Returns string containing info about the object at position (px,py).
     This method is typically overridden by classes of which the objects
     can report peculiarities for different positions.
     Returned string will be re-used (lock in MT environment).

const char* GetTitle() const

     Returns title of object. This default method returns the class title
     (i.e. description). Classes that give objects a title should override
     this method.

Bool_t HandleTimer(TTimer *)

     Execute action in response of a timer timing out. This method
     must be overridden if an object has to react to timers.

ULong_t Hash() const

     Return hash value for this object.

Bool_t InheritsFrom(const char *classname) const

     Returns kTRUE if object inherits from class "classname".

Bool_t InheritsFrom(const TClass *cl) const

     Returns kTRUE if object inherits from TClass cl.

void Inspect() const

     Dump contents of this object in a graphics canvas.
     Same action as Dump but in a graphical form.
     In addition pointers to other objects can be followed.

     The following picture is the Inspect of a histogram object:

/* */

Bool_t IsFolder() const

     Returns kTRUE in case object contains browsable objects (like containers
     or lists of other objects).

Bool_t IsEqual(const TObject *obj) const

     Default equal comparison (objects are equal if they have the same
     address in memory). More complicated classes might want to override
     this function.

void ls(Option_t *) const

     The ls function lists the contents of a class on stdout. Ls output
     is typically much less verbose then Dump().

Bool_t Notify()

     This method must be overridden to handle object notifcation.

void Paint(Option_t *)

     This method must be overridden if a class wants to paint itself.
     The difference between Paint() and Draw() is that when a object
     draws itself it is added to the display list of the pad in
     which it is drawn (and automatically redrawn whenever the pad is
     redrawn). While paint just draws the object without adding it to
     the pad display list.

void Pop()

     Pop on object drawn in a pad to the top of the display list. I.e. it
     will be drawn last and on top of all other primitives.

void Print(Option_t *) const

     This method must be overridden when a class wants to print itself.

Int_t Read(const char *name)

     Read contents of object with specified name from the current directory.
     First the key with the given name is searched in the current directory,
     next the key buffer is deserialized into the object.
     The object must have been created before via the default constructor.
     See TObject::Write().

void RecursiveRemove(TObject *)

     Recursively remove this object from a list. Typically implemented
     by classes that can contain mulitple references to a same object.

void SavePrimitive(ofstream &out, Option_t *)

     Save a primitive as a C++ statement(s) on output stream "out".

void SetDrawOption(Option_t *option)

     Set drawing option for object. This option only affects
     the drawing style and is stored in the option field of the
     TObjOptLink supporting a TPad's primitive list (TList).
     Note that it does not make sense to call object.SetDrawOption(option)
     before having called object.Draw().

void SetBit(UInt_t f, Bool_t set)

     Set or unset the user status bits as specified in f.

void SetUniqueID(UInt_t uid)

     Set the unique object id.

void UseCurrentStyle()

     Set current style settings in this object
     This function is called when either TCanvas::UseCurrentStyle
     or TROOT::ForceStyle have been invoked.

Int_t Write(const char *name, Int_t option, Int_t bufsize) const

     Write this object to the current directory.
     The data structure corresponding to this object is serialized.
     The corresponding buffer is written to the current directory
     with an associated key with name "name".

     Writing an object to a file involves the following steps:

      -Creation of a support TKey object in the current directory.
       The TKey object creates a TBuffer object.

      -The TBuffer object is filled via the class::Streamer function.

      -If the file is compressed (default) a second buffer is created to
       hold the compressed buffer.

      -Reservation of the corresponding space in the file by looking
       in the TFree list of free blocks of the file.

      -The buffer is written to the file.

      Bufsize can be given to force a given buffer size to write this object.
      By default, the buffersize will be taken from the average buffer size
      of all objects written to the current file so far.

      If a name is specified, it will be the name of the key.
      If name is not given, the name of the key will be the name as returned
      by GetName().

      The option can be a combination of:
        kSingleKey, kOverwrite or kWriteDelete
      Using the kOverwrite option a previous key with the same name is
      overwritten. The previous key is deleted before writing the new object.
      Using the kWriteDelete option a previous key with the same name is
      deleted only after the new object has been written. This option
      is safer than kOverwrite but it is slower.
      The kSingleKey option is only used by TCollection::Write() to write
      a container with a single key instead of each object in the container
      with its own key.

      An object is read from the file into memory via TKey::Read() or
      via TObject::Read().

      The function returns the total number of bytes written to the file.
      It returns 0 if the object cannot be written.

Int_t Write(const char *name, Int_t option, Int_t bufsize)

     Write this object to the current directory. For more see the
     const version of this method.

void Streamer(TBuffer &R__b)

     Stream an object of class TObject.

void DoError(int level, const char *location, const char *fmt, va_list va) const

     Interface to ErrorHandler (protected).

void Info(const char *location, const char *va_(fmt), ...) const

     Issue info message. Use "location" to specify the method where the
     warning occured. Accepts standard printf formatting arguments.

void Warning(const char *location, const char *va_(fmt), ...) const

     Issue warning message. Use "location" to specify the method where the
     warning occured. Accepts standard printf formatting arguments.

void Error(const char *location, const char *va_(fmt), ...) const

     Issue error message. Use "location" to specify the method where the
     error occured. Accepts standard printf formatting arguments.

void SysError(const char *location, const char *va_(fmt), ...) const

     Issue system error message. Use "location" to specify the method where
     the system error occured. Accepts standard printf formatting arguments.

void Fatal(const char *location, const char *va_(fmt), ...) const

     Issue fatal error message. Use "location" to specify the method where the
     fatal error occured. Accepts standard printf formatting arguments.

void AbstractMethod(const char *method) const

     Use this method to implement an "abstract" method that you don't
     want to leave purely abstract.

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 class (in principle against good
     design since a child class should not provide less functionality
     than its parent, however, sometimes it is necessary).

Bool_t GetObjectStat()

     Get status of object stat flag.

void SetObjectStat(Bool_t stat)

     Turn on/off tracking of objects in the TObjectTable.

Long_t GetDtorOnly()

void SetDtorOnly(void *obj)

### Inline Functions

                   void MakeZombie()
               TObject& operator=(const TObject& rhs)
                   void Clear(Option_t* = "")
              Option_t* GetOption() const
                 Bool_t IsSortable() const
                 Bool_t IsOnHeap() const
                 Bool_t IsZombie() const
                  void* operator new(size_t sz)
                  void* operator new[](size_t sz)
                  void* operator new(size_t sz, void* vp)
                  void* operator new[](size_t sz, void* vp)
                   void operator delete(void* ptr)
                   void operator delete[](void* ptr)
                   void operator delete(void* ptr, void* vp)
                   void operator delete[](void* ptr, void* vp)
                   void SetBit(UInt_t f)
                   void ResetBit(UInt_t f)
                 Bool_t TestBit(UInt_t f) const
                  Int_t TestBits(UInt_t f) const
                   void InvertBit(UInt_t f)
                TClass* Class()
                TClass* IsA() const
                   void ShowMembers(TMemberInspector& insp, char* parent)
                   void StreamerNVirtual(TBuffer& b)

Author: Rene Brun 26/12/94
Last update: root/base:$Name: $:$Id: TObject.cxx,v 1.71 2005/05/19 17:28:15 pcanal Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *