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