1 /* abstractmultiset.c generated by valac 0.19.0.4-d6d4, 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.h>
28 #include <glib-object.h>
29 
30 
31 #define GEE_TYPE_ITERABLE (gee_iterable_get_type ())
32 #define GEE_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERABLE, GeeIterable))
33 #define GEE_IS_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERABLE))
34 #define GEE_ITERABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERABLE, GeeIterableIface))
35 
36 typedef struct _GeeIterable GeeIterable;
37 typedef struct _GeeIterableIface GeeIterableIface;
38 
39 #define GEE_TYPE_ITERATOR (gee_iterator_get_type ())
40 #define GEE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERATOR, GeeIterator))
41 #define GEE_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERATOR))
42 #define GEE_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERATOR, GeeIteratorIface))
43 
44 typedef struct _GeeIterator GeeIterator;
45 typedef struct _GeeIteratorIface GeeIteratorIface;
46 
47 #define GEE_TYPE_COLLECTION (gee_collection_get_type ())
48 #define GEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COLLECTION, GeeCollection))
49 #define GEE_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COLLECTION))
50 #define GEE_COLLECTION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_COLLECTION, GeeCollectionIface))
51 
52 typedef struct _GeeCollection GeeCollection;
53 typedef struct _GeeCollectionIface GeeCollectionIface;
54 
55 #define GEE_TYPE_ABSTRACT_COLLECTION (gee_abstract_collection_get_type ())
56 #define GEE_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection))
57 #define GEE_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
58 #define GEE_IS_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_COLLECTION))
59 #define GEE_IS_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_COLLECTION))
60 #define GEE_ABSTRACT_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
61 
62 typedef struct _GeeAbstractCollection GeeAbstractCollection;
63 typedef struct _GeeAbstractCollectionClass GeeAbstractCollectionClass;
64 typedef struct _GeeAbstractCollectionPrivate GeeAbstractCollectionPrivate;
65 
66 #define GEE_TYPE_MULTI_SET (gee_multi_set_get_type ())
67 #define GEE_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MULTI_SET, GeeMultiSet))
68 #define GEE_IS_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MULTI_SET))
69 #define GEE_MULTI_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MULTI_SET, GeeMultiSetIface))
70 
71 typedef struct _GeeMultiSet GeeMultiSet;
72 typedef struct _GeeMultiSetIface GeeMultiSetIface;
73 
74 #define GEE_TYPE_ABSTRACT_MULTI_SET (gee_abstract_multi_set_get_type ())
75 #define GEE_ABSTRACT_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet))
76 #define GEE_ABSTRACT_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSetClass))
77 #define GEE_IS_ABSTRACT_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MULTI_SET))
78 #define GEE_IS_ABSTRACT_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MULTI_SET))
79 #define GEE_ABSTRACT_MULTI_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSetClass))
80 
81 typedef struct _GeeAbstractMultiSet GeeAbstractMultiSet;
82 typedef struct _GeeAbstractMultiSetClass GeeAbstractMultiSetClass;
83 typedef struct _GeeAbstractMultiSetPrivate GeeAbstractMultiSetPrivate;
84 
85 #define GEE_TYPE_MAP (gee_map_get_type ())
86 #define GEE_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP, GeeMap))
87 #define GEE_IS_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP))
88 #define GEE_MAP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP, GeeMapIface))
89 
90 typedef struct _GeeMap GeeMap;
91 typedef struct _GeeMapIface GeeMapIface;
92 
93 #define GEE_TYPE_MAP_ITERATOR (gee_map_iterator_get_type ())
94 #define GEE_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIterator))
95 #define GEE_IS_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP_ITERATOR))
96 #define GEE_MAP_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIteratorIface))
97 
98 typedef struct _GeeMapIterator GeeMapIterator;
99 typedef struct _GeeMapIteratorIface GeeMapIteratorIface;
100 
101 #define GEE_TYPE_SET (gee_set_get_type ())
102 #define GEE_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_SET, GeeSet))
103 #define GEE_IS_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_SET))
104 #define GEE_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_SET, GeeSetIface))
105 
106 typedef struct _GeeSet GeeSet;
107 typedef struct _GeeSetIface GeeSetIface;
108 
109 #define GEE_MAP_TYPE_ENTRY (gee_map_entry_get_type ())
110 #define GEE_MAP_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntry))
111 #define GEE_MAP_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))
112 #define GEE_MAP_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_MAP_TYPE_ENTRY))
113 #define GEE_MAP_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_MAP_TYPE_ENTRY))
114 #define GEE_MAP_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))
115 
116 typedef struct _GeeMapEntry GeeMapEntry;
117 typedef struct _GeeMapEntryClass GeeMapEntryClass;
118 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
119 
120 #define GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR (gee_abstract_multi_set_iterator_get_type ())
121 #define GEE_ABSTRACT_MULTI_SET_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIterator))
122 #define GEE_ABSTRACT_MULTI_SET_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIteratorClass))
123 #define GEE_ABSTRACT_MULTI_SET_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR))
124 #define GEE_ABSTRACT_MULTI_SET_IS_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR))
125 #define GEE_ABSTRACT_MULTI_SET_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIteratorClass))
126 
127 typedef struct _GeeAbstractMultiSetIterator GeeAbstractMultiSetIterator;
128 typedef struct _GeeAbstractMultiSetIteratorClass GeeAbstractMultiSetIteratorClass;
129 typedef struct _GeeAbstractMultiSetIteratorPrivate GeeAbstractMultiSetIteratorPrivate;
130 #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
131 
132 struct _GeeIteratorIface {
133 	GTypeInterface parent_iface;
134 	gboolean (*next) (GeeIterator* self);
135 	gboolean (*has_next) (GeeIterator* self);
136 	gboolean (*first) (GeeIterator* self);
137 	gpointer (*get) (GeeIterator* self);
138 	void (*remove) (GeeIterator* self);
139 };
140 
141 struct _GeeIterableIface {
142 	GTypeInterface parent_iface;
143 	GeeIterator* (*iterator) (GeeIterable* self);
144 	GType (*get_element_type) (GeeIterable* self);
145 };
146 
147 struct _GeeCollectionIface {
148 	GTypeInterface parent_iface;
149 	gboolean (*contains) (GeeCollection* self, gconstpointer item);
150 	gboolean (*add) (GeeCollection* self, gconstpointer item);
151 	gboolean (*remove) (GeeCollection* self, gconstpointer item);
152 	void (*clear) (GeeCollection* self);
153 	gboolean (*add_all) (GeeCollection* self, GeeCollection* collection);
154 	gboolean (*contains_all) (GeeCollection* self, GeeCollection* collection);
155 	gboolean (*remove_all) (GeeCollection* self, GeeCollection* collection);
156 	gboolean (*retain_all) (GeeCollection* self, GeeCollection* collection);
157 	gpointer* (*to_array) (GeeCollection* self, int* result_length1);
158 	gint (*get_size) (GeeCollection* self);
159 	gboolean (*get_is_empty) (GeeCollection* self);
160 	GeeCollection* (*get_read_only_view) (GeeCollection* self);
161 };
162 
163 struct _GeeAbstractCollection {
164 	GObject parent_instance;
165 	GeeAbstractCollectionPrivate * priv;
166 };
167 
168 struct _GeeAbstractCollectionClass {
169 	GObjectClass parent_class;
170 	gboolean (*contains) (GeeAbstractCollection* self, gconstpointer item);
171 	gboolean (*add) (GeeAbstractCollection* self, gconstpointer item);
172 	gboolean (*remove) (GeeAbstractCollection* self, gconstpointer item);
173 	void (*clear) (GeeAbstractCollection* self);
174 	gpointer* (*to_array) (GeeAbstractCollection* self, int* result_length1);
175 	gboolean (*add_all) (GeeAbstractCollection* self, GeeCollection* collection);
176 	gboolean (*contains_all) (GeeAbstractCollection* self, GeeCollection* collection);
177 	gboolean (*remove_all) (GeeAbstractCollection* self, GeeCollection* collection);
178 	gboolean (*retain_all) (GeeAbstractCollection* self, GeeCollection* collection);
179 	GeeIterator* (*iterator) (GeeAbstractCollection* self);
180 	gint (*get_size) (GeeAbstractCollection* self);
181 	gboolean (*get_is_empty) (GeeAbstractCollection* self);
182 	GeeCollection* (*get_read_only_view) (GeeAbstractCollection* self);
183 };
184 
185 struct _GeeMultiSetIface {
186 	GTypeInterface parent_iface;
187 	gint (*count) (GeeMultiSet* self, gconstpointer item);
188 };
189 
190 struct _GeeMapIteratorIface {
191 	GTypeInterface parent_iface;
192 	gboolean (*next) (GeeMapIterator* self);
193 	gboolean (*has_next) (GeeMapIterator* self);
194 	gboolean (*first) (GeeMapIterator* self);
195 	gpointer (*get_key) (GeeMapIterator* self);
196 	gpointer (*get_value) (GeeMapIterator* self);
197 	void (*set_value) (GeeMapIterator* self, gconstpointer value);
198 	void (*unset) (GeeMapIterator* self);
199 };
200 
201 struct _GeeSetIface {
202 	GTypeInterface parent_iface;
203 	GeeSet* (*get_read_only_view) (GeeSet* self);
204 };
205 
206 struct _GeeMapIface {
207 	GTypeInterface parent_iface;
208 	gboolean (*has_key) (GeeMap* self, gconstpointer key);
209 	gboolean (*contains) (GeeMap* self, gconstpointer key);
210 	gboolean (*has) (GeeMap* self, gconstpointer key, gconstpointer value);
211 	gpointer (*get) (GeeMap* self, gconstpointer key);
212 	void (*set) (GeeMap* self, gconstpointer key, gconstpointer value);
213 	gboolean (*unset) (GeeMap* self, gconstpointer key, gpointer* value);
214 	gboolean (*remove) (GeeMap* self, gconstpointer key, gpointer* value);
215 	void (*clear) (GeeMap* self);
216 	GeeMapIterator* (*map_iterator) (GeeMap* self);
217 	void (*set_all) (GeeMap* self, GeeMap* map);
218 	gboolean (*unset_all) (GeeMap* self, GeeMap* map);
219 	gboolean (*remove_all) (GeeMap* self, GeeMap* map);
220 	gboolean (*has_all) (GeeMap* self, GeeMap* map);
221 	gboolean (*contains_all) (GeeMap* self, GeeMap* map);
222 	gint (*get_size) (GeeMap* self);
223 	gboolean (*get_is_empty) (GeeMap* self);
224 	GeeSet* (*get_keys) (GeeMap* self);
225 	GeeCollection* (*get_values) (GeeMap* self);
226 	GeeSet* (*get_entries) (GeeMap* self);
227 	GeeMap* (*get_read_only_view) (GeeMap* self);
228 	GType (*get_key_type) (GeeMap* self);
229 	GType (*get_value_type) (GeeMap* self);
230 };
231 
232 struct _GeeAbstractMultiSet {
233 	GeeAbstractCollection parent_instance;
234 	GeeAbstractMultiSetPrivate * priv;
235 	GeeMap* _storage_map;
236 };
237 
238 struct _GeeAbstractMultiSetClass {
239 	GeeAbstractCollectionClass parent_class;
240 };
241 
242 struct _GeeAbstractMultiSetPrivate {
243 	GType g_type;
244 	GBoxedCopyFunc g_dup_func;
245 	GDestroyNotify g_destroy_func;
246 	gint _nitems;
247 };
248 
249 struct _GeeAbstractMultiSetIterator {
250 	GObject parent_instance;
251 	GeeAbstractMultiSetIteratorPrivate * priv;
252 };
253 
254 struct _GeeAbstractMultiSetIteratorClass {
255 	GObjectClass parent_class;
256 };
257 
258 struct _GeeAbstractMultiSetIteratorPrivate {
259 	GType g_type;
260 	GBoxedCopyFunc g_dup_func;
261 	GDestroyNotify g_destroy_func;
262 	GeeAbstractMultiSet* _set;
263 	GeeMapIterator* _iter;
264 	gint _pending;
265 	gboolean _removed;
266 };
267 
268 
269 static gpointer gee_abstract_multi_set_parent_class = NULL;
270 static gpointer gee_abstract_multi_set_iterator_parent_class = NULL;
271 static GeeIteratorIface* gee_abstract_multi_set_iterator_gee_iterator_parent_iface = NULL;
272 static GeeMultiSetIface* gee_abstract_multi_set_gee_multi_set_parent_iface = NULL;
273 
274 GType gee_iterator_get_type (void) G_GNUC_CONST;
275 GType gee_iterable_get_type (void) G_GNUC_CONST;
276 GType gee_collection_get_type (void) G_GNUC_CONST;
277 GType gee_abstract_collection_get_type (void) G_GNUC_CONST;
278 GType gee_multi_set_get_type (void) G_GNUC_CONST;
279 GType gee_abstract_multi_set_get_type (void) G_GNUC_CONST;
280 GType gee_map_iterator_get_type (void) G_GNUC_CONST;
281 GType gee_set_get_type (void) G_GNUC_CONST;
282 GType gee_map_entry_get_type (void) G_GNUC_CONST;
283 GType gee_map_get_type (void) G_GNUC_CONST;
284 #define GEE_ABSTRACT_MULTI_SET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSetPrivate))
285 enum  {
286 	GEE_ABSTRACT_MULTI_SET_DUMMY_PROPERTY,
287 	GEE_ABSTRACT_MULTI_SET_G_TYPE,
288 	GEE_ABSTRACT_MULTI_SET_G_DUP_FUNC,
289 	GEE_ABSTRACT_MULTI_SET_G_DESTROY_FUNC,
290 	GEE_ABSTRACT_MULTI_SET_SIZE
291 };
292 GeeAbstractMultiSet* gee_abstract_multi_set_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeMap* storage_map);
293 GeeAbstractCollection* gee_abstract_collection_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func);
294 static gint gee_abstract_multi_set_real_count (GeeMultiSet* base, gconstpointer item);
295 gboolean gee_map_has_key (GeeMap* self, gconstpointer key);
296 gpointer gee_map_get (GeeMap* self, gconstpointer key);
297 static gboolean gee_abstract_multi_set_real_contains (GeeAbstractCollection* base, gconstpointer item);
298 static GeeIterator* gee_abstract_multi_set_real_iterator (GeeAbstractCollection* base);
299 static GeeAbstractMultiSetIterator* gee_abstract_multi_set_iterator_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeAbstractMultiSet* set);
300 static GeeAbstractMultiSetIterator* gee_abstract_multi_set_iterator_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeAbstractMultiSet* set);
301 static GType gee_abstract_multi_set_iterator_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
302 static gboolean gee_abstract_multi_set_real_add (GeeAbstractCollection* base, gconstpointer item);
303 void gee_map_set (GeeMap* self, gconstpointer key, gconstpointer value);
304 static gboolean gee_abstract_multi_set_real_remove (GeeAbstractCollection* base, gconstpointer item);
305 gboolean gee_map_unset (GeeMap* self, gconstpointer key, gpointer* value);
306 static void gee_abstract_multi_set_real_clear (GeeAbstractCollection* base);
307 void gee_map_clear (GeeMap* self);
308 #define GEE_ABSTRACT_MULTI_SET_ITERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIteratorPrivate))
309 enum  {
310 	GEE_ABSTRACT_MULTI_SET_ITERATOR_DUMMY_PROPERTY,
311 	GEE_ABSTRACT_MULTI_SET_ITERATOR_G_TYPE,
312 	GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DUP_FUNC,
313 	GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DESTROY_FUNC
314 };
315 GeeMapIterator* gee_map_map_iterator (GeeMap* self);
316 static gboolean gee_abstract_multi_set_iterator_real_next (GeeIterator* base);
317 gboolean gee_map_iterator_next (GeeMapIterator* self);
318 gpointer gee_map_iterator_get_value (GeeMapIterator* self);
319 static gboolean gee_abstract_multi_set_iterator_real_has_next (GeeIterator* base);
320 gboolean gee_map_iterator_has_next (GeeMapIterator* self);
321 static gboolean gee_abstract_multi_set_iterator_real_first (GeeIterator* base);
322 gboolean gee_map_iterator_first (GeeMapIterator* self);
323 static gpointer gee_abstract_multi_set_iterator_real_get (GeeIterator* base);
324 gpointer gee_map_iterator_get_key (GeeMapIterator* self);
325 static void gee_abstract_multi_set_iterator_real_remove (GeeIterator* base);
326 void gee_map_iterator_set_value (GeeMapIterator* self, gconstpointer value);
327 void gee_map_iterator_unset (GeeMapIterator* self);
328 static void gee_abstract_multi_set_iterator_finalize (GObject* obj);
329 static void _vala_gee_abstract_multi_set_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
330 static void _vala_gee_abstract_multi_set_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
331 static void gee_abstract_multi_set_finalize (GObject* obj);
332 gint gee_abstract_collection_get_size (GeeAbstractCollection* self);
333 static void _vala_gee_abstract_multi_set_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
334 static void _vala_gee_abstract_multi_set_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
335 
336 
337 /**
338  * Constructs a new, empty abstract multi set.
339  */
_g_object_ref0(gpointer self)340 static gpointer _g_object_ref0 (gpointer self) {
341 	return self ? g_object_ref (self) : NULL;
342 }
343 
344 
gee_abstract_multi_set_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeMap * storage_map)345 GeeAbstractMultiSet* gee_abstract_multi_set_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeMap* storage_map) {
346 	GeeAbstractMultiSet * self = NULL;
347 	GeeMap* _tmp0_;
348 	GeeMap* _tmp1_;
349 	g_return_val_if_fail (storage_map != NULL, NULL);
350 	self = (GeeAbstractMultiSet*) gee_abstract_collection_construct (object_type, g_type, (GBoxedCopyFunc) g_dup_func, g_destroy_func);
351 	self->priv->g_type = g_type;
352 	self->priv->g_dup_func = g_dup_func;
353 	self->priv->g_destroy_func = g_destroy_func;
354 	_tmp0_ = storage_map;
355 	_tmp1_ = _g_object_ref0 (_tmp0_);
356 	_g_object_unref0 (self->_storage_map);
357 	self->_storage_map = _tmp1_;
358 	return self;
359 }
360 
361 
gee_abstract_multi_set_real_count(GeeMultiSet * base,gconstpointer item)362 static gint gee_abstract_multi_set_real_count (GeeMultiSet* base, gconstpointer item) {
363 	GeeAbstractMultiSet * self;
364 	gint result = 0;
365 	gint _result_;
366 	GeeMap* _tmp0_;
367 	gconstpointer _tmp1_;
368 	gboolean _tmp2_ = FALSE;
369 	self = (GeeAbstractMultiSet*) base;
370 	_result_ = 0;
371 	_tmp0_ = self->_storage_map;
372 	_tmp1_ = item;
373 	_tmp2_ = gee_map_has_key (_tmp0_, _tmp1_);
374 	if (_tmp2_) {
375 		GeeMap* _tmp3_;
376 		gconstpointer _tmp4_;
377 		gpointer _tmp5_ = NULL;
378 		_tmp3_ = self->_storage_map;
379 		_tmp4_ = item;
380 		_tmp5_ = gee_map_get (_tmp3_, _tmp4_);
381 		_result_ = (gint) ((gintptr) _tmp5_);
382 	}
383 	result = _result_;
384 	return result;
385 }
386 
387 
gee_abstract_multi_set_real_contains(GeeAbstractCollection * base,gconstpointer item)388 static gboolean gee_abstract_multi_set_real_contains (GeeAbstractCollection* base, gconstpointer item) {
389 	GeeAbstractMultiSet * self;
390 	gboolean result = FALSE;
391 	GeeMap* _tmp0_;
392 	gconstpointer _tmp1_;
393 	gboolean _tmp2_ = FALSE;
394 	self = (GeeAbstractMultiSet*) base;
395 	_tmp0_ = self->_storage_map;
396 	_tmp1_ = item;
397 	_tmp2_ = gee_map_has_key (_tmp0_, _tmp1_);
398 	result = _tmp2_;
399 	return result;
400 }
401 
402 
gee_abstract_multi_set_real_iterator(GeeAbstractCollection * base)403 static GeeIterator* gee_abstract_multi_set_real_iterator (GeeAbstractCollection* base) {
404 	GeeAbstractMultiSet * self;
405 	GeeIterator* result = NULL;
406 	GeeAbstractMultiSetIterator* _tmp0_;
407 	self = (GeeAbstractMultiSet*) base;
408 	_tmp0_ = gee_abstract_multi_set_iterator_new (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, self->priv->g_destroy_func, self);
409 	result = (GeeIterator*) _tmp0_;
410 	return result;
411 }
412 
413 
gee_abstract_multi_set_real_add(GeeAbstractCollection * base,gconstpointer item)414 static gboolean gee_abstract_multi_set_real_add (GeeAbstractCollection* base, gconstpointer item) {
415 	GeeAbstractMultiSet * self;
416 	gboolean result = FALSE;
417 	GeeMap* _tmp0_;
418 	gconstpointer _tmp1_;
419 	gboolean _tmp2_ = FALSE;
420 	gint _tmp11_;
421 	self = (GeeAbstractMultiSet*) base;
422 	_tmp0_ = self->_storage_map;
423 	_tmp1_ = item;
424 	_tmp2_ = gee_map_has_key (_tmp0_, _tmp1_);
425 	if (_tmp2_) {
426 		GeeMap* _tmp3_;
427 		gconstpointer _tmp4_;
428 		gpointer _tmp5_ = NULL;
429 		gint current_count;
430 		GeeMap* _tmp6_;
431 		gconstpointer _tmp7_;
432 		gint _tmp8_;
433 		_tmp3_ = self->_storage_map;
434 		_tmp4_ = item;
435 		_tmp5_ = gee_map_get (_tmp3_, _tmp4_);
436 		current_count = (gint) ((gintptr) _tmp5_);
437 		_tmp6_ = self->_storage_map;
438 		_tmp7_ = item;
439 		_tmp8_ = current_count;
440 		gee_map_set (_tmp6_, _tmp7_, (gpointer) ((gintptr) (_tmp8_ + 1)));
441 	} else {
442 		GeeMap* _tmp9_;
443 		gconstpointer _tmp10_;
444 		_tmp9_ = self->_storage_map;
445 		_tmp10_ = item;
446 		gee_map_set (_tmp9_, _tmp10_, (gpointer) ((gintptr) 1));
447 	}
448 	_tmp11_ = self->priv->_nitems;
449 	self->priv->_nitems = _tmp11_ + 1;
450 	result = TRUE;
451 	return result;
452 }
453 
454 
gee_abstract_multi_set_real_remove(GeeAbstractCollection * base,gconstpointer item)455 static gboolean gee_abstract_multi_set_real_remove (GeeAbstractCollection* base, gconstpointer item) {
456 	GeeAbstractMultiSet * self;
457 	gboolean result = FALSE;
458 	gboolean _tmp0_ = FALSE;
459 	gint _tmp1_;
460 	gboolean _tmp5_;
461 	self = (GeeAbstractMultiSet*) base;
462 	_tmp1_ = self->priv->_nitems;
463 	if (_tmp1_ > 0) {
464 		GeeMap* _tmp2_;
465 		gconstpointer _tmp3_;
466 		gboolean _tmp4_ = FALSE;
467 		_tmp2_ = self->_storage_map;
468 		_tmp3_ = item;
469 		_tmp4_ = gee_map_has_key (_tmp2_, _tmp3_);
470 		_tmp0_ = _tmp4_;
471 	} else {
472 		_tmp0_ = FALSE;
473 	}
474 	_tmp5_ = _tmp0_;
475 	if (_tmp5_) {
476 		GeeMap* _tmp6_;
477 		gconstpointer _tmp7_;
478 		gpointer _tmp8_ = NULL;
479 		gint current_count;
480 		gint _tmp9_;
481 		gint _tmp15_;
482 		_tmp6_ = self->_storage_map;
483 		_tmp7_ = item;
484 		_tmp8_ = gee_map_get (_tmp6_, _tmp7_);
485 		current_count = (gint) ((gintptr) _tmp8_);
486 		_tmp9_ = current_count;
487 		if (_tmp9_ <= 1) {
488 			GeeMap* _tmp10_;
489 			gconstpointer _tmp11_;
490 			_tmp10_ = self->_storage_map;
491 			_tmp11_ = item;
492 			gee_map_unset (_tmp10_, _tmp11_, NULL);
493 		} else {
494 			GeeMap* _tmp12_;
495 			gconstpointer _tmp13_;
496 			gint _tmp14_;
497 			_tmp12_ = self->_storage_map;
498 			_tmp13_ = item;
499 			_tmp14_ = current_count;
500 			gee_map_set (_tmp12_, _tmp13_, (gpointer) ((gintptr) (_tmp14_ - 1)));
501 		}
502 		_tmp15_ = self->priv->_nitems;
503 		self->priv->_nitems = _tmp15_ - 1;
504 		result = TRUE;
505 		return result;
506 	}
507 	result = FALSE;
508 	return result;
509 }
510 
511 
gee_abstract_multi_set_real_clear(GeeAbstractCollection * base)512 static void gee_abstract_multi_set_real_clear (GeeAbstractCollection* base) {
513 	GeeAbstractMultiSet * self;
514 	GeeMap* _tmp0_;
515 	self = (GeeAbstractMultiSet*) base;
516 	_tmp0_ = self->_storage_map;
517 	gee_map_clear (_tmp0_);
518 	self->priv->_nitems = 0;
519 }
520 
521 
gee_abstract_multi_set_real_get_size(GeeAbstractCollection * base)522 static gint gee_abstract_multi_set_real_get_size (GeeAbstractCollection* base) {
523 	gint result;
524 	GeeAbstractMultiSet* self;
525 	gint _tmp0_;
526 	self = (GeeAbstractMultiSet*) base;
527 	_tmp0_ = self->priv->_nitems;
528 	result = _tmp0_;
529 	return result;
530 }
531 
532 
gee_abstract_multi_set_iterator_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeAbstractMultiSet * set)533 static GeeAbstractMultiSetIterator* gee_abstract_multi_set_iterator_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeAbstractMultiSet* set) {
534 	GeeAbstractMultiSetIterator * self = NULL;
535 	GeeAbstractMultiSet* _tmp0_;
536 	GeeAbstractMultiSet* _tmp1_;
537 	GeeAbstractMultiSet* _tmp2_;
538 	GeeMap* _tmp3_;
539 	GeeMapIterator* _tmp4_ = NULL;
540 	g_return_val_if_fail (set != NULL, NULL);
541 	self = (GeeAbstractMultiSetIterator*) g_object_new (object_type, NULL);
542 	self->priv->g_type = g_type;
543 	self->priv->g_dup_func = g_dup_func;
544 	self->priv->g_destroy_func = g_destroy_func;
545 	_tmp0_ = set;
546 	_tmp1_ = _g_object_ref0 (_tmp0_);
547 	_g_object_unref0 (self->priv->_set);
548 	self->priv->_set = _tmp1_;
549 	_tmp2_ = self->priv->_set;
550 	_tmp3_ = _tmp2_->_storage_map;
551 	_tmp4_ = gee_map_map_iterator (_tmp3_);
552 	_g_object_unref0 (self->priv->_iter);
553 	self->priv->_iter = _tmp4_;
554 	return self;
555 }
556 
557 
gee_abstract_multi_set_iterator_new(GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeAbstractMultiSet * set)558 static GeeAbstractMultiSetIterator* gee_abstract_multi_set_iterator_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeAbstractMultiSet* set) {
559 	return gee_abstract_multi_set_iterator_construct (GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, g_type, g_dup_func, g_destroy_func, set);
560 }
561 
562 
gee_abstract_multi_set_iterator_real_next(GeeIterator * base)563 static gboolean gee_abstract_multi_set_iterator_real_next (GeeIterator* base) {
564 	GeeAbstractMultiSetIterator * self;
565 	gboolean result = FALSE;
566 	gint _tmp0_;
567 	self = (GeeAbstractMultiSetIterator*) base;
568 	self->priv->_removed = FALSE;
569 	_tmp0_ = self->priv->_pending;
570 	if (_tmp0_ == 0) {
571 		GeeMapIterator* _tmp1_;
572 		gboolean _tmp2_ = FALSE;
573 		_tmp1_ = self->priv->_iter;
574 		_tmp2_ = gee_map_iterator_next (_tmp1_);
575 		if (_tmp2_) {
576 			GeeMapIterator* _tmp3_;
577 			gpointer _tmp4_ = NULL;
578 			_tmp3_ = self->priv->_iter;
579 			_tmp4_ = gee_map_iterator_get_value (_tmp3_);
580 			self->priv->_pending = ((gint) ((gintptr) _tmp4_)) - 1;
581 			result = TRUE;
582 			return result;
583 		}
584 	} else {
585 		gint _tmp5_;
586 		_tmp5_ = self->priv->_pending;
587 		self->priv->_pending = _tmp5_ - 1;
588 		result = TRUE;
589 		return result;
590 	}
591 	result = FALSE;
592 	return result;
593 }
594 
595 
gee_abstract_multi_set_iterator_real_has_next(GeeIterator * base)596 static gboolean gee_abstract_multi_set_iterator_real_has_next (GeeIterator* base) {
597 	GeeAbstractMultiSetIterator * self;
598 	gboolean result = FALSE;
599 	gboolean _tmp0_ = FALSE;
600 	gint _tmp1_;
601 	gboolean _tmp4_;
602 	self = (GeeAbstractMultiSetIterator*) base;
603 	_tmp1_ = self->priv->_pending;
604 	if (_tmp1_ > 0) {
605 		_tmp0_ = TRUE;
606 	} else {
607 		GeeMapIterator* _tmp2_;
608 		gboolean _tmp3_ = FALSE;
609 		_tmp2_ = self->priv->_iter;
610 		_tmp3_ = gee_map_iterator_has_next (_tmp2_);
611 		_tmp0_ = _tmp3_;
612 	}
613 	_tmp4_ = _tmp0_;
614 	result = _tmp4_;
615 	return result;
616 }
617 
618 
gee_abstract_multi_set_iterator_real_first(GeeIterator * base)619 static gboolean gee_abstract_multi_set_iterator_real_first (GeeIterator* base) {
620 	GeeAbstractMultiSetIterator * self;
621 	gboolean result = FALSE;
622 	GeeAbstractMultiSet* _tmp0_;
623 	gint _tmp1_;
624 	GeeMapIterator* _tmp2_;
625 	gboolean _tmp3_ = FALSE;
626 	self = (GeeAbstractMultiSetIterator*) base;
627 	_tmp0_ = self->priv->_set;
628 	_tmp1_ = _tmp0_->priv->_nitems;
629 	if (_tmp1_ == 0) {
630 		result = FALSE;
631 		return result;
632 	}
633 	self->priv->_pending = 0;
634 	_tmp2_ = self->priv->_iter;
635 	_tmp3_ = gee_map_iterator_first (_tmp2_);
636 	if (_tmp3_) {
637 		GeeMapIterator* _tmp4_;
638 		gpointer _tmp5_ = NULL;
639 		_tmp4_ = self->priv->_iter;
640 		_tmp5_ = gee_map_iterator_get_value (_tmp4_);
641 		self->priv->_pending = ((gint) ((gintptr) _tmp5_)) - 1;
642 	}
643 	result = TRUE;
644 	return result;
645 }
646 
647 
gee_abstract_multi_set_iterator_real_get(GeeIterator * base)648 static gpointer gee_abstract_multi_set_iterator_real_get (GeeIterator* base) {
649 	GeeAbstractMultiSetIterator * self;
650 	gpointer result = NULL;
651 	gboolean _tmp0_;
652 	GeeMapIterator* _tmp1_;
653 	gpointer _tmp2_ = NULL;
654 	self = (GeeAbstractMultiSetIterator*) base;
655 	_tmp0_ = self->priv->_removed;
656 	_vala_assert (!_tmp0_, "! _removed");
657 	_tmp1_ = self->priv->_iter;
658 	_tmp2_ = gee_map_iterator_get_key (_tmp1_);
659 	result = _tmp2_;
660 	return result;
661 }
662 
663 
gee_abstract_multi_set_iterator_real_remove(GeeIterator * base)664 static void gee_abstract_multi_set_iterator_real_remove (GeeIterator* base) {
665 	GeeAbstractMultiSetIterator * self;
666 	gboolean _tmp0_;
667 	GeeMapIterator* _tmp1_;
668 	GeeMapIterator* _tmp2_;
669 	gpointer _tmp3_ = NULL;
670 	gint _tmp4_;
671 	gint _tmp5_;
672 	GeeAbstractMultiSet* _tmp7_;
673 	gint _tmp8_;
674 	self = (GeeAbstractMultiSetIterator*) base;
675 	_tmp0_ = self->priv->_removed;
676 	_vala_assert (!_tmp0_, "! _removed");
677 	_tmp1_ = self->priv->_iter;
678 	_tmp2_ = self->priv->_iter;
679 	_tmp3_ = gee_map_iterator_get_value (_tmp2_);
680 	self->priv->_pending = ((gint) ((gintptr) _tmp3_)) - 1;
681 	_tmp4_ = self->priv->_pending;
682 	gee_map_iterator_set_value (_tmp1_, (gpointer) ((gintptr) _tmp4_));
683 	_tmp5_ = self->priv->_pending;
684 	if (_tmp5_ == 0) {
685 		GeeMapIterator* _tmp6_;
686 		_tmp6_ = self->priv->_iter;
687 		gee_map_iterator_unset (_tmp6_);
688 	}
689 	_tmp7_ = self->priv->_set;
690 	_tmp8_ = _tmp7_->priv->_nitems;
691 	_tmp7_->priv->_nitems = _tmp8_ - 1;
692 	self->priv->_removed = TRUE;
693 }
694 
695 
gee_abstract_multi_set_iterator_class_init(GeeAbstractMultiSetIteratorClass * klass)696 static void gee_abstract_multi_set_iterator_class_init (GeeAbstractMultiSetIteratorClass * klass) {
697 	gee_abstract_multi_set_iterator_parent_class = g_type_class_peek_parent (klass);
698 	g_type_class_add_private (klass, sizeof (GeeAbstractMultiSetIteratorPrivate));
699 	G_OBJECT_CLASS (klass)->get_property = _vala_gee_abstract_multi_set_iterator_get_property;
700 	G_OBJECT_CLASS (klass)->set_property = _vala_gee_abstract_multi_set_iterator_set_property;
701 	G_OBJECT_CLASS (klass)->finalize = gee_abstract_multi_set_iterator_finalize;
702 	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_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
703 	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_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
704 	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_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
705 }
706 
707 
gee_abstract_multi_set_iterator_gee_iterator_interface_init(GeeIteratorIface * iface)708 static void gee_abstract_multi_set_iterator_gee_iterator_interface_init (GeeIteratorIface * iface) {
709 	gee_abstract_multi_set_iterator_gee_iterator_parent_iface = g_type_interface_peek_parent (iface);
710 	iface->next = (gboolean (*)(GeeIterator*)) gee_abstract_multi_set_iterator_real_next;
711 	iface->has_next = (gboolean (*)(GeeIterator*)) gee_abstract_multi_set_iterator_real_has_next;
712 	iface->first = (gboolean (*)(GeeIterator*)) gee_abstract_multi_set_iterator_real_first;
713 	iface->get = (gpointer (*)(GeeIterator*)) gee_abstract_multi_set_iterator_real_get;
714 	iface->remove = (void (*)(GeeIterator*)) gee_abstract_multi_set_iterator_real_remove;
715 }
716 
717 
gee_abstract_multi_set_iterator_instance_init(GeeAbstractMultiSetIterator * self)718 static void gee_abstract_multi_set_iterator_instance_init (GeeAbstractMultiSetIterator * self) {
719 	self->priv = GEE_ABSTRACT_MULTI_SET_ITERATOR_GET_PRIVATE (self);
720 	self->priv->_pending = 0;
721 	self->priv->_removed = FALSE;
722 }
723 
724 
gee_abstract_multi_set_iterator_finalize(GObject * obj)725 static void gee_abstract_multi_set_iterator_finalize (GObject* obj) {
726 	GeeAbstractMultiSetIterator * self;
727 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIterator);
728 	_g_object_unref0 (self->priv->_set);
729 	_g_object_unref0 (self->priv->_iter);
730 	G_OBJECT_CLASS (gee_abstract_multi_set_iterator_parent_class)->finalize (obj);
731 }
732 
733 
gee_abstract_multi_set_iterator_get_type(void)734 static GType gee_abstract_multi_set_iterator_get_type (void) {
735 	static volatile gsize gee_abstract_multi_set_iterator_type_id__volatile = 0;
736 	if (g_once_init_enter (&gee_abstract_multi_set_iterator_type_id__volatile)) {
737 		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 };
738 		static const GInterfaceInfo gee_iterator_info = { (GInterfaceInitFunc) gee_abstract_multi_set_iterator_gee_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
739 		GType gee_abstract_multi_set_iterator_type_id;
740 		gee_abstract_multi_set_iterator_type_id = g_type_register_static (G_TYPE_OBJECT, "GeeAbstractMultiSetIterator", &g_define_type_info, 0);
741 		g_type_add_interface_static (gee_abstract_multi_set_iterator_type_id, GEE_TYPE_ITERATOR, &gee_iterator_info);
742 		g_once_init_leave (&gee_abstract_multi_set_iterator_type_id__volatile, gee_abstract_multi_set_iterator_type_id);
743 	}
744 	return gee_abstract_multi_set_iterator_type_id__volatile;
745 }
746 
747 
_vala_gee_abstract_multi_set_iterator_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)748 static void _vala_gee_abstract_multi_set_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
749 	GeeAbstractMultiSetIterator * self;
750 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIterator);
751 	switch (property_id) {
752 		default:
753 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
754 		break;
755 	}
756 }
757 
758 
_vala_gee_abstract_multi_set_iterator_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)759 static void _vala_gee_abstract_multi_set_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
760 	GeeAbstractMultiSetIterator * self;
761 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_ABSTRACT_MULTI_SET_TYPE_ITERATOR, GeeAbstractMultiSetIterator);
762 	switch (property_id) {
763 		case GEE_ABSTRACT_MULTI_SET_ITERATOR_G_TYPE:
764 		self->priv->g_type = g_value_get_gtype (value);
765 		break;
766 		case GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DUP_FUNC:
767 		self->priv->g_dup_func = g_value_get_pointer (value);
768 		break;
769 		case GEE_ABSTRACT_MULTI_SET_ITERATOR_G_DESTROY_FUNC:
770 		self->priv->g_destroy_func = g_value_get_pointer (value);
771 		break;
772 		default:
773 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
774 		break;
775 	}
776 }
777 
778 
gee_abstract_multi_set_class_init(GeeAbstractMultiSetClass * klass)779 static void gee_abstract_multi_set_class_init (GeeAbstractMultiSetClass * klass) {
780 	gee_abstract_multi_set_parent_class = g_type_class_peek_parent (klass);
781 	g_type_class_add_private (klass, sizeof (GeeAbstractMultiSetPrivate));
782 	GEE_ABSTRACT_COLLECTION_CLASS (klass)->contains = gee_abstract_multi_set_real_contains;
783 	GEE_ABSTRACT_COLLECTION_CLASS (klass)->iterator = gee_abstract_multi_set_real_iterator;
784 	GEE_ABSTRACT_COLLECTION_CLASS (klass)->add = gee_abstract_multi_set_real_add;
785 	GEE_ABSTRACT_COLLECTION_CLASS (klass)->remove = gee_abstract_multi_set_real_remove;
786 	GEE_ABSTRACT_COLLECTION_CLASS (klass)->clear = gee_abstract_multi_set_real_clear;
787 	GEE_ABSTRACT_COLLECTION_CLASS (klass)->get_size = gee_abstract_multi_set_real_get_size;
788 	G_OBJECT_CLASS (klass)->get_property = _vala_gee_abstract_multi_set_get_property;
789 	G_OBJECT_CLASS (klass)->set_property = _vala_gee_abstract_multi_set_set_property;
790 	G_OBJECT_CLASS (klass)->finalize = gee_abstract_multi_set_finalize;
791 	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_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
792 	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_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
793 	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_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
794 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_ABSTRACT_MULTI_SET_SIZE, g_param_spec_int ("size", "size", "size", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
795 }
796 
797 
gee_abstract_multi_set_gee_multi_set_interface_init(GeeMultiSetIface * iface)798 static void gee_abstract_multi_set_gee_multi_set_interface_init (GeeMultiSetIface * iface) {
799 	gee_abstract_multi_set_gee_multi_set_parent_iface = g_type_interface_peek_parent (iface);
800 	iface->count = (gint (*)(GeeMultiSet*, gconstpointer)) gee_abstract_multi_set_real_count;
801 }
802 
803 
gee_abstract_multi_set_instance_init(GeeAbstractMultiSet * self)804 static void gee_abstract_multi_set_instance_init (GeeAbstractMultiSet * self) {
805 	self->priv = GEE_ABSTRACT_MULTI_SET_GET_PRIVATE (self);
806 	self->priv->_nitems = 0;
807 }
808 
809 
gee_abstract_multi_set_finalize(GObject * obj)810 static void gee_abstract_multi_set_finalize (GObject* obj) {
811 	GeeAbstractMultiSet * self;
812 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet);
813 	_g_object_unref0 (self->_storage_map);
814 	G_OBJECT_CLASS (gee_abstract_multi_set_parent_class)->finalize (obj);
815 }
816 
817 
818 /**
819  * Skeletal implementation of the {@link MultiSet} interface.
820  *
821  * @see HashMultiSet
822  * @see TreeMultiSet
823  */
gee_abstract_multi_set_get_type(void)824 GType gee_abstract_multi_set_get_type (void) {
825 	static volatile gsize gee_abstract_multi_set_type_id__volatile = 0;
826 	if (g_once_init_enter (&gee_abstract_multi_set_type_id__volatile)) {
827 		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 };
828 		static const GInterfaceInfo gee_multi_set_info = { (GInterfaceInitFunc) gee_abstract_multi_set_gee_multi_set_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
829 		GType gee_abstract_multi_set_type_id;
830 		gee_abstract_multi_set_type_id = g_type_register_static (GEE_TYPE_ABSTRACT_COLLECTION, "GeeAbstractMultiSet", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
831 		g_type_add_interface_static (gee_abstract_multi_set_type_id, GEE_TYPE_MULTI_SET, &gee_multi_set_info);
832 		g_once_init_leave (&gee_abstract_multi_set_type_id__volatile, gee_abstract_multi_set_type_id);
833 	}
834 	return gee_abstract_multi_set_type_id__volatile;
835 }
836 
837 
_vala_gee_abstract_multi_set_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)838 static void _vala_gee_abstract_multi_set_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
839 	GeeAbstractMultiSet * self;
840 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet);
841 	switch (property_id) {
842 		case GEE_ABSTRACT_MULTI_SET_SIZE:
843 		g_value_set_int (value, gee_abstract_collection_get_size ((GeeAbstractCollection*) self));
844 		break;
845 		default:
846 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
847 		break;
848 	}
849 }
850 
851 
_vala_gee_abstract_multi_set_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)852 static void _vala_gee_abstract_multi_set_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
853 	GeeAbstractMultiSet * self;
854 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet);
855 	switch (property_id) {
856 		case GEE_ABSTRACT_MULTI_SET_G_TYPE:
857 		self->priv->g_type = g_value_get_gtype (value);
858 		break;
859 		case GEE_ABSTRACT_MULTI_SET_G_DUP_FUNC:
860 		self->priv->g_dup_func = g_value_get_pointer (value);
861 		break;
862 		case GEE_ABSTRACT_MULTI_SET_G_DESTROY_FUNC:
863 		self->priv->g_destroy_func = g_value_get_pointer (value);
864 		break;
865 		default:
866 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
867 		break;
868 	}
869 }
870 
871 
872 
873