55 TQSlot(
TClass *cl,
const char *method,
const char *funcname);
56 TQSlot(
const char *class_name,
const char *funcname);
61 CallFunc_t *StartExecuting();
62 CallFunc_t *
GetFunc()
const {
return fFunc; }
72 void ExecuteMethod(
void *
object);
73 void ExecuteMethod(
void *
object,
Long_t param);
74 void ExecuteMethod(
void *
object,
Long64_t param);
75 void ExecuteMethod(
void *
object,
Double_t param);
76 void ExecuteMethod(
void *
object,
const char *params);
77 void ExecuteMethod(
void *
object,
Longptr_t *paramArr,
Int_t nparam = -1);
78 void Print(
Option_t *opt =
"")
const;
84 return fExecuting > 0;
115 auto len = strlen(method_name) + 1;
116 char *method =
new char[len];
118 strlcpy(method, method_name, len);
122 char *params =
nullptr;
126 if ((
proto = strchr(method,
'('))) {
132 if ((tmp = strrchr(
proto,
')'))) * tmp =
'\0';
133 if ((params = strchr(
proto,
'='))) * params =
' ';
188 auto len = strlen(funcname) + 1;
189 char *method =
new char[len];
191 strlcpy(method, funcname, len);
195 char *params =
nullptr;
199 if ((
proto = strchr(method,
'('))) {
201 if ((tmp = strrchr(
proto,
')'))) * tmp =
'\0';
202 if ((params = strchr(
proto,
'='))) * params =
' ';
263 Error(
"ExecuteMethod",
"method %s not found,"
264 "\n(note: interpreted methods are not supported with varargs)",
271 Error(
"ExecuteMethod",
"nargs (%d) not consistent with expected number of arguments ([%d-%d])",
346 void *address =
nullptr;
362 std::cout << IsA()->GetName() <<
"\t" <<
GetName() <<
"\t"
363 <<
"Number of Connections = " <<
References() << std::endl;
379 TQSlot *
New(
const char *class_name,
const char *funcname);
396 slot =
new TQSlot(class_name, funcname);
422 slot =
new TQSlot(cl, method, func);
463 const char *funcname =
nullptr;
467 Error(
"SetFCN",
"Not used anymore.");
514 while ((list = (
TList *)next())) {
516 if (list->
IsEmpty())
delete list;
547 std::cout <<
"\t" << IsA()->GetName() <<
"\t" <<
GetName() << std::endl;
558 std::cout << IsA()->GetName() <<
"\t" <<
fReceiver <<
"\t" <<
GetName() << std::endl;
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
R__EXTERN TVirtualMutex * gInterpreterMutex
R__EXTERN TInterpreter * gCling
static TQSlotPool gSlotPool
#define R__LOCKGUARD(mutex)
TClass instances represent classes, structs and namespaces in the ROOT type system.
TMethod * GetMethod(const char *method, const char *params, Bool_t objectIsConst=kFALSE)
Find the best method (if there is one) matching the parameters.
TMethod * GetMethodWithPrototype(const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
Find the method with a given prototype.
ClassInfo_t * GetClassInfo() const
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
virtual Bool_t IsEmpty() const
Global functions class (global functions are obtained from CINT).
Int_t GetNargsOpt() const
Number of function optional (default) arguments.
Int_t GetNargs() const
Number of function arguments.
THashTable implements a hash table to store TObject's.
TObject * Remove(TObject *obj)
Remove object from the hashtable.
void Add(TObject *obj)
Add object to the hash table.
TObject * FindObject(const char *name) const
Find object using its name.
void Clear(Option_t *option="")
Remove all objects from the table.
virtual void CallFunc_IgnoreExtraArgs(CallFunc_t *, bool) const
virtual void ClassInfo_Delete(ClassInfo_t *) const
virtual void CallFunc_SetFuncProto(CallFunc_t *, ClassInfo_t *, const char *, const char *, Longptr_t *, ROOT::EFunctionMatchMode=ROOT::kConversionMatch) const
virtual void CallFunc_Exec(CallFunc_t *, void *) const
virtual CallFunc_t * CallFunc_Factory() const
virtual ClassInfo_t * ClassInfo_Factory(Bool_t=kTRUE) const =0
virtual void CallFunc_SetFunc(CallFunc_t *, ClassInfo_t *, const char *, const char *, bool, Longptr_t *) const
virtual void CallFunc_SetArgArray(CallFunc_t *, Longptr_t *, Int_t) const
virtual void ClassInfo_Init(ClassInfo_t *, const char *) const
virtual void CallFunc_Delete(CallFunc_t *) const
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void Clear(Option_t *option="")
Remove all objects from the list.
virtual const char * GetName() const
Returns name of object.
Mother of all ROOT objects.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
TQConnection class is an internal class, used in the object communication mechanism.
void * GetSlotAddress() const
Return the object address to be passed to the function.
virtual CallFunc_t * GetSlotCallFunc() const override
void ExecuteMethod()
Apply slot-method to the fReceiver object without arguments.
void UnLockSlot(TQSlot *) const
Unlock the interpreter and mark the slot as no longer executing.
virtual void PrintCollectionHeader(Option_t *option) const override
Print TQConnection full method name and print all signals connected to this connection.
CallFunc_t * LockSlot() const
Lock the interpreter and mark the slot as executing.
void Destroyed() override
Signal Destroyed tells that connection is destroyed.
virtual void SetArg(Long_t param) override
Bool_t CheckSlot(Int_t nargs) const
Return true if the underlying method is value and the number of argument is compatible.
const char * GetName() const override
Returns name of connection (aka name of slot)
virtual ~TQConnection()
TQConnection dtor.
void ls(Option_t *option="") const override
List TQConnection full method name and list all signals connected to this connection.
This is the ROOT implementation of the Qt object communication mechanism (see also http://www....
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
TQSlot * New(const char *class_name, const char *funcname)
Create new slot or return already existing one.
void Free(TQSlot *slot)
Delete slot if there is no reference to it.
Slightly modified TMethodCall class used in the object communication mechanism.
TQSlot(TClass *cl, const char *method, const char *funcname)
Create the method invocation environment.
Longptr_t GetOffset() const
void EndExecuting()
Mark the slot as no longer executing and cleanup if need be.
void Print(Option_t *opt="") const
Print info about slot.
Bool_t IsExecuting() const
const char * GetName() const
Returns name of object.
CallFunc_t * StartExecuting()
Mark the slot as executing.
virtual ~TQSlot()
TQSlot dtor.
CallFunc_t * GetFunc() const
void ls(Option_t *opt="") const
The ls function lists the contents of a class on stdout.
void ExecuteMethod(void *object, Int_t nargs, va_list ap)=delete
Bool_t CheckSlot(Int_t nargs) const
Return true if the method is valid and the number of arguments is acceptable.
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
Definitions for TRefCnt, base class for reference counted objects.
UInt_t References() const
const char * Data() const
R__ALWAYS_INLINE bool HasBeenDeleted(const TObject *obj)
Check if the TObject's memory has been deleted.