00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef GWENHYWFAR_SIGNAL_H
00029 #define GWENHYWFAR_SIGNAL_H
00030
00031 #include <gwenhywfar/gwenhywfarapi.h>
00032 #include <gwenhywfar/types.h>
00033 #include <gwenhywfar/list2.h>
00034
00035
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039
00064
00065 typedef struct GWEN_SIGNALOBJECT GWEN_SIGNALOBJECT;
00066
00067 typedef struct GWEN_SIGNAL GWEN_SIGNAL;
00068
00069 typedef struct GWEN_SLOT GWEN_SLOT;
00070
00071
00076 typedef int (*GWEN_SLOT_FUNCTION)(GWEN_SLOT *slot,
00077 void *userData,
00078 void *pArg1,
00079 void *pArg2,
00080 int iArg3,
00081 int iArg4);
00082
00083
00088 GWENHYWFAR_API
00089 GWEN_SIGNALOBJECT *GWEN_SignalObject_new();
00090
00091 GWENHYWFAR_API
00092 void GWEN_SignalObject_free(GWEN_SIGNALOBJECT *so);
00093
00094 GWENHYWFAR_API
00095 GWEN_SIGNAL *GWEN_SignalObject_FindSignal(const GWEN_SIGNALOBJECT *so,
00096 const char *name,
00097 const char *typeOfArg1,
00098 const char *typeOfArg2);
00099
00100 GWENHYWFAR_API
00101 GWEN_SLOT *GWEN_SignalObject_FindSlot(const GWEN_SIGNALOBJECT *so,
00102 const char *name,
00103 const char *typeOfArg1,
00104 const char *typeOfArg2);
00105
00111 GWENHYWFAR_API
00112 void GWEN_SignalObject_RemoveForDerivedType(GWEN_SIGNALOBJECT *so,
00113 const char *derivedType);
00114
00115
00122
00123 GWENHYWFAR_API
00124 GWEN_SIGNAL *GWEN_Signal_new(GWEN_SIGNALOBJECT *so,
00125 const char *derivedType,
00126 const char *name,
00127 const char *typeOfArg1,
00128 const char *typeOfArg2);
00129
00130 GWENHYWFAR_API
00131 void GWEN_Signal_free(GWEN_SIGNAL *sig);
00132
00133
00134 GWENHYWFAR_API
00135 GWEN_SIGNALOBJECT *GWEN_Signal_GetSignalObject(const GWEN_SIGNAL *sig);
00136
00137
00138 GWENHYWFAR_API
00139 int GWEN_Signal_Connect(GWEN_SIGNAL *sig, GWEN_SLOT *slot);
00140
00141 GWENHYWFAR_API
00142 int GWEN_Signal_Disconnect(GWEN_SIGNAL *sig, GWEN_SLOT *slot);
00143
00151 GWENHYWFAR_API
00152 int GWEN_Signal_Emit(GWEN_SIGNAL *sig,
00153 void *pArg1, void *pArg2, int iArg3, int iArg4);
00163
00164 GWENHYWFAR_API
00165 GWEN_SLOT *GWEN_Slot_new(GWEN_SIGNALOBJECT *so,
00166 const char *derivedType,
00167 const char *name,
00168 const char *typeOfArg1,
00169 const char *typeOfArg2,
00170 GWEN_SLOT_FUNCTION fn,
00171 void *userData);
00172
00173 GWENHYWFAR_API
00174 void GWEN_Slot_free(GWEN_SLOT *slot);
00175
00176 GWENHYWFAR_API
00177 GWEN_SIGNALOBJECT *GWEN_Slot_GetSignalObject(const GWEN_SLOT *slot);
00178
00179
00181
00182
00184
00185
00186
00187 #ifdef __cplusplus
00188 }
00189 #endif
00190
00191
00192 #endif
00193