1 /* abstractmultiset.c generated by valac 0.46.6, the Vala compiler
2  * generated from abstractmultiset.vala, do not modify */
3 
4 /* abstractmultiset.vala
5  *
6  * Copyright (C) 2009  Ali Sabil
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12 
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17 
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
21  *
22  * Author:
23  * 	Ali Sabil <ali.sabil@gmail.com>
24  * 	Didier 'Ptitjes Villevalois <ptitjes@free.fr>
25  */
26 
27 #include <glib-object.h>
28 #include <glib.h>
29 
30 #define GEE_TYPE_TRAVERSABLE (gee_traversable_get_type ())
31 #define GEE_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversable))
32 #define GEE_IS_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TRAVERSABLE))
33 #define GEE_TRAVERSABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversableIface))
34 
35 typedef struct _GeeTraversable GeeTraversable;
36 typedef struct _GeeTraversableIface GeeTraversableIface;
37 typedef gboolean (*GeeForallFunc) (gpointer g, gpointer user_data);
38 typedef enum  {
39 	GEE_TRAVERSABLE_STREAM_YIELD,
40 	GEE_TRAVERSABLE_STREAM_CONTINUE,
41 	GEE_TRAVERSABLE_STREAM_END,
42 	GEE_TRAVERSABLE_STREAM_WAIT
43 } GeeTraversableStream;
44 
45 #define GEE_TRAVERSABLE_TYPE_STREAM (gee_traversable_stream_get_type ())
46 
47 #define GEE_TYPE_LAZY (gee_lazy_get_type ())
48 #define GEE_LAZY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LAZY, GeeLazy))
49 #define GEE_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_LAZY, GeeLazyClass))
50 #define GEE_IS_LAZY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LAZY))
51 #define GEE_IS_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_LAZY))
52 #define GEE_LAZY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_LAZY, GeeLazyClass))
53 
54 typedef struct _GeeLazy GeeLazy;
55 typedef struct _GeeLazyClass GeeLazyClass;
56 typedef GeeTraversableStream (*GeeStreamFunc) (GeeTraversableStream state, GeeLazy* g, GeeLazy* * lazy, gpointer user_data);
57 
58 #define GEE_TYPE_ITERATOR (gee_iterator_get_type ())
59 #define GEE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERATOR, GeeIterator))
60 #define GEE_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERATOR))
61 #define GEE_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERATOR, GeeIteratorIface))
62 
63 typedef struct _GeeIterator GeeIterator;
64 typedef struct _GeeIteratorIface GeeIteratorIface;
65 typedef gpointer (*GeeFoldFunc) (gpointer g, gpointer a, gpointer user_data);
66 typedef gpointer (*GeeMapFunc) (gpointer g, gpointer user_data);
67 typedef gboolean (*GeePredicate) (gconstpointer g, gpointer user_data);
68 typedef GeeIterator* (*GeeFlatMapFunc) (gpointer g, gpointer user_data);
69 
70 #define GEE_TYPE_ITERABLE (gee_iterable_get_type ())
71 #define GEE_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERABLE, GeeIterable))
72 #define GEE_IS_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERABLE))
73 #define GEE_ITERABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERABLE, GeeIterableIface))
74 
75 typedef struct _GeeIterable GeeIterable;
76 typedef struct _GeeIterableIface GeeIterableIface;
77 
78 #define GEE_TYPE_COLLECTION (gee_collection_get_type ())
79 #define GEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COLLECTION, GeeCollection))
80 #define GEE_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COLLECTION))
81 #define GEE_COLLECTION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_COLLECTION, GeeCollectionIface))
82 
83 typedef struct _GeeCollection GeeCollection;
84 typedef struct _GeeCollectionIface GeeCollectionIface;
85 
86 #define GEE_TYPE_ABSTRACT_COLLECTION (gee_abstract_collection_get_type ())
87 #define GEE_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection))
88 #define GEE_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
89 #define GEE_IS_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_COLLECTION))
90 #define GEE_IS_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_COLLECTION))
91 #define GEE_ABSTRACT_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
92 
93 typedef struct _GeeAbstractCollection GeeAbstractCollection;
94 typedef struct _GeeAbstractCollectionClass GeeAbstractCollectionClass;
95 typedef struct _GeeAbstractCollectionPrivate GeeAbstractCollectionPrivate;
96 
97 #define GEE_TYPE_MULTI_SET (gee_multi_set_get_type ())
98 #define GEE_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MULTI_SET, GeeMultiSet))
99 #define GEE_IS_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MULTI_SET))
100 #define GEE_MULTI_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MULTI_SET, GeeMultiSetIface))
101 
102 typedef struct _GeeMultiSet GeeMultiSet;
103 typedef struct _GeeMultiSetIface GeeMultiSetIface;
104 
105 #define GEE_TYPE_ABSTRACT_MULTI_SET (gee_abstract_multi_set_get_type ())
106 #define GEE_ABSTRACT_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet))
107 #define GEE_ABSTRACT_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSetClass))
108 #define GEE_IS_ABSTRACT_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MULTI_SET))
109 #define GEE_IS_ABSTRACT_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MULTI_SET))
110 #define GEE_ABSTRACT_MULTI_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSetClass))
111 
112 typedef struct _GeeAbstractMultiSet GeeAbstractMultiSet;
113 typedef struct _GeeAbstractMultiSetClass GeeAbstractMultiSetClass;
114 typedef struct _GeeAbstractMultiSetPrivate GeeAbstractMultiSetPrivate;
115 
116 #define GEE_TYPE_MAP (gee_map_get_type ())
117 #define GEE_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP, GeeMap))
118 #define GEE_IS_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP))
119 #define GEE_MAP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP, GeeMapIface))
120 
121 typedef struct _GeeMap GeeMap;
122 typedef struct _GeeMapIface GeeMapIface;
123 
124 #define GEE_TYPE_MAP_ITERATOR (gee_map_iterator_get_type ())
125 #define GEE_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIterator))
126 #define GEE_IS_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP_ITERATOR))
127 #define GEE_MAP_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIteratorIface))
128 
129 typedef struct _GeeMapIterator GeeMapIterator;
130 typedef struct _GeeMapIteratorIface GeeMapIteratorIface;
131 typedef gpointer (*GeeFoldMapFunc) (gconstpointer k, gconstpointer v, gpointer a, gpointer user_data);
132 typedef gboolean (*GeeForallMapFunc) (gconstpointer k, gconstpointer v, gpointer user_data);
133 
134 #define GEE_TYPE_SET (gee_set_get_type ())
135 #define GEE_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_SET, GeeSet))
136 #define GEE_IS_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_SET))
137 #define GEE_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_SET, GeeSetIface))
138 
139 typedef struct _GeeSet GeeSet;
140 typedef struct _GeeSetIface GeeSetIface;
141 
142 #define GEE_MAP_TYPE_ENTRY (gee_map_entry_get_type ())
143 #define GEE_MAP_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntry))
144 #define GEE_MAP_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))
145 #define GEE_MAP_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_MAP_TYPE_ENTRY))
146 #define GEE_MAP_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_MAP_TYPE_ENTRY))
147 #define GEE_MAP_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))
148 
149 typedef struct _GeeMapEntry GeeMapEntry;
150 typedef struct _GeeMapEntryClass GeeMapEntryClass;
151 enum  {
152 	GEE_ABSTRACT_MULTI_SET_0_PROPERTY,
153 	GEE_ABSTRACT_MULTI_SET_G_TYPE,
154 	GEE_ABSTRACT_MULTI_SET_G_DUP_FUNC,
155 	GEE_ABSTRACT_MULTI_SET_G_DESTROY_FUNC,
156 	GEE_ABSTRACT_MULTI_SET_SIZE_PROPERTY,
157 	GEE_ABSTRACT_MULTI_SET_READ_ONLY_PROPERTY,
158 	GEE_ABSTRACT_MULTI_SET_NUM_PROPERTIES
159 };
160 static GParamSpec* gee_abstract_multi_set_properties[GEE_ABSTRACT_MULTI_SET_NUM_PROPERTIES];
161 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
162 
163 #define GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR (gee_abstract_multi_set_iterator_get_type ())
164 #define GEE_ABSTRACT_MULTI_SET_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIterator))
165 #define GEE_ABSTRACT_MULTI_SET_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIteratorClass))
166 #define GEE_ABSTRACT_MULTI_SET_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR))
167 #define GEE_ABSTRACT_MULTI_SET_IS_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR))
168 #define GEE_ABSTRACT_MULTI_SET_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIteratorClass))
169 
170 typedef struct _GeeAbstractMultiSetIterator GeeAbstractMultiSetIterator;
171 typedef struct _GeeAbstractMultiSetIteratorClass GeeAbstractMultiSetIteratorClass;
172 
173 #define GEE_TYPE_READ_ONLY_COLLECTION (gee_read_only_collection_get_type ())
174 #define GEE_READ_ONLY_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_READ_ONLY_COLLECTION, GeeReadOnlyCollection))
175 #define GEE_READ_ONLY_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_READ_ONLY_COLLECTION, GeeReadOnlyCollectionClass))
176 #define GEE_IS_READ_ONLY_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_READ_ONLY_COLLECTION))
177 #define GEE_IS_READ_ONLY_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_READ_ONLY_COLLECTION))
178 #define GEE_READ_ONLY_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_READ_ONLY_COLLECTION, GeeReadOnlyCollectionClass))
179 
180 typedef struct _GeeReadOnlyCollection GeeReadOnlyCollection;
181 typedef struct _GeeReadOnlyCollectionClass GeeReadOnlyCollectionClass;
182 
183 #define GEE_TYPE_READ_ONLY_MULTI_SET (gee_read_only_multi_set_get_type ())
184 #define GEE_READ_ONLY_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_READ_ONLY_MULTI_SET, GeeReadOnlyMultiSet))
185 #define GEE_READ_ONLY_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_READ_ONLY_MULTI_SET, GeeReadOnlyMultiSetClass))
186 #define GEE_IS_READ_ONLY_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_READ_ONLY_MULTI_SET))
187 #define GEE_IS_READ_ONLY_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_READ_ONLY_MULTI_SET))
188 #define GEE_READ_ONLY_MULTI_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_READ_ONLY_MULTI_SET, GeeReadOnlyMultiSetClass))
189 
190 typedef struct _GeeReadOnlyMultiSet GeeReadOnlyMultiSet;
191 typedef struct _GeeReadOnlyMultiSetClass GeeReadOnlyMultiSetClass;
192 typedef struct _GeeAbstractMultiSetIteratorPrivate GeeAbstractMultiSetIteratorPrivate;
193 enum  {
194 	GEE_ABSTRACT_MULTI_SET_ITERATOR_0_PROPERTY,
195 	GEE_ABSTRACT_MULTI_SET_ITERATOR_G_TYPE,
196 	GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DUP_FUNC,
197 	GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DESTROY_FUNC,
198 	GEE_ABSTRACT_MULTI_SET_ITERATOR_READ_ONLY_PROPERTY,
199 	GEE_ABSTRACT_MULTI_SET_ITERATOR_VALID_PROPERTY,
200 	GEE_ABSTRACT_MULTI_SET_ITERATOR_NUM_PROPERTIES
201 };
202 static GParamSpec* gee_abstract_multi_set_iterator_properties[GEE_ABSTRACT_MULTI_SET_ITERATOR_NUM_PROPERTIES];
203 #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
204 #define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
205 #define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
206 #define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
207 
208 struct _GeeIteratorIface {
209 	GTypeInterface parent_iface;
210 	gboolean (*next) (GeeIterator* self);
211 	gboolean (*has_next) (GeeIterator* self);
212 	gpointer (*get) (GeeIterator* self);
213 	void (*remove) (GeeIterator* self);
214 	gboolean (*get_valid) (GeeIterator* self);
215 	gboolean (*get_read_only) (GeeIterator* self);
216 };
217 
218 struct _GeeTraversableIface {
219 	GTypeInterface parent_iface;
220 	GType (*get_g_type) (GeeTraversable* self);
221 	GBoxedCopyFunc (*get_g_dup_func) (GeeTraversable* self);
222 	GDestroyNotify (*get_g_destroy_func) (GeeTraversable* self);
223 	gboolean (*foreach) (GeeTraversable* self, GeeForallFunc f, gpointer f_target);
224 	GeeIterator* (*stream) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeStreamFunc f, gpointer f_target, GDestroyNotify f_target_destroy_notify);
225 	gpointer (*fold) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, gpointer f_target, gpointer seed);
226 	GeeIterator* (*map) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeMapFunc f, gpointer f_target);
227 	GeeIterator* (*scan) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, gpointer f_target, gpointer seed);
228 	GeeIterator* (*filter) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
229 	GeeIterator* (*chop) (GeeTraversable* self, gint offset, gint length);
230 	GType (*get_element_type) (GeeTraversable* self);
231 	GeeIterator* (*flat_map) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFlatMapFunc f, gpointer f_target, GDestroyNotify f_target_destroy_notify);
232 	GeeIterator** (*tee) (GeeTraversable* self, guint forks, gint* result_length1);
233 	gpointer (*first_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
234 	gboolean (*any_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
235 	gboolean (*all_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
236 	gpointer (*max) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
237 	gpointer (*min) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
238 	GeeIterator* (*order_by) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
239 };
240 
241 struct _GeeIterableIface {
242 	GTypeInterface parent_iface;
243 	GType (*get_g_type) (GeeIterable* self);
244 	GBoxedCopyFunc (*get_g_dup_func) (GeeIterable* self);
245 	GDestroyNotify (*get_g_destroy_func) (GeeIterable* self);
246 	GeeIterator* (*iterator) (GeeIterable* self);
247 };
248 
249 struct _GeeCollectionIface {
250 	GTypeInterface parent_iface;
251 	GType (*get_g_type) (GeeCollection* self);
252 	GBoxedCopyFunc (*get_g_dup_func) (GeeCollection* self);
253 	GDestroyNotify (*get_g_destroy_func) (GeeCollection* self);
254 	gboolean (*contains) (GeeCollection* self, gconstpointer item);
255 	gboolean (*add) (GeeCollection* self, gconstpointer item);
256 	gboolean (*remove) (GeeCollection* self, gconstpointer item);
257 	void (*clear) (GeeCollection* self);
258 	gboolean (*add_all) (GeeCollection* self, GeeCollection* collection);
259 	gboolean (*contains_all) (GeeCollection* self, GeeCollection* collection);
260 	gboolean (*remove_all) (GeeCollection* self, GeeCollection* collection);
261 	gboolean (*retain_all) (GeeCollection* self, GeeCollection* collection);
262 	gpointer* (*to_array) (GeeCollection* self, gint* result_length1);
263 	gint (*get_size) (GeeCollection* self);
264 	gboolean (*get_is_empty) (GeeCollection* self);
265 	gboolean (*get_read_only) (GeeCollection* self);
266 	GeeCollection* (*get_read_only_view) (GeeCollection* self);
267 	gboolean (*add_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
268 	gboolean (*contains_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
269 	gboolean (*remove_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
270 	gboolean (*add_all_iterator) (GeeCollection* self, GeeIterator* iter);
271 	gboolean (*contains_all_iterator) (GeeCollection* self, GeeIterator* iter);
272 	gboolean (*remove_all_iterator) (GeeCollection* self, GeeIterator* iter);
273 };
274 
275 struct _GeeAbstractCollection {
276 	GObject parent_instance;
277 	GeeAbstractCollectionPrivate * priv;
278 };
279 
280 struct _GeeAbstractCollectionClass {
281 	GObjectClass parent_class;
282 	gboolean (*contains) (GeeAbstractCollection* self, gconstpointer item);
283 	gboolean (*add) (GeeAbstractCollection* self, gconstpointer item);
284 	gboolean (*remove) (GeeAbstractCollection* self, gconstpointer item);
285 	void (*clear) (GeeAbstractCollection* self);
286 	GeeIterator* (*iterator) (GeeAbstractCollection* self);
287 	gboolean (*foreach) (GeeAbstractCollection* self, GeeForallFunc f, gpointer f_target);
288 	void (*reserved0) (GeeAbstractCollection* self);
289 	void (*reserved1) (GeeAbstractCollection* self);
290 	void (*reserved2) (GeeAbstractCollection* self);
291 	void (*reserved3) (GeeAbstractCollection* self);
292 	void (*reserved4) (GeeAbstractCollection* self);
293 	void (*reserved5) (GeeAbstractCollection* self);
294 	void (*reserved6) (GeeAbstractCollection* self);
295 	void (*reserved7) (GeeAbstractCollection* self);
296 	void (*reserved8) (GeeAbstractCollection* self);
297 	void (*reserved9) (GeeAbstractCollection* self);
298 	gint (*get_size) (GeeAbstractCollection* self);
299 	gboolean (*get_read_only) (GeeAbstractCollection* self);
300 	GeeCollection* (*get_read_only_view) (GeeAbstractCollection* self);
301 };
302 
303 struct _GeeMultiSetIface {
304 	GTypeInterface parent_iface;
305 	GType (*get_g_type) (GeeMultiSet* self);
306 	GBoxedCopyFunc (*get_g_dup_func) (GeeMultiSet* self);
307 	GDestroyNotify (*get_g_destroy_func) (GeeMultiSet* self);
308 	gint (*count) (GeeMultiSet* self, gconstpointer item);
309 	GeeMultiSet* (*get_read_only_view) (GeeMultiSet* self);
310 };
311 
312 struct _GeeMapIteratorIface {
313 	GTypeInterface parent_iface;
314 	GType (*get_k_type) (GeeMapIterator* self);
315 	GBoxedCopyFunc (*get_k_dup_func) (GeeMapIterator* self);
316 	GDestroyNotify (*get_k_destroy_func) (GeeMapIterator* self);
317 	GType (*get_v_type) (GeeMapIterator* self);
318 	GBoxedCopyFunc (*get_v_dup_func) (GeeMapIterator* self);
319 	GDestroyNotify (*get_v_destroy_func) (GeeMapIterator* self);
320 	gboolean (*next) (GeeMapIterator* self);
321 	gboolean (*has_next) (GeeMapIterator* self);
322 	gpointer (*get_key) (GeeMapIterator* self);
323 	gpointer (*get_value) (GeeMapIterator* self);
324 	void (*set_value) (GeeMapIterator* self, gconstpointer value);
325 	void (*unset) (GeeMapIterator* self);
326 	gpointer (*fold) (GeeMapIterator* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldMapFunc f, gpointer f_target, gpointer seed);
327 	gboolean (*foreach) (GeeMapIterator* self, GeeForallMapFunc f, gpointer f_target);
328 	gboolean (*get_valid) (GeeMapIterator* self);
329 	gboolean (*get_mutable) (GeeMapIterator* self);
330 	gboolean (*get_read_only) (GeeMapIterator* self);
331 };
332 
333 struct _GeeSetIface {
334 	GTypeInterface parent_iface;
335 	GType (*get_g_type) (GeeSet* self);
336 	GBoxedCopyFunc (*get_g_dup_func) (GeeSet* self);
337 	GDestroyNotify (*get_g_destroy_func) (GeeSet* self);
338 	GeeSet* (*get_read_only_view) (GeeSet* self);
339 };
340 
341 struct _GeeMapIface {
342 	GTypeInterface parent_iface;
343 	GType (*get_k_type) (GeeMap* self);
344 	GBoxedCopyFunc (*get_k_dup_func) (GeeMap* self);
345 	GDestroyNotify (*get_k_destroy_func) (GeeMap* self);
346 	GType (*get_v_type) (GeeMap* self);
347 	GBoxedCopyFunc (*get_v_dup_func) (GeeMap* self);
348 	GDestroyNotify (*get_v_destroy_func) (GeeMap* self);
349 	gboolean (*has_key) (GeeMap* self, gconstpointer key);
350 	gboolean (*has) (GeeMap* self, gconstpointer key, gconstpointer value);
351 	gpointer (*get) (GeeMap* self, gconstpointer key);
352 	void (*set) (GeeMap* self, gconstpointer key, gconstpointer value);
353 	gboolean (*unset) (GeeMap* self, gconstpointer key, gpointer* value);
354 	void (*clear) (GeeMap* self);
355 	GeeMapIterator* (*map_iterator) (GeeMap* self);
356 	void (*set_all) (GeeMap* self, GeeMap* map);
357 	gboolean (*unset_all) (GeeMap* self, GeeMap* map);
358 	gboolean (*has_all) (GeeMap* self, GeeMap* map);
359 	gint (*get_size) (GeeMap* self);
360 	gboolean (*get_is_empty) (GeeMap* self);
361 	gboolean (*get_read_only) (GeeMap* self);
362 	GeeSet* (*get_keys) (GeeMap* self);
363 	GeeCollection* (*get_values) (GeeMap* self);
364 	GeeSet* (*get_entries) (GeeMap* self);
365 	GeeMap* (*get_read_only_view) (GeeMap* self);
366 };
367 
368 struct _GeeAbstractMultiSet {
369 	GeeAbstractCollection parent_instance;
370 	GeeAbstractMultiSetPrivate * priv;
371 	GeeMap* _storage_map;
372 };
373 
374 struct _GeeAbstractMultiSetClass {
375 	GeeAbstractCollectionClass parent_class;
376 	void (*reserved0) (GeeAbstractMultiSet* self);
377 	void (*reserved1) (GeeAbstractMultiSet* self);
378 	void (*reserved2) (GeeAbstractMultiSet* self);
379 	void (*reserved3) (GeeAbstractMultiSet* self);
380 	void (*reserved4) (GeeAbstractMultiSet* self);
381 	void (*reserved5) (GeeAbstractMultiSet* self);
382 	void (*reserved6) (GeeAbstractMultiSet* self);
383 	void (*reserved7) (GeeAbstractMultiSet* self);
384 	void (*reserved8) (GeeAbstractMultiSet* self);
385 	GeeMultiSet* (*get_read_only_view) (GeeAbstractMultiSet* self);
386 };
387 
388 struct _GeeAbstractMultiSetPrivate {
389 	GType g_type;
390 	GBoxedCopyFunc g_dup_func;
391 	GDestroyNotify g_destroy_func;
392 	gint _nitems;
393 	GWeakRef _read_only_view;
394 };
395 
396 struct _GeeAbstractMultiSetIterator {
397 	GObject parent_instance;
398 	GeeAbstractMultiSetIteratorPrivate * priv;
399 };
400 
401 struct _GeeAbstractMultiSetIteratorClass {
402 	GObjectClass parent_class;
403 };
404 
405 struct _GeeAbstractMultiSetIteratorPrivate {
406 	GType g_type;
407 	GBoxedCopyFunc g_dup_func;
408 	GDestroyNotify g_destroy_func;
409 	GeeAbstractMultiSet* _set;
410 	GeeMapIterator* _iter;
411 	gint _pending;
412 	gboolean _removed;
413 };
414 
415 static gint GeeAbstractMultiSet_private_offset;
416 static gpointer gee_abstract_multi_set_parent_class = NULL;
417 static gint GeeAbstractMultiSetIterator_private_offset;
418 static gpointer gee_abstract_multi_set_iterator_parent_class = NULL;
419 static GeeTraversableIface * gee_abstract_multi_set_iterator_gee_traversable_parent_iface = NULL;
420 static GeeIteratorIface * gee_abstract_multi_set_iterator_gee_iterator_parent_iface = NULL;
421 static GeeMultiSetIface * gee_abstract_multi_set_gee_multi_set_parent_iface = NULL;
422 
423 GType gee_traversable_stream_get_type (void) G_GNUC_CONST;
424 gpointer gee_lazy_ref (gpointer instance);
425 void gee_lazy_unref (gpointer instance);
426 GParamSpec* gee_param_spec_lazy (const gchar* name,
427                                  const gchar* nick,
428                                  const gchar* blurb,
429                                  GType object_type,
430                                  GParamFlags flags);
431 void gee_value_set_lazy (GValue* value,
432                          gpointer v_object);
433 void gee_value_take_lazy (GValue* value,
434                           gpointer v_object);
435 gpointer gee_value_get_lazy (const GValue* value);
436 GType gee_lazy_get_type (void) G_GNUC_CONST;
437 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeLazy, gee_lazy_unref)
438 GType gee_iterator_get_type (void) G_GNUC_CONST;
439 GType gee_traversable_get_type (void) G_GNUC_CONST;
440 GType gee_iterable_get_type (void) G_GNUC_CONST;
441 GType gee_collection_get_type (void) G_GNUC_CONST;
442 GType gee_abstract_collection_get_type (void) G_GNUC_CONST;
443 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractCollection, g_object_unref)
444 GType gee_multi_set_get_type (void) G_GNUC_CONST;
445 GType gee_abstract_multi_set_get_type (void) G_GNUC_CONST;
446 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractMultiSet, g_object_unref)
447 GType gee_map_iterator_get_type (void) G_GNUC_CONST;
448 GType gee_set_get_type (void) G_GNUC_CONST;
449 GType gee_map_entry_get_type (void) G_GNUC_CONST;
450 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeMapEntry, g_object_unref)
451 GType gee_map_get_type (void) G_GNUC_CONST;
452 GeeAbstractMultiSet* gee_abstract_multi_set_construct (GType object_type,
453                                                        GType g_type,
454                                                        GBoxedCopyFunc g_dup_func,
455                                                        GDestroyNotify g_destroy_func,
456                                                        GeeMap* storage_map);
457 GeeAbstractCollection* gee_abstract_collection_construct (GType object_type,
458                                                           GType g_type,
459                                                           GBoxedCopyFunc g_dup_func,
460                                                           GDestroyNotify g_destroy_func);
461 static gint gee_abstract_multi_set_real_count (GeeMultiSet* base,
462                                         gconstpointer item);
463 gboolean gee_map_has_key (GeeMap* self,
464                           gconstpointer key);
465 gpointer gee_map_get (GeeMap* self,
466                       gconstpointer key);
467 static gboolean gee_abstract_multi_set_real_contains (GeeAbstractCollection* base,
468                                                gconstpointer item);
469 static GeeIterator* gee_abstract_multi_set_real_iterator (GeeAbstractCollection* base);
470 static GeeAbstractMultiSetIterator* gee_abstract_multi_set_iterator_new (GType g_type,
471                                                                   GBoxedCopyFunc g_dup_func,
472                                                                   GDestroyNotify g_destroy_func,
473                                                                   GeeAbstractMultiSet* set);
474 static GeeAbstractMultiSetIterator* gee_abstract_multi_set_iterator_construct (GType object_type,
475                                                                         GType g_type,
476                                                                         GBoxedCopyFunc g_dup_func,
477                                                                         GDestroyNotify g_destroy_func,
478                                                                         GeeAbstractMultiSet* set);
479 static GType gee_abstract_multi_set_iterator_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
480 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractMultiSetIterator, g_object_unref)
481 static gboolean gee_abstract_multi_set_real_add (GeeAbstractCollection* base,
482                                           gconstpointer item);
483 void gee_map_set (GeeMap* self,
484                   gconstpointer key,
485                   gconstpointer value);
486 static gboolean gee_abstract_multi_set_real_remove (GeeAbstractCollection* base,
487                                              gconstpointer item);
488 gboolean gee_map_unset (GeeMap* self,
489                         gconstpointer key,
490                         gpointer* value);
491 static void gee_abstract_multi_set_real_clear (GeeAbstractCollection* base);
492 void gee_map_clear (GeeMap* self);
493 G_GNUC_INTERNAL void gee_abstract_multi_set_reserved0 (GeeAbstractMultiSet* self);
494 static void gee_abstract_multi_set_real_reserved0 (GeeAbstractMultiSet* self);
495 G_GNUC_INTERNAL void gee_abstract_multi_set_reserved1 (GeeAbstractMultiSet* self);
496 static void gee_abstract_multi_set_real_reserved1 (GeeAbstractMultiSet* self);
497 G_GNUC_INTERNAL void gee_abstract_multi_set_reserved2 (GeeAbstractMultiSet* self);
498 static void gee_abstract_multi_set_real_reserved2 (GeeAbstractMultiSet* self);
499 G_GNUC_INTERNAL void gee_abstract_multi_set_reserved3 (GeeAbstractMultiSet* self);
500 static void gee_abstract_multi_set_real_reserved3 (GeeAbstractMultiSet* self);
501 G_GNUC_INTERNAL void gee_abstract_multi_set_reserved4 (GeeAbstractMultiSet* self);
502 static void gee_abstract_multi_set_real_reserved4 (GeeAbstractMultiSet* self);
503 G_GNUC_INTERNAL void gee_abstract_multi_set_reserved5 (GeeAbstractMultiSet* self);
504 static void gee_abstract_multi_set_real_reserved5 (GeeAbstractMultiSet* self);
505 G_GNUC_INTERNAL void gee_abstract_multi_set_reserved6 (GeeAbstractMultiSet* self);
506 static void gee_abstract_multi_set_real_reserved6 (GeeAbstractMultiSet* self);
507 G_GNUC_INTERNAL void gee_abstract_multi_set_reserved7 (GeeAbstractMultiSet* self);
508 static void gee_abstract_multi_set_real_reserved7 (GeeAbstractMultiSet* self);
509 G_GNUC_INTERNAL void gee_abstract_multi_set_reserved8 (GeeAbstractMultiSet* self);
510 static void gee_abstract_multi_set_real_reserved8 (GeeAbstractMultiSet* self);
511 GeeMultiSet* gee_abstract_multi_set_get_read_only_view (GeeAbstractMultiSet* self);
512 G_GNUC_INTERNAL GeeReadOnlyMultiSet* gee_read_only_multi_set_new (GType g_type,
513                                                   GBoxedCopyFunc g_dup_func,
514                                                   GDestroyNotify g_destroy_func,
515                                                   GeeMultiSet* multiset);
516 G_GNUC_INTERNAL GeeReadOnlyMultiSet* gee_read_only_multi_set_construct (GType object_type,
517                                                         GType g_type,
518                                                         GBoxedCopyFunc g_dup_func,
519                                                         GDestroyNotify g_destroy_func,
520                                                         GeeMultiSet* multiset);
521 G_GNUC_INTERNAL GType gee_read_only_collection_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
522 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeReadOnlyCollection, g_object_unref)
523 G_GNUC_INTERNAL GType gee_read_only_multi_set_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
524 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeReadOnlyMultiSet, g_object_unref)
525 static GObject * gee_abstract_multi_set_constructor (GType type,
526                                               guint n_construct_properties,
527                                               GObjectConstructParam * construct_properties);
528 GeeMapIterator* gee_map_map_iterator (GeeMap* self);
529 static gboolean gee_abstract_multi_set_iterator_real_next (GeeIterator* base);
530 gboolean gee_map_iterator_next (GeeMapIterator* self);
531 gpointer gee_map_iterator_get_value (GeeMapIterator* self);
532 static gboolean gee_abstract_multi_set_iterator_real_has_next (GeeIterator* base);
533 gboolean gee_map_iterator_has_next (GeeMapIterator* self);
534 static gpointer gee_abstract_multi_set_iterator_real_get (GeeIterator* base);
535 gpointer gee_map_iterator_get_key (GeeMapIterator* self);
536 static void gee_abstract_multi_set_iterator_real_remove (GeeIterator* base);
537 void gee_map_iterator_set_value (GeeMapIterator* self,
538                                  gconstpointer value);
539 void gee_map_iterator_unset (GeeMapIterator* self);
540 static gboolean gee_abstract_multi_set_iterator_real_foreach (GeeTraversable* base,
541                                                        GeeForallFunc f,
542                                                        gpointer f_target);
543 gboolean gee_map_iterator_get_valid (GeeMapIterator* self);
544 static void gee_abstract_multi_set_iterator_finalize (GObject * obj);
545 gboolean gee_iterator_get_read_only (GeeIterator* self);
546 gboolean gee_iterator_get_valid (GeeIterator* self);
547 static void _vala_gee_abstract_multi_set_iterator_get_property (GObject * object,
548                                                          guint property_id,
549                                                          GValue * value,
550                                                          GParamSpec * pspec);
551 static void _vala_gee_abstract_multi_set_iterator_set_property (GObject * object,
552                                                          guint property_id,
553                                                          const GValue * value,
554                                                          GParamSpec * pspec);
555 static void gee_abstract_multi_set_finalize (GObject * obj);
556 gint gee_abstract_collection_get_size (GeeAbstractCollection* self);
557 gboolean gee_abstract_collection_get_read_only (GeeAbstractCollection* self);
558 static void _vala_gee_abstract_multi_set_get_property (GObject * object,
559                                                 guint property_id,
560                                                 GValue * value,
561                                                 GParamSpec * pspec);
562 static void _vala_gee_abstract_multi_set_set_property (GObject * object,
563                                                 guint property_id,
564                                                 const GValue * value,
565                                                 GParamSpec * pspec);
566 
567 static inline gpointer
gee_abstract_multi_set_get_instance_private(GeeAbstractMultiSet * self)568 gee_abstract_multi_set_get_instance_private (GeeAbstractMultiSet* self)
569 {
570 	return G_STRUCT_MEMBER_P (self, GeeAbstractMultiSet_private_offset);
571 }
572 
573 /**
574  * Constructs a new, empty abstract multi set.
575  */
576 static gpointer
_g_object_ref0(gpointer self)577 _g_object_ref0 (gpointer self)
578 {
579 	return self ? g_object_ref (self) : NULL;
580 }
581 
582 GeeAbstractMultiSet*
gee_abstract_multi_set_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeMap * storage_map)583 gee_abstract_multi_set_construct (GType object_type,
584                                   GType g_type,
585                                   GBoxedCopyFunc g_dup_func,
586                                   GDestroyNotify g_destroy_func,
587                                   GeeMap* storage_map)
588 {
589 	GeeAbstractMultiSet * self = NULL;
590 	GeeMap* _tmp0_;
591 	g_return_val_if_fail (storage_map != NULL, NULL);
592 	self = (GeeAbstractMultiSet*) gee_abstract_collection_construct (object_type, g_type, (GBoxedCopyFunc) g_dup_func, (GDestroyNotify) g_destroy_func);
593 	self->priv->g_type = g_type;
594 	self->priv->g_dup_func = g_dup_func;
595 	self->priv->g_destroy_func = g_destroy_func;
596 	_tmp0_ = _g_object_ref0 (storage_map);
597 	_g_object_unref0 (self->_storage_map);
598 	self->_storage_map = _tmp0_;
599 	return self;
600 }
601 
602 static gint
gee_abstract_multi_set_real_count(GeeMultiSet * base,gconstpointer item)603 gee_abstract_multi_set_real_count (GeeMultiSet* base,
604                                    gconstpointer item)
605 {
606 	GeeAbstractMultiSet * self;
607 	gint _result_ = 0;
608 	GeeMap* _tmp0_;
609 	gint result = 0;
610 	self = (GeeAbstractMultiSet*) base;
611 	_result_ = 0;
612 	_tmp0_ = self->_storage_map;
613 	if (gee_map_has_key (_tmp0_, item)) {
614 		GeeMap* _tmp1_;
615 		gpointer _tmp2_;
616 		_tmp1_ = self->_storage_map;
617 		_tmp2_ = gee_map_get (_tmp1_, item);
618 		_result_ = (gint) ((gintptr) _tmp2_);
619 	}
620 	result = _result_;
621 	return result;
622 }
623 
624 static gboolean
gee_abstract_multi_set_real_contains(GeeAbstractCollection * base,gconstpointer item)625 gee_abstract_multi_set_real_contains (GeeAbstractCollection* base,
626                                       gconstpointer item)
627 {
628 	GeeAbstractMultiSet * self;
629 	GeeMap* _tmp0_;
630 	gboolean result = FALSE;
631 	self = (GeeAbstractMultiSet*) base;
632 	_tmp0_ = self->_storage_map;
633 	result = gee_map_has_key (_tmp0_, item);
634 	return result;
635 }
636 
637 static GeeIterator*
gee_abstract_multi_set_real_iterator(GeeAbstractCollection * base)638 gee_abstract_multi_set_real_iterator (GeeAbstractCollection* base)
639 {
640 	GeeAbstractMultiSet * self;
641 	GeeAbstractMultiSetIterator* _tmp0_;
642 	GeeIterator* result = NULL;
643 	self = (GeeAbstractMultiSet*) base;
644 	_tmp0_ = gee_abstract_multi_set_iterator_new (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, (GDestroyNotify) self->priv->g_destroy_func, self);
645 	result = (GeeIterator*) _tmp0_;
646 	return result;
647 }
648 
649 static gboolean
gee_abstract_multi_set_real_add(GeeAbstractCollection * base,gconstpointer item)650 gee_abstract_multi_set_real_add (GeeAbstractCollection* base,
651                                  gconstpointer item)
652 {
653 	GeeAbstractMultiSet * self;
654 	GeeMap* _tmp0_;
655 	gint _tmp5_;
656 	gboolean result = FALSE;
657 	self = (GeeAbstractMultiSet*) base;
658 	_tmp0_ = self->_storage_map;
659 	if (gee_map_has_key (_tmp0_, item)) {
660 		gint current_count = 0;
661 		GeeMap* _tmp1_;
662 		gpointer _tmp2_;
663 		GeeMap* _tmp3_;
664 		_tmp1_ = self->_storage_map;
665 		_tmp2_ = gee_map_get (_tmp1_, item);
666 		current_count = (gint) ((gintptr) _tmp2_);
667 		_tmp3_ = self->_storage_map;
668 		gee_map_set (_tmp3_, item, (gpointer) ((gintptr) (current_count + 1)));
669 	} else {
670 		GeeMap* _tmp4_;
671 		_tmp4_ = self->_storage_map;
672 		gee_map_set (_tmp4_, item, (gpointer) ((gintptr) 1));
673 	}
674 	_tmp5_ = self->priv->_nitems;
675 	self->priv->_nitems = _tmp5_ + 1;
676 	result = TRUE;
677 	return result;
678 }
679 
680 static gboolean
gee_abstract_multi_set_real_remove(GeeAbstractCollection * base,gconstpointer item)681 gee_abstract_multi_set_real_remove (GeeAbstractCollection* base,
682                                     gconstpointer item)
683 {
684 	GeeAbstractMultiSet * self;
685 	gboolean _tmp0_ = FALSE;
686 	gboolean result = FALSE;
687 	self = (GeeAbstractMultiSet*) base;
688 	if (self->priv->_nitems > 0) {
689 		GeeMap* _tmp1_;
690 		_tmp1_ = self->_storage_map;
691 		_tmp0_ = gee_map_has_key (_tmp1_, item);
692 	} else {
693 		_tmp0_ = FALSE;
694 	}
695 	if (_tmp0_) {
696 		gint current_count = 0;
697 		GeeMap* _tmp2_;
698 		gpointer _tmp3_;
699 		gint _tmp6_;
700 		_tmp2_ = self->_storage_map;
701 		_tmp3_ = gee_map_get (_tmp2_, item);
702 		current_count = (gint) ((gintptr) _tmp3_);
703 		if (current_count <= 1) {
704 			GeeMap* _tmp4_;
705 			_tmp4_ = self->_storage_map;
706 			gee_map_unset (_tmp4_, item, NULL);
707 		} else {
708 			GeeMap* _tmp5_;
709 			_tmp5_ = self->_storage_map;
710 			gee_map_set (_tmp5_, item, (gpointer) ((gintptr) (current_count - 1)));
711 		}
712 		_tmp6_ = self->priv->_nitems;
713 		self->priv->_nitems = _tmp6_ - 1;
714 		result = TRUE;
715 		return result;
716 	}
717 	result = FALSE;
718 	return result;
719 }
720 
721 static void
gee_abstract_multi_set_real_clear(GeeAbstractCollection * base)722 gee_abstract_multi_set_real_clear (GeeAbstractCollection* base)
723 {
724 	GeeAbstractMultiSet * self;
725 	GeeMap* _tmp0_;
726 	self = (GeeAbstractMultiSet*) base;
727 	_tmp0_ = self->_storage_map;
728 	gee_map_clear (_tmp0_);
729 	self->priv->_nitems = 0;
730 }
731 
732 static void
gee_abstract_multi_set_real_reserved0(GeeAbstractMultiSet * self)733 gee_abstract_multi_set_real_reserved0 (GeeAbstractMultiSet* self)
734 {
735 }
736 
737 void
gee_abstract_multi_set_reserved0(GeeAbstractMultiSet * self)738 gee_abstract_multi_set_reserved0 (GeeAbstractMultiSet* self)
739 {
740 	g_return_if_fail (self != NULL);
741 	GEE_ABSTRACT_MULTI_SET_GET_CLASS (self)->reserved0 (self);
742 }
743 
744 static void
gee_abstract_multi_set_real_reserved1(GeeAbstractMultiSet * self)745 gee_abstract_multi_set_real_reserved1 (GeeAbstractMultiSet* self)
746 {
747 }
748 
749 void
gee_abstract_multi_set_reserved1(GeeAbstractMultiSet * self)750 gee_abstract_multi_set_reserved1 (GeeAbstractMultiSet* self)
751 {
752 	g_return_if_fail (self != NULL);
753 	GEE_ABSTRACT_MULTI_SET_GET_CLASS (self)->reserved1 (self);
754 }
755 
756 static void
gee_abstract_multi_set_real_reserved2(GeeAbstractMultiSet * self)757 gee_abstract_multi_set_real_reserved2 (GeeAbstractMultiSet* self)
758 {
759 }
760 
761 void
gee_abstract_multi_set_reserved2(GeeAbstractMultiSet * self)762 gee_abstract_multi_set_reserved2 (GeeAbstractMultiSet* self)
763 {
764 	g_return_if_fail (self != NULL);
765 	GEE_ABSTRACT_MULTI_SET_GET_CLASS (self)->reserved2 (self);
766 }
767 
768 static void
gee_abstract_multi_set_real_reserved3(GeeAbstractMultiSet * self)769 gee_abstract_multi_set_real_reserved3 (GeeAbstractMultiSet* self)
770 {
771 }
772 
773 void
gee_abstract_multi_set_reserved3(GeeAbstractMultiSet * self)774 gee_abstract_multi_set_reserved3 (GeeAbstractMultiSet* self)
775 {
776 	g_return_if_fail (self != NULL);
777 	GEE_ABSTRACT_MULTI_SET_GET_CLASS (self)->reserved3 (self);
778 }
779 
780 static void
gee_abstract_multi_set_real_reserved4(GeeAbstractMultiSet * self)781 gee_abstract_multi_set_real_reserved4 (GeeAbstractMultiSet* self)
782 {
783 }
784 
785 void
gee_abstract_multi_set_reserved4(GeeAbstractMultiSet * self)786 gee_abstract_multi_set_reserved4 (GeeAbstractMultiSet* self)
787 {
788 	g_return_if_fail (self != NULL);
789 	GEE_ABSTRACT_MULTI_SET_GET_CLASS (self)->reserved4 (self);
790 }
791 
792 static void
gee_abstract_multi_set_real_reserved5(GeeAbstractMultiSet * self)793 gee_abstract_multi_set_real_reserved5 (GeeAbstractMultiSet* self)
794 {
795 }
796 
797 void
gee_abstract_multi_set_reserved5(GeeAbstractMultiSet * self)798 gee_abstract_multi_set_reserved5 (GeeAbstractMultiSet* self)
799 {
800 	g_return_if_fail (self != NULL);
801 	GEE_ABSTRACT_MULTI_SET_GET_CLASS (self)->reserved5 (self);
802 }
803 
804 static void
gee_abstract_multi_set_real_reserved6(GeeAbstractMultiSet * self)805 gee_abstract_multi_set_real_reserved6 (GeeAbstractMultiSet* self)
806 {
807 }
808 
809 void
gee_abstract_multi_set_reserved6(GeeAbstractMultiSet * self)810 gee_abstract_multi_set_reserved6 (GeeAbstractMultiSet* self)
811 {
812 	g_return_if_fail (self != NULL);
813 	GEE_ABSTRACT_MULTI_SET_GET_CLASS (self)->reserved6 (self);
814 }
815 
816 static void
gee_abstract_multi_set_real_reserved7(GeeAbstractMultiSet * self)817 gee_abstract_multi_set_real_reserved7 (GeeAbstractMultiSet* self)
818 {
819 }
820 
821 void
gee_abstract_multi_set_reserved7(GeeAbstractMultiSet * self)822 gee_abstract_multi_set_reserved7 (GeeAbstractMultiSet* self)
823 {
824 	g_return_if_fail (self != NULL);
825 	GEE_ABSTRACT_MULTI_SET_GET_CLASS (self)->reserved7 (self);
826 }
827 
828 static void
gee_abstract_multi_set_real_reserved8(GeeAbstractMultiSet * self)829 gee_abstract_multi_set_real_reserved8 (GeeAbstractMultiSet* self)
830 {
831 }
832 
833 void
gee_abstract_multi_set_reserved8(GeeAbstractMultiSet * self)834 gee_abstract_multi_set_reserved8 (GeeAbstractMultiSet* self)
835 {
836 	g_return_if_fail (self != NULL);
837 	GEE_ABSTRACT_MULTI_SET_GET_CLASS (self)->reserved8 (self);
838 }
839 
840 static gint
gee_abstract_multi_set_real_get_size(GeeAbstractCollection * base)841 gee_abstract_multi_set_real_get_size (GeeAbstractCollection* base)
842 {
843 	gint result;
844 	GeeAbstractMultiSet* self;
845 	self = (GeeAbstractMultiSet*) base;
846 	result = self->priv->_nitems;
847 	return result;
848 }
849 
850 static gboolean
gee_abstract_multi_set_real_get_read_only(GeeAbstractCollection * base)851 gee_abstract_multi_set_real_get_read_only (GeeAbstractCollection* base)
852 {
853 	gboolean result;
854 	GeeAbstractMultiSet* self;
855 	self = (GeeAbstractMultiSet*) base;
856 	result = FALSE;
857 	return result;
858 }
859 
860 GeeMultiSet*
gee_abstract_multi_set_get_read_only_view(GeeAbstractMultiSet * self)861 gee_abstract_multi_set_get_read_only_view (GeeAbstractMultiSet* self)
862 {
863 	g_return_val_if_fail (self != NULL, NULL);
864 	return GEE_ABSTRACT_MULTI_SET_GET_CLASS (self)->get_read_only_view (self);
865 }
866 
867 static GeeMultiSet*
gee_abstract_multi_set_real_get_read_only_view(GeeAbstractMultiSet * base)868 gee_abstract_multi_set_real_get_read_only_view (GeeAbstractMultiSet* base)
869 {
870 	GeeMultiSet* result;
871 	GeeAbstractMultiSet* self;
872 	GeeMultiSet* instance = NULL;
873 	GObject* _tmp0_;
874 	GeeMultiSet* _tmp1_;
875 	self = base;
876 	_tmp0_ = g_weak_ref_get (&self->priv->_read_only_view);
877 	instance = G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_MULTI_SET, GeeMultiSet);
878 	_tmp1_ = instance;
879 	if (_tmp1_ == NULL) {
880 		GeeReadOnlyMultiSet* _tmp2_;
881 		GeeMultiSet* _tmp3_;
882 		_tmp2_ = gee_read_only_multi_set_new (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, (GDestroyNotify) self->priv->g_destroy_func, (GeeMultiSet*) self);
883 		_g_object_unref0 (instance);
884 		instance = (GeeMultiSet*) _tmp2_;
885 		_tmp3_ = instance;
886 		g_weak_ref_set (&self->priv->_read_only_view, (GObject*) _tmp3_);
887 	}
888 	result = instance;
889 	return result;
890 }
891 
892 static GObject *
gee_abstract_multi_set_constructor(GType type,guint n_construct_properties,GObjectConstructParam * construct_properties)893 gee_abstract_multi_set_constructor (GType type,
894                                     guint n_construct_properties,
895                                     GObjectConstructParam * construct_properties)
896 {
897 	GObject * obj;
898 	GObjectClass * parent_class;
899 	GeeAbstractMultiSet * self;
900 	parent_class = G_OBJECT_CLASS (gee_abstract_multi_set_parent_class);
901 	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
902 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet);
903 	g_weak_ref_clear (&self->priv->_read_only_view);
904 	g_weak_ref_init (&self->priv->_read_only_view, NULL);
905 	return obj;
906 }
907 
908 static inline gpointer
gee_abstract_multi_set_iterator_get_instance_private(GeeAbstractMultiSetIterator * self)909 gee_abstract_multi_set_iterator_get_instance_private (GeeAbstractMultiSetIterator* self)
910 {
911 	return G_STRUCT_MEMBER_P (self, GeeAbstractMultiSetIterator_private_offset);
912 }
913 
914 static GeeAbstractMultiSetIterator*
gee_abstract_multi_set_iterator_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeAbstractMultiSet * set)915 gee_abstract_multi_set_iterator_construct (GType object_type,
916                                            GType g_type,
917                                            GBoxedCopyFunc g_dup_func,
918                                            GDestroyNotify g_destroy_func,
919                                            GeeAbstractMultiSet* set)
920 {
921 	GeeAbstractMultiSetIterator * self = NULL;
922 	GeeAbstractMultiSet* _tmp0_;
923 	GeeAbstractMultiSet* _tmp1_;
924 	GeeMap* _tmp2_;
925 	GeeMapIterator* _tmp3_;
926 	g_return_val_if_fail (set != NULL, NULL);
927 	self = (GeeAbstractMultiSetIterator*) g_object_new (object_type, NULL);
928 	self->priv->g_type = g_type;
929 	self->priv->g_dup_func = g_dup_func;
930 	self->priv->g_destroy_func = g_destroy_func;
931 	_tmp0_ = _g_object_ref0 (set);
932 	_g_object_unref0 (self->priv->_set);
933 	self->priv->_set = _tmp0_;
934 	_tmp1_ = self->priv->_set;
935 	_tmp2_ = _tmp1_->_storage_map;
936 	_tmp3_ = gee_map_map_iterator (_tmp2_);
937 	_g_object_unref0 (self->priv->_iter);
938 	self->priv->_iter = _tmp3_;
939 	return self;
940 }
941 
942 static GeeAbstractMultiSetIterator*
gee_abstract_multi_set_iterator_new(GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeAbstractMultiSet * set)943 gee_abstract_multi_set_iterator_new (GType g_type,
944                                      GBoxedCopyFunc g_dup_func,
945                                      GDestroyNotify g_destroy_func,
946                                      GeeAbstractMultiSet* set)
947 {
948 	return gee_abstract_multi_set_iterator_construct (GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, g_type, g_dup_func, g_destroy_func, set);
949 }
950 
951 static gboolean
gee_abstract_multi_set_iterator_real_next(GeeIterator * base)952 gee_abstract_multi_set_iterator_real_next (GeeIterator* base)
953 {
954 	GeeAbstractMultiSetIterator * self;
955 	gboolean result = FALSE;
956 	self = (GeeAbstractMultiSetIterator*) base;
957 	self->priv->_removed = FALSE;
958 	if (self->priv->_pending == 0) {
959 		GeeMapIterator* _tmp0_;
960 		_tmp0_ = self->priv->_iter;
961 		if (gee_map_iterator_next (_tmp0_)) {
962 			GeeMapIterator* _tmp1_;
963 			gpointer _tmp2_;
964 			_tmp1_ = self->priv->_iter;
965 			_tmp2_ = gee_map_iterator_get_value (_tmp1_);
966 			self->priv->_pending = ((gint) ((gintptr) _tmp2_)) - 1;
967 			result = TRUE;
968 			return result;
969 		}
970 	} else {
971 		gint _tmp3_;
972 		_tmp3_ = self->priv->_pending;
973 		self->priv->_pending = _tmp3_ - 1;
974 		result = TRUE;
975 		return result;
976 	}
977 	result = FALSE;
978 	return result;
979 }
980 
981 static gboolean
gee_abstract_multi_set_iterator_real_has_next(GeeIterator * base)982 gee_abstract_multi_set_iterator_real_has_next (GeeIterator* base)
983 {
984 	GeeAbstractMultiSetIterator * self;
985 	gboolean _tmp0_ = FALSE;
986 	gboolean result = FALSE;
987 	self = (GeeAbstractMultiSetIterator*) base;
988 	if (self->priv->_pending > 0) {
989 		_tmp0_ = TRUE;
990 	} else {
991 		GeeMapIterator* _tmp1_;
992 		_tmp1_ = self->priv->_iter;
993 		_tmp0_ = gee_map_iterator_has_next (_tmp1_);
994 	}
995 	result = _tmp0_;
996 	return result;
997 }
998 
999 static gpointer
gee_abstract_multi_set_iterator_real_get(GeeIterator * base)1000 gee_abstract_multi_set_iterator_real_get (GeeIterator* base)
1001 {
1002 	GeeAbstractMultiSetIterator * self;
1003 	GeeMapIterator* _tmp0_;
1004 	gpointer _tmp1_;
1005 	gpointer result = NULL;
1006 	self = (GeeAbstractMultiSetIterator*) base;
1007 	_vala_assert (!self->priv->_removed, "! _removed");
1008 	_tmp0_ = self->priv->_iter;
1009 	_tmp1_ = gee_map_iterator_get_key (_tmp0_);
1010 	result = _tmp1_;
1011 	return result;
1012 }
1013 
1014 static void
gee_abstract_multi_set_iterator_real_remove(GeeIterator * base)1015 gee_abstract_multi_set_iterator_real_remove (GeeIterator* base)
1016 {
1017 	GeeAbstractMultiSetIterator * self;
1018 	GeeMapIterator* _tmp0_;
1019 	GeeMapIterator* _tmp1_;
1020 	gpointer _tmp2_;
1021 	GeeAbstractMultiSet* _tmp4_;
1022 	gint _tmp5_;
1023 	self = (GeeAbstractMultiSetIterator*) base;
1024 	_vala_assert (!self->priv->_removed, "! _removed");
1025 	_tmp0_ = self->priv->_iter;
1026 	_tmp1_ = self->priv->_iter;
1027 	_tmp2_ = gee_map_iterator_get_value (_tmp1_);
1028 	self->priv->_pending = ((gint) ((gintptr) _tmp2_)) - 1;
1029 	gee_map_iterator_set_value (_tmp0_, (gpointer) ((gintptr) self->priv->_pending));
1030 	if (self->priv->_pending == 0) {
1031 		GeeMapIterator* _tmp3_;
1032 		_tmp3_ = self->priv->_iter;
1033 		gee_map_iterator_unset (_tmp3_);
1034 	}
1035 	_tmp4_ = self->priv->_set;
1036 	_tmp5_ = _tmp4_->priv->_nitems;
1037 	_tmp4_->priv->_nitems = _tmp5_ - 1;
1038 	self->priv->_removed = TRUE;
1039 }
1040 
1041 static gboolean
gee_abstract_multi_set_iterator_real_foreach(GeeTraversable * base,GeeForallFunc f,gpointer f_target)1042 gee_abstract_multi_set_iterator_real_foreach (GeeTraversable* base,
1043                                               GeeForallFunc f,
1044                                               gpointer f_target)
1045 {
1046 	GeeAbstractMultiSetIterator * self;
1047 	GeeMapIterator* _tmp0_;
1048 	gboolean _tmp1_;
1049 	gboolean _tmp2_;
1050 	gboolean result = FALSE;
1051 	self = (GeeAbstractMultiSetIterator*) base;
1052 	_tmp0_ = self->priv->_iter;
1053 	_tmp1_ = gee_map_iterator_get_valid (_tmp0_);
1054 	_tmp2_ = _tmp1_;
1055 	if (_tmp2_) {
1056 		if (!self->priv->_removed) {
1057 			GeeMapIterator* _tmp3_;
1058 			gpointer _tmp4_;
1059 			_tmp3_ = self->priv->_iter;
1060 			_tmp4_ = gee_map_iterator_get_key (_tmp3_);
1061 			if (!f (_tmp4_, f_target)) {
1062 				result = FALSE;
1063 				return result;
1064 			}
1065 		}
1066 		{
1067 			gint i = 0;
1068 			i = self->priv->_pending - 1;
1069 			{
1070 				gboolean _tmp5_ = FALSE;
1071 				_tmp5_ = TRUE;
1072 				while (TRUE) {
1073 					GeeMapIterator* _tmp6_;
1074 					gpointer _tmp7_;
1075 					if (!_tmp5_) {
1076 						i = i - 1;
1077 					}
1078 					_tmp5_ = FALSE;
1079 					if (!(i >= 0)) {
1080 						break;
1081 					}
1082 					_tmp6_ = self->priv->_iter;
1083 					_tmp7_ = gee_map_iterator_get_key (_tmp6_);
1084 					if (!f (_tmp7_, f_target)) {
1085 						self->priv->_pending = i;
1086 						result = FALSE;
1087 						return result;
1088 					}
1089 				}
1090 			}
1091 		}
1092 	}
1093 	while (TRUE) {
1094 		GeeMapIterator* _tmp8_;
1095 		_tmp8_ = self->priv->_iter;
1096 		if (!gee_map_iterator_next (_tmp8_)) {
1097 			break;
1098 		}
1099 		{
1100 			gint i = 0;
1101 			GeeMapIterator* _tmp9_;
1102 			gpointer _tmp10_;
1103 			_tmp9_ = self->priv->_iter;
1104 			_tmp10_ = gee_map_iterator_get_value (_tmp9_);
1105 			i = ((gint) ((gintptr) _tmp10_)) - 1;
1106 			{
1107 				gboolean _tmp11_ = FALSE;
1108 				_tmp11_ = TRUE;
1109 				while (TRUE) {
1110 					GeeMapIterator* _tmp12_;
1111 					gpointer _tmp13_;
1112 					if (!_tmp11_) {
1113 						i = i - 1;
1114 					}
1115 					_tmp11_ = FALSE;
1116 					if (!(i >= 0)) {
1117 						break;
1118 					}
1119 					_tmp12_ = self->priv->_iter;
1120 					_tmp13_ = gee_map_iterator_get_key (_tmp12_);
1121 					if (!f (_tmp13_, f_target)) {
1122 						self->priv->_removed = FALSE;
1123 						self->priv->_pending = i;
1124 						result = FALSE;
1125 						return result;
1126 					}
1127 				}
1128 			}
1129 		}
1130 	}
1131 	self->priv->_removed = FALSE;
1132 	self->priv->_pending = 0;
1133 	result = TRUE;
1134 	return result;
1135 }
1136 
1137 static gboolean
gee_abstract_multi_set_iterator_real_get_read_only(GeeIterator * base)1138 gee_abstract_multi_set_iterator_real_get_read_only (GeeIterator* base)
1139 {
1140 	gboolean result;
1141 	GeeAbstractMultiSetIterator* self;
1142 	self = (GeeAbstractMultiSetIterator*) base;
1143 	result = FALSE;
1144 	return result;
1145 }
1146 
1147 static gboolean
gee_abstract_multi_set_iterator_real_get_valid(GeeIterator * base)1148 gee_abstract_multi_set_iterator_real_get_valid (GeeIterator* base)
1149 {
1150 	gboolean result;
1151 	GeeAbstractMultiSetIterator* self;
1152 	gboolean _tmp0_ = FALSE;
1153 	self = (GeeAbstractMultiSetIterator*) base;
1154 	if (!self->priv->_removed) {
1155 		GeeMapIterator* _tmp1_;
1156 		gboolean _tmp2_;
1157 		gboolean _tmp3_;
1158 		_tmp1_ = self->priv->_iter;
1159 		_tmp2_ = gee_map_iterator_get_valid (_tmp1_);
1160 		_tmp3_ = _tmp2_;
1161 		_tmp0_ = _tmp3_;
1162 	} else {
1163 		_tmp0_ = FALSE;
1164 	}
1165 	result = _tmp0_;
1166 	return result;
1167 }
1168 
1169 static void
gee_abstract_multi_set_iterator_class_init(GeeAbstractMultiSetIteratorClass * klass,gpointer klass_data)1170 gee_abstract_multi_set_iterator_class_init (GeeAbstractMultiSetIteratorClass * klass,
1171                                             gpointer klass_data)
1172 {
1173 	gee_abstract_multi_set_iterator_parent_class = g_type_class_peek_parent (klass);
1174 	g_type_class_adjust_private_offset (klass, &GeeAbstractMultiSetIterator_private_offset);
1175 	G_OBJECT_CLASS (klass)->get_property = _vala_gee_abstract_multi_set_iterator_get_property;
1176 	G_OBJECT_CLASS (klass)->set_property = _vala_gee_abstract_multi_set_iterator_set_property;
1177 	G_OBJECT_CLASS (klass)->finalize = gee_abstract_multi_set_iterator_finalize;
1178 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_ABSTRACT_MULTI_SET_ITERATOR_G_TYPE, g_param_spec_gtype ("g-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
1179 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DUP_FUNC, g_param_spec_pointer ("g-dup-func", "dup func", "dup func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
1180 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DESTROY_FUNC, g_param_spec_pointer ("g-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
1181 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_ABSTRACT_MULTI_SET_ITERATOR_READ_ONLY_PROPERTY, gee_abstract_multi_set_iterator_properties[GEE_ABSTRACT_MULTI_SET_ITERATOR_READ_ONLY_PROPERTY] = g_param_spec_boolean ("read-only", "read-only", "read-only", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
1182 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_ABSTRACT_MULTI_SET_ITERATOR_VALID_PROPERTY, gee_abstract_multi_set_iterator_properties[GEE_ABSTRACT_MULTI_SET_ITERATOR_VALID_PROPERTY] = g_param_spec_boolean ("valid", "valid", "valid", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
1183 }
1184 
1185 static GType
gee_abstract_multi_set_iterator_gee_traversable_get_g_type(GeeAbstractMultiSetIterator * self)1186 gee_abstract_multi_set_iterator_gee_traversable_get_g_type (GeeAbstractMultiSetIterator* self)
1187 {
1188 	return self->priv->g_type;
1189 }
1190 
1191 static GBoxedCopyFunc
gee_abstract_multi_set_iterator_gee_traversable_get_g_dup_func(GeeAbstractMultiSetIterator * self)1192 gee_abstract_multi_set_iterator_gee_traversable_get_g_dup_func (GeeAbstractMultiSetIterator* self)
1193 {
1194 	return self->priv->g_dup_func;
1195 }
1196 
1197 static GDestroyNotify
gee_abstract_multi_set_iterator_gee_traversable_get_g_destroy_func(GeeAbstractMultiSetIterator * self)1198 gee_abstract_multi_set_iterator_gee_traversable_get_g_destroy_func (GeeAbstractMultiSetIterator* self)
1199 {
1200 	return self->priv->g_destroy_func;
1201 }
1202 
1203 static void
gee_abstract_multi_set_iterator_gee_traversable_interface_init(GeeTraversableIface * iface,gpointer iface_data)1204 gee_abstract_multi_set_iterator_gee_traversable_interface_init (GeeTraversableIface * iface,
1205                                                                 gpointer iface_data)
1206 {
1207 	gee_abstract_multi_set_iterator_gee_traversable_parent_iface = g_type_interface_peek_parent (iface);
1208 	iface->foreach = (gboolean (*) (GeeTraversable*, GeeForallFunc, gpointer)) gee_abstract_multi_set_iterator_real_foreach;
1209 	iface->get_g_type = (GType (*) (GeeTraversable *)) gee_abstract_multi_set_iterator_gee_traversable_get_g_type;
1210 	iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeTraversable *)) gee_abstract_multi_set_iterator_gee_traversable_get_g_dup_func;
1211 	iface->get_g_destroy_func = (GDestroyNotify (*) (GeeTraversable *)) gee_abstract_multi_set_iterator_gee_traversable_get_g_destroy_func;
1212 }
1213 
1214 static void
gee_abstract_multi_set_iterator_gee_iterator_interface_init(GeeIteratorIface * iface,gpointer iface_data)1215 gee_abstract_multi_set_iterator_gee_iterator_interface_init (GeeIteratorIface * iface,
1216                                                              gpointer iface_data)
1217 {
1218 	gee_abstract_multi_set_iterator_gee_iterator_parent_iface = g_type_interface_peek_parent (iface);
1219 	iface->next = (gboolean (*) (GeeIterator*)) gee_abstract_multi_set_iterator_real_next;
1220 	iface->has_next = (gboolean (*) (GeeIterator*)) gee_abstract_multi_set_iterator_real_has_next;
1221 	iface->get = (gpointer (*) (GeeIterator*)) gee_abstract_multi_set_iterator_real_get;
1222 	iface->remove = (void (*) (GeeIterator*)) gee_abstract_multi_set_iterator_real_remove;
1223 	iface->get_read_only = gee_abstract_multi_set_iterator_real_get_read_only;
1224 	iface->get_valid = gee_abstract_multi_set_iterator_real_get_valid;
1225 }
1226 
1227 static void
gee_abstract_multi_set_iterator_instance_init(GeeAbstractMultiSetIterator * self,gpointer klass)1228 gee_abstract_multi_set_iterator_instance_init (GeeAbstractMultiSetIterator * self,
1229                                                gpointer klass)
1230 {
1231 	self->priv = gee_abstract_multi_set_iterator_get_instance_private (self);
1232 	self->priv->_pending = 0;
1233 	self->priv->_removed = FALSE;
1234 }
1235 
1236 static void
gee_abstract_multi_set_iterator_finalize(GObject * obj)1237 gee_abstract_multi_set_iterator_finalize (GObject * obj)
1238 {
1239 	GeeAbstractMultiSetIterator * self;
1240 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIterator);
1241 	_g_object_unref0 (self->priv->_set);
1242 	_g_object_unref0 (self->priv->_iter);
1243 	G_OBJECT_CLASS (gee_abstract_multi_set_iterator_parent_class)->finalize (obj);
1244 }
1245 
1246 static GType
gee_abstract_multi_set_iterator_get_type(void)1247 gee_abstract_multi_set_iterator_get_type (void)
1248 {
1249 	static volatile gsize gee_abstract_multi_set_iterator_type_id__volatile = 0;
1250 	if (g_once_init_enter (&gee_abstract_multi_set_iterator_type_id__volatile)) {
1251 		static const GTypeInfo g_define_type_info = { sizeof (GeeAbstractMultiSetIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_abstract_multi_set_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeAbstractMultiSetIterator), 0, (GInstanceInitFunc) gee_abstract_multi_set_iterator_instance_init, NULL };
1252 		static const GInterfaceInfo gee_traversable_info = { (GInterfaceInitFunc) gee_abstract_multi_set_iterator_gee_traversable_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
1253 		static const GInterfaceInfo gee_iterator_info = { (GInterfaceInitFunc) gee_abstract_multi_set_iterator_gee_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
1254 		GType gee_abstract_multi_set_iterator_type_id;
1255 		gee_abstract_multi_set_iterator_type_id = g_type_register_static (G_TYPE_OBJECT, "GeeAbstractMultiSetIterator", &g_define_type_info, 0);
1256 		g_type_add_interface_static (gee_abstract_multi_set_iterator_type_id, GEE_TYPE_TRAVERSABLE, &gee_traversable_info);
1257 		g_type_add_interface_static (gee_abstract_multi_set_iterator_type_id, GEE_TYPE_ITERATOR, &gee_iterator_info);
1258 		GeeAbstractMultiSetIterator_private_offset = g_type_add_instance_private (gee_abstract_multi_set_iterator_type_id, sizeof (GeeAbstractMultiSetIteratorPrivate));
1259 		g_once_init_leave (&gee_abstract_multi_set_iterator_type_id__volatile, gee_abstract_multi_set_iterator_type_id);
1260 	}
1261 	return gee_abstract_multi_set_iterator_type_id__volatile;
1262 }
1263 
1264 static void
_vala_gee_abstract_multi_set_iterator_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)1265 _vala_gee_abstract_multi_set_iterator_get_property (GObject * object,
1266                                                     guint property_id,
1267                                                     GValue * value,
1268                                                     GParamSpec * pspec)
1269 {
1270 	GeeAbstractMultiSetIterator * self;
1271 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIterator);
1272 	switch (property_id) {
1273 		case GEE_ABSTRACT_MULTI_SET_ITERATOR_READ_ONLY_PROPERTY:
1274 		g_value_set_boolean (value, gee_iterator_get_read_only ((GeeIterator*) self));
1275 		break;
1276 		case GEE_ABSTRACT_MULTI_SET_ITERATOR_VALID_PROPERTY:
1277 		g_value_set_boolean (value, gee_iterator_get_valid ((GeeIterator*) self));
1278 		break;
1279 		case GEE_ABSTRACT_MULTI_SET_ITERATOR_G_TYPE:
1280 		g_value_set_gtype (value, self->priv->g_type);
1281 		break;
1282 		case GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DUP_FUNC:
1283 		g_value_set_pointer (value, self->priv->g_dup_func);
1284 		break;
1285 		case GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DESTROY_FUNC:
1286 		g_value_set_pointer (value, self->priv->g_destroy_func);
1287 		break;
1288 		default:
1289 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
1290 		break;
1291 	}
1292 }
1293 
1294 static void
_vala_gee_abstract_multi_set_iterator_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)1295 _vala_gee_abstract_multi_set_iterator_set_property (GObject * object,
1296                                                     guint property_id,
1297                                                     const GValue * value,
1298                                                     GParamSpec * pspec)
1299 {
1300 	GeeAbstractMultiSetIterator * self;
1301 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIterator);
1302 	switch (property_id) {
1303 		case GEE_ABSTRACT_MULTI_SET_ITERATOR_G_TYPE:
1304 		self->priv->g_type = g_value_get_gtype (value);
1305 		break;
1306 		case GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DUP_FUNC:
1307 		self->priv->g_dup_func = g_value_get_pointer (value);
1308 		break;
1309 		case GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DESTROY_FUNC:
1310 		self->priv->g_destroy_func = g_value_get_pointer (value);
1311 		break;
1312 		default:
1313 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
1314 		break;
1315 	}
1316 }
1317 
1318 static void
gee_abstract_multi_set_class_init(GeeAbstractMultiSetClass * klass,gpointer klass_data)1319 gee_abstract_multi_set_class_init (GeeAbstractMultiSetClass * klass,
1320                                    gpointer klass_data)
1321 {
1322 	gee_abstract_multi_set_parent_class = g_type_class_peek_parent (klass);
1323 	g_type_class_adjust_private_offset (klass, &GeeAbstractMultiSet_private_offset);
1324 	((GeeAbstractCollectionClass *) klass)->contains = (gboolean (*) (GeeAbstractCollection*, gconstpointer)) gee_abstract_multi_set_real_contains;
1325 	((GeeAbstractCollectionClass *) klass)->iterator = (GeeIterator* (*) (GeeAbstractCollection*)) gee_abstract_multi_set_real_iterator;
1326 	((GeeAbstractCollectionClass *) klass)->add = (gboolean (*) (GeeAbstractCollection*, gconstpointer)) gee_abstract_multi_set_real_add;
1327 	((GeeAbstractCollectionClass *) klass)->remove = (gboolean (*) (GeeAbstractCollection*, gconstpointer)) gee_abstract_multi_set_real_remove;
1328 	((GeeAbstractCollectionClass *) klass)->clear = (void (*) (GeeAbstractCollection*)) gee_abstract_multi_set_real_clear;
1329 	((GeeAbstractMultiSetClass *) klass)->reserved0 = (void (*) (GeeAbstractMultiSet*)) gee_abstract_multi_set_real_reserved0;
1330 	((GeeAbstractMultiSetClass *) klass)->reserved1 = (void (*) (GeeAbstractMultiSet*)) gee_abstract_multi_set_real_reserved1;
1331 	((GeeAbstractMultiSetClass *) klass)->reserved2 = (void (*) (GeeAbstractMultiSet*)) gee_abstract_multi_set_real_reserved2;
1332 	((GeeAbstractMultiSetClass *) klass)->reserved3 = (void (*) (GeeAbstractMultiSet*)) gee_abstract_multi_set_real_reserved3;
1333 	((GeeAbstractMultiSetClass *) klass)->reserved4 = (void (*) (GeeAbstractMultiSet*)) gee_abstract_multi_set_real_reserved4;
1334 	((GeeAbstractMultiSetClass *) klass)->reserved5 = (void (*) (GeeAbstractMultiSet*)) gee_abstract_multi_set_real_reserved5;
1335 	((GeeAbstractMultiSetClass *) klass)->reserved6 = (void (*) (GeeAbstractMultiSet*)) gee_abstract_multi_set_real_reserved6;
1336 	((GeeAbstractMultiSetClass *) klass)->reserved7 = (void (*) (GeeAbstractMultiSet*)) gee_abstract_multi_set_real_reserved7;
1337 	((GeeAbstractMultiSetClass *) klass)->reserved8 = (void (*) (GeeAbstractMultiSet*)) gee_abstract_multi_set_real_reserved8;
1338 	GEE_ABSTRACT_COLLECTION_CLASS (klass)->get_size = gee_abstract_multi_set_real_get_size;
1339 	GEE_ABSTRACT_COLLECTION_CLASS (klass)->get_read_only = gee_abstract_multi_set_real_get_read_only;
1340 	GEE_ABSTRACT_MULTI_SET_CLASS (klass)->get_read_only_view = gee_abstract_multi_set_real_get_read_only_view;
1341 	G_OBJECT_CLASS (klass)->get_property = _vala_gee_abstract_multi_set_get_property;
1342 	G_OBJECT_CLASS (klass)->set_property = _vala_gee_abstract_multi_set_set_property;
1343 	G_OBJECT_CLASS (klass)->constructor = gee_abstract_multi_set_constructor;
1344 	G_OBJECT_CLASS (klass)->finalize = gee_abstract_multi_set_finalize;
1345 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_ABSTRACT_MULTI_SET_G_TYPE, g_param_spec_gtype ("g-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
1346 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_ABSTRACT_MULTI_SET_G_DUP_FUNC, g_param_spec_pointer ("g-dup-func", "dup func", "dup func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
1347 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_ABSTRACT_MULTI_SET_G_DESTROY_FUNC, g_param_spec_pointer ("g-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
1348 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_ABSTRACT_MULTI_SET_SIZE_PROPERTY, gee_abstract_multi_set_properties[GEE_ABSTRACT_MULTI_SET_SIZE_PROPERTY] = g_param_spec_int ("size", "size", "size", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
1349 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_ABSTRACT_MULTI_SET_READ_ONLY_PROPERTY, gee_abstract_multi_set_properties[GEE_ABSTRACT_MULTI_SET_READ_ONLY_PROPERTY] = g_param_spec_boolean ("read-only", "read-only", "read-only", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
1350 }
1351 
1352 static GType
gee_abstract_multi_set_gee_multi_set_get_g_type(GeeAbstractMultiSet * self)1353 gee_abstract_multi_set_gee_multi_set_get_g_type (GeeAbstractMultiSet* self)
1354 {
1355 	return self->priv->g_type;
1356 }
1357 
1358 static GBoxedCopyFunc
gee_abstract_multi_set_gee_multi_set_get_g_dup_func(GeeAbstractMultiSet * self)1359 gee_abstract_multi_set_gee_multi_set_get_g_dup_func (GeeAbstractMultiSet* self)
1360 {
1361 	return self->priv->g_dup_func;
1362 }
1363 
1364 static GDestroyNotify
gee_abstract_multi_set_gee_multi_set_get_g_destroy_func(GeeAbstractMultiSet * self)1365 gee_abstract_multi_set_gee_multi_set_get_g_destroy_func (GeeAbstractMultiSet* self)
1366 {
1367 	return self->priv->g_destroy_func;
1368 }
1369 
1370 static void
gee_abstract_multi_set_gee_multi_set_interface_init(GeeMultiSetIface * iface,gpointer iface_data)1371 gee_abstract_multi_set_gee_multi_set_interface_init (GeeMultiSetIface * iface,
1372                                                      gpointer iface_data)
1373 {
1374 	gee_abstract_multi_set_gee_multi_set_parent_iface = g_type_interface_peek_parent (iface);
1375 	iface->count = (gint (*) (GeeMultiSet*, gconstpointer)) gee_abstract_multi_set_real_count;
1376 	iface->get_g_type = (GType (*) (GeeMultiSet *)) gee_abstract_multi_set_gee_multi_set_get_g_type;
1377 	iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeMultiSet *)) gee_abstract_multi_set_gee_multi_set_get_g_dup_func;
1378 	iface->get_g_destroy_func = (GDestroyNotify (*) (GeeMultiSet *)) gee_abstract_multi_set_gee_multi_set_get_g_destroy_func;
1379 	iface->get_read_only_view = (GeeMultiSet* (*) (GeeMultiSet *)) gee_abstract_multi_set_get_read_only_view;
1380 }
1381 
1382 static void
gee_abstract_multi_set_instance_init(GeeAbstractMultiSet * self,gpointer klass)1383 gee_abstract_multi_set_instance_init (GeeAbstractMultiSet * self,
1384                                       gpointer klass)
1385 {
1386 	self->priv = gee_abstract_multi_set_get_instance_private (self);
1387 	self->priv->_nitems = 0;
1388 }
1389 
1390 static void
gee_abstract_multi_set_finalize(GObject * obj)1391 gee_abstract_multi_set_finalize (GObject * obj)
1392 {
1393 	GeeAbstractMultiSet * self;
1394 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet);
1395 	_g_object_unref0 (self->_storage_map);
1396 	g_weak_ref_clear (&self->priv->_read_only_view);
1397 	G_OBJECT_CLASS (gee_abstract_multi_set_parent_class)->finalize (obj);
1398 }
1399 
1400 /**
1401  * Skeletal implementation of the {@link MultiSet} interface.
1402  *
1403  * @see HashMultiSet
1404  * @see TreeMultiSet
1405  */
1406 GType
gee_abstract_multi_set_get_type(void)1407 gee_abstract_multi_set_get_type (void)
1408 {
1409 	static volatile gsize gee_abstract_multi_set_type_id__volatile = 0;
1410 	if (g_once_init_enter (&gee_abstract_multi_set_type_id__volatile)) {
1411 		static const GTypeInfo g_define_type_info = { sizeof (GeeAbstractMultiSetClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_abstract_multi_set_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeAbstractMultiSet), 0, (GInstanceInitFunc) gee_abstract_multi_set_instance_init, NULL };
1412 		static const GInterfaceInfo gee_multi_set_info = { (GInterfaceInitFunc) gee_abstract_multi_set_gee_multi_set_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
1413 		GType gee_abstract_multi_set_type_id;
1414 		gee_abstract_multi_set_type_id = g_type_register_static (GEE_TYPE_ABSTRACT_COLLECTION, "GeeAbstractMultiSet", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
1415 		g_type_add_interface_static (gee_abstract_multi_set_type_id, GEE_TYPE_MULTI_SET, &gee_multi_set_info);
1416 		GeeAbstractMultiSet_private_offset = g_type_add_instance_private (gee_abstract_multi_set_type_id, sizeof (GeeAbstractMultiSetPrivate));
1417 		g_once_init_leave (&gee_abstract_multi_set_type_id__volatile, gee_abstract_multi_set_type_id);
1418 	}
1419 	return gee_abstract_multi_set_type_id__volatile;
1420 }
1421 
1422 static void
_vala_gee_abstract_multi_set_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)1423 _vala_gee_abstract_multi_set_get_property (GObject * object,
1424                                            guint property_id,
1425                                            GValue * value,
1426                                            GParamSpec * pspec)
1427 {
1428 	GeeAbstractMultiSet * self;
1429 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet);
1430 	switch (property_id) {
1431 		case GEE_ABSTRACT_MULTI_SET_SIZE_PROPERTY:
1432 		g_value_set_int (value, gee_abstract_collection_get_size ((GeeAbstractCollection*) self));
1433 		break;
1434 		case GEE_ABSTRACT_MULTI_SET_READ_ONLY_PROPERTY:
1435 		g_value_set_boolean (value, gee_abstract_collection_get_read_only ((GeeAbstractCollection*) self));
1436 		break;
1437 		case GEE_ABSTRACT_MULTI_SET_G_TYPE:
1438 		g_value_set_gtype (value, self->priv->g_type);
1439 		break;
1440 		case GEE_ABSTRACT_MULTI_SET_G_DUP_FUNC:
1441 		g_value_set_pointer (value, self->priv->g_dup_func);
1442 		break;
1443 		case GEE_ABSTRACT_MULTI_SET_G_DESTROY_FUNC:
1444 		g_value_set_pointer (value, self->priv->g_destroy_func);
1445 		break;
1446 		default:
1447 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
1448 		break;
1449 	}
1450 }
1451 
1452 static void
_vala_gee_abstract_multi_set_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)1453 _vala_gee_abstract_multi_set_set_property (GObject * object,
1454                                            guint property_id,
1455                                            const GValue * value,
1456                                            GParamSpec * pspec)
1457 {
1458 	GeeAbstractMultiSet * self;
1459 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet);
1460 	switch (property_id) {
1461 		case GEE_ABSTRACT_MULTI_SET_G_TYPE:
1462 		self->priv->g_type = g_value_get_gtype (value);
1463 		break;
1464 		case GEE_ABSTRACT_MULTI_SET_G_DUP_FUNC:
1465 		self->priv->g_dup_func = g_value_get_pointer (value);
1466 		break;
1467 		case GEE_ABSTRACT_MULTI_SET_G_DESTROY_FUNC:
1468 		self->priv->g_destroy_func = g_value_get_pointer (value);
1469 		break;
1470 		default:
1471 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
1472 		break;
1473 	}
1474 }
1475 
1476