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