Fri, 06 Jan 2006 04:46:00 +0000
[gaim-migrate @ 15091]
" Adds an emblem to a buddy if they have a queued message
(hidden conversation). In the large buddy list it is
added in the northwest corner, sliding the existing
northwest emblem (if specified) to the northeast
position and discarding the northeast emblem. In the
small buddy list, the emblem is added to the southeast.
Attached is a patch and an emblem image to be dropped
in pixmaps/status/default/. The emblem image is a
scaled down version of the send-im.png image." -- Casey Harkins
as I asked for this patch, and since there don't seem to be objections to
it (yet), I'm going ahead and applying it.
committer: Luke Schierer <lschiere@pidgin.im>
| 6562 | 1 | /** |
| 2 | * @file value.c Value wrapper API | |
| 3 | * @ingroup core | |
| 4 | * | |
| 5 | * gaim | |
| 6 | * | |
| 8046 | 7 | * Gaim is the legal property of its developers, whose names are too numerous |
| 8 | * to list here. Please refer to the COPYRIGHT file distributed with this | |
| 9 | * source distribution. | |
| 6562 | 10 | * |
| 11 | * This program is free software; you can redistribute it and/or modify | |
| 12 | * it under the terms of the GNU General Public License as published by | |
| 13 | * the Free Software Foundation; either version 2 of the License, or | |
| 14 | * (at your option) any later version. | |
| 15 | * | |
| 16 | * This program is distributed in the hope that it will be useful, | |
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | * GNU General Public License for more details. | |
| 20 | * | |
| 21 | * You should have received a copy of the GNU General Public License | |
| 22 | * along with this program; if not, write to the Free Software | |
| 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 24 | */ | |
| 25 | #include "internal.h" | |
| 26 | ||
| 27 | #include "value.h" | |
| 28 | ||
| 29 | #define OUTGOING_FLAG 0x01 | |
| 30 | ||
| 31 | GaimValue * | |
| 32 | gaim_value_new(GaimType type, ...) | |
| 33 | { | |
| 34 | GaimValue *value; | |
| 35 | va_list args; | |
| 36 | ||
| 37 | g_return_val_if_fail(type != GAIM_TYPE_UNKNOWN, NULL); | |
| 38 | ||
| 39 | value = g_new0(GaimValue, 1); | |
| 40 | ||
| 41 | value->type = type; | |
| 42 | ||
| 43 | va_start(args, type); | |
| 44 | ||
| 45 | if (type == GAIM_TYPE_SUBTYPE) | |
| 46 | value->u.subtype = va_arg(args, int); | |
| 47 | else if (type == GAIM_TYPE_BOXED) | |
| 48 | value->u.specific_type = g_strdup(va_arg(args, char *)); | |
| 49 | ||
| 50 | va_end(args); | |
| 51 | ||
| 52 | return value; | |
| 53 | } | |
| 54 | ||
| 55 | GaimValue * | |
| 56 | gaim_value_new_outgoing(GaimType type, ...) | |
| 57 | { | |
| 58 | GaimValue *value; | |
| 59 | va_list args; | |
| 60 | ||
| 61 | g_return_val_if_fail(type != GAIM_TYPE_UNKNOWN, NULL); | |
| 62 | ||
| 63 | value = g_new0(GaimValue, 1); | |
| 64 | ||
| 65 | value->type = type; | |
| 66 | ||
| 67 | va_start(args, type); | |
| 68 | ||
| 69 | if (type == GAIM_TYPE_SUBTYPE) | |
| 70 | value->u.subtype = va_arg(args, int); | |
| 71 | else if (type == GAIM_TYPE_BOXED) | |
| 72 | value->u.specific_type = g_strdup(va_arg(args, char *)); | |
| 73 | ||
| 74 | va_end(args); | |
| 75 | ||
| 76 | value->flags |= OUTGOING_FLAG; | |
| 77 | ||
| 78 | return value; | |
| 79 | } | |
| 80 | ||
| 81 | void | |
| 82 | gaim_value_destroy(GaimValue *value) | |
| 83 | { | |
| 84 | g_return_if_fail(value != NULL); | |
| 85 | ||
| 86 | if (gaim_value_get_type(value) == GAIM_TYPE_BOXED) | |
| 87 | { | |
| 88 | if (value->u.specific_type != NULL) | |
| 89 | g_free(value->u.specific_type); | |
| 90 | } | |
| 91 | else if (gaim_value_get_type(value) == GAIM_TYPE_STRING) | |
| 92 | { | |
| 93 | if (value->data.string_data != NULL) | |
| 94 | g_free(value->data.string_data); | |
| 95 | } | |
| 96 | ||
| 97 | g_free(value); | |
| 98 | } | |
| 99 | ||
|
8809
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
100 | GaimValue * |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
101 | gaim_value_dup(const GaimValue *value) |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
102 | { |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
103 | GaimValue *new_value; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
104 | GaimType type; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
105 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
106 | g_return_val_if_fail(value != NULL, NULL); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
107 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
108 | type = gaim_value_get_type(value); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
109 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
110 | if (type == GAIM_TYPE_SUBTYPE) |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
111 | { |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
112 | new_value = gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
113 | gaim_value_get_subtype(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
114 | } |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
115 | else if (type == GAIM_TYPE_BOXED) |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
116 | { |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
117 | new_value = gaim_value_new(GAIM_TYPE_BOXED, |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
118 | gaim_value_get_specific_type(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
119 | } |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
120 | else |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
121 | new_value = gaim_value_new(type); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
122 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
123 | new_value->flags = value->flags; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
124 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
125 | switch (type) |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
126 | { |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
127 | case GAIM_TYPE_CHAR: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
128 | gaim_value_set_char(new_value, gaim_value_get_char(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
129 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
130 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
131 | case GAIM_TYPE_UCHAR: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
132 | gaim_value_set_uchar(new_value, gaim_value_get_uchar(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
133 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
134 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
135 | case GAIM_TYPE_BOOLEAN: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
136 | gaim_value_set_boolean(new_value, gaim_value_get_boolean(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
137 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
138 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
139 | case GAIM_TYPE_SHORT: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
140 | gaim_value_set_short(new_value, gaim_value_get_short(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
141 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
142 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
143 | case GAIM_TYPE_USHORT: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
144 | gaim_value_set_ushort(new_value, gaim_value_get_ushort(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
145 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
146 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
147 | case GAIM_TYPE_INT: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
148 | gaim_value_set_int(new_value, gaim_value_get_int(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
149 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
150 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
151 | case GAIM_TYPE_UINT: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
152 | gaim_value_set_uint(new_value, gaim_value_get_uint(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
153 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
154 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
155 | case GAIM_TYPE_LONG: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
156 | gaim_value_set_long(new_value, gaim_value_get_long(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
157 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
158 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
159 | case GAIM_TYPE_ULONG: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
160 | gaim_value_set_ulong(new_value, gaim_value_get_ulong(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
161 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
162 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
163 | case GAIM_TYPE_INT64: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
164 | gaim_value_set_int64(new_value, gaim_value_get_int64(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
165 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
166 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
167 | case GAIM_TYPE_UINT64: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
168 | gaim_value_set_uint64(new_value, gaim_value_get_uint64(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
169 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
170 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
171 | case GAIM_TYPE_STRING: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
172 | gaim_value_set_string(new_value, gaim_value_get_string(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
173 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
174 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
175 | case GAIM_TYPE_OBJECT: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
176 | gaim_value_set_object(new_value, gaim_value_get_object(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
177 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
178 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
179 | case GAIM_TYPE_POINTER: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
180 | gaim_value_set_pointer(new_value, gaim_value_get_pointer(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
181 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
182 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
183 | case GAIM_TYPE_ENUM: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
184 | gaim_value_set_enum(new_value, gaim_value_get_enum(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
185 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
186 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
187 | case GAIM_TYPE_BOXED: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
188 | gaim_value_set_boxed(new_value, gaim_value_get_boxed(value)); |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
189 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
190 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
191 | default: |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
192 | break; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
193 | } |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
194 | |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
195 | return new_value; |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
196 | } |
|
4fc1959df5ce
[gaim-migrate @ 9571]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
197 | |
| 6562 | 198 | GaimType |
| 199 | gaim_value_get_type(const GaimValue *value) | |
| 200 | { | |
| 201 | g_return_val_if_fail(value != NULL, GAIM_TYPE_UNKNOWN); | |
| 202 | ||
| 203 | return value->type; | |
| 204 | } | |
| 205 | ||
| 206 | unsigned int | |
| 207 | gaim_value_get_subtype(const GaimValue *value) | |
| 208 | { | |
| 209 | g_return_val_if_fail(value != NULL, 0); | |
| 210 | g_return_val_if_fail(gaim_value_get_type(value) == GAIM_TYPE_SUBTYPE, 0); | |
| 211 | ||
| 212 | return value->u.subtype; | |
| 213 | } | |
| 214 | ||
| 215 | const char * | |
| 216 | gaim_value_get_specific_type(const GaimValue *value) | |
| 217 | { | |
| 218 | g_return_val_if_fail(value != NULL, NULL); | |
| 219 | g_return_val_if_fail(gaim_value_get_type(value) == GAIM_TYPE_BOXED, NULL); | |
| 220 | ||
| 221 | return value->u.specific_type; | |
| 222 | } | |
| 223 | ||
| 224 | gboolean | |
| 225 | gaim_value_is_outgoing(const GaimValue *value) | |
| 226 | { | |
| 227 | g_return_val_if_fail(value != NULL, FALSE); | |
| 228 | ||
| 229 | return (value->flags & OUTGOING_FLAG); | |
| 230 | } | |
| 231 | ||
| 232 | void | |
| 233 | gaim_value_set_char(GaimValue *value, char data) | |
| 234 | { | |
| 235 | g_return_if_fail(value != NULL); | |
| 236 | ||
| 237 | value->data.char_data = data; | |
| 238 | } | |
| 239 | ||
| 240 | void | |
| 241 | gaim_value_set_uchar(GaimValue *value, unsigned char data) | |
| 242 | { | |
| 243 | g_return_if_fail(value != NULL); | |
| 244 | ||
| 245 | value->data.uchar_data = data; | |
| 246 | } | |
| 247 | ||
| 248 | void | |
| 249 | gaim_value_set_boolean(GaimValue *value, gboolean data) | |
| 250 | { | |
| 251 | g_return_if_fail(value != NULL); | |
| 252 | ||
| 253 | value->data.boolean_data = data; | |
| 254 | } | |
| 255 | ||
| 256 | void | |
| 257 | gaim_value_set_short(GaimValue *value, short data) | |
| 258 | { | |
| 259 | g_return_if_fail(value != NULL); | |
| 260 | ||
| 261 | value->data.short_data = data; | |
| 262 | } | |
| 263 | ||
| 264 | void | |
| 265 | gaim_value_set_ushort(GaimValue *value, unsigned short data) | |
| 266 | { | |
| 267 | g_return_if_fail(value != NULL); | |
| 268 | ||
| 269 | value->data.ushort_data = data; | |
| 270 | } | |
| 271 | ||
| 272 | void | |
| 273 | gaim_value_set_int(GaimValue *value, int data) | |
| 274 | { | |
| 275 | g_return_if_fail(value != NULL); | |
| 276 | ||
| 277 | value->data.int_data = data; | |
| 278 | } | |
| 279 | ||
| 280 | void | |
| 281 | gaim_value_set_uint(GaimValue *value, unsigned int data) | |
| 282 | { | |
| 283 | g_return_if_fail(value != NULL); | |
| 284 | ||
| 285 | value->data.int_data = data; | |
| 286 | } | |
| 287 | ||
| 288 | void | |
| 289 | gaim_value_set_long(GaimValue *value, long data) | |
| 290 | { | |
| 291 | g_return_if_fail(value != NULL); | |
| 292 | ||
| 293 | value->data.long_data = data; | |
| 294 | } | |
| 295 | ||
| 296 | void | |
| 297 | gaim_value_set_ulong(GaimValue *value, unsigned long data) | |
| 298 | { | |
| 299 | g_return_if_fail(value != NULL); | |
| 300 | ||
| 301 | value->data.long_data = data; | |
| 302 | } | |
| 303 | ||
| 304 | void | |
| 305 | gaim_value_set_int64(GaimValue *value, gint64 data) | |
| 306 | { | |
| 307 | g_return_if_fail(value != NULL); | |
| 308 | ||
| 309 | value->data.int64_data = data; | |
| 310 | } | |
| 311 | ||
| 312 | void | |
| 313 | gaim_value_set_uint64(GaimValue *value, guint64 data) | |
| 314 | { | |
| 315 | g_return_if_fail(value != NULL); | |
| 316 | ||
| 317 | value->data.uint64_data = data; | |
| 318 | } | |
| 319 | ||
| 320 | void | |
| 321 | gaim_value_set_string(GaimValue *value, const char *data) | |
| 322 | { | |
| 323 | g_return_if_fail(value != NULL); | |
| 324 | ||
| 325 | if (value->data.string_data != NULL) | |
| 326 | g_free(value->data.string_data); | |
| 327 | ||
| 328 | value->data.string_data = (data == NULL ? NULL : g_strdup(data)); | |
| 329 | } | |
| 330 | ||
| 331 | void | |
| 332 | gaim_value_set_object(GaimValue *value, void *data) | |
| 333 | { | |
| 334 | g_return_if_fail(value != NULL); | |
| 335 | ||
| 336 | value->data.object_data = data; | |
| 337 | } | |
| 338 | ||
| 339 | void | |
| 340 | gaim_value_set_pointer(GaimValue *value, void *data) | |
| 341 | { | |
| 342 | g_return_if_fail(value != NULL); | |
| 343 | ||
| 344 | value->data.pointer_data = data; | |
| 345 | } | |
| 346 | ||
| 347 | void | |
| 348 | gaim_value_set_enum(GaimValue *value, int data) | |
| 349 | { | |
| 350 | g_return_if_fail(value != NULL); | |
| 351 | ||
| 352 | value->data.enum_data = data; | |
| 353 | } | |
| 354 | ||
| 355 | void | |
| 356 | gaim_value_set_boxed(GaimValue *value, void *data) | |
| 357 | { | |
| 358 | g_return_if_fail(value != NULL); | |
| 359 | ||
| 360 | value->data.boxed_data = data; | |
| 361 | } | |
| 362 | ||
| 363 | char | |
| 364 | gaim_value_get_char(const GaimValue *value) | |
| 365 | { | |
| 366 | g_return_val_if_fail(value != NULL, 0); | |
| 367 | ||
| 368 | return value->data.char_data; | |
| 369 | } | |
| 370 | ||
| 371 | unsigned char | |
| 372 | gaim_value_get_uchar(const GaimValue *value) | |
| 373 | { | |
| 374 | g_return_val_if_fail(value != NULL, 0); | |
| 375 | ||
| 376 | return value->data.uchar_data; | |
| 377 | } | |
| 378 | ||
| 379 | gboolean | |
| 380 | gaim_value_get_boolean(const GaimValue *value) | |
| 381 | { | |
| 382 | g_return_val_if_fail(value != NULL, FALSE); | |
| 383 | ||
| 384 | return value->data.boolean_data; | |
| 385 | } | |
| 386 | ||
| 387 | short | |
| 388 | gaim_value_get_short(const GaimValue *value) | |
| 389 | { | |
| 390 | g_return_val_if_fail(value != NULL, 0); | |
| 391 | ||
| 392 | return value->data.short_data; | |
| 393 | } | |
| 394 | ||
| 395 | unsigned short | |
| 396 | gaim_value_get_ushort(const GaimValue *value) | |
| 397 | { | |
| 398 | g_return_val_if_fail(value != NULL, 0); | |
| 399 | ||
| 400 | return value->data.ushort_data; | |
| 401 | } | |
| 402 | ||
| 403 | int | |
| 404 | gaim_value_get_int(const GaimValue *value) | |
| 405 | { | |
| 406 | g_return_val_if_fail(value != NULL, 0); | |
| 407 | ||
| 408 | return value->data.int_data; | |
| 409 | } | |
| 410 | ||
| 411 | unsigned int | |
| 412 | gaim_value_get_uint(const GaimValue *value) | |
| 413 | { | |
| 414 | g_return_val_if_fail(value != NULL, 0); | |
| 415 | ||
| 416 | return value->data.int_data; | |
| 417 | } | |
| 418 | ||
| 419 | long | |
| 420 | gaim_value_get_long(const GaimValue *value) | |
| 421 | { | |
| 422 | g_return_val_if_fail(value != NULL, 0); | |
| 423 | ||
| 424 | return value->data.long_data; | |
| 425 | } | |
| 426 | ||
| 427 | unsigned long | |
| 428 | gaim_value_get_ulong(const GaimValue *value) | |
| 429 | { | |
| 430 | g_return_val_if_fail(value != NULL, 0); | |
| 431 | ||
| 432 | return value->data.long_data; | |
| 433 | } | |
| 434 | ||
| 435 | gint64 | |
| 436 | gaim_value_get_int64(const GaimValue *value) | |
| 437 | { | |
| 438 | g_return_val_if_fail(value != NULL, 0); | |
| 439 | ||
| 440 | return value->data.int64_data; | |
| 441 | } | |
| 442 | ||
| 443 | guint64 | |
| 444 | gaim_value_get_uint64(const GaimValue *value) | |
| 445 | { | |
| 446 | g_return_val_if_fail(value != NULL, 0); | |
| 447 | ||
| 448 | return value->data.uint64_data; | |
| 449 | } | |
| 450 | ||
| 451 | const char * | |
| 452 | gaim_value_get_string(const GaimValue *value) | |
| 453 | { | |
| 454 | g_return_val_if_fail(value != NULL, NULL); | |
| 455 | ||
| 456 | return value->data.string_data; | |
| 457 | } | |
| 458 | ||
| 459 | void * | |
| 460 | gaim_value_get_object(const GaimValue *value) | |
| 461 | { | |
| 462 | g_return_val_if_fail(value != NULL, NULL); | |
| 463 | ||
| 464 | return value->data.object_data; | |
| 465 | } | |
| 466 | ||
| 467 | void * | |
| 468 | gaim_value_get_pointer(const GaimValue *value) | |
| 469 | { | |
| 470 | g_return_val_if_fail(value != NULL, NULL); | |
| 471 | ||
| 472 | return value->data.pointer_data; | |
| 473 | } | |
| 474 | ||
| 475 | int | |
| 476 | gaim_value_get_enum(const GaimValue *value) | |
| 477 | { | |
| 478 | g_return_val_if_fail(value != NULL, -1); | |
| 479 | ||
| 480 | return value->data.enum_data; | |
| 481 | } | |
| 482 | ||
| 483 | void * | |
| 484 | gaim_value_get_boxed(const GaimValue *value) | |
| 485 | { | |
| 486 | g_return_val_if_fail(value != NULL, NULL); | |
| 487 | ||
| 488 | return value->data.boxed_data; | |
| 489 | } | |
| 490 |