Wed, 13 May 2009 20:29:03 +0000
Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.
| 6485 | 1 | /** |
|
6488
6a47a95e4dbb
[gaim-migrate @ 7002]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2 | * @file signals.c Signal API |
| 6485 | 3 | * @ingroup core |
|
20147
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
4 | */ |
|
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
5 | |
|
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
6 | /* purple |
| 6485 | 7 | * |
| 15884 | 8 | * Purple is the legal property of its developers, whose names are too numerous |
| 8046 | 9 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 10 | * source distribution. | |
| 6485 | 11 | * |
| 12 | * This program is free software; you can redistribute it and/or modify | |
| 13 | * it under the terms of the GNU General Public License as published by | |
| 14 | * the Free Software Foundation; either version 2 of the License, or | |
| 15 | * (at your option) any later version. | |
| 16 | * | |
| 17 | * This program is distributed in the hope that it will be useful, | |
| 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 20 | * GNU General Public License for more details. | |
| 21 | * | |
| 22 | * You should have received a copy of the GNU General Public License | |
| 23 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18751
diff
changeset
|
24 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 6485 | 25 | */ |
| 26 | #include "internal.h" | |
| 27 | ||
|
11080
0578003800d0
[gaim-migrate @ 13092]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11064
diff
changeset
|
28 | #include "dbus-maybe.h" |
| 6485 | 29 | #include "debug.h" |
| 30 | #include "signals.h" | |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
31 | #include "value.h" |
| 6485 | 32 | |
| 9127 | 33 | /* must include this to use G_VA_COPY */ |
| 34 | #include <string.h> | |
| 35 | ||
| 6485 | 36 | typedef struct |
| 37 | { | |
| 38 | void *instance; | |
| 39 | ||
| 40 | GHashTable *signals; | |
| 41 | size_t signal_count; | |
| 42 | ||
| 43 | gulong next_signal_id; | |
| 44 | ||
| 15884 | 45 | } PurpleInstanceData; |
| 6485 | 46 | |
| 47 | typedef struct | |
| 48 | { | |
| 49 | gulong id; | |
| 50 | ||
| 15884 | 51 | PurpleSignalMarshalFunc marshal; |
| 6485 | 52 | |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
53 | int num_values; |
| 15884 | 54 | PurpleValue **values; |
| 55 | PurpleValue *ret_value; | |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
56 | |
| 6485 | 57 | GList *handlers; |
| 58 | size_t handler_count; | |
| 59 | ||
| 60 | gulong next_handler_id; | |
| 15884 | 61 | } PurpleSignalData; |
| 6485 | 62 | |
| 63 | typedef struct | |
| 64 | { | |
| 65 | gulong id; | |
| 15884 | 66 | PurpleCallback cb; |
| 6485 | 67 | void *handle; |
| 68 | void *data; | |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
69 | gboolean use_vargs; |
| 10656 | 70 | int priority; |
| 6485 | 71 | |
| 15884 | 72 | } PurpleSignalHandlerData; |
| 6485 | 73 | |
| 74 | static GHashTable *instance_table = NULL; | |
| 75 | ||
| 76 | static void | |
| 15884 | 77 | destroy_instance_data(PurpleInstanceData *instance_data) |
| 6485 | 78 | { |
| 79 | g_hash_table_destroy(instance_data->signals); | |
| 80 | ||
| 81 | g_free(instance_data); | |
| 82 | } | |
| 83 | ||
| 84 | static void | |
| 15884 | 85 | destroy_signal_data(PurpleSignalData *signal_data) |
| 6485 | 86 | { |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14049
diff
changeset
|
87 | g_list_foreach(signal_data->handlers, (GFunc)g_free, NULL); |
| 6485 | 88 | g_list_free(signal_data->handlers); |
| 89 | ||
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
90 | if (signal_data->values != NULL) |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
91 | { |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
92 | int i; |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
93 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
94 | for (i = 0; i < signal_data->num_values; i++) |
| 15884 | 95 | purple_value_destroy((PurpleValue *)signal_data->values[i]); |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
96 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
97 | g_free(signal_data->values); |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
98 | } |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
99 | |
|
10542
be3f17ecaa1f
[gaim-migrate @ 11907]
Andrew Hart <arhart@users.sourceforge.net>
parents:
10276
diff
changeset
|
100 | if (signal_data->ret_value != NULL) |
| 15884 | 101 | purple_value_destroy(signal_data->ret_value); |
| 6485 | 102 | g_free(signal_data); |
| 103 | } | |
| 104 | ||
| 105 | gulong | |
| 15884 | 106 | purple_signal_register(void *instance, const char *signal, |
| 107 | PurpleSignalMarshalFunc marshal, | |
| 108 | PurpleValue *ret_value, int num_values, ...) | |
| 6485 | 109 | { |
| 15884 | 110 | PurpleInstanceData *instance_data; |
| 111 | PurpleSignalData *signal_data; | |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
112 | va_list args; |
| 6485 | 113 | |
| 114 | g_return_val_if_fail(instance != NULL, 0); | |
| 115 | g_return_val_if_fail(signal != NULL, 0); | |
| 116 | g_return_val_if_fail(marshal != NULL, 0); | |
| 117 | ||
| 118 | instance_data = | |
| 15884 | 119 | (PurpleInstanceData *)g_hash_table_lookup(instance_table, instance); |
| 6485 | 120 | |
| 121 | if (instance_data == NULL) | |
| 122 | { | |
| 15884 | 123 | instance_data = g_new0(PurpleInstanceData, 1); |
| 6485 | 124 | |
| 125 | instance_data->instance = instance; | |
| 126 | instance_data->next_signal_id = 1; | |
| 127 | ||
| 128 | instance_data->signals = | |
| 129 | g_hash_table_new_full(g_str_hash, g_str_equal, g_free, | |
| 130 | (GDestroyNotify)destroy_signal_data); | |
| 131 | ||
| 132 | g_hash_table_insert(instance_table, instance, instance_data); | |
| 133 | } | |
| 134 | ||
| 15884 | 135 | signal_data = g_new0(PurpleSignalData, 1); |
| 6485 | 136 | signal_data->id = instance_data->next_signal_id; |
| 137 | signal_data->marshal = marshal; | |
| 138 | signal_data->next_handler_id = 1; | |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
139 | signal_data->ret_value = ret_value; |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
140 | signal_data->num_values = num_values; |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
141 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
142 | if (num_values > 0) |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
143 | { |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
144 | int i; |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
145 | |
| 15884 | 146 | signal_data->values = g_new0(PurpleValue *, num_values); |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
147 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
148 | va_start(args, num_values); |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
149 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
150 | for (i = 0; i < num_values; i++) |
| 15884 | 151 | signal_data->values[i] = va_arg(args, PurpleValue *); |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
152 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
153 | va_end(args); |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
154 | } |
| 6485 | 155 | |
| 156 | g_hash_table_insert(instance_data->signals, | |
| 157 | g_strdup(signal), signal_data); | |
| 158 | ||
| 159 | instance_data->next_signal_id++; | |
| 160 | instance_data->signal_count++; | |
| 161 | ||
| 162 | return signal_data->id; | |
| 163 | } | |
| 164 | ||
| 165 | void | |
| 15884 | 166 | purple_signal_unregister(void *instance, const char *signal) |
| 6485 | 167 | { |
| 15884 | 168 | PurpleInstanceData *instance_data; |
| 6485 | 169 | |
| 170 | g_return_if_fail(instance != NULL); | |
| 171 | g_return_if_fail(signal != NULL); | |
| 172 | ||
| 173 | instance_data = | |
| 15884 | 174 | (PurpleInstanceData *)g_hash_table_lookup(instance_table, instance); |
| 6485 | 175 | |
| 176 | g_return_if_fail(instance_data != NULL); | |
| 177 | ||
| 178 | g_hash_table_remove(instance_data->signals, signal); | |
| 179 | ||
| 180 | instance_data->signal_count--; | |
| 181 | ||
| 182 | if (instance_data->signal_count == 0) | |
| 183 | { | |
| 184 | /* Unregister the instance. */ | |
| 185 | g_hash_table_remove(instance_table, instance); | |
| 186 | } | |
| 187 | } | |
| 188 | ||
| 189 | void | |
| 15884 | 190 | purple_signals_unregister_by_instance(void *instance) |
| 6485 | 191 | { |
| 192 | gboolean found; | |
| 193 | ||
| 194 | g_return_if_fail(instance != NULL); | |
| 195 | ||
| 196 | found = g_hash_table_remove(instance_table, instance); | |
| 197 | ||
| 198 | /* | |
| 199 | * Makes things easier (more annoying?) for developers who don't have | |
| 200 | * things registering and unregistering in the right order :) | |
| 201 | */ | |
| 202 | g_return_if_fail(found); | |
| 203 | } | |
| 204 | ||
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
205 | void |
| 15884 | 206 | purple_signal_get_values(void *instance, const char *signal, |
| 207 | PurpleValue **ret_value, | |
| 208 | int *num_values, PurpleValue ***values) | |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
209 | { |
| 15884 | 210 | PurpleInstanceData *instance_data; |
| 211 | PurpleSignalData *signal_data; | |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
212 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
213 | g_return_if_fail(instance != NULL); |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
214 | g_return_if_fail(signal != NULL); |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
215 | g_return_if_fail(num_values != NULL); |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
216 | g_return_if_fail(values != NULL); |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
217 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
218 | /* Get the instance data */ |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
219 | instance_data = |
| 15884 | 220 | (PurpleInstanceData *)g_hash_table_lookup(instance_table, instance); |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
221 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
222 | g_return_if_fail(instance_data != NULL); |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
223 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
224 | /* Get the signal data */ |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
225 | signal_data = |
| 15884 | 226 | (PurpleSignalData *)g_hash_table_lookup(instance_data->signals, signal); |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
227 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
228 | g_return_if_fail(signal_data != NULL); |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
229 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
230 | *num_values = signal_data->num_values; |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
231 | *values = signal_data->values; |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
232 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
233 | if (ret_value != NULL) |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
234 | *ret_value = signal_data->ret_value; |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
235 | } |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6553
diff
changeset
|
236 | |
| 10656 | 237 | static gint handler_priority(void * a, void * b) { |
| 15884 | 238 | PurpleSignalHandlerData *ah = (PurpleSignalHandlerData*)a; |
| 239 | PurpleSignalHandlerData *bh = (PurpleSignalHandlerData*)b; | |
| 10656 | 240 | if (ah->priority > bh->priority) return 1; |
| 241 | if (ah->priority < bh->priority) return -1; | |
| 242 | return 0; | |
| 243 | } | |
| 244 | ||
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
245 | static gulong |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
246 | signal_connect_common(void *instance, const char *signal, void *handle, |
| 15884 | 247 | PurpleCallback func, void *data, int priority, gboolean use_vargs) |
| 6485 | 248 | { |
| 15884 | 249 | PurpleInstanceData *instance_data; |
| 250 | PurpleSignalData *signal_data; | |
| 251 | PurpleSignalHandlerData *handler_data; | |
| 6485 | 252 | |
| 253 | g_return_val_if_fail(instance != NULL, 0); | |
| 254 | g_return_val_if_fail(signal != NULL, 0); | |
| 255 | g_return_val_if_fail(handle != NULL, 0); | |
| 256 | g_return_val_if_fail(func != NULL, 0); | |
| 257 | ||
| 258 | /* Get the instance data */ | |
| 259 | instance_data = | |
| 15884 | 260 | (PurpleInstanceData *)g_hash_table_lookup(instance_table, instance); |
| 6485 | 261 | |
|
14018
0d82c17d8000
[gaim-migrate @ 16505]
Mark Doliner <markdoliner@pidgin.im>
parents:
13056
diff
changeset
|
262 | if (instance_data == NULL) |
|
0d82c17d8000
[gaim-migrate @ 16505]
Mark Doliner <markdoliner@pidgin.im>
parents:
13056
diff
changeset
|
263 | { |
| 15884 | 264 | purple_debug_warning("signals", "Something tried to register a callback " |
|
14018
0d82c17d8000
[gaim-migrate @ 16505]
Mark Doliner <markdoliner@pidgin.im>
parents:
13056
diff
changeset
|
265 | "for the '%s' signal, but we do not have any signals " |
|
0d82c17d8000
[gaim-migrate @ 16505]
Mark Doliner <markdoliner@pidgin.im>
parents:
13056
diff
changeset
|
266 | "registered with the given handle\n", signal); |
|
0d82c17d8000
[gaim-migrate @ 16505]
Mark Doliner <markdoliner@pidgin.im>
parents:
13056
diff
changeset
|
267 | g_return_val_if_reached(0); |
|
0d82c17d8000
[gaim-migrate @ 16505]
Mark Doliner <markdoliner@pidgin.im>
parents:
13056
diff
changeset
|
268 | } |
| 6485 | 269 | |
| 270 | /* Get the signal data */ | |
| 271 | signal_data = | |
| 15884 | 272 | (PurpleSignalData *)g_hash_table_lookup(instance_data->signals, signal); |
| 6485 | 273 | |
| 274 | if (signal_data == NULL) | |
| 275 | { | |
| 15884 | 276 | purple_debug(PURPLE_DEBUG_ERROR, "signals", |
| 6485 | 277 | "Signal data for %s not found!\n", signal); |
| 278 | return 0; | |
| 279 | } | |
| 280 | ||
| 281 | /* Create the signal handler data */ | |
| 15884 | 282 | handler_data = g_new0(PurpleSignalHandlerData, 1); |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
283 | handler_data->id = signal_data->next_handler_id; |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
284 | handler_data->cb = func; |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
285 | handler_data->handle = handle; |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
286 | handler_data->data = data; |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
287 | handler_data->use_vargs = use_vargs; |
| 10656 | 288 | handler_data->priority = priority; |
|
10758
b4554ec8d126
[gaim-migrate @ 12361]
Mark Doliner <markdoliner@pidgin.im>
parents:
10656
diff
changeset
|
289 | |
| 10656 | 290 | signal_data->handlers = g_list_insert_sorted(signal_data->handlers, handler_data, (GCompareFunc)handler_priority); |
| 6485 | 291 | signal_data->handler_count++; |
| 292 | signal_data->next_handler_id++; | |
| 293 | ||
| 294 | return handler_data->id; | |
| 295 | } | |
|
6553
83467711007f
[gaim-migrate @ 7075]
Christian Hammond <chipx86@chipx86.com>
parents:
6547
diff
changeset
|
296 | |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
297 | gulong |
| 15884 | 298 | purple_signal_connect_priority(void *instance, const char *signal, void *handle, |
| 299 | PurpleCallback func, void *data, int priority) | |
| 10656 | 300 | { |
| 301 | return signal_connect_common(instance, signal, handle, func, data, priority, FALSE); | |
| 302 | } | |
| 303 | ||
| 304 | gulong | |
| 15884 | 305 | purple_signal_connect(void *instance, const char *signal, void *handle, |
| 306 | PurpleCallback func, void *data) | |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
307 | { |
| 15884 | 308 | return signal_connect_common(instance, signal, handle, func, data, PURPLE_SIGNAL_PRIORITY_DEFAULT, FALSE); |
| 10656 | 309 | } |
| 310 | ||
| 311 | gulong | |
| 15884 | 312 | purple_signal_connect_priority_vargs(void *instance, const char *signal, void *handle, |
| 313 | PurpleCallback func, void *data, int priority) | |
| 10656 | 314 | { |
| 315 | return signal_connect_common(instance, signal, handle, func, data, priority, TRUE); | |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
316 | } |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
317 | |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
318 | gulong |
| 15884 | 319 | purple_signal_connect_vargs(void *instance, const char *signal, void *handle, |
| 320 | PurpleCallback func, void *data) | |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
321 | { |
| 15884 | 322 | return signal_connect_common(instance, signal, handle, func, data, PURPLE_SIGNAL_PRIORITY_DEFAULT, TRUE); |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
323 | } |
| 6485 | 324 | |
| 325 | void | |
| 15884 | 326 | purple_signal_disconnect(void *instance, const char *signal, |
| 327 | void *handle, PurpleCallback func) | |
| 6485 | 328 | { |
| 15884 | 329 | PurpleInstanceData *instance_data; |
| 330 | PurpleSignalData *signal_data; | |
| 331 | PurpleSignalHandlerData *handler_data; | |
| 6485 | 332 | GList *l; |
| 333 | gboolean found = FALSE; | |
| 334 | ||
| 335 | g_return_if_fail(instance != NULL); | |
| 336 | g_return_if_fail(signal != NULL); | |
| 337 | g_return_if_fail(handle != NULL); | |
| 338 | g_return_if_fail(func != NULL); | |
| 339 | ||
| 340 | /* Get the instance data */ | |
| 341 | instance_data = | |
| 15884 | 342 | (PurpleInstanceData *)g_hash_table_lookup(instance_table, instance); |
| 6485 | 343 | |
| 344 | g_return_if_fail(instance_data != NULL); | |
| 345 | ||
| 346 | /* Get the signal data */ | |
| 347 | signal_data = | |
| 15884 | 348 | (PurpleSignalData *)g_hash_table_lookup(instance_data->signals, signal); |
| 6485 | 349 | |
| 350 | if (signal_data == NULL) | |
| 351 | { | |
| 15884 | 352 | purple_debug(PURPLE_DEBUG_ERROR, "signals", |
| 6485 | 353 | "Signal data for %s not found!\n", signal); |
| 354 | return; | |
| 355 | } | |
| 356 | ||
| 357 | /* Find the handler data. */ | |
| 358 | for (l = signal_data->handlers; l != NULL; l = l->next) | |
| 359 | { | |
| 15884 | 360 | handler_data = (PurpleSignalHandlerData *)l->data; |
| 6485 | 361 | |
| 362 | if (handler_data->handle == handle && handler_data->cb == func) | |
| 363 | { | |
| 364 | g_free(handler_data); | |
| 365 | ||
| 366 | signal_data->handlers = g_list_remove(signal_data->handlers, | |
| 367 | handler_data); | |
| 368 | signal_data->handler_count--; | |
| 369 | ||
| 370 | found = TRUE; | |
| 371 | ||
| 372 | break; | |
| 373 | } | |
| 374 | } | |
| 375 | ||
| 376 | /* See note somewhere about this actually helping developers.. */ | |
| 377 | g_return_if_fail(found); | |
| 378 | } | |
| 379 | ||
| 380 | /* | |
| 381 | * TODO: Make this all more efficient by storing a list of handlers, keyed | |
| 382 | * to a handle. | |
| 383 | */ | |
| 384 | static void | |
| 385 | disconnect_handle_from_signals(const char *signal, | |
| 15884 | 386 | PurpleSignalData *signal_data, void *handle) |
| 6485 | 387 | { |
| 388 | GList *l, *l_next; | |
| 15884 | 389 | PurpleSignalHandlerData *handler_data; |
| 6485 | 390 | |
| 391 | for (l = signal_data->handlers; l != NULL; l = l_next) | |
| 392 | { | |
| 15884 | 393 | handler_data = (PurpleSignalHandlerData *)l->data; |
| 6485 | 394 | l_next = l->next; |
| 395 | ||
| 396 | if (handler_data->handle == handle) | |
| 397 | { | |
| 398 | g_free(handler_data); | |
| 399 | ||
| 400 | signal_data->handler_count--; | |
| 401 | signal_data->handlers = g_list_remove(signal_data->handlers, | |
| 402 | handler_data); | |
| 403 | } | |
| 404 | } | |
| 405 | } | |
| 406 | ||
| 407 | static void | |
| 408 | disconnect_handle_from_instance(void *instance, | |
| 15884 | 409 | PurpleInstanceData *instance_data, |
| 6485 | 410 | void *handle) |
| 411 | { | |
| 412 | g_hash_table_foreach(instance_data->signals, | |
| 413 | (GHFunc)disconnect_handle_from_signals, handle); | |
| 414 | } | |
| 415 | ||
| 416 | void | |
| 15884 | 417 | purple_signals_disconnect_by_handle(void *handle) |
| 6485 | 418 | { |
| 419 | g_return_if_fail(handle != NULL); | |
| 420 | ||
| 421 | g_hash_table_foreach(instance_table, | |
| 422 | (GHFunc)disconnect_handle_from_instance, handle); | |
| 423 | } | |
| 424 | ||
| 425 | void | |
| 15884 | 426 | purple_signal_emit(void *instance, const char *signal, ...) |
| 6485 | 427 | { |
| 428 | va_list args; | |
| 429 | ||
|
7584
c5c001397626
[gaim-migrate @ 8202]
Christian Hammond <chipx86@chipx86.com>
parents:
6822
diff
changeset
|
430 | g_return_if_fail(instance != NULL); |
|
c5c001397626
[gaim-migrate @ 8202]
Christian Hammond <chipx86@chipx86.com>
parents:
6822
diff
changeset
|
431 | g_return_if_fail(signal != NULL); |
|
c5c001397626
[gaim-migrate @ 8202]
Christian Hammond <chipx86@chipx86.com>
parents:
6822
diff
changeset
|
432 | |
| 6485 | 433 | va_start(args, signal); |
| 15884 | 434 | purple_signal_emit_vargs(instance, signal, args); |
| 6485 | 435 | va_end(args); |
| 436 | } | |
| 437 | ||
| 438 | void | |
| 15884 | 439 | purple_signal_emit_vargs(void *instance, const char *signal, va_list args) |
| 6485 | 440 | { |
| 15884 | 441 | PurpleInstanceData *instance_data; |
| 442 | PurpleSignalData *signal_data; | |
| 443 | PurpleSignalHandlerData *handler_data; | |
|
8004
32efb93b8b4d
[gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents:
7597
diff
changeset
|
444 | GList *l, *l_next; |
| 8090 | 445 | va_list tmp; |
| 6485 | 446 | |
| 447 | g_return_if_fail(instance != NULL); | |
| 448 | g_return_if_fail(signal != NULL); | |
| 449 | ||
| 450 | instance_data = | |
| 15884 | 451 | (PurpleInstanceData *)g_hash_table_lookup(instance_table, instance); |
| 6485 | 452 | |
| 453 | g_return_if_fail(instance_data != NULL); | |
| 454 | ||
| 455 | signal_data = | |
| 15884 | 456 | (PurpleSignalData *)g_hash_table_lookup(instance_data->signals, signal); |
| 6485 | 457 | |
| 458 | if (signal_data == NULL) | |
| 459 | { | |
| 15884 | 460 | purple_debug(PURPLE_DEBUG_ERROR, "signals", |
| 6485 | 461 | "Signal data for %s not found!\n", signal); |
| 462 | return; | |
| 463 | } | |
| 464 | ||
|
8004
32efb93b8b4d
[gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents:
7597
diff
changeset
|
465 | for (l = signal_data->handlers; l != NULL; l = l_next) |
| 6485 | 466 | { |
|
8004
32efb93b8b4d
[gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents:
7597
diff
changeset
|
467 | l_next = l->next; |
|
32efb93b8b4d
[gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents:
7597
diff
changeset
|
468 | |
| 15884 | 469 | handler_data = (PurpleSignalHandlerData *)l->data; |
| 6485 | 470 | |
| 8090 | 471 | /* This is necessary because a va_list may only be |
| 472 | * evaluated once */ | |
| 8142 | 473 | G_VA_COPY(tmp, args); |
| 8090 | 474 | |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
475 | if (handler_data->use_vargs) |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
476 | { |
| 8090 | 477 | ((void (*)(va_list, void *))handler_data->cb)(tmp, |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
478 | handler_data->data); |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
479 | } |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
480 | else |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
481 | { |
| 8090 | 482 | signal_data->marshal(handler_data->cb, tmp, |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
483 | handler_data->data, NULL); |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
484 | } |
| 8090 | 485 | |
| 486 | va_end(tmp); | |
| 6485 | 487 | } |
|
11080
0578003800d0
[gaim-migrate @ 13092]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11064
diff
changeset
|
488 | |
|
0578003800d0
[gaim-migrate @ 13092]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11064
diff
changeset
|
489 | #ifdef HAVE_DBUS |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
21655
diff
changeset
|
490 | purple_dbus_signal_emit_purple(signal, signal_data->num_values, |
|
11080
0578003800d0
[gaim-migrate @ 13092]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11064
diff
changeset
|
491 | signal_data->values, args); |
|
0578003800d0
[gaim-migrate @ 13092]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11064
diff
changeset
|
492 | #endif /* HAVE_DBUS */ |
|
0578003800d0
[gaim-migrate @ 13092]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11064
diff
changeset
|
493 | |
| 6485 | 494 | } |
| 495 | ||
| 496 | void * | |
| 15884 | 497 | purple_signal_emit_return_1(void *instance, const char *signal, ...) |
| 6485 | 498 | { |
| 499 | void *ret_val; | |
| 500 | va_list args; | |
| 501 | ||
|
7597
2be4a67c61db
[gaim-migrate @ 8218]
Christian Hammond <chipx86@chipx86.com>
parents:
7585
diff
changeset
|
502 | g_return_val_if_fail(instance != NULL, NULL); |
|
2be4a67c61db
[gaim-migrate @ 8218]
Christian Hammond <chipx86@chipx86.com>
parents:
7585
diff
changeset
|
503 | g_return_val_if_fail(signal != NULL, NULL); |
|
7585
b11298b0be88
[gaim-migrate @ 8203]
Christian Hammond <chipx86@chipx86.com>
parents:
7584
diff
changeset
|
504 | |
| 6485 | 505 | va_start(args, signal); |
| 15884 | 506 | ret_val = purple_signal_emit_vargs_return_1(instance, signal, args); |
| 6485 | 507 | va_end(args); |
| 508 | ||
| 509 | return ret_val; | |
| 510 | } | |
| 511 | ||
| 512 | void * | |
| 15884 | 513 | purple_signal_emit_vargs_return_1(void *instance, const char *signal, |
| 6485 | 514 | va_list args) |
| 515 | { | |
| 15884 | 516 | PurpleInstanceData *instance_data; |
| 517 | PurpleSignalData *signal_data; | |
| 518 | PurpleSignalHandlerData *handler_data; | |
|
8004
32efb93b8b4d
[gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents:
7597
diff
changeset
|
519 | GList *l, *l_next; |
|
8140
e5828d87baad
[gaim-migrate @ 8846]
Zaheer Merali <zaheerabbas@merali.org>
parents:
8090
diff
changeset
|
520 | va_list tmp; |
| 6485 | 521 | |
| 522 | g_return_val_if_fail(instance != NULL, NULL); | |
| 523 | g_return_val_if_fail(signal != NULL, NULL); | |
| 524 | ||
| 525 | instance_data = | |
| 15884 | 526 | (PurpleInstanceData *)g_hash_table_lookup(instance_table, instance); |
| 6485 | 527 | |
| 528 | g_return_val_if_fail(instance_data != NULL, NULL); | |
| 529 | ||
| 530 | signal_data = | |
| 15884 | 531 | (PurpleSignalData *)g_hash_table_lookup(instance_data->signals, signal); |
| 6485 | 532 | |
| 533 | if (signal_data == NULL) | |
| 534 | { | |
| 15884 | 535 | purple_debug(PURPLE_DEBUG_ERROR, "signals", |
| 6485 | 536 | "Signal data for %s not found!\n", signal); |
| 537 | return 0; | |
| 538 | } | |
| 539 | ||
|
11080
0578003800d0
[gaim-migrate @ 13092]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11064
diff
changeset
|
540 | #ifdef HAVE_DBUS |
| 13056 | 541 | G_VA_COPY(tmp, args); |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
21655
diff
changeset
|
542 | purple_dbus_signal_emit_purple(signal, signal_data->num_values, |
|
13055
f3b02fef5fae
[gaim-migrate @ 15417]
Richard Laager <rlaager@pidgin.im>
parents:
12737
diff
changeset
|
543 | signal_data->values, tmp); |
|
f3b02fef5fae
[gaim-migrate @ 15417]
Richard Laager <rlaager@pidgin.im>
parents:
12737
diff
changeset
|
544 | va_end(tmp); |
|
11080
0578003800d0
[gaim-migrate @ 13092]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11064
diff
changeset
|
545 | #endif /* HAVE_DBUS */ |
|
0578003800d0
[gaim-migrate @ 13092]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11064
diff
changeset
|
546 | |
|
8004
32efb93b8b4d
[gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents:
7597
diff
changeset
|
547 | for (l = signal_data->handlers; l != NULL; l = l_next) |
| 6485 | 548 | { |
|
10789
cabd145237d8
[gaim-migrate @ 12431]
Richard Laager <rlaager@pidgin.im>
parents:
10758
diff
changeset
|
549 | void *ret_val = NULL; |
|
cabd145237d8
[gaim-migrate @ 12431]
Richard Laager <rlaager@pidgin.im>
parents:
10758
diff
changeset
|
550 | |
|
8004
32efb93b8b4d
[gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents:
7597
diff
changeset
|
551 | l_next = l->next; |
|
32efb93b8b4d
[gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents:
7597
diff
changeset
|
552 | |
| 15884 | 553 | handler_data = (PurpleSignalHandlerData *)l->data; |
| 6485 | 554 | |
| 8142 | 555 | G_VA_COPY(tmp, args); |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
556 | if (handler_data->use_vargs) |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
557 | { |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
558 | ret_val = ((void *(*)(va_list, void *))handler_data->cb)( |
|
8140
e5828d87baad
[gaim-migrate @ 8846]
Zaheer Merali <zaheerabbas@merali.org>
parents:
8090
diff
changeset
|
559 | tmp, handler_data->data); |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
560 | } |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
561 | else |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
562 | { |
|
8140
e5828d87baad
[gaim-migrate @ 8846]
Zaheer Merali <zaheerabbas@merali.org>
parents:
8090
diff
changeset
|
563 | signal_data->marshal(handler_data->cb, tmp, |
|
6547
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
564 | handler_data->data, &ret_val); |
|
ffc0e15d291b
[gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents:
6509
diff
changeset
|
565 | } |
|
8140
e5828d87baad
[gaim-migrate @ 8846]
Zaheer Merali <zaheerabbas@merali.org>
parents:
8090
diff
changeset
|
566 | va_end(tmp); |
|
10789
cabd145237d8
[gaim-migrate @ 12431]
Richard Laager <rlaager@pidgin.im>
parents:
10758
diff
changeset
|
567 | |
|
cabd145237d8
[gaim-migrate @ 12431]
Richard Laager <rlaager@pidgin.im>
parents:
10758
diff
changeset
|
568 | if (ret_val != NULL) |
|
cabd145237d8
[gaim-migrate @ 12431]
Richard Laager <rlaager@pidgin.im>
parents:
10758
diff
changeset
|
569 | return ret_val; |
| 6485 | 570 | } |
| 571 | ||
|
10789
cabd145237d8
[gaim-migrate @ 12431]
Richard Laager <rlaager@pidgin.im>
parents:
10758
diff
changeset
|
572 | return NULL; |
| 6485 | 573 | } |
| 574 | ||
| 575 | void | |
| 15884 | 576 | purple_signals_init() |
| 6485 | 577 | { |
| 578 | g_return_if_fail(instance_table == NULL); | |
| 579 | ||
| 580 | instance_table = | |
| 581 | g_hash_table_new_full(g_direct_hash, g_direct_equal, | |
| 582 | NULL, (GDestroyNotify)destroy_instance_data); | |
| 583 | } | |
| 584 | ||
| 585 | void | |
| 15884 | 586 | purple_signals_uninit() |
| 6485 | 587 | { |
| 588 | g_return_if_fail(instance_table != NULL); | |
| 589 | ||
| 590 | g_hash_table_destroy(instance_table); | |
| 591 | instance_table = NULL; | |
| 592 | } | |
| 593 | ||
| 594 | /************************************************************************** | |
| 595 | * Marshallers | |
| 596 | **************************************************************************/ | |
| 597 | void | |
| 15884 | 598 | purple_marshal_VOID(PurpleCallback cb, va_list args, void *data, |
| 6485 | 599 | void **return_val) |
| 600 | { | |
| 601 | ((void (*)(void *))cb)(data); | |
| 602 | } | |
| 603 | ||
| 604 | void | |
| 15884 | 605 | purple_marshal_VOID__INT(PurpleCallback cb, va_list args, void *data, |
|
6822
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
606 | void **return_val) |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
607 | { |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
608 | gint arg1 = va_arg(args, gint); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
609 | |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
610 | ((void (*)(gint, void *))cb)(arg1, data); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
611 | } |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
612 | |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
613 | void |
| 15884 | 614 | purple_marshal_VOID__INT_INT(PurpleCallback cb, va_list args, void *data, |
|
6822
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
615 | void **return_val) |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
616 | { |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
617 | gint arg1 = va_arg(args, gint); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
618 | gint arg2 = va_arg(args, gint); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
619 | |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
620 | ((void (*)(gint, gint, void *))cb)(arg1, arg2, data); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
621 | } |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
622 | |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
623 | void |
| 15884 | 624 | purple_marshal_VOID__POINTER(PurpleCallback cb, va_list args, void *data, |
| 6485 | 625 | void **return_val) |
| 626 | { | |
| 6505 | 627 | void *arg1 = va_arg(args, void *); |
| 628 | ||
| 629 | ((void (*)(void *, void *))cb)(arg1, data); | |
| 6485 | 630 | } |
| 631 | ||
| 632 | void | |
| 15884 | 633 | purple_marshal_VOID__POINTER_UINT(PurpleCallback cb, va_list args, |
| 9734 | 634 | void *data, void **return_val) |
| 635 | { | |
| 636 | void *arg1 = va_arg(args, void *); | |
| 637 | guint arg2 = va_arg(args, guint); | |
| 638 | ||
| 639 | ((void (*)(void *, guint, void *))cb)(arg1, arg2, data); | |
| 640 | } | |
| 641 | ||
| 15884 | 642 | void purple_marshal_VOID__POINTER_INT_INT(PurpleCallback cb, va_list args, |
| 11935 | 643 | void *data, void **return_val) |
| 644 | { | |
| 645 | void *arg1 = va_arg(args, void *); | |
| 646 | gint arg2 = va_arg(args, gint); | |
| 647 | gint arg3 = va_arg(args, gint); | |
| 648 | ||
| 649 | ((void (*)(void *, gint, gint, void *))cb)(arg1, arg2, arg3, data); | |
| 650 | } | |
| 651 | ||
|
21285
ca8cb8706802
I figured a signal firing on a connection error would be useful.
Will Thompson <resiak@pidgin.im>
parents:
20826
diff
changeset
|
652 | void purple_marshal_VOID__POINTER_INT_POINTER(PurpleCallback cb, va_list args, |
|
ca8cb8706802
I figured a signal firing on a connection error would be useful.
Will Thompson <resiak@pidgin.im>
parents:
20826
diff
changeset
|
653 | void *data, void **return_val) |
|
ca8cb8706802
I figured a signal firing on a connection error would be useful.
Will Thompson <resiak@pidgin.im>
parents:
20826
diff
changeset
|
654 | { |
|
ca8cb8706802
I figured a signal firing on a connection error would be useful.
Will Thompson <resiak@pidgin.im>
parents:
20826
diff
changeset
|
655 | void *arg1 = va_arg(args, void *); |
|
ca8cb8706802
I figured a signal firing on a connection error would be useful.
Will Thompson <resiak@pidgin.im>
parents:
20826
diff
changeset
|
656 | gint arg2 = va_arg(args, gint); |
|
ca8cb8706802
I figured a signal firing on a connection error would be useful.
Will Thompson <resiak@pidgin.im>
parents:
20826
diff
changeset
|
657 | void *arg3 = va_arg(args, void *); |
|
ca8cb8706802
I figured a signal firing on a connection error would be useful.
Will Thompson <resiak@pidgin.im>
parents:
20826
diff
changeset
|
658 | |
|
ca8cb8706802
I figured a signal firing on a connection error would be useful.
Will Thompson <resiak@pidgin.im>
parents:
20826
diff
changeset
|
659 | ((void (*)(void *, gint, void *, void *))cb)(arg1, arg2, arg3, data); |
|
ca8cb8706802
I figured a signal firing on a connection error would be useful.
Will Thompson <resiak@pidgin.im>
parents:
20826
diff
changeset
|
660 | } |
|
ca8cb8706802
I figured a signal firing on a connection error would be useful.
Will Thompson <resiak@pidgin.im>
parents:
20826
diff
changeset
|
661 | |
| 9734 | 662 | void |
| 15884 | 663 | purple_marshal_VOID__POINTER_POINTER(PurpleCallback cb, va_list args, |
| 6485 | 664 | void *data, void **return_val) |
| 665 | { | |
| 6505 | 666 | void *arg1 = va_arg(args, void *); |
| 667 | void *arg2 = va_arg(args, void *); | |
| 668 | ||
| 669 | ((void (*)(void *, void *, void *))cb)(arg1, arg2, data); | |
| 6485 | 670 | } |
| 671 | ||
| 672 | void | |
| 15884 | 673 | purple_marshal_VOID__POINTER_POINTER_UINT(PurpleCallback cb, va_list args, |
| 6485 | 674 | void *data, void **return_val) |
| 675 | { | |
| 6505 | 676 | void *arg1 = va_arg(args, void *); |
| 677 | void *arg2 = va_arg(args, void *); | |
| 678 | guint arg3 = va_arg(args, guint); | |
| 679 | ||
| 680 | ((void (*)(void *, void *, guint, void *))cb)(arg1, arg2, arg3, data); | |
| 6485 | 681 | } |
| 682 | ||
| 683 | void | |
| 15884 | 684 | purple_marshal_VOID__POINTER_POINTER_UINT_UINT(PurpleCallback cb, va_list args, |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9514
diff
changeset
|
685 | void *data, void **return_val) |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9514
diff
changeset
|
686 | { |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9514
diff
changeset
|
687 | void *arg1 = va_arg(args, void *); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9514
diff
changeset
|
688 | void *arg2 = va_arg(args, void *); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9514
diff
changeset
|
689 | guint arg3 = va_arg(args, guint); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9514
diff
changeset
|
690 | guint arg4 = va_arg(args, guint); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9514
diff
changeset
|
691 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9514
diff
changeset
|
692 | ((void (*)(void *, void *, guint, guint, void *))cb)(arg1, arg2, arg3, arg4, data); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9514
diff
changeset
|
693 | } |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9514
diff
changeset
|
694 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9514
diff
changeset
|
695 | void |
| 15884 | 696 | purple_marshal_VOID__POINTER_POINTER_POINTER(PurpleCallback cb, va_list args, |
| 6485 | 697 | void *data, void **return_val) |
| 698 | { | |
| 6505 | 699 | void *arg1 = va_arg(args, void *); |
| 700 | void *arg2 = va_arg(args, void *); | |
| 701 | void *arg3 = va_arg(args, void *); | |
| 702 | ||
| 703 | ((void (*)(void *, void *, void *, void *))cb)(arg1, arg2, arg3, data); | |
| 6485 | 704 | } |
| 705 | ||
| 706 | void | |
| 15884 | 707 | purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER(PurpleCallback cb, |
| 6485 | 708 | va_list args, |
| 709 | void *data, | |
| 710 | void **return_val) | |
| 711 | { | |
| 6505 | 712 | void *arg1 = va_arg(args, void *); |
| 713 | void *arg2 = va_arg(args, void *); | |
| 714 | void *arg3 = va_arg(args, void *); | |
| 715 | void *arg4 = va_arg(args, void *); | |
| 716 | ||
| 717 | ((void (*)(void *, void *, void *, void *, void *))cb)(arg1, arg2, arg3, arg4, data); | |
| 6485 | 718 | } |
| 6509 | 719 | |
| 720 | void | |
| 15884 | 721 | purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER(PurpleCallback cb, |
| 9514 | 722 | va_list args, |
| 723 | void *data, | |
| 724 | void **return_val) | |
| 725 | { | |
| 726 | void *arg1 = va_arg(args, void *); | |
| 727 | void *arg2 = va_arg(args, void *); | |
| 728 | void *arg3 = va_arg(args, void *); | |
| 729 | void *arg4 = va_arg(args, void *); | |
| 730 | void *arg5 = va_arg(args, void *); | |
| 731 | ||
| 732 | ((void (*)(void *, void *, void *, void *, void *, void *))cb)(arg1, arg2, arg3, arg4, arg5, data); | |
| 733 | } | |
| 734 | ||
| 735 | void | |
| 15884 | 736 | purple_marshal_VOID__POINTER_POINTER_POINTER_UINT(PurpleCallback cb, |
| 6509 | 737 | va_list args, |
| 738 | void *data, | |
| 739 | void **return_val) | |
| 740 | { | |
| 741 | void *arg1 = va_arg(args, void *); | |
| 742 | void *arg2 = va_arg(args, void *); | |
| 743 | void *arg3 = va_arg(args, void *); | |
| 744 | guint arg4 = va_arg(args, guint); | |
| 745 | ||
| 746 | ((void (*)(void *, void *, void *, guint, void *))cb)(arg1, arg2, arg3, arg4, data); | |
| 747 | } | |
| 748 | ||
| 6485 | 749 | void |
| 15884 | 750 | purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT(PurpleCallback cb, |
|
10104
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
751 | va_list args, |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
752 | void *data, |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
753 | void **return_val) |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
754 | { |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
755 | void *arg1 = va_arg(args, void *); |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
756 | void *arg2 = va_arg(args, void *); |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
757 | void *arg3 = va_arg(args, void *); |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
758 | void *arg4 = va_arg(args, void *); |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
759 | guint arg5 = va_arg(args, guint); |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
760 | |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
761 | ((void (*)(void *, void *, void *, void *, guint, void *))cb)(arg1, arg2, arg3, arg4, arg5, data); |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
762 | } |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
763 | |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9734
diff
changeset
|
764 | void |
| 15884 | 765 | purple_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(PurpleCallback cb, |
| 6485 | 766 | va_list args, |
| 767 | void *data, | |
| 768 | void **return_val) | |
| 769 | { | |
| 6505 | 770 | void *arg1 = va_arg(args, void *); |
| 771 | void *arg2 = va_arg(args, void *); | |
| 772 | void *arg3 = va_arg(args, void *); | |
| 773 | guint arg4 = va_arg(args, guint); | |
| 774 | guint arg5 = va_arg(args, guint); | |
| 775 | ||
| 6485 | 776 | ((void (*)(void *, void *, void *, guint, guint, void *))cb)( |
| 6505 | 777 | arg1, arg2, arg3, arg4, arg5, data); |
| 6485 | 778 | } |
| 779 | ||
| 780 | void | |
| 15884 | 781 | purple_marshal_INT__INT(PurpleCallback cb, va_list args, void *data, |
|
6822
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
782 | void **return_val) |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
783 | { |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
784 | gint ret_val; |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
785 | gint arg1 = va_arg(args, gint); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
786 | |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
787 | ret_val = ((gint (*)(gint, void *))cb)(arg1, data); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
788 | |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
789 | if (return_val != NULL) |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
790 | *return_val = GINT_TO_POINTER(ret_val); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
791 | } |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
792 | |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
793 | void |
| 15884 | 794 | purple_marshal_INT__INT_INT(PurpleCallback cb, va_list args, void *data, |
|
6822
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
795 | void **return_val) |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
796 | { |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
797 | gint ret_val; |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
798 | gint arg1 = va_arg(args, gint); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
799 | gint arg2 = va_arg(args, gint); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
800 | |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
801 | ret_val = ((gint (*)(gint, gint, void *))cb)(arg1, arg2, data); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
802 | |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
803 | if (return_val != NULL) |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
804 | *return_val = GINT_TO_POINTER(ret_val); |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
805 | } |
|
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
806 | |
|
20826
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
807 | void |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
808 | purple_marshal_INT__POINTER_POINTER(PurpleCallback cb, va_list args, void *data, |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
809 | void **return_val) |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
810 | { |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
811 | gint ret_val; |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
812 | void *arg1 = va_arg(args, void *); |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
813 | void *arg2 = va_arg(args, void *); |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
814 | |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
815 | ret_val = ((gint (*)(void *, void *, void *))cb)(arg1, arg2, data); |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
816 | |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
817 | if (return_val != NULL) |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
818 | *return_val = GINT_TO_POINTER(ret_val); |
|
7d3e1c66e07c
Add marshalling functions for the authorization signals.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20147
diff
changeset
|
819 | } |
| 11064 | 820 | |
| 821 | void | |
| 15884 | 822 | purple_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER( |
| 823 | PurpleCallback cb, va_list args, void *data, void **return_val) | |
| 11064 | 824 | { |
| 825 | gint ret_val; | |
| 826 | void *arg1 = va_arg(args, void *); | |
| 827 | void *arg2 = va_arg(args, void *); | |
| 828 | void *arg3 = va_arg(args, void *); | |
| 829 | void *arg4 = va_arg(args, void *); | |
| 830 | void *arg5 = va_arg(args, void *); | |
| 831 | ||
| 832 | ret_val = | |
| 833 | ((gint (*)(void *, void *, void *, void *, void *, void *))cb)( | |
| 834 | arg1, arg2, arg3, arg4, arg5, data); | |
| 835 | ||
| 836 | if (return_val != NULL) | |
| 837 | *return_val = GINT_TO_POINTER(ret_val); | |
| 838 | } | |
| 839 | ||
|
6822
4adcde13ad17
[gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents:
6564
diff
changeset
|
840 | void |
| 15884 | 841 | purple_marshal_BOOLEAN__POINTER(PurpleCallback cb, va_list args, void *data, |
| 6485 | 842 | void **return_val) |
| 843 | { | |
| 844 | gboolean ret_val; | |
| 6505 | 845 | void *arg1 = va_arg(args, void *); |
| 6485 | 846 | |
| 6505 | 847 | ret_val = ((gboolean (*)(void *, void *))cb)(arg1, data); |
| 6485 | 848 | |
| 849 | if (return_val != NULL) | |
| 850 | *return_val = GINT_TO_POINTER(ret_val); | |
| 851 | } | |
| 852 | ||
| 853 | void | |
| 15884 | 854 | purple_marshal_BOOLEAN__POINTER_POINTER(PurpleCallback cb, va_list args, |
| 6485 | 855 | void *data, void **return_val) |
| 856 | { | |
| 857 | gboolean ret_val; | |
| 6505 | 858 | void *arg1 = va_arg(args, void *); |
| 859 | void *arg2 = va_arg(args, void *); | |
| 6485 | 860 | |
| 6505 | 861 | ret_val = ((gboolean (*)(void *, void *, void *))cb)(arg1, arg2, data); |
| 6485 | 862 | |
| 863 | if (return_val != NULL) | |
| 864 | *return_val = GINT_TO_POINTER(ret_val); | |
| 865 | } | |
| 866 | ||
| 867 | void | |
| 15884 | 868 | purple_marshal_BOOLEAN__POINTER_POINTER_POINTER(PurpleCallback cb, va_list args, |
| 6509 | 869 | void *data, void **return_val) |
| 870 | { | |
| 871 | gboolean ret_val; | |
| 872 | void *arg1 = va_arg(args, void *); | |
| 873 | void *arg2 = va_arg(args, void *); | |
| 874 | void *arg3 = va_arg(args, void *); | |
| 875 | ||
| 876 | ret_val = ((gboolean (*)(void *, void *, void *, void *))cb)(arg1, arg2, | |
| 877 | arg3, data); | |
| 878 | ||
| 879 | if (return_val != NULL) | |
| 880 | *return_val = GINT_TO_POINTER(ret_val); | |
| 881 | } | |
| 882 | ||
| 883 | void | |
| 15884 | 884 | purple_marshal_BOOLEAN__POINTER_POINTER_UINT(PurpleCallback cb, |
| 6509 | 885 | va_list args, |
| 886 | void *data, | |
| 887 | void **return_val) | |
| 888 | { | |
| 889 | gboolean ret_val; | |
| 890 | void *arg1 = va_arg(args, void *); | |
| 891 | void *arg2 = va_arg(args, void *); | |
| 892 | guint arg3 = va_arg(args, guint); | |
| 893 | ||
| 894 | ret_val = ((gboolean (*)(void *, void *, guint, void *))cb)( | |
| 895 | arg1, arg2, arg3, data); | |
| 896 | ||
| 897 | if (return_val != NULL) | |
| 898 | *return_val = GINT_TO_POINTER(ret_val); | |
| 899 | } | |
| 900 | ||
| 901 | void | |
| 15884 | 902 | purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT(PurpleCallback cb, |
| 6485 | 903 | va_list args, |
| 904 | void *data, | |
| 905 | void **return_val) | |
| 906 | { | |
| 907 | gboolean ret_val; | |
| 6505 | 908 | void *arg1 = va_arg(args, void *); |
| 909 | void *arg2 = va_arg(args, void *); | |
| 910 | void *arg3 = va_arg(args, void *); | |
| 911 | guint arg4 = va_arg(args, guint); | |
| 6485 | 912 | |
| 913 | ret_val = ((gboolean (*)(void *, void *, void *, guint, void *))cb)( | |
| 6505 | 914 | arg1, arg2, arg3, arg4, data); |
| 6485 | 915 | |
| 916 | if (return_val != NULL) | |
| 917 | *return_val = GINT_TO_POINTER(ret_val); | |
| 918 | } | |
| 919 | ||
| 920 | void | |
| 15884 | 921 | purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER(PurpleCallback cb, |
| 6485 | 922 | va_list args, |
| 923 | void *data, | |
| 924 | void **return_val) | |
| 925 | { | |
| 926 | gboolean ret_val; | |
| 6505 | 927 | void *arg1 = va_arg(args, void *); |
| 928 | void *arg2 = va_arg(args, void *); | |
| 929 | void *arg3 = va_arg(args, void *); | |
| 930 | void *arg4 = va_arg(args, void *); | |
| 6485 | 931 | |
| 932 | ret_val = ((gboolean (*)(void *, void *, void *, void *, void *))cb)( | |
| 6505 | 933 | arg1, arg2, arg3, arg4, data); |
| 6485 | 934 | |
| 935 | if (return_val != NULL) | |
| 936 | *return_val = GINT_TO_POINTER(ret_val); | |
| 937 | } | |
| 938 | ||
| 939 | void | |
| 15884 | 940 | purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER( |
| 941 | PurpleCallback cb, va_list args, void *data, void **return_val) | |
| 6485 | 942 | { |
| 943 | gboolean ret_val; | |
| 6505 | 944 | void *arg1 = va_arg(args, void *); |
| 945 | void *arg2 = va_arg(args, void *); | |
| 946 | void *arg3 = va_arg(args, void *); | |
| 947 | void *arg4 = va_arg(args, void *); | |
| 948 | void *arg5 = va_arg(args, void *); | |
| 6485 | 949 | |
| 950 | ret_val = | |
| 951 | ((gboolean (*)(void *, void *, void *, void *, void *, void *))cb)( | |
| 6505 | 952 | arg1, arg2, arg3, arg4, arg5, data); |
| 6485 | 953 | |
| 954 | if (return_val != NULL) | |
| 955 | *return_val = GINT_TO_POINTER(ret_val); | |
| 956 | } | |
| 12291 | 957 | |
| 958 | void | |
|
18744
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
959 | purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT( |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
960 | PurpleCallback cb, va_list args, void *data, void **return_val) |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
961 | { |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
962 | gboolean ret_val; |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
963 | void *arg1 = va_arg(args, void *); |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
964 | void *arg2 = va_arg(args, void *); |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
965 | void *arg3 = va_arg(args, void *); |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
966 | void *arg4 = va_arg(args, void *); |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
967 | guint arg5 = va_arg(args, guint); |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
968 | |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
969 | ret_val = |
|
18751
95803914971e
Oleg Sukhodolsky noticed that the callback function was cast incorrectly in
Will Thompson <resiak@pidgin.im>
parents:
18744
diff
changeset
|
970 | ((gboolean (*)(void *, void *, void *, void *, guint, void *))cb)( |
|
18744
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
971 | arg1, arg2, arg3, arg4, arg5, data); |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
972 | |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
973 | if (return_val != NULL) |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
974 | *return_val = GINT_TO_POINTER(ret_val); |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
975 | } |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
976 | |
|
e6b4c7abe951
Fix up writing-im-msg and writing-chat-msg to use a marshaller which treats the
Will Thompson <resiak@pidgin.im>
parents:
15884
diff
changeset
|
977 | void |
| 15884 | 978 | purple_marshal_BOOLEAN__INT_POINTER(PurpleCallback cb, va_list args, void *data, |
| 12291 | 979 | void **return_val) |
| 980 | { | |
| 981 | gboolean ret_val; | |
| 982 | gint arg1 = va_arg(args, gint); | |
| 983 | void *arg2 = va_arg(args, void *); | |
| 984 | ||
| 985 | ret_val = ((gboolean (*)(gint, void *, void *))cb)(arg1, arg2, data); | |
| 986 | ||
| 987 | if (return_val != NULL) | |
| 988 | *return_val = GINT_TO_POINTER(ret_val); | |
| 989 | } | |
|
12737
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
990 | |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
991 | void |
| 15884 | 992 | purple_marshal_POINTER__POINTER_INT( |
| 993 | PurpleCallback cb, va_list args, void *data, | |
|
14049
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
994 | void **return_val) |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
995 | { |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
996 | gpointer ret_val; |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
997 | void *arg1 = va_arg(args, void *); |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
998 | gint arg2 = va_arg(args, gint); |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
999 | |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1000 | ret_val = ((gpointer(*)(void *, gint, void *))cb)(arg1, arg2, data); |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1001 | |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1002 | if (return_val != NULL) |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1003 | *return_val = ret_val; |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1004 | } |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1005 | |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1006 | void |
| 15884 | 1007 | purple_marshal_POINTER__POINTER_INT64( |
| 1008 | PurpleCallback cb, va_list args, void *data, | |
|
14049
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1009 | void **return_val) |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1010 | { |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1011 | gpointer ret_val; |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1012 | void *arg1 = va_arg(args, void *); |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1013 | gint64 arg2 = va_arg(args, gint64); |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1014 | |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1015 | ret_val = ((gpointer(*)(void *, gint64, void *))cb)(arg1, arg2, data); |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1016 | |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1017 | if (return_val != NULL) |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1018 | *return_val = ret_val; |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1019 | } |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1020 | |
|
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
14018
diff
changeset
|
1021 | void |
| 15884 | 1022 | purple_marshal_POINTER__POINTER_INT_BOOLEAN( |
| 1023 | PurpleCallback cb, va_list args, void *data, | |
|
15575
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1024 | void **return_val) |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1025 | { |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1026 | gpointer ret_val; |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1027 | void *arg1 = va_arg(args, void *); |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1028 | gint arg2 = va_arg(args, gint); |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1029 | gboolean arg3 = va_arg(args, gboolean); |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1030 | |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1031 | ret_val = ((gpointer(*)(void *, gint, gboolean, void *))cb)(arg1, arg2, arg3, data); |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1032 | |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1033 | if (return_val != NULL) |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1034 | *return_val = ret_val; |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1035 | } |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1036 | |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1037 | void |
| 15884 | 1038 | purple_marshal_POINTER__POINTER_INT64_BOOLEAN( |
| 1039 | PurpleCallback cb, va_list args, void *data, | |
|
15575
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1040 | void **return_val) |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1041 | { |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1042 | gpointer ret_val; |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1043 | void *arg1 = va_arg(args, void *); |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1044 | gint64 arg2 = va_arg(args, gint64); |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1045 | gboolean arg3 = va_arg(args, gboolean); |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1046 | |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1047 | ret_val = ((gpointer(*)(void *, gint64, gboolean, void *))cb)(arg1, arg2, arg3, data); |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1048 | |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1049 | if (return_val != NULL) |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1050 | *return_val = ret_val; |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1051 | } |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1052 | |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15435
diff
changeset
|
1053 | void |
| 15884 | 1054 | purple_marshal_POINTER__POINTER_POINTER(PurpleCallback cb, va_list args, void *data, |
|
12737
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
1055 | void **return_val) |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
1056 | { |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
1057 | gpointer ret_val; |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
1058 | void *arg1 = va_arg(args, void *); |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
1059 | void *arg2 = va_arg(args, void *); |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
1060 | |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
1061 | ret_val = ((gpointer (*)(void *, void *, void *))cb)(arg1, arg2, data); |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
1062 | |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
1063 | if (return_val != NULL) |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
1064 | *return_val = ret_val; |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12291
diff
changeset
|
1065 | } |