00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TQObject
00013 #define ROOT_TQObject
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #ifndef ROOT_TString
00041 #include "TString.h"
00042 #endif
00043
00044 class TList;
00045 class TObject;
00046 class TQConnection;
00047 class TClass;
00048
00049 class TQObject {
00050
00051 friend class TQConnection;
00052
00053 protected:
00054 TList *fListOfSignals;
00055 TList *fListOfConnections;
00056 Bool_t fSignalsBlocked;
00057
00058 static Bool_t fgAllSignalsBlocked;
00059
00060 virtual void *GetSender() { return this; }
00061 virtual const char *GetSenderClassName() const { return ""; }
00062
00063 static Bool_t ConnectToClass(TQObject *sender,
00064 const char *signal,
00065 TClass *receiver_class,
00066 void *receiver,
00067 const char *slot);
00068
00069 static Bool_t ConnectToClass(const char *sender_class,
00070 const char *signal,
00071 TClass *receiver_class,
00072 void *receiver,
00073 const char *slot);
00074
00075 static Int_t CheckConnectArgs(TQObject *sender,
00076 TClass *sender_class, const char *signal,
00077 TClass *receiver_class, const char *slot);
00078
00079 private:
00080 TQObject(const TQObject& tqo);
00081 TQObject& operator=(const TQObject& tqo);
00082
00083 public:
00084 TQObject();
00085 virtual ~TQObject();
00086
00087 TList *GetListOfClassSignals() const;
00088 TList *GetListOfSignals() const { return fListOfSignals; }
00089 TList *GetListOfConnections() const { return fListOfConnections; }
00090
00091 Bool_t AreSignalsBlocked() const { return fSignalsBlocked; }
00092 Bool_t BlockSignals(Bool_t b)
00093 { Bool_t ret = fSignalsBlocked; fSignalsBlocked = b; return ret; }
00094
00095 void CollectClassSignalLists(TList& list, TClass* cls);
00096
00097 void EmitVA(const char *signal, Int_t nargs, ...);
00098 void EmitVA(const char *signal, Int_t nargs, va_list va);
00099 void Emit(const char *signal);
00100 void Emit(const char *signal, Long_t *paramArr);
00101 void Emit(const char *signal, const char *params);
00102 void Emit(const char *signal, Double_t param);
00103 void Emit(const char *signal, Long_t param);
00104 void Emit(const char *signal, Long64_t param);
00105 void Emit(const char *signal, Bool_t param)
00106 { Emit(signal, (Long_t)param); }
00107 void Emit(const char *signal, Char_t param)
00108 { Emit(signal, (Long_t)param); }
00109 void Emit(const char *signal, UChar_t param)
00110 { Emit(signal, (Long_t)param); }
00111 void Emit(const char *signal, Short_t param)
00112 { Emit(signal, (Long_t)param); }
00113 void Emit(const char *signal, UShort_t param)
00114 { Emit(signal, (Long_t)param); }
00115 void Emit(const char *signal, Int_t param)
00116 { Emit(signal, (Long_t)param); }
00117 void Emit(const char *signal, UInt_t param)
00118 { Emit(signal, (Long_t)param); }
00119 void Emit(const char *signal, ULong_t param)
00120 { Emit(signal, (Long_t)param); }
00121 void Emit(const char *signal, ULong64_t param)
00122 { Emit(signal, (Long64_t) param); }
00123 void Emit(const char *signal, Float_t param)
00124 { Emit(signal, (Double_t)param); }
00125
00126 Bool_t Connect(const char *signal,
00127 const char *receiver_class,
00128 void *receiver,
00129 const char *slot);
00130
00131 Bool_t Disconnect(const char *signal = 0,
00132 void *receiver = 0,
00133 const char *slot = 0);
00134
00135 virtual void HighPriority(const char *signal_name,
00136 const char *slot_name = 0);
00137
00138 virtual void LowPriority(const char *signal_name,
00139 const char *slot_name = 0);
00140
00141 virtual Bool_t HasConnection(const char *signal_name) const;
00142 virtual Int_t NumberOfSignals() const;
00143 virtual Int_t NumberOfConnections() const;
00144 virtual void Connected(const char * ) { }
00145 virtual void Disconnected(const char * ) { }
00146
00147 virtual void Destroyed()
00148 { Emit("Destroyed()"); }
00149 virtual void ChangedBy(const char *method)
00150 { Emit("ChangedBy(char*)", method); }
00151 virtual void Message(const char *msg)
00152 { Emit("Message(char*)", msg); }
00153
00154 static Bool_t Connect(TQObject *sender,
00155 const char *signal,
00156 const char *receiver_class,
00157 void *receiver,
00158 const char *slot);
00159
00160 static Bool_t Connect(const char *sender_class,
00161 const char *signal,
00162 const char *receiver_class,
00163 void *receiver,
00164 const char *slot);
00165
00166 static Bool_t Disconnect(TQObject *sender,
00167 const char *signal = 0,
00168 void *receiver = 0,
00169 const char *slot = 0);
00170
00171 static Bool_t Disconnect(const char *class_name,
00172 const char *signal,
00173 void *receiver = 0,
00174 const char *slot = 0);
00175
00176 static Bool_t AreAllSignalsBlocked();
00177 static Bool_t BlockAllSignals(Bool_t b);
00178
00179 static void LoadRQ_OBJECT();
00180
00181 ClassDef(TQObject,1)
00182 };
00183
00184
00185 R__EXTERN void *gTQSender;
00186
00187 class TQObjSender : public TQObject {
00188
00189 protected:
00190 void *fSender;
00191 TString fSenderClass;
00192
00193 virtual void *GetSender() { return fSender; }
00194 virtual const char *GetSenderClassName() const { return fSenderClass; }
00195
00196 private:
00197 TQObjSender(const TQObjSender&);
00198 TQObjSender& operator=(const TQObjSender&);
00199
00200 public:
00201 TQObjSender() : TQObject(), fSender(0), fSenderClass() { }
00202 virtual ~TQObjSender() { Disconnect(); }
00203
00204 virtual void SetSender(void *sender) { fSender = sender; }
00205 void SetSenderClassName(const char *sclass = "") { fSenderClass = sclass; }
00206
00207 ClassDef(TQObjSender,0)
00208
00209 };
00210
00211
00212
00213
00214
00215
00216 extern Bool_t ConnectCINT(TQObject *sender, const char *signal,
00217 const char *slot);
00218
00219 #ifdef G__DICTIONARY
00220
00221
00222
00223 #include "TQClass.h"
00224 #endif
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235 #define ClassImpQ(name) \
00236 ClassImp(name)
00237
00238 #endif