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 /**************************************************************************/
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 /* _PURPLE_SIGNALS_H_ */