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