/usr/include/root/TObject.h is in libroot-core-dev 5.34.19+dfsg-1.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | // @(#)root/base:$Id$
// Author: Rene Brun 26/12/94
/*************************************************************************
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#ifndef ROOT_TObject
#define ROOT_TObject
//////////////////////////////////////////////////////////////////////////
// //
// 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. //
// //
//////////////////////////////////////////////////////////////////////////
#ifndef ROOT_Rtypes
#include "Rtypes.h"
#endif
#ifndef ROOT_TStorage
#include "TStorage.h"
#endif
#ifndef ROOT_TVersionCheck
#include "TVersionCheck.h"
#endif
#ifndef ROOT_Riosfwd
#include "Riosfwd.h"
#endif
#include <stdarg.h>
#ifdef WIN32
#undef RemoveDirectory
#endif
class TList;
class TBrowser;
class TBuffer;
class TObjArray;
class TMethod;
class TTimer;
class TObject {
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
protected:
void MakeZombie() { fBits |= kZombie; }
virtual void DoError(int level, const char *location, const char *fmt, va_list va) const;
public:
//----- Global bits (can be set for any object and should not be reused).
//----- Bits 0 - 13 are reserved as global bits. Bits 14 - 23 can be used
//----- in different class hierarchies (make sure there is no overlap in
//----- any given hierarchy).
enum EStatusBits {
kCanDelete = BIT(0), // if object in a list can be deleted
kMustCleanup = BIT(3), // if object destructor must call RecursiveRemove()
kObjInCanvas = BIT(3), // for backward compatibility only, use kMustCleanup
kIsReferenced = BIT(4), // if object is referenced by a TRef or TRefArray
kHasUUID = BIT(5), // if object has a TUUID (its fUniqueID=UUIDNumber)
kCannotPick = BIT(6), // if object in a pad cannot be picked
kNoContextMenu = BIT(8), // if object does not want context menu
kInvalidObject = BIT(13) // if object ctor succeeded but object should not be used
};
//----- Private bits, clients can only test but not change them
enum {
kIsOnHeap = 0x01000000, // object is on heap
kNotDeleted = 0x02000000, // object has not been deleted
kZombie = 0x04000000, // object ctor failed
kBitMask = 0x00ffffff
};
//----- Write() options
enum {
kSingleKey = BIT(0), // write collection with single key
kOverwrite = BIT(1), // overwrite existing object with same name
kWriteDelete = BIT(2) // write object, then delete previous key with same name
};
TObject();
TObject(const TObject &object);
TObject &operator=(const TObject &rhs);
virtual ~TObject();
virtual void AppendPad(Option_t *option="");
virtual void Browse(TBrowser *b);
virtual const char *ClassName() const;
virtual void Clear(Option_t * /*option*/ ="") { }
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=""); // *MENU*
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
virtual void Draw(Option_t *option="");
virtual void DrawClass() const; // *MENU*
virtual TObject *DrawClone(Option_t *option="") const; // *MENU*
virtual void Dump() const; // *MENU*
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 TObject *FindObject(const char *name) const;
virtual TObject *FindObject(const TObject *obj) const;
virtual Option_t *GetDrawOption() const;
virtual UInt_t GetUniqueID() const;
virtual const char *GetName() const;
virtual const char *GetIconName() const;
virtual Option_t *GetOption() const { return ""; }
virtual char *GetObjectInfo(Int_t px, Int_t py) const;
virtual const char *GetTitle() const;
virtual Bool_t HandleTimer(TTimer *timer);
virtual ULong_t Hash() const;
virtual Bool_t InheritsFrom(const char *classname) const;
virtual Bool_t InheritsFrom(const TClass *cl) const;
virtual void Inspect() const; // *MENU*
virtual Bool_t IsFolder() const;
virtual Bool_t IsEqual(const TObject *obj) const;
virtual Bool_t IsSortable() const { return kFALSE; }
Bool_t IsOnHeap() const { return TestBit(kIsOnHeap); }
Bool_t IsZombie() const { return TestBit(kZombie); }
virtual Bool_t Notify();
virtual void ls(Option_t *option="") const;
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);
virtual void SaveAs(const char *filename="",Option_t *option="") const; // *MENU*
virtual void SavePrimitive(ostream &out, Option_t *option = "");
virtual void SetDrawOption(Option_t *option=""); // *MENU*
virtual void SetUniqueID(UInt_t uid);
virtual void UseCurrentStyle();
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;
//----- operators
void *operator new(size_t sz) { return TStorage::ObjectAlloc(sz); }
void *operator new[](size_t sz) { return TStorage::ObjectAlloc(sz); }
void *operator new(size_t sz, void *vp) { return TStorage::ObjectAlloc(sz, vp); }
void *operator new[](size_t sz, void *vp) { return TStorage::ObjectAlloc(sz, vp); }
void operator delete(void *ptr);
void operator delete[](void *ptr);
#ifdef R__PLACEMENTDELETE
void operator delete(void *ptr, void *vp);
void operator delete[](void *ptr, void *vp);
#endif
//----- bit manipulation
void SetBit(UInt_t f, Bool_t set);
void SetBit(UInt_t f) { fBits |= f & kBitMask; }
void ResetBit(UInt_t f) { fBits &= ~(f & kBitMask); }
Bool_t TestBit(UInt_t f) const { return (Bool_t) ((fBits & f) != 0); }
Int_t TestBits(UInt_t f) const { return (Int_t) (fBits & f); }
void InvertBit(UInt_t f) { fBits ^= f & kBitMask; }
//---- error handling
virtual void Info(const char *method, const char *msgfmt, ...) const
#if defined(__GNUC__) && !defined(__CINT__)
__attribute__((format(printf, 3, 4))) /* 1 is the this pointer */
#endif
;
virtual void Warning(const char *method, const char *msgfmt, ...) const
#if defined(__GNUC__) && !defined(__CINT__)
__attribute__((format(printf, 3, 4))) /* 1 is the this pointer */
#endif
;
virtual void Error(const char *method, const char *msgfmt, ...) const
#if defined(__GNUC__) && !defined(__CINT__)
__attribute__((format(printf, 3, 4))) /* 1 is the this pointer */
#endif
;
virtual void SysError(const char *method, const char *msgfmt, ...) const
#if defined(__GNUC__) && !defined(__CINT__)
__attribute__((format(printf, 3, 4))) /* 1 is the this pointer */
#endif
;
virtual void Fatal(const char *method, const char *msgfmt, ...) const
#if defined(__GNUC__) && !defined(__CINT__)
__attribute__((format(printf, 3, 4))) /* 1 is the this pointer */
#endif
;
void AbstractMethod(const char *method) const;
void MayNotUse(const char *method) const;
void Obsolete(const char *method, const char *asOfVers, const char *removedFromVers) const;
//---- static functions
static Long_t GetDtorOnly();
static void SetDtorOnly(void *obj);
static Bool_t GetObjectStat();
static void SetObjectStat(Bool_t stat);
friend class TClonesArray; // needs to reset kNotDeleted in fBits
ClassDef(TObject,1) //Basic ROOT object
};
// Global bits (can be set for any object and should not be reused).
// Only here for backward compatibility reasons.
// For detailed description see TObject::EStatusBits above.
enum EObjBits {
kCanDelete = TObject::kCanDelete,
kMustCleanup = TObject::kMustCleanup,
kObjInCanvas = TObject::kObjInCanvas,
kIsReferenced = TObject::kIsReferenced,
kHasUUID = TObject::kHasUUID,
kCannotPick = TObject::kCannotPick,
kNoContextMenu = TObject::kNoContextMenu,
kInvalidObject = TObject::kInvalidObject
};
#ifndef ROOT_TBuffer
#include "TBuffer.h"
#endif
#endif
|