annotate src/signals.c @ 11098:df3b825c1b46

[gaim-migrate @ 13136] " I was playing with some new versions of gettext and friends at debconf, and found some horrific bugs in the .po files. Here's the general summary of the problems and their fixes: * no.po should be called nb.po - renamed * a Makevars is required for gettext 0.14.4 - added * am.po was missing a plural form - added * da.po had some mismatched C format types - marked as fuzzy * ka.po had "nplurals=INTEGER; plural=EXPRESSION;" instead of the actual plural form - turns out nplural is 1, so deleted the duplicate identical 2nd strings * mk.po had the same problem, added the plural form but nplural is 3 and the translations in the file only have 2 entries, so I marked them as fuzzy * pl.po - fixed mismatched C format type * ru.po - basically the same as mk.po. had a crap plural form. added it and marked the wrongly-numbered plurals as fuzzy * sq.po - added plural form, but file looks correct otherwise (nplurals=2) * tr.po - tweaks to the header, and nplurals=1 so set this and deleted pointless duplicate second forms You need to move no.po to nb.po - it would be silly to include that in the patch obviously. Please apply to HEAD ASAP before it stops applying (obviously if anyone changes the po files the patch will break very easily) but also please leave this item open until me or someone else has looked for and corrected the same issues in oldstable. Regards, Rob" I've been ignoring translations in HEAD as its really rather pointless for now. I plan to continue doing so. but as I was less than clear talking to robot101, i didn't think it was fair to penalize him. committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Wed, 13 Jul 2005 00:59:44 +0000
parents f54740547c95
children 1c5398ccbeb0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
6488
e5e8d21bd4d8 [gaim-migrate @ 7002]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
2 * @file signals.c Signal API
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 * @ingroup core
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 *
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 * gaim
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6 *
8046
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8004
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8004
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8004
diff changeset
9 * source distribution.
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 *
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * (at your option) any later version.
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 *
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * GNU General Public License for more details.
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 *
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 */
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 #include "internal.h"
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26
11080
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
27 #include "dbus-maybe.h"
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28 #include "debug.h"
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
29 #include "signals.h"
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
30 #include "value.h"
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31
9127
f4d981c9c4ab [gaim-migrate @ 9905]
Nathan Walp <nwalp@pidgin.im>
parents: 8142
diff changeset
32 /* must include this to use G_VA_COPY */
f4d981c9c4ab [gaim-migrate @ 9905]
Nathan Walp <nwalp@pidgin.im>
parents: 8142
diff changeset
33 #include <string.h>
f4d981c9c4ab [gaim-migrate @ 9905]
Nathan Walp <nwalp@pidgin.im>
parents: 8142
diff changeset
34
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 typedef struct
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
36 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 void *instance;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
38
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
39 GHashTable *signals;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
40 size_t signal_count;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
41
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
42 gulong next_signal_id;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
43
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
44 } GaimInstanceData;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
45
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
46 typedef struct
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
47 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
48 gulong id;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
49
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
50 GaimSignalMarshalFunc marshal;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
51
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
52 int num_values;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
53 GaimValue **values;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
54 GaimValue *ret_value;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
55
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
56 GList *handlers;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
57 size_t handler_count;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
58
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
59 gulong next_handler_id;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
60
11080
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
61 int dbus_id;
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
62 } GaimSignalData;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
63
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
64 typedef struct
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
65 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
66 gulong id;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
67 GaimCallback cb;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
68 void *handle;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
69 void *data;
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
70 gboolean use_vargs;
10656
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
71 int priority;
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73 } GaimSignalHandlerData;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
74
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75 static GHashTable *instance_table = NULL;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
76
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77 static void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
78 destroy_instance_data(GaimInstanceData *instance_data)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
80 g_hash_table_destroy(instance_data->signals);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
81
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82 g_free(instance_data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
84
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
85 static void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
86 destroy_signal_data(GaimSignalData *signal_data)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
88 GaimSignalHandlerData *handler_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
89 GList *l;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
90
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91 for (l = signal_data->handlers; l != NULL; l = l->next)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 handler_data = (GaimSignalHandlerData *)l->data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 g_free(l->data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
97
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 g_list_free(signal_data->handlers);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
100 if (signal_data->values != NULL)
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
101 {
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
102 int i;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
103
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
104 for (i = 0; i < signal_data->num_values; i++)
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
105 gaim_value_destroy((GaimValue *)signal_data->values[i]);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
106
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
107 g_free(signal_data->values);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
108 }
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
109
10542
def1c69ae8af [gaim-migrate @ 11907]
Mark Doliner <mark@kingant.net>
parents: 10276
diff changeset
110 if (signal_data->ret_value != NULL)
def1c69ae8af [gaim-migrate @ 11907]
Mark Doliner <mark@kingant.net>
parents: 10276
diff changeset
111 gaim_value_destroy(signal_data->ret_value);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
112 g_free(signal_data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
113 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
114
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
115 gulong
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
116 gaim_signal_register(void *instance, const char *signal,
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
117 GaimSignalMarshalFunc marshal,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
118 GaimValue *ret_value, int num_values, ...)
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
119 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
120 GaimInstanceData *instance_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
121 GaimSignalData *signal_data;
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
122 va_list args;
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
123
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
124 g_return_val_if_fail(instance != NULL, 0);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
125 g_return_val_if_fail(signal != NULL, 0);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
126 g_return_val_if_fail(marshal != NULL, 0);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
127
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
128 instance_data =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
129 (GaimInstanceData *)g_hash_table_lookup(instance_table, instance);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
130
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
131 if (instance_data == NULL)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
132 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
133 instance_data = g_new0(GaimInstanceData, 1);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
134
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
135 instance_data->instance = instance;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
136 instance_data->next_signal_id = 1;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
137
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
138 instance_data->signals =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
139 g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
140 (GDestroyNotify)destroy_signal_data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
141
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
142 g_hash_table_insert(instance_table, instance, instance_data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
143 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
144
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
145 signal_data = g_new0(GaimSignalData, 1);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
146 signal_data->id = instance_data->next_signal_id;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
147 signal_data->marshal = marshal;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
148 signal_data->next_handler_id = 1;
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
149 signal_data->ret_value = ret_value;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
150 signal_data->num_values = num_values;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
151
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
152 if (num_values > 0)
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
153 {
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
154 int i;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
155
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
156 signal_data->values = g_new0(GaimValue *, num_values);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
157
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
158 va_start(args, num_values);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
159
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
160 for (i = 0; i < num_values; i++)
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
161 signal_data->values[i] = va_arg(args, GaimValue *);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
162
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
163 va_end(args);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
164 }
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
165
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
166 g_hash_table_insert(instance_data->signals,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
167 g_strdup(signal), signal_data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
168
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
169 instance_data->next_signal_id++;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
170 instance_data->signal_count++;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
171
11080
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
172 #ifdef HAVE_DBUS
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
173 /* DBus messages are sent directly to the bus so the
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
174 marshalling function is never called. */
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
175 signal_data->dbus_id =
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
176 gaim_dbus_signal_register_gaim(gaim_dbus_object, signal,
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
177 gaim_dbus_invalid_marshaller,
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
178 num_values, signal_data->values);
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
179 #endif /* HAVE_DBUS */
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
180
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
181 return signal_data->id;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
182 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
183
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
184 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
185 gaim_signal_unregister(void *instance, const char *signal)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
186 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
187 GaimInstanceData *instance_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
188
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
189 g_return_if_fail(instance != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
190 g_return_if_fail(signal != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
191
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
192 instance_data =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
193 (GaimInstanceData *)g_hash_table_lookup(instance_table, instance);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
194
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
195 g_return_if_fail(instance_data != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
196
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
197 g_hash_table_remove(instance_data->signals, signal);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
198
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
199 instance_data->signal_count--;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
200
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
201 if (instance_data->signal_count == 0)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
202 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
203 /* Unregister the instance. */
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
204 g_hash_table_remove(instance_table, instance);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
205 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
206 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
207
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
208 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
209 gaim_signals_unregister_by_instance(void *instance)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
210 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
211 gboolean found;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
212
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
213 g_return_if_fail(instance != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
214
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
215 found = g_hash_table_remove(instance_table, instance);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
216
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
217 /*
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
218 * Makes things easier (more annoying?) for developers who don't have
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
219 * things registering and unregistering in the right order :)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
220 */
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
221 g_return_if_fail(found);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
222 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
223
6564
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
224 void
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
225 gaim_signal_get_values(void *instance, const char *signal,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
226 GaimValue **ret_value,
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
227 int *num_values, GaimValue ***values)
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
228 {
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
229 GaimInstanceData *instance_data;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
230 GaimSignalData *signal_data;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
231
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
232 g_return_if_fail(instance != NULL);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
233 g_return_if_fail(signal != NULL);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
234 g_return_if_fail(num_values != NULL);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
235 g_return_if_fail(values != NULL);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
236
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
237 /* Get the instance data */
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
238 instance_data =
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
239 (GaimInstanceData *)g_hash_table_lookup(instance_table, instance);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
240
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
241 g_return_if_fail(instance_data != NULL);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
242
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
243 /* Get the signal data */
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
244 signal_data =
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
245 (GaimSignalData *)g_hash_table_lookup(instance_data->signals, signal);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
246
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
247 g_return_if_fail(signal_data != NULL);
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
248
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
249 *num_values = signal_data->num_values;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
250 *values = signal_data->values;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
251
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
252 if (ret_value != NULL)
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
253 *ret_value = signal_data->ret_value;
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
254 }
800ef4a51096 [gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents: 6553
diff changeset
255
10656
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
256 static gint handler_priority(void * a, void * b) {
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
257 GaimSignalHandlerData *ah = (GaimSignalHandlerData*)a;
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
258 GaimSignalHandlerData *bh = (GaimSignalHandlerData*)b;
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
259 if (ah->priority > bh->priority) return 1;
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
260 if (ah->priority < bh->priority) return -1;
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
261 return 0;
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
262 }
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
263
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
264 static gulong
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
265 signal_connect_common(void *instance, const char *signal, void *handle,
10656
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
266 GaimCallback func, void *data, int priority, gboolean use_vargs)
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
267 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
268 GaimInstanceData *instance_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
269 GaimSignalData *signal_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
270 GaimSignalHandlerData *handler_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
271
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
272 g_return_val_if_fail(instance != NULL, 0);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
273 g_return_val_if_fail(signal != NULL, 0);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
274 g_return_val_if_fail(handle != NULL, 0);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
275 g_return_val_if_fail(func != NULL, 0);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
276
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
277 /* Get the instance data */
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
278 instance_data =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
279 (GaimInstanceData *)g_hash_table_lookup(instance_table, instance);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
280
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
281 g_return_val_if_fail(instance_data != NULL, 0);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
282
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
283 /* Get the signal data */
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
284 signal_data =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
285 (GaimSignalData *)g_hash_table_lookup(instance_data->signals, signal);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
286
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
287 if (signal_data == NULL)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
288 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
289 gaim_debug(GAIM_DEBUG_ERROR, "signals",
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
290 "Signal data for %s not found!\n", signal);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
291 return 0;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
292 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
293
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
294 /* Create the signal handler data */
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
295 handler_data = g_new0(GaimSignalHandlerData, 1);
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
296 handler_data->id = signal_data->next_handler_id;
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
297 handler_data->cb = func;
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
298 handler_data->handle = handle;
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
299 handler_data->data = data;
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
300 handler_data->use_vargs = use_vargs;
10656
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
301 handler_data->priority = priority;
10758
c80a609bd747 [gaim-migrate @ 12361]
Mark Doliner <mark@kingant.net>
parents: 10656
diff changeset
302
10656
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
303 signal_data->handlers = g_list_insert_sorted(signal_data->handlers, handler_data, (GCompareFunc)handler_priority);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
304 signal_data->handler_count++;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
305 signal_data->next_handler_id++;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
306
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
307 return handler_data->id;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
308 }
6553
9e4fa4853cfe [gaim-migrate @ 7075]
Christian Hammond <chipx86@chipx86.com>
parents: 6547
diff changeset
309
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
310 gulong
10656
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
311 gaim_signal_connect_priority(void *instance, const char *signal, void *handle,
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
312 GaimCallback func, void *data, int priority)
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
313 {
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
314 return signal_connect_common(instance, signal, handle, func, data, priority, FALSE);
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
315 }
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
316
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
317 gulong
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
318 gaim_signal_connect(void *instance, const char *signal, void *handle,
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
319 GaimCallback func, void *data)
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
320 {
10656
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
321 return signal_connect_common(instance, signal, handle, func, data, GAIM_SIGNAL_PRIORITY_DEFAULT, FALSE);
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
322 }
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
323
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
324 gulong
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
325 gaim_signal_connect_priority_vargs(void *instance, const char *signal, void *handle,
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
326 GaimCallback func, void *data, int priority)
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
327 {
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
328 return signal_connect_common(instance, signal, handle, func, data, priority, TRUE);
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
329 }
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
330
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
331 gulong
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
332 gaim_signal_connect_vargs(void *instance, const char *signal, void *handle,
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
333 GaimCallback func, void *data)
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
334 {
10656
9b223bf37ca0 [gaim-migrate @ 12186]
Mark Doliner <mark@kingant.net>
parents: 10542
diff changeset
335 return signal_connect_common(instance, signal, handle, func, data, GAIM_SIGNAL_PRIORITY_DEFAULT, TRUE);
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
336 }
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
337
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
338 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
339 gaim_signal_disconnect(void *instance, const char *signal,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
340 void *handle, GaimCallback func)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
341 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
342 GaimInstanceData *instance_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
343 GaimSignalData *signal_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
344 GaimSignalHandlerData *handler_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
345 GList *l;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
346 gboolean found = FALSE;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
347
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
348 g_return_if_fail(instance != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
349 g_return_if_fail(signal != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
350 g_return_if_fail(handle != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
351 g_return_if_fail(func != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
352
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
353 /* Get the instance data */
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
354 instance_data =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
355 (GaimInstanceData *)g_hash_table_lookup(instance_table, instance);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
356
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
357 g_return_if_fail(instance_data != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
358
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
359 /* Get the signal data */
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
360 signal_data =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
361 (GaimSignalData *)g_hash_table_lookup(instance_data->signals, signal);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
362
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
363 if (signal_data == NULL)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
364 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
365 gaim_debug(GAIM_DEBUG_ERROR, "signals",
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
366 "Signal data for %s not found!\n", signal);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
367 return;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
368 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
369
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
370 /* Find the handler data. */
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
371 for (l = signal_data->handlers; l != NULL; l = l->next)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
372 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
373 handler_data = (GaimSignalHandlerData *)l->data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
374
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
375 if (handler_data->handle == handle && handler_data->cb == func)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
376 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
377 g_free(handler_data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
378
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
379 signal_data->handlers = g_list_remove(signal_data->handlers,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
380 handler_data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
381 signal_data->handler_count--;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
382
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
383 found = TRUE;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
384
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
385 break;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
386 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
387 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
388
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
389 /* See note somewhere about this actually helping developers.. */
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
390 g_return_if_fail(found);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
391 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
392
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
393 /*
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
394 * TODO: Make this all more efficient by storing a list of handlers, keyed
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
395 * to a handle.
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
396 */
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
397 static void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
398 disconnect_handle_from_signals(const char *signal,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
399 GaimSignalData *signal_data, void *handle)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
400 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
401 GList *l, *l_next;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
402 GaimSignalHandlerData *handler_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
403
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
404 for (l = signal_data->handlers; l != NULL; l = l_next)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
405 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
406 handler_data = (GaimSignalHandlerData *)l->data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
407 l_next = l->next;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
408
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
409 if (handler_data->handle == handle)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
410 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
411 g_free(handler_data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
412
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
413 signal_data->handler_count--;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
414 signal_data->handlers = g_list_remove(signal_data->handlers,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
415 handler_data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
416 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
417 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
418 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
419
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
420 static void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
421 disconnect_handle_from_instance(void *instance,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
422 GaimInstanceData *instance_data,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
423 void *handle)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
424 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
425 g_hash_table_foreach(instance_data->signals,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
426 (GHFunc)disconnect_handle_from_signals, handle);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
427 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
428
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
429 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
430 gaim_signals_disconnect_by_handle(void *handle)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
431 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
432 g_return_if_fail(handle != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
433
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
434 g_hash_table_foreach(instance_table,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
435 (GHFunc)disconnect_handle_from_instance, handle);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
436 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
437
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
438 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
439 gaim_signal_emit(void *instance, const char *signal, ...)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
440 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
441 va_list args;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
442
7584
9e93a4bf1934 [gaim-migrate @ 8202]
Christian Hammond <chipx86@chipx86.com>
parents: 6822
diff changeset
443 g_return_if_fail(instance != NULL);
9e93a4bf1934 [gaim-migrate @ 8202]
Christian Hammond <chipx86@chipx86.com>
parents: 6822
diff changeset
444 g_return_if_fail(signal != NULL);
9e93a4bf1934 [gaim-migrate @ 8202]
Christian Hammond <chipx86@chipx86.com>
parents: 6822
diff changeset
445
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
446 va_start(args, signal);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
447 gaim_signal_emit_vargs(instance, signal, args);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
448 va_end(args);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
449 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
450
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
451 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
452 gaim_signal_emit_vargs(void *instance, const char *signal, va_list args)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
453 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
454 GaimInstanceData *instance_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
455 GaimSignalData *signal_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
456 GaimSignalHandlerData *handler_data;
8004
07dc83303503 [gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents: 7597
diff changeset
457 GList *l, *l_next;
8090
fb0eab758560 [gaim-migrate @ 8789]
Ethan Blanton <elb@pidgin.im>
parents: 8046
diff changeset
458 va_list tmp;
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
459
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
460 g_return_if_fail(instance != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
461 g_return_if_fail(signal != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
462
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
463 instance_data =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
464 (GaimInstanceData *)g_hash_table_lookup(instance_table, instance);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
465
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
466 g_return_if_fail(instance_data != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
467
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
468 signal_data =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
469 (GaimSignalData *)g_hash_table_lookup(instance_data->signals, signal);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
470
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
471 if (signal_data == NULL)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
472 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
473 gaim_debug(GAIM_DEBUG_ERROR, "signals",
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
474 "Signal data for %s not found!\n", signal);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
475 return;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
476 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
477
8004
07dc83303503 [gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents: 7597
diff changeset
478 for (l = signal_data->handlers; l != NULL; l = l_next)
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
479 {
8004
07dc83303503 [gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents: 7597
diff changeset
480 l_next = l->next;
07dc83303503 [gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents: 7597
diff changeset
481
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
482 handler_data = (GaimSignalHandlerData *)l->data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
483
8090
fb0eab758560 [gaim-migrate @ 8789]
Ethan Blanton <elb@pidgin.im>
parents: 8046
diff changeset
484 /* This is necessary because a va_list may only be
fb0eab758560 [gaim-migrate @ 8789]
Ethan Blanton <elb@pidgin.im>
parents: 8046
diff changeset
485 * evaluated once */
8142
f2919ca98e78 [gaim-migrate @ 8850]
Ethan Blanton <elb@pidgin.im>
parents: 8140
diff changeset
486 G_VA_COPY(tmp, args);
8090
fb0eab758560 [gaim-migrate @ 8789]
Ethan Blanton <elb@pidgin.im>
parents: 8046
diff changeset
487
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
488 if (handler_data->use_vargs)
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
489 {
8090
fb0eab758560 [gaim-migrate @ 8789]
Ethan Blanton <elb@pidgin.im>
parents: 8046
diff changeset
490 ((void (*)(va_list, void *))handler_data->cb)(tmp,
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
491 handler_data->data);
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
492 }
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
493 else
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
494 {
8090
fb0eab758560 [gaim-migrate @ 8789]
Ethan Blanton <elb@pidgin.im>
parents: 8046
diff changeset
495 signal_data->marshal(handler_data->cb, tmp,
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
496 handler_data->data, NULL);
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
497 }
8090
fb0eab758560 [gaim-migrate @ 8789]
Ethan Blanton <elb@pidgin.im>
parents: 8046
diff changeset
498
fb0eab758560 [gaim-migrate @ 8789]
Ethan Blanton <elb@pidgin.im>
parents: 8046
diff changeset
499 va_end(tmp);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
500 }
11080
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
501
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
502 #ifdef HAVE_DBUS
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
503 gaim_dbus_signal_emit_gaim(gaim_dbus_object, signal_data->dbus_id,
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
504 signal_data->num_values,
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
505 signal_data->values, args);
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
506 #endif /* HAVE_DBUS */
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
507
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
508 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
509
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
510 void *
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
511 gaim_signal_emit_return_1(void *instance, const char *signal, ...)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
512 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
513 void *ret_val;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
514 va_list args;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
515
7597
191e5b9a249b [gaim-migrate @ 8218]
Christian Hammond <chipx86@chipx86.com>
parents: 7585
diff changeset
516 g_return_val_if_fail(instance != NULL, NULL);
191e5b9a249b [gaim-migrate @ 8218]
Christian Hammond <chipx86@chipx86.com>
parents: 7585
diff changeset
517 g_return_val_if_fail(signal != NULL, NULL);
7585
404f4a4b81da [gaim-migrate @ 8203]
Christian Hammond <chipx86@chipx86.com>
parents: 7584
diff changeset
518
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
519 va_start(args, signal);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
520 ret_val = gaim_signal_emit_vargs_return_1(instance, signal, args);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
521 va_end(args);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
522
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
523 return ret_val;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
524 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
525
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
526 void *
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
527 gaim_signal_emit_vargs_return_1(void *instance, const char *signal,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
528 va_list args)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
529 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
530 GaimInstanceData *instance_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
531 GaimSignalData *signal_data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
532 GaimSignalHandlerData *handler_data;
8004
07dc83303503 [gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents: 7597
diff changeset
533 GList *l, *l_next;
8140
47046ceedf0b [gaim-migrate @ 8846]
Ethan Blanton <elb@pidgin.im>
parents: 8090
diff changeset
534 va_list tmp;
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
535
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
536 g_return_val_if_fail(instance != NULL, NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
537 g_return_val_if_fail(signal != NULL, NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
538
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
539 instance_data =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
540 (GaimInstanceData *)g_hash_table_lookup(instance_table, instance);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
541
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
542 g_return_val_if_fail(instance_data != NULL, NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
543
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
544 signal_data =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
545 (GaimSignalData *)g_hash_table_lookup(instance_data->signals, signal);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
546
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
547 if (signal_data == NULL)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
548 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
549 gaim_debug(GAIM_DEBUG_ERROR, "signals",
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
550 "Signal data for %s not found!\n", signal);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
551 return 0;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
552 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
553
11080
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
554 #ifdef HAVE_DBUS
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
555 gaim_dbus_signal_emit_gaim(gaim_dbus_object, signal_data->dbus_id,
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
556 signal_data->num_values,
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
557 signal_data->values, args);
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
558 #endif /* HAVE_DBUS */
f54740547c95 [gaim-migrate @ 13092]
Piotr Zielinski <zielaj>
parents: 11064
diff changeset
559
8004
07dc83303503 [gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents: 7597
diff changeset
560 for (l = signal_data->handlers; l != NULL; l = l_next)
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
561 {
10789
0caa9827edf5 [gaim-migrate @ 12431]
Luke Schierer <lschiere@pidgin.im>
parents: 10758
diff changeset
562 void *ret_val = NULL;
0caa9827edf5 [gaim-migrate @ 12431]
Luke Schierer <lschiere@pidgin.im>
parents: 10758
diff changeset
563
8004
07dc83303503 [gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents: 7597
diff changeset
564 l_next = l->next;
07dc83303503 [gaim-migrate @ 8681]
Christian Hammond <chipx86@chipx86.com>
parents: 7597
diff changeset
565
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
566 handler_data = (GaimSignalHandlerData *)l->data;
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
567
8142
f2919ca98e78 [gaim-migrate @ 8850]
Ethan Blanton <elb@pidgin.im>
parents: 8140
diff changeset
568 G_VA_COPY(tmp, args);
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
569 if (handler_data->use_vargs)
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
570 {
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
571 ret_val = ((void *(*)(va_list, void *))handler_data->cb)(
8140
47046ceedf0b [gaim-migrate @ 8846]
Ethan Blanton <elb@pidgin.im>
parents: 8090
diff changeset
572 tmp, handler_data->data);
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
573 }
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
574 else
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
575 {
8140
47046ceedf0b [gaim-migrate @ 8846]
Ethan Blanton <elb@pidgin.im>
parents: 8090
diff changeset
576 signal_data->marshal(handler_data->cb, tmp,
6547
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
577 handler_data->data, &ret_val);
adf168f002ad [gaim-migrate @ 7069]
Christian Hammond <chipx86@chipx86.com>
parents: 6509
diff changeset
578 }
8140
47046ceedf0b [gaim-migrate @ 8846]
Ethan Blanton <elb@pidgin.im>
parents: 8090
diff changeset
579 va_end(tmp);
10789
0caa9827edf5 [gaim-migrate @ 12431]
Luke Schierer <lschiere@pidgin.im>
parents: 10758
diff changeset
580
0caa9827edf5 [gaim-migrate @ 12431]
Luke Schierer <lschiere@pidgin.im>
parents: 10758
diff changeset
581 if (ret_val != NULL)
0caa9827edf5 [gaim-migrate @ 12431]
Luke Schierer <lschiere@pidgin.im>
parents: 10758
diff changeset
582 return ret_val;
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
583 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
584
10789
0caa9827edf5 [gaim-migrate @ 12431]
Luke Schierer <lschiere@pidgin.im>
parents: 10758
diff changeset
585 return NULL;
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
586 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
587
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
588 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
589 gaim_signals_init()
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
590 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
591 g_return_if_fail(instance_table == NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
592
11033
50224ac8184d [gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10789
diff changeset
593 gaim_debug_register_category("signals");
50224ac8184d [gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10789
diff changeset
594
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
595 instance_table =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
596 g_hash_table_new_full(g_direct_hash, g_direct_equal,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
597 NULL, (GDestroyNotify)destroy_instance_data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
598 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
599
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
600 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
601 gaim_signals_uninit()
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
602 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
603 g_return_if_fail(instance_table != NULL);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
604
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
605 g_hash_table_destroy(instance_table);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
606 instance_table = NULL;
11033
50224ac8184d [gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10789
diff changeset
607
50224ac8184d [gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10789
diff changeset
608 gaim_debug_unregister_category("signals");
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
609 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
610
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
611 /**************************************************************************
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
612 * Marshallers
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
613 **************************************************************************/
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
614 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
615 gaim_marshal_VOID(GaimCallback cb, va_list args, void *data,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
616 void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
617 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
618 ((void (*)(void *))cb)(data);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
619 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
620
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
621 void
6822
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
622 gaim_marshal_VOID__INT(GaimCallback cb, va_list args, void *data,
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
623 void **return_val)
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
624 {
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
625 gint arg1 = va_arg(args, gint);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
626
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
627 ((void (*)(gint, void *))cb)(arg1, data);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
628 }
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
629
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
630 void
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
631 gaim_marshal_VOID__INT_INT(GaimCallback cb, va_list args, void *data,
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
632 void **return_val)
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
633 {
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
634 gint arg1 = va_arg(args, gint);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
635 gint arg2 = va_arg(args, gint);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
636
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
637 ((void (*)(gint, gint, void *))cb)(arg1, arg2, data);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
638 }
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
639
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
640 void
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
641 gaim_marshal_VOID__POINTER(GaimCallback cb, va_list args, void *data,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
642 void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
643 {
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
644 void *arg1 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
645
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
646 ((void (*)(void *, void *))cb)(arg1, data);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
647 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
648
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
649 void
9734
676cf082d29c [gaim-migrate @ 10595]
Mark Doliner <mark@kingant.net>
parents: 9554
diff changeset
650 gaim_marshal_VOID__POINTER_UINT(GaimCallback cb, va_list args,
676cf082d29c [gaim-migrate @ 10595]
Mark Doliner <mark@kingant.net>
parents: 9554
diff changeset
651 void *data, void **return_val)
676cf082d29c [gaim-migrate @ 10595]
Mark Doliner <mark@kingant.net>
parents: 9554
diff changeset
652 {
676cf082d29c [gaim-migrate @ 10595]
Mark Doliner <mark@kingant.net>
parents: 9554
diff changeset
653 void *arg1 = va_arg(args, void *);
676cf082d29c [gaim-migrate @ 10595]
Mark Doliner <mark@kingant.net>
parents: 9554
diff changeset
654 guint arg2 = va_arg(args, guint);
676cf082d29c [gaim-migrate @ 10595]
Mark Doliner <mark@kingant.net>
parents: 9554
diff changeset
655
676cf082d29c [gaim-migrate @ 10595]
Mark Doliner <mark@kingant.net>
parents: 9554
diff changeset
656 ((void (*)(void *, guint, void *))cb)(arg1, arg2, data);
676cf082d29c [gaim-migrate @ 10595]
Mark Doliner <mark@kingant.net>
parents: 9554
diff changeset
657 }
676cf082d29c [gaim-migrate @ 10595]
Mark Doliner <mark@kingant.net>
parents: 9554
diff changeset
658
676cf082d29c [gaim-migrate @ 10595]
Mark Doliner <mark@kingant.net>
parents: 9554
diff changeset
659 void
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
660 gaim_marshal_VOID__POINTER_POINTER(GaimCallback cb, va_list args,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
661 void *data, void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
662 {
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
663 void *arg1 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
664 void *arg2 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
665
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
666 ((void (*)(void *, void *, void *))cb)(arg1, arg2, data);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
667 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
668
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
669 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
670 gaim_marshal_VOID__POINTER_POINTER_UINT(GaimCallback cb, va_list args,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
671 void *data, void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
672 {
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
673 void *arg1 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
674 void *arg2 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
675 guint arg3 = va_arg(args, guint);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
676
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
677 ((void (*)(void *, void *, guint, void *))cb)(arg1, arg2, arg3, data);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
678 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
679
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
680 void
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
681 gaim_marshal_VOID__POINTER_POINTER_UINT_UINT(GaimCallback cb, va_list args,
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
682 void *data, void **return_val)
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
683 {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
684 void *arg1 = va_arg(args, void *);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
685 void *arg2 = va_arg(args, void *);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
686 guint arg3 = va_arg(args, guint);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
687 guint arg4 = va_arg(args, guint);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
688
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
689 ((void (*)(void *, void *, guint, guint, void *))cb)(arg1, arg2, arg3, arg4, data);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
690 }
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
691
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9514
diff changeset
692 void
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
693 gaim_marshal_VOID__POINTER_POINTER_POINTER(GaimCallback cb, va_list args,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
694 void *data, void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
695 {
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
696 void *arg1 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
697 void *arg2 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
698 void *arg3 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
699
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
700 ((void (*)(void *, void *, void *, void *))cb)(arg1, arg2, arg3, data);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
701 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
702
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
703 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
704 gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER(GaimCallback cb,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
705 va_list args,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
706 void *data,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
707 void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
708 {
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
709 void *arg1 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
710 void *arg2 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
711 void *arg3 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
712 void *arg4 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
713
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
714 ((void (*)(void *, void *, void *, void *, void *))cb)(arg1, arg2, arg3, arg4, data);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
715 }
6509
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
716
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
717 void
9514
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
718 gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER(GaimCallback cb,
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
719 va_list args,
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
720 void *data,
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
721 void **return_val)
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
722 {
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
723 void *arg1 = va_arg(args, void *);
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
724 void *arg2 = va_arg(args, void *);
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
725 void *arg3 = va_arg(args, void *);
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
726 void *arg4 = va_arg(args, void *);
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
727 void *arg5 = va_arg(args, void *);
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
728
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
729 ((void (*)(void *, void *, void *, void *, void *, void *))cb)(arg1, arg2, arg3, arg4, arg5, data);
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
730 }
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
731
1fac0336890c [gaim-migrate @ 10341]
Luke Schierer <lschiere@pidgin.im>
parents: 9127
diff changeset
732 void
6509
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
733 gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT(GaimCallback cb,
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
734 va_list args,
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
735 void *data,
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
736 void **return_val)
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
737 {
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
738 void *arg1 = va_arg(args, void *);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
739 void *arg2 = va_arg(args, void *);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
740 void *arg3 = va_arg(args, void *);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
741 guint arg4 = va_arg(args, guint);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
742
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
743 ((void (*)(void *, void *, void *, guint, void *))cb)(arg1, arg2, arg3, arg4, data);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
744 }
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
745
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
746 void
10104
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
747 gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT(GaimCallback cb,
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
748 va_list args,
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
749 void *data,
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
750 void **return_val)
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
751 {
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
752 void *arg1 = va_arg(args, void *);
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
753 void *arg2 = va_arg(args, void *);
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
754 void *arg3 = va_arg(args, void *);
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
755 void *arg4 = va_arg(args, void *);
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
756 guint arg5 = va_arg(args, guint);
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
757
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
758 ((void (*)(void *, void *, void *, void *, guint, void *))cb)(arg1, arg2, arg3, arg4, arg5, data);
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
759 }
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
760
60db14d54914 [gaim-migrate @ 11131]
Stu Tomlinson <stu@nosnilmot.com>
parents: 9734
diff changeset
761 void
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
762 gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(GaimCallback cb,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
763 va_list args,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
764 void *data,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
765 void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
766 {
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
767 void *arg1 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
768 void *arg2 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
769 void *arg3 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
770 guint arg4 = va_arg(args, guint);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
771 guint arg5 = va_arg(args, guint);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
772
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
773 ((void (*)(void *, void *, void *, guint, guint, void *))cb)(
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
774 arg1, arg2, arg3, arg4, arg5, data);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
775 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
776
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
777 void
6822
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
778 gaim_marshal_INT__INT(GaimCallback cb, va_list args, void *data,
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
779 void **return_val)
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
780 {
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
781 gint ret_val;
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
782 gint arg1 = va_arg(args, gint);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
783
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
784 ret_val = ((gint (*)(gint, void *))cb)(arg1, data);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
785
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
786 if (return_val != NULL)
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
787 *return_val = GINT_TO_POINTER(ret_val);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
788 }
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
789
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
790 void
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
791 gaim_marshal_INT__INT_INT(GaimCallback cb, va_list args, void *data,
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
792 void **return_val)
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
793 {
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
794 gint ret_val;
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
795 gint arg1 = va_arg(args, gint);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
796 gint arg2 = va_arg(args, gint);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
797
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
798 ret_val = ((gint (*)(gint, gint, void *))cb)(arg1, arg2, data);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
799
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
800 if (return_val != NULL)
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
801 *return_val = GINT_TO_POINTER(ret_val);
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
802 }
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
803
11064
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
804
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
805 void
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
806 gaim_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER(
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
807 GaimCallback cb, va_list args, void *data, void **return_val)
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
808 {
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
809 gint ret_val;
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
810 void *arg1 = va_arg(args, void *);
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
811 void *arg2 = va_arg(args, void *);
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
812 void *arg3 = va_arg(args, void *);
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
813 void *arg4 = va_arg(args, void *);
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
814 void *arg5 = va_arg(args, void *);
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
815
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
816 ret_val =
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
817 ((gint (*)(void *, void *, void *, void *, void *, void *))cb)(
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
818 arg1, arg2, arg3, arg4, arg5, data);
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
819
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
820 if (return_val != NULL)
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
821 *return_val = GINT_TO_POINTER(ret_val);
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
822 }
e4459e8ccfb5 [gaim-migrate @ 13035]
Richard Laager <rlaager@wiktel.com>
parents: 11033
diff changeset
823
6822
7dba3e17cb21 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6564
diff changeset
824 void
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
825 gaim_marshal_BOOLEAN__POINTER(GaimCallback cb, va_list args, void *data,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
826 void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
827 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
828 gboolean ret_val;
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
829 void *arg1 = va_arg(args, void *);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
830
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
831 ret_val = ((gboolean (*)(void *, void *))cb)(arg1, data);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
832
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
833 if (return_val != NULL)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
834 *return_val = GINT_TO_POINTER(ret_val);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
835 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
836
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
837 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
838 gaim_marshal_BOOLEAN__POINTER_POINTER(GaimCallback cb, va_list args,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
839 void *data, void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
840 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
841 gboolean ret_val;
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
842 void *arg1 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
843 void *arg2 = va_arg(args, void *);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
844
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
845 ret_val = ((gboolean (*)(void *, void *, void *))cb)(arg1, arg2, data);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
846
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
847 if (return_val != NULL)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
848 *return_val = GINT_TO_POINTER(ret_val);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
849 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
850
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
851 void
6509
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
852 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER(GaimCallback cb, va_list args,
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
853 void *data, void **return_val)
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
854 {
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
855 gboolean ret_val;
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
856 void *arg1 = va_arg(args, void *);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
857 void *arg2 = va_arg(args, void *);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
858 void *arg3 = va_arg(args, void *);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
859
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
860 ret_val = ((gboolean (*)(void *, void *, void *, void *))cb)(arg1, arg2,
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
861 arg3, data);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
862
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
863 if (return_val != NULL)
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
864 *return_val = GINT_TO_POINTER(ret_val);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
865 }
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
866
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
867 void
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
868 gaim_marshal_BOOLEAN__POINTER_POINTER_UINT(GaimCallback cb,
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
869 va_list args,
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
870 void *data,
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
871 void **return_val)
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
872 {
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
873 gboolean ret_val;
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
874 void *arg1 = va_arg(args, void *);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
875 void *arg2 = va_arg(args, void *);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
876 guint arg3 = va_arg(args, guint);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
877
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
878 ret_val = ((gboolean (*)(void *, void *, guint, void *))cb)(
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
879 arg1, arg2, arg3, data);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
880
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
881 if (return_val != NULL)
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
882 *return_val = GINT_TO_POINTER(ret_val);
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
883 }
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
884
e74e378e86bf [gaim-migrate @ 7026]
Ethan Blanton <elb@pidgin.im>
parents: 6505
diff changeset
885 void
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
886 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT(GaimCallback cb,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
887 va_list args,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
888 void *data,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
889 void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
890 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
891 gboolean ret_val;
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
892 void *arg1 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
893 void *arg2 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
894 void *arg3 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
895 guint arg4 = va_arg(args, guint);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
896
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
897 ret_val = ((gboolean (*)(void *, void *, void *, guint, void *))cb)(
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
898 arg1, arg2, arg3, arg4, data);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
899
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
900 if (return_val != NULL)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
901 *return_val = GINT_TO_POINTER(ret_val);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
902 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
903
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
904 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
905 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER(GaimCallback cb,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
906 va_list args,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
907 void *data,
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
908 void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
909 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
910 gboolean ret_val;
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
911 void *arg1 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
912 void *arg2 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
913 void *arg3 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
914 void *arg4 = va_arg(args, void *);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
915
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
916 ret_val = ((gboolean (*)(void *, void *, void *, void *, void *))cb)(
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
917 arg1, arg2, arg3, arg4, data);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
918
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
919 if (return_val != NULL)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
920 *return_val = GINT_TO_POINTER(ret_val);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
921 }
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
922
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
923 void
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
924 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER(
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
925 GaimCallback cb, va_list args, void *data, void **return_val)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
926 {
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
927 gboolean ret_val;
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
928 void *arg1 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
929 void *arg2 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
930 void *arg3 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
931 void *arg4 = va_arg(args, void *);
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
932 void *arg5 = va_arg(args, void *);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
933
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
934 ret_val =
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
935 ((gboolean (*)(void *, void *, void *, void *, void *, void *))cb)(
6505
5ca59294698d [gaim-migrate @ 7021]
Ethan Blanton <elb@pidgin.im>
parents: 6488
diff changeset
936 arg1, arg2, arg3, arg4, arg5, data);
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
937
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
938 if (return_val != NULL)
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
939 *return_val = GINT_TO_POINTER(ret_val);
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
940 }