12 #ifndef ROOT_TQConnection
13 #define ROOT_TQConnection
37 class TQConnection :
public TVirtualQConnection,
public TQObject {
43 virtual void PrintCollectionHeader(Option_t* option)
const override;
45 Bool_t CheckSlot(Int_t nargs)
const;
46 void *GetSlotAddress()
const;
47 CallFunc_t *LockSlot()
const;
48 void UnLockSlot(TQSlot *)
const;
49 virtual CallFunc_t *GetSlotCallFunc()
const override;
51 TQConnection &operator=(
const TQConnection &) =
delete;
53 virtual void SetArg(Long_t param)
override { SetArgImpl(param); }
54 virtual void SetArg(ULong_t param)
override { SetArgImpl(param); }
55 virtual void SetArg(Float_t param)
override { SetArgImpl(param); }
56 virtual void SetArg(Double_t param)
override { SetArgImpl(param); }
57 virtual void SetArg(Long64_t param)
override { SetArgImpl(param); }
58 virtual void SetArg(ULong64_t param)
override { SetArgImpl(param); }
59 virtual void SetArg(
const char * param)
override { SetArgImpl(param); }
61 virtual void SetArg(
const Long_t *params, Int_t nparam = -1)
override;
63 template <
typename T>
void SetArgImpl(T arg)
65 CallFunc_t *func = GetSlotCallFunc();
66 gInterpreter->CallFunc_SetArg(func, arg);
69 virtual void SendSignal()
override
71 CallFunc_t *func = LockSlot();
73 void *address = GetSlotAddress();
76 gInterpreter->CallFunc_Exec(func, address);
83 TQConnection(TClass* cl,
void *receiver,
const char *method_name);
84 TQConnection(
const char *class_name,
void *receiver,
85 const char *method_name);
86 TQConnection(
const TQConnection &con);
87 virtual ~TQConnection();
89 const char *GetName()
const override;
90 void *GetReceiver()
const {
return fReceiver; }
91 const char *GetClassName()
const {
return fClassName; }
92 void Destroyed()
override;
94 void ExecuteMethod(Int_t nargs, va_list va) =
delete;
95 template <
typename... T>
inline void ExecuteMethod(
const T&... params)
97 if (!CheckSlot(
sizeof...(params)))
return;
102 template <
typename... T>
inline void ExecuteMethod(Int_t ,
const T&... params)
104 ExecuteMethod(params...);
109 void ExecuteMethod();
110 void ExecuteMethod(Long_t param);
111 void ExecuteMethod(Long64_t param);
112 void ExecuteMethod(Double_t param);
113 void ExecuteMethod(Long_t *params, Int_t nparam = -1);
114 void ExecuteMethod(
const char *params);
115 void ls(Option_t *option=
"")
const override;
117 ClassDefOverride(TQConnection,0)
120 R__EXTERN
char *gTQSlotParams;