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
00051 #define PURPLE_SIGNAL_PRIORITY_DEFAULT 0
00052
00058 #define PURPLE_SIGNAL_PRIORITY_HIGHEST 9999
00059
00065 #define PURPLE_SIGNAL_PRIORITY_LOWEST -9999
00066
00082 gulong purple_signal_register(void *instance, const char *signal,
00083 PurpleSignalMarshalFunc marshal,
00084 PurpleValue *ret_value, int num_values, ...);
00085
00092 void purple_signal_unregister(void *instance, const char *signal);
00093
00099 void purple_signals_unregister_by_instance(void *instance);
00100
00110 void purple_signal_get_values(void *instance, const char *signal,
00111 PurpleValue **ret_value,
00112 int *num_values, PurpleValue ***values);
00113
00134 gulong purple_signal_connect_priority(void *instance, const char *signal,
00135 void *handle, PurpleCallback func, void *data, int priority);
00136
00154 gulong purple_signal_connect(void *instance, const char *signal,
00155 void *handle, PurpleCallback func, void *data);
00156
00180 gulong purple_signal_connect_priority_vargs(void *instance, const char *signal,
00181 void *handle, PurpleCallback func, void *data, int priority);
00182
00203 gulong purple_signal_connect_vargs(void *instance, const char *signal,
00204 void *handle, PurpleCallback func, void *data);
00205
00216 void purple_signal_disconnect(void *instance, const char *signal,
00217 void *handle, PurpleCallback func);
00218
00224 void purple_signals_disconnect_by_handle(void *handle);
00225
00235 void purple_signal_emit(void *instance, const char *signal, ...);
00236
00247 void purple_signal_emit_vargs(void *instance, const char *signal, va_list args);
00248
00260 void *purple_signal_emit_return_1(void *instance, const char *signal, ...);
00261
00274 void *purple_signal_emit_vargs_return_1(void *instance, const char *signal,
00275 va_list args);
00276
00280 void purple_signals_init(void);
00281
00285 void purple_signals_uninit(void);
00286
00289
00291
00294 void purple_marshal_VOID(
00295 PurpleCallback cb, va_list args, void *data, void **return_val);
00296 void purple_marshal_VOID__INT(
00297 PurpleCallback cb, va_list args, void *data, void **return_val);
00298 void purple_marshal_VOID__INT_INT(
00299 PurpleCallback cb, va_list args, void *data, void **return_val);
00300 void purple_marshal_VOID__POINTER(
00301 PurpleCallback cb, va_list args, void *data, void **return_val);
00302 void purple_marshal_VOID__POINTER_UINT(
00303 PurpleCallback cb, va_list args, void *data, void **return_val);
00304 void purple_marshal_VOID__POINTER_INT_INT(
00305 PurpleCallback cb, va_list args, void *data, void **return_val);
00306 void purple_marshal_VOID__POINTER_INT_POINTER(
00307 PurpleCallback cb, va_list args, void *data, void **return_val);
00308 void purple_marshal_VOID__POINTER_POINTER(
00309 PurpleCallback cb, va_list args, void *data, void **return_val);
00310 void purple_marshal_VOID__POINTER_POINTER_UINT(
00311 PurpleCallback cb, va_list args, void *data, void **return_val);
00312 void purple_marshal_VOID__POINTER_POINTER_UINT_UINT(
00313 PurpleCallback cb, va_list args, void *data, void **return_val);
00314 void purple_marshal_VOID__POINTER_POINTER_POINTER(
00315 PurpleCallback cb, va_list args, void *data, void **return_val);
00316 void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER(
00317 PurpleCallback cb, va_list args, void *data, void **return_val);
00318 void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER(
00319 PurpleCallback cb, va_list args, void *data, void **return_val);
00320 void purple_marshal_VOID__POINTER_POINTER_POINTER_UINT(
00321 PurpleCallback cb, va_list args, void *data, void **return_val);
00322 void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT(
00323 PurpleCallback cb, va_list args, void *data, void **return_val);
00324 void purple_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(
00325 PurpleCallback cb, va_list args, void *data, void **return_val);
00326
00327 void purple_marshal_INT__INT(
00328 PurpleCallback cb, va_list args, void *data, void **return_val);
00329 void purple_marshal_INT__INT_INT(
00330 PurpleCallback cb, va_list args, void *data, void **return_val);
00331 void purple_marshal_INT__POINTER_POINTER(
00332 PurpleCallback cb, va_list args, void *data, void **return_val);
00333 void purple_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER(
00334 PurpleCallback cb, va_list args, void *data, void **return_val);
00335
00336 void purple_marshal_BOOLEAN__POINTER(
00337 PurpleCallback cb, va_list args, void *data, void **return_val);
00338 void purple_marshal_BOOLEAN__POINTER_POINTER(
00339 PurpleCallback cb, va_list args, void *data, void **return_val);
00340 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER(
00341 PurpleCallback cb, va_list args, void *data, void **return_val);
00342 void purple_marshal_BOOLEAN__POINTER_POINTER_UINT(
00343 PurpleCallback cb, va_list args, void *data, void **return_val);
00344 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT(
00345 PurpleCallback cb, va_list args, void *data, void **return_val);
00346 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER(
00347 PurpleCallback cb, va_list args, void *data, void **return_val);
00348 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER(
00349 PurpleCallback cb, va_list args, void *data, void **return_val);
00350 void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT(
00351 PurpleCallback cb, va_list args, void *data, void **return_val);
00352
00353 void purple_marshal_BOOLEAN__INT_POINTER(
00354 PurpleCallback cb, va_list args, void *data, void **return_val);
00355
00356 void purple_marshal_POINTER__POINTER_INT(
00357 PurpleCallback cb, va_list args, void *data, void **return_val);
00358 void purple_marshal_POINTER__POINTER_INT64(
00359 PurpleCallback cb, va_list args, void *data, void **return_val);
00360 void purple_marshal_POINTER__POINTER_INT_BOOLEAN(
00361 PurpleCallback cb, va_list args, void *data, void **return_val);
00362 void purple_marshal_POINTER__POINTER_INT64_BOOLEAN(
00363 PurpleCallback cb, va_list args, void *data, void **return_val);
00364 void purple_marshal_POINTER__POINTER_POINTER(
00365 PurpleCallback cb, va_list args, void *data, void **return_val);
00368 #ifdef __cplusplus
00369 }
00370 #endif
00371
00372 #endif