1 /* hashmap.c generated by valac 0.19.0.4-d6d4, the Vala compiler
2  * generated from hashmap.vala, do not modify */
3 
4 /* hashmap.vala
5  *
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
9  *
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.
14 
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.
19 
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
23  *
24  * Author:
25  * 	Jürg Billeter <j@bitron.ch>
26  */
27 
28 #include <glib.h>
29 #include <glib-object.h>
30 
31 
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))
36 
37 typedef struct _GeeIterable GeeIterable;
38 typedef struct _GeeIterableIface GeeIterableIface;
39 
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))
44 
45 typedef struct _GeeIterator GeeIterator;
46 typedef struct _GeeIteratorIface GeeIteratorIface;
47 
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))
52 
53 typedef struct _GeeMap GeeMap;
54 typedef struct _GeeMapIface GeeMapIface;
55 
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))
60 
61 typedef struct _GeeMapIterator GeeMapIterator;
62 typedef struct _GeeMapIteratorIface GeeMapIteratorIface;
63 
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))
68 
69 typedef struct _GeeCollection GeeCollection;
70 typedef struct _GeeCollectionIface GeeCollectionIface;
71 
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))
76 
77 typedef struct _GeeSet GeeSet;
78 typedef struct _GeeSetIface GeeSetIface;
79 
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))
86 
87 typedef struct _GeeMapEntry GeeMapEntry;
88 typedef struct _GeeMapEntryClass GeeMapEntryClass;
89 
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))
96 
97 typedef struct _GeeAbstractMap GeeAbstractMap;
98 typedef struct _GeeAbstractMapClass GeeAbstractMapClass;
99 typedef struct _GeeAbstractMapPrivate GeeAbstractMapPrivate;
100 
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))
107 
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)))
113 
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))
120 
121 typedef struct _GeeHashMapNodeIterator GeeHashMapNodeIterator;
122 typedef struct _GeeHashMapNodeIteratorClass GeeHashMapNodeIteratorClass;
123 
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))
130 
131 typedef struct _GeeHashMapMapIterator GeeHashMapMapIterator;
132 typedef struct _GeeHashMapMapIteratorClass GeeHashMapMapIteratorClass;
133 
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))
140 
141 typedef struct _GeeAbstractCollection GeeAbstractCollection;
142 typedef struct _GeeAbstractCollectionClass GeeAbstractCollectionClass;
143 
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))
150 
151 typedef struct _GeeAbstractSet GeeAbstractSet;
152 typedef struct _GeeAbstractSetClass GeeAbstractSetClass;
153 
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))
160 
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)))
164 
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))
171 
172 typedef struct _GeeHashMapValueCollection GeeHashMapValueCollection;
173 typedef struct _GeeHashMapValueCollectionClass GeeHashMapValueCollectionClass;
174 
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))
181 
182 typedef struct _GeeHashMapEntrySet GeeHashMapEntrySet;
183 typedef struct _GeeHashMapEntrySetClass GeeHashMapEntrySetClass;
184 typedef struct _GeeMapEntryPrivate GeeMapEntryPrivate;
185 
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))
192 
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;
199 
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))
206 
207 typedef struct _GeeHashMapKeyIterator GeeHashMapKeyIterator;
208 typedef struct _GeeHashMapKeyIteratorClass GeeHashMapKeyIteratorClass;
209 typedef struct _GeeHashMapValueCollectionPrivate GeeHashMapValueCollectionPrivate;
210 
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))
217 
218 typedef struct _GeeHashMapValueIterator GeeHashMapValueIterator;
219 typedef struct _GeeHashMapValueIteratorClass GeeHashMapValueIteratorClass;
220 typedef struct _GeeHashMapEntrySetPrivate GeeHashMapEntrySetPrivate;
221 
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))
228 
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);
237 
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);
245 };
246 
247 struct _GeeIterableIface {
248 	GTypeInterface parent_iface;
249 	GeeIterator* (*iterator) (GeeIterable* self);
250 	GType (*get_element_type) (GeeIterable* self);
251 };
252 
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);
262 };
263 
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);
278 };
279 
280 struct _GeeSetIface {
281 	GTypeInterface parent_iface;
282 	GeeSet* (*get_read_only_view) (GeeSet* self);
283 };
284 
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);
309 };
310 
311 struct _GeeAbstractMap {
312 	GObject parent_instance;
313 	GeeAbstractMapPrivate * priv;
314 };
315 
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);
334 };
335 
336 struct _GeeHashMap {
337 	GeeAbstractMap parent_instance;
338 	GeeHashMapPrivate * priv;
339 };
340 
341 struct _GeeHashMapClass {
342 	GeeAbstractMapClass parent_class;
343 };
344 
345 struct _GeeHashMapPrivate {
346 	GType k_type;
347 	GBoxedCopyFunc k_dup_func;
348 	GDestroyNotify k_destroy_func;
349 	GType v_type;
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;
355 	gint _array_size;
356 	gint _nnodes;
357 	GeeHashMapNode** _nodes;
358 	gint _nodes_length1;
359 	gint __nodes_size_;
360 	GeeSet* _keys;
361 	GeeCollection* _values;
362 	GeeSet* _entries;
363 	gint _stamp;
364 };
365 
366 struct _GeeHashMapNode {
367 	gpointer key;
368 	gpointer value;
369 	GeeHashMapNode* next;
370 	guint key_hash;
371 	GeeMapEntry* entry;
372 };
373 
374 struct _GeeMapEntry {
375 	GObject parent_instance;
376 	GeeMapEntryPrivate * priv;
377 };
378 
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);
384 };
385 
386 struct _GeeHashMapEntry {
387 	GeeMapEntry parent_instance;
388 	GeeHashMapEntryPrivate * priv;
389 };
390 
391 struct _GeeHashMapEntryClass {
392 	GeeMapEntryClass parent_class;
393 };
394 
395 struct _GeeHashMapEntryPrivate {
396 	GType k_type;
397 	GBoxedCopyFunc k_dup_func;
398 	GDestroyNotify k_destroy_func;
399 	GType v_type;
400 	GBoxedCopyFunc v_dup_func;
401 	GDestroyNotify v_destroy_func;
402 	GeeHashMapNode* _node;
403 };
404 
405 struct _GeeAbstractCollection {
406 	GObject parent_instance;
407 	GeeAbstractCollectionPrivate * priv;
408 };
409 
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);
425 };
426 
427 struct _GeeAbstractSet {
428 	GeeAbstractCollection parent_instance;
429 	GeeAbstractSetPrivate * priv;
430 };
431 
432 struct _GeeAbstractSetClass {
433 	GeeAbstractCollectionClass parent_class;
434 	GeeSet* (*get_read_only_view) (GeeAbstractSet* self);
435 };
436 
437 struct _GeeHashMapKeySet {
438 	GeeAbstractSet parent_instance;
439 	GeeHashMapKeySetPrivate * priv;
440 };
441 
442 struct _GeeHashMapKeySetClass {
443 	GeeAbstractSetClass parent_class;
444 };
445 
446 struct _GeeHashMapKeySetPrivate {
447 	GType k_type;
448 	GBoxedCopyFunc k_dup_func;
449 	GDestroyNotify k_destroy_func;
450 	GType v_type;
451 	GBoxedCopyFunc v_dup_func;
452 	GDestroyNotify v_destroy_func;
453 	GeeHashMap* _map;
454 };
455 
456 struct _GeeHashMapValueCollection {
457 	GeeAbstractCollection parent_instance;
458 	GeeHashMapValueCollectionPrivate * priv;
459 };
460 
461 struct _GeeHashMapValueCollectionClass {
462 	GeeAbstractCollectionClass parent_class;
463 };
464 
465 struct _GeeHashMapValueCollectionPrivate {
466 	GType k_type;
467 	GBoxedCopyFunc k_dup_func;
468 	GDestroyNotify k_destroy_func;
469 	GType v_type;
470 	GBoxedCopyFunc v_dup_func;
471 	GDestroyNotify v_destroy_func;
472 	GeeHashMap* _map;
473 };
474 
475 struct _GeeHashMapEntrySet {
476 	GeeAbstractSet parent_instance;
477 	GeeHashMapEntrySetPrivate * priv;
478 };
479 
480 struct _GeeHashMapEntrySetClass {
481 	GeeAbstractSetClass parent_class;
482 };
483 
484 struct _GeeHashMapEntrySetPrivate {
485 	GType k_type;
486 	GBoxedCopyFunc k_dup_func;
487 	GDestroyNotify k_destroy_func;
488 	GType v_type;
489 	GBoxedCopyFunc v_dup_func;
490 	GDestroyNotify v_destroy_func;
491 	GeeHashMap* _map;
492 };
493 
494 struct _GeeHashMapNodeIterator {
495 	GObject parent_instance;
496 	GeeHashMapNodeIteratorPrivate * priv;
497 	GeeHashMap* _map;
498 	GeeHashMapNode* _node;
499 	GeeHashMapNode* _next;
500 	gint _stamp;
501 };
502 
503 struct _GeeHashMapNodeIteratorClass {
504 	GObjectClass parent_class;
505 };
506 
507 struct _GeeHashMapNodeIteratorPrivate {
508 	GType k_type;
509 	GBoxedCopyFunc k_dup_func;
510 	GDestroyNotify k_destroy_func;
511 	GType v_type;
512 	GBoxedCopyFunc v_dup_func;
513 	GDestroyNotify v_destroy_func;
514 	gint _index;
515 };
516 
517 struct _GeeHashMapKeyIterator {
518 	GeeHashMapNodeIterator parent_instance;
519 	GeeHashMapKeyIteratorPrivate * priv;
520 };
521 
522 struct _GeeHashMapKeyIteratorClass {
523 	GeeHashMapNodeIteratorClass parent_class;
524 };
525 
526 struct _GeeHashMapKeyIteratorPrivate {
527 	GType k_type;
528 	GBoxedCopyFunc k_dup_func;
529 	GDestroyNotify k_destroy_func;
530 	GType v_type;
531 	GBoxedCopyFunc v_dup_func;
532 	GDestroyNotify v_destroy_func;
533 };
534 
535 struct _GeeHashMapMapIterator {
536 	GeeHashMapNodeIterator parent_instance;
537 	GeeHashMapMapIteratorPrivate * priv;
538 };
539 
540 struct _GeeHashMapMapIteratorClass {
541 	GeeHashMapNodeIteratorClass parent_class;
542 };
543 
544 struct _GeeHashMapMapIteratorPrivate {
545 	GType k_type;
546 	GBoxedCopyFunc k_dup_func;
547 	GDestroyNotify k_destroy_func;
548 	GType v_type;
549 	GBoxedCopyFunc v_dup_func;
550 	GDestroyNotify v_destroy_func;
551 };
552 
553 struct _GeeHashMapValueIterator {
554 	GeeHashMapNodeIterator parent_instance;
555 	GeeHashMapValueIteratorPrivate * priv;
556 };
557 
558 struct _GeeHashMapValueIteratorClass {
559 	GeeHashMapNodeIteratorClass parent_class;
560 };
561 
562 struct _GeeHashMapValueIteratorPrivate {
563 	GType k_type;
564 	GBoxedCopyFunc k_dup_func;
565 	GDestroyNotify k_destroy_func;
566 	GType v_type;
567 	GBoxedCopyFunc v_dup_func;
568 	GDestroyNotify v_destroy_func;
569 };
570 
571 struct _GeeHashMapEntryIterator {
572 	GeeHashMapNodeIterator parent_instance;
573 	GeeHashMapEntryIteratorPrivate * priv;
574 };
575 
576 struct _GeeHashMapEntryIteratorClass {
577 	GeeHashMapNodeIteratorClass parent_class;
578 };
579 
580 struct _GeeHashMapEntryIteratorPrivate {
581 	GType k_type;
582 	GBoxedCopyFunc k_dup_func;
583 	GDestroyNotify k_destroy_func;
584 	GType v_type;
585 	GBoxedCopyFunc v_dup_func;
586 	GDestroyNotify v_destroy_func;
587 };
588 
589 
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;
604 
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))
616 enum  {
617 	GEE_HASH_MAP_DUMMY_PROPERTY,
618 	GEE_HASH_MAP_K_TYPE,
619 	GEE_HASH_MAP_K_DUP_FUNC,
620 	GEE_HASH_MAP_K_DESTROY_FUNC,
621 	GEE_HASH_MAP_V_TYPE,
622 	GEE_HASH_MAP_V_DUP_FUNC,
623 	GEE_HASH_MAP_V_DESTROY_FUNC,
624 	GEE_HASH_MAP_SIZE,
625 	GEE_HASH_MAP_KEYS,
626 	GEE_HASH_MAP_VALUES,
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
631 };
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))
676 enum  {
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
686 };
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))
698 enum  {
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
707 };
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))
727 enum  {
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
736 };
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))
756 enum  {
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
765 };
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))
782 enum  {
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
790 };
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))
799 enum  {
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
807 };
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))
813 enum  {
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
821 };
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))
832 enum  {
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
840 };
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))
846 enum  {
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
854 };
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);
867 
868 
869 /**
870  * Constructs a new, empty hash map.
871  *
872  * If not provided, the functions parameters are requested to the
873  * {@link Functions} function factory methods.
874  *
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
878  */
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)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;
881 	GHashFunc _tmp0_;
882 	GEqualFunc _tmp2_;
883 	GEqualFunc _tmp4_;
884 	GHashFunc _tmp6_;
885 	GEqualFunc _tmp7_;
886 	GEqualFunc _tmp8_;
887 	gint _tmp9_;
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_;
901 	}
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_;
907 	}
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_;
913 	}
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;
927 	return self;
928 }
929 
930 
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)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);
933 }
934 
935 
gee_hash_map_lookup_node(GeeHashMap * self,gconstpointer key)936 static GeeHashMapNode** gee_hash_map_lookup_node (GeeHashMap* self, gconstpointer key) {
937 	GeeHashMapNode** result = NULL;
938 	GHashFunc _tmp0_;
939 	GHashFunc _tmp1_;
940 	gconstpointer _tmp2_;
941 	guint _tmp3_ = 0U;
942 	guint hash_value;
943 	GeeHashMapNode** _tmp4_;
944 	gint _tmp4__length1;
945 	guint _tmp5_;
946 	gint _tmp6_;
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);
951 	_tmp1_ = _tmp0_;
952 	_tmp2_ = key;
953 	_tmp3_ = _tmp1_ (_tmp2_);
954 	hash_value = _tmp3_;
955 	_tmp4_ = self->priv->_nodes;
956 	_tmp4__length1 = self->priv->_nodes_length1;
957 	_tmp5_ = hash_value;
958 	_tmp6_ = self->priv->_array_size;
959 	node = &_tmp4_[_tmp5_ % _tmp6_];
960 	while (TRUE) {
961 		gboolean _tmp7_ = FALSE;
962 		GeeHashMapNode** _tmp8_;
963 		gboolean _tmp20_;
964 		GeeHashMapNode** _tmp21_;
965 		_tmp8_ = node;
966 		if ((*_tmp8_) != NULL) {
967 			gboolean _tmp9_ = FALSE;
968 			guint _tmp10_;
969 			GeeHashMapNode** _tmp11_;
970 			guint _tmp12_;
971 			gboolean _tmp19_;
972 			_tmp10_ = hash_value;
973 			_tmp11_ = node;
974 			_tmp12_ = (*_tmp11_)->key_hash;
975 			if (_tmp10_ != _tmp12_) {
976 				_tmp9_ = TRUE;
977 			} else {
978 				GEqualFunc _tmp13_;
979 				GEqualFunc _tmp14_;
980 				GeeHashMapNode** _tmp15_;
981 				gconstpointer _tmp16_;
982 				gconstpointer _tmp17_;
983 				gboolean _tmp18_ = FALSE;
984 				_tmp13_ = gee_hash_map_get_key_equal_func (self);
985 				_tmp14_ = _tmp13_;
986 				_tmp15_ = node;
987 				_tmp16_ = (*_tmp15_)->key;
988 				_tmp17_ = key;
989 				_tmp18_ = _tmp14_ (_tmp16_, _tmp17_);
990 				_tmp9_ = !_tmp18_;
991 			}
992 			_tmp19_ = _tmp9_;
993 			_tmp7_ = _tmp19_;
994 		} else {
995 			_tmp7_ = FALSE;
996 		}
997 		_tmp20_ = _tmp7_;
998 		if (!_tmp20_) {
999 			break;
1000 		}
1001 		_tmp21_ = node;
1002 		node = &(*_tmp21_)->next;
1003 	}
1004 	_tmp22_ = node;
1005 	result = _tmp22_;
1006 	return result;
1007 }
1008 
1009 
1010 /**
1011  * {@inheritDoc}
1012  */
gee_hash_map_real_has_key(GeeAbstractMap * base,gconstpointer key)1013 static gboolean gee_hash_map_real_has_key (GeeAbstractMap* base, gconstpointer key) {
1014 	GeeHashMap * self;
1015 	gboolean result = FALSE;
1016 	gconstpointer _tmp0_;
1017 	GeeHashMapNode** _tmp1_ = NULL;
1018 	GeeHashMapNode** node;
1019 	self = (GeeHashMap*) base;
1020 	_tmp0_ = key;
1021 	_tmp1_ = gee_hash_map_lookup_node (self, _tmp0_);
1022 	node = _tmp1_;
1023 	result = (*node) != NULL;
1024 	return result;
1025 }
1026 
1027 
1028 /**
1029  * {@inheritDoc}
1030  */
gee_hash_map_real_has(GeeAbstractMap * base,gconstpointer key,gconstpointer value)1031 static gboolean gee_hash_map_real_has (GeeAbstractMap* base, gconstpointer key, gconstpointer value) {
1032 	GeeHashMap * self;
1033 	gboolean result = FALSE;
1034 	gconstpointer _tmp0_;
1035 	GeeHashMapNode** _tmp1_ = NULL;
1036 	GeeHashMapNode** node;
1037 	gboolean _tmp2_ = FALSE;
1038 	GeeHashMapNode** _tmp3_;
1039 	gboolean _tmp10_;
1040 	self = (GeeHashMap*) base;
1041 	_tmp0_ = key;
1042 	_tmp1_ = gee_hash_map_lookup_node (self, _tmp0_);
1043 	node = _tmp1_;
1044 	_tmp3_ = node;
1045 	if ((*_tmp3_) != NULL) {
1046 		GEqualFunc _tmp4_;
1047 		GEqualFunc _tmp5_;
1048 		GeeHashMapNode** _tmp6_;
1049 		gconstpointer _tmp7_;
1050 		gconstpointer _tmp8_;
1051 		gboolean _tmp9_ = FALSE;
1052 		_tmp4_ = gee_hash_map_get_value_equal_func (self);
1053 		_tmp5_ = _tmp4_;
1054 		_tmp6_ = node;
1055 		_tmp7_ = (*_tmp6_)->value;
1056 		_tmp8_ = value;
1057 		_tmp9_ = _tmp5_ (_tmp7_, _tmp8_);
1058 		_tmp2_ = _tmp9_;
1059 	} else {
1060 		_tmp2_ = FALSE;
1061 	}
1062 	_tmp10_ = _tmp2_;
1063 	result = _tmp10_;
1064 	return result;
1065 }
1066 
1067 
1068 /**
1069  * {@inheritDoc}
1070  */
gee_hash_map_real_get(GeeAbstractMap * base,gconstpointer key)1071 static gpointer gee_hash_map_real_get (GeeAbstractMap* base, gconstpointer key) {
1072 	GeeHashMap * self;
1073 	gpointer result = NULL;
1074 	gconstpointer _tmp0_;
1075 	GeeHashMapNode** _tmp1_ = NULL;
1076 	GeeHashMapNode* node;
1077 	GeeHashMapNode* _tmp2_;
1078 	self = (GeeHashMap*) base;
1079 	_tmp0_ = key;
1080 	_tmp1_ = gee_hash_map_lookup_node (self, _tmp0_);
1081 	node = *_tmp1_;
1082 	_tmp2_ = node;
1083 	if (_tmp2_ != NULL) {
1084 		GeeHashMapNode* _tmp3_;
1085 		gconstpointer _tmp4_;
1086 		gpointer _tmp5_;
1087 		_tmp3_ = node;
1088 		_tmp4_ = _tmp3_->value;
1089 		_tmp5_ = ((_tmp4_ != NULL) && (self->priv->v_dup_func != NULL)) ? self->priv->v_dup_func ((gpointer) _tmp4_) : ((gpointer) _tmp4_);
1090 		result = _tmp5_;
1091 		return result;
1092 	} else {
1093 		result = NULL;
1094 		return result;
1095 	}
1096 }
1097 
1098 
1099 /**
1100  * {@inheritDoc}
1101  */
gee_hash_map_real_set(GeeAbstractMap * base,gconstpointer key,gconstpointer value)1102 static void gee_hash_map_real_set (GeeAbstractMap* base, gconstpointer key, gconstpointer value) {
1103 	GeeHashMap * self;
1104 	gconstpointer _tmp0_;
1105 	GeeHashMapNode** _tmp1_ = NULL;
1106 	GeeHashMapNode** node;
1107 	GeeHashMapNode** _tmp2_;
1108 	gint _tmp19_;
1109 	self = (GeeHashMap*) base;
1110 	_tmp0_ = key;
1111 	_tmp1_ = gee_hash_map_lookup_node (self, _tmp0_);
1112 	node = _tmp1_;
1113 	_tmp2_ = node;
1114 	if ((*_tmp2_) != NULL) {
1115 		GeeHashMapNode** _tmp3_;
1116 		gconstpointer _tmp4_;
1117 		gpointer _tmp5_;
1118 		_tmp3_ = node;
1119 		_tmp4_ = value;
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_;
1123 	} else {
1124 		GHashFunc _tmp6_;
1125 		GHashFunc _tmp7_;
1126 		gconstpointer _tmp8_;
1127 		guint _tmp9_ = 0U;
1128 		guint hash_value;
1129 		GeeHashMapNode** _tmp10_;
1130 		gconstpointer _tmp11_;
1131 		gpointer _tmp12_;
1132 		gconstpointer _tmp13_;
1133 		gpointer _tmp14_;
1134 		guint _tmp15_;
1135 		GeeHashMapNode* _tmp16_;
1136 		GeeHashMapNode* _tmp17_;
1137 		gint _tmp18_;
1138 		_tmp6_ = gee_hash_map_get_key_hash_func (self);
1139 		_tmp7_ = _tmp6_;
1140 		_tmp8_ = key;
1141 		_tmp9_ = _tmp7_ (_tmp8_);
1142 		hash_value = _tmp9_;
1143 		_tmp10_ = node;
1144 		_tmp11_ = key;
1145 		_tmp12_ = ((_tmp11_ != NULL) && (self->priv->k_dup_func != NULL)) ? self->priv->k_dup_func ((gpointer) _tmp11_) : ((gpointer) _tmp11_);
1146 		_tmp13_ = value;
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_);
1150 		*_tmp10_ = _tmp16_;
1151 		_tmp17_ = *_tmp10_;
1152 		_tmp18_ = self->priv->_nnodes;
1153 		self->priv->_nnodes = _tmp18_ + 1;
1154 		gee_hash_map_resize (self);
1155 	}
1156 	_tmp19_ = self->priv->_stamp;
1157 	self->priv->_stamp = _tmp19_ + 1;
1158 }
1159 
1160 
1161 /**
1162  * {@inheritDoc}
1163  */
gee_hash_map_real_unset(GeeAbstractMap * base,gconstpointer key,gpointer * value)1164 static gboolean gee_hash_map_real_unset (GeeAbstractMap* base, gconstpointer key, gpointer* value) {
1165 	GeeHashMap * self;
1166 	gpointer _vala_value = NULL;
1167 	gboolean result = FALSE;
1168 	gconstpointer _tmp0_;
1169 	gpointer _tmp1_ = NULL;
1170 	gboolean _tmp2_ = FALSE;
1171 	gboolean b;
1172 	gboolean _tmp3_;
1173 	self = (GeeHashMap*) base;
1174 	_tmp0_ = key;
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_;
1178 	b = _tmp2_;
1179 	_tmp3_ = b;
1180 	if (_tmp3_) {
1181 		gee_hash_map_resize (self);
1182 	}
1183 	result = b;
1184 	if (value) {
1185 		*value = _vala_value;
1186 	} else {
1187 		((_vala_value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_vala_value = (self->priv->v_destroy_func (_vala_value), NULL));
1188 	}
1189 	return result;
1190 }
1191 
1192 
1193 /**
1194  * {@inheritDoc}
1195  */
gee_hash_map_real_clear(GeeAbstractMap * base)1196 static void gee_hash_map_real_clear (GeeAbstractMap* base) {
1197 	GeeHashMap * self;
1198 	self = (GeeHashMap*) base;
1199 	{
1200 		gint i;
1201 		i = 0;
1202 		{
1203 			gboolean _tmp0_;
1204 			_tmp0_ = TRUE;
1205 			while (TRUE) {
1206 				gboolean _tmp1_;
1207 				gint _tmp3_;
1208 				gint _tmp4_;
1209 				GeeHashMapNode** _tmp5_;
1210 				gint _tmp5__length1;
1211 				gint _tmp6_;
1212 				GeeHashMapNode* _tmp7_;
1213 				GeeHashMapNode* node;
1214 				_tmp1_ = _tmp0_;
1215 				if (!_tmp1_) {
1216 					gint _tmp2_;
1217 					_tmp2_ = i;
1218 					i = _tmp2_ + 1;
1219 				}
1220 				_tmp0_ = FALSE;
1221 				_tmp3_ = i;
1222 				_tmp4_ = self->priv->_array_size;
1223 				if (!(_tmp3_ < _tmp4_)) {
1224 					break;
1225 				}
1226 				_tmp5_ = self->priv->_nodes;
1227 				_tmp5__length1 = self->priv->_nodes_length1;
1228 				_tmp6_ = i;
1229 				_tmp7_ = _tmp5_[_tmp6_];
1230 				_tmp5_[_tmp6_] = NULL;
1231 				node = _tmp7_;
1232 				while (TRUE) {
1233 					GeeHashMapNode* _tmp8_;
1234 					GeeHashMapNode* _tmp9_;
1235 					GeeHashMapNode* _tmp10_;
1236 					GeeHashMapNode* next;
1237 					GeeHashMapNode* _tmp11_;
1238 					GeeHashMapNode* _tmp12_;
1239 					GeeHashMapNode* _tmp13_;
1240 					_tmp8_ = node;
1241 					if (!(_tmp8_ != NULL)) {
1242 						break;
1243 					}
1244 					_tmp9_ = node;
1245 					_tmp10_ = _tmp9_->next;
1246 					_tmp9_->next = NULL;
1247 					next = _tmp10_;
1248 					_tmp11_ = node;
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;
1251 					_tmp12_ = node;
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;
1254 					_tmp13_ = next;
1255 					next = NULL;
1256 					_gee_hash_map_node_free0 (node);
1257 					node = _tmp13_;
1258 					_gee_hash_map_node_free0 (next);
1259 				}
1260 				_gee_hash_map_node_free0 (node);
1261 			}
1262 		}
1263 	}
1264 	self->priv->_nnodes = 0;
1265 	gee_hash_map_resize (self);
1266 }
1267 
1268 
1269 /**
1270  * {@inheritDoc}
1271  */
gee_hash_map_real_map_iterator(GeeAbstractMap * base)1272 static GeeMapIterator* gee_hash_map_real_map_iterator (GeeAbstractMap* base) {
1273 	GeeHashMap * self;
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_;
1279 	return result;
1280 }
1281 
1282 
gee_hash_map_unset_helper(GeeHashMap * self,gconstpointer key,gpointer * value)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);
1291 	_tmp0_ = key;
1292 	_tmp1_ = gee_hash_map_lookup_node (self, _tmp0_);
1293 	node = _tmp1_;
1294 	_tmp2_ = node;
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_;
1305 		gint _tmp13_;
1306 		gint _tmp14_;
1307 		_tmp3_ = node;
1308 		_tmp4_ = (*_tmp3_)->next;
1309 		(*_tmp3_)->next = NULL;
1310 		next = _tmp4_;
1311 		if ((&_vala_value) != NULL) {
1312 			GeeHashMapNode** _tmp5_;
1313 			gpointer _tmp6_;
1314 			_tmp5_ = node;
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_;
1319 		}
1320 		_tmp7_ = node;
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;
1323 		_tmp8_ = node;
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;
1326 		_tmp9_ = node;
1327 		gee_hash_map_node_free (*_tmp9_);
1328 		_tmp10_ = node;
1329 		_tmp11_ = next;
1330 		next = NULL;
1331 		*_tmp10_ = _tmp11_;
1332 		_tmp12_ = *_tmp10_;
1333 		_tmp13_ = self->priv->_nnodes;
1334 		self->priv->_nnodes = _tmp13_ - 1;
1335 		_tmp14_ = self->priv->_stamp;
1336 		self->priv->_stamp = _tmp14_ + 1;
1337 		result = TRUE;
1338 		_gee_hash_map_node_free0 (next);
1339 		if (value) {
1340 			*value = _vala_value;
1341 		} else {
1342 			((_vala_value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_vala_value = (self->priv->v_destroy_func (_vala_value), NULL));
1343 		}
1344 		return result;
1345 	} else {
1346 		((_vala_value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_vala_value = (self->priv->v_destroy_func (_vala_value), NULL));
1347 		_vala_value = NULL;
1348 	}
1349 	result = FALSE;
1350 	if (value) {
1351 		*value = _vala_value;
1352 	} else {
1353 		((_vala_value == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_vala_value = (self->priv->v_destroy_func (_vala_value), NULL));
1354 	}
1355 	return result;
1356 }
1357 
1358 
gee_hash_map_resize(GeeHashMap * self)1359 static inline void gee_hash_map_resize (GeeHashMap* self) {
1360 	gboolean _tmp0_ = FALSE;
1361 	gboolean _tmp1_ = FALSE;
1362 	gint _tmp2_;
1363 	gint _tmp3_;
1364 	gboolean _tmp5_;
1365 	gboolean _tmp11_;
1366 	g_return_if_fail (self != NULL);
1367 	_tmp2_ = self->priv->_array_size;
1368 	_tmp3_ = self->priv->_nnodes;
1369 	if (_tmp2_ >= (3 * _tmp3_)) {
1370 		gint _tmp4_;
1371 		_tmp4_ = self->priv->_array_size;
1372 		_tmp1_ = _tmp4_ >= GEE_HASH_MAP_MIN_SIZE;
1373 	} else {
1374 		_tmp1_ = FALSE;
1375 	}
1376 	_tmp5_ = _tmp1_;
1377 	if (_tmp5_) {
1378 		_tmp0_ = TRUE;
1379 	} else {
1380 		gboolean _tmp6_ = FALSE;
1381 		gint _tmp7_;
1382 		gint _tmp8_;
1383 		gboolean _tmp10_;
1384 		_tmp7_ = self->priv->_array_size;
1385 		_tmp8_ = self->priv->_nnodes;
1386 		if ((3 * _tmp7_) <= _tmp8_) {
1387 			gint _tmp9_;
1388 			_tmp9_ = self->priv->_array_size;
1389 			_tmp6_ = _tmp9_ < GEE_HASH_MAP_MAX_SIZE;
1390 		} else {
1391 			_tmp6_ = FALSE;
1392 		}
1393 		_tmp10_ = _tmp6_;
1394 		_tmp0_ = _tmp10_;
1395 	}
1396 	_tmp11_ = _tmp0_;
1397 	if (_tmp11_) {
1398 		gint _tmp12_;
1399 		guint _tmp13_ = 0U;
1400 		gint new_array_size;
1401 		gint _tmp14_;
1402 		gint _tmp15_ = 0;
1403 		gint _tmp16_;
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;
1410 		gint _tmp44_;
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;
1422 		{
1423 			gint i;
1424 			i = 0;
1425 			{
1426 				gboolean _tmp18_;
1427 				_tmp18_ = TRUE;
1428 				while (TRUE) {
1429 					gboolean _tmp19_;
1430 					gint _tmp21_;
1431 					gint _tmp22_;
1432 					GeeHashMapNode* node = NULL;
1433 					GeeHashMapNode* next;
1434 					_tmp19_ = _tmp18_;
1435 					if (!_tmp19_) {
1436 						gint _tmp20_;
1437 						_tmp20_ = i;
1438 						i = _tmp20_ + 1;
1439 					}
1440 					_tmp18_ = FALSE;
1441 					_tmp21_ = i;
1442 					_tmp22_ = self->priv->_array_size;
1443 					if (!(_tmp21_ < _tmp22_)) {
1444 						break;
1445 					}
1446 					next = NULL;
1447 					{
1448 						GeeHashMapNode** _tmp23_;
1449 						gint _tmp23__length1;
1450 						gint _tmp24_;
1451 						GeeHashMapNode* _tmp25_;
1452 						gboolean _tmp26_;
1453 						_tmp23_ = self->priv->_nodes;
1454 						_tmp23__length1 = self->priv->_nodes_length1;
1455 						_tmp24_ = i;
1456 						_tmp25_ = _tmp23_[_tmp24_];
1457 						_tmp23_[_tmp24_] = NULL;
1458 						_gee_hash_map_node_free0 (node);
1459 						node = _tmp25_;
1460 						_tmp26_ = TRUE;
1461 						while (TRUE) {
1462 							gboolean _tmp27_;
1463 							GeeHashMapNode* _tmp29_;
1464 							GeeHashMapNode* _tmp30_;
1465 							GeeHashMapNode* _tmp31_;
1466 							GeeHashMapNode* _tmp32_;
1467 							guint _tmp33_;
1468 							gint _tmp34_;
1469 							guint hash_val;
1470 							GeeHashMapNode* _tmp35_;
1471 							GeeHashMapNode** _tmp36_;
1472 							gint _tmp36__length1;
1473 							guint _tmp37_;
1474 							GeeHashMapNode* _tmp38_;
1475 							GeeHashMapNode** _tmp39_;
1476 							gint _tmp39__length1;
1477 							guint _tmp40_;
1478 							GeeHashMapNode* _tmp41_;
1479 							GeeHashMapNode* _tmp42_;
1480 							_tmp27_ = _tmp26_;
1481 							if (!_tmp27_) {
1482 								GeeHashMapNode* _tmp28_;
1483 								_tmp28_ = next;
1484 								next = NULL;
1485 								_gee_hash_map_node_free0 (node);
1486 								node = _tmp28_;
1487 							}
1488 							_tmp26_ = FALSE;
1489 							_tmp29_ = node;
1490 							if (!(_tmp29_ != NULL)) {
1491 								break;
1492 							}
1493 							_tmp30_ = node;
1494 							_tmp31_ = _tmp30_->next;
1495 							_tmp30_->next = NULL;
1496 							_gee_hash_map_node_free0 (next);
1497 							next = _tmp31_;
1498 							_tmp32_ = node;
1499 							_tmp33_ = _tmp32_->key_hash;
1500 							_tmp34_ = new_array_size;
1501 							hash_val = _tmp33_ % _tmp34_;
1502 							_tmp35_ = node;
1503 							_tmp36_ = new_nodes;
1504 							_tmp36__length1 = new_nodes_length1;
1505 							_tmp37_ = hash_val;
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;
1512 							_tmp40_ = hash_val;
1513 							_tmp41_ = node;
1514 							node = NULL;
1515 							_gee_hash_map_node_free0 (_tmp39_[_tmp40_]);
1516 							_tmp39_[_tmp40_] = _tmp41_;
1517 							_tmp42_ = _tmp39_[_tmp40_];
1518 						}
1519 					}
1520 					_gee_hash_map_node_free0 (next);
1521 					_gee_hash_map_node_free0 (node);
1522 				}
1523 			}
1524 		}
1525 		_tmp43_ = new_nodes;
1526 		_tmp43__length1 = new_nodes_length1;
1527 		new_nodes = NULL;
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);
1535 	}
1536 }
1537 
1538 
gee_hash_map_real_get_size(GeeAbstractMap * base)1539 static gint gee_hash_map_real_get_size (GeeAbstractMap* base) {
1540 	gint result;
1541 	GeeHashMap* self;
1542 	gint _tmp0_;
1543 	self = (GeeHashMap*) base;
1544 	_tmp0_ = self->priv->_nnodes;
1545 	result = _tmp0_;
1546 	return result;
1547 }
1548 
1549 
_g_object_ref0(gpointer self)1550 static gpointer _g_object_ref0 (gpointer self) {
1551 	return self ? g_object_ref (self) : NULL;
1552 }
1553 
1554 
gee_hash_map_real_get_keys(GeeAbstractMap * base)1555 static GeeSet* gee_hash_map_real_get_keys (GeeAbstractMap* base) {
1556 	GeeSet* result;
1557 	GeeHashMap* self;
1558 	GeeSet* _tmp0_;
1559 	GeeSet* _tmp1_;
1560 	GeeSet* keys;
1561 	GeeSet* _tmp2_;
1562 	self = (GeeHashMap*) base;
1563 	_tmp0_ = self->priv->_keys;
1564 	_tmp1_ = _g_object_ref0 (_tmp0_);
1565 	keys = _tmp1_;
1566 	_tmp2_ = self->priv->_keys;
1567 	if (_tmp2_ == NULL) {
1568 		GeeHashMapKeySet* _tmp3_;
1569 		GeeSet* _tmp4_;
1570 		GeeSet* _tmp5_;
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_;
1574 		_tmp4_ = keys;
1575 		self->priv->_keys = _tmp4_;
1576 		_tmp5_ = keys;
1577 		g_object_add_weak_pointer ((GObject*) _tmp5_, (void**) (&self->priv->_keys));
1578 	}
1579 	result = keys;
1580 	return result;
1581 }
1582 
1583 
gee_hash_map_real_get_values(GeeAbstractMap * base)1584 static GeeCollection* gee_hash_map_real_get_values (GeeAbstractMap* base) {
1585 	GeeCollection* result;
1586 	GeeHashMap* self;
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_);
1594 	values = _tmp1_;
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_;
1603 		_tmp4_ = values;
1604 		self->priv->_values = _tmp4_;
1605 		_tmp5_ = values;
1606 		g_object_add_weak_pointer ((GObject*) _tmp5_, (void**) (&self->priv->_values));
1607 	}
1608 	result = values;
1609 	return result;
1610 }
1611 
1612 
gee_hash_map_real_get_entries(GeeAbstractMap * base)1613 static GeeSet* gee_hash_map_real_get_entries (GeeAbstractMap* base) {
1614 	GeeSet* result;
1615 	GeeHashMap* self;
1616 	GeeSet* _tmp0_;
1617 	GeeSet* _tmp1_;
1618 	GeeSet* entries;
1619 	GeeSet* _tmp2_;
1620 	self = (GeeHashMap*) base;
1621 	_tmp0_ = self->priv->_entries;
1622 	_tmp1_ = _g_object_ref0 (_tmp0_);
1623 	entries = _tmp1_;
1624 	_tmp2_ = self->priv->_entries;
1625 	if (_tmp2_ == NULL) {
1626 		GeeHashMapEntrySet* _tmp3_;
1627 		GeeSet* _tmp4_;
1628 		GeeSet* _tmp5_;
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_;
1632 		_tmp4_ = entries;
1633 		self->priv->_entries = _tmp4_;
1634 		_tmp5_ = entries;
1635 		g_object_add_weak_pointer ((GObject*) _tmp5_, (void**) (&self->priv->_entries));
1636 	}
1637 	result = entries;
1638 	return result;
1639 }
1640 
1641 
gee_hash_map_get_key_hash_func(GeeHashMap * self)1642 GHashFunc gee_hash_map_get_key_hash_func (GeeHashMap* self) {
1643 	GHashFunc result;
1644 	GHashFunc _tmp0_;
1645 	g_return_val_if_fail (self != NULL, NULL);
1646 	_tmp0_ = self->priv->_key_hash_func;
1647 	result = _tmp0_;
1648 	return result;
1649 }
1650 
1651 
gee_hash_map_set_key_hash_func(GeeHashMap * self,GHashFunc value)1652 static void gee_hash_map_set_key_hash_func (GeeHashMap* self, GHashFunc value) {
1653 	GHashFunc _tmp0_;
1654 	g_return_if_fail (self != NULL);
1655 	_tmp0_ = value;
1656 	self->priv->_key_hash_func = _tmp0_;
1657 	g_object_notify ((GObject *) self, "key-hash-func");
1658 }
1659 
1660 
gee_hash_map_get_key_equal_func(GeeHashMap * self)1661 GEqualFunc gee_hash_map_get_key_equal_func (GeeHashMap* self) {
1662 	GEqualFunc result;
1663 	GEqualFunc _tmp0_;
1664 	g_return_val_if_fail (self != NULL, NULL);
1665 	_tmp0_ = self->priv->_key_equal_func;
1666 	result = _tmp0_;
1667 	return result;
1668 }
1669 
1670 
gee_hash_map_set_key_equal_func(GeeHashMap * self,GEqualFunc value)1671 static void gee_hash_map_set_key_equal_func (GeeHashMap* self, GEqualFunc value) {
1672 	GEqualFunc _tmp0_;
1673 	g_return_if_fail (self != NULL);
1674 	_tmp0_ = value;
1675 	self->priv->_key_equal_func = _tmp0_;
1676 	g_object_notify ((GObject *) self, "key-equal-func");
1677 }
1678 
1679 
gee_hash_map_get_value_equal_func(GeeHashMap * self)1680 GEqualFunc gee_hash_map_get_value_equal_func (GeeHashMap* self) {
1681 	GEqualFunc result;
1682 	GEqualFunc _tmp0_;
1683 	g_return_val_if_fail (self != NULL, NULL);
1684 	_tmp0_ = self->priv->_value_equal_func;
1685 	result = _tmp0_;
1686 	return result;
1687 }
1688 
1689 
gee_hash_map_set_value_equal_func(GeeHashMap * self,GEqualFunc value)1690 static void gee_hash_map_set_value_equal_func (GeeHashMap* self, GEqualFunc value) {
1691 	GEqualFunc _tmp0_;
1692 	g_return_if_fail (self != NULL);
1693 	_tmp0_ = value;
1694 	self->priv->_value_equal_func = _tmp0_;
1695 	g_object_notify ((GObject *) self, "value-equal-func");
1696 }
1697 
1698 
gee_hash_map_node_new(gpointer k,gpointer v,guint hash)1699 static GeeHashMapNode* gee_hash_map_node_new (gpointer k, gpointer v, guint hash) {
1700 	GeeHashMapNode* self;
1701 	gpointer _tmp0_;
1702 	gpointer _tmp1_;
1703 	guint _tmp2_;
1704 	self = g_slice_new0 (GeeHashMapNode);
1705 	gee_hash_map_node_instance_init (self);
1706 	_tmp0_ = k;
1707 	k = NULL;
1708 	self->key = _tmp0_;
1709 	_tmp1_ = v;
1710 	v = NULL;
1711 	self->value = _tmp1_;
1712 	_tmp2_ = hash;
1713 	self->key_hash = _tmp2_;
1714 	self->entry = NULL;
1715 	return self;
1716 }
1717 
1718 
gee_hash_map_node_instance_init(GeeHashMapNode * self)1719 static void gee_hash_map_node_instance_init (GeeHashMapNode * self) {
1720 }
1721 
1722 
gee_hash_map_node_free(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);
1726 }
1727 
1728 
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)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);
1738 	_tmp0_ = node;
1739 	_tmp1_ = _tmp0_->entry;
1740 	_tmp2_ = _g_object_ref0 (_tmp1_);
1741 	_result_ = _tmp2_;
1742 	_tmp3_ = node;
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_;
1751 		_tmp5_ = node;
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_;
1755 		_tmp7_ = node;
1756 		_tmp8_ = _result_;
1757 		_tmp7_->entry = _tmp8_;
1758 		_tmp9_ = _result_;
1759 		_tmp10_ = node;
1760 		g_object_add_weak_pointer ((GObject*) _tmp9_, (void**) (&_tmp10_->entry));
1761 	}
1762 	result = _result_;
1763 	return result;
1764 }
1765 
1766 
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)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;
1778 	_tmp0_ = node;
1779 	self->priv->_node = _tmp0_;
1780 	return self;
1781 }
1782 
1783 
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)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);
1786 }
1787 
1788 
gee_hash_map_entry_real_get_key(GeeMapEntry * base)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;
1797 	result = _tmp1_;
1798 	return result;
1799 }
1800 
1801 
gee_hash_map_entry_real_get_value(GeeMapEntry * base)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;
1810 	result = _tmp1_;
1811 	return result;
1812 }
1813 
1814 
gee_hash_map_entry_real_set_value(GeeMapEntry * base,gconstpointer value)1815 static void gee_hash_map_entry_real_set_value (GeeMapEntry* base, gconstpointer value) {
1816 	GeeHashMapEntry* self;
1817 	GeeHashMapNode* _tmp0_;
1818 	gconstpointer _tmp1_;
1819 	gpointer _tmp2_;
1820 	self = (GeeHashMapEntry*) base;
1821 	_tmp0_ = self->priv->_node;
1822 	_tmp1_ = value;
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");
1827 }
1828 
1829 
gee_hash_map_entry_class_init(GeeHashMapEntryClass * klass)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));
1847 }
1848 
1849 
gee_hash_map_entry_instance_init(GeeHashMapEntry * self)1850 static void gee_hash_map_entry_instance_init (GeeHashMapEntry * self) {
1851 	self->priv = GEE_HASH_MAP_ENTRY_GET_PRIVATE (self);
1852 }
1853 
1854 
gee_hash_map_entry_finalize(GObject * obj)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);
1859 }
1860 
1861 
gee_hash_map_entry_get_type(void)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);
1869 	}
1870 	return gee_hash_map_entry_type_id__volatile;
1871 }
1872 
1873 
_vala_gee_hash_map_entry_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)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));
1880 		break;
1881 		case GEE_HASH_MAP_ENTRY_VALUE:
1882 		g_value_set_pointer (value, gee_map_entry_get_value ((GeeMapEntry*) self));
1883 		break;
1884 		default:
1885 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
1886 		break;
1887 	}
1888 }
1889 
1890 
_vala_gee_hash_map_entry_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * 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));
1897 		break;
1898 		case GEE_HASH_MAP_ENTRY_K_TYPE:
1899 		self->priv->k_type = g_value_get_gtype (value);
1900 		break;
1901 		case GEE_HASH_MAP_ENTRY_K_DUP_FUNC:
1902 		self->priv->k_dup_func = g_value_get_pointer (value);
1903 		break;
1904 		case GEE_HASH_MAP_ENTRY_K_DESTROY_FUNC:
1905 		self->priv->k_destroy_func = g_value_get_pointer (value);
1906 		break;
1907 		case GEE_HASH_MAP_ENTRY_V_TYPE:
1908 		self->priv->v_type = g_value_get_gtype (value);
1909 		break;
1910 		case GEE_HASH_MAP_ENTRY_V_DUP_FUNC:
1911 		self->priv->v_dup_func = g_value_get_pointer (value);
1912 		break;
1913 		case GEE_HASH_MAP_ENTRY_V_DESTROY_FUNC:
1914 		self->priv->v_destroy_func = g_value_get_pointer (value);
1915 		break;
1916 		default:
1917 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
1918 		break;
1919 	}
1920 }
1921 
1922 
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)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;
1925 	GeeHashMap* _tmp0_;
1926 	GeeHashMap* _tmp1_;
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;
1935 	_tmp0_ = map;
1936 	_tmp1_ = _g_object_ref0 (_tmp0_);
1937 	_g_object_unref0 (self->priv->_map);
1938 	self->priv->_map = _tmp1_;
1939 	return self;
1940 }
1941 
1942 
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)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);
1945 }
1946 
1947 
gee_hash_map_key_set_real_iterator(GeeAbstractCollection * base)1948 static GeeIterator* gee_hash_map_key_set_real_iterator (GeeAbstractCollection* base) {
1949 	GeeHashMapKeySet * self;
1950 	GeeIterator* result = NULL;
1951 	GeeHashMap* _tmp0_;
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_;
1957 	return result;
1958 }
1959 
1960 
gee_hash_map_key_set_real_add(GeeAbstractCollection * base,gconstpointer key)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 ();
1966 	return result;
1967 }
1968 
1969 
gee_hash_map_key_set_real_clear(GeeAbstractCollection * base)1970 static void gee_hash_map_key_set_real_clear (GeeAbstractCollection* base) {
1971 	GeeHashMapKeySet * self;
1972 	self = (GeeHashMapKeySet*) base;
1973 	g_assert_not_reached ();
1974 }
1975 
1976 
gee_hash_map_key_set_real_remove(GeeAbstractCollection * base,gconstpointer key)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 ();
1982 	return result;
1983 }
1984 
1985 
gee_hash_map_key_set_real_contains(GeeAbstractCollection * base,gconstpointer key)1986 static gboolean gee_hash_map_key_set_real_contains (GeeAbstractCollection* base, gconstpointer key) {
1987 	GeeHashMapKeySet * self;
1988 	gboolean result = FALSE;
1989 	GeeHashMap* _tmp0_;
1990 	gconstpointer _tmp1_;
1991 	gboolean _tmp2_ = FALSE;
1992 	self = (GeeHashMapKeySet*) base;
1993 	_tmp0_ = self->priv->_map;
1994 	_tmp1_ = key;
1995 	_tmp2_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp0_, _tmp1_);
1996 	result = _tmp2_;
1997 	return result;
1998 }
1999 
2000 
gee_hash_map_key_set_real_add_all(GeeAbstractCollection * base,GeeCollection * collection)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 ();
2007 	return result;
2008 }
2009 
2010 
gee_hash_map_key_set_real_remove_all(GeeAbstractCollection * base,GeeCollection * collection)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 ();
2017 	return result;
2018 }
2019 
2020 
gee_hash_map_key_set_real_retain_all(GeeAbstractCollection * base,GeeCollection * collection)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 ();
2027 	return result;
2028 }
2029 
2030 
gee_hash_map_key_set_real_get_size(GeeAbstractCollection * base)2031 static gint gee_hash_map_key_set_real_get_size (GeeAbstractCollection* base) {
2032 	gint result;
2033 	GeeHashMapKeySet* self;
2034 	GeeHashMap* _tmp0_;
2035 	gint _tmp1_;
2036 	gint _tmp2_;
2037 	self = (GeeHashMapKeySet*) base;
2038 	_tmp0_ = self->priv->_map;
2039 	_tmp1_ = gee_abstract_map_get_size ((GeeMap*) _tmp0_);
2040 	_tmp2_ = _tmp1_;
2041 	result = _tmp2_;
2042 	return result;
2043 }
2044 
2045 
gee_hash_map_key_set_class_init(GeeHashMapKeySetClass * klass)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));
2068 }
2069 
2070 
gee_hash_map_key_set_instance_init(GeeHashMapKeySet * self)2071 static void gee_hash_map_key_set_instance_init (GeeHashMapKeySet * self) {
2072 	self->priv = GEE_HASH_MAP_KEY_SET_GET_PRIVATE (self);
2073 }
2074 
2075 
gee_hash_map_key_set_finalize(GObject * obj)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);
2081 }
2082 
2083 
gee_hash_map_key_set_get_type(void)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);
2091 	}
2092 	return gee_hash_map_key_set_type_id__volatile;
2093 }
2094 
2095 
_vala_gee_hash_map_key_set_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)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));
2102 		break;
2103 		default:
2104 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2105 		break;
2106 	}
2107 }
2108 
2109 
_vala_gee_hash_map_key_set_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * 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);
2116 		break;
2117 		case GEE_HASH_MAP_KEY_SET_K_DUP_FUNC:
2118 		self->priv->k_dup_func = g_value_get_pointer (value);
2119 		break;
2120 		case GEE_HASH_MAP_KEY_SET_K_DESTROY_FUNC:
2121 		self->priv->k_destroy_func = g_value_get_pointer (value);
2122 		break;
2123 		case GEE_HASH_MAP_KEY_SET_V_TYPE:
2124 		self->priv->v_type = g_value_get_gtype (value);
2125 		break;
2126 		case GEE_HASH_MAP_KEY_SET_V_DUP_FUNC:
2127 		self->priv->v_dup_func = g_value_get_pointer (value);
2128 		break;
2129 		case GEE_HASH_MAP_KEY_SET_V_DESTROY_FUNC:
2130 		self->priv->v_destroy_func = g_value_get_pointer (value);
2131 		break;
2132 		default:
2133 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2134 		break;
2135 	}
2136 }
2137 
2138 
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)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;
2141 	GeeHashMap* _tmp0_;
2142 	GeeHashMap* _tmp1_;
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;
2151 	_tmp0_ = map;
2152 	_tmp1_ = _g_object_ref0 (_tmp0_);
2153 	_g_object_unref0 (self->priv->_map);
2154 	self->priv->_map = _tmp1_;
2155 	return self;
2156 }
2157 
2158 
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)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);
2161 }
2162 
2163 
gee_hash_map_value_collection_real_iterator(GeeAbstractCollection * base)2164 static GeeIterator* gee_hash_map_value_collection_real_iterator (GeeAbstractCollection* base) {
2165 	GeeHashMapValueCollection * self;
2166 	GeeIterator* result = NULL;
2167 	GeeHashMap* _tmp0_;
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_;
2173 	return result;
2174 }
2175 
2176 
gee_hash_map_value_collection_real_add(GeeAbstractCollection * base,gconstpointer value)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 ();
2182 	return result;
2183 }
2184 
2185 
gee_hash_map_value_collection_real_clear(GeeAbstractCollection * base)2186 static void gee_hash_map_value_collection_real_clear (GeeAbstractCollection* base) {
2187 	GeeHashMapValueCollection * self;
2188 	self = (GeeHashMapValueCollection*) base;
2189 	g_assert_not_reached ();
2190 }
2191 
2192 
gee_hash_map_value_collection_real_remove(GeeAbstractCollection * base,gconstpointer value)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 ();
2198 	return result;
2199 }
2200 
2201 
gee_hash_map_value_collection_real_contains(GeeAbstractCollection * base,gconstpointer value)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;
2206 	GeeIterator* it;
2207 	self = (GeeHashMapValueCollection*) base;
2208 	_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self);
2209 	it = _tmp0_;
2210 	while (TRUE) {
2211 		GeeIterator* _tmp1_;
2212 		gboolean _tmp2_ = FALSE;
2213 		GeeHashMap* _tmp3_;
2214 		GEqualFunc _tmp4_;
2215 		GEqualFunc _tmp5_;
2216 		GeeIterator* _tmp6_;
2217 		gpointer _tmp7_ = NULL;
2218 		gpointer _tmp8_;
2219 		gconstpointer _tmp9_;
2220 		gboolean _tmp10_ = FALSE;
2221 		gboolean _tmp11_;
2222 		_tmp1_ = it;
2223 		_tmp2_ = gee_iterator_next (_tmp1_);
2224 		if (!_tmp2_) {
2225 			break;
2226 		}
2227 		_tmp3_ = self->priv->_map;
2228 		_tmp4_ = gee_hash_map_get_value_equal_func (_tmp3_);
2229 		_tmp5_ = _tmp4_;
2230 		_tmp6_ = it;
2231 		_tmp7_ = gee_iterator_get (_tmp6_);
2232 		_tmp8_ = _tmp7_;
2233 		_tmp9_ = value;
2234 		_tmp10_ = _tmp5_ (_tmp8_, _tmp9_);
2235 		_tmp11_ = _tmp10_;
2236 		((_tmp8_ == NULL) || (self->priv->v_destroy_func == NULL)) ? NULL : (_tmp8_ = (self->priv->v_destroy_func (_tmp8_), NULL));
2237 		if (_tmp11_) {
2238 			result = TRUE;
2239 			_g_object_unref0 (it);
2240 			return result;
2241 		}
2242 	}
2243 	result = FALSE;
2244 	_g_object_unref0 (it);
2245 	return result;
2246 }
2247 
2248 
gee_hash_map_value_collection_real_add_all(GeeAbstractCollection * base,GeeCollection * collection)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 ();
2255 	return result;
2256 }
2257 
2258 
gee_hash_map_value_collection_real_remove_all(GeeAbstractCollection * base,GeeCollection * collection)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 ();
2265 	return result;
2266 }
2267 
2268 
gee_hash_map_value_collection_real_retain_all(GeeAbstractCollection * base,GeeCollection * collection)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 ();
2275 	return result;
2276 }
2277 
2278 
gee_hash_map_value_collection_real_get_size(GeeAbstractCollection * base)2279 static gint gee_hash_map_value_collection_real_get_size (GeeAbstractCollection* base) {
2280 	gint result;
2281 	GeeHashMapValueCollection* self;
2282 	GeeHashMap* _tmp0_;
2283 	gint _tmp1_;
2284 	gint _tmp2_;
2285 	self = (GeeHashMapValueCollection*) base;
2286 	_tmp0_ = self->priv->_map;
2287 	_tmp1_ = gee_abstract_map_get_size ((GeeMap*) _tmp0_);
2288 	_tmp2_ = _tmp1_;
2289 	result = _tmp2_;
2290 	return result;
2291 }
2292 
2293 
gee_hash_map_value_collection_class_init(GeeHashMapValueCollectionClass * klass)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));
2316 }
2317 
2318 
gee_hash_map_value_collection_instance_init(GeeHashMapValueCollection * self)2319 static void gee_hash_map_value_collection_instance_init (GeeHashMapValueCollection * self) {
2320 	self->priv = GEE_HASH_MAP_VALUE_COLLECTION_GET_PRIVATE (self);
2321 }
2322 
2323 
gee_hash_map_value_collection_finalize(GObject * obj)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);
2329 }
2330 
2331 
gee_hash_map_value_collection_get_type(void)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);
2339 	}
2340 	return gee_hash_map_value_collection_type_id__volatile;
2341 }
2342 
2343 
_vala_gee_hash_map_value_collection_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)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));
2350 		break;
2351 		default:
2352 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2353 		break;
2354 	}
2355 }
2356 
2357 
_vala_gee_hash_map_value_collection_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * 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);
2364 		break;
2365 		case GEE_HASH_MAP_VALUE_COLLECTION_K_DUP_FUNC:
2366 		self->priv->k_dup_func = g_value_get_pointer (value);
2367 		break;
2368 		case GEE_HASH_MAP_VALUE_COLLECTION_K_DESTROY_FUNC:
2369 		self->priv->k_destroy_func = g_value_get_pointer (value);
2370 		break;
2371 		case GEE_HASH_MAP_VALUE_COLLECTION_V_TYPE:
2372 		self->priv->v_type = g_value_get_gtype (value);
2373 		break;
2374 		case GEE_HASH_MAP_VALUE_COLLECTION_V_DUP_FUNC:
2375 		self->priv->v_dup_func = g_value_get_pointer (value);
2376 		break;
2377 		case GEE_HASH_MAP_VALUE_COLLECTION_V_DESTROY_FUNC:
2378 		self->priv->v_destroy_func = g_value_get_pointer (value);
2379 		break;
2380 		default:
2381 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2382 		break;
2383 	}
2384 }
2385 
2386 
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)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;
2389 	GeeHashMap* _tmp0_;
2390 	GeeHashMap* _tmp1_;
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;
2399 	_tmp0_ = map;
2400 	_tmp1_ = _g_object_ref0 (_tmp0_);
2401 	_g_object_unref0 (self->priv->_map);
2402 	self->priv->_map = _tmp1_;
2403 	return self;
2404 }
2405 
2406 
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)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);
2409 }
2410 
2411 
gee_hash_map_entry_set_real_iterator(GeeAbstractCollection * base)2412 static GeeIterator* gee_hash_map_entry_set_real_iterator (GeeAbstractCollection* base) {
2413 	GeeHashMapEntrySet * self;
2414 	GeeIterator* result = NULL;
2415 	GeeHashMap* _tmp0_;
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_;
2421 	return result;
2422 }
2423 
2424 
gee_hash_map_entry_set_real_add(GeeAbstractCollection * base,GeeMapEntry * entry)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 ();
2431 	return result;
2432 }
2433 
2434 
gee_hash_map_entry_set_real_clear(GeeAbstractCollection * base)2435 static void gee_hash_map_entry_set_real_clear (GeeAbstractCollection* base) {
2436 	GeeHashMapEntrySet * self;
2437 	self = (GeeHashMapEntrySet*) base;
2438 	g_assert_not_reached ();
2439 }
2440 
2441 
gee_hash_map_entry_set_real_remove(GeeAbstractCollection * base,GeeMapEntry * entry)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 ();
2448 	return result;
2449 }
2450 
2451 
gee_hash_map_entry_set_real_contains(GeeAbstractCollection * base,GeeMapEntry * entry)2452 static gboolean gee_hash_map_entry_set_real_contains (GeeAbstractCollection* base, GeeMapEntry* entry) {
2453 	GeeHashMapEntrySet * self;
2454 	gboolean result = FALSE;
2455 	GeeHashMap* _tmp0_;
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;
2466 	_tmp1_ = entry;
2467 	_tmp2_ = gee_map_entry_get_key (_tmp1_);
2468 	_tmp3_ = _tmp2_;
2469 	_tmp4_ = entry;
2470 	_tmp5_ = gee_map_entry_get_value (_tmp4_);
2471 	_tmp6_ = _tmp5_;
2472 	_tmp7_ = gee_abstract_map_has ((GeeAbstractMap*) _tmp0_, _tmp3_, _tmp6_);
2473 	result = _tmp7_;
2474 	return result;
2475 }
2476 
2477 
gee_hash_map_entry_set_real_add_all(GeeAbstractCollection * base,GeeCollection * entries)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 ();
2484 	return result;
2485 }
2486 
2487 
gee_hash_map_entry_set_real_remove_all(GeeAbstractCollection * base,GeeCollection * entries)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 ();
2494 	return result;
2495 }
2496 
2497 
gee_hash_map_entry_set_real_retain_all(GeeAbstractCollection * base,GeeCollection * entries)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 ();
2504 	return result;
2505 }
2506 
2507 
gee_hash_map_entry_set_real_get_size(GeeAbstractCollection * base)2508 static gint gee_hash_map_entry_set_real_get_size (GeeAbstractCollection* base) {
2509 	gint result;
2510 	GeeHashMapEntrySet* self;
2511 	GeeHashMap* _tmp0_;
2512 	gint _tmp1_;
2513 	gint _tmp2_;
2514 	self = (GeeHashMapEntrySet*) base;
2515 	_tmp0_ = self->priv->_map;
2516 	_tmp1_ = gee_abstract_map_get_size ((GeeMap*) _tmp0_);
2517 	_tmp2_ = _tmp1_;
2518 	result = _tmp2_;
2519 	return result;
2520 }
2521 
2522 
gee_hash_map_entry_set_class_init(GeeHashMapEntrySetClass * klass)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));
2545 }
2546 
2547 
gee_hash_map_entry_set_instance_init(GeeHashMapEntrySet * self)2548 static void gee_hash_map_entry_set_instance_init (GeeHashMapEntrySet * self) {
2549 	self->priv = GEE_HASH_MAP_ENTRY_SET_GET_PRIVATE (self);
2550 }
2551 
2552 
gee_hash_map_entry_set_finalize(GObject * obj)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);
2558 }
2559 
2560 
gee_hash_map_entry_set_get_type(void)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);
2568 	}
2569 	return gee_hash_map_entry_set_type_id__volatile;
2570 }
2571 
2572 
_vala_gee_hash_map_entry_set_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)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));
2579 		break;
2580 		default:
2581 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2582 		break;
2583 	}
2584 }
2585 
2586 
_vala_gee_hash_map_entry_set_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * 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);
2593 		break;
2594 		case GEE_HASH_MAP_ENTRY_SET_K_DUP_FUNC:
2595 		self->priv->k_dup_func = g_value_get_pointer (value);
2596 		break;
2597 		case GEE_HASH_MAP_ENTRY_SET_K_DESTROY_FUNC:
2598 		self->priv->k_destroy_func = g_value_get_pointer (value);
2599 		break;
2600 		case GEE_HASH_MAP_ENTRY_SET_V_TYPE:
2601 		self->priv->v_type = g_value_get_gtype (value);
2602 		break;
2603 		case GEE_HASH_MAP_ENTRY_SET_V_DUP_FUNC:
2604 		self->priv->v_dup_func = g_value_get_pointer (value);
2605 		break;
2606 		case GEE_HASH_MAP_ENTRY_SET_V_DESTROY_FUNC:
2607 		self->priv->v_destroy_func = g_value_get_pointer (value);
2608 		break;
2609 		default:
2610 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2611 		break;
2612 	}
2613 }
2614 
2615 
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)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;
2618 	GeeHashMap* _tmp0_;
2619 	GeeHashMap* _tmp1_;
2620 	GeeHashMap* _tmp2_;
2621 	gint _tmp3_;
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;
2630 	_tmp0_ = map;
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_;
2637 	return self;
2638 }
2639 
2640 
gee_hash_map_node_iterator_next(GeeHashMapNodeIterator * self)2641 static gboolean gee_hash_map_node_iterator_next (GeeHashMapNodeIterator* self) {
2642 	gboolean result = FALSE;
2643 	gint _tmp0_;
2644 	GeeHashMap* _tmp1_;
2645 	gint _tmp2_;
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);
2655 	if (!_tmp3_) {
2656 		result = FALSE;
2657 		return result;
2658 	}
2659 	_tmp4_ = self->_next;
2660 	self->_node = _tmp4_;
2661 	self->_next = NULL;
2662 	_tmp5_ = self->_node;
2663 	result = _tmp5_ != NULL;
2664 	return result;
2665 }
2666 
2667 
gee_hash_map_node_iterator_has_next(GeeHashMapNodeIterator * self)2668 static gboolean gee_hash_map_node_iterator_has_next (GeeHashMapNodeIterator* self) {
2669 	gboolean result = FALSE;
2670 	gint _tmp0_;
2671 	GeeHashMap* _tmp1_;
2672 	gint _tmp2_;
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_;
2693 		}
2694 		while (TRUE) {
2695 			gboolean _tmp8_ = FALSE;
2696 			GeeHashMapNode* _tmp9_;
2697 			gboolean _tmp13_;
2698 			gint _tmp14_;
2699 			GeeHashMap* _tmp15_;
2700 			GeeHashMapNode** _tmp16_;
2701 			gint _tmp16__length1;
2702 			gint _tmp17_;
2703 			GeeHashMapNode* _tmp18_;
2704 			_tmp9_ = self->_next;
2705 			if (_tmp9_ == NULL) {
2706 				gint _tmp10_;
2707 				GeeHashMap* _tmp11_;
2708 				gint _tmp12_;
2709 				_tmp10_ = self->priv->_index;
2710 				_tmp11_ = self->_map;
2711 				_tmp12_ = _tmp11_->priv->_array_size;
2712 				_tmp8_ = (_tmp10_ + 1) < _tmp12_;
2713 			} else {
2714 				_tmp8_ = FALSE;
2715 			}
2716 			_tmp13_ = _tmp8_;
2717 			if (!_tmp13_) {
2718 				break;
2719 			}
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_;
2728 		}
2729 	}
2730 	_tmp19_ = self->_next;
2731 	result = _tmp19_ != NULL;
2732 	return result;
2733 }
2734 
2735 
gee_hash_map_node_iterator_first(GeeHashMapNodeIterator * self)2736 static gboolean gee_hash_map_node_iterator_first (GeeHashMapNodeIterator* self) {
2737 	gboolean result = FALSE;
2738 	gint _tmp0_;
2739 	GeeHashMap* _tmp1_;
2740 	gint _tmp2_;
2741 	GeeHashMap* _tmp3_;
2742 	gint _tmp4_;
2743 	gint _tmp5_;
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_);
2752 	_tmp5_ = _tmp4_;
2753 	if (_tmp5_ == 0) {
2754 		result = FALSE;
2755 		return result;
2756 	}
2757 	self->priv->_index = -1;
2758 	self->_next = NULL;
2759 	_tmp6_ = gee_hash_map_node_iterator_next (self);
2760 	result = _tmp6_;
2761 	return result;
2762 }
2763 
2764 
gee_hash_map_node_iterator_class_init(GeeHashMapNodeIteratorClass * klass)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));
2777 }
2778 
2779 
gee_hash_map_node_iterator_instance_init(GeeHashMapNodeIterator * self)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;
2783 }
2784 
2785 
gee_hash_map_node_iterator_finalize(GObject * obj)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);
2791 }
2792 
2793 
gee_hash_map_node_iterator_get_type(void)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);
2801 	}
2802 	return gee_hash_map_node_iterator_type_id__volatile;
2803 }
2804 
2805 
_vala_gee_hash_map_node_iterator_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)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) {
2810 		default:
2811 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2812 		break;
2813 	}
2814 }
2815 
2816 
_vala_gee_hash_map_node_iterator_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * 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);
2823 		break;
2824 		case GEE_HASH_MAP_NODE_ITERATOR_K_DUP_FUNC:
2825 		self->priv->k_dup_func = g_value_get_pointer (value);
2826 		break;
2827 		case GEE_HASH_MAP_NODE_ITERATOR_K_DESTROY_FUNC:
2828 		self->priv->k_destroy_func = g_value_get_pointer (value);
2829 		break;
2830 		case GEE_HASH_MAP_NODE_ITERATOR_V_TYPE:
2831 		self->priv->v_type = g_value_get_gtype (value);
2832 		break;
2833 		case GEE_HASH_MAP_NODE_ITERATOR_V_DUP_FUNC:
2834 		self->priv->v_dup_func = g_value_get_pointer (value);
2835 		break;
2836 		case GEE_HASH_MAP_NODE_ITERATOR_V_DESTROY_FUNC:
2837 		self->priv->v_destroy_func = g_value_get_pointer (value);
2838 		break;
2839 		default:
2840 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2841 		break;
2842 	}
2843 }
2844 
2845 
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)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;
2848 	GeeHashMap* _tmp0_;
2849 	g_return_val_if_fail (map != NULL, NULL);
2850 	_tmp0_ = map;
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;
2858 	return self;
2859 }
2860 
2861 
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)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);
2864 }
2865 
2866 
gee_hash_map_key_iterator_real_get(GeeIterator * base)2867 static gpointer gee_hash_map_key_iterator_real_get (GeeIterator* base) {
2868 	GeeHashMapKeyIterator * self;
2869 	gpointer result = NULL;
2870 	gint _tmp0_;
2871 	GeeHashMap* _tmp1_;
2872 	gint _tmp2_;
2873 	GeeHashMapNode* _tmp3_;
2874 	GeeHashMapNode* _tmp4_;
2875 	gconstpointer _tmp5_;
2876 	gpointer _tmp6_;
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_);
2887 	result = _tmp6_;
2888 	return result;
2889 }
2890 
2891 
gee_hash_map_key_iterator_real_remove(GeeIterator * base)2892 static void gee_hash_map_key_iterator_real_remove (GeeIterator* base) {
2893 	GeeHashMapKeyIterator * self;
2894 	self = (GeeHashMapKeyIterator*) base;
2895 	g_assert_not_reached ();
2896 }
2897 
2898 
gee_hash_map_key_iterator_class_init(GeeHashMapKeyIteratorClass * klass)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));
2910 }
2911 
2912 
gee_hash_map_key_iterator_gee_iterator_interface_init(GeeIteratorIface * iface)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;
2920 }
2921 
2922 
gee_hash_map_key_iterator_instance_init(GeeHashMapKeyIterator * self)2923 static void gee_hash_map_key_iterator_instance_init (GeeHashMapKeyIterator * self) {
2924 	self->priv = GEE_HASH_MAP_KEY_ITERATOR_GET_PRIVATE (self);
2925 }
2926 
2927 
gee_hash_map_key_iterator_get_type(void)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);
2937 	}
2938 	return gee_hash_map_key_iterator_type_id__volatile;
2939 }
2940 
2941 
_vala_gee_hash_map_key_iterator_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)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) {
2946 		default:
2947 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2948 		break;
2949 	}
2950 }
2951 
2952 
_vala_gee_hash_map_key_iterator_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * 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);
2959 		break;
2960 		case GEE_HASH_MAP_KEY_ITERATOR_K_DUP_FUNC:
2961 		self->priv->k_dup_func = g_value_get_pointer (value);
2962 		break;
2963 		case GEE_HASH_MAP_KEY_ITERATOR_K_DESTROY_FUNC:
2964 		self->priv->k_destroy_func = g_value_get_pointer (value);
2965 		break;
2966 		case GEE_HASH_MAP_KEY_ITERATOR_V_TYPE:
2967 		self->priv->v_type = g_value_get_gtype (value);
2968 		break;
2969 		case GEE_HASH_MAP_KEY_ITERATOR_V_DUP_FUNC:
2970 		self->priv->v_dup_func = g_value_get_pointer (value);
2971 		break;
2972 		case GEE_HASH_MAP_KEY_ITERATOR_V_DESTROY_FUNC:
2973 		self->priv->v_destroy_func = g_value_get_pointer (value);
2974 		break;
2975 		default:
2976 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
2977 		break;
2978 	}
2979 }
2980 
2981 
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)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;
2984 	GeeHashMap* _tmp0_;
2985 	g_return_val_if_fail (map != NULL, NULL);
2986 	_tmp0_ = map;
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;
2994 	return self;
2995 }
2996 
2997 
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)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);
3000 }
3001 
3002 
gee_hash_map_map_iterator_real_get_key(GeeMapIterator * base)3003 static gpointer gee_hash_map_map_iterator_real_get_key (GeeMapIterator* base) {
3004 	GeeHashMapMapIterator * self;
3005 	gpointer result = NULL;
3006 	gint _tmp0_;
3007 	GeeHashMap* _tmp1_;
3008 	gint _tmp2_;
3009 	GeeHashMapNode* _tmp3_;
3010 	GeeHashMapNode* _tmp4_;
3011 	gconstpointer _tmp5_;
3012 	gpointer _tmp6_;
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_);
3023 	result = _tmp6_;
3024 	return result;
3025 }
3026 
3027 
gee_hash_map_map_iterator_real_unset(GeeMapIterator * base)3028 static void gee_hash_map_map_iterator_real_unset (GeeMapIterator* base) {
3029 	GeeHashMapMapIterator * self;
3030 	gint _tmp0_;
3031 	GeeHashMap* _tmp1_;
3032 	gint _tmp2_;
3033 	GeeHashMapNode* _tmp3_;
3034 	GeeHashMap* _tmp4_;
3035 	GeeHashMapNode* _tmp5_;
3036 	gconstpointer _tmp6_;
3037 	GeeHashMap* _tmp7_;
3038 	gint _tmp8_;
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_;
3055 }
3056 
3057 
gee_hash_map_map_iterator_real_get_value(GeeMapIterator * base)3058 static gpointer gee_hash_map_map_iterator_real_get_value (GeeMapIterator* base) {
3059 	GeeHashMapMapIterator * self;
3060 	gpointer result = NULL;
3061 	gint _tmp0_;
3062 	GeeHashMap* _tmp1_;
3063 	gint _tmp2_;
3064 	GeeHashMapNode* _tmp3_;
3065 	GeeHashMapNode* _tmp4_;
3066 	gconstpointer _tmp5_;
3067 	gpointer _tmp6_;
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_);
3078 	result = _tmp6_;
3079 	return result;
3080 }
3081 
3082 
gee_hash_map_map_iterator_real_set_value(GeeMapIterator * base,gconstpointer value)3083 static void gee_hash_map_map_iterator_real_set_value (GeeMapIterator* base, gconstpointer value) {
3084 	GeeHashMapMapIterator * self;
3085 	gint _tmp0_;
3086 	GeeHashMap* _tmp1_;
3087 	gint _tmp2_;
3088 	GeeHashMapNode* _tmp3_;
3089 	GeeHashMap* _tmp4_;
3090 	GeeHashMapNode* _tmp5_;
3091 	gconstpointer _tmp6_;
3092 	gconstpointer _tmp7_;
3093 	GeeHashMap* _tmp8_;
3094 	gint _tmp9_;
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;
3105 	_tmp7_ = value;
3106 	gee_abstract_map_set ((GeeAbstractMap*) _tmp4_, _tmp6_, _tmp7_);
3107 	_tmp8_ = ((GeeHashMapNodeIterator*) self)->_map;
3108 	_tmp9_ = _tmp8_->priv->_stamp;
3109 	((GeeHashMapNodeIterator*) self)->_stamp = _tmp9_;
3110 }
3111 
3112 
gee_hash_map_map_iterator_class_init(GeeHashMapMapIteratorClass * klass)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));
3124 }
3125 
3126 
gee_hash_map_map_iterator_gee_map_iterator_interface_init(GeeMapIteratorIface * iface)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;
3136 }
3137 
3138 
gee_hash_map_map_iterator_instance_init(GeeHashMapMapIterator * self)3139 static void gee_hash_map_map_iterator_instance_init (GeeHashMapMapIterator * self) {
3140 	self->priv = GEE_HASH_MAP_MAP_ITERATOR_GET_PRIVATE (self);
3141 }
3142 
3143 
gee_hash_map_map_iterator_get_type(void)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);
3153 	}
3154 	return gee_hash_map_map_iterator_type_id__volatile;
3155 }
3156 
3157 
_vala_gee_hash_map_map_iterator_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)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) {
3162 		default:
3163 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3164 		break;
3165 	}
3166 }
3167 
3168 
_vala_gee_hash_map_map_iterator_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * 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);
3175 		break;
3176 		case GEE_HASH_MAP_MAP_ITERATOR_K_DUP_FUNC:
3177 		self->priv->k_dup_func = g_value_get_pointer (value);
3178 		break;
3179 		case GEE_HASH_MAP_MAP_ITERATOR_K_DESTROY_FUNC:
3180 		self->priv->k_destroy_func = g_value_get_pointer (value);
3181 		break;
3182 		case GEE_HASH_MAP_MAP_ITERATOR_V_TYPE:
3183 		self->priv->v_type = g_value_get_gtype (value);
3184 		break;
3185 		case GEE_HASH_MAP_MAP_ITERATOR_V_DUP_FUNC:
3186 		self->priv->v_dup_func = g_value_get_pointer (value);
3187 		break;
3188 		case GEE_HASH_MAP_MAP_ITERATOR_V_DESTROY_FUNC:
3189 		self->priv->v_destroy_func = g_value_get_pointer (value);
3190 		break;
3191 		default:
3192 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3193 		break;
3194 	}
3195 }
3196 
3197 
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)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;
3200 	GeeHashMap* _tmp0_;
3201 	g_return_val_if_fail (map != NULL, NULL);
3202 	_tmp0_ = map;
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;
3210 	return self;
3211 }
3212 
3213 
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)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);
3216 }
3217 
3218 
gee_hash_map_value_iterator_real_get(GeeIterator * base)3219 static gpointer gee_hash_map_value_iterator_real_get (GeeIterator* base) {
3220 	GeeHashMapValueIterator * self;
3221 	gpointer result = NULL;
3222 	gint _tmp0_;
3223 	GeeHashMap* _tmp1_;
3224 	gint _tmp2_;
3225 	GeeHashMapNode* _tmp3_;
3226 	GeeHashMapNode* _tmp4_;
3227 	gconstpointer _tmp5_;
3228 	gpointer _tmp6_;
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_);
3239 	result = _tmp6_;
3240 	return result;
3241 }
3242 
3243 
gee_hash_map_value_iterator_real_remove(GeeIterator * base)3244 static void gee_hash_map_value_iterator_real_remove (GeeIterator* base) {
3245 	GeeHashMapValueIterator * self;
3246 	self = (GeeHashMapValueIterator*) base;
3247 	g_assert_not_reached ();
3248 }
3249 
3250 
gee_hash_map_value_iterator_class_init(GeeHashMapValueIteratorClass * klass)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));
3262 }
3263 
3264 
gee_hash_map_value_iterator_gee_iterator_interface_init(GeeIteratorIface * iface)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;
3272 }
3273 
3274 
gee_hash_map_value_iterator_instance_init(GeeHashMapValueIterator * self)3275 static void gee_hash_map_value_iterator_instance_init (GeeHashMapValueIterator * self) {
3276 	self->priv = GEE_HASH_MAP_VALUE_ITERATOR_GET_PRIVATE (self);
3277 }
3278 
3279 
gee_hash_map_value_iterator_get_type(void)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);
3289 	}
3290 	return gee_hash_map_value_iterator_type_id__volatile;
3291 }
3292 
3293 
_vala_gee_hash_map_value_iterator_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)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) {
3298 		default:
3299 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3300 		break;
3301 	}
3302 }
3303 
3304 
_vala_gee_hash_map_value_iterator_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * 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);
3311 		break;
3312 		case GEE_HASH_MAP_VALUE_ITERATOR_K_DUP_FUNC:
3313 		self->priv->k_dup_func = g_value_get_pointer (value);
3314 		break;
3315 		case GEE_HASH_MAP_VALUE_ITERATOR_K_DESTROY_FUNC:
3316 		self->priv->k_destroy_func = g_value_get_pointer (value);
3317 		break;
3318 		case GEE_HASH_MAP_VALUE_ITERATOR_V_TYPE:
3319 		self->priv->v_type = g_value_get_gtype (value);
3320 		break;
3321 		case GEE_HASH_MAP_VALUE_ITERATOR_V_DUP_FUNC:
3322 		self->priv->v_dup_func = g_value_get_pointer (value);
3323 		break;
3324 		case GEE_HASH_MAP_VALUE_ITERATOR_V_DESTROY_FUNC:
3325 		self->priv->v_destroy_func = g_value_get_pointer (value);
3326 		break;
3327 		default:
3328 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3329 		break;
3330 	}
3331 }
3332 
3333 
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)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;
3336 	GeeHashMap* _tmp0_;
3337 	g_return_val_if_fail (map != NULL, NULL);
3338 	_tmp0_ = map;
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;
3346 	return self;
3347 }
3348 
3349 
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)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);
3352 }
3353 
3354 
gee_hash_map_entry_iterator_real_get(GeeIterator * base)3355 static GeeMapEntry* gee_hash_map_entry_iterator_real_get (GeeIterator* base) {
3356 	GeeHashMapEntryIterator * self;
3357 	GeeMapEntry* result = NULL;
3358 	gint _tmp0_;
3359 	GeeHashMap* _tmp1_;
3360 	gint _tmp2_;
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_);
3373 	result = _tmp5_;
3374 	return result;
3375 }
3376 
3377 
gee_hash_map_entry_iterator_real_remove(GeeIterator * base)3378 static void gee_hash_map_entry_iterator_real_remove (GeeIterator* base) {
3379 	GeeHashMapEntryIterator * self;
3380 	self = (GeeHashMapEntryIterator*) base;
3381 	g_assert_not_reached ();
3382 }
3383 
3384 
gee_hash_map_entry_iterator_class_init(GeeHashMapEntryIteratorClass * klass)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));
3396 }
3397 
3398 
gee_hash_map_entry_iterator_gee_iterator_interface_init(GeeIteratorIface * iface)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;
3406 }
3407 
3408 
gee_hash_map_entry_iterator_instance_init(GeeHashMapEntryIterator * self)3409 static void gee_hash_map_entry_iterator_instance_init (GeeHashMapEntryIterator * self) {
3410 	self->priv = GEE_HASH_MAP_ENTRY_ITERATOR_GET_PRIVATE (self);
3411 }
3412 
3413 
gee_hash_map_entry_iterator_get_type(void)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);
3423 	}
3424 	return gee_hash_map_entry_iterator_type_id__volatile;
3425 }
3426 
3427 
_vala_gee_hash_map_entry_iterator_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)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) {
3432 		default:
3433 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3434 		break;
3435 	}
3436 }
3437 
3438 
_vala_gee_hash_map_entry_iterator_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * 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);
3445 		break;
3446 		case GEE_HASH_MAP_ENTRY_ITERATOR_K_DUP_FUNC:
3447 		self->priv->k_dup_func = g_value_get_pointer (value);
3448 		break;
3449 		case GEE_HASH_MAP_ENTRY_ITERATOR_K_DESTROY_FUNC:
3450 		self->priv->k_destroy_func = g_value_get_pointer (value);
3451 		break;
3452 		case GEE_HASH_MAP_ENTRY_ITERATOR_V_TYPE:
3453 		self->priv->v_type = g_value_get_gtype (value);
3454 		break;
3455 		case GEE_HASH_MAP_ENTRY_ITERATOR_V_DUP_FUNC:
3456 		self->priv->v_dup_func = g_value_get_pointer (value);
3457 		break;
3458 		case GEE_HASH_MAP_ENTRY_ITERATOR_V_DESTROY_FUNC:
3459 		self->priv->v_destroy_func = g_value_get_pointer (value);
3460 		break;
3461 		default:
3462 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3463 		break;
3464 	}
3465 }
3466 
3467 
gee_hash_map_class_init(GeeHashMapClass * klass)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));
3491 	/**
3492 	 * {@inheritDoc}
3493 	 */
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));
3495 	/**
3496 	 * {@inheritDoc}
3497 	 */
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));
3499 	/**
3500 	 * {@inheritDoc}
3501 	 */
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));
3503 	/**
3504 	 * {@inheritDoc}
3505 	 */
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));
3507 	/**
3508 	 * The keys' hash function.
3509 	 */
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));
3511 	/**
3512 	 * The keys' equality testing function.
3513 	 */
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));
3515 	/**
3516 	 * The values' equality testing function.
3517 	 */
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));
3519 }
3520 
3521 
gee_hash_map_instance_init(GeeHashMap * self)3522 static void gee_hash_map_instance_init (GeeHashMap * self) {
3523 	self->priv = GEE_HASH_MAP_GET_PRIVATE (self);
3524 	self->priv->_stamp = 0;
3525 }
3526 
3527 
gee_hash_map_finalize(GObject * obj)3528 static void gee_hash_map_finalize (GObject* obj) {
3529 	GeeHashMap * self;
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);
3534 }
3535 
3536 
3537 /**
3538  * Hash table implementation of the {@link Map} interface.
3539  *
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}.
3543  *
3544  * @see TreeMap
3545  */
gee_hash_map_get_type(void)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);
3553 	}
3554 	return gee_hash_map_type_id__volatile;
3555 }
3556 
3557 
_vala_gee_hash_map_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)3558 static void _vala_gee_hash_map_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
3559 	GeeHashMap * self;
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));
3564 		break;
3565 		case GEE_HASH_MAP_KEYS:
3566 		g_value_take_object (value, gee_abstract_map_get_keys ((GeeAbstractMap*) self));
3567 		break;
3568 		case GEE_HASH_MAP_VALUES:
3569 		g_value_take_object (value, gee_abstract_map_get_values ((GeeAbstractMap*) self));
3570 		break;
3571 		case GEE_HASH_MAP_ENTRIES:
3572 		g_value_take_object (value, gee_abstract_map_get_entries ((GeeAbstractMap*) self));
3573 		break;
3574 		case GEE_HASH_MAP_KEY_HASH_FUNC:
3575 		g_value_set_pointer (value, gee_hash_map_get_key_hash_func (self));
3576 		break;
3577 		case GEE_HASH_MAP_KEY_EQUAL_FUNC:
3578 		g_value_set_pointer (value, gee_hash_map_get_key_equal_func (self));
3579 		break;
3580 		case GEE_HASH_MAP_VALUE_EQUAL_FUNC:
3581 		g_value_set_pointer (value, gee_hash_map_get_value_equal_func (self));
3582 		break;
3583 		default:
3584 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3585 		break;
3586 	}
3587 }
3588 
3589 
_vala_gee_hash_map_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)3590 static void _vala_gee_hash_map_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
3591 	GeeHashMap * self;
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));
3596 		break;
3597 		case GEE_HASH_MAP_KEY_EQUAL_FUNC:
3598 		gee_hash_map_set_key_equal_func (self, g_value_get_pointer (value));
3599 		break;
3600 		case GEE_HASH_MAP_VALUE_EQUAL_FUNC:
3601 		gee_hash_map_set_value_equal_func (self, g_value_get_pointer (value));
3602 		break;
3603 		case GEE_HASH_MAP_K_TYPE:
3604 		self->priv->k_type = g_value_get_gtype (value);
3605 		break;
3606 		case GEE_HASH_MAP_K_DUP_FUNC:
3607 		self->priv->k_dup_func = g_value_get_pointer (value);
3608 		break;
3609 		case GEE_HASH_MAP_K_DESTROY_FUNC:
3610 		self->priv->k_destroy_func = g_value_get_pointer (value);
3611 		break;
3612 		case GEE_HASH_MAP_V_TYPE:
3613 		self->priv->v_type = g_value_get_gtype (value);
3614 		break;
3615 		case GEE_HASH_MAP_V_DUP_FUNC:
3616 		self->priv->v_dup_func = g_value_get_pointer (value);
3617 		break;
3618 		case GEE_HASH_MAP_V_DESTROY_FUNC:
3619 		self->priv->v_destroy_func = g_value_get_pointer (value);
3620 		break;
3621 		default:
3622 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
3623 		break;
3624 	}
3625 }
3626 
3627 
_vala_array_destroy(gpointer array,gint array_length,GDestroyNotify destroy_func)3628 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
3629 	if ((array != NULL) && (destroy_func != NULL)) {
3630 		int i;
3631 		for (i = 0; i < array_length; i = i + 1) {
3632 			if (((gpointer*) array)[i] != NULL) {
3633 				destroy_func (((gpointer*) array)[i]);
3634 			}
3635 		}
3636 	}
3637 }
3638 
3639 
_vala_array_free(gpointer array,gint array_length,GDestroyNotify destroy_func)3640 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
3641 	_vala_array_destroy (array, array_length, destroy_func);
3642 	g_free (array);
3643 }
3644 
3645 
3646 
3647