29 #if !defined(WIN32) && !defined(__MWERKS__) && !defined(R__SOLARIS)
62 obj.fUniqueID = fUniqueID;
65 obj.fBits |= kIsOnHeap;
68 obj.fBits &= ~kIsOnHeap;
86 if (root ==
this)
return;
115 gROOT->MakeDefCanvas();
117 if (!
gPad->IsEditable())
return;
119 gPad->GetListOfPrimitives()->Add(
this,option);
137 return IsA()->GetName();
156 Fatal(
"Clone",
"No gDirectory set");
233 if (!newobj)
return 0;
239 if (padsav) padsav->
cd();
242 if (strlen(option)) newobj->
Draw(option);
244 if (padsav) padsav->
cd();
290 gInterpreter->Execute(
this, IsA(), method, params, error);
292 if (
gPad && must_cleanup)
gPad->Modified();
308 gInterpreter->Execute(
this, IsA(), method, params, error);
310 if (
gPad && must_cleanup)
gPad->Modified();
350 if (!
gPad)
return "";
354 while ((obj = next())) {
355 if (obj ==
this)
return next.
GetOption();
366 return IsA()->GetName();
395 if (!
gPad)
return (
char*)
"";
396 static char info[64];
410 return IsA()->GetTitle();
429 const void *ptr =
this;
438 return IsA()->InheritsFrom(classname);
446 return IsA()->InheritsFrom(cl);
488 std::cout <<
"OBJ: " << IsA()->GetName() <<
"\t" <<
GetName() <<
"\t" <<
GetTitle() <<
" : ";
490 if (option && strstr(option,
"noaddr")==0) {
491 std::cout <<
" at: "<< this ;
493 std::cout << std::endl;
525 if (
this ==
gPad->GetListOfPrimitives()->Last())
return;
529 while ((obj = next()))
531 char *opt =
StrDup(next.GetOption());
532 gPad->GetListOfPrimitives()->Remove((
TObject*)
this);
533 gPad->GetListOfPrimitives()->AddLast(
this, opt);
545 std::cout <<
"OBJ: " << IsA()->GetName() <<
"\t" <<
GetName() <<
"\t" <<
GetTitle() << std::endl;
595 if (filename && strstr(filename,
".root")) {
601 if (filename && strstr(filename,
".xml")) {
607 if (filename && strstr(filename,
".json")) {
613 if (filename && strstr(filename,
".cc")) {
615 if (filename && strlen(filename) > 0) {
616 fname = (
char*)filename;
621 out.open(fname, std::ios::out);
623 Error(
"SaveAs",
"cannot open file: %s", fname);
626 ((
TObject*)
this)->SavePrimitive(out,
"cc");
628 Info(
"SaveAs",
"cc file: %s has been generated", fname);
634 if (filename && strlen(filename) > 0) {
635 fname = (
char*)filename;
640 out.open(fname, std::ios::out);
642 Error(
"SaveAs",
"cannot open file: %s", fname);
645 out <<
"{"<<std::endl;
646 out <<
"//========= Macro generated from object: "<<
GetName()<<
"/"<<
GetTitle()<<std::endl;
647 out <<
"//========= by ROOT version"<<
gROOT->GetVersion()<<std::endl;
648 ((
TObject*)
this)->SavePrimitive(out,option);
649 out <<
"}"<<std::endl;
651 Info(
"SaveAs",
"C++ Macro file: %s has been generated", fname);
660 <<
". You must implement " <<
ClassName() <<
"::SavePrimitive" << std::endl;
672 if (!
gPad || !option)
return;
675 delete gPad->FindObject(
"Tframe");
677 while ((obj = next()))
679 next.SetOption(option);
766 const char *objname =
"no name specified";
767 if (name) objname =
name;
769 Error(
"Write",
"The current directory (gDirectory) is null. The object (%s) has not been written.",objname);
780 return ((
const TObject*)
this)->Write(name, option, bufsize);
786 void TObject::Streamer(
TBuffer &R__b)
788 if (IsA()->CanIgnoreTObjectStreamer())
return;
804 fUniqueID = fUniqueID | 0xff000000;
806 fUniqueID = ( fUniqueID & 0xffffff) + (gpid<<24);
818 UInt_t uid = fUniqueID & 0xffffff;
824 if(table) table->
Add(uid, pid);
836 const char *classname =
"UnknownClass";
850 va_start(ap,
va_(fmt));
862 va_start(ap,
va_(fmt));
866 gROOT->Message(1001,
this);
876 va_start(ap,
va_(fmt));
880 gROOT->Message(1002,
this);
890 va_start(ap,
va_(fmt));
894 gROOT->Message(1003,
this);
904 va_start(ap,
va_(fmt));
908 gROOT->Message(1004,
this);
917 Warning(method,
"this method must be overridden!");
928 Warning(method,
"may not use this method");
935 void TObject::Obsolete(
const char *method,
const char *asOfVers,
const char *removedFromVers)
const
937 const char *classname =
"UnknownClass";
941 ::Obsolete(
Form(
"%s::%s", classname, method), asOfVers, removedFromVers);
978 void TObject::operator
delete(
void *ptr)
980 if ((
Long_t) ptr != fgDtorOnly)
989 void TObject::operator
delete[](
void *ptr)
991 if ((
Long_t) ptr != fgDtorOnly)
997 #ifdef R__SIZEDDELETE
1001 void TObject::operator
delete(
void *ptr,
size_t size)
1003 if ((
Long_t) ptr != fgDtorOnly)
1012 void TObject::operator
delete[](
void *ptr,
size_t size)
1014 if ((
Long_t) ptr != fgDtorOnly)
1025 std::ostringstream strm;
1030 #ifdef R__PLACEMENTDELETE
1034 void TObject::operator
delete(
void *ptr,
void *vp)
1042 void TObject::operator
delete[](
void *ptr,
void *vp)
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
object has not been deleted
UInt_t fUniqueID
object unique identifier
void PutObjectWithID(TObject *obj, UInt_t uid=0)
stores the object at the uid th slot in the table of objects The object uniqued is set as well as its...
ROOT top level object description.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Computes distance from point (px,py) to the object.
virtual ULong_t Hash() const
Return hash value for this object.
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...
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
static void SetDtorOnly(void *obj)
Set destructor only flag.
Buffer base class used for serializing objects.
static void SetObjectStat(Bool_t stat)
Turn on/off tracking of objects in the TObjectTable.
void RemoveQuietly(TObject *obj)
Remove an object from the object table.
virtual void Browse(TBrowser *b)
Browse object. May be overridden for another default action.
virtual Int_t Add(Int_t uid, TProcessID *context=0)
Add a new uid to the table.
virtual Bool_t IsFolder() const
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects)...
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save this object in the file specified by filename.
virtual TObject * DrawClone(Option_t *option="") const
Draw a clone of this object in the current selected pad for instance with: gROOT->SetSelectedPad(gPad...
virtual void UseCurrentStyle()
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyl...
virtual UShort_t GetPidOffset() const =0
virtual UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE)=0
virtual Bool_t IsEqual(const TObject *obj) const
Default equal comparison (objects are equal if they have the same address in memory).
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
static Long_t GetDtorOnly()
Return destructor only flag.
overwrite existing object with same name
if object in a list can be deleted
virtual void RecursiveRemove(TObject *obj)
Recursively remove this object from a list.
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
const char * Data() const
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
static Long_t fgDtorOnly
object for which to call dtor only (i.e. no delete)
virtual void ls(Option_t *option="") const
The ls function lists the contents of a class on stdout.
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
virtual TProcessID * ReadProcessID(UShort_t pidf)=0
Return the current Process-ID.
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
virtual Bool_t Notify()
This method must be overridden to handle object notification.
static Bool_t Initialized()
Return kTRUE if the TROOT object has been initialized.
virtual Bool_t HandleTimer(TTimer *timer)
Execute action in response of a timer timing out.
virtual void Inspect() const
Dump contents of this object in a graphics canvas.
virtual void Pop()
Pop on object drawn in a pad to the top of the display list.
virtual Option_t * GetOption() const
virtual Int_t Read(const char *name)
Read contents of object with specified name from the current directory.
virtual const char * GetIconName() const
Returns mime type name of object.
A TProcessID identifies a ROOT job in a unique way in time and space.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
TVirtualPad is an abstract base class for the Pad and Canvas classes.
R__EXTERN TGuiFactory * gGuiFactory
TSeqCollection * GetListOfCleanups() const
virtual UShort_t WriteProcessID(TProcessID *pid)=0
Always return 0 (current processID).
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
R__EXTERN TROOT * gROOTLocal
virtual void Delete(Option_t *option="")
Delete this object.
Using a TBrowser one can browse all ROOT objects.
virtual void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
std::string printValue(const TDatime *val)
Print a TDatime at the prompt.
static TProcessID * GetProcessWithUID(const TObject *obj)
static function returning a pointer to TProcessID with its pid encoded in the highest byte of obj->Ge...
virtual void DrawClass() const
Draw class inheritance tree of the class to which this object belongs.
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.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Bool_t TestBit(UInt_t f) const
virtual void DoError(int level, const char *location, const char *fmt, va_list va) const
Interface to ErrorHandler (protected).
char * Form(const char *fmt,...)
void AbstractMethod(const char *method) const
Use this method to implement an "abstract" method that you don't want to leave purely abstract...
Handles synchronous and a-synchronous timer events.
virtual TInspectorImp * CreateInspectorImp(const TObject *obj, UInt_t width, UInt_t height)
Create a batch version of TInspectorImp.
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
The ROOT global object gROOT contains a list of all defined classes.
virtual TList * GetListOfPrimitives() const =0
write collection with single key
static Bool_t GetObjectStat()
Get status of object stat flag.
if object destructor must call RecursiveRemove()
static void AddObj(TObject *obj)
Add an object to the global object table gObjectTable.
R__EXTERN TObjectTable * gObjectTable
char * StrDup(const char *str)
Duplicate the string str.
UInt_t fBits
bit field status word
virtual void Modified(Bool_t flag=1)=0
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
void Obsolete(const char *method, const char *asOfVers, const char *removedFromVers) const
Use this method to declare a method obsolete.
virtual void SysError(const char *method, const char *msgfmt,...) const
Issue system error message.
static Bool_t fgObjectStat
if true keep track of objects in TObjectTable
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Returns string containing info about the object at position (px,py).
void Copy(void *source, void *dest)
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to an event at (px,py).
virtual const char * GetName() const
Returns name of object.
static TRefTable * GetRefTable()
Static function returning the current TRefTable.
virtual ~TObject()
TObject destructor.
A TRefTable maintains the association between a referenced object and the parent object supporting th...
virtual UInt_t GetUniqueID() const
Return the unique object id.
Mother of all ROOT objects.
typedef void((*Func_t)())
void ErrorHandler(int level, const char *location, const char *fmt, va_list va)
General error handler function. It calls the user set error handler.
virtual void Add(TObject *obj)
Each ROOT class (see TClass) has a linked list of methods.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
if object is referenced by a TRef or TRefArray
virtual Int_t Compare(const TObject *obj) const
Compare abstract method.
virtual void SetDrawOption(Option_t *option="")
Set drawing option for object.
virtual const char * GetTitle() const
Returns title of object.
write object, then delete previous key with same name
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
static void ObjectDealloc(void *vp)
Used to deallocate a TObject on the heap (via TObject::operator delete()).
static Int_t AutoBrowse(TObject *obj, TBrowser *browser)
Browse external object inherited from TObject.
virtual void SkipVersion(const TClass *cl=0)=0
virtual void Dump() const
Dump contents of object on stdout.
static void AddToTObjectTable(TObject *)
Private helper function which will dispatch to TObjectTable::AddObj.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
UInt_t Hash(ECaseCompare cmp=kExact) const
Return hash value.