00001
00025 #ifndef _GAIM_SIGNALS_H_
00026 #define _GAIM_SIGNALS_H_
00027
00028 #include <glib.h>
00029 #include "value.h"
00030
00031 #define GAIM_CALLBACK(func) ((GaimCallback)func)
00032
00033 typedef void (*GaimCallback)(void);
00034 typedef void (*GaimSignalMarshalFunc)(GaimCallback cb, va_list args,
00035 void *data, void **return_val);
00036
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040
00041
00043
00049 #define GAIM_SIGNAL_PRIORITY_DEFAULT 0
00050 #define GAIM_SIGNAL_PRIORITY_HIGHEST 9999
00051 #define GAIM_SIGNAL_PRIORITY_LOWEST -9999
00052
00068 gulong gaim_signal_register(void *instance, const char *signal,
00069 GaimSignalMarshalFunc marshal,
00070 GaimValue *ret_value, int num_values, ...);
00071
00078 void gaim_signal_unregister(void *instance, const char *signal);
00079
00085 void gaim_signals_unregister_by_instance(void *instance);
00086
00096 void gaim_signal_get_values(void *instance, const char *signal,
00097 GaimValue **ret_value,
00098 int *num_values, GaimValue ***values);
00099
00117 gulong gaim_signal_connect_priority(void *instance, const char *signal,
00118 void *handle, GaimCallback func, void *data, int priority);
00119
00137 gulong gaim_signal_connect(void *instance, const char *signal,
00138 void *handle, GaimCallback func, void *data);
00139
00160 gulong gaim_signal_connect_priority_vargs(void *instance, const char *signal,
00161 void *handle, GaimCallback func, void *data, int priority);
00162
00182 gulong gaim_signal_connect_vargs(void *instance, const char *signal,
00183 void *handle, GaimCallback func, void *data);
00184
00195 void gaim_signal_disconnect(void *instance, const char *signal,
00196 void *handle, GaimCallback func);
00197
00203 void gaim_signals_disconnect_by_handle(void *handle);
00204
00214 void gaim_signal_emit(void *instance, const char *signal, ...);
00215
00226 void gaim_signal_emit_vargs(void *instance, const char *signal, va_list args);
00227
00236 void *gaim_signal_emit_return_1(void *instance, const char *signal, ...);
00237
00247 void *gaim_signal_emit_vargs_return_1(void *instance, const char *signal,
00248 va_list args);
00249
00253 void gaim_signals_init();
00254
00258 void gaim_signals_uninit();
00259
00262
00264
00267 void gaim_marshal_VOID(
00268 GaimCallback cb, va_list args, void *data, void **return_val);
00269 void gaim_marshal_VOID__INT(
00270 GaimCallback cb, va_list args, void *data, void **return_val);
00271 void gaim_marshal_VOID__INT_INT(
00272 GaimCallback cb, va_list args, void *data, void **return_val);
00273 void gaim_marshal_VOID__POINTER(
00274 GaimCallback cb, va_list args, void *data, void **return_val);
00275 void gaim_marshal_VOID__POINTER_UINT(
00276 GaimCallback cb, va_list args, void *data, void **return_val);
00277 void gaim_marshal_VOID__POINTER_POINTER(
00278 GaimCallback cb, va_list args, void *data, void **return_val);
00279 void gaim_marshal_VOID__POINTER_POINTER_UINT(
00280 GaimCallback cb, va_list args, void *data, void **return_val);
00281 void gaim_marshal_VOID__POINTER_POINTER_UINT_UINT(
00282 GaimCallback cb, va_list args, void *data, void **return_val);
00283 void gaim_marshal_VOID__POINTER_POINTER_POINTER(
00284 GaimCallback cb, va_list args, void *data, void **return_val);
00285 void gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER(
00286 GaimCallback cb, va_list args, void *data, void **return_val);
00287 void gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER(
00288 GaimCallback cb, va_list args, void *data, void **return_val);
00289 void gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT(
00290 GaimCallback cb, va_list args, void *data, void **return_val);
00291 void gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(
00292 GaimCallback cb, va_list args, void *data, void **return_val);
00293
00294 void gaim_marshal_INT__INT(
00295 GaimCallback cb, va_list args, void *data, void **return_val);
00296 void gaim_marshal_INT__INT_INT(
00297 GaimCallback cb, va_list args, void *data, void **return_val);
00298
00299 void gaim_marshal_BOOLEAN__POINTER(
00300 GaimCallback cb, va_list args, void *data, void **return_val);
00301 void gaim_marshal_BOOLEAN__POINTER_POINTER(
00302 GaimCallback cb, va_list args, void *data, void **return_val);
00303 void gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER(
00304 GaimCallback cb, va_list args, void *data, void **return_val);
00305 void gaim_marshal_BOOLEAN__POINTER_POINTER_UINT(
00306 GaimCallback cb, va_list args, void *data, void **return_val);
00307 void gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT(
00308 GaimCallback cb, va_list args, void *data, void **return_val);
00309 void gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER(
00310 GaimCallback cb, va_list args, void *data, void **return_val);
00311 void gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER(
00312 GaimCallback cb, va_list args, void *data, void **return_val);
00313
00316 #ifdef __cplusplus
00317 }
00318 #endif
00319
00320 #endif