1 /* hashmultimap.c generated by valac 0.19.0.4-d6d4, the Vala compiler
2  * generated from hashmultimap.vala, do not modify */
3 
4 /* hashmultimap.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  */
25 
26 #include <glib.h>
27 #include <glib-object.h>
28 
29 
30 #define GEE_TYPE_MULTI_MAP (gee_multi_map_get_type ())
31 #define GEE_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MULTI_MAP, GeeMultiMap))
32 #define GEE_IS_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MULTI_MAP))
33 #define GEE_MULTI_MAP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MULTI_MAP, GeeMultiMapIface))
34 
35 typedef struct _GeeMultiMap GeeMultiMap;
36 typedef struct _GeeMultiMapIface GeeMultiMapIface;
37 
38 #define GEE_TYPE_ITERABLE (gee_iterable_get_type ())
39 #define GEE_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERABLE, GeeIterable))
40 #define GEE_IS_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERABLE))
41 #define GEE_ITERABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERABLE, GeeIterableIface))
42 
43 typedef struct _GeeIterable GeeIterable;
44 typedef struct _GeeIterableIface GeeIterableIface;
45 
46 #define GEE_TYPE_ITERATOR (gee_iterator_get_type ())
47 #define GEE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERATOR, GeeIterator))
48 #define GEE_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERATOR))
49 #define GEE_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERATOR, GeeIteratorIface))
50 
51 typedef struct _GeeIterator GeeIterator;
52 typedef struct _GeeIteratorIface GeeIteratorIface;
53 
54 #define GEE_TYPE_COLLECTION (gee_collection_get_type ())
55 #define GEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COLLECTION, GeeCollection))
56 #define GEE_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COLLECTION))
57 #define GEE_COLLECTION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_COLLECTION, GeeCollectionIface))
58 
59 typedef struct _GeeCollection GeeCollection;
60 typedef struct _GeeCollectionIface GeeCollectionIface;
61 
62 #define GEE_TYPE_SET (gee_set_get_type ())
63 #define GEE_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_SET, GeeSet))
64 #define GEE_IS_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_SET))
65 #define GEE_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_SET, GeeSetIface))
66 
67 typedef struct _GeeSet GeeSet;
68 typedef struct _GeeSetIface GeeSetIface;
69 
70 #define GEE_TYPE_MULTI_SET (gee_multi_set_get_type ())
71 #define GEE_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MULTI_SET, GeeMultiSet))
72 #define GEE_IS_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MULTI_SET))
73 #define GEE_MULTI_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MULTI_SET, GeeMultiSetIface))
74 
75 typedef struct _GeeMultiSet GeeMultiSet;
76 typedef struct _GeeMultiSetIface GeeMultiSetIface;
77 
78 #define GEE_TYPE_ABSTRACT_MULTI_MAP (gee_abstract_multi_map_get_type ())
79 #define GEE_ABSTRACT_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MULTI_MAP, GeeAbstractMultiMap))
80 #define GEE_ABSTRACT_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MULTI_MAP, GeeAbstractMultiMapClass))
81 #define GEE_IS_ABSTRACT_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MULTI_MAP))
82 #define GEE_IS_ABSTRACT_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MULTI_MAP))
83 #define GEE_ABSTRACT_MULTI_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MULTI_MAP, GeeAbstractMultiMapClass))
84 
85 typedef struct _GeeAbstractMultiMap GeeAbstractMultiMap;
86 typedef struct _GeeAbstractMultiMapClass GeeAbstractMultiMapClass;
87 typedef struct _GeeAbstractMultiMapPrivate GeeAbstractMultiMapPrivate;
88 
89 #define GEE_TYPE_MAP (gee_map_get_type ())
90 #define GEE_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP, GeeMap))
91 #define GEE_IS_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP))
92 #define GEE_MAP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP, GeeMapIface))
93 
94 typedef struct _GeeMap GeeMap;
95 typedef struct _GeeMapIface GeeMapIface;
96 
97 #define GEE_TYPE_MAP_ITERATOR (gee_map_iterator_get_type ())
98 #define GEE_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIterator))
99 #define GEE_IS_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP_ITERATOR))
100 #define GEE_MAP_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIteratorIface))
101 
102 typedef struct _GeeMapIterator GeeMapIterator;
103 typedef struct _GeeMapIteratorIface GeeMapIteratorIface;
104 
105 #define GEE_MAP_TYPE_ENTRY (gee_map_entry_get_type ())
106 #define GEE_MAP_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntry))
107 #define GEE_MAP_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))
108 #define GEE_MAP_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_MAP_TYPE_ENTRY))
109 #define GEE_MAP_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_MAP_TYPE_ENTRY))
110 #define GEE_MAP_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))
111 
112 typedef struct _GeeMapEntry GeeMapEntry;
113 typedef struct _GeeMapEntryClass GeeMapEntryClass;
114 
115 #define GEE_TYPE_HASH_MULTI_MAP (gee_hash_multi_map_get_type ())
116 #define GEE_HASH_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASH_MULTI_MAP, GeeHashMultiMap))
117 #define GEE_HASH_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_HASH_MULTI_MAP, GeeHashMultiMapClass))
118 #define GEE_IS_HASH_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASH_MULTI_MAP))
119 #define GEE_IS_HASH_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_HASH_MULTI_MAP))
120 #define GEE_HASH_MULTI_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_HASH_MULTI_MAP, GeeHashMultiMapClass))
121 
122 typedef struct _GeeHashMultiMap GeeHashMultiMap;
123 typedef struct _GeeHashMultiMapClass GeeHashMultiMapClass;
124 typedef struct _GeeHashMultiMapPrivate GeeHashMultiMapPrivate;
125 
126 #define GEE_TYPE_ABSTRACT_MAP (gee_abstract_map_get_type ())
127 #define GEE_ABSTRACT_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap))
128 #define GEE_ABSTRACT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMapClass))
129 #define GEE_IS_ABSTRACT_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MAP))
130 #define GEE_IS_ABSTRACT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MAP))
131 #define GEE_ABSTRACT_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMapClass))
132 
133 typedef struct _GeeAbstractMap GeeAbstractMap;
134 typedef struct _GeeAbstractMapClass GeeAbstractMapClass;
135 
136 #define GEE_TYPE_HASH_MAP (gee_hash_map_get_type ())
137 #define GEE_HASH_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASH_MAP, GeeHashMap))
138 #define GEE_HASH_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_HASH_MAP, GeeHashMapClass))
139 #define GEE_IS_HASH_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASH_MAP))
140 #define GEE_IS_HASH_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_HASH_MAP))
141 #define GEE_HASH_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_HASH_MAP, GeeHashMapClass))
142 
143 typedef struct _GeeHashMap GeeHashMap;
144 typedef struct _GeeHashMapClass GeeHashMapClass;
145 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
146 
147 #define GEE_TYPE_ABSTRACT_COLLECTION (gee_abstract_collection_get_type ())
148 #define GEE_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection))
149 #define GEE_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
150 #define GEE_IS_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_COLLECTION))
151 #define GEE_IS_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_COLLECTION))
152 #define GEE_ABSTRACT_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
153 
154 typedef struct _GeeAbstractCollection GeeAbstractCollection;
155 typedef struct _GeeAbstractCollectionClass GeeAbstractCollectionClass;
156 
157 #define GEE_TYPE_ABSTRACT_SET (gee_abstract_set_get_type ())
158 #define GEE_ABSTRACT_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_SET, GeeAbstractSet))
159 #define GEE_ABSTRACT_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_SET, GeeAbstractSetClass))
160 #define GEE_IS_ABSTRACT_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_SET))
161 #define GEE_IS_ABSTRACT_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_SET))
162 #define GEE_ABSTRACT_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_SET, GeeAbstractSetClass))
163 
164 typedef struct _GeeAbstractSet GeeAbstractSet;
165 typedef struct _GeeAbstractSetClass GeeAbstractSetClass;
166 
167 #define GEE_TYPE_HASH_SET (gee_hash_set_get_type ())
168 #define GEE_HASH_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASH_SET, GeeHashSet))
169 #define GEE_HASH_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_HASH_SET, GeeHashSetClass))
170 #define GEE_IS_HASH_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASH_SET))
171 #define GEE_IS_HASH_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_HASH_SET))
172 #define GEE_HASH_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_HASH_SET, GeeHashSetClass))
173 
174 typedef struct _GeeHashSet GeeHashSet;
175 typedef struct _GeeHashSetClass GeeHashSetClass;
176 
177 #define GEE_TYPE_ABSTRACT_MULTI_SET (gee_abstract_multi_set_get_type ())
178 #define GEE_ABSTRACT_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet))
179 #define GEE_ABSTRACT_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSetClass))
180 #define GEE_IS_ABSTRACT_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MULTI_SET))
181 #define GEE_IS_ABSTRACT_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MULTI_SET))
182 #define GEE_ABSTRACT_MULTI_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSetClass))
183 
184 typedef struct _GeeAbstractMultiSet GeeAbstractMultiSet;
185 typedef struct _GeeAbstractMultiSetClass GeeAbstractMultiSetClass;
186 
187 #define GEE_TYPE_HASH_MULTI_SET (gee_hash_multi_set_get_type ())
188 #define GEE_HASH_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASH_MULTI_SET, GeeHashMultiSet))
189 #define GEE_HASH_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_HASH_MULTI_SET, GeeHashMultiSetClass))
190 #define GEE_IS_HASH_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASH_MULTI_SET))
191 #define GEE_IS_HASH_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_HASH_MULTI_SET))
192 #define GEE_HASH_MULTI_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_HASH_MULTI_SET, GeeHashMultiSetClass))
193 
194 typedef struct _GeeHashMultiSet GeeHashMultiSet;
195 typedef struct _GeeHashMultiSetClass GeeHashMultiSetClass;
196 
197 struct _GeeIteratorIface {
198 	GTypeInterface parent_iface;
199 	gboolean (*next) (GeeIterator* self);
200 	gboolean (*has_next) (GeeIterator* self);
201 	gboolean (*first) (GeeIterator* self);
202 	gpointer (*get) (GeeIterator* self);
203 	void (*remove) (GeeIterator* self);
204 };
205 
206 struct _GeeIterableIface {
207 	GTypeInterface parent_iface;
208 	GeeIterator* (*iterator) (GeeIterable* self);
209 	GType (*get_element_type) (GeeIterable* self);
210 };
211 
212 struct _GeeCollectionIface {
213 	GTypeInterface parent_iface;
214 	gboolean (*contains) (GeeCollection* self, gconstpointer item);
215 	gboolean (*add) (GeeCollection* self, gconstpointer item);
216 	gboolean (*remove) (GeeCollection* self, gconstpointer item);
217 	void (*clear) (GeeCollection* self);
218 	gboolean (*add_all) (GeeCollection* self, GeeCollection* collection);
219 	gboolean (*contains_all) (GeeCollection* self, GeeCollection* collection);
220 	gboolean (*remove_all) (GeeCollection* self, GeeCollection* collection);
221 	gboolean (*retain_all) (GeeCollection* self, GeeCollection* collection);
222 	gpointer* (*to_array) (GeeCollection* self, int* result_length1);
223 	gint (*get_size) (GeeCollection* self);
224 	gboolean (*get_is_empty) (GeeCollection* self);
225 	GeeCollection* (*get_read_only_view) (GeeCollection* self);
226 };
227 
228 struct _GeeSetIface {
229 	GTypeInterface parent_iface;
230 	GeeSet* (*get_read_only_view) (GeeSet* self);
231 };
232 
233 struct _GeeMultiSetIface {
234 	GTypeInterface parent_iface;
235 	gint (*count) (GeeMultiSet* self, gconstpointer item);
236 };
237 
238 struct _GeeMultiMapIface {
239 	GTypeInterface parent_iface;
240 	GeeSet* (*get_keys) (GeeMultiMap* self);
241 	GeeMultiSet* (*get_all_keys) (GeeMultiMap* self);
242 	GeeCollection* (*get_values) (GeeMultiMap* self);
243 	gboolean (*contains) (GeeMultiMap* self, gconstpointer key);
244 	GeeCollection* (*get) (GeeMultiMap* self, gconstpointer key);
245 	void (*set) (GeeMultiMap* self, gconstpointer key, gconstpointer value);
246 	gboolean (*remove) (GeeMultiMap* self, gconstpointer key, gconstpointer value);
247 	gboolean (*remove_all) (GeeMultiMap* self, gconstpointer key);
248 	void (*clear) (GeeMultiMap* self);
249 	gint (*get_size) (GeeMultiMap* self);
250 };
251 
252 struct _GeeMapIteratorIface {
253 	GTypeInterface parent_iface;
254 	gboolean (*next) (GeeMapIterator* self);
255 	gboolean (*has_next) (GeeMapIterator* self);
256 	gboolean (*first) (GeeMapIterator* self);
257 	gpointer (*get_key) (GeeMapIterator* self);
258 	gpointer (*get_value) (GeeMapIterator* self);
259 	void (*set_value) (GeeMapIterator* self, gconstpointer value);
260 	void (*unset) (GeeMapIterator* self);
261 };
262 
263 struct _GeeMapIface {
264 	GTypeInterface parent_iface;
265 	gboolean (*has_key) (GeeMap* self, gconstpointer key);
266 	gboolean (*contains) (GeeMap* self, gconstpointer key);
267 	gboolean (*has) (GeeMap* self, gconstpointer key, gconstpointer value);
268 	gpointer (*get) (GeeMap* self, gconstpointer key);
269 	void (*set) (GeeMap* self, gconstpointer key, gconstpointer value);
270 	gboolean (*unset) (GeeMap* self, gconstpointer key, gpointer* value);
271 	gboolean (*remove) (GeeMap* self, gconstpointer key, gpointer* value);
272 	void (*clear) (GeeMap* self);
273 	GeeMapIterator* (*map_iterator) (GeeMap* self);
274 	void (*set_all) (GeeMap* self, GeeMap* map);
275 	gboolean (*unset_all) (GeeMap* self, GeeMap* map);
276 	gboolean (*remove_all) (GeeMap* self, GeeMap* map);
277 	gboolean (*has_all) (GeeMap* self, GeeMap* map);
278 	gboolean (*contains_all) (GeeMap* self, GeeMap* map);
279 	gint (*get_size) (GeeMap* self);
280 	gboolean (*get_is_empty) (GeeMap* self);
281 	GeeSet* (*get_keys) (GeeMap* self);
282 	GeeCollection* (*get_values) (GeeMap* self);
283 	GeeSet* (*get_entries) (GeeMap* self);
284 	GeeMap* (*get_read_only_view) (GeeMap* self);
285 	GType (*get_key_type) (GeeMap* self);
286 	GType (*get_value_type) (GeeMap* self);
287 };
288 
289 struct _GeeAbstractMultiMap {
290 	GObject parent_instance;
291 	GeeAbstractMultiMapPrivate * priv;
292 	GeeMap* _storage_map;
293 };
294 
295 struct _GeeAbstractMultiMapClass {
296 	GObjectClass parent_class;
297 	GeeCollection* (*create_value_storage) (GeeAbstractMultiMap* self);
298 	GeeMultiSet* (*create_multi_key_set) (GeeAbstractMultiMap* self);
299 	GEqualFunc (*get_value_equal_func) (GeeAbstractMultiMap* self);
300 };
301 
302 struct _GeeHashMultiMap {
303 	GeeAbstractMultiMap parent_instance;
304 	GeeHashMultiMapPrivate * priv;
305 };
306 
307 struct _GeeHashMultiMapClass {
308 	GeeAbstractMultiMapClass parent_class;
309 };
310 
311 struct _GeeHashMultiMapPrivate {
312 	GType k_type;
313 	GBoxedCopyFunc k_dup_func;
314 	GDestroyNotify k_destroy_func;
315 	GType v_type;
316 	GBoxedCopyFunc v_dup_func;
317 	GDestroyNotify v_destroy_func;
318 	GHashFunc _value_hash_func;
319 	GEqualFunc _value_equal_func;
320 };
321 
322 
323 static gpointer gee_hash_multi_map_parent_class = NULL;
324 
325 GType gee_iterator_get_type (void) G_GNUC_CONST;
326 GType gee_iterable_get_type (void) G_GNUC_CONST;
327 GType gee_collection_get_type (void) G_GNUC_CONST;
328 GType gee_set_get_type (void) G_GNUC_CONST;
329 GType gee_multi_set_get_type (void) G_GNUC_CONST;
330 GType gee_multi_map_get_type (void) G_GNUC_CONST;
331 GType gee_abstract_multi_map_get_type (void) G_GNUC_CONST;
332 GType gee_map_iterator_get_type (void) G_GNUC_CONST;
333 GType gee_map_entry_get_type (void) G_GNUC_CONST;
334 GType gee_map_get_type (void) G_GNUC_CONST;
335 GType gee_hash_multi_map_get_type (void) G_GNUC_CONST;
336 #define GEE_HASH_MULTI_MAP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_TYPE_HASH_MULTI_MAP, GeeHashMultiMapPrivate))
337 enum  {
338 	GEE_HASH_MULTI_MAP_DUMMY_PROPERTY,
339 	GEE_HASH_MULTI_MAP_K_TYPE,
340 	GEE_HASH_MULTI_MAP_K_DUP_FUNC,
341 	GEE_HASH_MULTI_MAP_K_DESTROY_FUNC,
342 	GEE_HASH_MULTI_MAP_V_TYPE,
343 	GEE_HASH_MULTI_MAP_V_DUP_FUNC,
344 	GEE_HASH_MULTI_MAP_V_DESTROY_FUNC,
345 	GEE_HASH_MULTI_MAP_KEY_HASH_FUNC,
346 	GEE_HASH_MULTI_MAP_KEY_EQUAL_FUNC,
347 	GEE_HASH_MULTI_MAP_VALUE_HASH_FUNC,
348 	GEE_HASH_MULTI_MAP_VALUE_EQUAL_FUNC
349 };
350 GeeHashMultiMap* gee_hash_multi_map_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GHashFunc key_hash_func, GEqualFunc key_equal_func, GHashFunc value_hash_func, GEqualFunc value_equal_func);
351 GeeHashMultiMap* gee_hash_multi_map_construct (GType object_type, GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GHashFunc key_hash_func, GEqualFunc key_equal_func, GHashFunc value_hash_func, GEqualFunc value_equal_func);
352 GeeHashMap* gee_hash_map_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GHashFunc key_hash_func, GEqualFunc key_equal_func, GEqualFunc value_equal_func);
353 GeeHashMap* gee_hash_map_construct (GType object_type, GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GHashFunc key_hash_func, GEqualFunc key_equal_func, GEqualFunc value_equal_func);
354 GType gee_abstract_map_get_type (void) G_GNUC_CONST;
355 GType gee_hash_map_get_type (void) G_GNUC_CONST;
356 GeeAbstractMultiMap* gee_abstract_multi_map_construct (GType object_type, GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeMap* storage_map);
357 GHashFunc gee_functions_get_hash_func_for (GType t);
358 GEqualFunc gee_functions_get_equal_func_for (GType t);
359 static void gee_hash_multi_map_set_value_hash_func (GeeHashMultiMap* self, GHashFunc value);
360 static void gee_hash_multi_map_set_value_equal_func (GeeHashMultiMap* self, GEqualFunc value);
361 static GeeCollection* gee_hash_multi_map_real_create_value_storage (GeeAbstractMultiMap* base);
362 GeeHashSet* gee_hash_set_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GHashFunc hash_func, GEqualFunc equal_func);
363 GeeHashSet* gee_hash_set_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GHashFunc hash_func, GEqualFunc equal_func);
364 GType gee_abstract_collection_get_type (void) G_GNUC_CONST;
365 GType gee_abstract_set_get_type (void) G_GNUC_CONST;
366 GType gee_hash_set_get_type (void) G_GNUC_CONST;
367 static GeeMultiSet* gee_hash_multi_map_real_create_multi_key_set (GeeAbstractMultiMap* base);
368 GHashFunc gee_hash_multi_map_get_key_hash_func (GeeHashMultiMap* self);
369 GEqualFunc gee_hash_multi_map_get_key_equal_func (GeeHashMultiMap* self);
370 GeeHashMultiSet* gee_hash_multi_set_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GHashFunc hash_func, GEqualFunc equal_func);
371 GeeHashMultiSet* gee_hash_multi_set_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GHashFunc hash_func, GEqualFunc equal_func);
372 GType gee_abstract_multi_set_get_type (void) G_GNUC_CONST;
373 GType gee_hash_multi_set_get_type (void) G_GNUC_CONST;
374 static GEqualFunc gee_hash_multi_map_real_get_value_equal_func (GeeAbstractMultiMap* base);
375 GHashFunc gee_hash_map_get_key_hash_func (GeeHashMap* self);
376 GEqualFunc gee_hash_map_get_key_equal_func (GeeHashMap* self);
377 GHashFunc gee_hash_multi_map_get_value_hash_func (GeeHashMultiMap* self);
378 GEqualFunc gee_hash_multi_map_get_value_equal_func (GeeHashMultiMap* self);
379 static void gee_hash_multi_map_finalize (GObject* obj);
380 static void _vala_gee_hash_multi_map_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
381 static void _vala_gee_hash_multi_map_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
382 
383 
384 /**
385  * Constructs a new, empty hash multimap.
386  *
387  * If not provided, the functions parameters are requested to the
388  * {@link Functions} function factory methods.
389  *
390  * @param key_hash_func an optional key hash function
391  * @param key_equal_func an optional key equality testing function
392  * @param value_hash_func an optional value hash function
393  * @param value_equal_func an optional value equality testing function
394  */
gee_hash_multi_map_construct(GType object_type,GType k_type,GBoxedCopyFunc k_dup_func,GDestroyNotify k_destroy_func,GType v_type,GBoxedCopyFunc v_dup_func,GDestroyNotify v_destroy_func,GHashFunc key_hash_func,GEqualFunc key_equal_func,GHashFunc value_hash_func,GEqualFunc value_equal_func)395 GeeHashMultiMap* gee_hash_multi_map_construct (GType object_type, GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GHashFunc key_hash_func, GEqualFunc key_equal_func, GHashFunc value_hash_func, GEqualFunc value_equal_func) {
396 	GeeHashMultiMap * self = NULL;
397 	GHashFunc _tmp0_;
398 	GEqualFunc _tmp1_;
399 	GEqualFunc _tmp2_;
400 	GeeHashMap* _tmp3_;
401 	GeeHashMap* _tmp4_;
402 	GHashFunc _tmp5_;
403 	GEqualFunc _tmp7_;
404 	GHashFunc _tmp9_;
405 	GEqualFunc _tmp10_;
406 	_tmp0_ = key_hash_func;
407 	_tmp1_ = key_equal_func;
408 	_tmp2_ = g_direct_equal;
409 	_tmp3_ = gee_hash_map_new (k_type, (GBoxedCopyFunc) k_dup_func, k_destroy_func, GEE_TYPE_SET, (GBoxedCopyFunc) g_object_ref, g_object_unref, _tmp0_, _tmp1_, _tmp2_);
410 	_tmp4_ = _tmp3_;
411 	self = (GeeHashMultiMap*) gee_abstract_multi_map_construct (object_type, k_type, (GBoxedCopyFunc) k_dup_func, k_destroy_func, v_type, (GBoxedCopyFunc) v_dup_func, v_destroy_func, (GeeMap*) _tmp4_);
412 	self->priv->k_type = k_type;
413 	self->priv->k_dup_func = k_dup_func;
414 	self->priv->k_destroy_func = k_destroy_func;
415 	self->priv->v_type = v_type;
416 	self->priv->v_dup_func = v_dup_func;
417 	self->priv->v_destroy_func = v_destroy_func;
418 	_g_object_unref0 (_tmp4_);
419 	_tmp5_ = value_hash_func;
420 	if (_tmp5_ == NULL) {
421 		GHashFunc _tmp6_ = NULL;
422 		_tmp6_ = gee_functions_get_hash_func_for (v_type);
423 		value_hash_func = _tmp6_;
424 	}
425 	_tmp7_ = value_equal_func;
426 	if (_tmp7_ == NULL) {
427 		GEqualFunc _tmp8_ = NULL;
428 		_tmp8_ = gee_functions_get_equal_func_for (v_type);
429 		value_equal_func = _tmp8_;
430 	}
431 	_tmp9_ = value_hash_func;
432 	gee_hash_multi_map_set_value_hash_func (self, _tmp9_);
433 	_tmp10_ = value_equal_func;
434 	gee_hash_multi_map_set_value_equal_func (self, _tmp10_);
435 	return self;
436 }
437 
438 
gee_hash_multi_map_new(GType k_type,GBoxedCopyFunc k_dup_func,GDestroyNotify k_destroy_func,GType v_type,GBoxedCopyFunc v_dup_func,GDestroyNotify v_destroy_func,GHashFunc key_hash_func,GEqualFunc key_equal_func,GHashFunc value_hash_func,GEqualFunc value_equal_func)439 GeeHashMultiMap* gee_hash_multi_map_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GHashFunc key_hash_func, GEqualFunc key_equal_func, GHashFunc value_hash_func, GEqualFunc value_equal_func) {
440 	return gee_hash_multi_map_construct (GEE_TYPE_HASH_MULTI_MAP, k_type, k_dup_func, k_destroy_func, v_type, v_dup_func, v_destroy_func, key_hash_func, key_equal_func, value_hash_func, value_equal_func);
441 }
442 
443 
gee_hash_multi_map_real_create_value_storage(GeeAbstractMultiMap * base)444 static GeeCollection* gee_hash_multi_map_real_create_value_storage (GeeAbstractMultiMap* base) {
445 	GeeHashMultiMap * self;
446 	GeeCollection* result = NULL;
447 	GHashFunc _tmp0_;
448 	GEqualFunc _tmp1_;
449 	GeeHashSet* _tmp2_;
450 	self = (GeeHashMultiMap*) base;
451 	_tmp0_ = self->priv->_value_hash_func;
452 	_tmp1_ = self->priv->_value_equal_func;
453 	_tmp2_ = gee_hash_set_new (self->priv->v_type, (GBoxedCopyFunc) self->priv->v_dup_func, self->priv->v_destroy_func, _tmp0_, _tmp1_);
454 	result = (GeeCollection*) _tmp2_;
455 	return result;
456 }
457 
458 
gee_hash_multi_map_real_create_multi_key_set(GeeAbstractMultiMap * base)459 static GeeMultiSet* gee_hash_multi_map_real_create_multi_key_set (GeeAbstractMultiMap* base) {
460 	GeeHashMultiMap * self;
461 	GeeMultiSet* result = NULL;
462 	GHashFunc _tmp0_;
463 	GHashFunc _tmp1_;
464 	GEqualFunc _tmp2_;
465 	GEqualFunc _tmp3_;
466 	GeeHashMultiSet* _tmp4_;
467 	self = (GeeHashMultiMap*) base;
468 	_tmp0_ = gee_hash_multi_map_get_key_hash_func (self);
469 	_tmp1_ = _tmp0_;
470 	_tmp2_ = gee_hash_multi_map_get_key_equal_func (self);
471 	_tmp3_ = _tmp2_;
472 	_tmp4_ = gee_hash_multi_set_new (self->priv->k_type, (GBoxedCopyFunc) self->priv->k_dup_func, self->priv->k_destroy_func, _tmp1_, _tmp3_);
473 	result = (GeeMultiSet*) _tmp4_;
474 	return result;
475 }
476 
477 
gee_hash_multi_map_real_get_value_equal_func(GeeAbstractMultiMap * base)478 static GEqualFunc gee_hash_multi_map_real_get_value_equal_func (GeeAbstractMultiMap* base) {
479 	GeeHashMultiMap * self;
480 	GEqualFunc result = NULL;
481 	GEqualFunc _tmp0_;
482 	self = (GeeHashMultiMap*) base;
483 	_tmp0_ = self->priv->_value_equal_func;
484 	result = _tmp0_;
485 	return result;
486 }
487 
488 
gee_hash_multi_map_get_key_hash_func(GeeHashMultiMap * self)489 GHashFunc gee_hash_multi_map_get_key_hash_func (GeeHashMultiMap* self) {
490 	GHashFunc result;
491 	GeeMap* _tmp0_;
492 	GHashFunc _tmp1_;
493 	GHashFunc _tmp2_;
494 	g_return_val_if_fail (self != NULL, NULL);
495 	_tmp0_ = ((GeeAbstractMultiMap*) self)->_storage_map;
496 	_tmp1_ = gee_hash_map_get_key_hash_func (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_HASH_MAP, GeeHashMap));
497 	_tmp2_ = _tmp1_;
498 	result = _tmp2_;
499 	return result;
500 }
501 
502 
gee_hash_multi_map_get_key_equal_func(GeeHashMultiMap * self)503 GEqualFunc gee_hash_multi_map_get_key_equal_func (GeeHashMultiMap* self) {
504 	GEqualFunc result;
505 	GeeMap* _tmp0_;
506 	GEqualFunc _tmp1_;
507 	GEqualFunc _tmp2_;
508 	g_return_val_if_fail (self != NULL, NULL);
509 	_tmp0_ = ((GeeAbstractMultiMap*) self)->_storage_map;
510 	_tmp1_ = gee_hash_map_get_key_equal_func (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_HASH_MAP, GeeHashMap));
511 	_tmp2_ = _tmp1_;
512 	result = _tmp2_;
513 	return result;
514 }
515 
516 
gee_hash_multi_map_get_value_hash_func(GeeHashMultiMap * self)517 GHashFunc gee_hash_multi_map_get_value_hash_func (GeeHashMultiMap* self) {
518 	GHashFunc result;
519 	GHashFunc _tmp0_;
520 	g_return_val_if_fail (self != NULL, NULL);
521 	_tmp0_ = self->priv->_value_hash_func;
522 	result = _tmp0_;
523 	return result;
524 }
525 
526 
gee_hash_multi_map_set_value_hash_func(GeeHashMultiMap * self,GHashFunc value)527 static void gee_hash_multi_map_set_value_hash_func (GeeHashMultiMap* self, GHashFunc value) {
528 	GHashFunc _tmp0_;
529 	g_return_if_fail (self != NULL);
530 	_tmp0_ = value;
531 	self->priv->_value_hash_func = _tmp0_;
532 	g_object_notify ((GObject *) self, "value-hash-func");
533 }
534 
535 
gee_hash_multi_map_get_value_equal_func(GeeHashMultiMap * self)536 GEqualFunc gee_hash_multi_map_get_value_equal_func (GeeHashMultiMap* self) {
537 	GEqualFunc result;
538 	GEqualFunc _tmp0_;
539 	g_return_val_if_fail (self != NULL, NULL);
540 	_tmp0_ = self->priv->_value_equal_func;
541 	result = _tmp0_;
542 	return result;
543 }
544 
545 
gee_hash_multi_map_set_value_equal_func(GeeHashMultiMap * self,GEqualFunc value)546 static void gee_hash_multi_map_set_value_equal_func (GeeHashMultiMap* self, GEqualFunc value) {
547 	GEqualFunc _tmp0_;
548 	g_return_if_fail (self != NULL);
549 	_tmp0_ = value;
550 	self->priv->_value_equal_func = _tmp0_;
551 	g_object_notify ((GObject *) self, "value-equal-func");
552 }
553 
554 
gee_hash_multi_map_class_init(GeeHashMultiMapClass * klass)555 static void gee_hash_multi_map_class_init (GeeHashMultiMapClass * klass) {
556 	gee_hash_multi_map_parent_class = g_type_class_peek_parent (klass);
557 	g_type_class_add_private (klass, sizeof (GeeHashMultiMapPrivate));
558 	GEE_ABSTRACT_MULTI_MAP_CLASS (klass)->create_value_storage = gee_hash_multi_map_real_create_value_storage;
559 	GEE_ABSTRACT_MULTI_MAP_CLASS (klass)->create_multi_key_set = gee_hash_multi_map_real_create_multi_key_set;
560 	GEE_ABSTRACT_MULTI_MAP_CLASS (klass)->get_value_equal_func = gee_hash_multi_map_real_get_value_equal_func;
561 	G_OBJECT_CLASS (klass)->get_property = _vala_gee_hash_multi_map_get_property;
562 	G_OBJECT_CLASS (klass)->set_property = _vala_gee_hash_multi_map_set_property;
563 	G_OBJECT_CLASS (klass)->finalize = gee_hash_multi_map_finalize;
564 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_MAP_K_TYPE, g_param_spec_gtype ("k-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));
565 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_MAP_K_DUP_FUNC, g_param_spec_pointer ("k-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));
566 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_MAP_K_DESTROY_FUNC, g_param_spec_pointer ("k-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));
567 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_MAP_V_TYPE, g_param_spec_gtype ("v-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));
568 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_MAP_V_DUP_FUNC, g_param_spec_pointer ("v-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));
569 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_MAP_V_DESTROY_FUNC, g_param_spec_pointer ("v-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));
570 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_MAP_KEY_HASH_FUNC, g_param_spec_pointer ("key-hash-func", "key-hash-func", "key-hash-func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
571 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_MAP_KEY_EQUAL_FUNC, g_param_spec_pointer ("key-equal-func", "key-equal-func", "key-equal-func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
572 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_MAP_VALUE_HASH_FUNC, g_param_spec_pointer ("value-hash-func", "value-hash-func", "value-hash-func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
573 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_MAP_VALUE_EQUAL_FUNC, g_param_spec_pointer ("value-equal-func", "value-equal-func", "value-equal-func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
574 }
575 
576 
gee_hash_multi_map_instance_init(GeeHashMultiMap * self)577 static void gee_hash_multi_map_instance_init (GeeHashMultiMap * self) {
578 	self->priv = GEE_HASH_MULTI_MAP_GET_PRIVATE (self);
579 }
580 
581 
gee_hash_multi_map_finalize(GObject * obj)582 static void gee_hash_multi_map_finalize (GObject* obj) {
583 	GeeHashMultiMap * self;
584 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_TYPE_HASH_MULTI_MAP, GeeHashMultiMap);
585 	G_OBJECT_CLASS (gee_hash_multi_map_parent_class)->finalize (obj);
586 }
587 
588 
589 /**
590  * Hash table implementation of the {@link MultiMap} interface.
591  */
gee_hash_multi_map_get_type(void)592 GType gee_hash_multi_map_get_type (void) {
593 	static volatile gsize gee_hash_multi_map_type_id__volatile = 0;
594 	if (g_once_init_enter (&gee_hash_multi_map_type_id__volatile)) {
595 		static const GTypeInfo g_define_type_info = { sizeof (GeeHashMultiMapClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_hash_multi_map_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeHashMultiMap), 0, (GInstanceInitFunc) gee_hash_multi_map_instance_init, NULL };
596 		GType gee_hash_multi_map_type_id;
597 		gee_hash_multi_map_type_id = g_type_register_static (GEE_TYPE_ABSTRACT_MULTI_MAP, "GeeHashMultiMap", &g_define_type_info, 0);
598 		g_once_init_leave (&gee_hash_multi_map_type_id__volatile, gee_hash_multi_map_type_id);
599 	}
600 	return gee_hash_multi_map_type_id__volatile;
601 }
602 
603 
_vala_gee_hash_multi_map_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)604 static void _vala_gee_hash_multi_map_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
605 	GeeHashMultiMap * self;
606 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_HASH_MULTI_MAP, GeeHashMultiMap);
607 	switch (property_id) {
608 		case GEE_HASH_MULTI_MAP_KEY_HASH_FUNC:
609 		g_value_set_pointer (value, gee_hash_multi_map_get_key_hash_func (self));
610 		break;
611 		case GEE_HASH_MULTI_MAP_KEY_EQUAL_FUNC:
612 		g_value_set_pointer (value, gee_hash_multi_map_get_key_equal_func (self));
613 		break;
614 		case GEE_HASH_MULTI_MAP_VALUE_HASH_FUNC:
615 		g_value_set_pointer (value, gee_hash_multi_map_get_value_hash_func (self));
616 		break;
617 		case GEE_HASH_MULTI_MAP_VALUE_EQUAL_FUNC:
618 		g_value_set_pointer (value, gee_hash_multi_map_get_value_equal_func (self));
619 		break;
620 		default:
621 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
622 		break;
623 	}
624 }
625 
626 
_vala_gee_hash_multi_map_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)627 static void _vala_gee_hash_multi_map_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
628 	GeeHashMultiMap * self;
629 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_HASH_MULTI_MAP, GeeHashMultiMap);
630 	switch (property_id) {
631 		case GEE_HASH_MULTI_MAP_VALUE_HASH_FUNC:
632 		gee_hash_multi_map_set_value_hash_func (self, g_value_get_pointer (value));
633 		break;
634 		case GEE_HASH_MULTI_MAP_VALUE_EQUAL_FUNC:
635 		gee_hash_multi_map_set_value_equal_func (self, g_value_get_pointer (value));
636 		break;
637 		case GEE_HASH_MULTI_MAP_K_TYPE:
638 		self->priv->k_type = g_value_get_gtype (value);
639 		break;
640 		case GEE_HASH_MULTI_MAP_K_DUP_FUNC:
641 		self->priv->k_dup_func = g_value_get_pointer (value);
642 		break;
643 		case GEE_HASH_MULTI_MAP_K_DESTROY_FUNC:
644 		self->priv->k_destroy_func = g_value_get_pointer (value);
645 		break;
646 		case GEE_HASH_MULTI_MAP_V_TYPE:
647 		self->priv->v_type = g_value_get_gtype (value);
648 		break;
649 		case GEE_HASH_MULTI_MAP_V_DUP_FUNC:
650 		self->priv->v_dup_func = g_value_get_pointer (value);
651 		break;
652 		case GEE_HASH_MULTI_MAP_V_DESTROY_FUNC:
653 		self->priv->v_destroy_func = g_value_get_pointer (value);
654 		break;
655 		default:
656 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
657 		break;
658 	}
659 }
660 
661 
662 
663