00001
00025 #ifndef _PURPLE_SIGNALS_H_
00026 #define _PURPLE_SIGNALS_H_
00027
00028 #include <glib.h>
00029 #include "value.h"
00030
00031 #define PURPLE_CALLBACK(func) ((PurpleCallback)func)
00032
00033 typedef void (*PurpleCallback)(void);
00034 typedef void (*PurpleSignalMarshalFunc)(PurpleCallback cb, va_list args,
00035 void *data, void **return_val);
00036
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040
00041
00043
00049 #define PURPLE_SIGNAL_PRIORITY_DEFAULT 0
00050 #define PURPLE_SIGNAL_PRIORITY_HIGHEST 9999
00051 #define PURPLE_SIGNAL_PRIORITY_LOWEST -9999
00052
00068 gulong purple_signal_register(void *instance, const char *signal,
00069 PurpleSignalMarshalFunc marshal,
00070 PurpleValue *ret_value, int num_values, ...);
00071
00078 void purple_signal_unregister(void *instance, const char *signal);
00079
00085 void purple_signals_unregister_by_instance(void *instance);
00086
00096 void purple_signal_get_values(void *instance, const char *signal,
00097 PurpleValue **ret_value,
00098 int *num_values, PurpleValue ***values);
00099
00118 gulong purple_signal_connect_priority(void *instance, const char *signal,
00119 void *handle, PurpleCallback func, void *data, int priority);
00120
00138 gulong purple_signal_connect(void *instance, const char *signal,
00139 void *handle, PurpleCallback func, void *data);
00140
00161 gulong purple_signal_connect_priority_vargs(void *instance, const char *signal,
00162 void *handle, PurpleCallback func, void *data, int priority);
00163
00183 gulong purple_signal_connect_vargs(void *instance, const char *signal,
00184 void *handle, PurpleCallback func, void *data);
00185
00196 void purple_signal_disconnect(void *instance, const char *signal,
00197 void *handle, PurpleCallback func);
00198
00204 void purple_signals_disconnect_by_handle(void *handle);
00205
00215 void purple_signal_emit(void *instance, const char *signal, ...);
00216
00227 void purple_signal_emit_vargs(void *instance, const char *signal, va_list args);
00228
00240 void *purple_signal_emit_return_1(void *instance, const char *signal, ...);
00241
00254 void *purple_signal_emit_vargs_return_1(void *instance, const char *signal,
00255 va_list args);
00256
00260 void purple_signals_init(void);
00261
00265 void purple_signals_uninit(void);
00266
00269
00271
00274 void purple_marshal_VOID(
00275 PurpleCallback cb, va_list args, void *data, void **return_val);
00276 void purple_marshal_VOID__INT(
00277 PurpleCallback cb, va_list args, void *data, void **return_val);
00278 void purple_marshal_VOID__INT_INT(
00279 PurpleCallback cb, va_list args, void *data, void **return_val);
00280 void purple_marshal_VOID__POINTER(
00281 PurpleCallback cb, va_list args, void *data, void **return_val);
00282 void purple_marshal_VOID__POINTER_UINT(
00283 PurpleCallback cb, va_list args, void *data, void **return_val);
00284 void purple_marshal_VOID__POINTER_INT_INT(
00285 PurpleCallback cb, va_list args, void *data, void **return_val);
00286 void purple_marshal_VOID__POINTER_POINTER(
00287 PurpleCallback cb, va_list args, void *data, void **return_val);
00288 void purple_marshal_VOID__POINTER_POINTER_UINT(
00289 PurpleCallback cb, va_list args, void *data, void **return_val);
00290 void purple_marshal_VOID__POINTER_POINTER_UINT_UINT(
00291 PurpleCallback cb, va_list args, void *data, void **return_val);
00292 void purple_marshal_VOID__POINTER_POINTER_POINTER(
00293 PurpleCallback cb, va_list args, void *data, void **return_val);
00294 void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER(
00295 PurpleCallback cb, va_list args, void *data, void **return_val);
00296 void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER(
00297 PurpleCallback cb, va_list args, void *data, void **return_val);
00298 void purple_marshal_VOID__POINTER_POINTER_POINTER_UINT(
00299 PurpleCallback cb, va_list args, void *data, void **return_val);
00300 void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT(
00301 PurpleCallback cb, va_list args, void *data, void **return_val);
00302 void purple_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(
00303 PurpleCallback cb, va_list args, void *data, void **return_val);
00304
00305 void purple_marshal_INT__INT(
00306 PurpleCallback cb, va_list args, void *data, void **return_val);
00307 void purple_marshal_INT__INT_INT(
00308 PurpleCallback cb, va_list args, void *data, void **return_val);
00309 void purple_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER(
00310 PurpleCallback cb, va_list args, void *data, void **return_val);
00311
00312 void purple_marshal_BOOLEAN__POINTER(
00313 PurpleCallback cb, va_list args, void *data, void **return_val);
00314 void purple_marshal_BOOLEAN__POINTER_POINTER(
00315 PurpleCallback cb, va_list args, void *data, void **return_val);
00316 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER(
00317 PurpleCallback cb, va_list args, void *data, void **return_val);
00318 void purple_marshal_BOOLEAN__POINTER_POINTER_UINT(
00319 PurpleCallback cb, va_list args, void *data, void **return_val);
00320 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT(
00321 PurpleCallback cb, va_list args, void *data, void **return_val);
00322 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER(
00323 PurpleCallback cb, va_list args, void *data, void **return_val);
00324 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER(
00325 PurpleCallback cb, va_list args, void *data, void **return_val);
00326 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT(
00327 PurpleCallback cb, va_list args, void *data, void **return_val);
00328
00329 void purple_marshal_BOOLEAN__INT_POINTER(
00330 PurpleCallback cb, va_list args, void *data, void **return_val);
00331
00332 void purple_marshal_POINTER__POINTER_INT(
00333 PurpleCallback cb, va_list args, void *data, void **return_val);
00334 void purple_marshal_POINTER__POINTER_INT64(
00335 PurpleCallback cb, va_list args, void *data, void **return_val);
00336 void purple_marshal_POINTER__POINTER_INT_BOOLEAN(
00337 PurpleCallback cb, va_list args, void *data, void **return_val);
00338 void purple_marshal_POINTER__POINTER_INT64_BOOLEAN(
00339 PurpleCallback cb, va_list args, void *data, void **return_val);
00340 void purple_marshal_POINTER__POINTER_POINTER(
00341 PurpleCallback cb, va_list args, void *data, void **return_val);
00344 #ifdef __cplusplus
00345 }
00346 #endif
00347
00348 #endif