00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _PURPLE_SIGNALS_H_
00027 #define _PURPLE_SIGNALS_H_
00028
00029 #include <glib.h>
00030 #include "value.h"
00031
00032 #define PURPLE_CALLBACK(func) ((PurpleCallback)func)
00033
00034 typedef void (*PurpleCallback)(void);
00035 typedef void (*PurpleSignalMarshalFunc)(PurpleCallback cb, va_list args,
00036 void *data, void **return_val);
00037
00038 #ifdef __cplusplus
00039 extern "C" {
00040 #endif
00041
00042
00044
00050 #define PURPLE_SIGNAL_PRIORITY_DEFAULT 0
00051 #define PURPLE_SIGNAL_PRIORITY_HIGHEST 9999
00052 #define PURPLE_SIGNAL_PRIORITY_LOWEST -9999
00053
00069 gulong purple_signal_register(void *instance, const char *signal,
00070 PurpleSignalMarshalFunc marshal,
00071 PurpleValue *ret_value, int num_values, ...);
00072
00079 void purple_signal_unregister(void *instance, const char *signal);
00080
00086 void purple_signals_unregister_by_instance(void *instance);
00087
00097 void purple_signal_get_values(void *instance, const char *signal,
00098 PurpleValue **ret_value,
00099 int *num_values, PurpleValue ***values);
00100
00119 gulong purple_signal_connect_priority(void *instance, const char *signal,
00120 void *handle, PurpleCallback func, void *data, int priority);
00121
00139 gulong purple_signal_connect(void *instance, const char *signal,
00140 void *handle, PurpleCallback func, void *data);
00141
00162 gulong purple_signal_connect_priority_vargs(void *instance, const char *signal,
00163 void *handle, PurpleCallback func, void *data, int priority);
00164
00184 gulong purple_signal_connect_vargs(void *instance, const char *signal,
00185 void *handle, PurpleCallback func, void *data);
00186
00197 void purple_signal_disconnect(void *instance, const char *signal,
00198 void *handle, PurpleCallback func);
00199
00205 void purple_signals_disconnect_by_handle(void *handle);
00206
00216 void purple_signal_emit(void *instance, const char *signal, ...);
00217
00228 void purple_signal_emit_vargs(void *instance, const char *signal, va_list args);
00229
00241 void *purple_signal_emit_return_1(void *instance, const char *signal, ...);
00242
00255 void *purple_signal_emit_vargs_return_1(void *instance, const char *signal,
00256 va_list args);
00257
00261 void purple_signals_init(void);
00262
00266 void purple_signals_uninit(void);
00267
00270
00272
00275 void purple_marshal_VOID(
00276 PurpleCallback cb, va_list args, void *data, void **return_val);
00277 void purple_marshal_VOID__INT(
00278 PurpleCallback cb, va_list args, void *data, void **return_val);
00279 void purple_marshal_VOID__INT_INT(
00280 PurpleCallback cb, va_list args, void *data, void **return_val);
00281 void purple_marshal_VOID__POINTER(
00282 PurpleCallback cb, va_list args, void *data, void **return_val);
00283 void purple_marshal_VOID__POINTER_UINT(
00284 PurpleCallback cb, va_list args, void *data, void **return_val);
00285 void purple_marshal_VOID__POINTER_INT_INT(
00286 PurpleCallback cb, va_list args, void *data, void **return_val);
00287 void purple_marshal_VOID__POINTER_POINTER(
00288 PurpleCallback cb, va_list args, void *data, void **return_val);
00289 void purple_marshal_VOID__POINTER_POINTER_UINT(
00290 PurpleCallback cb, va_list args, void *data, void **return_val);
00291 void purple_marshal_VOID__POINTER_POINTER_UINT_UINT(
00292 PurpleCallback cb, va_list args, void *data, void **return_val);
00293 void purple_marshal_VOID__POINTER_POINTER_POINTER(
00294 PurpleCallback cb, va_list args, void *data, void **return_val);
00295 void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER(
00296 PurpleCallback cb, va_list args, void *data, void **return_val);
00297 void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER(
00298 PurpleCallback cb, va_list args, void *data, void **return_val);
00299 void purple_marshal_VOID__POINTER_POINTER_POINTER_UINT(
00300 PurpleCallback cb, va_list args, void *data, void **return_val);
00301 void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT(
00302 PurpleCallback cb, va_list args, void *data, void **return_val);
00303 void purple_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(
00304 PurpleCallback cb, va_list args, void *data, void **return_val);
00305
00306 void purple_marshal_INT__INT(
00307 PurpleCallback cb, va_list args, void *data, void **return_val);
00308 void purple_marshal_INT__INT_INT(
00309 PurpleCallback cb, va_list args, void *data, void **return_val);
00310 void purple_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER(
00311 PurpleCallback cb, va_list args, void *data, void **return_val);
00312
00313 void purple_marshal_BOOLEAN__POINTER(
00314 PurpleCallback cb, va_list args, void *data, void **return_val);
00315 void purple_marshal_BOOLEAN__POINTER_POINTER(
00316 PurpleCallback cb, va_list args, void *data, void **return_val);
00317 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER(
00318 PurpleCallback cb, va_list args, void *data, void **return_val);
00319 void purple_marshal_BOOLEAN__POINTER_POINTER_UINT(
00320 PurpleCallback cb, va_list args, void *data, void **return_val);
00321 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT(
00322 PurpleCallback cb, va_list args, void *data, void **return_val);
00323 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER(
00324 PurpleCallback cb, va_list args, void *data, void **return_val);
00325 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER(
00326 PurpleCallback cb, va_list args, void *data, void **return_val);
00327 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT(
00328 PurpleCallback cb, va_list args, void *data, void **return_val);
00329
00330 void purple_marshal_BOOLEAN__INT_POINTER(
00331 PurpleCallback cb, va_list args, void *data, void **return_val);
00332
00333 void purple_marshal_POINTER__POINTER_INT(
00334 PurpleCallback cb, va_list args, void *data, void **return_val);
00335 void purple_marshal_POINTER__POINTER_INT64(
00336 PurpleCallback cb, va_list args, void *data, void **return_val);
00337 void purple_marshal_POINTER__POINTER_INT_BOOLEAN(
00338 PurpleCallback cb, va_list args, void *data, void **return_val);
00339 void purple_marshal_POINTER__POINTER_INT64_BOOLEAN(
00340 PurpleCallback cb, va_list args, void *data, void **return_val);
00341 void purple_marshal_POINTER__POINTER_POINTER(
00342 PurpleCallback cb, va_list args, void *data, void **return_val);
00345 #ifdef __cplusplus
00346 }
00347 #endif
00348
00349 #endif