46 R__EXTERN
void *gTQSender;
51 TList *fListOfSignals;
52 TList *fListOfConnections;
53 Bool_t fSignalsBlocked;
55 static Bool_t fgAllSignalsBlocked;
57 virtual void *GetSender() {
return this; }
58 virtual const char *GetSenderClassName()
const {
return ""; }
61 static Bool_t ConnectToClass(TQObject *sender,
63 TClass *receiver_class,
67 static Bool_t ConnectToClass(
const char *sender_class,
69 TClass *receiver_class,
73 static Int_t CheckConnectArgs(TQObject *sender,
74 TClass *sender_class,
const char *signal,
75 TClass *receiver_class,
const char *slot);
77 static TString CompressName(
const char *method_name);
80 TQObject(
const TQObject& tqo);
81 TQObject& operator=(
const TQObject& tqo);
87 TList *GetListOfClassSignals()
const;
88 TList *GetListOfSignals()
const {
return fListOfSignals; }
89 TList *GetListOfConnections()
const {
return fListOfConnections; }
91 Bool_t AreSignalsBlocked()
const {
return fSignalsBlocked; }
92 Bool_t BlockSignals(Bool_t b)
93 { Bool_t ret = fSignalsBlocked; fSignalsBlocked = b;
return ret; }
95 void CollectClassSignalLists(TList& list, TClass* cls);
100 template <
typename... T>
void EmitVA(
const char *signal_name, Int_t ,
const T&... params)
105 if (fSignalsBlocked || AreAllSignalsBlocked())
109 CollectClassSignalLists(classSigLists, IsA());
111 if (classSigLists.IsEmpty() && !fListOfSignals)
114 TString signal = CompressName(signal_name);
116 TVirtualQConnection *connection = 0;
120 TIter nextSigList(&classSigLists);
121 while ((sigList = (TList*) nextSigList())) {
122 TIter nextcl((TList*) sigList->FindObject(signal));
123 while ((connection = static_cast<TVirtualQConnection*>(nextcl()))) {
124 gTQSender = GetSender();
125 connection->SetArgs(params...);
126 connection->SendSignal();
133 TIter next((TList*) fListOfSignals->FindObject(signal));
134 while (fListOfSignals && (connection = static_cast<TVirtualQConnection*>(next()))) {
135 gTQSender = GetSender();
136 connection->SetArgs(params...);
137 connection->SendSignal();
164 template <
typename T>
void Emit(
const char *signal,
const T& arg) {
165 Int_t placeholder = 0;
166 EmitVA(signal, placeholder, arg);
173 void Emit(
const char *signal) { EmitVA(signal, (Int_t) 0); }
175 Bool_t Connect(
const char *signal,
176 const char *receiver_class,
180 Bool_t Disconnect(
const char *signal = 0,
182 const char *slot = 0);
184 virtual void HighPriority(
const char *signal_name,
185 const char *slot_name = 0);
187 virtual void LowPriority(
const char *signal_name,
188 const char *slot_name = 0);
190 virtual Bool_t HasConnection(
const char *signal_name)
const;
191 virtual Int_t NumberOfSignals()
const;
192 virtual Int_t NumberOfConnections()
const;
193 virtual void Connected(
const char * ) { }
194 virtual void Disconnected(
const char * ) { }
196 virtual void Destroyed()
197 { Emit(
"Destroyed()"); }
198 virtual void ChangedBy(
const char *method)
199 { Emit(
"ChangedBy(char*)", method); }
200 virtual void Message(
const char *msg)
201 { Emit(
"Message(char*)", msg); }
203 static Bool_t Connect(TQObject *sender,
205 const char *receiver_class,
209 static Bool_t Connect(
const char *sender_class,
211 const char *receiver_class,
215 static Bool_t Disconnect(TQObject *sender,
216 const char *signal = 0,
218 const char *slot = 0);
220 static Bool_t Disconnect(
const char *class_name,
223 const char *slot = 0);
225 static Bool_t AreAllSignalsBlocked();
226 static Bool_t BlockAllSignals(Bool_t b);
232 class TQObjSender :
public TQObject {
236 TString fSenderClass;
238 virtual void *GetSender() {
return fSender; }
239 virtual const char *GetSenderClassName()
const {
return fSenderClass; }
242 TQObjSender(
const TQObjSender&);
243 TQObjSender& operator=(
const TQObjSender&);
246 TQObjSender() : TQObject(), fSender(0), fSenderClass() { }
247 virtual ~TQObjSender() { Disconnect(); }
249 virtual void SetSender(
void *sender) { fSender = sender; }
250 void SetSenderClassName(
const char *sclass =
"") { fSenderClass = sclass; }
252 ClassDef(TQObjSender,0)
263 extern Bool_t ConnectCINT(TQObject *sender,
const char *signal,
282 #define ClassImpQ(name) \