1 /* hashmap.c generated by valac 0.18.0, the Vala compiler
2 * generated from hashmap.vala, do not modify */
6 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
7 * Copyright (C) 1997-2000 GLib Team and others
8 * Copyright (C) 2007-2009 Jürg Billeter
10 * This library is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public
12 * License as published by the Free Software Foundation; either
13 * version 2.1 of the License, or (at your option) any later version.
15 * This library is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * Lesser General Public License for more details.
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with this library; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 * Jürg Billeter <j@bitron.ch>
29 #include <glib-object.h>
32 #define GEE_TYPE_ITERABLE (gee_iterable_get_type ())
33 #define GEE_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERABLE, GeeIterable))
34 #define GEE_IS_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERABLE))
35 #define GEE_ITERABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERABLE, GeeIterableIface))
37 typedef struct _GeeIterable GeeIterable;
38 typedef struct _GeeIterableIface GeeIterableIface;
40 #define GEE_TYPE_ITERATOR (gee_iterator_get_type ())
41 #define GEE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERATOR, GeeIterator))
42 #define GEE_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERATOR))
43 #define GEE_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERATOR, GeeIteratorIface))
45 typedef struct _GeeIterator GeeIterator;
46 typedef struct _GeeIteratorIface GeeIteratorIface;
48 #define GEE_TYPE_MAP (gee_map_get_type ())
49 #define GEE_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP, GeeMap))
50 #define GEE_IS_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP))
51 #define GEE_MAP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP, GeeMapIface))
53 typedef struct _GeeMap GeeMap;
54 typedef struct _GeeMapIface GeeMapIface;
56 #define GEE_TYPE_MAP_ITERATOR (gee_map_iterator_get_type ())
57 #define GEE_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIterator))
58 #define GEE_IS_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP_ITERATOR))
59 #define GEE_MAP_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIteratorIface))
61 typedef struct _GeeMapIterator GeeMapIterator;
62 typedef struct _GeeMapIteratorIface GeeMapIteratorIface;
64 #define GEE_TYPE_COLLECTION (gee_collection_get_type ())
65 #define GEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COLLECTION, GeeCollection))
66 #define GEE_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COLLECTION))
67 #define GEE_COLLECTION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_COLLECTION, GeeCollectionIface))
69 typedef struct _GeeCollection GeeCollection;
70 typedef struct _GeeCollectionIface GeeCollectionIface;
72 #define GEE_TYPE_SET (gee_set_get_type ())
73 #define GEE_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_SET, GeeSet))
74 #define GEE_IS_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_SET))
75 #define GEE_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_SET, GeeSetIface))
77 typedef struct _GeeSet GeeSet;
78 typedef struct _GeeSetIface GeeSetIface;
80 #define GEE_MAP_TYPE_ENTRY (gee_map_entry_get_type ())
81 #define GEE_MAP_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntry))
82 #define GEE_MAP_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))
83 #define GEE_MAP_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_MAP_TYPE_ENTRY))
84 #define GEE_MAP_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_MAP_TYPE_ENTRY))
85 #define GEE_MAP_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))
87 typedef struct _GeeMapEntry GeeMapEntry;
88 typedef struct _GeeMapEntryClass GeeMapEntryClass;
90 #define GEE_TYPE_ABSTRACT_MAP (gee_abstract_map_get_type ())
91 #define GEE_ABSTRACT_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap))
92 #define GEE_ABSTRACT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMapClass))
93 #define GEE_IS_ABSTRACT_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MAP))
94 #define GEE_IS_ABSTRACT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MAP))
95 #define GEE_ABSTRACT_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMapClass))
97 typedef struct _GeeAbstractMap GeeAbstractMap;
98 typedef struct _GeeAbstractMapClass GeeAbstractMapClass;
99 typedef struct _GeeAbstractMapPrivate GeeAbstractMapPrivate;
101 #define GEE_TYPE_HASH_MAP (gee_hash_map_get_type ())
102 #define GEE_HASH_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASH_MAP, GeeHashMap))
103 #define GEE_HASH_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_HASH_MAP, GeeHashMapClass))
104 #define GEE_IS_HASH_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASH_MAP))
105 #define GEE_IS_HASH_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_HASH_MAP))
106 #define GEE_HASH_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_HASH_MAP, GeeHashMapClass))
108 typedef struct _GeeHashMap GeeHashMap;
109 typedef struct _GeeHashMapClass GeeHashMapClass;
110 typedef struct _GeeHashMapPrivate GeeHashMapPrivate;
111 typedef struct _GeeHashMapNode GeeHashMapNode;
112 #define _gee_hash_map_node_free0(var) ((var == NULL) ? NULL : (var = (gee_hash_map_node_free (var), NULL)))
114 #define GEE_HASH_MAP_TYPE_NODE_ITERATOR (gee_hash_map_node_iterator_get_type ())
115 #define GEE_HASH_MAP_NODE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_HASH_MAP_TYPE_NODE_ITERATOR, GeeHashMapNodeIterator))
116 #define GEE_HASH_MAP_NODE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_HASH_MAP_TYPE_NODE_ITERATOR, GeeHashMapNodeIteratorClass))
117 #define GEE_HASH_MAP_IS_NODE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_HASH_MAP_TYPE_NODE_ITERATOR))
118 #define GEE_HASH_MAP_IS_NODE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_HASH_MAP_TYPE_NODE_ITERATOR))
119 #define GEE_HASH_MAP_NODE_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_HASH_MAP_TYPE_NODE_ITERATOR, GeeHashMapNodeIteratorClass))
121 typedef struct _GeeHashMapNodeIterator GeeHashMapNodeIterator;
122 typedef struct _GeeHashMapNodeIteratorClass GeeHashMapNodeIteratorClass;
124 #define GEE_HASH_MAP_TYPE_MAP_ITERATOR (gee_hash_map_map_iterator_get_type ())
125 #define GEE_HASH_MAP_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_HASH_MAP_TYPE_MAP_ITERATOR, GeeHashMapMapIterator))
126 #define GEE_HASH_MAP_MAP_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_HASH_MAP_TYPE_MAP_ITERATOR, GeeHashMapMapIteratorClass))
127 #define GEE_HASH_MAP_IS_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_HASH_MAP_TYPE_MAP_ITERATOR))
128 #define GEE_HASH_MAP_IS_MAP_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_HASH_MAP_TYPE_MAP_ITERATOR))
129 #define GEE_HASH_MAP_MAP_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_HASH_MAP_TYPE_MAP_ITERATOR, GeeHashMapMapIteratorClass))
131 typedef struct _GeeHashMapMapIterator GeeHashMapMapIterator;
132 typedef struct _GeeHashMapMapIteratorClass GeeHashMapMapIteratorClass;
134 #define GEE_TYPE_ABSTRACT_COLLECTION (gee_abstract_collection_get_type ())
135 #define GEE_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection))
136 #define GEE_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
137 #define GEE_IS_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_COLLECTION))
138 #define GEE_IS_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_COLLECTION))
139 #define GEE_ABSTRACT_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
141 typedef struct _GeeAbstractCollection GeeAbstractCollection;
142 typedef struct _GeeAbstractCollectionClass GeeAbstractCollectionClass;
144 #define GEE_TYPE_ABSTRACT_SET (gee_abstract_set_get_type ())
145 #define GEE_ABSTRACT_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_SET, GeeAbstractSet))
146 #define GEE_ABSTRACT_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_SET, GeeAbstractSetClass))
147 #define GEE_IS_ABSTRACT_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_SET))
148 #define GEE_IS_ABSTRACT_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_SET))
149 #define GEE_ABSTRACT_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_SET, GeeAbstractSetClass))
151 typedef struct _GeeAbstractSet GeeAbstractSet;
152 typedef struct _GeeAbstractSetClass GeeAbstractSetClass;
154 #define GEE_HASH_MAP_TYPE_KEY_SET (gee_hash_map_key_set_get_type ())
155 #define GEE_HASH_MAP_KEY_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_HASH_MAP_TYPE_KEY_SET, GeeHashMapKeySet))
156 #define GEE_HASH_MAP_KEY_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_HASH_MAP_TYPE_KEY_SET, GeeHashMapKeySetClass))
157 #define GEE_HASH_MAP_IS_KEY_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_HASH_MAP_TYPE_KEY_SET))
158 #define GEE_HASH_MAP_IS_KEY_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_HASH_MAP_TYPE_KEY_SET))
159 #define GEE_HASH_MAP_KEY_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_HASH_MAP_TYPE_KEY_SET, GeeHashMapKeySetClass))
161 typedef struct _GeeHashMapKeySet GeeHashMapKeySet;
162 typedef struct _GeeHashMapKeySetClass GeeHashMapKeySetClass;
163 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
165 #define GEE_HASH_MAP_TYPE_VALUE_COLLECTION (gee_hash_map_value_collection_get_type ())
166 #define GEE_HASH_MAP_VALUE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_HASH_MAP_TYPE_VALUE_COLLECTION, GeeHashMapValueCollection))
167 #define GEE_HASH_MAP_VALUE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_HASH_MAP_TYPE_VALUE_COLLECTION, GeeHashMapValueCollectionClass))
168 #define GEE_HASH_MAP_IS_VALUE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_HASH_MAP_TYPE_VALUE_COLLECTION))
169 #define GEE_HASH_MAP_IS_VALUE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_HASH_MAP_TYPE_VALUE_COLLECTION))
170 #define GEE_HASH_MAP_VALUE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_HASH_MAP_TYPE_VALUE_COLLECTION, GeeHashMapValueCollectionClass))
172 typedef struct _GeeHashMapValueCollection GeeHashMapValueCollection;
173 typedef struct _GeeHashMapValueCollectionClass GeeHashMapValueCollectionClass;
175 #define GEE_HASH_MAP_TYPE_ENTRY_SET (gee_hash_map_entry_set_get_type ())
176 #define GEE_HASH_MAP_ENTRY_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_HASH_MAP_TYPE_ENTRY_SET, GeeHashMapEntrySet))
177 #define GEE_HASH_MAP_ENTRY_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_HASH_MAP_TYPE_ENTRY_SET, GeeHashMapEntrySetClass))
178 #define GEE_HASH_MAP_IS_ENTRY_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_HASH_MAP_TYPE_ENTRY_SET))
179 #define GEE_HASH_MAP_IS_ENTRY_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_HASH_MAP_TYPE_ENTRY_SET))
180 #define GEE_HASH_MAP_ENTRY_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_HASH_MAP_TYPE_ENTRY_SET, GeeHashMapEntrySetClass))
182 typedef struct _GeeHashMapEntrySet GeeHashMapEntrySet;
183 typedef struct _GeeHashMapEntrySetClass GeeHashMapEntrySetClass;
184 typedef struct _GeeMapEntryPrivate GeeMapEntryPrivate;
186 #define GEE_HASH_MAP_TYPE_ENTRY (gee_hash_map_entry_get_type ())
187 #define GEE_HASH_MAP_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_HASH_MAP_TYPE_ENTRY, GeeHashMapEntry))
188 #define GEE_HASH_MAP_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_HASH_MAP_TYPE_ENTRY, GeeHashMapEntryClass))
189 #define GEE_HASH_MAP_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_HASH_MAP_TYPE_ENTRY))
190 #define GEE_HASH_MAP_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_HASH_MAP_TYPE_ENTRY))
191 #define GEE_HASH_MAP_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_HASH_MAP_TYPE_ENTRY, GeeHashMapEntryClass))
193 typedef struct _GeeHashMapEntry GeeHashMapEntry;
194 typedef struct _GeeHashMapEntryClass GeeHashMapEntryClass;
195 typedef struct _GeeHashMapEntryPrivate GeeHashMapEntryPrivate;
196 typedef struct _GeeAbstractCollectionPrivate GeeAbstractCollectionPrivate;
197 typedef struct _GeeAbstractSetPrivate GeeAbstractSetPrivate;
198 typedef struct _GeeHashMapKeySetPrivate GeeHashMapKeySetPrivate;
200 #define GEE_HASH_MAP_TYPE_KEY_ITERATOR (gee_hash_map_key_iterator_get_type ())
201 #define GEE_HASH_MAP_KEY_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_HASH_MAP_TYPE_KEY_ITERATOR, GeeHashMapKeyIterator))
202 #define GEE_HASH_MAP_KEY_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_HASH_MAP_TYPE_KEY_ITERATOR, GeeHashMapKeyIteratorClass))
203 #define GEE_HASH_MAP_IS_KEY_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_HASH_MAP_TYPE_KEY_ITERATOR))
204 #define GEE_HASH_MAP_IS_KEY_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_HASH_MAP_TYPE_KEY_ITERATOR))
205 #define GEE_HASH_MAP_KEY_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_HASH_MAP_TYPE_KEY_ITERATOR, GeeHashMapKeyIteratorClass))
207 typedef struct _GeeHashMapKeyIterator GeeHashMapKeyIterator;
208 typedef struct _GeeHashMapKeyIteratorClass GeeHashMapKeyIteratorClass;
209 typedef struct _GeeHashMapValueCollectionPrivate GeeHashMapValueCollectionPrivate;
211 #define GEE_HASH_MAP_TYPE_VALUE_ITERATOR (gee_hash_map_value_iterator_get_type ())
212 #define GEE_HASH_MAP_VALUE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_HASH_MAP_TYPE_VALUE_ITERATOR, GeeHashMapValueIterator))
213 #define GEE_HASH_MAP_VALUE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_HASH_MAP_TYPE_VALUE_ITERATOR, GeeHashMapValueIteratorClass))
214 #define GEE_HASH_MAP_IS_VALUE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_HASH_MAP_TYPE_VALUE_ITERATOR))
215 #define GEE_HASH_MAP_IS_VALUE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_HASH_MAP_TYPE_VALUE_ITERATOR))
216 #define GEE_HASH_MAP_VALUE_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_HASH_MAP_TYPE_VALUE_ITERATOR, GeeHashMapValueIteratorClass))
218 typedef struct _GeeHashMapValueIterator GeeHashMapValueIterator;
219 typedef struct _GeeHashMapValueIteratorClass GeeHashMapValueIteratorClass;
220 typedef struct _GeeHashMapEntrySetPrivate GeeHashMapEntrySetPrivate;
222 #define GEE_HASH_MAP_TYPE_ENTRY_ITERATOR (gee_hash_map_entry_iterator_get_type ())
223 #define GEE_HASH_MAP_ENTRY_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_HASH_MAP_TYPE_ENTRY_ITERATOR, GeeHashMapEntryIterator))
224 #define GEE_HASH_MAP_ENTRY_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_HASH_MAP_TYPE_ENTRY_ITERATOR, GeeHashMapEntryIteratorClass))
225 #define GEE_HASH_MAP_IS_ENTRY_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_HASH_MAP_TYPE_ENTRY_ITERATOR))
226 #define GEE_HASH_MAP_IS_ENTRY_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_HASH_MAP_TYPE_ENTRY_ITERATOR))
227 #define GEE_HASH_MAP_ENTRY_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_HASH_MAP_TYPE_ENTRY_ITERATOR, GeeHashMapEntryIteratorClass))
229 typedef struct _GeeHashMapEntryIterator GeeHashMapEntryIterator;
230 typedef struct _GeeHashMapEntryIteratorClass GeeHashMapEntryIteratorClass;
231 typedef struct _GeeHashMapNodeIteratorPrivate GeeHashMapNodeIteratorPrivate;
232 typedef struct _GeeHashMapKeyIteratorPrivate GeeHashMapKeyIteratorPrivate;
233 typedef struct _GeeHashMapMapIteratorPrivate GeeHashMapMapIteratorPrivate;
234 typedef struct _GeeHashMapValueIteratorPrivate GeeHashMapValueIteratorPrivate;
235 typedef struct _GeeHashMapEntryIteratorPrivate GeeHashMapEntryIteratorPrivate;
236 #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
238 struct _GeeIteratorIface {
239 GTypeInterface parent_iface;
240 gboolean (*next) (GeeIterator* self);
241 gboolean (*has_next) (GeeIterator* self);
242 gboolean (*first) (GeeIterator* self);
243 gpointer (*get) (GeeIterator* self);
244 void (*remove) (GeeIterator* self);
247 struct _GeeIterableIface {
248 GTypeInterface parent_iface;
249 GeeIterator* (*iterator) (GeeIterable* self);
250 GType (*get_element_type) (GeeIterable* self);
253 struct _GeeMapIteratorIface {
254 GTypeInterface parent_iface;
255 gboolean (*next) (GeeMapIterator* self);
256 gboolean (*has_next) (GeeMapIterator* self);
257 gboolean (*first) (GeeMapIterator* self);
258 gpointer (*get_key) (GeeMapIterator* self);
259 gpointer (*get_value) (GeeMapIterator* self);
260 void (*set_value) (GeeMapIterator* self, gconstpointer value);
261 void (*unset) (GeeMapIterator* self);
264 struct _GeeCollectionIface {
265 GTypeInterface parent_iface;
266 gboolean (*contains) (GeeCollection* self, gconstpointer item);
267 gboolean (*add) (GeeCollection* self, gconstpointer item);
268 gboolean (*remove) (GeeCollection* self, gconstpointer item);
269 void (*clear) (GeeCollection* self);
270 gboolean (*add_all) (GeeCollection* self, GeeCollection* collection);
271 gboolean (*contains_all) (GeeCollection* self, GeeCollection* collection);
272 gboolean (*remove_all) (GeeCollection* self, GeeCollection* collection);
273 gboolean (*retain_all) (GeeCollection* self, GeeCollection* collection);
274 gpointer* (*to_array) (GeeCollection* self, int* result_length1);
275 gint (*get_size) (GeeCollection* self);
276 gboolean (*get_is_empty) (GeeCollection* self);
277 GeeCollection* (*get_read_only_view) (GeeCollection* self);
280 struct _GeeSetIface {
281 GTypeInterface parent_iface;
282 GeeSet* (*get_read_only_view) (GeeSet* self);
285 struct _GeeMapIface {
286 GTypeInterface parent_iface;
287 gboolean (*has_key) (GeeMap* self, gconstpointer key);
288 gboolean (*contains) (GeeMap* self, gconstpointer key);
289 gboolean (*has) (GeeMap* self, gconstpointer key, gconstpointer value);
290 gpointer (*get) (GeeMap* self, gconstpointer key);
291 void (*set) (GeeMap* self, gconstpointer key, gconstpointer value);
292 gboolean (*unset) (GeeMap* self, gconstpointer key, gpointer* value);
293 gboolean (*remove) (GeeMap* self, gconstpointer key, gpointer* value);
294 void (*clear) (GeeMap* self);
295 GeeMapIterator* (*map_iterator) (GeeMap* self);
296 void (*set_all) (GeeMap* self, GeeMap* map);
297 gboolean (*unset_all) (GeeMap* self, GeeMap* map);
298 gboolean (*remove_all) (GeeMap* self, GeeMap* map);
299 gboolean (*has_all) (GeeMap* self, GeeMap* map);
300 gboolean (*contains_all) (GeeMap* self, GeeMap* map);
301 gint (*get_size) (GeeMap* self);
302 gboolean (*get_is_empty) (GeeMap* self);
303 GeeSet* (*get_keys) (GeeMap* self);
304 GeeCollection* (*get_values) (GeeMap* self);
305 GeeSet* (*get_entries) (GeeMap* self);
306 GeeMap* (*get_read_only_view) (GeeMap* self);
307 GType (*get_key_type) (GeeMap* self);
308 GType (*get_value_type) (GeeMap* self);
311 struct _GeeAbstractMap {
312 GObject parent_instance;
313 GeeAbstractMapPrivate * priv;
316 struct _GeeAbstractMapClass {
317 GObjectClass parent_class;
318 gboolean (*has_key) (GeeAbstractMap* self, gconstpointer key);
319 gboolean (*has) (GeeAbstractMap* self, gconstpointer key, gconstpointer value);
320 gpointer (*get) (GeeAbstractMap* self, gconstpointer key);
321 void (*set) (GeeAbstractMap* self, gconstpointer key, gconstpointer value);
322 gboolean (*unset) (GeeAbstractMap* self, gconstpointer key, gpointer* value);
323 GeeMapIterator* (*map_iterator) (GeeAbstractMap* self);
324 void (*clear) (GeeAbstractMap* self);
325 void (*set_all) (GeeAbstractMap* self, GeeMap* map);
326 gboolean (*unset_all) (GeeAbstractMap* self, GeeMap* map);
327 gboolean (*has_all) (GeeAbstractMap* self, GeeMap* map);
328 gint (*get_size) (GeeAbstractMap* self);
329 gboolean (*get_is_empty) (GeeAbstractMap* self);
330 GeeSet* (*get_keys) (GeeAbstractMap* self);
331 GeeCollection* (*get_values) (GeeAbstractMap* self);
332 GeeSet* (*get_entries) (GeeAbstractMap* self);
333 GeeMap* (*get_read_only_view) (GeeAbstractMap* self);
337 GeeAbstractMap parent_instance;
338 GeeHashMapPrivate * priv;
341 struct _GeeHashMapClass {
342 GeeAbstractMapClass parent_class;
345 struct _GeeHashMapPrivate {
347 GBoxedCopyFunc k_dup_func;
348 GDestroyNotify k_destroy_func;
350 GBoxedCopyFunc v_dup_func;
351 GDestroyNotify v_destroy_func;
352 GHashFunc _key_hash_func;
353 GEqualFunc _key_equal_func;
354 GEqualFunc _value_equal_func;
357 GeeHashMapNode** _nodes;
361 GeeCollection* _values;
366 struct _GeeHashMapNode {
369 GeeHashMapNode* next;
374 struct _GeeMapEntry {
375 GObject parent_instance;
376 GeeMapEntryPrivate * priv;
379 struct _GeeMapEntryClass {
380 GObjectClass parent_class;
381 gconstpointer (*get_key) (GeeMapEntry* self);
382 gconstpointer (*get_value) (GeeMapEntry* self);
383 void (*set_value) (GeeMapEntry* self, gconstpointer value);
386 struct _GeeHashMapEntry {
387 GeeMapEntry parent_instance;
388 GeeHashMapEntryPrivate * priv;
391 struct _GeeHashMapEntryClass {
392 GeeMapEntryClass parent_class;
395 struct _GeeHashMapEntryPrivate {
397 GBoxedCopyFunc k_dup_func;
398 GDestroyNotify k_destroy_func;
400 GBoxedCopyFunc v_dup_func;
401 GDestroyNotify v_destroy_func;
402 GeeHashMapNode* _node;
405 struct _GeeAbstractCollection {
406 GObject parent_instance;
407 GeeAbstractCollectionPrivate * priv;
410 struct _GeeAbstractCollectionClass {
411 GObjectClass parent_class;
412 gboolean (*contains) (GeeAbstractCollection* self, gconstpointer item);
413 gboolean (*add) (GeeAbstractCollection* self, gconstpointer item);
414 gboolean (*remove) (GeeAbstractCollection* self, gconstpointer item);
415 void (*clear) (GeeAbstractCollection* self);
416 gpointer* (*to_array) (GeeAbstractCollection* self, int* result_length1);
417 gboolean (*add_all) (GeeAbstractCollection* self, GeeCollection* collection);
418 gboolean (*contains_all) (GeeAbstractCollection* self, GeeCollection* collection);
419 gboolean (*remove_all) (GeeAbstractCollection* self, GeeCollection* collection);
420 gboolean (*retain_all) (GeeAbstractCollection* self, GeeCollection* collection);
421 GeeIterator* (*iterator) (GeeAbstractCollection* self);
422 gint (*get_size) (GeeAbstractCollection* self);
423 gboolean (*get_is_empty) (GeeAbstractCollection* self);
424 GeeCollection* (*get_read_only_view) (GeeAbstractCollection* self);
427 struct _GeeAbstractSet {
428 GeeAbstractCollection parent_instance;
429 GeeAbstractSetPrivate * priv;
432 struct _GeeAbstractSetClass {
433 GeeAbstractCollectionClass parent_class;
434 GeeSet* (*get_read_only_view) (GeeAbstractSet* self);
437 struct _GeeHashMapKeySet {
438 GeeAbstractSet parent_instance;
439 GeeHashMapKeySetPrivate * priv;
442 struct _GeeHashMapKeySetClass {
443 GeeAbstractSetClass parent_class;
446 struct _GeeHashMapKeySetPrivate {
448 GBoxedCopyFunc k_dup_func;
449 GDestroyNotify k_destroy_func;
451 GBoxedCopyFunc v_dup_func;
452 GDestroyNotify v_destroy_func;
456 struct _GeeHashMapValueCollection {
457 GeeAbstractCollection parent_instance;
458 GeeHashMapValueCollectionPrivate * priv;
461 struct _GeeHashMapValueCollectionClass {
462 GeeAbstractCollectionClass parent_class;
465 struct _GeeHashMapValueCollectionPrivate {
467 GBoxedCopyFunc k_dup_func;
468 GDestroyNotify k_destroy_func;
470 GBoxedCopyFunc v_dup_func;
471 GDestroyNotify v_destroy_func;
475 struct _GeeHashMapEntrySet {
476 GeeAbstractSet parent_instance;
477 GeeHashMapEntrySetPrivate * priv;
480 struct _GeeHashMapEntrySetClass {
481 GeeAbstractSetClass parent_class;
484 struct _GeeHashMapEntrySetPrivate {
486 GBoxedCopyFunc k_dup_func;
487 GDestroyNotify k_destroy_func;
489 GBoxedCopyFunc v_dup_func;
490 GDestroyNotify v_destroy_func;
494 struct _GeeHashMapNodeIterator {
495 GObject parent_instance;
496 GeeHashMapNodeIteratorPrivate * priv;
498 GeeHashMapNode* _node;
499 GeeHashMapNode* _next;
503 struct _GeeHashMapNodeIteratorClass {
504 GObjectClass parent_class;
507 struct _GeeHashMapNodeIteratorPrivate {
509 GBoxedCopyFunc k_dup_func;
510 GDestroyNotify k_destroy_func;
512 GBoxedCopyFunc v_dup_func;
513 GDestroyNotify v_destroy_func;
517 struct _GeeHashMapKeyIterator {
518 GeeHashMapNodeIterator parent_instance;
519 GeeHashMapKeyIteratorPrivate * priv;
522 struct _GeeHashMapKeyIteratorClass {
523 GeeHashMapNodeIteratorClass parent_class;
526 struct _GeeHashMapKeyIteratorPrivate {
528 GBoxedCopyFunc k_dup_func;
529 GDestroyNotify k_destroy_func;
531 GBoxedCopyFunc v_dup_func;
532 GDestroyNotify v_destroy_func;
535 struct _GeeHashMapMapIterator {
536 GeeHashMapNodeIterator parent_instance;
537 GeeHashMapMapIteratorPrivate * priv;
540 struct _GeeHashMapMapIteratorClass {
541 GeeHashMapNodeIteratorClass parent_class;
544 struct _GeeHashMapMapIteratorPrivate {
546 GBoxedCopyFunc k_dup_func;
547 GDestroyNotify k_destroy_func;
549 GBoxedCopyFunc v_dup_func;
550 GDestroyNotify v_destroy_func;
553 struct _GeeHashMapValueIterator {
554 GeeHashMapNodeIterator parent_instance;
555 GeeHashMapValueIteratorPrivate * priv;
558 struct _GeeHashMapValueIteratorClass {
559 GeeHashMapNodeIteratorClass parent_class;
562 struct _GeeHashMapValueIteratorPrivate {
564 GBoxedCopyFunc k_dup_func;
565 GDestroyNotify k_destroy_func;
567 GBoxedCopyFunc v_dup_func;
568 GDestroyNotify v_destroy_func;
571 struct _GeeHashMapEntryIterator {
572 GeeHashMapNodeIterator parent_instance;
573 GeeHashMapEntryIteratorPrivate * priv;
576 struct _GeeHashMapEntryIteratorClass {
577 GeeHashMapNodeIteratorClass parent_class;
580 struct _GeeHashMapEntryIteratorPrivate {
582 GBoxedCopyFunc k_dup_func;
583 GDestroyNotify k_destroy_func;
585 GBoxedCopyFunc v_dup_func;
586 GDestroyNotify v_destroy_func;
590 static gpointer gee_hash_map_parent_class = NULL;
591 static gpointer gee_hash_map_entry_parent_class = NULL;
592 static gpointer gee_hash_map_key_set_parent_class = NULL;
593 static gpointer gee_hash_map_value_collection_parent_class = NULL;
594 static gpointer gee_hash_map_entry_set_parent_class = NULL;
595 static gpointer gee_hash_map_node_iterator_parent_class = NULL;
596 static gpointer gee_hash_map_key_iterator_parent_class = NULL;
597 static GeeIteratorIface* gee_hash_map_key_iterator_gee_iterator_parent_iface = NULL;
598 static gpointer gee_hash_map_map_iterator_parent_class = NULL;
599 static GeeMapIteratorIface* gee_hash_map_map_iterator_gee_map_iterator_parent_iface = NULL;
600 static gpointer gee_hash_map_value_iterator_parent_class = NULL;
601 static GeeIteratorIface* gee_hash_map_value_iterator_gee_iterator_parent_iface = NULL;
602 static gpointer gee_hash_map_entry_iterator_parent_class = NULL;
603 static GeeIteratorIface* gee_hash_map_entry_iterator_gee_iterator_parent_iface = NULL;
605 GType gee_iterator_get_type (void) G_GNUC_CONST;
606 GType gee_iterable_get_type (void) G_GNUC_CONST;
607 GType gee_map_iterator_get_type (void) G_GNUC_CONST;
608 GType gee_collection_get_type (void) G_GNUC_CONST;
609 GType gee_set_get_type (void) G_GNUC_CONST;
610 GType gee_map_entry_get_type (void) G_GNUC_CONST;
611 GType gee_map_get_type (void) G_GNUC_CONST;
612 GType gee_abstract_map_get_type (void) G_GNUC_CONST;
613 GType gee_hash_map_get_type (void) G_GNUC_CONST;
614 static void gee_hash_map_node_free (GeeHashMapNode* self);
615 #define GEE_HASH_MAP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_TYPE_HASH_MAP, GeeHashMapPrivate))
617 GEE_HASH_MAP_DUMMY_PROPERTY,
619 GEE_HASH_MAP_K_DUP_FUNC,
620 GEE_HASH_MAP_K_DESTROY_FUNC,
622 GEE_HASH_MAP_V_DUP_FUNC,
623 GEE_HASH_MAP_V_DESTROY_FUNC,
627 GEE_HASH_MAP_ENTRIES,
628 GEE_HASH_MAP_KEY_HASH_FUNC,
629 GEE_HASH_MAP_KEY_EQUAL_FUNC,
630 GEE_HASH_MAP_VALUE_EQUAL_FUNC
632 void gee_abstract_map_clear (GeeAbstractMap* self);
633 #define GEE_HASH_MAP_MIN_SIZE 11
634 #define GEE_HASH_MAP_MAX_SIZE 13845163
635 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);
636 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);
637 GeeAbstractMap* gee_abstract_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);
638 GHashFunc gee_functions_get_hash_func_for (GType t);
639 GEqualFunc gee_functions_get_equal_func_for (GType t);
640 static void gee_hash_map_set_key_hash_func (GeeHashMap* self, GHashFunc value);
641 static void gee_hash_map_set_key_equal_func (GeeHashMap* self, GEqualFunc value);
642 static void gee_hash_map_set_value_equal_func (GeeHashMap* self, GEqualFunc value);
643 static GeeHashMapNode** gee_hash_map_lookup_node (GeeHashMap* self, gconstpointer key);
644 GHashFunc gee_hash_map_get_key_hash_func (GeeHashMap* self);
645 GEqualFunc gee_hash_map_get_key_equal_func (GeeHashMap* self);
646 static gboolean gee_hash_map_real_has_key (GeeAbstractMap* base, gconstpointer key);
647 static gboolean gee_hash_map_real_has (GeeAbstractMap* base, gconstpointer key, gconstpointer value);
648 GEqualFunc gee_hash_map_get_value_equal_func (GeeHashMap* self);
649 static gpointer gee_hash_map_real_get (GeeAbstractMap* base, gconstpointer key);
650 static void gee_hash_map_real_set (GeeAbstractMap* base, gconstpointer key, gconstpointer value);
651 static GeeHashMapNode* gee_hash_map_node_new (gpointer k, gpointer v, guint hash);
652 static GeeHashMapNode* gee_hash_map_node_new (gpointer k, gpointer v, guint hash);
653 static inline void gee_hash_map_resize (GeeHashMap* self);
654 static gboolean gee_hash_map_real_unset (GeeAbstractMap* base, gconstpointer key, gpointer* value);
655 static inline gboolean gee_hash_map_unset_helper (GeeHashMap* self, gconstpointer key, gpointer* value);
656 static void gee_hash_map_real_clear (GeeAbstractMap* base);
657 static GeeMapIterator* gee_hash_map_real_map_iterator (GeeAbstractMap* base);
658 static GeeHashMapMapIterator* gee_hash_map_map_iterator_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map);
659 static GeeHashMapMapIterator* gee_hash_map_map_iterator_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, GeeHashMap* map);
660 static GType gee_hash_map_node_iterator_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
661 static GType gee_hash_map_map_iterator_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
662 static GeeHashMapKeySet* gee_hash_map_key_set_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map);
663 static GeeHashMapKeySet* gee_hash_map_key_set_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, GeeHashMap* map);
664 GType gee_abstract_collection_get_type (void) G_GNUC_CONST;
665 GType gee_abstract_set_get_type (void) G_GNUC_CONST;
666 static GType gee_hash_map_key_set_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
667 static GeeHashMapValueCollection* gee_hash_map_value_collection_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map);
668 static GeeHashMapValueCollection* gee_hash_map_value_collection_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, GeeHashMap* map);
669 static GType gee_hash_map_value_collection_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
670 static GeeHashMapEntrySet* gee_hash_map_entry_set_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map);
671 static GeeHashMapEntrySet* gee_hash_map_entry_set_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, GeeHashMap* map);
672 static GType gee_hash_map_entry_set_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
673 static void gee_hash_map_node_instance_init (GeeHashMapNode * self);
674 static GType gee_hash_map_entry_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
675 #define GEE_HASH_MAP_ENTRY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_HASH_MAP_TYPE_ENTRY, GeeHashMapEntryPrivate))
677 GEE_HASH_MAP_ENTRY_DUMMY_PROPERTY,
678 GEE_HASH_MAP_ENTRY_K_TYPE,
679 GEE_HASH_MAP_ENTRY_K_DUP_FUNC,
680 GEE_HASH_MAP_ENTRY_K_DESTROY_FUNC,
681 GEE_HASH_MAP_ENTRY_V_TYPE,
682 GEE_HASH_MAP_ENTRY_V_DUP_FUNC,
683 GEE_HASH_MAP_ENTRY_V_DESTROY_FUNC,
684 GEE_HASH_MAP_ENTRY_KEY,
685 GEE_HASH_MAP_ENTRY_VALUE
687 static GeeMapEntry* gee_hash_map_entry_entry_for (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMapNode* node);
688 static GeeHashMapEntry* gee_hash_map_entry_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMapNode* node);
689 static GeeHashMapEntry* gee_hash_map_entry_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, GeeHashMapNode* node);
690 GeeMapEntry* gee_map_entry_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);
691 static void gee_hash_map_entry_finalize (GObject* obj);
692 gconstpointer gee_map_entry_get_key (GeeMapEntry* self);
693 gconstpointer gee_map_entry_get_value (GeeMapEntry* self);
694 static void _vala_gee_hash_map_entry_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
695 void gee_map_entry_set_value (GeeMapEntry* self, gconstpointer value);
696 static void _vala_gee_hash_map_entry_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
697 #define GEE_HASH_MAP_KEY_SET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_HASH_MAP_TYPE_KEY_SET, GeeHashMapKeySetPrivate))
699 GEE_HASH_MAP_KEY_SET_DUMMY_PROPERTY,
700 GEE_HASH_MAP_KEY_SET_K_TYPE,
701 GEE_HASH_MAP_KEY_SET_K_DUP_FUNC,
702 GEE_HASH_MAP_KEY_SET_K_DESTROY_FUNC,
703 GEE_HASH_MAP_KEY_SET_V_TYPE,
704 GEE_HASH_MAP_KEY_SET_V_DUP_FUNC,
705 GEE_HASH_MAP_KEY_SET_V_DESTROY_FUNC,
706 GEE_HASH_MAP_KEY_SET_SIZE
708 GeeAbstractSet* gee_abstract_set_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func);
709 static GeeIterator* gee_hash_map_key_set_real_iterator (GeeAbstractCollection* base);
710 static GeeHashMapKeyIterator* gee_hash_map_key_iterator_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map);
711 static GeeHashMapKeyIterator* gee_hash_map_key_iterator_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, GeeHashMap* map);
712 static GType gee_hash_map_key_iterator_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
713 static gboolean gee_hash_map_key_set_real_add (GeeAbstractCollection* base, gconstpointer key);
714 static void gee_hash_map_key_set_real_clear (GeeAbstractCollection* base);
715 static gboolean gee_hash_map_key_set_real_remove (GeeAbstractCollection* base, gconstpointer key);
716 static gboolean gee_hash_map_key_set_real_contains (GeeAbstractCollection* base, gconstpointer key);
717 gboolean gee_abstract_map_has_key (GeeAbstractMap* self, gconstpointer key);
718 static gboolean gee_hash_map_key_set_real_add_all (GeeAbstractCollection* base, GeeCollection* collection);
719 static gboolean gee_hash_map_key_set_real_remove_all (GeeAbstractCollection* base, GeeCollection* collection);
720 static gboolean gee_hash_map_key_set_real_retain_all (GeeAbstractCollection* base, GeeCollection* collection);
721 gint gee_abstract_map_get_size (GeeAbstractMap* self);
722 static void gee_hash_map_key_set_finalize (GObject* obj);
723 gint gee_abstract_collection_get_size (GeeAbstractCollection* self);
724 static void _vala_gee_hash_map_key_set_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
725 static void _vala_gee_hash_map_key_set_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
726 #define GEE_HASH_MAP_VALUE_COLLECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_HASH_MAP_TYPE_VALUE_COLLECTION, GeeHashMapValueCollectionPrivate))
728 GEE_HASH_MAP_VALUE_COLLECTION_DUMMY_PROPERTY,
729 GEE_HASH_MAP_VALUE_COLLECTION_K_TYPE,
730 GEE_HASH_MAP_VALUE_COLLECTION_K_DUP_FUNC,
731 GEE_HASH_MAP_VALUE_COLLECTION_K_DESTROY_FUNC,
732 GEE_HASH_MAP_VALUE_COLLECTION_V_TYPE,
733 GEE_HASH_MAP_VALUE_COLLECTION_V_DUP_FUNC,
734 GEE_HASH_MAP_VALUE_COLLECTION_V_DESTROY_FUNC,
735 GEE_HASH_MAP_VALUE_COLLECTION_SIZE
737 GeeAbstractCollection* gee_abstract_collection_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func);
738 static GeeIterator* gee_hash_map_value_collection_real_iterator (GeeAbstractCollection* base);
739 static GeeHashMapValueIterator* gee_hash_map_value_iterator_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map);
740 static GeeHashMapValueIterator* gee_hash_map_value_iterator_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, GeeHashMap* map);
741 static GType gee_hash_map_value_iterator_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
742 static gboolean gee_hash_map_value_collection_real_add (GeeAbstractCollection* base, gconstpointer value);
743 static void gee_hash_map_value_collection_real_clear (GeeAbstractCollection* base);
744 static gboolean gee_hash_map_value_collection_real_remove (GeeAbstractCollection* base, gconstpointer value);
745 static gboolean gee_hash_map_value_collection_real_contains (GeeAbstractCollection* base, gconstpointer value);
746 GeeIterator* gee_abstract_collection_iterator (GeeAbstractCollection* self);
747 gboolean gee_iterator_next (GeeIterator* self);
748 gpointer gee_iterator_get (GeeIterator* self);
749 static gboolean gee_hash_map_value_collection_real_add_all (GeeAbstractCollection* base, GeeCollection* collection);
750 static gboolean gee_hash_map_value_collection_real_remove_all (GeeAbstractCollection* base, GeeCollection* collection);
751 static gboolean gee_hash_map_value_collection_real_retain_all (GeeAbstractCollection* base, GeeCollection* collection);
752 static void gee_hash_map_value_collection_finalize (GObject* obj);
753 static void _vala_gee_hash_map_value_collection_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
754 static void _vala_gee_hash_map_value_collection_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
755 #define GEE_HASH_MAP_ENTRY_SET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_HASH_MAP_TYPE_ENTRY_SET, GeeHashMapEntrySetPrivate))
757 GEE_HASH_MAP_ENTRY_SET_DUMMY_PROPERTY,
758 GEE_HASH_MAP_ENTRY_SET_K_TYPE,
759 GEE_HASH_MAP_ENTRY_SET_K_DUP_FUNC,
760 GEE_HASH_MAP_ENTRY_SET_K_DESTROY_FUNC,
761 GEE_HASH_MAP_ENTRY_SET_V_TYPE,
762 GEE_HASH_MAP_ENTRY_SET_V_DUP_FUNC,
763 GEE_HASH_MAP_ENTRY_SET_V_DESTROY_FUNC,
764 GEE_HASH_MAP_ENTRY_SET_SIZE
766 static GeeIterator* gee_hash_map_entry_set_real_iterator (GeeAbstractCollection* base);
767 static GeeHashMapEntryIterator* gee_hash_map_entry_iterator_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map);
768 static GeeHashMapEntryIterator* gee_hash_map_entry_iterator_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, GeeHashMap* map);
769 static GType gee_hash_map_entry_iterator_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
770 static gboolean gee_hash_map_entry_set_real_add (GeeAbstractCollection* base, GeeMapEntry* entry);
771 static void gee_hash_map_entry_set_real_clear (GeeAbstractCollection* base);
772 static gboolean gee_hash_map_entry_set_real_remove (GeeAbstractCollection* base, GeeMapEntry* entry);
773 static gboolean gee_hash_map_entry_set_real_contains (GeeAbstractCollection* base, GeeMapEntry* entry);
774 gboolean gee_abstract_map_has (GeeAbstractMap* self, gconstpointer key, gconstpointer value);
775 static gboolean gee_hash_map_entry_set_real_add_all (GeeAbstractCollection* base, GeeCollection* entries);
776 static gboolean gee_hash_map_entry_set_real_remove_all (GeeAbstractCollection* base, GeeCollection* entries);
777 static gboolean gee_hash_map_entry_set_real_retain_all (GeeAbstractCollection* base, GeeCollection* entries);
778 static void gee_hash_map_entry_set_finalize (GObject* obj);
779 static void _vala_gee_hash_map_entry_set_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
780 static void _vala_gee_hash_map_entry_set_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
781 #define GEE_HASH_MAP_NODE_ITERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_HASH_MAP_TYPE_NODE_ITERATOR, GeeHashMapNodeIteratorPrivate))
783 GEE_HASH_MAP_NODE_ITERATOR_DUMMY_PROPERTY,
784 GEE_HASH_MAP_NODE_ITERATOR_K_TYPE,
785 GEE_HASH_MAP_NODE_ITERATOR_K_DUP_FUNC,
786 GEE_HASH_MAP_NODE_ITERATOR_K_DESTROY_FUNC,
787 GEE_HASH_MAP_NODE_ITERATOR_V_TYPE,
788 GEE_HASH_MAP_NODE_ITERATOR_V_DUP_FUNC,
789 GEE_HASH_MAP_NODE_ITERATOR_V_DESTROY_FUNC
791 static GeeHashMapNodeIterator* gee_hash_map_node_iterator_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, GeeHashMap* map);
792 static gboolean gee_hash_map_node_iterator_next (GeeHashMapNodeIterator* self);
793 static gboolean gee_hash_map_node_iterator_has_next (GeeHashMapNodeIterator* self);
794 static gboolean gee_hash_map_node_iterator_first (GeeHashMapNodeIterator* self);
795 static void gee_hash_map_node_iterator_finalize (GObject* obj);
796 static void _vala_gee_hash_map_node_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
797 static void _vala_gee_hash_map_node_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
798 #define GEE_HASH_MAP_KEY_ITERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_HASH_MAP_TYPE_KEY_ITERATOR, GeeHashMapKeyIteratorPrivate))
800 GEE_HASH_MAP_KEY_ITERATOR_DUMMY_PROPERTY,
801 GEE_HASH_MAP_KEY_ITERATOR_K_TYPE,
802 GEE_HASH_MAP_KEY_ITERATOR_K_DUP_FUNC,
803 GEE_HASH_MAP_KEY_ITERATOR_K_DESTROY_FUNC,
804 GEE_HASH_MAP_KEY_ITERATOR_V_TYPE,
805 GEE_HASH_MAP_KEY_ITERATOR_V_DUP_FUNC,
806 GEE_HASH_MAP_KEY_ITERATOR_V_DESTROY_FUNC
808 static gpointer gee_hash_map_key_iterator_real_get (GeeIterator* base);
809 static void gee_hash_map_key_iterator_real_remove (GeeIterator* base);
810 static void _vala_gee_hash_map_key_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
811 static void _vala_gee_hash_map_key_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
812 #define GEE_HASH_MAP_MAP_ITERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_HASH_MAP_TYPE_MAP_ITERATOR, GeeHashMapMapIteratorPrivate))
814 GEE_HASH_MAP_MAP_ITERATOR_DUMMY_PROPERTY,
815 GEE_HASH_MAP_MAP_ITERATOR_K_TYPE,
816 GEE_HASH_MAP_MAP_ITERATOR_K_DUP_FUNC,
817 GEE_HASH_MAP_MAP_ITERATOR_K_DESTROY_FUNC,
818 GEE_HASH_MAP_MAP_ITERATOR_V_TYPE,
819 GEE_HASH_MAP_MAP_ITERATOR_V_DUP_FUNC,
820 GEE_HASH_MAP_MAP_ITERATOR_V_DESTROY_FUNC
822 static gpointer gee_hash_map_map_iterator_real_get_key (GeeMapIterator* base);
823 static void gee_hash_map_map_iterator_real_unset (GeeMapIterator* base);
824 gboolean gee_map_iterator_has_next (GeeMapIterator* self);
825 gboolean gee_abstract_map_unset (GeeAbstractMap* self, gconstpointer key, gpointer* value);
826 static gpointer gee_hash_map_map_iterator_real_get_value (GeeMapIterator* base);
827 static void gee_hash_map_map_iterator_real_set_value (GeeMapIterator* base, gconstpointer value);
828 void gee_abstract_map_set (GeeAbstractMap* self, gconstpointer key, gconstpointer value);
829 static void _vala_gee_hash_map_map_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
830 static void _vala_gee_hash_map_map_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
831 #define GEE_HASH_MAP_VALUE_ITERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_HASH_MAP_TYPE_VALUE_ITERATOR, GeeHashMapValueIteratorPrivate))
833 GEE_HASH_MAP_VALUE_ITERATOR_DUMMY_PROPERTY,
834 GEE_HASH_MAP_VALUE_ITERATOR_K_TYPE,
835 GEE_HASH_MAP_VALUE_ITERATOR_K_DUP_FUNC,
836 GEE_HASH_MAP_VALUE_ITERATOR_K_DESTROY_FUNC,
837 GEE_HASH_MAP_VALUE_ITERATOR_V_TYPE,
838 GEE_HASH_MAP_VALUE_ITERATOR_V_DUP_FUNC,
839 GEE_HASH_MAP_VALUE_ITERATOR_V_DESTROY_FUNC
841 static gpointer gee_hash_map_value_iterator_real_get (GeeIterator* base);
842 static void gee_hash_map_value_iterator_real_remove (GeeIterator* base);
843 static void _vala_gee_hash_map_value_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
844 static void _vala_gee_hash_map_value_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
845 #define GEE_HASH_MAP_ENTRY_ITERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_HASH_MAP_TYPE_ENTRY_ITERATOR, GeeHashMapEntryIteratorPrivate))
847 GEE_HASH_MAP_ENTRY_ITERATOR_DUMMY_PROPERTY,
848 GEE_HASH_MAP_ENTRY_ITERATOR_K_TYPE,
849 GEE_HASH_MAP_ENTRY_ITERATOR_K_DUP_FUNC,
850 GEE_HASH_MAP_ENTRY_ITERATOR_K_DESTROY_FUNC,
851 GEE_HASH_MAP_ENTRY_ITERATOR_V_TYPE,
852 GEE_HASH_MAP_ENTRY_ITERATOR_V_DUP_FUNC,
853 GEE_HASH_MAP_ENTRY_ITERATOR_V_DESTROY_FUNC
855 static GeeMapEntry* gee_hash_map_entry_iterator_real_get (GeeIterator* base);
856 static void gee_hash_map_entry_iterator_real_remove (GeeIterator* base);
857 static void _vala_gee_hash_map_entry_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
858 static void _vala_gee_hash_map_entry_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
859 static void gee_hash_map_finalize (GObject* obj);
860 GeeSet* gee_abstract_map_get_keys (GeeAbstractMap* self);
861 GeeCollection* gee_abstract_map_get_values (GeeAbstractMap* self);
862 GeeSet* gee_abstract_map_get_entries (GeeAbstractMap* self);
863 static void _vala_gee_hash_map_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
864 static void _vala_gee_hash_map_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
865 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
866 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
870 * Constructs a new, empty hash map.
872 * If not provided, the functions parameters are requested to the
873 * {@link Functions} function factory methods.
875 * @param key_hash_func an optional key hash function
876 * @param key_equal_func an optional key equality testing function
877 * @param value_equal_func an optional value equality testing function
879 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) {
880 GeeHashMap * self = NULL;
888 GeeHashMapNode** _tmp10_ = NULL;
889 self = (GeeHashMap*) gee_abstract_map_construct (object_type, k_type, (GBoxedCopyFunc) k_dup_func, k_destroy_func, v_type, (GBoxedCopyFunc) v_dup_func, v_destroy_func);
890 self->priv->k_type = k_type;
891 self->priv->k_dup_func = k_dup_func;
892 self->priv->k_destroy_func = k_destroy_func;
893 self->priv->v_type = v_type;
894 self->priv->v_dup_func = v_dup_func;
895 self->priv->v_destroy_func = v_destroy_func;
896 _tmp0_ = key_hash_func;
897 if (_tmp0_ == NULL) {
898 GHashFunc _tmp1_ = NULL;
899 _tmp1_ = gee_functions_get_hash_func_for (k_type);
900 key_hash_func = _tmp1_;
902 _tmp2_ = key_equal_func;
903 if (_tmp2_ == NULL) {
904 GEqualFunc _tmp3_ = NULL;
905 _tmp3_ = gee_functions_get_equal_func_for (k_type);
906 key_equal_func = _tmp3_;
908 _tmp4_ = value_equal_func;
909 if (_tmp4_ == NULL) {
910 GEqualFunc _tmp5_ = NULL;
911 _tmp5_ = gee_functions_get_equal_func_for (v_type);
912 value_equal_func = _tmp5_;
914 _tmp6_ = key_hash_func;
915 gee_hash_map_set_key_hash_func (self, _tmp6_);
916 _tmp7_ = key_equal_func;
917 gee_hash_map_set_key_equal_func (self, _tmp7_);
918 _tmp8_ = value_equal_func;
919 gee_hash_map_set_value_equal_func (self, _tmp8_);
920 self->priv->_array_size = GEE_HASH_MAP_MIN_SIZE;
921 _tmp9_ = self->priv->_array_size;
922 _tmp10_ = g_new0 (GeeHashMapNode*, _tmp9_ + 1);
923 self->priv->_nodes = (_vala_array_free (self->priv->_nodes, self->priv->_nodes_length1, (GDestroyNotify) gee_hash_map_node_free), NULL);
924 self->priv->_nodes = _tmp10_;
925 self->priv->_nodes_length1 = _tmp9_;
926 self->priv->__nodes_size_ = self->priv->_nodes_length1;
931 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) {
932 return gee_hash_map_construct (GEE_TYPE_HASH_MAP, k_type, k_dup_func, k_destroy_func, v_type, v_dup_func, v_destroy_func, key_hash_func, key_equal_func, value_equal_func);
936 static GeeHashMapNode** gee_hash_map_lookup_node (GeeHashMap* self, gconstpointer key) {
937 GeeHashMapNode** result = NULL;
940 gconstpointer _tmp2_;
943 GeeHashMapNode** _tmp4_;
947 GeeHashMapNode** node;
948 GeeHashMapNode** _tmp22_;
949 g_return_val_if_fail (self != NULL, NULL);
950 _tmp0_ = gee_hash_map_get_key_hash_func (self);
953 _tmp3_ = _tmp1_ (_tmp2_);
955 _tmp4_ = self->priv->_nodes;
956 _tmp4__length1 = self->priv->_nodes_length1;
958 _tmp6_ = self->priv->_array_size;
959 node = &_tmp4_[_tmp5_ % _tmp6_];
961 gboolean _tmp7_ = FALSE;
962 GeeHashMapNode** _tmp8_;
964 GeeHashMapNode** _tmp21_;
966 if ((*_tmp8_) != NULL) {
967 gboolean _tmp9_ = FALSE;
969 GeeHashMapNode** _tmp11_;
972 _tmp10_ = hash_value;
974 _tmp12_ = (*_tmp11_)->key_hash;
975 if (_tmp10_ != _tmp12_) {
980 GeeHashMapNode** _tmp15_;
981 gconstpointer _tmp16_;
982 gconstpointer _tmp17_;
983 gboolean _tmp18_ = FALSE;
984 _tmp13_ = gee_hash_map_get_key_equal_func (self);
987 _tmp16_ = (*_tmp15_)->key;
989 _tmp18_ = _tmp14_ (_tmp16_, _tmp17_);
1002 node = &(*_tmp21_)->next;
1013 static gboolean gee_hash_map_real_has_key (GeeAbstractMap* base, gconstpointer key) {
1015 gboolean result = FALSE;
1016 gconstpointer _tmp0_;
1017 GeeHashMapNode** _tmp1_ = NULL;
1018 GeeHashMapNode** node;
1019 self = (GeeHashMap*) base;
1021 _tmp1_ = gee_hash_map_lookup_node (self, _tmp0_);
1023 result = (*node) != NULL;
1031 static gboolean gee_hash_map_real_has (GeeAbstractMap* base, gconstpointer key, gconstpointer value) {
1033 gboolean result = FALSE;
1034 gconstpointer _tmp0_;
1035 GeeHashMapNode** _tmp1_ = NULL;
1036 GeeHashMapNode** node;
1037 gboolean _tmp2_ = FALSE;
1038 GeeHashMapNode** _tmp3_;
1040 self = (GeeHashMap*) base;
1042 _tmp1_ = gee_hash_map_lookup_node (self, _tmp0_);
1045 if ((*_tmp3_) != NULL) {
1048 GeeHashMapNode** _tmp6_;
1049 gconstpointer _tmp7_;
1050 gconstpointer _tmp8_;
1051 gboolean _tmp9_ = FALSE;
1052 _tmp4_ = gee_hash_map_get_value_equal_func (self);
1055 _tmp7_ = (*_tmp6_)->value;
1057 _tmp9_ = _tmp5_ (_tmp7_, _tmp8_);
1071 static gpointer gee_hash_map_real_get (GeeAbstractMap* base, gconstpointer key) {
1073 gpointer result = NULL;
1074 gconstpointer _tmp0_;
1075 GeeHashMapNode** _tmp1_ = NULL;
1076 GeeHashMapNode* node;
1077 GeeHashMapNode* _tmp2_;
1078 self = (GeeHashMap*) base;
1080 _tmp1_ = gee_hash_map_lookup_node (self, _tmp0_);
1083 if (_tmp2_ != NULL) {
1084 GeeHashMapNode* _tmp3_;
1085 gconstpointer _tmp4_;
1088 _tmp4_ = _tmp3_->value;
1089 _tmp5_ = ((_tmp4_ != NULL) && (self->priv->v_dup_func != NULL)) ? self->priv->v_dup_func ((gpointer) _tmp4_) : ((gpointer) _tmp4_);
1102 static void gee_hash_map_real_set (GeeAbstractMap* base, gconstpointer key, gconstpointer value) {
1104 gconstpointer _tmp0_;
1105 GeeHashMapNode** _tmp1_ = NULL;
1106 GeeHashMapNode** node;
1107 GeeHashMapNode** _tmp2_;
1109 self = (GeeHashMap*) base;
1111 _tmp1_ = gee_hash_map_lookup_node (self, _tmp0_);
1114 if ((*_tmp2_) != NULL) {
1115 GeeHashMapNode** _tmp3_;
1116 gconstpointer _tmp4_;
1120 _tmp5_ = ((_tmp4_ != NULL) && (self->priv->v_dup_func != NULL)) ? self->priv->v_dup_func ((gpointer) _tmp4_) : ((gpointer) _tmp4_);
1121 (((*_tmp3_)->value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : ((*_tmp3_)->value = (self->priv->v_destroy_func ((*_tmp3_)->value), NULL));
1122 (*_tmp3_)->value = _tmp5_;
1126 gconstpointer _tmp8_;
1129 GeeHashMapNode** _tmp10_;
1130 gconstpointer _tmp11_;
1132 gconstpointer _tmp13_;
1135 GeeHashMapNode* _tmp16_;
1136 GeeHashMapNode* _tmp17_;
1138 _tmp6_ = gee_hash_map_get_key_hash_func (self);
1141 _tmp9_ = _tmp7_ (_tmp8_);
1142 hash_value = _tmp9_;
1145 _tmp12_ = ((_tmp11_ != NULL) && (self->priv->k_dup_func != NULL)) ? self->priv->k_dup_func ((gpointer) _tmp11_) : ((gpointer) _tmp11_);
1147 _tmp14_ = ((_tmp13_ != NULL) && (self->priv->v_dup_func != NULL)) ? self->priv->v_dup_func ((gpointer) _tmp13_) : ((gpointer) _tmp13_);
1148 _tmp15_ = hash_value;
1149 _tmp16_ = gee_hash_map_node_new (_tmp12_, _tmp14_, _tmp15_);
1152 _tmp18_ = self->priv->_nnodes;
1153 self->priv->_nnodes = _tmp18_ + 1;
1154 gee_hash_map_resize (self);
1156 _tmp19_ = self->priv->_stamp;
1157 self->priv->_stamp = _tmp19_ + 1;
1164 static gboolean gee_hash_map_real_unset (GeeAbstractMap* base, gconstpointer key, gpointer* value) {
1166 gpointer _vala_value = NULL;
1167 gboolean result = FALSE;
1168 gconstpointer _tmp0_;
1169 gpointer _tmp1_ = NULL;
1170 gboolean _tmp2_ = FALSE;
1173 self = (GeeHashMap*) base;
1175 _tmp2_ = gee_hash_map_unset_helper (self, _tmp0_, &_tmp1_);
1176 ((_vala_value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_vala_value = (self->priv->v_destroy_func (_vala_value), NULL));
1177 _vala_value = _tmp1_;
1181 gee_hash_map_resize (self);
1185 *value = _vala_value;
1187 ((_vala_value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_vala_value = (self->priv->v_destroy_func (_vala_value), NULL));
1196 static void gee_hash_map_real_clear (GeeAbstractMap* base) {
1198 self = (GeeHashMap*) base;
1209 GeeHashMapNode** _tmp5_;
1210 gint _tmp5__length1;
1212 GeeHashMapNode* _tmp7_;
1213 GeeHashMapNode* node;
1222 _tmp4_ = self->priv->_array_size;
1223 if (!(_tmp3_ < _tmp4_)) {
1226 _tmp5_ = self->priv->_nodes;
1227 _tmp5__length1 = self->priv->_nodes_length1;
1229 _tmp7_ = _tmp5_[_tmp6_];
1230 _tmp5_[_tmp6_] = NULL;
1233 GeeHashMapNode* _tmp8_;
1234 GeeHashMapNode* _tmp9_;
1235 GeeHashMapNode* _tmp10_;
1236 GeeHashMapNode* next;
1237 GeeHashMapNode* _tmp11_;
1238 GeeHashMapNode* _tmp12_;
1239 GeeHashMapNode* _tmp13_;
1241 if (!(_tmp8_ != NULL)) {
1245 _tmp10_ = _tmp9_->next;
1246 _tmp9_->next = NULL;
1249 ((_tmp11_->key == NULL) || (self->priv->k_destroy_func == NULL)) ? NULL : (_tmp11_->key = (self->priv->k_destroy_func (_tmp11_->key), NULL));
1250 _tmp11_->key = NULL;
1252 ((_tmp12_->value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_tmp12_->value = (self->priv->v_destroy_func (_tmp12_->value), NULL));
1253 _tmp12_->value = NULL;
1256 _gee_hash_map_node_free0 (node);
1258 _gee_hash_map_node_free0 (next);
1260 _gee_hash_map_node_free0 (node);
1264 self->priv->_nnodes = 0;
1265 gee_hash_map_resize (self);
1272 static GeeMapIterator* gee_hash_map_real_map_iterator (GeeAbstractMap* base) {
1274 GeeMapIterator* result = NULL;
1275 GeeHashMapMapIterator* _tmp0_;
1276 self = (GeeHashMap*) base;
1277 _tmp0_ = gee_hash_map_map_iterator_new (self->priv->k_type, (GBoxedCopyFunc) self->priv->k_dup_func, self->priv->k_destroy_func, self->priv->v_type, (GBoxedCopyFunc) self->priv->v_dup_func, self->priv->v_destroy_func, self);
1278 result = (GeeMapIterator*) _tmp0_;
1283 static inline gboolean gee_hash_map_unset_helper (GeeHashMap* self, gconstpointer key, gpointer* value) {
1284 gpointer _vala_value = NULL;
1285 gboolean result = FALSE;
1286 gconstpointer _tmp0_;
1287 GeeHashMapNode** _tmp1_ = NULL;
1288 GeeHashMapNode** node;
1289 GeeHashMapNode** _tmp2_;
1290 g_return_val_if_fail (self != NULL, FALSE);
1292 _tmp1_ = gee_hash_map_lookup_node (self, _tmp0_);
1295 if ((*_tmp2_) != NULL) {
1296 GeeHashMapNode** _tmp3_;
1297 GeeHashMapNode* _tmp4_;
1298 GeeHashMapNode* next;
1299 GeeHashMapNode** _tmp7_;
1300 GeeHashMapNode** _tmp8_;
1301 GeeHashMapNode** _tmp9_;
1302 GeeHashMapNode** _tmp10_;
1303 GeeHashMapNode* _tmp11_;
1304 GeeHashMapNode* _tmp12_;
1308 _tmp4_ = (*_tmp3_)->next;
1309 (*_tmp3_)->next = NULL;
1311 if ((&_vala_value) != NULL) {
1312 GeeHashMapNode** _tmp5_;
1315 _tmp6_ = (*_tmp5_)->value;
1316 (*_tmp5_)->value = NULL;
1317 ((_vala_value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_vala_value = (self->priv->v_destroy_func (_vala_value), NULL));
1318 _vala_value = _tmp6_;
1321 (((*_tmp7_)->key == NULL) || (self->priv->k_destroy_func == NULL)) ? NULL : ((*_tmp7_)->key = (self->priv->k_destroy_func ((*_tmp7_)->key), NULL));
1322 (*_tmp7_)->key = NULL;
1324 (((*_tmp8_)->value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : ((*_tmp8_)->value = (self->priv->v_destroy_func ((*_tmp8_)->value), NULL));
1325 (*_tmp8_)->value = NULL;
1327 gee_hash_map_node_free (*_tmp9_);
1333 _tmp13_ = self->priv->_nnodes;
1334 self->priv->_nnodes = _tmp13_ - 1;
1335 _tmp14_ = self->priv->_stamp;
1336 self->priv->_stamp = _tmp14_ + 1;
1338 _gee_hash_map_node_free0 (next);
1340 *value = _vala_value;
1342 ((_vala_value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_vala_value = (self->priv->v_destroy_func (_vala_value), NULL));
1346 ((_vala_value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_vala_value = (self->priv->v_destroy_func (_vala_value), NULL));
1351 *value = _vala_value;
1353 ((_vala_value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_vala_value = (self->priv->v_destroy_func (_vala_value), NULL));
1359 static inline void gee_hash_map_resize (GeeHashMap* self) {
1360 gboolean _tmp0_ = FALSE;
1361 gboolean _tmp1_ = FALSE;
1366 g_return_if_fail (self != NULL);
1367 _tmp2_ = self->priv->_array_size;
1368 _tmp3_ = self->priv->_nnodes;
1369 if (_tmp2_ >= (3 * _tmp3_)) {
1371 _tmp4_ = self->priv->_array_size;
1372 _tmp1_ = _tmp4_ >= GEE_HASH_MAP_MIN_SIZE;
1380 gboolean _tmp6_ = FALSE;
1384 _tmp7_ = self->priv->_array_size;
1385 _tmp8_ = self->priv->_nnodes;
1386 if ((3 * _tmp7_) <= _tmp8_) {
1388 _tmp9_ = self->priv->_array_size;
1389 _tmp6_ = _tmp9_ < GEE_HASH_MAP_MAX_SIZE;
1400 gint new_array_size;
1404 GeeHashMapNode** _tmp17_ = NULL;
1405 GeeHashMapNode** new_nodes;
1406 gint new_nodes_length1;
1407 gint _new_nodes_size_;
1408 GeeHashMapNode** _tmp43_;
1409 gint _tmp43__length1;
1411 _tmp12_ = self->priv->_nnodes;
1412 _tmp13_ = g_spaced_primes_closest ((guint) _tmp12_);
1413 new_array_size = (gint) _tmp13_;
1414 _tmp14_ = new_array_size;
1415 _tmp15_ = CLAMP (_tmp14_, GEE_HASH_MAP_MIN_SIZE, GEE_HASH_MAP_MAX_SIZE);
1416 new_array_size = _tmp15_;
1417 _tmp16_ = new_array_size;
1418 _tmp17_ = g_new0 (GeeHashMapNode*, _tmp16_ + 1);
1419 new_nodes = _tmp17_;
1420 new_nodes_length1 = _tmp16_;
1421 _new_nodes_size_ = new_nodes_length1;
1432 GeeHashMapNode* node = NULL;
1433 GeeHashMapNode* next;
1442 _tmp22_ = self->priv->_array_size;
1443 if (!(_tmp21_ < _tmp22_)) {
1448 GeeHashMapNode** _tmp23_;
1449 gint _tmp23__length1;
1451 GeeHashMapNode* _tmp25_;
1453 _tmp23_ = self->priv->_nodes;
1454 _tmp23__length1 = self->priv->_nodes_length1;
1456 _tmp25_ = _tmp23_[_tmp24_];
1457 _tmp23_[_tmp24_] = NULL;
1458 _gee_hash_map_node_free0 (node);
1463 GeeHashMapNode* _tmp29_;
1464 GeeHashMapNode* _tmp30_;
1465 GeeHashMapNode* _tmp31_;
1466 GeeHashMapNode* _tmp32_;
1470 GeeHashMapNode* _tmp35_;
1471 GeeHashMapNode** _tmp36_;
1472 gint _tmp36__length1;
1474 GeeHashMapNode* _tmp38_;
1475 GeeHashMapNode** _tmp39_;
1476 gint _tmp39__length1;
1478 GeeHashMapNode* _tmp41_;
1479 GeeHashMapNode* _tmp42_;
1482 GeeHashMapNode* _tmp28_;
1485 _gee_hash_map_node_free0 (node);
1490 if (!(_tmp29_ != NULL)) {
1494 _tmp31_ = _tmp30_->next;
1495 _tmp30_->next = NULL;
1496 _gee_hash_map_node_free0 (next);
1499 _tmp33_ = _tmp32_->key_hash;
1500 _tmp34_ = new_array_size;
1501 hash_val = _tmp33_ % _tmp34_;
1503 _tmp36_ = new_nodes;
1504 _tmp36__length1 = new_nodes_length1;
1506 _tmp38_ = _tmp36_[_tmp37_];
1507 _tmp36_[_tmp37_] = NULL;
1508 _gee_hash_map_node_free0 (_tmp35_->next);
1509 _tmp35_->next = _tmp38_;
1510 _tmp39_ = new_nodes;
1511 _tmp39__length1 = new_nodes_length1;
1515 _gee_hash_map_node_free0 (_tmp39_[_tmp40_]);
1516 _tmp39_[_tmp40_] = _tmp41_;
1517 _tmp42_ = _tmp39_[_tmp40_];
1520 _gee_hash_map_node_free0 (next);
1521 _gee_hash_map_node_free0 (node);
1525 _tmp43_ = new_nodes;
1526 _tmp43__length1 = new_nodes_length1;
1528 self->priv->_nodes = (_vala_array_free (self->priv->_nodes, self->priv->_nodes_length1, (GDestroyNotify) gee_hash_map_node_free), NULL);
1529 self->priv->_nodes = _tmp43_;
1530 self->priv->_nodes_length1 = _tmp43__length1;
1531 self->priv->__nodes_size_ = self->priv->_nodes_length1;
1532 _tmp44_ = new_array_size;
1533 self->priv->_array_size = _tmp44_;
1534 new_nodes = (_vala_array_free (new_nodes, new_nodes_length1, (GDestroyNotify) gee_hash_map_node_free), NULL);
1539 static gint gee_hash_map_real_get_size (GeeAbstractMap* base) {
1543 self = (GeeHashMap*) base;
1544 _tmp0_ = self->priv->_nnodes;
1550 static gpointer _g_object_ref0 (gpointer self) {
1551 return self ? g_object_ref (self) : NULL;
1555 static GeeSet* gee_hash_map_real_get_keys (GeeAbstractMap* base) {
1562 self = (GeeHashMap*) base;
1563 _tmp0_ = self->priv->_keys;
1564 _tmp1_ = _g_object_ref0 (_tmp0_);
1566 _tmp2_ = self->priv->_keys;
1567 if (_tmp2_ == NULL) {
1568 GeeHashMapKeySet* _tmp3_;
1571 _tmp3_ = gee_hash_map_key_set_new (self->priv->k_type, (GBoxedCopyFunc) self->priv->k_dup_func, self->priv->k_destroy_func, self->priv->v_type, (GBoxedCopyFunc) self->priv->v_dup_func, self->priv->v_destroy_func, self);
1572 _g_object_unref0 (keys);
1573 keys = (GeeSet*) _tmp3_;
1575 self->priv->_keys = _tmp4_;
1577 g_object_add_weak_pointer ((GObject*) _tmp5_, (void**) (&self->priv->_keys));
1584 static GeeCollection* gee_hash_map_real_get_values (GeeAbstractMap* base) {
1585 GeeCollection* result;
1587 GeeCollection* _tmp0_;
1588 GeeCollection* _tmp1_;
1589 GeeCollection* values;
1590 GeeCollection* _tmp2_;
1591 self = (GeeHashMap*) base;
1592 _tmp0_ = self->priv->_values;
1593 _tmp1_ = _g_object_ref0 (_tmp0_);
1595 _tmp2_ = self->priv->_values;
1596 if (_tmp2_ == NULL) {
1597 GeeHashMapValueCollection* _tmp3_;
1598 GeeCollection* _tmp4_;
1599 GeeCollection* _tmp5_;
1600 _tmp3_ = gee_hash_map_value_collection_new (self->priv->k_type, (GBoxedCopyFunc) self->priv->k_dup_func, self->priv->k_destroy_func, self->priv->v_type, (GBoxedCopyFunc) self->priv->v_dup_func, self->priv->v_destroy_func, self);
1601 _g_object_unref0 (values);
1602 values = (GeeCollection*) _tmp3_;
1604 self->priv->_values = _tmp4_;
1606 g_object_add_weak_pointer ((GObject*) _tmp5_, (void**) (&self->priv->_values));
1613 static GeeSet* gee_hash_map_real_get_entries (GeeAbstractMap* base) {
1620 self = (GeeHashMap*) base;
1621 _tmp0_ = self->priv->_entries;
1622 _tmp1_ = _g_object_ref0 (_tmp0_);
1624 _tmp2_ = self->priv->_entries;
1625 if (_tmp2_ == NULL) {
1626 GeeHashMapEntrySet* _tmp3_;
1629 _tmp3_ = gee_hash_map_entry_set_new (self->priv->k_type, (GBoxedCopyFunc) self->priv->k_dup_func, self->priv->k_destroy_func, self->priv->v_type, (GBoxedCopyFunc) self->priv->v_dup_func, self->priv->v_destroy_func, self);
1630 _g_object_unref0 (entries);
1631 entries = (GeeSet*) _tmp3_;
1633 self->priv->_entries = _tmp4_;
1635 g_object_add_weak_pointer ((GObject*) _tmp5_, (void**) (&self->priv->_entries));
1642 GHashFunc gee_hash_map_get_key_hash_func (GeeHashMap* self) {
1645 g_return_val_if_fail (self != NULL, NULL);
1646 _tmp0_ = self->priv->_key_hash_func;
1652 static void gee_hash_map_set_key_hash_func (GeeHashMap* self, GHashFunc value) {
1654 g_return_if_fail (self != NULL);
1656 self->priv->_key_hash_func = _tmp0_;
1657 g_object_notify ((GObject *) self, "key-hash-func");
1661 GEqualFunc gee_hash_map_get_key_equal_func (GeeHashMap* self) {
1664 g_return_val_if_fail (self != NULL, NULL);
1665 _tmp0_ = self->priv->_key_equal_func;
1671 static void gee_hash_map_set_key_equal_func (GeeHashMap* self, GEqualFunc value) {
1673 g_return_if_fail (self != NULL);
1675 self->priv->_key_equal_func = _tmp0_;
1676 g_object_notify ((GObject *) self, "key-equal-func");
1680 GEqualFunc gee_hash_map_get_value_equal_func (GeeHashMap* self) {
1683 g_return_val_if_fail (self != NULL, NULL);
1684 _tmp0_ = self->priv->_value_equal_func;
1690 static void gee_hash_map_set_value_equal_func (GeeHashMap* self, GEqualFunc value) {
1692 g_return_if_fail (self != NULL);
1694 self->priv->_value_equal_func = _tmp0_;
1695 g_object_notify ((GObject *) self, "value-equal-func");
1699 static GeeHashMapNode* gee_hash_map_node_new (gpointer k, gpointer v, guint hash) {
1700 GeeHashMapNode* self;
1704 self = g_slice_new0 (GeeHashMapNode);
1705 gee_hash_map_node_instance_init (self);
1711 self->value = _tmp1_;
1713 self->key_hash = _tmp2_;
1719 static void gee_hash_map_node_instance_init (GeeHashMapNode * self) {
1723 static void gee_hash_map_node_free (GeeHashMapNode* self) {
1724 _gee_hash_map_node_free0 (self->next);
1725 g_slice_free (GeeHashMapNode, self);
1729 static GeeMapEntry* gee_hash_map_entry_entry_for (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMapNode* node) {
1730 GeeMapEntry* result = NULL;
1731 GeeHashMapNode* _tmp0_;
1732 GeeMapEntry* _tmp1_;
1733 GeeMapEntry* _tmp2_;
1734 GeeMapEntry* _result_;
1735 GeeHashMapNode* _tmp3_;
1736 GeeMapEntry* _tmp4_;
1737 g_return_val_if_fail (node != NULL, NULL);
1739 _tmp1_ = _tmp0_->entry;
1740 _tmp2_ = _g_object_ref0 (_tmp1_);
1743 _tmp4_ = _tmp3_->entry;
1744 if (_tmp4_ == NULL) {
1745 GeeHashMapNode* _tmp5_;
1746 GeeHashMapEntry* _tmp6_;
1747 GeeHashMapNode* _tmp7_;
1748 GeeMapEntry* _tmp8_;
1749 GeeMapEntry* _tmp9_;
1750 GeeHashMapNode* _tmp10_;
1752 _tmp6_ = gee_hash_map_entry_new (k_type, (GBoxedCopyFunc) k_dup_func, k_destroy_func, v_type, (GBoxedCopyFunc) v_dup_func, v_destroy_func, _tmp5_);
1753 _g_object_unref0 (_result_);
1754 _result_ = (GeeMapEntry*) _tmp6_;
1757 _tmp7_->entry = _tmp8_;
1760 g_object_add_weak_pointer ((GObject*) _tmp9_, (void**) (&_tmp10_->entry));
1767 static GeeHashMapEntry* gee_hash_map_entry_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, GeeHashMapNode* node) {
1768 GeeHashMapEntry * self = NULL;
1769 GeeHashMapNode* _tmp0_;
1770 g_return_val_if_fail (node != NULL, NULL);
1771 self = (GeeHashMapEntry*) gee_map_entry_construct (object_type, k_type, (GBoxedCopyFunc) k_dup_func, k_destroy_func, v_type, (GBoxedCopyFunc) v_dup_func, v_destroy_func);
1772 self->priv->k_type = k_type;
1773 self->priv->k_dup_func = k_dup_func;
1774 self->priv->k_destroy_func = k_destroy_func;
1775 self->priv->v_type = v_type;
1776 self->priv->v_dup_func = v_dup_func;
1777 self->priv->v_destroy_func = v_destroy_func;
1779 self->priv->_node = _tmp0_;
1784 static GeeHashMapEntry* gee_hash_map_entry_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMapNode* node) {
1785 return gee_hash_map_entry_construct (GEE_HASH_MAP_TYPE_ENTRY, k_type, k_dup_func, k_destroy_func, v_type, v_dup_func, v_destroy_func, node);
1789 static gconstpointer gee_hash_map_entry_real_get_key (GeeMapEntry* base) {
1790 gconstpointer result;
1791 GeeHashMapEntry* self;
1792 GeeHashMapNode* _tmp0_;
1793 gconstpointer _tmp1_;
1794 self = (GeeHashMapEntry*) base;
1795 _tmp0_ = self->priv->_node;
1796 _tmp1_ = _tmp0_->key;
1802 static gconstpointer gee_hash_map_entry_real_get_value (GeeMapEntry* base) {
1803 gconstpointer result;
1804 GeeHashMapEntry* self;
1805 GeeHashMapNode* _tmp0_;
1806 gconstpointer _tmp1_;
1807 self = (GeeHashMapEntry*) base;
1808 _tmp0_ = self->priv->_node;
1809 _tmp1_ = _tmp0_->value;
1815 static void gee_hash_map_entry_real_set_value (GeeMapEntry* base, gconstpointer value) {
1816 GeeHashMapEntry* self;
1817 GeeHashMapNode* _tmp0_;
1818 gconstpointer _tmp1_;
1820 self = (GeeHashMapEntry*) base;
1821 _tmp0_ = self->priv->_node;
1823 _tmp2_ = ((_tmp1_ != NULL) && (self->priv->v_dup_func != NULL)) ? self->priv->v_dup_func ((gpointer) _tmp1_) : ((gpointer) _tmp1_);
1824 ((_tmp0_->value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_tmp0_->value = (self->priv->v_destroy_func (_tmp0_->value), NULL));
1825 _tmp0_->value = _tmp2_;
1826 g_object_notify ((GObject *) self, "value");
1830 static void gee_hash_map_entry_class_init (GeeHashMapEntryClass * klass) {
1831 gee_hash_map_entry_parent_class = g_type_class_peek_parent (klass);
1832 g_type_class_add_private (klass, sizeof (GeeHashMapEntryPrivate));
1833 GEE_MAP_ENTRY_CLASS (klass)->get_key = gee_hash_map_entry_real_get_key;
1834 GEE_MAP_ENTRY_CLASS (klass)->get_value = gee_hash_map_entry_real_get_value;
1835 GEE_MAP_ENTRY_CLASS (klass)->set_value = gee_hash_map_entry_real_set_value;
1836 G_OBJECT_CLASS (klass)->get_property = _vala_gee_hash_map_entry_get_property;
1837 G_OBJECT_CLASS (klass)->set_property = _vala_gee_hash_map_entry_set_property;
1838 G_OBJECT_CLASS (klass)->finalize = gee_hash_map_entry_finalize;
1839 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_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));
1840 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_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));
1841 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_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));
1842 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_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));
1843 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_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));
1844 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_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));
1845 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_KEY, g_param_spec_pointer ("key", "key", "key", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
1846 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_VALUE, g_param_spec_pointer ("value", "value", "value", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
1850 static void gee_hash_map_entry_instance_init (GeeHashMapEntry * self) {
1851 self->priv = GEE_HASH_MAP_ENTRY_GET_PRIVATE (self);
1855 static void gee_hash_map_entry_finalize (GObject* obj) {
1856 GeeHashMapEntry * self;
1857 self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_HASH_MAP_TYPE_ENTRY, GeeHashMapEntry);
1858 G_OBJECT_CLASS (gee_hash_map_entry_parent_class)->finalize (obj);
1862 static GType gee_hash_map_entry_get_type (void) {
1863 static volatile gsize gee_hash_map_entry_type_id__volatile = 0;
1864 if (g_once_init_enter (&gee_hash_map_entry_type_id__volatile)) {
1865 static const GTypeInfo g_define_type_info = { sizeof (GeeHashMapEntryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_hash_map_entry_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeHashMapEntry), 0, (GInstanceInitFunc) gee_hash_map_entry_instance_init, NULL };
1866 GType gee_hash_map_entry_type_id;
1867 gee_hash_map_entry_type_id = g_type_register_static (GEE_MAP_TYPE_ENTRY, "GeeHashMapEntry", &g_define_type_info, 0);
1868 g_once_init_leave (&gee_hash_map_entry_type_id__volatile, gee_hash_map_entry_type_id);
1870 return gee_hash_map_entry_type_id__volatile;
1874 static void _vala_gee_hash_map_entry_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
1875 GeeHashMapEntry * self;
1876 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_ENTRY, GeeHashMapEntry);
1877 switch (property_id) {
1878 case GEE_HASH_MAP_ENTRY_KEY:
1879 g_value_set_pointer (value, gee_map_entry_get_key ((GeeMapEntry*) self));
1881 case GEE_HASH_MAP_ENTRY_VALUE:
1882 g_value_set_pointer (value, gee_map_entry_get_value ((GeeMapEntry*) self));
1885 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
1891 static void _vala_gee_hash_map_entry_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
1892 GeeHashMapEntry * self;
1893 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_ENTRY, GeeHashMapEntry);
1894 switch (property_id) {
1895 case GEE_HASH_MAP_ENTRY_VALUE:
1896 gee_map_entry_set_value ((GeeMapEntry*) self, g_value_get_pointer (value));
1898 case GEE_HASH_MAP_ENTRY_K_TYPE:
1899 self->priv->k_type = g_value_get_gtype (value);
1901 case GEE_HASH_MAP_ENTRY_K_DUP_FUNC:
1902 self->priv->k_dup_func = g_value_get_pointer (value);
1904 case GEE_HASH_MAP_ENTRY_K_DESTROY_FUNC:
1905 self->priv->k_destroy_func = g_value_get_pointer (value);
1907 case GEE_HASH_MAP_ENTRY_V_TYPE:
1908 self->priv->v_type = g_value_get_gtype (value);
1910 case GEE_HASH_MAP_ENTRY_V_DUP_FUNC:
1911 self->priv->v_dup_func = g_value_get_pointer (value);
1913 case GEE_HASH_MAP_ENTRY_V_DESTROY_FUNC:
1914 self->priv->v_destroy_func = g_value_get_pointer (value);
1917 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
1923 static GeeHashMapKeySet* gee_hash_map_key_set_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, GeeHashMap* map) {
1924 GeeHashMapKeySet * self = NULL;
1927 g_return_val_if_fail (map != NULL, NULL);
1928 self = (GeeHashMapKeySet*) gee_abstract_set_construct (object_type, k_type, (GBoxedCopyFunc) k_dup_func, k_destroy_func);
1929 self->priv->k_type = k_type;
1930 self->priv->k_dup_func = k_dup_func;
1931 self->priv->k_destroy_func = k_destroy_func;
1932 self->priv->v_type = v_type;
1933 self->priv->v_dup_func = v_dup_func;
1934 self->priv->v_destroy_func = v_destroy_func;
1936 _tmp1_ = _g_object_ref0 (_tmp0_);
1937 _g_object_unref0 (self->priv->_map);
1938 self->priv->_map = _tmp1_;
1943 static GeeHashMapKeySet* gee_hash_map_key_set_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map) {
1944 return gee_hash_map_key_set_construct (GEE_HASH_MAP_TYPE_KEY_SET, k_type, k_dup_func, k_destroy_func, v_type, v_dup_func, v_destroy_func, map);
1948 static GeeIterator* gee_hash_map_key_set_real_iterator (GeeAbstractCollection* base) {
1949 GeeHashMapKeySet * self;
1950 GeeIterator* result = NULL;
1952 GeeHashMapKeyIterator* _tmp1_;
1953 self = (GeeHashMapKeySet*) base;
1954 _tmp0_ = self->priv->_map;
1955 _tmp1_ = gee_hash_map_key_iterator_new (self->priv->k_type, (GBoxedCopyFunc) self->priv->k_dup_func, self->priv->k_destroy_func, self->priv->v_type, (GBoxedCopyFunc) self->priv->v_dup_func, self->priv->v_destroy_func, _tmp0_);
1956 result = (GeeIterator*) _tmp1_;
1961 static gboolean gee_hash_map_key_set_real_add (GeeAbstractCollection* base, gconstpointer key) {
1962 GeeHashMapKeySet * self;
1963 gboolean result = FALSE;
1964 self = (GeeHashMapKeySet*) base;
1965 g_assert_not_reached ();
1970 static void gee_hash_map_key_set_real_clear (GeeAbstractCollection* base) {
1971 GeeHashMapKeySet * self;
1972 self = (GeeHashMapKeySet*) base;
1973 g_assert_not_reached ();
1977 static gboolean gee_hash_map_key_set_real_remove (GeeAbstractCollection* base, gconstpointer key) {
1978 GeeHashMapKeySet * self;
1979 gboolean result = FALSE;
1980 self = (GeeHashMapKeySet*) base;
1981 g_assert_not_reached ();
1986 static gboolean gee_hash_map_key_set_real_contains (GeeAbstractCollection* base, gconstpointer key) {
1987 GeeHashMapKeySet * self;
1988 gboolean result = FALSE;
1990 gconstpointer _tmp1_;
1991 gboolean _tmp2_ = FALSE;
1992 self = (GeeHashMapKeySet*) base;
1993 _tmp0_ = self->priv->_map;
1995 _tmp2_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp0_, _tmp1_);
2001 static gboolean gee_hash_map_key_set_real_add_all (GeeAbstractCollection* base, GeeCollection* collection) {
2002 GeeHashMapKeySet * self;
2003 gboolean result = FALSE;
2004 self = (GeeHashMapKeySet*) base;
2005 g_return_val_if_fail (collection != NULL, FALSE);
2006 g_assert_not_reached ();
2011 static gboolean gee_hash_map_key_set_real_remove_all (GeeAbstractCollection* base, GeeCollection* collection) {
2012 GeeHashMapKeySet * self;
2013 gboolean result = FALSE;
2014 self = (GeeHashMapKeySet*) base;
2015 g_return_val_if_fail (collection != NULL, FALSE);
2016 g_assert_not_reached ();
2021 static gboolean gee_hash_map_key_set_real_retain_all (GeeAbstractCollection* base, GeeCollection* collection) {
2022 GeeHashMapKeySet * self;
2023 gboolean result = FALSE;
2024 self = (GeeHashMapKeySet*) base;
2025 g_return_val_if_fail (collection != NULL, FALSE);
2026 g_assert_not_reached ();
2031 static gint gee_hash_map_key_set_real_get_size (GeeAbstractCollection* base) {
2033 GeeHashMapKeySet* self;
2037 self = (GeeHashMapKeySet*) base;
2038 _tmp0_ = self->priv->_map;
2039 _tmp1_ = gee_abstract_map_get_size ((GeeMap*) _tmp0_);
2046 static void gee_hash_map_key_set_class_init (GeeHashMapKeySetClass * klass) {
2047 gee_hash_map_key_set_parent_class = g_type_class_peek_parent (klass);
2048 g_type_class_add_private (klass, sizeof (GeeHashMapKeySetPrivate));
2049 GEE_ABSTRACT_COLLECTION_CLASS (klass)->iterator = gee_hash_map_key_set_real_iterator;
2050 GEE_ABSTRACT_COLLECTION_CLASS (klass)->add = gee_hash_map_key_set_real_add;
2051 GEE_ABSTRACT_COLLECTION_CLASS (klass)->clear = gee_hash_map_key_set_real_clear;
2052 GEE_ABSTRACT_COLLECTION_CLASS (klass)->remove = gee_hash_map_key_set_real_remove;
2053 GEE_ABSTRACT_COLLECTION_CLASS (klass)->contains = gee_hash_map_key_set_real_contains;
2054 GEE_ABSTRACT_COLLECTION_CLASS (klass)->add_all = gee_hash_map_key_set_real_add_all;
2055 GEE_ABSTRACT_COLLECTION_CLASS (klass)->remove_all = gee_hash_map_key_set_real_remove_all;
2056 GEE_ABSTRACT_COLLECTION_CLASS (klass)->retain_all = gee_hash_map_key_set_real_retain_all;
2057 GEE_ABSTRACT_COLLECTION_CLASS (klass)->get_size = gee_hash_map_key_set_real_get_size;
2058 G_OBJECT_CLASS (klass)->get_property = _vala_gee_hash_map_key_set_get_property;
2059 G_OBJECT_CLASS (klass)->set_property = _vala_gee_hash_map_key_set_set_property;
2060 G_OBJECT_CLASS (klass)->finalize = gee_hash_map_key_set_finalize;
2061 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_SET_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));
2062 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_SET_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));
2063 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_SET_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));
2064 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_SET_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));
2065 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_SET_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));
2066 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_SET_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));
2067 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_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));
2071 static void gee_hash_map_key_set_instance_init (GeeHashMapKeySet * self) {
2072 self->priv = GEE_HASH_MAP_KEY_SET_GET_PRIVATE (self);
2076 static void gee_hash_map_key_set_finalize (GObject* obj) {
2077 GeeHashMapKeySet * self;
2078 self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_HASH_MAP_TYPE_KEY_SET, GeeHashMapKeySet);
2079 _g_object_unref0 (self->priv->_map);
2080 G_OBJECT_CLASS (gee_hash_map_key_set_parent_class)->finalize (obj);
2084 static GType gee_hash_map_key_set_get_type (void) {
2085 static volatile gsize gee_hash_map_key_set_type_id__volatile = 0;
2086 if (g_once_init_enter (&gee_hash_map_key_set_type_id__volatile)) {
2087 static const GTypeInfo g_define_type_info = { sizeof (GeeHashMapKeySetClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_hash_map_key_set_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeHashMapKeySet), 0, (GInstanceInitFunc) gee_hash_map_key_set_instance_init, NULL };
2088 GType gee_hash_map_key_set_type_id;
2089 gee_hash_map_key_set_type_id = g_type_register_static (GEE_TYPE_ABSTRACT_SET, "GeeHashMapKeySet", &g_define_type_info, 0);
2090 g_once_init_leave (&gee_hash_map_key_set_type_id__volatile, gee_hash_map_key_set_type_id);
2092 return gee_hash_map_key_set_type_id__volatile;
2096 static void _vala_gee_hash_map_key_set_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
2097 GeeHashMapKeySet * self;
2098 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_KEY_SET, GeeHashMapKeySet);
2099 switch (property_id) {
2100 case GEE_HASH_MAP_KEY_SET_SIZE:
2101 g_value_set_int (value, gee_abstract_collection_get_size ((GeeAbstractCollection*) self));
2104 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2110 static void _vala_gee_hash_map_key_set_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
2111 GeeHashMapKeySet * self;
2112 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_KEY_SET, GeeHashMapKeySet);
2113 switch (property_id) {
2114 case GEE_HASH_MAP_KEY_SET_K_TYPE:
2115 self->priv->k_type = g_value_get_gtype (value);
2117 case GEE_HASH_MAP_KEY_SET_K_DUP_FUNC:
2118 self->priv->k_dup_func = g_value_get_pointer (value);
2120 case GEE_HASH_MAP_KEY_SET_K_DESTROY_FUNC:
2121 self->priv->k_destroy_func = g_value_get_pointer (value);
2123 case GEE_HASH_MAP_KEY_SET_V_TYPE:
2124 self->priv->v_type = g_value_get_gtype (value);
2126 case GEE_HASH_MAP_KEY_SET_V_DUP_FUNC:
2127 self->priv->v_dup_func = g_value_get_pointer (value);
2129 case GEE_HASH_MAP_KEY_SET_V_DESTROY_FUNC:
2130 self->priv->v_destroy_func = g_value_get_pointer (value);
2133 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2139 static GeeHashMapValueCollection* gee_hash_map_value_collection_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, GeeHashMap* map) {
2140 GeeHashMapValueCollection * self = NULL;
2143 g_return_val_if_fail (map != NULL, NULL);
2144 self = (GeeHashMapValueCollection*) gee_abstract_collection_construct (object_type, v_type, (GBoxedCopyFunc) v_dup_func, v_destroy_func);
2145 self->priv->k_type = k_type;
2146 self->priv->k_dup_func = k_dup_func;
2147 self->priv->k_destroy_func = k_destroy_func;
2148 self->priv->v_type = v_type;
2149 self->priv->v_dup_func = v_dup_func;
2150 self->priv->v_destroy_func = v_destroy_func;
2152 _tmp1_ = _g_object_ref0 (_tmp0_);
2153 _g_object_unref0 (self->priv->_map);
2154 self->priv->_map = _tmp1_;
2159 static GeeHashMapValueCollection* gee_hash_map_value_collection_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map) {
2160 return gee_hash_map_value_collection_construct (GEE_HASH_MAP_TYPE_VALUE_COLLECTION, k_type, k_dup_func, k_destroy_func, v_type, v_dup_func, v_destroy_func, map);
2164 static GeeIterator* gee_hash_map_value_collection_real_iterator (GeeAbstractCollection* base) {
2165 GeeHashMapValueCollection * self;
2166 GeeIterator* result = NULL;
2168 GeeHashMapValueIterator* _tmp1_;
2169 self = (GeeHashMapValueCollection*) base;
2170 _tmp0_ = self->priv->_map;
2171 _tmp1_ = gee_hash_map_value_iterator_new (self->priv->k_type, (GBoxedCopyFunc) self->priv->k_dup_func, self->priv->k_destroy_func, self->priv->v_type, (GBoxedCopyFunc) self->priv->v_dup_func, self->priv->v_destroy_func, _tmp0_);
2172 result = (GeeIterator*) _tmp1_;
2177 static gboolean gee_hash_map_value_collection_real_add (GeeAbstractCollection* base, gconstpointer value) {
2178 GeeHashMapValueCollection * self;
2179 gboolean result = FALSE;
2180 self = (GeeHashMapValueCollection*) base;
2181 g_assert_not_reached ();
2186 static void gee_hash_map_value_collection_real_clear (GeeAbstractCollection* base) {
2187 GeeHashMapValueCollection * self;
2188 self = (GeeHashMapValueCollection*) base;
2189 g_assert_not_reached ();
2193 static gboolean gee_hash_map_value_collection_real_remove (GeeAbstractCollection* base, gconstpointer value) {
2194 GeeHashMapValueCollection * self;
2195 gboolean result = FALSE;
2196 self = (GeeHashMapValueCollection*) base;
2197 g_assert_not_reached ();
2202 static gboolean gee_hash_map_value_collection_real_contains (GeeAbstractCollection* base, gconstpointer value) {
2203 GeeHashMapValueCollection * self;
2204 gboolean result = FALSE;
2205 GeeIterator* _tmp0_ = NULL;
2207 self = (GeeHashMapValueCollection*) base;
2208 _tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self);
2211 GeeIterator* _tmp1_;
2212 gboolean _tmp2_ = FALSE;
2216 GeeIterator* _tmp6_;
2217 gpointer _tmp7_ = NULL;
2219 gconstpointer _tmp9_;
2220 gboolean _tmp10_ = FALSE;
2223 _tmp2_ = gee_iterator_next (_tmp1_);
2227 _tmp3_ = self->priv->_map;
2228 _tmp4_ = gee_hash_map_get_value_equal_func (_tmp3_);
2231 _tmp7_ = gee_iterator_get (_tmp6_);
2234 _tmp10_ = _tmp5_ (_tmp8_, _tmp9_);
2236 ((_tmp8_ == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_tmp8_ = (self->priv->v_destroy_func (_tmp8_), NULL));
2239 _g_object_unref0 (it);
2244 _g_object_unref0 (it);
2249 static gboolean gee_hash_map_value_collection_real_add_all (GeeAbstractCollection* base, GeeCollection* collection) {
2250 GeeHashMapValueCollection * self;
2251 gboolean result = FALSE;
2252 self = (GeeHashMapValueCollection*) base;
2253 g_return_val_if_fail (collection != NULL, FALSE);
2254 g_assert_not_reached ();
2259 static gboolean gee_hash_map_value_collection_real_remove_all (GeeAbstractCollection* base, GeeCollection* collection) {
2260 GeeHashMapValueCollection * self;
2261 gboolean result = FALSE;
2262 self = (GeeHashMapValueCollection*) base;
2263 g_return_val_if_fail (collection != NULL, FALSE);
2264 g_assert_not_reached ();
2269 static gboolean gee_hash_map_value_collection_real_retain_all (GeeAbstractCollection* base, GeeCollection* collection) {
2270 GeeHashMapValueCollection * self;
2271 gboolean result = FALSE;
2272 self = (GeeHashMapValueCollection*) base;
2273 g_return_val_if_fail (collection != NULL, FALSE);
2274 g_assert_not_reached ();
2279 static gint gee_hash_map_value_collection_real_get_size (GeeAbstractCollection* base) {
2281 GeeHashMapValueCollection* self;
2285 self = (GeeHashMapValueCollection*) base;
2286 _tmp0_ = self->priv->_map;
2287 _tmp1_ = gee_abstract_map_get_size ((GeeMap*) _tmp0_);
2294 static void gee_hash_map_value_collection_class_init (GeeHashMapValueCollectionClass * klass) {
2295 gee_hash_map_value_collection_parent_class = g_type_class_peek_parent (klass);
2296 g_type_class_add_private (klass, sizeof (GeeHashMapValueCollectionPrivate));
2297 GEE_ABSTRACT_COLLECTION_CLASS (klass)->iterator = gee_hash_map_value_collection_real_iterator;
2298 GEE_ABSTRACT_COLLECTION_CLASS (klass)->add = gee_hash_map_value_collection_real_add;
2299 GEE_ABSTRACT_COLLECTION_CLASS (klass)->clear = gee_hash_map_value_collection_real_clear;
2300 GEE_ABSTRACT_COLLECTION_CLASS (klass)->remove = gee_hash_map_value_collection_real_remove;
2301 GEE_ABSTRACT_COLLECTION_CLASS (klass)->contains = gee_hash_map_value_collection_real_contains;
2302 GEE_ABSTRACT_COLLECTION_CLASS (klass)->add_all = gee_hash_map_value_collection_real_add_all;
2303 GEE_ABSTRACT_COLLECTION_CLASS (klass)->remove_all = gee_hash_map_value_collection_real_remove_all;
2304 GEE_ABSTRACT_COLLECTION_CLASS (klass)->retain_all = gee_hash_map_value_collection_real_retain_all;
2305 GEE_ABSTRACT_COLLECTION_CLASS (klass)->get_size = gee_hash_map_value_collection_real_get_size;
2306 G_OBJECT_CLASS (klass)->get_property = _vala_gee_hash_map_value_collection_get_property;
2307 G_OBJECT_CLASS (klass)->set_property = _vala_gee_hash_map_value_collection_set_property;
2308 G_OBJECT_CLASS (klass)->finalize = gee_hash_map_value_collection_finalize;
2309 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_COLLECTION_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));
2310 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_COLLECTION_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));
2311 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_COLLECTION_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));
2312 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_COLLECTION_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));
2313 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_COLLECTION_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));
2314 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_COLLECTION_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));
2315 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_COLLECTION_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));
2319 static void gee_hash_map_value_collection_instance_init (GeeHashMapValueCollection * self) {
2320 self->priv = GEE_HASH_MAP_VALUE_COLLECTION_GET_PRIVATE (self);
2324 static void gee_hash_map_value_collection_finalize (GObject* obj) {
2325 GeeHashMapValueCollection * self;
2326 self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_HASH_MAP_TYPE_VALUE_COLLECTION, GeeHashMapValueCollection);
2327 _g_object_unref0 (self->priv->_map);
2328 G_OBJECT_CLASS (gee_hash_map_value_collection_parent_class)->finalize (obj);
2332 static GType gee_hash_map_value_collection_get_type (void) {
2333 static volatile gsize gee_hash_map_value_collection_type_id__volatile = 0;
2334 if (g_once_init_enter (&gee_hash_map_value_collection_type_id__volatile)) {
2335 static const GTypeInfo g_define_type_info = { sizeof (GeeHashMapValueCollectionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_hash_map_value_collection_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeHashMapValueCollection), 0, (GInstanceInitFunc) gee_hash_map_value_collection_instance_init, NULL };
2336 GType gee_hash_map_value_collection_type_id;
2337 gee_hash_map_value_collection_type_id = g_type_register_static (GEE_TYPE_ABSTRACT_COLLECTION, "GeeHashMapValueCollection", &g_define_type_info, 0);
2338 g_once_init_leave (&gee_hash_map_value_collection_type_id__volatile, gee_hash_map_value_collection_type_id);
2340 return gee_hash_map_value_collection_type_id__volatile;
2344 static void _vala_gee_hash_map_value_collection_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
2345 GeeHashMapValueCollection * self;
2346 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_VALUE_COLLECTION, GeeHashMapValueCollection);
2347 switch (property_id) {
2348 case GEE_HASH_MAP_VALUE_COLLECTION_SIZE:
2349 g_value_set_int (value, gee_abstract_collection_get_size ((GeeAbstractCollection*) self));
2352 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2358 static void _vala_gee_hash_map_value_collection_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
2359 GeeHashMapValueCollection * self;
2360 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_VALUE_COLLECTION, GeeHashMapValueCollection);
2361 switch (property_id) {
2362 case GEE_HASH_MAP_VALUE_COLLECTION_K_TYPE:
2363 self->priv->k_type = g_value_get_gtype (value);
2365 case GEE_HASH_MAP_VALUE_COLLECTION_K_DUP_FUNC:
2366 self->priv->k_dup_func = g_value_get_pointer (value);
2368 case GEE_HASH_MAP_VALUE_COLLECTION_K_DESTROY_FUNC:
2369 self->priv->k_destroy_func = g_value_get_pointer (value);
2371 case GEE_HASH_MAP_VALUE_COLLECTION_V_TYPE:
2372 self->priv->v_type = g_value_get_gtype (value);
2374 case GEE_HASH_MAP_VALUE_COLLECTION_V_DUP_FUNC:
2375 self->priv->v_dup_func = g_value_get_pointer (value);
2377 case GEE_HASH_MAP_VALUE_COLLECTION_V_DESTROY_FUNC:
2378 self->priv->v_destroy_func = g_value_get_pointer (value);
2381 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2387 static GeeHashMapEntrySet* gee_hash_map_entry_set_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, GeeHashMap* map) {
2388 GeeHashMapEntrySet * self = NULL;
2391 g_return_val_if_fail (map != NULL, NULL);
2392 self = (GeeHashMapEntrySet*) gee_abstract_set_construct (object_type, GEE_MAP_TYPE_ENTRY, (GBoxedCopyFunc) g_object_ref, g_object_unref);
2393 self->priv->k_type = k_type;
2394 self->priv->k_dup_func = k_dup_func;
2395 self->priv->k_destroy_func = k_destroy_func;
2396 self->priv->v_type = v_type;
2397 self->priv->v_dup_func = v_dup_func;
2398 self->priv->v_destroy_func = v_destroy_func;
2400 _tmp1_ = _g_object_ref0 (_tmp0_);
2401 _g_object_unref0 (self->priv->_map);
2402 self->priv->_map = _tmp1_;
2407 static GeeHashMapEntrySet* gee_hash_map_entry_set_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map) {
2408 return gee_hash_map_entry_set_construct (GEE_HASH_MAP_TYPE_ENTRY_SET, k_type, k_dup_func, k_destroy_func, v_type, v_dup_func, v_destroy_func, map);
2412 static GeeIterator* gee_hash_map_entry_set_real_iterator (GeeAbstractCollection* base) {
2413 GeeHashMapEntrySet * self;
2414 GeeIterator* result = NULL;
2416 GeeHashMapEntryIterator* _tmp1_;
2417 self = (GeeHashMapEntrySet*) base;
2418 _tmp0_ = self->priv->_map;
2419 _tmp1_ = gee_hash_map_entry_iterator_new (self->priv->k_type, (GBoxedCopyFunc) self->priv->k_dup_func, self->priv->k_destroy_func, self->priv->v_type, (GBoxedCopyFunc) self->priv->v_dup_func, self->priv->v_destroy_func, _tmp0_);
2420 result = (GeeIterator*) _tmp1_;
2425 static gboolean gee_hash_map_entry_set_real_add (GeeAbstractCollection* base, GeeMapEntry* entry) {
2426 GeeHashMapEntrySet * self;
2427 gboolean result = FALSE;
2428 self = (GeeHashMapEntrySet*) base;
2429 g_return_val_if_fail (entry != NULL, FALSE);
2430 g_assert_not_reached ();
2435 static void gee_hash_map_entry_set_real_clear (GeeAbstractCollection* base) {
2436 GeeHashMapEntrySet * self;
2437 self = (GeeHashMapEntrySet*) base;
2438 g_assert_not_reached ();
2442 static gboolean gee_hash_map_entry_set_real_remove (GeeAbstractCollection* base, GeeMapEntry* entry) {
2443 GeeHashMapEntrySet * self;
2444 gboolean result = FALSE;
2445 self = (GeeHashMapEntrySet*) base;
2446 g_return_val_if_fail (entry != NULL, FALSE);
2447 g_assert_not_reached ();
2452 static gboolean gee_hash_map_entry_set_real_contains (GeeAbstractCollection* base, GeeMapEntry* entry) {
2453 GeeHashMapEntrySet * self;
2454 gboolean result = FALSE;
2456 GeeMapEntry* _tmp1_;
2457 gconstpointer _tmp2_;
2458 gconstpointer _tmp3_;
2459 GeeMapEntry* _tmp4_;
2460 gconstpointer _tmp5_;
2461 gconstpointer _tmp6_;
2462 gboolean _tmp7_ = FALSE;
2463 self = (GeeHashMapEntrySet*) base;
2464 g_return_val_if_fail (entry != NULL, FALSE);
2465 _tmp0_ = self->priv->_map;
2467 _tmp2_ = gee_map_entry_get_key (_tmp1_);
2470 _tmp5_ = gee_map_entry_get_value (_tmp4_);
2472 _tmp7_ = gee_abstract_map_has ((GeeAbstractMap*) _tmp0_, _tmp3_, _tmp6_);
2478 static gboolean gee_hash_map_entry_set_real_add_all (GeeAbstractCollection* base, GeeCollection* entries) {
2479 GeeHashMapEntrySet * self;
2480 gboolean result = FALSE;
2481 self = (GeeHashMapEntrySet*) base;
2482 g_return_val_if_fail (entries != NULL, FALSE);
2483 g_assert_not_reached ();
2488 static gboolean gee_hash_map_entry_set_real_remove_all (GeeAbstractCollection* base, GeeCollection* entries) {
2489 GeeHashMapEntrySet * self;
2490 gboolean result = FALSE;
2491 self = (GeeHashMapEntrySet*) base;
2492 g_return_val_if_fail (entries != NULL, FALSE);
2493 g_assert_not_reached ();
2498 static gboolean gee_hash_map_entry_set_real_retain_all (GeeAbstractCollection* base, GeeCollection* entries) {
2499 GeeHashMapEntrySet * self;
2500 gboolean result = FALSE;
2501 self = (GeeHashMapEntrySet*) base;
2502 g_return_val_if_fail (entries != NULL, FALSE);
2503 g_assert_not_reached ();
2508 static gint gee_hash_map_entry_set_real_get_size (GeeAbstractCollection* base) {
2510 GeeHashMapEntrySet* self;
2514 self = (GeeHashMapEntrySet*) base;
2515 _tmp0_ = self->priv->_map;
2516 _tmp1_ = gee_abstract_map_get_size ((GeeMap*) _tmp0_);
2523 static void gee_hash_map_entry_set_class_init (GeeHashMapEntrySetClass * klass) {
2524 gee_hash_map_entry_set_parent_class = g_type_class_peek_parent (klass);
2525 g_type_class_add_private (klass, sizeof (GeeHashMapEntrySetPrivate));
2526 GEE_ABSTRACT_COLLECTION_CLASS (klass)->iterator = gee_hash_map_entry_set_real_iterator;
2527 GEE_ABSTRACT_COLLECTION_CLASS (klass)->add = gee_hash_map_entry_set_real_add;
2528 GEE_ABSTRACT_COLLECTION_CLASS (klass)->clear = gee_hash_map_entry_set_real_clear;
2529 GEE_ABSTRACT_COLLECTION_CLASS (klass)->remove = gee_hash_map_entry_set_real_remove;
2530 GEE_ABSTRACT_COLLECTION_CLASS (klass)->contains = gee_hash_map_entry_set_real_contains;
2531 GEE_ABSTRACT_COLLECTION_CLASS (klass)->add_all = gee_hash_map_entry_set_real_add_all;
2532 GEE_ABSTRACT_COLLECTION_CLASS (klass)->remove_all = gee_hash_map_entry_set_real_remove_all;
2533 GEE_ABSTRACT_COLLECTION_CLASS (klass)->retain_all = gee_hash_map_entry_set_real_retain_all;
2534 GEE_ABSTRACT_COLLECTION_CLASS (klass)->get_size = gee_hash_map_entry_set_real_get_size;
2535 G_OBJECT_CLASS (klass)->get_property = _vala_gee_hash_map_entry_set_get_property;
2536 G_OBJECT_CLASS (klass)->set_property = _vala_gee_hash_map_entry_set_set_property;
2537 G_OBJECT_CLASS (klass)->finalize = gee_hash_map_entry_set_finalize;
2538 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_SET_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));
2539 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_SET_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));
2540 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_SET_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));
2541 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_SET_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));
2542 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_SET_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));
2543 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_SET_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));
2544 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_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));
2548 static void gee_hash_map_entry_set_instance_init (GeeHashMapEntrySet * self) {
2549 self->priv = GEE_HASH_MAP_ENTRY_SET_GET_PRIVATE (self);
2553 static void gee_hash_map_entry_set_finalize (GObject* obj) {
2554 GeeHashMapEntrySet * self;
2555 self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_HASH_MAP_TYPE_ENTRY_SET, GeeHashMapEntrySet);
2556 _g_object_unref0 (self->priv->_map);
2557 G_OBJECT_CLASS (gee_hash_map_entry_set_parent_class)->finalize (obj);
2561 static GType gee_hash_map_entry_set_get_type (void) {
2562 static volatile gsize gee_hash_map_entry_set_type_id__volatile = 0;
2563 if (g_once_init_enter (&gee_hash_map_entry_set_type_id__volatile)) {
2564 static const GTypeInfo g_define_type_info = { sizeof (GeeHashMapEntrySetClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_hash_map_entry_set_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeHashMapEntrySet), 0, (GInstanceInitFunc) gee_hash_map_entry_set_instance_init, NULL };
2565 GType gee_hash_map_entry_set_type_id;
2566 gee_hash_map_entry_set_type_id = g_type_register_static (GEE_TYPE_ABSTRACT_SET, "GeeHashMapEntrySet", &g_define_type_info, 0);
2567 g_once_init_leave (&gee_hash_map_entry_set_type_id__volatile, gee_hash_map_entry_set_type_id);
2569 return gee_hash_map_entry_set_type_id__volatile;
2573 static void _vala_gee_hash_map_entry_set_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
2574 GeeHashMapEntrySet * self;
2575 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_ENTRY_SET, GeeHashMapEntrySet);
2576 switch (property_id) {
2577 case GEE_HASH_MAP_ENTRY_SET_SIZE:
2578 g_value_set_int (value, gee_abstract_collection_get_size ((GeeAbstractCollection*) self));
2581 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2587 static void _vala_gee_hash_map_entry_set_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
2588 GeeHashMapEntrySet * self;
2589 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_ENTRY_SET, GeeHashMapEntrySet);
2590 switch (property_id) {
2591 case GEE_HASH_MAP_ENTRY_SET_K_TYPE:
2592 self->priv->k_type = g_value_get_gtype (value);
2594 case GEE_HASH_MAP_ENTRY_SET_K_DUP_FUNC:
2595 self->priv->k_dup_func = g_value_get_pointer (value);
2597 case GEE_HASH_MAP_ENTRY_SET_K_DESTROY_FUNC:
2598 self->priv->k_destroy_func = g_value_get_pointer (value);
2600 case GEE_HASH_MAP_ENTRY_SET_V_TYPE:
2601 self->priv->v_type = g_value_get_gtype (value);
2603 case GEE_HASH_MAP_ENTRY_SET_V_DUP_FUNC:
2604 self->priv->v_dup_func = g_value_get_pointer (value);
2606 case GEE_HASH_MAP_ENTRY_SET_V_DESTROY_FUNC:
2607 self->priv->v_destroy_func = g_value_get_pointer (value);
2610 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2616 static GeeHashMapNodeIterator* gee_hash_map_node_iterator_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, GeeHashMap* map) {
2617 GeeHashMapNodeIterator * self = NULL;
2622 g_return_val_if_fail (map != NULL, NULL);
2623 self = (GeeHashMapNodeIterator*) g_object_new (object_type, NULL);
2624 self->priv->k_type = k_type;
2625 self->priv->k_dup_func = k_dup_func;
2626 self->priv->k_destroy_func = k_destroy_func;
2627 self->priv->v_type = v_type;
2628 self->priv->v_dup_func = v_dup_func;
2629 self->priv->v_destroy_func = v_destroy_func;
2631 _tmp1_ = _g_object_ref0 (_tmp0_);
2632 _g_object_unref0 (self->_map);
2633 self->_map = _tmp1_;
2634 _tmp2_ = self->_map;
2635 _tmp3_ = _tmp2_->priv->_stamp;
2636 self->_stamp = _tmp3_;
2641 static gboolean gee_hash_map_node_iterator_next (GeeHashMapNodeIterator* self) {
2642 gboolean result = FALSE;
2646 gboolean _tmp3_ = FALSE;
2647 GeeHashMapNode* _tmp4_;
2648 GeeHashMapNode* _tmp5_;
2649 g_return_val_if_fail (self != NULL, FALSE);
2650 _tmp0_ = self->_stamp;
2651 _tmp1_ = self->_map;
2652 _tmp2_ = _tmp1_->priv->_stamp;
2653 _vala_assert (_tmp0_ == _tmp2_, "_stamp == _map._stamp");
2654 _tmp3_ = gee_hash_map_node_iterator_has_next (self);
2659 _tmp4_ = self->_next;
2660 self->_node = _tmp4_;
2662 _tmp5_ = self->_node;
2663 result = _tmp5_ != NULL;
2668 static gboolean gee_hash_map_node_iterator_has_next (GeeHashMapNodeIterator* self) {
2669 gboolean result = FALSE;
2673 GeeHashMapNode* _tmp3_;
2674 GeeHashMapNode* _tmp19_;
2675 g_return_val_if_fail (self != NULL, FALSE);
2676 _tmp0_ = self->_stamp;
2677 _tmp1_ = self->_map;
2678 _tmp2_ = _tmp1_->priv->_stamp;
2679 _vala_assert (_tmp0_ == _tmp2_, "_stamp == _map._stamp");
2680 _tmp3_ = self->_next;
2681 if (_tmp3_ == NULL) {
2682 GeeHashMapNode* _tmp4_;
2683 GeeHashMapNode* _tmp5_;
2684 _tmp4_ = self->_node;
2685 self->_next = _tmp4_;
2686 _tmp5_ = self->_next;
2687 if (_tmp5_ != NULL) {
2688 GeeHashMapNode* _tmp6_;
2689 GeeHashMapNode* _tmp7_;
2690 _tmp6_ = self->_next;
2691 _tmp7_ = _tmp6_->next;
2692 self->_next = _tmp7_;
2695 gboolean _tmp8_ = FALSE;
2696 GeeHashMapNode* _tmp9_;
2699 GeeHashMap* _tmp15_;
2700 GeeHashMapNode** _tmp16_;
2701 gint _tmp16__length1;
2703 GeeHashMapNode* _tmp18_;
2704 _tmp9_ = self->_next;
2705 if (_tmp9_ == NULL) {
2707 GeeHashMap* _tmp11_;
2709 _tmp10_ = self->priv->_index;
2710 _tmp11_ = self->_map;
2711 _tmp12_ = _tmp11_->priv->_array_size;
2712 _tmp8_ = (_tmp10_ + 1) < _tmp12_;
2720 _tmp14_ = self->priv->_index;
2721 self->priv->_index = _tmp14_ + 1;
2722 _tmp15_ = self->_map;
2723 _tmp16_ = _tmp15_->priv->_nodes;
2724 _tmp16__length1 = _tmp15_->priv->_nodes_length1;
2725 _tmp17_ = self->priv->_index;
2726 _tmp18_ = _tmp16_[_tmp17_];
2727 self->_next = _tmp18_;
2730 _tmp19_ = self->_next;
2731 result = _tmp19_ != NULL;
2736 static gboolean gee_hash_map_node_iterator_first (GeeHashMapNodeIterator* self) {
2737 gboolean result = FALSE;
2744 gboolean _tmp6_ = FALSE;
2745 g_return_val_if_fail (self != NULL, FALSE);
2746 _tmp0_ = self->_stamp;
2747 _tmp1_ = self->_map;
2748 _tmp2_ = _tmp1_->priv->_stamp;
2749 _vala_assert (_tmp0_ == _tmp2_, "_stamp == _map._stamp");
2750 _tmp3_ = self->_map;
2751 _tmp4_ = gee_abstract_map_get_size ((GeeMap*) _tmp3_);
2757 self->priv->_index = -1;
2759 _tmp6_ = gee_hash_map_node_iterator_next (self);
2765 static void gee_hash_map_node_iterator_class_init (GeeHashMapNodeIteratorClass * klass) {
2766 gee_hash_map_node_iterator_parent_class = g_type_class_peek_parent (klass);
2767 g_type_class_add_private (klass, sizeof (GeeHashMapNodeIteratorPrivate));
2768 G_OBJECT_CLASS (klass)->get_property = _vala_gee_hash_map_node_iterator_get_property;
2769 G_OBJECT_CLASS (klass)->set_property = _vala_gee_hash_map_node_iterator_set_property;
2770 G_OBJECT_CLASS (klass)->finalize = gee_hash_map_node_iterator_finalize;
2771 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_NODE_ITERATOR_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));
2772 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_NODE_ITERATOR_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));
2773 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_NODE_ITERATOR_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));
2774 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_NODE_ITERATOR_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));
2775 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_NODE_ITERATOR_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));
2776 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_NODE_ITERATOR_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));
2780 static void gee_hash_map_node_iterator_instance_init (GeeHashMapNodeIterator * self) {
2781 self->priv = GEE_HASH_MAP_NODE_ITERATOR_GET_PRIVATE (self);
2782 self->priv->_index = -1;
2786 static void gee_hash_map_node_iterator_finalize (GObject* obj) {
2787 GeeHashMapNodeIterator * self;
2788 self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_HASH_MAP_TYPE_NODE_ITERATOR, GeeHashMapNodeIterator);
2789 _g_object_unref0 (self->_map);
2790 G_OBJECT_CLASS (gee_hash_map_node_iterator_parent_class)->finalize (obj);
2794 static GType gee_hash_map_node_iterator_get_type (void) {
2795 static volatile gsize gee_hash_map_node_iterator_type_id__volatile = 0;
2796 if (g_once_init_enter (&gee_hash_map_node_iterator_type_id__volatile)) {
2797 static const GTypeInfo g_define_type_info = { sizeof (GeeHashMapNodeIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_hash_map_node_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeHashMapNodeIterator), 0, (GInstanceInitFunc) gee_hash_map_node_iterator_instance_init, NULL };
2798 GType gee_hash_map_node_iterator_type_id;
2799 gee_hash_map_node_iterator_type_id = g_type_register_static (G_TYPE_OBJECT, "GeeHashMapNodeIterator", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
2800 g_once_init_leave (&gee_hash_map_node_iterator_type_id__volatile, gee_hash_map_node_iterator_type_id);
2802 return gee_hash_map_node_iterator_type_id__volatile;
2806 static void _vala_gee_hash_map_node_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
2807 GeeHashMapNodeIterator * self;
2808 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_NODE_ITERATOR, GeeHashMapNodeIterator);
2809 switch (property_id) {
2811 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2817 static void _vala_gee_hash_map_node_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
2818 GeeHashMapNodeIterator * self;
2819 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_NODE_ITERATOR, GeeHashMapNodeIterator);
2820 switch (property_id) {
2821 case GEE_HASH_MAP_NODE_ITERATOR_K_TYPE:
2822 self->priv->k_type = g_value_get_gtype (value);
2824 case GEE_HASH_MAP_NODE_ITERATOR_K_DUP_FUNC:
2825 self->priv->k_dup_func = g_value_get_pointer (value);
2827 case GEE_HASH_MAP_NODE_ITERATOR_K_DESTROY_FUNC:
2828 self->priv->k_destroy_func = g_value_get_pointer (value);
2830 case GEE_HASH_MAP_NODE_ITERATOR_V_TYPE:
2831 self->priv->v_type = g_value_get_gtype (value);
2833 case GEE_HASH_MAP_NODE_ITERATOR_V_DUP_FUNC:
2834 self->priv->v_dup_func = g_value_get_pointer (value);
2836 case GEE_HASH_MAP_NODE_ITERATOR_V_DESTROY_FUNC:
2837 self->priv->v_destroy_func = g_value_get_pointer (value);
2840 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2846 static GeeHashMapKeyIterator* gee_hash_map_key_iterator_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, GeeHashMap* map) {
2847 GeeHashMapKeyIterator * self = NULL;
2849 g_return_val_if_fail (map != NULL, NULL);
2851 self = (GeeHashMapKeyIterator*) gee_hash_map_node_iterator_construct (object_type, k_type, (GBoxedCopyFunc) k_dup_func, k_destroy_func, v_type, (GBoxedCopyFunc) v_dup_func, v_destroy_func, _tmp0_);
2852 self->priv->k_type = k_type;
2853 self->priv->k_dup_func = k_dup_func;
2854 self->priv->k_destroy_func = k_destroy_func;
2855 self->priv->v_type = v_type;
2856 self->priv->v_dup_func = v_dup_func;
2857 self->priv->v_destroy_func = v_destroy_func;
2862 static GeeHashMapKeyIterator* gee_hash_map_key_iterator_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map) {
2863 return gee_hash_map_key_iterator_construct (GEE_HASH_MAP_TYPE_KEY_ITERATOR, k_type, k_dup_func, k_destroy_func, v_type, v_dup_func, v_destroy_func, map);
2867 static gpointer gee_hash_map_key_iterator_real_get (GeeIterator* base) {
2868 GeeHashMapKeyIterator * self;
2869 gpointer result = NULL;
2873 GeeHashMapNode* _tmp3_;
2874 GeeHashMapNode* _tmp4_;
2875 gconstpointer _tmp5_;
2877 self = (GeeHashMapKeyIterator*) base;
2878 _tmp0_ = ((GeeHashMapNodeIterator*) self)->_stamp;
2879 _tmp1_ = ((GeeHashMapNodeIterator*) self)->_map;
2880 _tmp2_ = _tmp1_->priv->_stamp;
2881 _vala_assert (_tmp0_ == _tmp2_, "_stamp == _map._stamp");
2882 _tmp3_ = ((GeeHashMapNodeIterator*) self)->_node;
2883 _vala_assert (_tmp3_ != NULL, "_node != null");
2884 _tmp4_ = ((GeeHashMapNodeIterator*) self)->_node;
2885 _tmp5_ = _tmp4_->key;
2886 _tmp6_ = ((_tmp5_ != NULL) && (self->priv->k_dup_func != NULL)) ? self->priv->k_dup_func ((gpointer) _tmp5_) : ((gpointer) _tmp5_);
2892 static void gee_hash_map_key_iterator_real_remove (GeeIterator* base) {
2893 GeeHashMapKeyIterator * self;
2894 self = (GeeHashMapKeyIterator*) base;
2895 g_assert_not_reached ();
2899 static void gee_hash_map_key_iterator_class_init (GeeHashMapKeyIteratorClass * klass) {
2900 gee_hash_map_key_iterator_parent_class = g_type_class_peek_parent (klass);
2901 g_type_class_add_private (klass, sizeof (GeeHashMapKeyIteratorPrivate));
2902 G_OBJECT_CLASS (klass)->get_property = _vala_gee_hash_map_key_iterator_get_property;
2903 G_OBJECT_CLASS (klass)->set_property = _vala_gee_hash_map_key_iterator_set_property;
2904 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_ITERATOR_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));
2905 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_ITERATOR_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));
2906 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_ITERATOR_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));
2907 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_ITERATOR_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));
2908 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_ITERATOR_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));
2909 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEY_ITERATOR_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));
2913 static void gee_hash_map_key_iterator_gee_iterator_interface_init (GeeIteratorIface * iface) {
2914 gee_hash_map_key_iterator_gee_iterator_parent_iface = g_type_interface_peek_parent (iface);
2915 iface->get = (gpointer (*)(GeeIterator*)) gee_hash_map_key_iterator_real_get;
2916 iface->remove = (void (*)(GeeIterator*)) gee_hash_map_key_iterator_real_remove;
2917 iface->next = (gboolean (*)(GeeIterator*)) gee_hash_map_node_iterator_next;
2918 iface->has_next = (gboolean (*)(GeeIterator*)) gee_hash_map_node_iterator_has_next;
2919 iface->first = (gboolean (*)(GeeIterator*)) gee_hash_map_node_iterator_first;
2923 static void gee_hash_map_key_iterator_instance_init (GeeHashMapKeyIterator * self) {
2924 self->priv = GEE_HASH_MAP_KEY_ITERATOR_GET_PRIVATE (self);
2928 static GType gee_hash_map_key_iterator_get_type (void) {
2929 static volatile gsize gee_hash_map_key_iterator_type_id__volatile = 0;
2930 if (g_once_init_enter (&gee_hash_map_key_iterator_type_id__volatile)) {
2931 static const GTypeInfo g_define_type_info = { sizeof (GeeHashMapKeyIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_hash_map_key_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeHashMapKeyIterator), 0, (GInstanceInitFunc) gee_hash_map_key_iterator_instance_init, NULL };
2932 static const GInterfaceInfo gee_iterator_info = { (GInterfaceInitFunc) gee_hash_map_key_iterator_gee_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
2933 GType gee_hash_map_key_iterator_type_id;
2934 gee_hash_map_key_iterator_type_id = g_type_register_static (GEE_HASH_MAP_TYPE_NODE_ITERATOR, "GeeHashMapKeyIterator", &g_define_type_info, 0);
2935 g_type_add_interface_static (gee_hash_map_key_iterator_type_id, GEE_TYPE_ITERATOR, &gee_iterator_info);
2936 g_once_init_leave (&gee_hash_map_key_iterator_type_id__volatile, gee_hash_map_key_iterator_type_id);
2938 return gee_hash_map_key_iterator_type_id__volatile;
2942 static void _vala_gee_hash_map_key_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
2943 GeeHashMapKeyIterator * self;
2944 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_KEY_ITERATOR, GeeHashMapKeyIterator);
2945 switch (property_id) {
2947 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2953 static void _vala_gee_hash_map_key_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
2954 GeeHashMapKeyIterator * self;
2955 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_KEY_ITERATOR, GeeHashMapKeyIterator);
2956 switch (property_id) {
2957 case GEE_HASH_MAP_KEY_ITERATOR_K_TYPE:
2958 self->priv->k_type = g_value_get_gtype (value);
2960 case GEE_HASH_MAP_KEY_ITERATOR_K_DUP_FUNC:
2961 self->priv->k_dup_func = g_value_get_pointer (value);
2963 case GEE_HASH_MAP_KEY_ITERATOR_K_DESTROY_FUNC:
2964 self->priv->k_destroy_func = g_value_get_pointer (value);
2966 case GEE_HASH_MAP_KEY_ITERATOR_V_TYPE:
2967 self->priv->v_type = g_value_get_gtype (value);
2969 case GEE_HASH_MAP_KEY_ITERATOR_V_DUP_FUNC:
2970 self->priv->v_dup_func = g_value_get_pointer (value);
2972 case GEE_HASH_MAP_KEY_ITERATOR_V_DESTROY_FUNC:
2973 self->priv->v_destroy_func = g_value_get_pointer (value);
2976 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2982 static GeeHashMapMapIterator* gee_hash_map_map_iterator_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, GeeHashMap* map) {
2983 GeeHashMapMapIterator * self = NULL;
2985 g_return_val_if_fail (map != NULL, NULL);
2987 self = (GeeHashMapMapIterator*) gee_hash_map_node_iterator_construct (object_type, k_type, (GBoxedCopyFunc) k_dup_func, k_destroy_func, v_type, (GBoxedCopyFunc) v_dup_func, v_destroy_func, _tmp0_);
2988 self->priv->k_type = k_type;
2989 self->priv->k_dup_func = k_dup_func;
2990 self->priv->k_destroy_func = k_destroy_func;
2991 self->priv->v_type = v_type;
2992 self->priv->v_dup_func = v_dup_func;
2993 self->priv->v_destroy_func = v_destroy_func;
2998 static GeeHashMapMapIterator* gee_hash_map_map_iterator_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map) {
2999 return gee_hash_map_map_iterator_construct (GEE_HASH_MAP_TYPE_MAP_ITERATOR, k_type, k_dup_func, k_destroy_func, v_type, v_dup_func, v_destroy_func, map);
3003 static gpointer gee_hash_map_map_iterator_real_get_key (GeeMapIterator* base) {
3004 GeeHashMapMapIterator * self;
3005 gpointer result = NULL;
3009 GeeHashMapNode* _tmp3_;
3010 GeeHashMapNode* _tmp4_;
3011 gconstpointer _tmp5_;
3013 self = (GeeHashMapMapIterator*) base;
3014 _tmp0_ = ((GeeHashMapNodeIterator*) self)->_stamp;
3015 _tmp1_ = ((GeeHashMapNodeIterator*) self)->_map;
3016 _tmp2_ = _tmp1_->priv->_stamp;
3017 _vala_assert (_tmp0_ == _tmp2_, "_stamp == _map._stamp");
3018 _tmp3_ = ((GeeHashMapNodeIterator*) self)->_node;
3019 _vala_assert (_tmp3_ != NULL, "_node != null");
3020 _tmp4_ = ((GeeHashMapNodeIterator*) self)->_node;
3021 _tmp5_ = _tmp4_->key;
3022 _tmp6_ = ((_tmp5_ != NULL) && (self->priv->k_dup_func != NULL)) ? self->priv->k_dup_func ((gpointer) _tmp5_) : ((gpointer) _tmp5_);
3028 static void gee_hash_map_map_iterator_real_unset (GeeMapIterator* base) {
3029 GeeHashMapMapIterator * self;
3033 GeeHashMapNode* _tmp3_;
3035 GeeHashMapNode* _tmp5_;
3036 gconstpointer _tmp6_;
3039 self = (GeeHashMapMapIterator*) base;
3040 _tmp0_ = ((GeeHashMapNodeIterator*) self)->_stamp;
3041 _tmp1_ = ((GeeHashMapNodeIterator*) self)->_map;
3042 _tmp2_ = _tmp1_->priv->_stamp;
3043 _vala_assert (_tmp0_ == _tmp2_, "_stamp == _map._stamp");
3044 _tmp3_ = ((GeeHashMapNodeIterator*) self)->_node;
3045 _vala_assert (_tmp3_ != NULL, "_node != null");
3046 gee_map_iterator_has_next ((GeeMapIterator*) self);
3047 _tmp4_ = ((GeeHashMapNodeIterator*) self)->_map;
3048 _tmp5_ = ((GeeHashMapNodeIterator*) self)->_node;
3049 _tmp6_ = _tmp5_->key;
3050 gee_abstract_map_unset ((GeeAbstractMap*) _tmp4_, _tmp6_, NULL);
3051 ((GeeHashMapNodeIterator*) self)->_node = NULL;
3052 _tmp7_ = ((GeeHashMapNodeIterator*) self)->_map;
3053 _tmp8_ = _tmp7_->priv->_stamp;
3054 ((GeeHashMapNodeIterator*) self)->_stamp = _tmp8_;
3058 static gpointer gee_hash_map_map_iterator_real_get_value (GeeMapIterator* base) {
3059 GeeHashMapMapIterator * self;
3060 gpointer result = NULL;
3064 GeeHashMapNode* _tmp3_;
3065 GeeHashMapNode* _tmp4_;
3066 gconstpointer _tmp5_;
3068 self = (GeeHashMapMapIterator*) base;
3069 _tmp0_ = ((GeeHashMapNodeIterator*) self)->_stamp;
3070 _tmp1_ = ((GeeHashMapNodeIterator*) self)->_map;
3071 _tmp2_ = _tmp1_->priv->_stamp;
3072 _vala_assert (_tmp0_ == _tmp2_, "_stamp == _map._stamp");
3073 _tmp3_ = ((GeeHashMapNodeIterator*) self)->_node;
3074 _vala_assert (_tmp3_ != NULL, "_node != null");
3075 _tmp4_ = ((GeeHashMapNodeIterator*) self)->_node;
3076 _tmp5_ = _tmp4_->value;
3077 _tmp6_ = ((_tmp5_ != NULL) && (self->priv->v_dup_func != NULL)) ? self->priv->v_dup_func ((gpointer) _tmp5_) : ((gpointer) _tmp5_);
3083 static void gee_hash_map_map_iterator_real_set_value (GeeMapIterator* base, gconstpointer value) {
3084 GeeHashMapMapIterator * self;
3088 GeeHashMapNode* _tmp3_;
3090 GeeHashMapNode* _tmp5_;
3091 gconstpointer _tmp6_;
3092 gconstpointer _tmp7_;
3095 self = (GeeHashMapMapIterator*) base;
3096 _tmp0_ = ((GeeHashMapNodeIterator*) self)->_stamp;
3097 _tmp1_ = ((GeeHashMapNodeIterator*) self)->_map;
3098 _tmp2_ = _tmp1_->priv->_stamp;
3099 _vala_assert (_tmp0_ == _tmp2_, "_stamp == _map._stamp");
3100 _tmp3_ = ((GeeHashMapNodeIterator*) self)->_node;
3101 _vala_assert (_tmp3_ != NULL, "_node != null");
3102 _tmp4_ = ((GeeHashMapNodeIterator*) self)->_map;
3103 _tmp5_ = ((GeeHashMapNodeIterator*) self)->_node;
3104 _tmp6_ = _tmp5_->key;
3106 gee_abstract_map_set ((GeeAbstractMap*) _tmp4_, _tmp6_, _tmp7_);
3107 _tmp8_ = ((GeeHashMapNodeIterator*) self)->_map;
3108 _tmp9_ = _tmp8_->priv->_stamp;
3109 ((GeeHashMapNodeIterator*) self)->_stamp = _tmp9_;
3113 static void gee_hash_map_map_iterator_class_init (GeeHashMapMapIteratorClass * klass) {
3114 gee_hash_map_map_iterator_parent_class = g_type_class_peek_parent (klass);
3115 g_type_class_add_private (klass, sizeof (GeeHashMapMapIteratorPrivate));
3116 G_OBJECT_CLASS (klass)->get_property = _vala_gee_hash_map_map_iterator_get_property;
3117 G_OBJECT_CLASS (klass)->set_property = _vala_gee_hash_map_map_iterator_set_property;
3118 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_MAP_ITERATOR_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));
3119 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_MAP_ITERATOR_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));
3120 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_MAP_ITERATOR_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));
3121 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_MAP_ITERATOR_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));
3122 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_MAP_ITERATOR_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));
3123 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_MAP_ITERATOR_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));
3127 static void gee_hash_map_map_iterator_gee_map_iterator_interface_init (GeeMapIteratorIface * iface) {
3128 gee_hash_map_map_iterator_gee_map_iterator_parent_iface = g_type_interface_peek_parent (iface);
3129 iface->get_key = (gpointer (*)(GeeMapIterator*)) gee_hash_map_map_iterator_real_get_key;
3130 iface->unset = (void (*)(GeeMapIterator*)) gee_hash_map_map_iterator_real_unset;
3131 iface->get_value = (gpointer (*)(GeeMapIterator*)) gee_hash_map_map_iterator_real_get_value;
3132 iface->set_value = (void (*)(GeeMapIterator*, gconstpointer)) gee_hash_map_map_iterator_real_set_value;
3133 iface->next = (gboolean (*)(GeeMapIterator*)) gee_hash_map_node_iterator_next;
3134 iface->has_next = (gboolean (*)(GeeMapIterator*)) gee_hash_map_node_iterator_has_next;
3135 iface->first = (gboolean (*)(GeeMapIterator*)) gee_hash_map_node_iterator_first;
3139 static void gee_hash_map_map_iterator_instance_init (GeeHashMapMapIterator * self) {
3140 self->priv = GEE_HASH_MAP_MAP_ITERATOR_GET_PRIVATE (self);
3144 static GType gee_hash_map_map_iterator_get_type (void) {
3145 static volatile gsize gee_hash_map_map_iterator_type_id__volatile = 0;
3146 if (g_once_init_enter (&gee_hash_map_map_iterator_type_id__volatile)) {
3147 static const GTypeInfo g_define_type_info = { sizeof (GeeHashMapMapIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_hash_map_map_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeHashMapMapIterator), 0, (GInstanceInitFunc) gee_hash_map_map_iterator_instance_init, NULL };
3148 static const GInterfaceInfo gee_map_iterator_info = { (GInterfaceInitFunc) gee_hash_map_map_iterator_gee_map_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
3149 GType gee_hash_map_map_iterator_type_id;
3150 gee_hash_map_map_iterator_type_id = g_type_register_static (GEE_HASH_MAP_TYPE_NODE_ITERATOR, "GeeHashMapMapIterator", &g_define_type_info, 0);
3151 g_type_add_interface_static (gee_hash_map_map_iterator_type_id, GEE_TYPE_MAP_ITERATOR, &gee_map_iterator_info);
3152 g_once_init_leave (&gee_hash_map_map_iterator_type_id__volatile, gee_hash_map_map_iterator_type_id);
3154 return gee_hash_map_map_iterator_type_id__volatile;
3158 static void _vala_gee_hash_map_map_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
3159 GeeHashMapMapIterator * self;
3160 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_MAP_ITERATOR, GeeHashMapMapIterator);
3161 switch (property_id) {
3163 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3169 static void _vala_gee_hash_map_map_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
3170 GeeHashMapMapIterator * self;
3171 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_MAP_ITERATOR, GeeHashMapMapIterator);
3172 switch (property_id) {
3173 case GEE_HASH_MAP_MAP_ITERATOR_K_TYPE:
3174 self->priv->k_type = g_value_get_gtype (value);
3176 case GEE_HASH_MAP_MAP_ITERATOR_K_DUP_FUNC:
3177 self->priv->k_dup_func = g_value_get_pointer (value);
3179 case GEE_HASH_MAP_MAP_ITERATOR_K_DESTROY_FUNC:
3180 self->priv->k_destroy_func = g_value_get_pointer (value);
3182 case GEE_HASH_MAP_MAP_ITERATOR_V_TYPE:
3183 self->priv->v_type = g_value_get_gtype (value);
3185 case GEE_HASH_MAP_MAP_ITERATOR_V_DUP_FUNC:
3186 self->priv->v_dup_func = g_value_get_pointer (value);
3188 case GEE_HASH_MAP_MAP_ITERATOR_V_DESTROY_FUNC:
3189 self->priv->v_destroy_func = g_value_get_pointer (value);
3192 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3198 static GeeHashMapValueIterator* gee_hash_map_value_iterator_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, GeeHashMap* map) {
3199 GeeHashMapValueIterator * self = NULL;
3201 g_return_val_if_fail (map != NULL, NULL);
3203 self = (GeeHashMapValueIterator*) gee_hash_map_node_iterator_construct (object_type, k_type, (GBoxedCopyFunc) k_dup_func, k_destroy_func, v_type, (GBoxedCopyFunc) v_dup_func, v_destroy_func, _tmp0_);
3204 self->priv->k_type = k_type;
3205 self->priv->k_dup_func = k_dup_func;
3206 self->priv->k_destroy_func = k_destroy_func;
3207 self->priv->v_type = v_type;
3208 self->priv->v_dup_func = v_dup_func;
3209 self->priv->v_destroy_func = v_destroy_func;
3214 static GeeHashMapValueIterator* gee_hash_map_value_iterator_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map) {
3215 return gee_hash_map_value_iterator_construct (GEE_HASH_MAP_TYPE_VALUE_ITERATOR, k_type, k_dup_func, k_destroy_func, v_type, v_dup_func, v_destroy_func, map);
3219 static gpointer gee_hash_map_value_iterator_real_get (GeeIterator* base) {
3220 GeeHashMapValueIterator * self;
3221 gpointer result = NULL;
3225 GeeHashMapNode* _tmp3_;
3226 GeeHashMapNode* _tmp4_;
3227 gconstpointer _tmp5_;
3229 self = (GeeHashMapValueIterator*) base;
3230 _tmp0_ = ((GeeHashMapNodeIterator*) self)->_stamp;
3231 _tmp1_ = ((GeeHashMapNodeIterator*) self)->_map;
3232 _tmp2_ = _tmp1_->priv->_stamp;
3233 _vala_assert (_tmp0_ == _tmp2_, "_stamp == _map._stamp");
3234 _tmp3_ = ((GeeHashMapNodeIterator*) self)->_node;
3235 _vala_assert (_tmp3_ != NULL, "_node != null");
3236 _tmp4_ = ((GeeHashMapNodeIterator*) self)->_node;
3237 _tmp5_ = _tmp4_->value;
3238 _tmp6_ = ((_tmp5_ != NULL) && (self->priv->v_dup_func != NULL)) ? self->priv->v_dup_func ((gpointer) _tmp5_) : ((gpointer) _tmp5_);
3244 static void gee_hash_map_value_iterator_real_remove (GeeIterator* base) {
3245 GeeHashMapValueIterator * self;
3246 self = (GeeHashMapValueIterator*) base;
3247 g_assert_not_reached ();
3251 static void gee_hash_map_value_iterator_class_init (GeeHashMapValueIteratorClass * klass) {
3252 gee_hash_map_value_iterator_parent_class = g_type_class_peek_parent (klass);
3253 g_type_class_add_private (klass, sizeof (GeeHashMapValueIteratorPrivate));
3254 G_OBJECT_CLASS (klass)->get_property = _vala_gee_hash_map_value_iterator_get_property;
3255 G_OBJECT_CLASS (klass)->set_property = _vala_gee_hash_map_value_iterator_set_property;
3256 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_ITERATOR_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));
3257 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_ITERATOR_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));
3258 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_ITERATOR_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));
3259 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_ITERATOR_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));
3260 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_ITERATOR_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));
3261 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUE_ITERATOR_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));
3265 static void gee_hash_map_value_iterator_gee_iterator_interface_init (GeeIteratorIface * iface) {
3266 gee_hash_map_value_iterator_gee_iterator_parent_iface = g_type_interface_peek_parent (iface);
3267 iface->get = (gpointer (*)(GeeIterator*)) gee_hash_map_value_iterator_real_get;
3268 iface->remove = (void (*)(GeeIterator*)) gee_hash_map_value_iterator_real_remove;
3269 iface->next = (gboolean (*)(GeeIterator*)) gee_hash_map_node_iterator_next;
3270 iface->has_next = (gboolean (*)(GeeIterator*)) gee_hash_map_node_iterator_has_next;
3271 iface->first = (gboolean (*)(GeeIterator*)) gee_hash_map_node_iterator_first;
3275 static void gee_hash_map_value_iterator_instance_init (GeeHashMapValueIterator * self) {
3276 self->priv = GEE_HASH_MAP_VALUE_ITERATOR_GET_PRIVATE (self);
3280 static GType gee_hash_map_value_iterator_get_type (void) {
3281 static volatile gsize gee_hash_map_value_iterator_type_id__volatile = 0;
3282 if (g_once_init_enter (&gee_hash_map_value_iterator_type_id__volatile)) {
3283 static const GTypeInfo g_define_type_info = { sizeof (GeeHashMapValueIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_hash_map_value_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeHashMapValueIterator), 0, (GInstanceInitFunc) gee_hash_map_value_iterator_instance_init, NULL };
3284 static const GInterfaceInfo gee_iterator_info = { (GInterfaceInitFunc) gee_hash_map_value_iterator_gee_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
3285 GType gee_hash_map_value_iterator_type_id;
3286 gee_hash_map_value_iterator_type_id = g_type_register_static (GEE_HASH_MAP_TYPE_NODE_ITERATOR, "GeeHashMapValueIterator", &g_define_type_info, 0);
3287 g_type_add_interface_static (gee_hash_map_value_iterator_type_id, GEE_TYPE_ITERATOR, &gee_iterator_info);
3288 g_once_init_leave (&gee_hash_map_value_iterator_type_id__volatile, gee_hash_map_value_iterator_type_id);
3290 return gee_hash_map_value_iterator_type_id__volatile;
3294 static void _vala_gee_hash_map_value_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
3295 GeeHashMapValueIterator * self;
3296 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_VALUE_ITERATOR, GeeHashMapValueIterator);
3297 switch (property_id) {
3299 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3305 static void _vala_gee_hash_map_value_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
3306 GeeHashMapValueIterator * self;
3307 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_VALUE_ITERATOR, GeeHashMapValueIterator);
3308 switch (property_id) {
3309 case GEE_HASH_MAP_VALUE_ITERATOR_K_TYPE:
3310 self->priv->k_type = g_value_get_gtype (value);
3312 case GEE_HASH_MAP_VALUE_ITERATOR_K_DUP_FUNC:
3313 self->priv->k_dup_func = g_value_get_pointer (value);
3315 case GEE_HASH_MAP_VALUE_ITERATOR_K_DESTROY_FUNC:
3316 self->priv->k_destroy_func = g_value_get_pointer (value);
3318 case GEE_HASH_MAP_VALUE_ITERATOR_V_TYPE:
3319 self->priv->v_type = g_value_get_gtype (value);
3321 case GEE_HASH_MAP_VALUE_ITERATOR_V_DUP_FUNC:
3322 self->priv->v_dup_func = g_value_get_pointer (value);
3324 case GEE_HASH_MAP_VALUE_ITERATOR_V_DESTROY_FUNC:
3325 self->priv->v_destroy_func = g_value_get_pointer (value);
3328 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3334 static GeeHashMapEntryIterator* gee_hash_map_entry_iterator_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, GeeHashMap* map) {
3335 GeeHashMapEntryIterator * self = NULL;
3337 g_return_val_if_fail (map != NULL, NULL);
3339 self = (GeeHashMapEntryIterator*) gee_hash_map_node_iterator_construct (object_type, k_type, (GBoxedCopyFunc) k_dup_func, k_destroy_func, v_type, (GBoxedCopyFunc) v_dup_func, v_destroy_func, _tmp0_);
3340 self->priv->k_type = k_type;
3341 self->priv->k_dup_func = k_dup_func;
3342 self->priv->k_destroy_func = k_destroy_func;
3343 self->priv->v_type = v_type;
3344 self->priv->v_dup_func = v_dup_func;
3345 self->priv->v_destroy_func = v_destroy_func;
3350 static GeeHashMapEntryIterator* gee_hash_map_entry_iterator_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashMap* map) {
3351 return gee_hash_map_entry_iterator_construct (GEE_HASH_MAP_TYPE_ENTRY_ITERATOR, k_type, k_dup_func, k_destroy_func, v_type, v_dup_func, v_destroy_func, map);
3355 static GeeMapEntry* gee_hash_map_entry_iterator_real_get (GeeIterator* base) {
3356 GeeHashMapEntryIterator * self;
3357 GeeMapEntry* result = NULL;
3361 GeeHashMapNode* _tmp3_;
3362 GeeHashMapNode* _tmp4_;
3363 GeeMapEntry* _tmp5_ = NULL;
3364 self = (GeeHashMapEntryIterator*) base;
3365 _tmp0_ = ((GeeHashMapNodeIterator*) self)->_stamp;
3366 _tmp1_ = ((GeeHashMapNodeIterator*) self)->_map;
3367 _tmp2_ = _tmp1_->priv->_stamp;
3368 _vala_assert (_tmp0_ == _tmp2_, "_stamp == _map._stamp");
3369 _tmp3_ = ((GeeHashMapNodeIterator*) self)->_node;
3370 _vala_assert (_tmp3_ != NULL, "_node != null");
3371 _tmp4_ = ((GeeHashMapNodeIterator*) self)->_node;
3372 _tmp5_ = gee_hash_map_entry_entry_for (self->priv->k_type, (GBoxedCopyFunc) self->priv->k_dup_func, self->priv->k_destroy_func, self->priv->v_type, (GBoxedCopyFunc) self->priv->v_dup_func, self->priv->v_destroy_func, _tmp4_);
3378 static void gee_hash_map_entry_iterator_real_remove (GeeIterator* base) {
3379 GeeHashMapEntryIterator * self;
3380 self = (GeeHashMapEntryIterator*) base;
3381 g_assert_not_reached ();
3385 static void gee_hash_map_entry_iterator_class_init (GeeHashMapEntryIteratorClass * klass) {
3386 gee_hash_map_entry_iterator_parent_class = g_type_class_peek_parent (klass);
3387 g_type_class_add_private (klass, sizeof (GeeHashMapEntryIteratorPrivate));
3388 G_OBJECT_CLASS (klass)->get_property = _vala_gee_hash_map_entry_iterator_get_property;
3389 G_OBJECT_CLASS (klass)->set_property = _vala_gee_hash_map_entry_iterator_set_property;
3390 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_ITERATOR_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));
3391 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_ITERATOR_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));
3392 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_ITERATOR_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));
3393 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_ITERATOR_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));
3394 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_ITERATOR_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));
3395 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRY_ITERATOR_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));
3399 static void gee_hash_map_entry_iterator_gee_iterator_interface_init (GeeIteratorIface * iface) {
3400 gee_hash_map_entry_iterator_gee_iterator_parent_iface = g_type_interface_peek_parent (iface);
3401 iface->get = (gpointer (*)(GeeIterator*)) gee_hash_map_entry_iterator_real_get;
3402 iface->remove = (void (*)(GeeIterator*)) gee_hash_map_entry_iterator_real_remove;
3403 iface->next = (gboolean (*)(GeeIterator*)) gee_hash_map_node_iterator_next;
3404 iface->has_next = (gboolean (*)(GeeIterator*)) gee_hash_map_node_iterator_has_next;
3405 iface->first = (gboolean (*)(GeeIterator*)) gee_hash_map_node_iterator_first;
3409 static void gee_hash_map_entry_iterator_instance_init (GeeHashMapEntryIterator * self) {
3410 self->priv = GEE_HASH_MAP_ENTRY_ITERATOR_GET_PRIVATE (self);
3414 static GType gee_hash_map_entry_iterator_get_type (void) {
3415 static volatile gsize gee_hash_map_entry_iterator_type_id__volatile = 0;
3416 if (g_once_init_enter (&gee_hash_map_entry_iterator_type_id__volatile)) {
3417 static const GTypeInfo g_define_type_info = { sizeof (GeeHashMapEntryIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_hash_map_entry_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeHashMapEntryIterator), 0, (GInstanceInitFunc) gee_hash_map_entry_iterator_instance_init, NULL };
3418 static const GInterfaceInfo gee_iterator_info = { (GInterfaceInitFunc) gee_hash_map_entry_iterator_gee_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
3419 GType gee_hash_map_entry_iterator_type_id;
3420 gee_hash_map_entry_iterator_type_id = g_type_register_static (GEE_HASH_MAP_TYPE_NODE_ITERATOR, "GeeHashMapEntryIterator", &g_define_type_info, 0);
3421 g_type_add_interface_static (gee_hash_map_entry_iterator_type_id, GEE_TYPE_ITERATOR, &gee_iterator_info);
3422 g_once_init_leave (&gee_hash_map_entry_iterator_type_id__volatile, gee_hash_map_entry_iterator_type_id);
3424 return gee_hash_map_entry_iterator_type_id__volatile;
3428 static void _vala_gee_hash_map_entry_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
3429 GeeHashMapEntryIterator * self;
3430 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_ENTRY_ITERATOR, GeeHashMapEntryIterator);
3431 switch (property_id) {
3433 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3439 static void _vala_gee_hash_map_entry_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
3440 GeeHashMapEntryIterator * self;
3441 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_HASH_MAP_TYPE_ENTRY_ITERATOR, GeeHashMapEntryIterator);
3442 switch (property_id) {
3443 case GEE_HASH_MAP_ENTRY_ITERATOR_K_TYPE:
3444 self->priv->k_type = g_value_get_gtype (value);
3446 case GEE_HASH_MAP_ENTRY_ITERATOR_K_DUP_FUNC:
3447 self->priv->k_dup_func = g_value_get_pointer (value);
3449 case GEE_HASH_MAP_ENTRY_ITERATOR_K_DESTROY_FUNC:
3450 self->priv->k_destroy_func = g_value_get_pointer (value);
3452 case GEE_HASH_MAP_ENTRY_ITERATOR_V_TYPE:
3453 self->priv->v_type = g_value_get_gtype (value);
3455 case GEE_HASH_MAP_ENTRY_ITERATOR_V_DUP_FUNC:
3456 self->priv->v_dup_func = g_value_get_pointer (value);
3458 case GEE_HASH_MAP_ENTRY_ITERATOR_V_DESTROY_FUNC:
3459 self->priv->v_destroy_func = g_value_get_pointer (value);
3462 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3468 static void gee_hash_map_class_init (GeeHashMapClass * klass) {
3469 gee_hash_map_parent_class = g_type_class_peek_parent (klass);
3470 g_type_class_add_private (klass, sizeof (GeeHashMapPrivate));
3471 GEE_ABSTRACT_MAP_CLASS (klass)->has_key = gee_hash_map_real_has_key;
3472 GEE_ABSTRACT_MAP_CLASS (klass)->has = gee_hash_map_real_has;
3473 GEE_ABSTRACT_MAP_CLASS (klass)->get = gee_hash_map_real_get;
3474 GEE_ABSTRACT_MAP_CLASS (klass)->set = gee_hash_map_real_set;
3475 GEE_ABSTRACT_MAP_CLASS (klass)->unset = gee_hash_map_real_unset;
3476 GEE_ABSTRACT_MAP_CLASS (klass)->clear = gee_hash_map_real_clear;
3477 GEE_ABSTRACT_MAP_CLASS (klass)->map_iterator = gee_hash_map_real_map_iterator;
3478 GEE_ABSTRACT_MAP_CLASS (klass)->get_size = gee_hash_map_real_get_size;
3479 GEE_ABSTRACT_MAP_CLASS (klass)->get_keys = gee_hash_map_real_get_keys;
3480 GEE_ABSTRACT_MAP_CLASS (klass)->get_values = gee_hash_map_real_get_values;
3481 GEE_ABSTRACT_MAP_CLASS (klass)->get_entries = gee_hash_map_real_get_entries;
3482 G_OBJECT_CLASS (klass)->get_property = _vala_gee_hash_map_get_property;
3483 G_OBJECT_CLASS (klass)->set_property = _vala_gee_hash_map_set_property;
3484 G_OBJECT_CLASS (klass)->finalize = gee_hash_map_finalize;
3485 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_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));
3486 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_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));
3487 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_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));
3488 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_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));
3489 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_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));
3490 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_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));
3494 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_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));
3498 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_KEYS, g_param_spec_object ("keys", "keys", "keys", GEE_TYPE_SET, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
3502 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_VALUES, g_param_spec_object ("values", "values", "values", GEE_TYPE_COLLECTION, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
3506 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MAP_ENTRIES, g_param_spec_object ("entries", "entries", "entries", GEE_TYPE_SET, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
3508 * The keys' hash function.
3510 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_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));
3512 * The keys' equality testing function.
3514 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_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));
3516 * The values' equality testing function.
3518 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_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));
3522 static void gee_hash_map_instance_init (GeeHashMap * self) {
3523 self->priv = GEE_HASH_MAP_GET_PRIVATE (self);
3524 self->priv->_stamp = 0;
3528 static void gee_hash_map_finalize (GObject* obj) {
3530 self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_TYPE_HASH_MAP, GeeHashMap);
3531 gee_abstract_map_clear ((GeeAbstractMap*) self);
3532 self->priv->_nodes = (_vala_array_free (self->priv->_nodes, self->priv->_nodes_length1, (GDestroyNotify) gee_hash_map_node_free), NULL);
3533 G_OBJECT_CLASS (gee_hash_map_parent_class)->finalize (obj);
3538 * Hash table implementation of the {@link Map} interface.
3540 * This implementation is better fit for highly heterogenous key values.
3541 * In case of high key hashes redundancy or higher amount of data prefer using
3542 * tree implementation like {@link TreeMap}.
3546 GType gee_hash_map_get_type (void) {
3547 static volatile gsize gee_hash_map_type_id__volatile = 0;
3548 if (g_once_init_enter (&gee_hash_map_type_id__volatile)) {
3549 static const GTypeInfo g_define_type_info = { sizeof (GeeHashMapClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_hash_map_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeHashMap), 0, (GInstanceInitFunc) gee_hash_map_instance_init, NULL };
3550 GType gee_hash_map_type_id;
3551 gee_hash_map_type_id = g_type_register_static (GEE_TYPE_ABSTRACT_MAP, "GeeHashMap", &g_define_type_info, 0);
3552 g_once_init_leave (&gee_hash_map_type_id__volatile, gee_hash_map_type_id);
3554 return gee_hash_map_type_id__volatile;
3558 static void _vala_gee_hash_map_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
3560 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_HASH_MAP, GeeHashMap);
3561 switch (property_id) {
3562 case GEE_HASH_MAP_SIZE:
3563 g_value_set_int (value, gee_abstract_map_get_size ((GeeAbstractMap*) self));
3565 case GEE_HASH_MAP_KEYS:
3566 g_value_take_object (value, gee_abstract_map_get_keys ((GeeAbstractMap*) self));
3568 case GEE_HASH_MAP_VALUES:
3569 g_value_take_object (value, gee_abstract_map_get_values ((GeeAbstractMap*) self));
3571 case GEE_HASH_MAP_ENTRIES:
3572 g_value_take_object (value, gee_abstract_map_get_entries ((GeeAbstractMap*) self));
3574 case GEE_HASH_MAP_KEY_HASH_FUNC:
3575 g_value_set_pointer (value, gee_hash_map_get_key_hash_func (self));
3577 case GEE_HASH_MAP_KEY_EQUAL_FUNC:
3578 g_value_set_pointer (value, gee_hash_map_get_key_equal_func (self));
3580 case GEE_HASH_MAP_VALUE_EQUAL_FUNC:
3581 g_value_set_pointer (value, gee_hash_map_get_value_equal_func (self));
3584 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3590 static void _vala_gee_hash_map_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
3592 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_HASH_MAP, GeeHashMap);
3593 switch (property_id) {
3594 case GEE_HASH_MAP_KEY_HASH_FUNC:
3595 gee_hash_map_set_key_hash_func (self, g_value_get_pointer (value));
3597 case GEE_HASH_MAP_KEY_EQUAL_FUNC:
3598 gee_hash_map_set_key_equal_func (self, g_value_get_pointer (value));
3600 case GEE_HASH_MAP_VALUE_EQUAL_FUNC:
3601 gee_hash_map_set_value_equal_func (self, g_value_get_pointer (value));
3603 case GEE_HASH_MAP_K_TYPE:
3604 self->priv->k_type = g_value_get_gtype (value);
3606 case GEE_HASH_MAP_K_DUP_FUNC:
3607 self->priv->k_dup_func = g_value_get_pointer (value);
3609 case GEE_HASH_MAP_K_DESTROY_FUNC:
3610 self->priv->k_destroy_func = g_value_get_pointer (value);
3612 case GEE_HASH_MAP_V_TYPE:
3613 self->priv->v_type = g_value_get_gtype (value);
3615 case GEE_HASH_MAP_V_DUP_FUNC:
3616 self->priv->v_dup_func = g_value_get_pointer (value);
3618 case GEE_HASH_MAP_V_DESTROY_FUNC:
3619 self->priv->v_destroy_func = g_value_get_pointer (value);
3622 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3628 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
3629 if ((array != NULL) && (destroy_func != NULL)) {
3631 for (i = 0; i < array_length; i = i + 1) {
3632 if (((gpointer*) array)[i] != NULL) {
3633 destroy_func (((gpointer*) array)[i]);
3640 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
3641 _vala_array_destroy (array, array_length, destroy_func);