12 #ifndef ROOT_TVirtualQConnection
13 #define ROOT_TVirtualQConnection
23 class TVirtualQConnection :
public TList {
25 virtual CallFunc_t *GetSlotCallFunc()
const = 0;
26 virtual void SetArg(Long_t) = 0;
27 virtual void SetArg(ULong_t) = 0;
28 virtual void SetArg(Float_t) = 0;
29 virtual void SetArg(Double_t) = 0;
30 virtual void SetArg(Long64_t) = 0;
31 virtual void SetArg(ULong64_t) = 0;
34 virtual void SetArg(
const Long_t *, Int_t = -1) = 0;
35 virtual void SetArg(
const char *) = 0;
36 void SetArg(
const void *ptr) { SetArg((Long_t)ptr); };
39 template <class T, class = typename std::enable_if<std::is_integral<T>::value>::type>
40 void SetArg(
const T& val)
42 if (std::is_signed<T>::value)
50 template <class T, class = typename std::enable_if<std::is_array<T>::value>::type>
51 void SetArg(
const T* val)
53 constexpr
size_t size =
sizeof(val)/
sizeof(val[0]);
54 static_assert(size > 0,
"The array must have at least one element!");
55 SetArg((Long_t*)val, size);
59 template <
typename T,
typename... Ts>
void SetArgsImpl(
const T& arg,
const Ts&... tail)
65 virtual void SendSignal() = 0;
69 template <
typename... T>
void SetArgs(
const T&... args)
76 if (!
sizeof...(args))
return;
77 gInterpreter->CallFunc_ResetArg(GetSlotCallFunc());
84 void SetArgs(
const Long_t* argArray, Int_t nargs = -1)
86 SetArg(argArray, nargs);