signals.h

Go to the documentation of this file.
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 
00327 void purple_marshal_BOOLEAN__INT_POINTER(
00328         PurpleCallback cb, va_list args, void *data, void **return_val);
00329 
00330 void purple_marshal_POINTER__POINTER_INT(
00331         PurpleCallback cb, va_list args, void *data, void **return_val);
00332 void purple_marshal_POINTER__POINTER_INT64(
00333         PurpleCallback cb, va_list args, void *data, void **return_val);
00334 void purple_marshal_POINTER__POINTER_INT_BOOLEAN(
00335         PurpleCallback cb, va_list args, void *data, void **return_val);
00336 void purple_marshal_POINTER__POINTER_INT64_BOOLEAN(
00337         PurpleCallback cb, va_list args, void *data, void **return_val);
00338 void purple_marshal_POINTER__POINTER_POINTER(
00339         PurpleCallback cb, va_list args, void *data, void **return_val);
00342 #ifdef __cplusplus
00343 }
00344 #endif
00345 
00346 #endif /* _PURPLE_SIGNALS_H_ */