signals.h

Go to the documentation of this file.
00001 
00006 /* purple
00007  *
00008  * Purple is the legal property of its developers, whose names are too numerous
00009  * to list here.  Please refer to the COPYRIGHT file distributed with this
00010  * source distribution.
00011  *
00012  * This program is free software; you can redistribute it and/or modify
00013  * it under the terms of the GNU General Public License as published by
00014  * the Free Software Foundation; either version 2 of the License, or
00015  * (at your option) any later version.
00016  *
00017  * This program is distributed in the hope that it will be useful,
00018  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020  * GNU General Public License for more details.
00021  *
00022  * You should have received a copy of the GNU General Public License
00023  * along with this program; if not, write to the Free Software
00024  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
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 /* _PURPLE_SIGNALS_H_ */