| 95 } |
95 } |
| 96 |
96 |
| 97 g_free(value); |
97 g_free(value); |
| 98 } |
98 } |
| 99 |
99 |
| |
100 GaimValue * |
| |
101 gaim_value_dup(const GaimValue *value) |
| |
102 { |
| |
103 GaimValue *new_value; |
| |
104 GaimType type; |
| |
105 |
| |
106 g_return_val_if_fail(value != NULL, NULL); |
| |
107 |
| |
108 type = gaim_value_get_type(value); |
| |
109 |
| |
110 if (type == GAIM_TYPE_SUBTYPE) |
| |
111 { |
| |
112 new_value = gaim_value_new(GAIM_TYPE_SUBTYPE, |
| |
113 gaim_value_get_subtype(value)); |
| |
114 } |
| |
115 else if (type == GAIM_TYPE_BOXED) |
| |
116 { |
| |
117 new_value = gaim_value_new(GAIM_TYPE_BOXED, |
| |
118 gaim_value_get_specific_type(value)); |
| |
119 } |
| |
120 else |
| |
121 new_value = gaim_value_new(type); |
| |
122 |
| |
123 new_value->flags = value->flags; |
| |
124 |
| |
125 switch (type) |
| |
126 { |
| |
127 case GAIM_TYPE_CHAR: |
| |
128 gaim_value_set_char(new_value, gaim_value_get_char(value)); |
| |
129 break; |
| |
130 |
| |
131 case GAIM_TYPE_UCHAR: |
| |
132 gaim_value_set_uchar(new_value, gaim_value_get_uchar(value)); |
| |
133 break; |
| |
134 |
| |
135 case GAIM_TYPE_BOOLEAN: |
| |
136 gaim_value_set_boolean(new_value, gaim_value_get_boolean(value)); |
| |
137 break; |
| |
138 |
| |
139 case GAIM_TYPE_SHORT: |
| |
140 gaim_value_set_short(new_value, gaim_value_get_short(value)); |
| |
141 break; |
| |
142 |
| |
143 case GAIM_TYPE_USHORT: |
| |
144 gaim_value_set_ushort(new_value, gaim_value_get_ushort(value)); |
| |
145 break; |
| |
146 |
| |
147 case GAIM_TYPE_INT: |
| |
148 gaim_value_set_int(new_value, gaim_value_get_int(value)); |
| |
149 break; |
| |
150 |
| |
151 case GAIM_TYPE_UINT: |
| |
152 gaim_value_set_uint(new_value, gaim_value_get_uint(value)); |
| |
153 break; |
| |
154 |
| |
155 case GAIM_TYPE_LONG: |
| |
156 gaim_value_set_long(new_value, gaim_value_get_long(value)); |
| |
157 break; |
| |
158 |
| |
159 case GAIM_TYPE_ULONG: |
| |
160 gaim_value_set_ulong(new_value, gaim_value_get_ulong(value)); |
| |
161 break; |
| |
162 |
| |
163 case GAIM_TYPE_INT64: |
| |
164 gaim_value_set_int64(new_value, gaim_value_get_int64(value)); |
| |
165 break; |
| |
166 |
| |
167 case GAIM_TYPE_UINT64: |
| |
168 gaim_value_set_uint64(new_value, gaim_value_get_uint64(value)); |
| |
169 break; |
| |
170 |
| |
171 case GAIM_TYPE_STRING: |
| |
172 gaim_value_set_string(new_value, gaim_value_get_string(value)); |
| |
173 break; |
| |
174 |
| |
175 case GAIM_TYPE_OBJECT: |
| |
176 gaim_value_set_object(new_value, gaim_value_get_object(value)); |
| |
177 break; |
| |
178 |
| |
179 case GAIM_TYPE_POINTER: |
| |
180 gaim_value_set_pointer(new_value, gaim_value_get_pointer(value)); |
| |
181 break; |
| |
182 |
| |
183 case GAIM_TYPE_ENUM: |
| |
184 gaim_value_set_enum(new_value, gaim_value_get_enum(value)); |
| |
185 break; |
| |
186 |
| |
187 case GAIM_TYPE_BOXED: |
| |
188 gaim_value_set_boxed(new_value, gaim_value_get_boxed(value)); |
| |
189 break; |
| |
190 |
| |
191 default: |
| |
192 break; |
| |
193 } |
| |
194 |
| |
195 return new_value; |
| |
196 } |
| |
197 |
| 100 GaimType |
198 GaimType |
| 101 gaim_value_get_type(const GaimValue *value) |
199 gaim_value_get_type(const GaimValue *value) |
| 102 { |
200 { |
| 103 g_return_val_if_fail(value != NULL, GAIM_TYPE_UNKNOWN); |
201 g_return_val_if_fail(value != NULL, GAIM_TYPE_UNKNOWN); |
| 104 |
202 |