Mercurial > pidgin.yaz
annotate src/signals.h @ 6548:d01ba50e3f3e
[gaim-migrate @ 7070]
And the .h file is good too. Some people may want it.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Thu, 21 Aug 2003 07:37:47 +0000 |
parents | e74e378e86bf |
children | c53a3f0649eb |
rev | line source |
---|---|
6485 | 1 /** |
6488
e5e8d21bd4d8
[gaim-migrate @ 7002]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2 * @file signals.h Signal API |
6485 | 3 * @ingroup core |
4 * | |
5 * gaim | |
6 * | |
7 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> | |
8 * | |
9 * This program is free software; you can redistribute it and/or modify | |
10 * it under the terms of the GNU General Public License as published by | |
11 * the Free Software Foundation; either version 2 of the License, or | |
12 * (at your option) any later version. | |
13 * | |
14 * This program is distributed in the hope that it will be useful, | |
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 * GNU General Public License for more details. | |
18 * | |
19 * You should have received a copy of the GNU General Public License | |
20 * along with this program; if not, write to the Free Software | |
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
22 */ | |
23 #ifndef _GAIM_SIGNAL_H_ | |
24 #define _GAIM_SIGNAL_H_ | |
25 | |
26 #include <glib.h> | |
27 | |
28 #if 0 | |
29 /** | |
30 * Event types | |
31 */ | |
32 typedef enum gaim_event | |
33 { | |
34 event_signon = 0, | |
35 event_signoff, | |
36 event_away, | |
37 event_back, | |
38 event_im_recv, | |
39 event_im_send, | |
40 event_buddy_signon, | |
41 event_buddy_signoff, | |
42 event_buddy_away, | |
43 event_buddy_back, | |
44 event_buddy_idle, | |
45 event_buddy_unidle, | |
46 event_blist_update, | |
47 event_chat_invited, | |
48 event_chat_join, | |
49 event_chat_leave, | |
50 event_chat_buddy_join, | |
51 event_chat_buddy_leave, | |
52 event_chat_recv, | |
53 event_chat_send, | |
54 event_warned, | |
55 event_error, | |
56 event_quit, | |
57 event_new_conversation, | |
58 event_set_info, | |
59 event_draw_menu, | |
60 event_im_displayed_sent, | |
61 event_im_displayed_rcvd, | |
62 event_chat_send_invite, | |
63 event_got_typing, | |
64 event_del_conversation, | |
65 event_connecting, | |
66 event_conversation_switch | |
67 /* any others? it's easy to add... */ | |
68 | |
69 } GaimEvent; | |
70 | |
71 typedef int (*GaimSignalBroadcastFunc)(GaimEvent event, void *data, | |
72 va_list args); | |
73 #endif | |
74 | |
75 #define GAIM_CALLBACK(func) ((GaimCallback)func) | |
76 | |
77 typedef void (*GaimCallback)(void); | |
78 typedef void (*GaimSignalMarshalFunc)(GaimCallback cb, va_list args, | |
79 void *data, void **return_val); | |
80 | |
81 #ifdef __cplusplus | |
82 extern "C" { | |
83 #endif | |
84 | |
85 /**************************************************************************/ | |
86 /** @name Signal API */ | |
87 /**************************************************************************/ | |
88 /*@{*/ | |
89 | |
90 /** | |
91 * Registers a signal in an instance. | |
92 * | |
93 * @param instance The instance to register the signal for. | |
94 * @param signal The signal name. | |
95 * @param marshal The marshal function. | |
96 * | |
97 * @return The signal ID local to that instance, or 0 if the signal | |
98 * couldn't be registered. | |
99 */ | |
100 gulong gaim_signal_register(void *instance, const char *signal, | |
101 GaimSignalMarshalFunc marshal); | |
102 | |
103 /** | |
104 * Unregisters a signal in an instance. | |
105 * | |
106 * @param instance The instance to unregister the signal for. | |
107 * @param signal The signal name. | |
108 */ | |
109 void gaim_signal_unregister(void *instance, const char *signal); | |
110 | |
111 /** | |
112 * Unregisters all signals in an instance. | |
113 * | |
114 * @param instance The instance to unregister the signal for. | |
115 */ | |
116 void gaim_signals_unregister_by_instance(void *instance); | |
117 | |
118 /** | |
119 * Connects a signal handler to a signal for a particular object. | |
120 * | |
121 * Take care not to register a handler function twice. Gaim will | |
122 * not correct any mistakes for you in this area. | |
123 * | |
124 * @param instance The instance to connect to. | |
125 * @param signal The name of the signal to connect. | |
126 * @param handle The handle of the receiver. | |
127 * @param func The callback function. | |
128 * @param data The data to pass to the callback function. | |
129 * | |
130 * @return The signal handler ID. | |
131 * | |
132 * @see gaim_signal_disconnect() | |
133 */ | |
134 gulong gaim_signal_connect(void *instance, const char *signal, | |
135 void *handle, GaimCallback func, void *data); | |
136 | |
137 /** | |
6548
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
138 * Connects a signal handler to a signal for a particular object. |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
139 * |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
140 * The signal handler will take a va_args of arguments, instead of |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
141 * individual arguments. |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
142 * |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
143 * Take care not to register a handler function twice. Gaim will |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
144 * not correct any mistakes for you in this area. |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
145 * |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
146 * @param instance The instance to connect to. |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
147 * @param signal The name of the signal to connect. |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
148 * @param handle The handle of the receiver. |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
149 * @param func The callback function. |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
150 * @param data The data to pass to the callback function. |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
151 * |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
152 * @return The signal handler ID. |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
153 * |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
154 * @see gaim_signal_disconnect() |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
155 */ |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
156 gulong gaim_signal_connect_vargs(void *instance, const char *signal, |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
157 void *handle, GaimCallback func, void *data); |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
158 |
d01ba50e3f3e
[gaim-migrate @ 7070]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
159 /** |
6485 | 160 * Disconnects a signal handler from a signal on an object. |
161 * | |
162 * @param instance The instance to disconnect from. | |
163 * @param signal The name of the signal to disconnect. | |
164 * @param handle The handle of the receiver. | |
165 * @param func The registered function to disconnect. | |
166 * | |
167 * @see gaim_signal_connect() | |
168 */ | |
169 void gaim_signal_disconnect(void *instance, const char *signal, | |
170 void *handle, GaimCallback func); | |
171 | |
172 /** | |
173 * Removes all callbacks associated with a receiver handle. | |
174 * | |
175 * @param handle The receiver handle. | |
176 */ | |
177 void gaim_signals_disconnect_by_handle(void *handle); | |
178 | |
179 /** | |
180 * Emits a signal. | |
181 * | |
182 * @param instance The instance emitting the signal. | |
183 * @param signal The signal being emitted. | |
184 * | |
185 * @see gaim_signal_connect() | |
186 * @see gaim_signal_disconnect() | |
187 */ | |
188 void gaim_signal_emit(void *instance, const char *signal, ...); | |
189 | |
190 /** | |
191 * Emits a signal, using a va_list of arguments. | |
192 * | |
193 * @param instance The instance emitting the signal. | |
194 * @param signal The signal being emitted. | |
195 * @param args The arguments list. | |
196 * | |
197 * @see gaim_signal_connect() | |
198 * @see gaim_signal_disconnect() | |
199 */ | |
200 void gaim_signal_emit_vargs(void *instance, const char *signal, va_list args); | |
201 | |
202 /** | |
203 * Emits a signal and returns the return value from the last handler. | |
204 * | |
205 * @param instance The instance emitting the signal. | |
206 * @param signal The signal being emitted. | |
207 * | |
208 * @return The return value from the last handler. | |
209 */ | |
210 void *gaim_signal_emit_return_1(void *instance, const char *signal, ...); | |
211 | |
212 /** | |
213 * Emits a signal and returns the return value from the last handler. | |
214 * | |
215 * @param instance The instance emitting the signal. | |
216 * @param signal The signal being emitted. | |
217 * @param args The arguments list. | |
218 * | |
219 * @return The return value from the last handler. | |
220 */ | |
221 void *gaim_signal_emit_vargs_return_1(void *instance, const char *signal, | |
222 va_list args); | |
223 | |
224 /** | |
225 * Initializes the signals subsystem. | |
226 */ | |
227 void gaim_signals_init(); | |
228 | |
229 /** | |
230 * Uninitializes the signals subsystem. | |
231 */ | |
232 void gaim_signals_uninit(); | |
233 | |
234 /*@}*/ | |
235 | |
236 /**************************************************************************/ | |
237 /** @name Marshal Functions */ | |
238 /**************************************************************************/ | |
239 /*@{*/ | |
240 | |
241 void gaim_marshal_VOID( | |
242 GaimCallback cb, va_list args, void *data, void **return_val); | |
243 void gaim_marshal_VOID__POINTER( | |
244 GaimCallback cb, va_list args, void *data, void **return_val); | |
245 void gaim_marshal_VOID__POINTER_POINTER( | |
246 GaimCallback cb, va_list args, void *data, void **return_val); | |
247 void gaim_marshal_VOID__POINTER_POINTER_UINT( | |
248 GaimCallback cb, va_list args, void *data, void **return_val); | |
249 void gaim_marshal_VOID__POINTER_POINTER_POINTER( | |
250 GaimCallback cb, va_list args, void *data, void **return_val); | |
251 void gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER( | |
252 GaimCallback cb, va_list args, void *data, void **return_val); | |
6509 | 253 void gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT( |
254 GaimCallback cb, va_list args, void *data, void **return_val); | |
6485 | 255 void gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT( |
256 GaimCallback cb, va_list args, void *data, void **return_val); | |
257 | |
258 void gaim_marshal_BOOLEAN__POINTER( | |
259 GaimCallback cb, va_list args, void *data, void **return_val); | |
260 void gaim_marshal_BOOLEAN__POINTER_POINTER( | |
261 GaimCallback cb, va_list args, void *data, void **return_val); | |
6509 | 262 void gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER( |
263 GaimCallback cb, va_list args, void *data, void **return_val); | |
264 void gaim_marshal_BOOLEAN__POINTER_POINTER_UINT( | |
265 GaimCallback cb, va_list args, void *data, void **return_val); | |
6485 | 266 void gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT( |
267 GaimCallback cb, va_list args, void *data, void **return_val); | |
268 void gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER( | |
269 GaimCallback cb, va_list args, void *data, void **return_val); | |
270 void gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER( | |
271 GaimCallback cb, va_list args, void *data, void **return_val); | |
272 | |
273 /*@}*/ | |
274 | |
275 #ifdef __cplusplus | |
276 } | |
277 #endif | |
278 | |
279 #endif /* _GAIM_SIGNAL_H_ */ |