12#ifndef ROOT_TVirtualQConnection
13#define ROOT_TVirtualQConnection
35 virtual void SetArg(
const char *) = 0;
39 template <class T, class = typename std::enable_if<std::is_integral<T>::value>
::type>
42 if (std::is_signed<T>::value)
50 template <class T, class = typename std::enable_if<std::is_array<T>::value>
::type>
53 constexpr size_t size =
sizeof(val)/
sizeof(val[0]);
54 static_assert(size > 0,
"The array must have at least one element!");
59 template <
typename T,
typename... Ts>
void SetArgsImpl(
const T& arg,
const Ts&... tail)
69 template <
typename...
T>
void SetArgs(
const T&... args)
76 if (!
sizeof...(args))
return;
unsigned long long ULong64_t
Mediates the link between the signal and the slot.
virtual void SetArg(const char *)=0
virtual void SetArg(Float_t)=0
virtual void SetArg(Long_t)=0
virtual void SetArg(const Long_t *, Int_t=-1)=0
void SetArg(const T &val)
void SetArg(const void *ptr)
virtual CallFunc_t * GetSlotCallFunc() const =0
void SetArgs(const T &... args)
Unpacks the template parameter type and sets arguments of integral and array (scalar) type.
virtual void SetArg(ULong64_t)=0
virtual void SendSignal()=0
virtual void SetArg(Long64_t)=0
virtual void SetArg(ULong_t)=0
void SetArgs(const Long_t *argArray, Int_t nargs=-1)
Sets an array of arguments passed as a pointer type and size.
void SetArgsImpl(const T &arg, const Ts &... tail)
void SetArg(const T *val)
virtual void SetArg(Double_t)=0