795f7327fbb01f0af10b2ddc038b642614e8b024
[crypto.git] / apps / irssi / src / core / signals.h
1 #ifndef __SIGNAL_H
2 #define __SIGNAL_H
3
4 #define SIGNAL_MAX_ARGUMENTS 6
5 typedef void (*SIGNAL_FUNC) (gconstpointer, gconstpointer,
6                              gconstpointer, gconstpointer,
7                              gconstpointer, gconstpointer);
8
9 void signals_init(void);
10 void signals_deinit(void);
11
12 /* signal name -> ID */
13 #define signal_get_uniq_id(signal) \
14         module_get_uniq_id_str("signals", signal)
15 /* signal ID -> name */
16 #define signal_get_id_str(signal_id) \
17         module_find_id_str("signals", signal_id)
18
19 /* bind a signal */
20 void signal_add_to(const char *module, int pos,
21                    const char *signal, SIGNAL_FUNC func);
22 void signal_add_to_id(const char *module, int pos,
23                       int signal, SIGNAL_FUNC func);
24 #define signal_add(a, b) signal_add_to(MODULE_NAME, 1, a, b)
25 #define signal_add_first(a, b) signal_add_to(MODULE_NAME, 0, a, b)
26 #define signal_add_last(a, b) signal_add_to(MODULE_NAME, 2, a, b)
27
28 /* unbind signal */
29 void signal_remove(const char *signal, SIGNAL_FUNC func);
30 void signal_remove_id(int signal_id, SIGNAL_FUNC func);
31
32 /* emit signal */
33 int signal_emit(const char *signal, int params, ...);
34 int signal_emit_id(int signal_id, int params, ...);
35
36 /* stop the current ongoing signal emission */
37 void signal_stop(void);
38 /* stop ongoing signal emission by signal name */
39 void signal_stop_by_name(const char *signal);
40
41 /* return the name of the signal that is currently being emitted */
42 const char *signal_get_emitted(void);
43 /* return the ID of the signal that is currently being emitted */
44 int signal_get_emitted_id(void);
45 /* return TRUE if specified signal was stopped */
46 int signal_is_stopped(int signal_id);
47
48 /* remove all signals that belong to `module' */
49 void signals_remove_module(const char *module);
50
51 #endif