1 /* functions.c generated by valac 0.46.6, the Vala compiler
2  * generated from functions.vala, do not modify */
3 
4 /* functions.vala
5  *
6  * Copyright (C) 2009  Didier Villevalois, Maciej Piechotka
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12 
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17 
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
21  *
22  * Author:
23  * 	Didier 'Ptitjes' Villevalois <ptitjes@free.fr>
24  * 	Maciej Piechotka <uzytkownik2@gmail.com>
25  */
26 
27 #include <glib-object.h>
28 #include <glib.h>
29 #include <stdlib.h>
30 #include <string.h>
31 #include <gobject/gvaluecollector.h>
32 
33 typedef gboolean (*GeeEqualDataFunc) (gconstpointer a, gconstpointer b, gpointer user_data);
34 
35 #define GEE_TYPE_HASHABLE (gee_hashable_get_type ())
36 #define GEE_HASHABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_HASHABLE, GeeHashable))
37 #define GEE_IS_HASHABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_HASHABLE))
38 #define GEE_HASHABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_HASHABLE, GeeHashableIface))
39 
40 typedef struct _GeeHashable GeeHashable;
41 typedef struct _GeeHashableIface GeeHashableIface;
42 
43 #define GEE_TYPE_COMPARABLE (gee_comparable_get_type ())
44 #define GEE_COMPARABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COMPARABLE, GeeComparable))
45 #define GEE_IS_COMPARABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COMPARABLE))
46 #define GEE_COMPARABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_COMPARABLE, GeeComparableIface))
47 
48 typedef struct _GeeComparable GeeComparable;
49 typedef struct _GeeComparableIface GeeComparableIface;
50 typedef guint (*GeeHashDataFunc) (gconstpointer v, gpointer user_data);
51 
52 #define GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE (gee_functions_equal_data_func_closure_get_type ())
53 #define GEE_FUNCTIONS_EQUAL_DATA_FUNC_CLOSURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE, GeeFunctionsEqualDataFuncClosure))
54 #define GEE_FUNCTIONS_EQUAL_DATA_FUNC_CLOSURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE, GeeFunctionsEqualDataFuncClosureClass))
55 #define GEE_FUNCTIONS_IS_EQUAL_DATA_FUNC_CLOSURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE))
56 #define GEE_FUNCTIONS_IS_EQUAL_DATA_FUNC_CLOSURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE))
57 #define GEE_FUNCTIONS_EQUAL_DATA_FUNC_CLOSURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE, GeeFunctionsEqualDataFuncClosureClass))
58 
59 typedef struct _GeeFunctionsEqualDataFuncClosure GeeFunctionsEqualDataFuncClosure;
60 typedef struct _GeeFunctionsEqualDataFuncClosureClass GeeFunctionsEqualDataFuncClosureClass;
61 typedef struct _GeeFunctionsEqualDataFuncClosurePrivate GeeFunctionsEqualDataFuncClosurePrivate;
62 typedef struct _GeeFunctionsParamSpecEqualDataFuncClosure GeeFunctionsParamSpecEqualDataFuncClosure;
63 
64 #define GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE (gee_functions_hash_data_func_closure_get_type ())
65 #define GEE_FUNCTIONS_HASH_DATA_FUNC_CLOSURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE, GeeFunctionsHashDataFuncClosure))
66 #define GEE_FUNCTIONS_HASH_DATA_FUNC_CLOSURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE, GeeFunctionsHashDataFuncClosureClass))
67 #define GEE_FUNCTIONS_IS_HASH_DATA_FUNC_CLOSURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE))
68 #define GEE_FUNCTIONS_IS_HASH_DATA_FUNC_CLOSURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE))
69 #define GEE_FUNCTIONS_HASH_DATA_FUNC_CLOSURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE, GeeFunctionsHashDataFuncClosureClass))
70 
71 typedef struct _GeeFunctionsHashDataFuncClosure GeeFunctionsHashDataFuncClosure;
72 typedef struct _GeeFunctionsHashDataFuncClosureClass GeeFunctionsHashDataFuncClosureClass;
73 typedef struct _GeeFunctionsHashDataFuncClosurePrivate GeeFunctionsHashDataFuncClosurePrivate;
74 typedef struct _GeeFunctionsParamSpecHashDataFuncClosure GeeFunctionsParamSpecHashDataFuncClosure;
75 
76 #define GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE (gee_functions_compare_data_func_closure_get_type ())
77 #define GEE_FUNCTIONS_COMPARE_DATA_FUNC_CLOSURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE, GeeFunctionsCompareDataFuncClosure))
78 #define GEE_FUNCTIONS_COMPARE_DATA_FUNC_CLOSURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE, GeeFunctionsCompareDataFuncClosureClass))
79 #define GEE_FUNCTIONS_IS_COMPARE_DATA_FUNC_CLOSURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE))
80 #define GEE_FUNCTIONS_IS_COMPARE_DATA_FUNC_CLOSURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE))
81 #define GEE_FUNCTIONS_COMPARE_DATA_FUNC_CLOSURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE, GeeFunctionsCompareDataFuncClosureClass))
82 
83 typedef struct _GeeFunctionsCompareDataFuncClosure GeeFunctionsCompareDataFuncClosure;
84 typedef struct _GeeFunctionsCompareDataFuncClosureClass GeeFunctionsCompareDataFuncClosureClass;
85 typedef struct _GeeFunctionsCompareDataFuncClosurePrivate GeeFunctionsCompareDataFuncClosurePrivate;
86 typedef struct _GeeFunctionsParamSpecCompareDataFuncClosure GeeFunctionsParamSpecCompareDataFuncClosure;
87 
88 struct _GeeHashableIface {
89 	GTypeInterface parent_iface;
90 	guint (*hash) (GeeHashable* self);
91 	gboolean (*equal_to) (GeeHashable* self, gconstpointer object);
92 };
93 
94 struct _GeeComparableIface {
95 	GTypeInterface parent_iface;
96 	gint (*compare_to) (GeeComparable* self, gconstpointer object);
97 };
98 
99 struct _GeeFunctionsEqualDataFuncClosure {
100 	GTypeInstance parent_instance;
101 	volatile int ref_count;
102 	GeeFunctionsEqualDataFuncClosurePrivate * priv;
103 	GeeEqualDataFunc func;
104 	gpointer func_target;
105 	GDestroyNotify func_target_destroy_notify;
106 };
107 
108 struct _GeeFunctionsEqualDataFuncClosureClass {
109 	GTypeClass parent_class;
110 	void (*finalize) (GeeFunctionsEqualDataFuncClosure *self);
111 };
112 
113 struct _GeeFunctionsEqualDataFuncClosurePrivate {
114 	GType g_type;
115 	GBoxedCopyFunc g_dup_func;
116 	GDestroyNotify g_destroy_func;
117 };
118 
119 struct _GeeFunctionsParamSpecEqualDataFuncClosure {
120 	GParamSpec parent_instance;
121 };
122 
123 struct _GeeFunctionsHashDataFuncClosure {
124 	GTypeInstance parent_instance;
125 	volatile int ref_count;
126 	GeeFunctionsHashDataFuncClosurePrivate * priv;
127 	GeeHashDataFunc func;
128 	gpointer func_target;
129 	GDestroyNotify func_target_destroy_notify;
130 };
131 
132 struct _GeeFunctionsHashDataFuncClosureClass {
133 	GTypeClass parent_class;
134 	void (*finalize) (GeeFunctionsHashDataFuncClosure *self);
135 };
136 
137 struct _GeeFunctionsHashDataFuncClosurePrivate {
138 	GType g_type;
139 	GBoxedCopyFunc g_dup_func;
140 	GDestroyNotify g_destroy_func;
141 };
142 
143 struct _GeeFunctionsParamSpecHashDataFuncClosure {
144 	GParamSpec parent_instance;
145 };
146 
147 struct _GeeFunctionsCompareDataFuncClosure {
148 	GTypeInstance parent_instance;
149 	volatile int ref_count;
150 	GeeFunctionsCompareDataFuncClosurePrivate * priv;
151 	GCompareDataFunc func;
152 	gpointer func_target;
153 	GDestroyNotify func_target_destroy_notify;
154 };
155 
156 struct _GeeFunctionsCompareDataFuncClosureClass {
157 	GTypeClass parent_class;
158 	void (*finalize) (GeeFunctionsCompareDataFuncClosure *self);
159 };
160 
161 struct _GeeFunctionsCompareDataFuncClosurePrivate {
162 	GType g_type;
163 	GBoxedCopyFunc g_dup_func;
164 	GDestroyNotify g_destroy_func;
165 };
166 
167 struct _GeeFunctionsParamSpecCompareDataFuncClosure {
168 	GParamSpec parent_instance;
169 };
170 
171 static gint GeeFunctionsEqualDataFuncClosure_private_offset;
172 static gpointer gee_functions_equal_data_func_closure_parent_class = NULL;
173 static gint GeeFunctionsHashDataFuncClosure_private_offset;
174 static gpointer gee_functions_hash_data_func_closure_parent_class = NULL;
175 static gint GeeFunctionsCompareDataFuncClosure_private_offset;
176 static gpointer gee_functions_compare_data_func_closure_parent_class = NULL;
177 
178 GeeEqualDataFunc gee_functions_get_equal_func_for (GType t,
179                                                    gpointer* result_target,
180                                                    GDestroyNotify* result_target_destroy_notify);
181 static gboolean ___lambda30_ (gconstpointer a,
182                        gconstpointer b);
183 static gboolean ____lambda30__gee_equal_data_func (gconstpointer a,
184                                             gconstpointer b,
185                                             gpointer self);
186 GType gee_hashable_get_type (void) G_GNUC_CONST;
187 static gboolean ____lambda31_ (gconstpointer a,
188                         gconstpointer b);
189 gboolean gee_hashable_equal_to (GeeHashable* self,
190                                 gconstpointer object);
191 static gboolean _____lambda31__gee_equal_data_func (gconstpointer a,
192                                              gconstpointer b,
193                                              gpointer self);
194 GType gee_comparable_get_type (void) G_GNUC_CONST;
195 static gboolean _____lambda32_ (gconstpointer a,
196                          gconstpointer b);
197 gint gee_comparable_compare_to (GeeComparable* self,
198                                 gconstpointer object);
199 static gboolean ______lambda32__gee_equal_data_func (gconstpointer a,
200                                               gconstpointer b,
201                                               gpointer self);
202 static gboolean _____lambda33_ (gconstpointer a,
203                          gconstpointer b);
204 static gboolean ______lambda33__gee_equal_data_func (gconstpointer a,
205                                               gconstpointer b,
206                                               gpointer self);
207 GeeHashDataFunc gee_functions_get_hash_func_for (GType t,
208                                                  gpointer* result_target,
209                                                  GDestroyNotify* result_target_destroy_notify);
210 static guint ___lambda41_ (gconstpointer a);
211 static guint ____lambda41__gee_hash_data_func (gconstpointer v,
212                                         gpointer self);
213 static guint ____lambda42_ (gconstpointer a);
214 guint gee_hashable_hash (GeeHashable* self);
215 static guint _____lambda42__gee_hash_data_func (gconstpointer v,
216                                          gpointer self);
217 static guint ____lambda43_ (gconstpointer a);
218 static guint _____lambda43__gee_hash_data_func (gconstpointer v,
219                                          gpointer self);
220 GCompareDataFunc gee_functions_get_compare_func_for (GType t,
221                                                      gpointer* result_target,
222                                                      GDestroyNotify* result_target_destroy_notify);
223 static gint ___lambda44_ (gconstpointer a,
224                    gconstpointer b);
225 static gint ____lambda44__gcompare_data_func (gconstpointer a,
226                                        gconstpointer b,
227                                        gpointer self);
228 static gint ____lambda45_ (gconstpointer a,
229                     gconstpointer b);
230 static gint _____lambda45__gcompare_data_func (gconstpointer a,
231                                         gconstpointer b,
232                                         gpointer self);
233 static gint ____lambda46_ (gconstpointer _val1,
234                     gconstpointer _val2);
235 static gint _____lambda46__gcompare_data_func (gconstpointer a,
236                                         gconstpointer b,
237                                         gpointer self);
238 G_GNUC_INTERNAL gpointer gee_functions_equal_data_func_closure_ref (gpointer instance);
239 G_GNUC_INTERNAL void gee_functions_equal_data_func_closure_unref (gpointer instance);
240 G_GNUC_INTERNAL GParamSpec* gee_functions_param_spec_equal_data_func_closure (const gchar* name,
241                                                               const gchar* nick,
242                                                               const gchar* blurb,
243                                                               GType object_type,
244                                                               GParamFlags flags);
245 G_GNUC_INTERNAL void gee_functions_value_set_equal_data_func_closure (GValue* value,
246                                                       gpointer v_object) G_GNUC_UNUSED;
247 G_GNUC_INTERNAL void gee_functions_value_take_equal_data_func_closure (GValue* value,
248                                                        gpointer v_object);
249 G_GNUC_INTERNAL gpointer gee_functions_value_get_equal_data_func_closure (const GValue* value) G_GNUC_UNUSED;
250 G_GNUC_INTERNAL GType gee_functions_equal_data_func_closure_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
251 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeFunctionsEqualDataFuncClosure, gee_functions_equal_data_func_closure_unref)
252 G_GNUC_INTERNAL GeeFunctionsEqualDataFuncClosure* gee_functions_equal_data_func_closure_new (GType g_type,
253                                                                              GBoxedCopyFunc g_dup_func,
254                                                                              GDestroyNotify g_destroy_func,
255                                                                              GeeEqualDataFunc func,
256                                                                              gpointer func_target,
257                                                                              GDestroyNotify func_target_destroy_notify);
258 G_GNUC_INTERNAL GeeFunctionsEqualDataFuncClosure* gee_functions_equal_data_func_closure_construct (GType object_type,
259                                                                                    GType g_type,
260                                                                                    GBoxedCopyFunc g_dup_func,
261                                                                                    GDestroyNotify g_destroy_func,
262                                                                                    GeeEqualDataFunc func,
263                                                                                    gpointer func_target,
264                                                                                    GDestroyNotify func_target_destroy_notify);
265 G_GNUC_INTERNAL GeeEqualDataFunc gee_functions_equal_data_func_closure_clone_func (GeeFunctionsEqualDataFuncClosure* self,
266                                                                    gpointer* result_target,
267                                                                    GDestroyNotify* result_target_destroy_notify);
268 static gboolean __lambda29_ (GeeFunctionsEqualDataFuncClosure* self,
269                       gconstpointer a,
270                       gconstpointer b);
271 static gboolean ___lambda29__gee_equal_data_func (gconstpointer a,
272                                            gconstpointer b,
273                                            gpointer self);
274 static void gee_functions_equal_data_func_closure_finalize (GeeFunctionsEqualDataFuncClosure * obj);
275 G_GNUC_INTERNAL gpointer gee_functions_hash_data_func_closure_ref (gpointer instance);
276 G_GNUC_INTERNAL void gee_functions_hash_data_func_closure_unref (gpointer instance);
277 G_GNUC_INTERNAL GParamSpec* gee_functions_param_spec_hash_data_func_closure (const gchar* name,
278                                                              const gchar* nick,
279                                                              const gchar* blurb,
280                                                              GType object_type,
281                                                              GParamFlags flags);
282 G_GNUC_INTERNAL void gee_functions_value_set_hash_data_func_closure (GValue* value,
283                                                      gpointer v_object) G_GNUC_UNUSED;
284 G_GNUC_INTERNAL void gee_functions_value_take_hash_data_func_closure (GValue* value,
285                                                       gpointer v_object);
286 G_GNUC_INTERNAL gpointer gee_functions_value_get_hash_data_func_closure (const GValue* value) G_GNUC_UNUSED;
287 G_GNUC_INTERNAL GType gee_functions_hash_data_func_closure_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
288 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeFunctionsHashDataFuncClosure, gee_functions_hash_data_func_closure_unref)
289 G_GNUC_INTERNAL GeeFunctionsHashDataFuncClosure* gee_functions_hash_data_func_closure_new (GType g_type,
290                                                                            GBoxedCopyFunc g_dup_func,
291                                                                            GDestroyNotify g_destroy_func,
292                                                                            GeeHashDataFunc func,
293                                                                            gpointer func_target,
294                                                                            GDestroyNotify func_target_destroy_notify);
295 G_GNUC_INTERNAL GeeFunctionsHashDataFuncClosure* gee_functions_hash_data_func_closure_construct (GType object_type,
296                                                                                  GType g_type,
297                                                                                  GBoxedCopyFunc g_dup_func,
298                                                                                  GDestroyNotify g_destroy_func,
299                                                                                  GeeHashDataFunc func,
300                                                                                  gpointer func_target,
301                                                                                  GDestroyNotify func_target_destroy_notify);
302 G_GNUC_INTERNAL GeeHashDataFunc gee_functions_hash_data_func_closure_clone_func (GeeFunctionsHashDataFuncClosure* self,
303                                                                  gpointer* result_target,
304                                                                  GDestroyNotify* result_target_destroy_notify);
305 static guint __lambda40_ (GeeFunctionsHashDataFuncClosure* self,
306                    gconstpointer a);
307 static guint ___lambda40__gee_hash_data_func (gconstpointer v,
308                                        gpointer self);
309 static void gee_functions_hash_data_func_closure_finalize (GeeFunctionsHashDataFuncClosure * obj);
310 G_GNUC_INTERNAL gpointer gee_functions_compare_data_func_closure_ref (gpointer instance);
311 G_GNUC_INTERNAL void gee_functions_compare_data_func_closure_unref (gpointer instance);
312 G_GNUC_INTERNAL GParamSpec* gee_functions_param_spec_compare_data_func_closure (const gchar* name,
313                                                                 const gchar* nick,
314                                                                 const gchar* blurb,
315                                                                 GType object_type,
316                                                                 GParamFlags flags);
317 G_GNUC_INTERNAL void gee_functions_value_set_compare_data_func_closure (GValue* value,
318                                                         gpointer v_object) G_GNUC_UNUSED;
319 G_GNUC_INTERNAL void gee_functions_value_take_compare_data_func_closure (GValue* value,
320                                                          gpointer v_object);
321 G_GNUC_INTERNAL gpointer gee_functions_value_get_compare_data_func_closure (const GValue* value) G_GNUC_UNUSED;
322 G_GNUC_INTERNAL GType gee_functions_compare_data_func_closure_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
323 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeFunctionsCompareDataFuncClosure, gee_functions_compare_data_func_closure_unref)
324 G_GNUC_INTERNAL GeeFunctionsCompareDataFuncClosure* gee_functions_compare_data_func_closure_new (GType g_type,
325                                                                                  GBoxedCopyFunc g_dup_func,
326                                                                                  GDestroyNotify g_destroy_func,
327                                                                                  GCompareDataFunc func,
328                                                                                  gpointer func_target,
329                                                                                  GDestroyNotify func_target_destroy_notify);
330 G_GNUC_INTERNAL GeeFunctionsCompareDataFuncClosure* gee_functions_compare_data_func_closure_construct (GType object_type,
331                                                                                        GType g_type,
332                                                                                        GBoxedCopyFunc g_dup_func,
333                                                                                        GDestroyNotify g_destroy_func,
334                                                                                        GCompareDataFunc func,
335                                                                                        gpointer func_target,
336                                                                                        GDestroyNotify func_target_destroy_notify);
337 G_GNUC_INTERNAL GCompareDataFunc gee_functions_compare_data_func_closure_clone_func (GeeFunctionsCompareDataFuncClosure* self,
338                                                                      gpointer* result_target,
339                                                                      GDestroyNotify* result_target_destroy_notify);
340 static gint __lambda49_ (GeeFunctionsCompareDataFuncClosure* self,
341                   gconstpointer a,
342                   gconstpointer b);
343 static gint ___lambda49__gcompare_data_func (gconstpointer a,
344                                       gconstpointer b,
345                                       gpointer self);
346 static void gee_functions_compare_data_func_closure_finalize (GeeFunctionsCompareDataFuncClosure * obj);
347 
348 /**
349  * Get a equality testing function for a given type.
350  *
351  * @param t the type which to get an equality testing function for.
352  *
353  * @return the equality testing function corresponding to the given type.
354  */
355 static gboolean
___lambda30_(gconstpointer a,gconstpointer b)356 ___lambda30_ (gconstpointer a,
357               gconstpointer b)
358 {
359 	gboolean result = FALSE;
360 	if (a == b) {
361 		result = TRUE;
362 		return result;
363 	} else {
364 		gboolean _tmp0_ = FALSE;
365 		if (a == NULL) {
366 			_tmp0_ = TRUE;
367 		} else {
368 			_tmp0_ = b == NULL;
369 		}
370 		if (_tmp0_) {
371 			result = FALSE;
372 			return result;
373 		} else {
374 			GEqualFunc _tmp1_;
375 			_tmp1_ = g_str_equal;
376 			result = _tmp1_ ((const gchar*) a, (const gchar*) b);
377 			return result;
378 		}
379 	}
380 }
381 
382 static gboolean
____lambda30__gee_equal_data_func(gconstpointer a,gconstpointer b,gpointer self)383 ____lambda30__gee_equal_data_func (gconstpointer a,
384                                    gconstpointer b,
385                                    gpointer self)
386 {
387 	gboolean result;
388 	result = ___lambda30_ (a, b);
389 	return result;
390 }
391 
392 static gboolean
____lambda31_(gconstpointer a,gconstpointer b)393 ____lambda31_ (gconstpointer a,
394                gconstpointer b)
395 {
396 	gboolean result = FALSE;
397 	if (a == b) {
398 		result = TRUE;
399 		return result;
400 	} else {
401 		gboolean _tmp0_ = FALSE;
402 		if (a == NULL) {
403 			_tmp0_ = TRUE;
404 		} else {
405 			_tmp0_ = b == NULL;
406 		}
407 		if (_tmp0_) {
408 			result = FALSE;
409 			return result;
410 		} else {
411 			result = gee_hashable_equal_to (G_TYPE_CHECK_INSTANCE_CAST (a, GEE_TYPE_HASHABLE, GeeHashable), G_TYPE_CHECK_INSTANCE_CAST (b, GEE_TYPE_HASHABLE, GeeHashable));
412 			return result;
413 		}
414 	}
415 }
416 
417 static gboolean
_____lambda31__gee_equal_data_func(gconstpointer a,gconstpointer b,gpointer self)418 _____lambda31__gee_equal_data_func (gconstpointer a,
419                                     gconstpointer b,
420                                     gpointer self)
421 {
422 	gboolean result;
423 	result = ____lambda31_ (a, b);
424 	return result;
425 }
426 
427 static gboolean
_____lambda32_(gconstpointer a,gconstpointer b)428 _____lambda32_ (gconstpointer a,
429                 gconstpointer b)
430 {
431 	gboolean result = FALSE;
432 	if (a == b) {
433 		result = TRUE;
434 		return result;
435 	} else {
436 		gboolean _tmp0_ = FALSE;
437 		if (a == NULL) {
438 			_tmp0_ = TRUE;
439 		} else {
440 			_tmp0_ = b == NULL;
441 		}
442 		if (_tmp0_) {
443 			result = FALSE;
444 			return result;
445 		} else {
446 			result = gee_comparable_compare_to (G_TYPE_CHECK_INSTANCE_CAST (a, GEE_TYPE_COMPARABLE, GeeComparable), G_TYPE_CHECK_INSTANCE_CAST (b, GEE_TYPE_COMPARABLE, GeeComparable)) == 0;
447 			return result;
448 		}
449 	}
450 }
451 
452 static gboolean
______lambda32__gee_equal_data_func(gconstpointer a,gconstpointer b,gpointer self)453 ______lambda32__gee_equal_data_func (gconstpointer a,
454                                      gconstpointer b,
455                                      gpointer self)
456 {
457 	gboolean result;
458 	result = _____lambda32_ (a, b);
459 	return result;
460 }
461 
462 static gboolean
_____lambda33_(gconstpointer a,gconstpointer b)463 _____lambda33_ (gconstpointer a,
464                 gconstpointer b)
465 {
466 	GEqualFunc _tmp0_;
467 	gboolean result = FALSE;
468 	_tmp0_ = g_direct_equal;
469 	result = _tmp0_ (a, b);
470 	return result;
471 }
472 
473 static gboolean
______lambda33__gee_equal_data_func(gconstpointer a,gconstpointer b,gpointer self)474 ______lambda33__gee_equal_data_func (gconstpointer a,
475                                      gconstpointer b,
476                                      gpointer self)
477 {
478 	gboolean result;
479 	result = _____lambda33_ (a, b);
480 	return result;
481 }
482 
483 GeeEqualDataFunc
gee_functions_get_equal_func_for(GType t,gpointer * result_target,GDestroyNotify * result_target_destroy_notify)484 gee_functions_get_equal_func_for (GType t,
485                                   gpointer* result_target,
486                                   GDestroyNotify* result_target_destroy_notify)
487 {
488 	GeeEqualDataFunc result = NULL;
489 	if (t == G_TYPE_STRING) {
490 		GeeEqualDataFunc _tmp0_;
491 		gpointer _tmp0__target;
492 		GDestroyNotify _tmp0__target_destroy_notify;
493 		_tmp0_ = ____lambda30__gee_equal_data_func;
494 		_tmp0__target = NULL;
495 		_tmp0__target_destroy_notify = NULL;
496 		*result_target = _tmp0__target;
497 		*result_target_destroy_notify = _tmp0__target_destroy_notify;
498 		result = _tmp0_;
499 		return result;
500 	} else {
501 		if (g_type_is_a (t, GEE_TYPE_HASHABLE)) {
502 			GeeEqualDataFunc _tmp1_;
503 			gpointer _tmp1__target;
504 			GDestroyNotify _tmp1__target_destroy_notify;
505 			_tmp1_ = _____lambda31__gee_equal_data_func;
506 			_tmp1__target = NULL;
507 			_tmp1__target_destroy_notify = NULL;
508 			*result_target = _tmp1__target;
509 			*result_target_destroy_notify = _tmp1__target_destroy_notify;
510 			result = _tmp1_;
511 			return result;
512 		} else {
513 			if (g_type_is_a (t, GEE_TYPE_COMPARABLE)) {
514 				GeeEqualDataFunc _tmp2_;
515 				gpointer _tmp2__target;
516 				GDestroyNotify _tmp2__target_destroy_notify;
517 				_tmp2_ = ______lambda32__gee_equal_data_func;
518 				_tmp2__target = NULL;
519 				_tmp2__target_destroy_notify = NULL;
520 				*result_target = _tmp2__target;
521 				*result_target_destroy_notify = _tmp2__target_destroy_notify;
522 				result = _tmp2_;
523 				return result;
524 			} else {
525 				GeeEqualDataFunc _tmp3_;
526 				gpointer _tmp3__target;
527 				GDestroyNotify _tmp3__target_destroy_notify;
528 				_tmp3_ = ______lambda33__gee_equal_data_func;
529 				_tmp3__target = NULL;
530 				_tmp3__target_destroy_notify = NULL;
531 				*result_target = _tmp3__target;
532 				*result_target_destroy_notify = _tmp3__target_destroy_notify;
533 				result = _tmp3_;
534 				return result;
535 			}
536 		}
537 	}
538 }
539 
540 /**
541  * Get a hash function for a given type.
542  *
543  * @param t the type which to get the hash function for.
544  *
545  * @return the hash function corresponding to the given type.
546  */
547 static guint
___lambda41_(gconstpointer a)548 ___lambda41_ (gconstpointer a)
549 {
550 	guint result = 0U;
551 	if (a == NULL) {
552 		result = (guint) 0xdeadbeefLL;
553 		return result;
554 	} else {
555 		GHashFunc _tmp0_;
556 		_tmp0_ = g_str_hash;
557 		result = _tmp0_ ((const gchar*) a);
558 		return result;
559 	}
560 }
561 
562 static guint
____lambda41__gee_hash_data_func(gconstpointer v,gpointer self)563 ____lambda41__gee_hash_data_func (gconstpointer v,
564                                   gpointer self)
565 {
566 	guint result;
567 	result = ___lambda41_ (v);
568 	return result;
569 }
570 
571 static guint
____lambda42_(gconstpointer a)572 ____lambda42_ (gconstpointer a)
573 {
574 	guint result = 0U;
575 	if (a == NULL) {
576 		result = (guint) 0xdeadbeefLL;
577 		return result;
578 	} else {
579 		result = gee_hashable_hash (G_TYPE_CHECK_INSTANCE_CAST (a, GEE_TYPE_HASHABLE, GeeHashable));
580 		return result;
581 	}
582 }
583 
584 static guint
_____lambda42__gee_hash_data_func(gconstpointer v,gpointer self)585 _____lambda42__gee_hash_data_func (gconstpointer v,
586                                    gpointer self)
587 {
588 	guint result;
589 	result = ____lambda42_ (v);
590 	return result;
591 }
592 
593 static guint
____lambda43_(gconstpointer a)594 ____lambda43_ (gconstpointer a)
595 {
596 	GHashFunc _tmp0_;
597 	guint result = 0U;
598 	_tmp0_ = g_direct_hash;
599 	result = _tmp0_ (a);
600 	return result;
601 }
602 
603 static guint
_____lambda43__gee_hash_data_func(gconstpointer v,gpointer self)604 _____lambda43__gee_hash_data_func (gconstpointer v,
605                                    gpointer self)
606 {
607 	guint result;
608 	result = ____lambda43_ (v);
609 	return result;
610 }
611 
612 GeeHashDataFunc
gee_functions_get_hash_func_for(GType t,gpointer * result_target,GDestroyNotify * result_target_destroy_notify)613 gee_functions_get_hash_func_for (GType t,
614                                  gpointer* result_target,
615                                  GDestroyNotify* result_target_destroy_notify)
616 {
617 	GeeHashDataFunc result = NULL;
618 	if (t == G_TYPE_STRING) {
619 		GeeHashDataFunc _tmp0_;
620 		gpointer _tmp0__target;
621 		GDestroyNotify _tmp0__target_destroy_notify;
622 		_tmp0_ = ____lambda41__gee_hash_data_func;
623 		_tmp0__target = NULL;
624 		_tmp0__target_destroy_notify = NULL;
625 		*result_target = _tmp0__target;
626 		*result_target_destroy_notify = _tmp0__target_destroy_notify;
627 		result = _tmp0_;
628 		return result;
629 	} else {
630 		if (g_type_is_a (t, GEE_TYPE_HASHABLE)) {
631 			GeeHashDataFunc _tmp1_;
632 			gpointer _tmp1__target;
633 			GDestroyNotify _tmp1__target_destroy_notify;
634 			_tmp1_ = _____lambda42__gee_hash_data_func;
635 			_tmp1__target = NULL;
636 			_tmp1__target_destroy_notify = NULL;
637 			*result_target = _tmp1__target;
638 			*result_target_destroy_notify = _tmp1__target_destroy_notify;
639 			result = _tmp1_;
640 			return result;
641 		} else {
642 			GeeHashDataFunc _tmp2_;
643 			gpointer _tmp2__target;
644 			GDestroyNotify _tmp2__target_destroy_notify;
645 			_tmp2_ = _____lambda43__gee_hash_data_func;
646 			_tmp2__target = NULL;
647 			_tmp2__target_destroy_notify = NULL;
648 			*result_target = _tmp2__target;
649 			*result_target_destroy_notify = _tmp2__target_destroy_notify;
650 			result = _tmp2_;
651 			return result;
652 		}
653 	}
654 }
655 
656 /**
657  * Get a comparator function for a given type.
658  *
659  * @param t the type which to get a comparator function for.
660  *
661  * @return the comparator function corresponding to the given type.
662  */
663 static gint
___lambda44_(gconstpointer a,gconstpointer b)664 ___lambda44_ (gconstpointer a,
665               gconstpointer b)
666 {
667 	gint result = 0;
668 	if (a == b) {
669 		result = 0;
670 		return result;
671 	} else {
672 		if (a == NULL) {
673 			result = -1;
674 			return result;
675 		} else {
676 			if (b == NULL) {
677 				result = 1;
678 				return result;
679 			} else {
680 				GCompareFunc _tmp0_;
681 				_tmp0_ = ((GCompareFunc) g_strcmp0);
682 				result = _tmp0_ ((const gchar*) a, (const gchar*) b);
683 				return result;
684 			}
685 		}
686 	}
687 }
688 
689 static gint
____lambda44__gcompare_data_func(gconstpointer a,gconstpointer b,gpointer self)690 ____lambda44__gcompare_data_func (gconstpointer a,
691                                   gconstpointer b,
692                                   gpointer self)
693 {
694 	gint result;
695 	result = ___lambda44_ (a, b);
696 	return result;
697 }
698 
699 static gint
____lambda45_(gconstpointer a,gconstpointer b)700 ____lambda45_ (gconstpointer a,
701                gconstpointer b)
702 {
703 	gint result = 0;
704 	if (a == b) {
705 		result = 0;
706 		return result;
707 	} else {
708 		if (a == NULL) {
709 			result = -1;
710 			return result;
711 		} else {
712 			if (b == NULL) {
713 				result = 1;
714 				return result;
715 			} else {
716 				result = gee_comparable_compare_to (G_TYPE_CHECK_INSTANCE_CAST (a, GEE_TYPE_COMPARABLE, GeeComparable), G_TYPE_CHECK_INSTANCE_CAST (b, GEE_TYPE_COMPARABLE, GeeComparable));
717 				return result;
718 			}
719 		}
720 	}
721 }
722 
723 static gint
_____lambda45__gcompare_data_func(gconstpointer a,gconstpointer b,gpointer self)724 _____lambda45__gcompare_data_func (gconstpointer a,
725                                    gconstpointer b,
726                                    gpointer self)
727 {
728 	gint result;
729 	result = ____lambda45_ (a, b);
730 	return result;
731 }
732 
733 static gint
____lambda46_(gconstpointer _val1,gconstpointer _val2)734 ____lambda46_ (gconstpointer _val1,
735                gconstpointer _val2)
736 {
737 	glong val1 = 0L;
738 	glong val2 = 0L;
739 	gint result = 0;
740 	val1 = (glong) _val1;
741 	val2 = (glong) _val2;
742 	if (val1 > val2) {
743 		result = 1;
744 		return result;
745 	} else {
746 		if (val1 == val2) {
747 			result = 0;
748 			return result;
749 		} else {
750 			result = -1;
751 			return result;
752 		}
753 	}
754 }
755 
756 static gint
_____lambda46__gcompare_data_func(gconstpointer a,gconstpointer b,gpointer self)757 _____lambda46__gcompare_data_func (gconstpointer a,
758                                    gconstpointer b,
759                                    gpointer self)
760 {
761 	gint result;
762 	result = ____lambda46_ (a, b);
763 	return result;
764 }
765 
766 GCompareDataFunc
gee_functions_get_compare_func_for(GType t,gpointer * result_target,GDestroyNotify * result_target_destroy_notify)767 gee_functions_get_compare_func_for (GType t,
768                                     gpointer* result_target,
769                                     GDestroyNotify* result_target_destroy_notify)
770 {
771 	GCompareDataFunc result = NULL;
772 	if (t == G_TYPE_STRING) {
773 		GCompareDataFunc _tmp0_;
774 		gpointer _tmp0__target;
775 		GDestroyNotify _tmp0__target_destroy_notify;
776 		_tmp0_ = ____lambda44__gcompare_data_func;
777 		_tmp0__target = NULL;
778 		_tmp0__target_destroy_notify = NULL;
779 		*result_target = _tmp0__target;
780 		*result_target_destroy_notify = _tmp0__target_destroy_notify;
781 		result = _tmp0_;
782 		return result;
783 	} else {
784 		if (g_type_is_a (t, GEE_TYPE_COMPARABLE)) {
785 			GCompareDataFunc _tmp1_;
786 			gpointer _tmp1__target;
787 			GDestroyNotify _tmp1__target_destroy_notify;
788 			_tmp1_ = _____lambda45__gcompare_data_func;
789 			_tmp1__target = NULL;
790 			_tmp1__target_destroy_notify = NULL;
791 			*result_target = _tmp1__target;
792 			*result_target_destroy_notify = _tmp1__target_destroy_notify;
793 			result = _tmp1_;
794 			return result;
795 		} else {
796 			GCompareDataFunc _tmp2_;
797 			gpointer _tmp2__target;
798 			GDestroyNotify _tmp2__target_destroy_notify;
799 			_tmp2_ = _____lambda46__gcompare_data_func;
800 			_tmp2__target = NULL;
801 			_tmp2__target_destroy_notify = NULL;
802 			*result_target = _tmp2__target;
803 			*result_target_destroy_notify = _tmp2__target_destroy_notify;
804 			result = _tmp2_;
805 			return result;
806 		}
807 	}
808 }
809 
810 static inline gpointer
gee_functions_equal_data_func_closure_get_instance_private(GeeFunctionsEqualDataFuncClosure * self)811 gee_functions_equal_data_func_closure_get_instance_private (GeeFunctionsEqualDataFuncClosure* self)
812 {
813 	return G_STRUCT_MEMBER_P (self, GeeFunctionsEqualDataFuncClosure_private_offset);
814 }
815 
816 G_GNUC_INTERNAL GeeFunctionsEqualDataFuncClosure*
gee_functions_equal_data_func_closure_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeEqualDataFunc func,gpointer func_target,GDestroyNotify func_target_destroy_notify)817 gee_functions_equal_data_func_closure_construct (GType object_type,
818                                                  GType g_type,
819                                                  GBoxedCopyFunc g_dup_func,
820                                                  GDestroyNotify g_destroy_func,
821                                                  GeeEqualDataFunc func,
822                                                  gpointer func_target,
823                                                  GDestroyNotify func_target_destroy_notify)
824 {
825 	GeeFunctionsEqualDataFuncClosure* self = NULL;
826 	GeeEqualDataFunc _tmp0_;
827 	gpointer _tmp0__target;
828 	GDestroyNotify _tmp0__target_destroy_notify;
829 	self = (GeeFunctionsEqualDataFuncClosure*) g_type_create_instance (object_type);
830 	self->priv->g_type = g_type;
831 	self->priv->g_dup_func = g_dup_func;
832 	self->priv->g_destroy_func = g_destroy_func;
833 	_tmp0_ = func;
834 	_tmp0__target = func_target;
835 	_tmp0__target_destroy_notify = func_target_destroy_notify;
836 	func = NULL;
837 	func_target = NULL;
838 	func_target_destroy_notify = NULL;
839 	(self->func_target_destroy_notify == NULL) ? NULL : (self->func_target_destroy_notify (self->func_target), NULL);
840 	self->func = NULL;
841 	self->func_target = NULL;
842 	self->func_target_destroy_notify = NULL;
843 	self->func = _tmp0_;
844 	self->func_target = _tmp0__target;
845 	self->func_target_destroy_notify = _tmp0__target_destroy_notify;
846 	(func_target_destroy_notify == NULL) ? NULL : (func_target_destroy_notify (func_target), NULL);
847 	func = NULL;
848 	func_target = NULL;
849 	func_target_destroy_notify = NULL;
850 	return self;
851 }
852 
853 G_GNUC_INTERNAL GeeFunctionsEqualDataFuncClosure*
gee_functions_equal_data_func_closure_new(GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeEqualDataFunc func,gpointer func_target,GDestroyNotify func_target_destroy_notify)854 gee_functions_equal_data_func_closure_new (GType g_type,
855                                            GBoxedCopyFunc g_dup_func,
856                                            GDestroyNotify g_destroy_func,
857                                            GeeEqualDataFunc func,
858                                            gpointer func_target,
859                                            GDestroyNotify func_target_destroy_notify)
860 {
861 	return gee_functions_equal_data_func_closure_construct (GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE, g_type, g_dup_func, g_destroy_func, func, func_target, func_target_destroy_notify);
862 }
863 
864 static gboolean
__lambda29_(GeeFunctionsEqualDataFuncClosure * self,gconstpointer a,gconstpointer b)865 __lambda29_ (GeeFunctionsEqualDataFuncClosure* self,
866              gconstpointer a,
867              gconstpointer b)
868 {
869 	GeeEqualDataFunc _tmp0_;
870 	gpointer _tmp0__target;
871 	gboolean result = FALSE;
872 	_tmp0_ = self->func;
873 	_tmp0__target = self->func_target;
874 	result = _tmp0_ (a, b, _tmp0__target);
875 	return result;
876 }
877 
878 static gboolean
___lambda29__gee_equal_data_func(gconstpointer a,gconstpointer b,gpointer self)879 ___lambda29__gee_equal_data_func (gconstpointer a,
880                                   gconstpointer b,
881                                   gpointer self)
882 {
883 	gboolean result;
884 	result = __lambda29_ ((GeeFunctionsEqualDataFuncClosure*) self, a, b);
885 	return result;
886 }
887 
888 G_GNUC_INTERNAL GeeEqualDataFunc
gee_functions_equal_data_func_closure_clone_func(GeeFunctionsEqualDataFuncClosure * self,gpointer * result_target,GDestroyNotify * result_target_destroy_notify)889 gee_functions_equal_data_func_closure_clone_func (GeeFunctionsEqualDataFuncClosure* self,
890                                                   gpointer* result_target,
891                                                   GDestroyNotify* result_target_destroy_notify)
892 {
893 	GeeEqualDataFunc _tmp0_;
894 	gpointer _tmp0__target;
895 	GDestroyNotify _tmp0__target_destroy_notify;
896 	GeeEqualDataFunc result = NULL;
897 	g_return_val_if_fail (self != NULL, NULL);
898 	_tmp0_ = ___lambda29__gee_equal_data_func;
899 	_tmp0__target = gee_functions_equal_data_func_closure_ref (self);
900 	_tmp0__target_destroy_notify = gee_functions_equal_data_func_closure_unref;
901 	*result_target = _tmp0__target;
902 	*result_target_destroy_notify = _tmp0__target_destroy_notify;
903 	result = _tmp0_;
904 	return result;
905 }
906 
907 static void
gee_functions_value_equal_data_func_closure_init(GValue * value)908 gee_functions_value_equal_data_func_closure_init (GValue* value)
909 {
910 	value->data[0].v_pointer = NULL;
911 }
912 
913 static void
gee_functions_value_equal_data_func_closure_free_value(GValue * value)914 gee_functions_value_equal_data_func_closure_free_value (GValue* value)
915 {
916 	if (value->data[0].v_pointer) {
917 		gee_functions_equal_data_func_closure_unref (value->data[0].v_pointer);
918 	}
919 }
920 
921 static void
gee_functions_value_equal_data_func_closure_copy_value(const GValue * src_value,GValue * dest_value)922 gee_functions_value_equal_data_func_closure_copy_value (const GValue* src_value,
923                                                         GValue* dest_value)
924 {
925 	if (src_value->data[0].v_pointer) {
926 		dest_value->data[0].v_pointer = gee_functions_equal_data_func_closure_ref (src_value->data[0].v_pointer);
927 	} else {
928 		dest_value->data[0].v_pointer = NULL;
929 	}
930 }
931 
932 static gpointer
gee_functions_value_equal_data_func_closure_peek_pointer(const GValue * value)933 gee_functions_value_equal_data_func_closure_peek_pointer (const GValue* value)
934 {
935 	return value->data[0].v_pointer;
936 }
937 
938 static gchar*
gee_functions_value_equal_data_func_closure_collect_value(GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)939 gee_functions_value_equal_data_func_closure_collect_value (GValue* value,
940                                                            guint n_collect_values,
941                                                            GTypeCValue* collect_values,
942                                                            guint collect_flags)
943 {
944 	if (collect_values[0].v_pointer) {
945 		GeeFunctionsEqualDataFuncClosure * object;
946 		object = collect_values[0].v_pointer;
947 		if (object->parent_instance.g_class == NULL) {
948 			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
949 		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
950 			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
951 		}
952 		value->data[0].v_pointer = gee_functions_equal_data_func_closure_ref (object);
953 	} else {
954 		value->data[0].v_pointer = NULL;
955 	}
956 	return NULL;
957 }
958 
959 static gchar*
gee_functions_value_equal_data_func_closure_lcopy_value(const GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)960 gee_functions_value_equal_data_func_closure_lcopy_value (const GValue* value,
961                                                          guint n_collect_values,
962                                                          GTypeCValue* collect_values,
963                                                          guint collect_flags)
964 {
965 	GeeFunctionsEqualDataFuncClosure ** object_p;
966 	object_p = collect_values[0].v_pointer;
967 	if (!object_p) {
968 		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
969 	}
970 	if (!value->data[0].v_pointer) {
971 		*object_p = NULL;
972 	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
973 		*object_p = value->data[0].v_pointer;
974 	} else {
975 		*object_p = gee_functions_equal_data_func_closure_ref (value->data[0].v_pointer);
976 	}
977 	return NULL;
978 }
979 
980 G_GNUC_INTERNAL GParamSpec*
gee_functions_param_spec_equal_data_func_closure(const gchar * name,const gchar * nick,const gchar * blurb,GType object_type,GParamFlags flags)981 gee_functions_param_spec_equal_data_func_closure (const gchar* name,
982                                                   const gchar* nick,
983                                                   const gchar* blurb,
984                                                   GType object_type,
985                                                   GParamFlags flags)
986 {
987 	GeeFunctionsParamSpecEqualDataFuncClosure* spec;
988 	g_return_val_if_fail (g_type_is_a (object_type, GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE), NULL);
989 	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
990 	G_PARAM_SPEC (spec)->value_type = object_type;
991 	return G_PARAM_SPEC (spec);
992 }
993 
994 G_GNUC_INTERNAL gpointer
gee_functions_value_get_equal_data_func_closure(const GValue * value)995 gee_functions_value_get_equal_data_func_closure (const GValue* value)
996 {
997 	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE), NULL);
998 	return value->data[0].v_pointer;
999 }
1000 
1001 G_GNUC_INTERNAL void
gee_functions_value_set_equal_data_func_closure(GValue * value,gpointer v_object)1002 gee_functions_value_set_equal_data_func_closure (GValue* value,
1003                                                  gpointer v_object)
1004 {
1005 	GeeFunctionsEqualDataFuncClosure * old;
1006 	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE));
1007 	old = value->data[0].v_pointer;
1008 	if (v_object) {
1009 		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE));
1010 		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
1011 		value->data[0].v_pointer = v_object;
1012 		gee_functions_equal_data_func_closure_ref (value->data[0].v_pointer);
1013 	} else {
1014 		value->data[0].v_pointer = NULL;
1015 	}
1016 	if (old) {
1017 		gee_functions_equal_data_func_closure_unref (old);
1018 	}
1019 }
1020 
1021 G_GNUC_INTERNAL void
gee_functions_value_take_equal_data_func_closure(GValue * value,gpointer v_object)1022 gee_functions_value_take_equal_data_func_closure (GValue* value,
1023                                                   gpointer v_object)
1024 {
1025 	GeeFunctionsEqualDataFuncClosure * old;
1026 	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE));
1027 	old = value->data[0].v_pointer;
1028 	if (v_object) {
1029 		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE));
1030 		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
1031 		value->data[0].v_pointer = v_object;
1032 	} else {
1033 		value->data[0].v_pointer = NULL;
1034 	}
1035 	if (old) {
1036 		gee_functions_equal_data_func_closure_unref (old);
1037 	}
1038 }
1039 
1040 static void
gee_functions_equal_data_func_closure_class_init(GeeFunctionsEqualDataFuncClosureClass * klass,gpointer klass_data)1041 gee_functions_equal_data_func_closure_class_init (GeeFunctionsEqualDataFuncClosureClass * klass,
1042                                                   gpointer klass_data)
1043 {
1044 	gee_functions_equal_data_func_closure_parent_class = g_type_class_peek_parent (klass);
1045 	((GeeFunctionsEqualDataFuncClosureClass *) klass)->finalize = gee_functions_equal_data_func_closure_finalize;
1046 	g_type_class_adjust_private_offset (klass, &GeeFunctionsEqualDataFuncClosure_private_offset);
1047 }
1048 
1049 static void
gee_functions_equal_data_func_closure_instance_init(GeeFunctionsEqualDataFuncClosure * self,gpointer klass)1050 gee_functions_equal_data_func_closure_instance_init (GeeFunctionsEqualDataFuncClosure * self,
1051                                                      gpointer klass)
1052 {
1053 	self->priv = gee_functions_equal_data_func_closure_get_instance_private (self);
1054 	self->ref_count = 1;
1055 }
1056 
1057 static void
gee_functions_equal_data_func_closure_finalize(GeeFunctionsEqualDataFuncClosure * obj)1058 gee_functions_equal_data_func_closure_finalize (GeeFunctionsEqualDataFuncClosure * obj)
1059 {
1060 	GeeFunctionsEqualDataFuncClosure * self;
1061 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE, GeeFunctionsEqualDataFuncClosure);
1062 	g_signal_handlers_destroy (self);
1063 	(self->func_target_destroy_notify == NULL) ? NULL : (self->func_target_destroy_notify (self->func_target), NULL);
1064 	self->func = NULL;
1065 	self->func_target = NULL;
1066 	self->func_target_destroy_notify = NULL;
1067 }
1068 
1069 G_GNUC_INTERNAL GType
gee_functions_equal_data_func_closure_get_type(void)1070 gee_functions_equal_data_func_closure_get_type (void)
1071 {
1072 	static volatile gsize gee_functions_equal_data_func_closure_type_id__volatile = 0;
1073 	if (g_once_init_enter (&gee_functions_equal_data_func_closure_type_id__volatile)) {
1074 		static const GTypeValueTable g_define_type_value_table = { gee_functions_value_equal_data_func_closure_init, gee_functions_value_equal_data_func_closure_free_value, gee_functions_value_equal_data_func_closure_copy_value, gee_functions_value_equal_data_func_closure_peek_pointer, "p", gee_functions_value_equal_data_func_closure_collect_value, "p", gee_functions_value_equal_data_func_closure_lcopy_value };
1075 		static const GTypeInfo g_define_type_info = { sizeof (GeeFunctionsEqualDataFuncClosureClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_functions_equal_data_func_closure_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeFunctionsEqualDataFuncClosure), 0, (GInstanceInitFunc) gee_functions_equal_data_func_closure_instance_init, &g_define_type_value_table };
1076 		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
1077 		GType gee_functions_equal_data_func_closure_type_id;
1078 		gee_functions_equal_data_func_closure_type_id = g_type_register_fundamental (g_type_fundamental_next (), "GeeFunctionsEqualDataFuncClosure", &g_define_type_info, &g_define_type_fundamental_info, 0);
1079 		GeeFunctionsEqualDataFuncClosure_private_offset = g_type_add_instance_private (gee_functions_equal_data_func_closure_type_id, sizeof (GeeFunctionsEqualDataFuncClosurePrivate));
1080 		g_once_init_leave (&gee_functions_equal_data_func_closure_type_id__volatile, gee_functions_equal_data_func_closure_type_id);
1081 	}
1082 	return gee_functions_equal_data_func_closure_type_id__volatile;
1083 }
1084 
1085 G_GNUC_INTERNAL gpointer
gee_functions_equal_data_func_closure_ref(gpointer instance)1086 gee_functions_equal_data_func_closure_ref (gpointer instance)
1087 {
1088 	GeeFunctionsEqualDataFuncClosure * self;
1089 	self = instance;
1090 	g_atomic_int_inc (&self->ref_count);
1091 	return instance;
1092 }
1093 
1094 G_GNUC_INTERNAL void
gee_functions_equal_data_func_closure_unref(gpointer instance)1095 gee_functions_equal_data_func_closure_unref (gpointer instance)
1096 {
1097 	GeeFunctionsEqualDataFuncClosure * self;
1098 	self = instance;
1099 	if (g_atomic_int_dec_and_test (&self->ref_count)) {
1100 		GEE_FUNCTIONS_EQUAL_DATA_FUNC_CLOSURE_GET_CLASS (self)->finalize (self);
1101 		g_type_free_instance ((GTypeInstance *) self);
1102 	}
1103 }
1104 
1105 static inline gpointer
gee_functions_hash_data_func_closure_get_instance_private(GeeFunctionsHashDataFuncClosure * self)1106 gee_functions_hash_data_func_closure_get_instance_private (GeeFunctionsHashDataFuncClosure* self)
1107 {
1108 	return G_STRUCT_MEMBER_P (self, GeeFunctionsHashDataFuncClosure_private_offset);
1109 }
1110 
1111 G_GNUC_INTERNAL GeeFunctionsHashDataFuncClosure*
gee_functions_hash_data_func_closure_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeHashDataFunc func,gpointer func_target,GDestroyNotify func_target_destroy_notify)1112 gee_functions_hash_data_func_closure_construct (GType object_type,
1113                                                 GType g_type,
1114                                                 GBoxedCopyFunc g_dup_func,
1115                                                 GDestroyNotify g_destroy_func,
1116                                                 GeeHashDataFunc func,
1117                                                 gpointer func_target,
1118                                                 GDestroyNotify func_target_destroy_notify)
1119 {
1120 	GeeFunctionsHashDataFuncClosure* self = NULL;
1121 	GeeHashDataFunc _tmp0_;
1122 	gpointer _tmp0__target;
1123 	GDestroyNotify _tmp0__target_destroy_notify;
1124 	self = (GeeFunctionsHashDataFuncClosure*) g_type_create_instance (object_type);
1125 	self->priv->g_type = g_type;
1126 	self->priv->g_dup_func = g_dup_func;
1127 	self->priv->g_destroy_func = g_destroy_func;
1128 	_tmp0_ = func;
1129 	_tmp0__target = func_target;
1130 	_tmp0__target_destroy_notify = func_target_destroy_notify;
1131 	func = NULL;
1132 	func_target = NULL;
1133 	func_target_destroy_notify = NULL;
1134 	(self->func_target_destroy_notify == NULL) ? NULL : (self->func_target_destroy_notify (self->func_target), NULL);
1135 	self->func = NULL;
1136 	self->func_target = NULL;
1137 	self->func_target_destroy_notify = NULL;
1138 	self->func = _tmp0_;
1139 	self->func_target = _tmp0__target;
1140 	self->func_target_destroy_notify = _tmp0__target_destroy_notify;
1141 	(func_target_destroy_notify == NULL) ? NULL : (func_target_destroy_notify (func_target), NULL);
1142 	func = NULL;
1143 	func_target = NULL;
1144 	func_target_destroy_notify = NULL;
1145 	return self;
1146 }
1147 
1148 G_GNUC_INTERNAL GeeFunctionsHashDataFuncClosure*
gee_functions_hash_data_func_closure_new(GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeHashDataFunc func,gpointer func_target,GDestroyNotify func_target_destroy_notify)1149 gee_functions_hash_data_func_closure_new (GType g_type,
1150                                           GBoxedCopyFunc g_dup_func,
1151                                           GDestroyNotify g_destroy_func,
1152                                           GeeHashDataFunc func,
1153                                           gpointer func_target,
1154                                           GDestroyNotify func_target_destroy_notify)
1155 {
1156 	return gee_functions_hash_data_func_closure_construct (GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE, g_type, g_dup_func, g_destroy_func, func, func_target, func_target_destroy_notify);
1157 }
1158 
1159 static guint
__lambda40_(GeeFunctionsHashDataFuncClosure * self,gconstpointer a)1160 __lambda40_ (GeeFunctionsHashDataFuncClosure* self,
1161              gconstpointer a)
1162 {
1163 	GeeHashDataFunc _tmp0_;
1164 	gpointer _tmp0__target;
1165 	guint result = 0U;
1166 	_tmp0_ = self->func;
1167 	_tmp0__target = self->func_target;
1168 	result = _tmp0_ (a, _tmp0__target);
1169 	return result;
1170 }
1171 
1172 static guint
___lambda40__gee_hash_data_func(gconstpointer v,gpointer self)1173 ___lambda40__gee_hash_data_func (gconstpointer v,
1174                                  gpointer self)
1175 {
1176 	guint result;
1177 	result = __lambda40_ ((GeeFunctionsHashDataFuncClosure*) self, v);
1178 	return result;
1179 }
1180 
1181 G_GNUC_INTERNAL GeeHashDataFunc
gee_functions_hash_data_func_closure_clone_func(GeeFunctionsHashDataFuncClosure * self,gpointer * result_target,GDestroyNotify * result_target_destroy_notify)1182 gee_functions_hash_data_func_closure_clone_func (GeeFunctionsHashDataFuncClosure* self,
1183                                                  gpointer* result_target,
1184                                                  GDestroyNotify* result_target_destroy_notify)
1185 {
1186 	GeeHashDataFunc _tmp0_;
1187 	gpointer _tmp0__target;
1188 	GDestroyNotify _tmp0__target_destroy_notify;
1189 	GeeHashDataFunc result = NULL;
1190 	g_return_val_if_fail (self != NULL, NULL);
1191 	_tmp0_ = ___lambda40__gee_hash_data_func;
1192 	_tmp0__target = gee_functions_hash_data_func_closure_ref (self);
1193 	_tmp0__target_destroy_notify = gee_functions_hash_data_func_closure_unref;
1194 	*result_target = _tmp0__target;
1195 	*result_target_destroy_notify = _tmp0__target_destroy_notify;
1196 	result = _tmp0_;
1197 	return result;
1198 }
1199 
1200 static void
gee_functions_value_hash_data_func_closure_init(GValue * value)1201 gee_functions_value_hash_data_func_closure_init (GValue* value)
1202 {
1203 	value->data[0].v_pointer = NULL;
1204 }
1205 
1206 static void
gee_functions_value_hash_data_func_closure_free_value(GValue * value)1207 gee_functions_value_hash_data_func_closure_free_value (GValue* value)
1208 {
1209 	if (value->data[0].v_pointer) {
1210 		gee_functions_hash_data_func_closure_unref (value->data[0].v_pointer);
1211 	}
1212 }
1213 
1214 static void
gee_functions_value_hash_data_func_closure_copy_value(const GValue * src_value,GValue * dest_value)1215 gee_functions_value_hash_data_func_closure_copy_value (const GValue* src_value,
1216                                                        GValue* dest_value)
1217 {
1218 	if (src_value->data[0].v_pointer) {
1219 		dest_value->data[0].v_pointer = gee_functions_hash_data_func_closure_ref (src_value->data[0].v_pointer);
1220 	} else {
1221 		dest_value->data[0].v_pointer = NULL;
1222 	}
1223 }
1224 
1225 static gpointer
gee_functions_value_hash_data_func_closure_peek_pointer(const GValue * value)1226 gee_functions_value_hash_data_func_closure_peek_pointer (const GValue* value)
1227 {
1228 	return value->data[0].v_pointer;
1229 }
1230 
1231 static gchar*
gee_functions_value_hash_data_func_closure_collect_value(GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)1232 gee_functions_value_hash_data_func_closure_collect_value (GValue* value,
1233                                                           guint n_collect_values,
1234                                                           GTypeCValue* collect_values,
1235                                                           guint collect_flags)
1236 {
1237 	if (collect_values[0].v_pointer) {
1238 		GeeFunctionsHashDataFuncClosure * object;
1239 		object = collect_values[0].v_pointer;
1240 		if (object->parent_instance.g_class == NULL) {
1241 			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
1242 		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
1243 			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
1244 		}
1245 		value->data[0].v_pointer = gee_functions_hash_data_func_closure_ref (object);
1246 	} else {
1247 		value->data[0].v_pointer = NULL;
1248 	}
1249 	return NULL;
1250 }
1251 
1252 static gchar*
gee_functions_value_hash_data_func_closure_lcopy_value(const GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)1253 gee_functions_value_hash_data_func_closure_lcopy_value (const GValue* value,
1254                                                         guint n_collect_values,
1255                                                         GTypeCValue* collect_values,
1256                                                         guint collect_flags)
1257 {
1258 	GeeFunctionsHashDataFuncClosure ** object_p;
1259 	object_p = collect_values[0].v_pointer;
1260 	if (!object_p) {
1261 		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
1262 	}
1263 	if (!value->data[0].v_pointer) {
1264 		*object_p = NULL;
1265 	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
1266 		*object_p = value->data[0].v_pointer;
1267 	} else {
1268 		*object_p = gee_functions_hash_data_func_closure_ref (value->data[0].v_pointer);
1269 	}
1270 	return NULL;
1271 }
1272 
1273 G_GNUC_INTERNAL GParamSpec*
gee_functions_param_spec_hash_data_func_closure(const gchar * name,const gchar * nick,const gchar * blurb,GType object_type,GParamFlags flags)1274 gee_functions_param_spec_hash_data_func_closure (const gchar* name,
1275                                                  const gchar* nick,
1276                                                  const gchar* blurb,
1277                                                  GType object_type,
1278                                                  GParamFlags flags)
1279 {
1280 	GeeFunctionsParamSpecHashDataFuncClosure* spec;
1281 	g_return_val_if_fail (g_type_is_a (object_type, GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE), NULL);
1282 	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
1283 	G_PARAM_SPEC (spec)->value_type = object_type;
1284 	return G_PARAM_SPEC (spec);
1285 }
1286 
1287 G_GNUC_INTERNAL gpointer
gee_functions_value_get_hash_data_func_closure(const GValue * value)1288 gee_functions_value_get_hash_data_func_closure (const GValue* value)
1289 {
1290 	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE), NULL);
1291 	return value->data[0].v_pointer;
1292 }
1293 
1294 G_GNUC_INTERNAL void
gee_functions_value_set_hash_data_func_closure(GValue * value,gpointer v_object)1295 gee_functions_value_set_hash_data_func_closure (GValue* value,
1296                                                 gpointer v_object)
1297 {
1298 	GeeFunctionsHashDataFuncClosure * old;
1299 	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE));
1300 	old = value->data[0].v_pointer;
1301 	if (v_object) {
1302 		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE));
1303 		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
1304 		value->data[0].v_pointer = v_object;
1305 		gee_functions_hash_data_func_closure_ref (value->data[0].v_pointer);
1306 	} else {
1307 		value->data[0].v_pointer = NULL;
1308 	}
1309 	if (old) {
1310 		gee_functions_hash_data_func_closure_unref (old);
1311 	}
1312 }
1313 
1314 G_GNUC_INTERNAL void
gee_functions_value_take_hash_data_func_closure(GValue * value,gpointer v_object)1315 gee_functions_value_take_hash_data_func_closure (GValue* value,
1316                                                  gpointer v_object)
1317 {
1318 	GeeFunctionsHashDataFuncClosure * old;
1319 	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE));
1320 	old = value->data[0].v_pointer;
1321 	if (v_object) {
1322 		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE));
1323 		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
1324 		value->data[0].v_pointer = v_object;
1325 	} else {
1326 		value->data[0].v_pointer = NULL;
1327 	}
1328 	if (old) {
1329 		gee_functions_hash_data_func_closure_unref (old);
1330 	}
1331 }
1332 
1333 static void
gee_functions_hash_data_func_closure_class_init(GeeFunctionsHashDataFuncClosureClass * klass,gpointer klass_data)1334 gee_functions_hash_data_func_closure_class_init (GeeFunctionsHashDataFuncClosureClass * klass,
1335                                                  gpointer klass_data)
1336 {
1337 	gee_functions_hash_data_func_closure_parent_class = g_type_class_peek_parent (klass);
1338 	((GeeFunctionsHashDataFuncClosureClass *) klass)->finalize = gee_functions_hash_data_func_closure_finalize;
1339 	g_type_class_adjust_private_offset (klass, &GeeFunctionsHashDataFuncClosure_private_offset);
1340 }
1341 
1342 static void
gee_functions_hash_data_func_closure_instance_init(GeeFunctionsHashDataFuncClosure * self,gpointer klass)1343 gee_functions_hash_data_func_closure_instance_init (GeeFunctionsHashDataFuncClosure * self,
1344                                                     gpointer klass)
1345 {
1346 	self->priv = gee_functions_hash_data_func_closure_get_instance_private (self);
1347 	self->ref_count = 1;
1348 }
1349 
1350 static void
gee_functions_hash_data_func_closure_finalize(GeeFunctionsHashDataFuncClosure * obj)1351 gee_functions_hash_data_func_closure_finalize (GeeFunctionsHashDataFuncClosure * obj)
1352 {
1353 	GeeFunctionsHashDataFuncClosure * self;
1354 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_FUNCTIONS_TYPE_HASH_DATA_FUNC_CLOSURE, GeeFunctionsHashDataFuncClosure);
1355 	g_signal_handlers_destroy (self);
1356 	(self->func_target_destroy_notify == NULL) ? NULL : (self->func_target_destroy_notify (self->func_target), NULL);
1357 	self->func = NULL;
1358 	self->func_target = NULL;
1359 	self->func_target_destroy_notify = NULL;
1360 }
1361 
1362 G_GNUC_INTERNAL GType
gee_functions_hash_data_func_closure_get_type(void)1363 gee_functions_hash_data_func_closure_get_type (void)
1364 {
1365 	static volatile gsize gee_functions_hash_data_func_closure_type_id__volatile = 0;
1366 	if (g_once_init_enter (&gee_functions_hash_data_func_closure_type_id__volatile)) {
1367 		static const GTypeValueTable g_define_type_value_table = { gee_functions_value_hash_data_func_closure_init, gee_functions_value_hash_data_func_closure_free_value, gee_functions_value_hash_data_func_closure_copy_value, gee_functions_value_hash_data_func_closure_peek_pointer, "p", gee_functions_value_hash_data_func_closure_collect_value, "p", gee_functions_value_hash_data_func_closure_lcopy_value };
1368 		static const GTypeInfo g_define_type_info = { sizeof (GeeFunctionsHashDataFuncClosureClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_functions_hash_data_func_closure_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeFunctionsHashDataFuncClosure), 0, (GInstanceInitFunc) gee_functions_hash_data_func_closure_instance_init, &g_define_type_value_table };
1369 		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
1370 		GType gee_functions_hash_data_func_closure_type_id;
1371 		gee_functions_hash_data_func_closure_type_id = g_type_register_fundamental (g_type_fundamental_next (), "GeeFunctionsHashDataFuncClosure", &g_define_type_info, &g_define_type_fundamental_info, 0);
1372 		GeeFunctionsHashDataFuncClosure_private_offset = g_type_add_instance_private (gee_functions_hash_data_func_closure_type_id, sizeof (GeeFunctionsHashDataFuncClosurePrivate));
1373 		g_once_init_leave (&gee_functions_hash_data_func_closure_type_id__volatile, gee_functions_hash_data_func_closure_type_id);
1374 	}
1375 	return gee_functions_hash_data_func_closure_type_id__volatile;
1376 }
1377 
1378 G_GNUC_INTERNAL gpointer
gee_functions_hash_data_func_closure_ref(gpointer instance)1379 gee_functions_hash_data_func_closure_ref (gpointer instance)
1380 {
1381 	GeeFunctionsHashDataFuncClosure * self;
1382 	self = instance;
1383 	g_atomic_int_inc (&self->ref_count);
1384 	return instance;
1385 }
1386 
1387 G_GNUC_INTERNAL void
gee_functions_hash_data_func_closure_unref(gpointer instance)1388 gee_functions_hash_data_func_closure_unref (gpointer instance)
1389 {
1390 	GeeFunctionsHashDataFuncClosure * self;
1391 	self = instance;
1392 	if (g_atomic_int_dec_and_test (&self->ref_count)) {
1393 		GEE_FUNCTIONS_HASH_DATA_FUNC_CLOSURE_GET_CLASS (self)->finalize (self);
1394 		g_type_free_instance ((GTypeInstance *) self);
1395 	}
1396 }
1397 
1398 static inline gpointer
gee_functions_compare_data_func_closure_get_instance_private(GeeFunctionsCompareDataFuncClosure * self)1399 gee_functions_compare_data_func_closure_get_instance_private (GeeFunctionsCompareDataFuncClosure* self)
1400 {
1401 	return G_STRUCT_MEMBER_P (self, GeeFunctionsCompareDataFuncClosure_private_offset);
1402 }
1403 
1404 G_GNUC_INTERNAL GeeFunctionsCompareDataFuncClosure*
gee_functions_compare_data_func_closure_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GCompareDataFunc func,gpointer func_target,GDestroyNotify func_target_destroy_notify)1405 gee_functions_compare_data_func_closure_construct (GType object_type,
1406                                                    GType g_type,
1407                                                    GBoxedCopyFunc g_dup_func,
1408                                                    GDestroyNotify g_destroy_func,
1409                                                    GCompareDataFunc func,
1410                                                    gpointer func_target,
1411                                                    GDestroyNotify func_target_destroy_notify)
1412 {
1413 	GeeFunctionsCompareDataFuncClosure* self = NULL;
1414 	GCompareDataFunc _tmp0_;
1415 	gpointer _tmp0__target;
1416 	GDestroyNotify _tmp0__target_destroy_notify;
1417 	self = (GeeFunctionsCompareDataFuncClosure*) g_type_create_instance (object_type);
1418 	self->priv->g_type = g_type;
1419 	self->priv->g_dup_func = g_dup_func;
1420 	self->priv->g_destroy_func = g_destroy_func;
1421 	_tmp0_ = func;
1422 	_tmp0__target = func_target;
1423 	_tmp0__target_destroy_notify = func_target_destroy_notify;
1424 	func = NULL;
1425 	func_target = NULL;
1426 	func_target_destroy_notify = NULL;
1427 	(self->func_target_destroy_notify == NULL) ? NULL : (self->func_target_destroy_notify (self->func_target), NULL);
1428 	self->func = NULL;
1429 	self->func_target = NULL;
1430 	self->func_target_destroy_notify = NULL;
1431 	self->func = _tmp0_;
1432 	self->func_target = _tmp0__target;
1433 	self->func_target_destroy_notify = _tmp0__target_destroy_notify;
1434 	(func_target_destroy_notify == NULL) ? NULL : (func_target_destroy_notify (func_target), NULL);
1435 	func = NULL;
1436 	func_target = NULL;
1437 	func_target_destroy_notify = NULL;
1438 	return self;
1439 }
1440 
1441 G_GNUC_INTERNAL GeeFunctionsCompareDataFuncClosure*
gee_functions_compare_data_func_closure_new(GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GCompareDataFunc func,gpointer func_target,GDestroyNotify func_target_destroy_notify)1442 gee_functions_compare_data_func_closure_new (GType g_type,
1443                                              GBoxedCopyFunc g_dup_func,
1444                                              GDestroyNotify g_destroy_func,
1445                                              GCompareDataFunc func,
1446                                              gpointer func_target,
1447                                              GDestroyNotify func_target_destroy_notify)
1448 {
1449 	return gee_functions_compare_data_func_closure_construct (GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE, g_type, g_dup_func, g_destroy_func, func, func_target, func_target_destroy_notify);
1450 }
1451 
1452 static gint
__lambda49_(GeeFunctionsCompareDataFuncClosure * self,gconstpointer a,gconstpointer b)1453 __lambda49_ (GeeFunctionsCompareDataFuncClosure* self,
1454              gconstpointer a,
1455              gconstpointer b)
1456 {
1457 	GCompareDataFunc _tmp0_;
1458 	gpointer _tmp0__target;
1459 	gint result = 0;
1460 	_tmp0_ = self->func;
1461 	_tmp0__target = self->func_target;
1462 	result = _tmp0_ (a, b, _tmp0__target);
1463 	return result;
1464 }
1465 
1466 static gint
___lambda49__gcompare_data_func(gconstpointer a,gconstpointer b,gpointer self)1467 ___lambda49__gcompare_data_func (gconstpointer a,
1468                                  gconstpointer b,
1469                                  gpointer self)
1470 {
1471 	gint result;
1472 	result = __lambda49_ ((GeeFunctionsCompareDataFuncClosure*) self, a, b);
1473 	return result;
1474 }
1475 
1476 G_GNUC_INTERNAL GCompareDataFunc
gee_functions_compare_data_func_closure_clone_func(GeeFunctionsCompareDataFuncClosure * self,gpointer * result_target,GDestroyNotify * result_target_destroy_notify)1477 gee_functions_compare_data_func_closure_clone_func (GeeFunctionsCompareDataFuncClosure* self,
1478                                                     gpointer* result_target,
1479                                                     GDestroyNotify* result_target_destroy_notify)
1480 {
1481 	GCompareDataFunc _tmp0_;
1482 	gpointer _tmp0__target;
1483 	GDestroyNotify _tmp0__target_destroy_notify;
1484 	GCompareDataFunc result = NULL;
1485 	g_return_val_if_fail (self != NULL, NULL);
1486 	_tmp0_ = ___lambda49__gcompare_data_func;
1487 	_tmp0__target = gee_functions_compare_data_func_closure_ref (self);
1488 	_tmp0__target_destroy_notify = gee_functions_compare_data_func_closure_unref;
1489 	*result_target = _tmp0__target;
1490 	*result_target_destroy_notify = _tmp0__target_destroy_notify;
1491 	result = _tmp0_;
1492 	return result;
1493 }
1494 
1495 static void
gee_functions_value_compare_data_func_closure_init(GValue * value)1496 gee_functions_value_compare_data_func_closure_init (GValue* value)
1497 {
1498 	value->data[0].v_pointer = NULL;
1499 }
1500 
1501 static void
gee_functions_value_compare_data_func_closure_free_value(GValue * value)1502 gee_functions_value_compare_data_func_closure_free_value (GValue* value)
1503 {
1504 	if (value->data[0].v_pointer) {
1505 		gee_functions_compare_data_func_closure_unref (value->data[0].v_pointer);
1506 	}
1507 }
1508 
1509 static void
gee_functions_value_compare_data_func_closure_copy_value(const GValue * src_value,GValue * dest_value)1510 gee_functions_value_compare_data_func_closure_copy_value (const GValue* src_value,
1511                                                           GValue* dest_value)
1512 {
1513 	if (src_value->data[0].v_pointer) {
1514 		dest_value->data[0].v_pointer = gee_functions_compare_data_func_closure_ref (src_value->data[0].v_pointer);
1515 	} else {
1516 		dest_value->data[0].v_pointer = NULL;
1517 	}
1518 }
1519 
1520 static gpointer
gee_functions_value_compare_data_func_closure_peek_pointer(const GValue * value)1521 gee_functions_value_compare_data_func_closure_peek_pointer (const GValue* value)
1522 {
1523 	return value->data[0].v_pointer;
1524 }
1525 
1526 static gchar*
gee_functions_value_compare_data_func_closure_collect_value(GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)1527 gee_functions_value_compare_data_func_closure_collect_value (GValue* value,
1528                                                              guint n_collect_values,
1529                                                              GTypeCValue* collect_values,
1530                                                              guint collect_flags)
1531 {
1532 	if (collect_values[0].v_pointer) {
1533 		GeeFunctionsCompareDataFuncClosure * object;
1534 		object = collect_values[0].v_pointer;
1535 		if (object->parent_instance.g_class == NULL) {
1536 			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
1537 		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
1538 			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
1539 		}
1540 		value->data[0].v_pointer = gee_functions_compare_data_func_closure_ref (object);
1541 	} else {
1542 		value->data[0].v_pointer = NULL;
1543 	}
1544 	return NULL;
1545 }
1546 
1547 static gchar*
gee_functions_value_compare_data_func_closure_lcopy_value(const GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)1548 gee_functions_value_compare_data_func_closure_lcopy_value (const GValue* value,
1549                                                            guint n_collect_values,
1550                                                            GTypeCValue* collect_values,
1551                                                            guint collect_flags)
1552 {
1553 	GeeFunctionsCompareDataFuncClosure ** object_p;
1554 	object_p = collect_values[0].v_pointer;
1555 	if (!object_p) {
1556 		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
1557 	}
1558 	if (!value->data[0].v_pointer) {
1559 		*object_p = NULL;
1560 	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
1561 		*object_p = value->data[0].v_pointer;
1562 	} else {
1563 		*object_p = gee_functions_compare_data_func_closure_ref (value->data[0].v_pointer);
1564 	}
1565 	return NULL;
1566 }
1567 
1568 G_GNUC_INTERNAL GParamSpec*
gee_functions_param_spec_compare_data_func_closure(const gchar * name,const gchar * nick,const gchar * blurb,GType object_type,GParamFlags flags)1569 gee_functions_param_spec_compare_data_func_closure (const gchar* name,
1570                                                     const gchar* nick,
1571                                                     const gchar* blurb,
1572                                                     GType object_type,
1573                                                     GParamFlags flags)
1574 {
1575 	GeeFunctionsParamSpecCompareDataFuncClosure* spec;
1576 	g_return_val_if_fail (g_type_is_a (object_type, GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE), NULL);
1577 	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
1578 	G_PARAM_SPEC (spec)->value_type = object_type;
1579 	return G_PARAM_SPEC (spec);
1580 }
1581 
1582 G_GNUC_INTERNAL gpointer
gee_functions_value_get_compare_data_func_closure(const GValue * value)1583 gee_functions_value_get_compare_data_func_closure (const GValue* value)
1584 {
1585 	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE), NULL);
1586 	return value->data[0].v_pointer;
1587 }
1588 
1589 G_GNUC_INTERNAL void
gee_functions_value_set_compare_data_func_closure(GValue * value,gpointer v_object)1590 gee_functions_value_set_compare_data_func_closure (GValue* value,
1591                                                    gpointer v_object)
1592 {
1593 	GeeFunctionsCompareDataFuncClosure * old;
1594 	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE));
1595 	old = value->data[0].v_pointer;
1596 	if (v_object) {
1597 		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE));
1598 		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
1599 		value->data[0].v_pointer = v_object;
1600 		gee_functions_compare_data_func_closure_ref (value->data[0].v_pointer);
1601 	} else {
1602 		value->data[0].v_pointer = NULL;
1603 	}
1604 	if (old) {
1605 		gee_functions_compare_data_func_closure_unref (old);
1606 	}
1607 }
1608 
1609 G_GNUC_INTERNAL void
gee_functions_value_take_compare_data_func_closure(GValue * value,gpointer v_object)1610 gee_functions_value_take_compare_data_func_closure (GValue* value,
1611                                                     gpointer v_object)
1612 {
1613 	GeeFunctionsCompareDataFuncClosure * old;
1614 	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE));
1615 	old = value->data[0].v_pointer;
1616 	if (v_object) {
1617 		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE));
1618 		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
1619 		value->data[0].v_pointer = v_object;
1620 	} else {
1621 		value->data[0].v_pointer = NULL;
1622 	}
1623 	if (old) {
1624 		gee_functions_compare_data_func_closure_unref (old);
1625 	}
1626 }
1627 
1628 static void
gee_functions_compare_data_func_closure_class_init(GeeFunctionsCompareDataFuncClosureClass * klass,gpointer klass_data)1629 gee_functions_compare_data_func_closure_class_init (GeeFunctionsCompareDataFuncClosureClass * klass,
1630                                                     gpointer klass_data)
1631 {
1632 	gee_functions_compare_data_func_closure_parent_class = g_type_class_peek_parent (klass);
1633 	((GeeFunctionsCompareDataFuncClosureClass *) klass)->finalize = gee_functions_compare_data_func_closure_finalize;
1634 	g_type_class_adjust_private_offset (klass, &GeeFunctionsCompareDataFuncClosure_private_offset);
1635 }
1636 
1637 static void
gee_functions_compare_data_func_closure_instance_init(GeeFunctionsCompareDataFuncClosure * self,gpointer klass)1638 gee_functions_compare_data_func_closure_instance_init (GeeFunctionsCompareDataFuncClosure * self,
1639                                                        gpointer klass)
1640 {
1641 	self->priv = gee_functions_compare_data_func_closure_get_instance_private (self);
1642 	self->ref_count = 1;
1643 }
1644 
1645 static void
gee_functions_compare_data_func_closure_finalize(GeeFunctionsCompareDataFuncClosure * obj)1646 gee_functions_compare_data_func_closure_finalize (GeeFunctionsCompareDataFuncClosure * obj)
1647 {
1648 	GeeFunctionsCompareDataFuncClosure * self;
1649 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE, GeeFunctionsCompareDataFuncClosure);
1650 	g_signal_handlers_destroy (self);
1651 	(self->func_target_destroy_notify == NULL) ? NULL : (self->func_target_destroy_notify (self->func_target), NULL);
1652 	self->func = NULL;
1653 	self->func_target = NULL;
1654 	self->func_target_destroy_notify = NULL;
1655 }
1656 
1657 G_GNUC_INTERNAL GType
gee_functions_compare_data_func_closure_get_type(void)1658 gee_functions_compare_data_func_closure_get_type (void)
1659 {
1660 	static volatile gsize gee_functions_compare_data_func_closure_type_id__volatile = 0;
1661 	if (g_once_init_enter (&gee_functions_compare_data_func_closure_type_id__volatile)) {
1662 		static const GTypeValueTable g_define_type_value_table = { gee_functions_value_compare_data_func_closure_init, gee_functions_value_compare_data_func_closure_free_value, gee_functions_value_compare_data_func_closure_copy_value, gee_functions_value_compare_data_func_closure_peek_pointer, "p", gee_functions_value_compare_data_func_closure_collect_value, "p", gee_functions_value_compare_data_func_closure_lcopy_value };
1663 		static const GTypeInfo g_define_type_info = { sizeof (GeeFunctionsCompareDataFuncClosureClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_functions_compare_data_func_closure_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeFunctionsCompareDataFuncClosure), 0, (GInstanceInitFunc) gee_functions_compare_data_func_closure_instance_init, &g_define_type_value_table };
1664 		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
1665 		GType gee_functions_compare_data_func_closure_type_id;
1666 		gee_functions_compare_data_func_closure_type_id = g_type_register_fundamental (g_type_fundamental_next (), "GeeFunctionsCompareDataFuncClosure", &g_define_type_info, &g_define_type_fundamental_info, 0);
1667 		GeeFunctionsCompareDataFuncClosure_private_offset = g_type_add_instance_private (gee_functions_compare_data_func_closure_type_id, sizeof (GeeFunctionsCompareDataFuncClosurePrivate));
1668 		g_once_init_leave (&gee_functions_compare_data_func_closure_type_id__volatile, gee_functions_compare_data_func_closure_type_id);
1669 	}
1670 	return gee_functions_compare_data_func_closure_type_id__volatile;
1671 }
1672 
1673 G_GNUC_INTERNAL gpointer
gee_functions_compare_data_func_closure_ref(gpointer instance)1674 gee_functions_compare_data_func_closure_ref (gpointer instance)
1675 {
1676 	GeeFunctionsCompareDataFuncClosure * self;
1677 	self = instance;
1678 	g_atomic_int_inc (&self->ref_count);
1679 	return instance;
1680 }
1681 
1682 G_GNUC_INTERNAL void
gee_functions_compare_data_func_closure_unref(gpointer instance)1683 gee_functions_compare_data_func_closure_unref (gpointer instance)
1684 {
1685 	GeeFunctionsCompareDataFuncClosure * self;
1686 	self = instance;
1687 	if (g_atomic_int_dec_and_test (&self->ref_count)) {
1688 		GEE_FUNCTIONS_COMPARE_DATA_FUNC_CLOSURE_GET_CLASS (self)->finalize (self);
1689 		g_type_free_instance ((GTypeInstance *) self);
1690 	}
1691 }
1692 
1693