1 /* valagtypemodule.c generated by valac, the Vala compiler
2  * generated from valagtypemodule.vala, do not modify */
3 
4 /* valagtypemodule.vala
5  *
6  * Copyright (C) 2006-2010  Jürg Billeter
7  * Copyright (C) 2006-2008  Raffaele Sandrini
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public
11  * License as published by the Free Software Foundation; either
12  * version 2.1 of the License, or (at your option) any later version.
13 
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  * Lesser General Public License for more details.
18 
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
22  *
23  * Author:
24  * 	Jürg Billeter <j@bitron.ch>
25  *	Raffaele Sandrini <raffaele@sandrini.ch>
26  */
27 
28 #include "valacodegen.h"
29 #include <vala.h>
30 #include <valaccode.h>
31 #include <valagee.h>
32 #include <glib-object.h>
33 #include <glib.h>
34 #include <stdlib.h>
35 #include <string.h>
36 
37 #define _g_free0(var) (var = (g_free (var), NULL))
38 #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
39 #define _vala_typeregister_function_unref0(var) ((var == NULL) ? NULL : (var = (vala_typeregister_function_unref (var), NULL)))
40 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
41 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
42 #define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
43 #define _vala_ccode_base_module_emit_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_base_module_emit_context_unref (var), NULL)))
44 #define _vala_ccode_declarator_suffix_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_declarator_suffix_unref (var), NULL)))
45 #define _vala_map_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_iterator_unref (var), NULL)))
46 #define _vala_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL)))
47 #define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL)))
48 
49 static gpointer vala_gtype_module_parent_class = NULL;
50 
51 static ValaCCodeParameter* vala_gtype_module_real_generate_parameter (ValaCCodeMethodModule* base,
52                                                                ValaParameter* param,
53                                                                ValaCCodeFile* decl_space,
54                                                                ValaMap* cparam_map,
55                                                                ValaMap* carg_map);
56 static void vala_gtype_module_real_generate_class_declaration (ValaCCodeBaseModule* base,
57                                                         ValaClass* cl,
58                                                         ValaCCodeFile* decl_space);
59 static void vala_gtype_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* base,
60                                                                ValaClass* cl,
61                                                                ValaCCodeFile* decl_space);
62 static void vala_gtype_module_generate_struct_method_declaration (ValaGTypeModule* self,
63                                                            ValaObjectTypeSymbol* type_sym,
64                                                            ValaMethod* m,
65                                                            ValaCCodeStruct* instance_struct,
66                                                            ValaCCodeStruct* type_struct,
67                                                            ValaCCodeFile* decl_space,
68                                                            gboolean* has_struct_member);
69 static void vala_gtype_module_generate_struct_property_declaration (ValaGTypeModule* self,
70                                                              ValaObjectTypeSymbol* type_sym,
71                                                              ValaProperty* prop,
72                                                              ValaCCodeStruct* instance_struct,
73                                                              ValaCCodeStruct* type_struct,
74                                                              ValaCCodeFile* decl_space,
75                                                              gboolean* has_struct_member);
76 static void vala_gtype_module_generate_struct_field_declaration (ValaGTypeModule* self,
77                                                           ValaField* f,
78                                                           ValaCCodeStruct* instance_struct,
79                                                           ValaCCodeStruct* type_struct,
80                                                           ValaCCodeFile* decl_space,
81                                                           gboolean* has_struct_member);
82 static gboolean vala_gtype_module_real_generate_method_declaration (ValaCCodeBaseModule* base,
83                                                              ValaMethod* m,
84                                                              ValaCCodeFile* decl_space);
85 static void vala_gtype_module_real_generate_virtual_method_declaration (ValaGTypeModule* self,
86                                                                  ValaMethod* m,
87                                                                  ValaCCodeFile* decl_space,
88                                                                  ValaCCodeStruct* type_struct);
89 static void vala_gtype_module_generate_class_private_declaration (ValaGTypeModule* self,
90                                                            ValaClass* cl,
91                                                            ValaCCodeFile* decl_space);
92 static void vala_gtype_module_real_visit_class (ValaCodeVisitor* base,
93                                          ValaClass* cl);
94 static void vala_gtype_module_begin_base_init_function (ValaGTypeModule* self,
95                                                  ValaClass* cl);
96 static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self,
97                                                   ValaClass* cl);
98 static void vala_gtype_module_begin_instance_init_function (ValaGTypeModule* self,
99                                                      ValaClass* cl);
100 static void vala_gtype_module_begin_base_finalize_function (ValaGTypeModule* self,
101                                                      ValaClass* cl);
102 static void vala_gtype_module_begin_class_finalize_function (ValaGTypeModule* self,
103                                                       ValaClass* cl);
104 static void vala_gtype_module_begin_finalize_function (ValaGTypeModule* self,
105                                                 ValaClass* cl);
106 static void vala_gtype_module_add_type_value_table_init_function (ValaGTypeModule* self,
107                                                            ValaClass* cl);
108 static void vala_gtype_module_add_type_value_table_free_function (ValaGTypeModule* self,
109                                                            ValaClass* cl);
110 static void vala_gtype_module_add_type_value_table_copy_function (ValaGTypeModule* self,
111                                                            ValaClass* cl);
112 static void vala_gtype_module_add_type_value_table_peek_pointer_function (ValaGTypeModule* self,
113                                                                    ValaClass* cl);
114 static void vala_gtype_module_add_type_value_table_collect_value_function (ValaGTypeModule* self,
115                                                                     ValaClass* cl);
116 static void vala_gtype_module_add_type_value_table_lcopy_value_function (ValaGTypeModule* self,
117                                                                   ValaClass* cl);
118 static void vala_gtype_module_add_g_param_spec_type_function (ValaGTypeModule* self,
119                                                        ValaClass* cl);
120 static void vala_gtype_module_add_g_value_get_function (ValaGTypeModule* self,
121                                                  ValaClass* cl);
122 static void vala_gtype_module_add_g_value_set_function (ValaGTypeModule* self,
123                                                  ValaClass* cl);
124 static void vala_gtype_module_add_g_value_take_function (ValaGTypeModule* self,
125                                                   ValaClass* cl);
126 static void vala_gtype_module_add_base_init_function (ValaGTypeModule* self,
127                                                ValaClass* cl);
128 static void vala_gtype_module_add_class_init_function (ValaGTypeModule* self,
129                                                 ValaClass* cl);
130 static void vala_gtype_module_add_base_finalize_function (ValaGTypeModule* self,
131                                                    ValaClass* cl);
132 static void vala_gtype_module_add_class_finalize_function (ValaGTypeModule* self,
133                                                     ValaClass* cl);
134 static void vala_gtype_module_add_interface_init_function (ValaGTypeModule* self,
135                                                     ValaClass* cl,
136                                                     ValaInterface* iface);
137 static void vala_gtype_module_add_instance_init_function (ValaGTypeModule* self,
138                                                    ValaClass* cl);
139 static void vala_gtype_module_add_finalize_function (ValaGTypeModule* self,
140                                               ValaClass* cl);
141 static void vala_gtype_module_real_generate_class_init (ValaGTypeModule* self,
142                                                  ValaClass* cl);
143 static void vala_gtype_module_real_end_instance_init (ValaGTypeModule* self,
144                                                ValaClass* cl);
145 static ValaCCodeExpression* vala_gtype_module_cast_method_pointer (ValaGTypeModule* self,
146                                                             ValaMethod* m,
147                                                             ValaCCodeExpression* cfunc,
148                                                             ValaObjectTypeSymbol* base_type,
149                                                             gint direction);
150 static void vala_gtype_module_add_generic_accessor_function (ValaGTypeModule* self,
151                                                       const gchar* base_name,
152                                                       const gchar* return_type,
153                                                       ValaCCodeExpression* expression,
154                                                       ValaTypeParameter* p,
155                                                       ValaClass* cl,
156                                                       ValaInterface* iface);
157 static ValaCCodeExpression* vala_gtype_module_cast_property_accessor_pointer (ValaGTypeModule* self,
158                                                                        ValaPropertyAccessor* acc,
159                                                                        ValaCCodeExpression* cfunc,
160                                                                        ValaObjectTypeSymbol* base_type);
161 static ValaCCodeExpression* vala_gtype_module_real_get_param_spec_cexpression (ValaCCodeBaseModule* base,
162                                                                         ValaProperty* prop);
163 static ValaCCodeExpression* vala_gtype_module_real_get_param_spec (ValaCCodeBaseModule* base,
164                                                             ValaProperty* prop);
165 static void vala_gtype_module_real_generate_interface_declaration (ValaCCodeBaseModule* base,
166                                                             ValaInterface* iface,
167                                                             ValaCCodeFile* decl_space);
168 static void vala_gtype_module_real_visit_interface (ValaCodeVisitor* base,
169                                              ValaInterface* iface);
170 static void vala_gtype_module_add_interface_default_init_function (ValaGTypeModule* self,
171                                                             ValaInterface* iface);
172 static void vala_gtype_module_real_visit_struct (ValaCodeVisitor* base,
173                                           ValaStruct* st);
174 static void vala_gtype_module_real_visit_enum (ValaCodeVisitor* base,
175                                         ValaEnum* en);
176 static void vala_gtype_module_real_visit_method_call (ValaCodeVisitor* base,
177                                                ValaMethodCall* expr);
178 static void vala_gtype_module_real_visit_property (ValaCodeVisitor* base,
179                                             ValaProperty* prop);
180 static void vala_gtype_module_real_create_type_check_statement (ValaCCodeBaseModule* base,
181                                                          ValaCodeNode* method_node,
182                                                          ValaDataType* ret_type,
183                                                          ValaTypeSymbol* t,
184                                                          gboolean non_null,
185                                                          const gchar* var_name);
186 static void vala_gtype_module_real_visit_cast_expression (ValaCodeVisitor* base,
187                                                    ValaCastExpression* expr);
188 static GType vala_gtype_module_get_type_once (void);
189 
190 static ValaCCodeParameter*
vala_gtype_module_real_generate_parameter(ValaCCodeMethodModule * base,ValaParameter * param,ValaCCodeFile * decl_space,ValaMap * cparam_map,ValaMap * carg_map)191 vala_gtype_module_real_generate_parameter (ValaCCodeMethodModule* base,
192                                            ValaParameter* param,
193                                            ValaCCodeFile* decl_space,
194                                            ValaMap* cparam_map,
195                                            ValaMap* carg_map)
196 {
197 	ValaGTypeModule * self;
198 	ValaDataType* _tmp0_;
199 	ValaDataType* _tmp1_;
200 	ValaDataType* _tmp3_;
201 	ValaDataType* _tmp4_;
202 	gchar* ctypename = NULL;
203 	ValaDataType* _tmp5_;
204 	ValaDataType* _tmp6_;
205 	gchar* _tmp7_;
206 	ValaParameterDirection _tmp8_;
207 	ValaParameterDirection _tmp9_;
208 	ValaCCodeParameter* cparam = NULL;
209 	gchar* _tmp12_;
210 	gchar* _tmp13_;
211 	const gchar* _tmp14_;
212 	ValaCCodeParameter* _tmp15_;
213 	ValaCCodeParameter* _tmp16_;
214 	gboolean _tmp17_;
215 	gboolean _tmp18_;
216 	ValaCCodeParameter* _tmp20_;
217 	ValaCCodeParameter* result = NULL;
218 	self = (ValaGTypeModule*) base;
219 	g_return_val_if_fail (param != NULL, NULL);
220 	g_return_val_if_fail (decl_space != NULL, NULL);
221 	g_return_val_if_fail (cparam_map != NULL, NULL);
222 	_tmp0_ = vala_variable_get_variable_type ((ValaVariable*) param);
223 	_tmp1_ = _tmp0_;
224 	if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_OBJECT_TYPE)) {
225 		ValaCCodeParameter* _tmp2_;
226 		_tmp2_ = VALA_CCODE_METHOD_MODULE_CLASS (vala_gtype_module_parent_class)->generate_parameter ((ValaCCodeMethodModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), param, decl_space, cparam_map, carg_map);
227 		result = _tmp2_;
228 		return result;
229 	}
230 	_tmp3_ = vala_variable_get_variable_type ((ValaVariable*) param);
231 	_tmp4_ = _tmp3_;
232 	vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp4_, decl_space);
233 	_tmp5_ = vala_variable_get_variable_type ((ValaVariable*) param);
234 	_tmp6_ = _tmp5_;
235 	_tmp7_ = vala_get_ccode_name ((ValaCodeNode*) _tmp6_);
236 	ctypename = _tmp7_;
237 	_tmp8_ = vala_parameter_get_direction (param);
238 	_tmp9_ = _tmp8_;
239 	if (_tmp9_ != VALA_PARAMETER_DIRECTION_IN) {
240 		const gchar* _tmp10_;
241 		gchar* _tmp11_;
242 		_tmp10_ = ctypename;
243 		_tmp11_ = g_strdup_printf ("%s *", _tmp10_);
244 		_g_free0 (ctypename);
245 		ctypename = _tmp11_;
246 	}
247 	_tmp12_ = vala_get_ccode_name ((ValaCodeNode*) param);
248 	_tmp13_ = _tmp12_;
249 	_tmp14_ = ctypename;
250 	_tmp15_ = vala_ccode_parameter_new (_tmp13_, _tmp14_);
251 	_tmp16_ = _tmp15_;
252 	_g_free0 (_tmp13_);
253 	cparam = _tmp16_;
254 	_tmp17_ = vala_parameter_get_format_arg (param);
255 	_tmp18_ = _tmp17_;
256 	if (_tmp18_) {
257 		ValaCCodeParameter* _tmp19_;
258 		_tmp19_ = cparam;
259 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp19_, VALA_CCODE_MODIFIERS_FORMAT_ARG);
260 	}
261 	_tmp20_ = cparam;
262 	vala_map_set (cparam_map, (gpointer) ((gintptr) vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, vala_get_ccode_pos (param), FALSE)), _tmp20_);
263 	if (carg_map != NULL) {
264 		ValaCCodeExpression* _tmp21_;
265 		ValaCCodeExpression* _tmp22_;
266 		_tmp21_ = vala_ccode_base_module_get_parameter_cexpression ((ValaCCodeBaseModule*) self, param);
267 		_tmp22_ = _tmp21_;
268 		vala_map_set (carg_map, (gpointer) ((gintptr) vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, vala_get_ccode_pos (param), FALSE)), _tmp22_);
269 		_vala_ccode_node_unref0 (_tmp22_);
270 	}
271 	result = cparam;
272 	_g_free0 (ctypename);
273 	return result;
274 }
275 
276 static gpointer
_vala_code_node_ref0(gpointer self)277 _vala_code_node_ref0 (gpointer self)
278 {
279 	return self ? vala_code_node_ref (self) : NULL;
280 }
281 
282 static void
vala_gtype_module_real_generate_class_declaration(ValaCCodeBaseModule * base,ValaClass * cl,ValaCCodeFile * decl_space)283 vala_gtype_module_real_generate_class_declaration (ValaCCodeBaseModule* base,
284                                                    ValaClass* cl,
285                                                    ValaCCodeFile* decl_space)
286 {
287 	ValaGTypeModule * self;
288 	gchar* _tmp0_;
289 	gchar* _tmp1_;
290 	gboolean _tmp2_;
291 	ValaClass* _tmp3_;
292 	ValaClass* _tmp4_;
293 	gboolean is_gtypeinstance = FALSE;
294 	gboolean _tmp7_;
295 	gboolean _tmp8_;
296 	gboolean _tmp9_ = FALSE;
297 	gboolean is_fundamental = FALSE;
298 	gboolean is_gsource = FALSE;
299 	ValaClass* _tmp12_;
300 	gboolean _tmp82_ = FALSE;
301 	gboolean _tmp83_;
302 	gboolean _tmp84_;
303 	ValaClass* base_class = NULL;
304 	ValaClass* _tmp246_;
305 	gboolean _tmp254_ = FALSE;
306 	gboolean _tmp255_ = FALSE;
307 	ValaClass* _tmp256_;
308 	gboolean _tmp257_;
309 	gboolean _tmp258_;
310 	self = (ValaGTypeModule*) base;
311 	g_return_if_fail (cl != NULL);
312 	g_return_if_fail (decl_space != NULL);
313 	_tmp0_ = vala_get_ccode_name ((ValaCodeNode*) cl);
314 	_tmp1_ = _tmp0_;
315 	_tmp2_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) cl, _tmp1_);
316 	_g_free0 (_tmp1_);
317 	if (_tmp2_) {
318 		return;
319 	}
320 	_tmp3_ = vala_class_get_base_class (cl);
321 	_tmp4_ = _tmp3_;
322 	if (_tmp4_ != NULL) {
323 		ValaClass* _tmp5_;
324 		ValaClass* _tmp6_;
325 		_tmp5_ = vala_class_get_base_class (cl);
326 		_tmp6_ = _tmp5_;
327 		vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, _tmp6_, decl_space);
328 	}
329 	_tmp7_ = vala_class_get_is_compact (cl);
330 	_tmp8_ = _tmp7_;
331 	is_gtypeinstance = !_tmp8_;
332 	if (is_gtypeinstance) {
333 		ValaClass* _tmp10_;
334 		ValaClass* _tmp11_;
335 		_tmp10_ = vala_class_get_base_class (cl);
336 		_tmp11_ = _tmp10_;
337 		_tmp9_ = _tmp11_ == NULL;
338 	} else {
339 		_tmp9_ = FALSE;
340 	}
341 	is_fundamental = _tmp9_;
342 	_tmp12_ = ((ValaCCodeBaseModule*) self)->gsource_type;
343 	is_gsource = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp12_);
344 	if (is_gtypeinstance) {
345 		ValaCCodeNewline* _tmp13_;
346 		ValaCCodeNewline* _tmp14_;
347 		gchar* macro = NULL;
348 		gchar* _tmp15_;
349 		gchar* _tmp16_;
350 		gchar* _tmp17_;
351 		gchar* _tmp18_;
352 		gchar* _tmp19_;
353 		gchar* _tmp20_;
354 		const gchar* _tmp21_;
355 		ValaCCodeMacroReplacement* _tmp22_;
356 		ValaCCodeMacroReplacement* _tmp23_;
357 		gchar* _tmp24_;
358 		gchar* _tmp25_;
359 		gchar* _tmp26_;
360 		gchar* _tmp27_;
361 		gchar* _tmp28_;
362 		gchar* _tmp29_;
363 		gchar* _tmp30_;
364 		gchar* _tmp31_;
365 		gchar* _tmp32_;
366 		const gchar* _tmp33_;
367 		ValaCCodeMacroReplacement* _tmp34_;
368 		ValaCCodeMacroReplacement* _tmp35_;
369 		gchar* _tmp36_;
370 		gchar* _tmp37_;
371 		gchar* _tmp38_;
372 		gchar* _tmp39_;
373 		gchar* _tmp40_;
374 		gchar* _tmp41_;
375 		gchar* _tmp42_;
376 		gchar* _tmp43_;
377 		gchar* _tmp44_;
378 		const gchar* _tmp45_;
379 		ValaCCodeMacroReplacement* _tmp46_;
380 		ValaCCodeMacroReplacement* _tmp47_;
381 		gchar* _tmp48_;
382 		gchar* _tmp49_;
383 		gchar* _tmp50_;
384 		gchar* _tmp51_;
385 		gchar* _tmp52_;
386 		gchar* _tmp53_;
387 		gchar* _tmp54_;
388 		const gchar* _tmp55_;
389 		ValaCCodeMacroReplacement* _tmp56_;
390 		ValaCCodeMacroReplacement* _tmp57_;
391 		gchar* _tmp58_;
392 		gchar* _tmp59_;
393 		gchar* _tmp60_;
394 		gchar* _tmp61_;
395 		gchar* _tmp62_;
396 		gchar* _tmp63_;
397 		gchar* _tmp64_;
398 		const gchar* _tmp65_;
399 		ValaCCodeMacroReplacement* _tmp66_;
400 		ValaCCodeMacroReplacement* _tmp67_;
401 		gchar* _tmp68_;
402 		gchar* _tmp69_;
403 		gchar* _tmp70_;
404 		gchar* _tmp71_;
405 		gchar* _tmp72_;
406 		gchar* _tmp73_;
407 		gchar* _tmp74_;
408 		gchar* _tmp75_;
409 		gchar* _tmp76_;
410 		const gchar* _tmp77_;
411 		ValaCCodeMacroReplacement* _tmp78_;
412 		ValaCCodeMacroReplacement* _tmp79_;
413 		ValaCCodeNewline* _tmp80_;
414 		ValaCCodeNewline* _tmp81_;
415 		vala_ccode_file_add_include (decl_space, "glib-object.h", FALSE);
416 		_tmp13_ = vala_ccode_newline_new ();
417 		_tmp14_ = _tmp13_;
418 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp14_);
419 		_vala_ccode_node_unref0 (_tmp14_);
420 		_tmp15_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
421 		_tmp16_ = _tmp15_;
422 		_tmp17_ = g_strdup_printf ("(%s_get_type ())", _tmp16_);
423 		_tmp18_ = _tmp17_;
424 		_g_free0 (_tmp16_);
425 		macro = _tmp18_;
426 		_tmp19_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
427 		_tmp20_ = _tmp19_;
428 		_tmp21_ = macro;
429 		_tmp22_ = vala_ccode_macro_replacement_new (_tmp20_, _tmp21_);
430 		_tmp23_ = _tmp22_;
431 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp23_);
432 		_vala_ccode_node_unref0 (_tmp23_);
433 		_g_free0 (_tmp20_);
434 		_tmp24_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
435 		_tmp25_ = _tmp24_;
436 		_tmp26_ = vala_get_ccode_name ((ValaCodeNode*) cl);
437 		_tmp27_ = _tmp26_;
438 		_tmp28_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_CAST ((obj), %s, %s))", _tmp25_, _tmp27_);
439 		_g_free0 (macro);
440 		macro = _tmp28_;
441 		_g_free0 (_tmp27_);
442 		_g_free0 (_tmp25_);
443 		_tmp29_ = vala_get_ccode_type_cast_function ((ValaObjectTypeSymbol*) cl);
444 		_tmp30_ = _tmp29_;
445 		_tmp31_ = g_strdup_printf ("%s(obj)", _tmp30_);
446 		_tmp32_ = _tmp31_;
447 		_tmp33_ = macro;
448 		_tmp34_ = vala_ccode_macro_replacement_new (_tmp32_, _tmp33_);
449 		_tmp35_ = _tmp34_;
450 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp35_);
451 		_vala_ccode_node_unref0 (_tmp35_);
452 		_g_free0 (_tmp32_);
453 		_g_free0 (_tmp30_);
454 		_tmp36_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
455 		_tmp37_ = _tmp36_;
456 		_tmp38_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
457 		_tmp39_ = _tmp38_;
458 		_tmp40_ = g_strdup_printf ("(G_TYPE_CHECK_CLASS_CAST ((klass), %s, %s))", _tmp37_, _tmp39_);
459 		_g_free0 (macro);
460 		macro = _tmp40_;
461 		_g_free0 (_tmp39_);
462 		_g_free0 (_tmp37_);
463 		_tmp41_ = vala_get_ccode_class_type_function (cl);
464 		_tmp42_ = _tmp41_;
465 		_tmp43_ = g_strdup_printf ("%s(klass)", _tmp42_);
466 		_tmp44_ = _tmp43_;
467 		_tmp45_ = macro;
468 		_tmp46_ = vala_ccode_macro_replacement_new (_tmp44_, _tmp45_);
469 		_tmp47_ = _tmp46_;
470 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp47_);
471 		_vala_ccode_node_unref0 (_tmp47_);
472 		_g_free0 (_tmp44_);
473 		_g_free0 (_tmp42_);
474 		_tmp48_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
475 		_tmp49_ = _tmp48_;
476 		_tmp50_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))", _tmp49_);
477 		_g_free0 (macro);
478 		macro = _tmp50_;
479 		_g_free0 (_tmp49_);
480 		_tmp51_ = vala_get_ccode_type_check_function ((ValaTypeSymbol*) cl);
481 		_tmp52_ = _tmp51_;
482 		_tmp53_ = g_strdup_printf ("%s(obj)", _tmp52_);
483 		_tmp54_ = _tmp53_;
484 		_tmp55_ = macro;
485 		_tmp56_ = vala_ccode_macro_replacement_new (_tmp54_, _tmp55_);
486 		_tmp57_ = _tmp56_;
487 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp57_);
488 		_vala_ccode_node_unref0 (_tmp57_);
489 		_g_free0 (_tmp54_);
490 		_g_free0 (_tmp52_);
491 		_tmp58_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
492 		_tmp59_ = _tmp58_;
493 		_tmp60_ = g_strdup_printf ("(G_TYPE_CHECK_CLASS_TYPE ((klass), %s))", _tmp59_);
494 		_g_free0 (macro);
495 		macro = _tmp60_;
496 		_g_free0 (_tmp59_);
497 		_tmp61_ = vala_get_ccode_class_type_check_function (cl);
498 		_tmp62_ = _tmp61_;
499 		_tmp63_ = g_strdup_printf ("%s(klass)", _tmp62_);
500 		_tmp64_ = _tmp63_;
501 		_tmp65_ = macro;
502 		_tmp66_ = vala_ccode_macro_replacement_new (_tmp64_, _tmp65_);
503 		_tmp67_ = _tmp66_;
504 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp67_);
505 		_vala_ccode_node_unref0 (_tmp67_);
506 		_g_free0 (_tmp64_);
507 		_g_free0 (_tmp62_);
508 		_tmp68_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
509 		_tmp69_ = _tmp68_;
510 		_tmp70_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
511 		_tmp71_ = _tmp70_;
512 		_tmp72_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_CLASS ((obj), %s, %s))", _tmp69_, _tmp71_);
513 		_g_free0 (macro);
514 		macro = _tmp72_;
515 		_g_free0 (_tmp71_);
516 		_g_free0 (_tmp69_);
517 		_tmp73_ = vala_get_ccode_type_get_function ((ValaObjectTypeSymbol*) cl);
518 		_tmp74_ = _tmp73_;
519 		_tmp75_ = g_strdup_printf ("%s(obj)", _tmp74_);
520 		_tmp76_ = _tmp75_;
521 		_tmp77_ = macro;
522 		_tmp78_ = vala_ccode_macro_replacement_new (_tmp76_, _tmp77_);
523 		_tmp79_ = _tmp78_;
524 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp79_);
525 		_vala_ccode_node_unref0 (_tmp79_);
526 		_g_free0 (_tmp76_);
527 		_g_free0 (_tmp74_);
528 		_tmp80_ = vala_ccode_newline_new ();
529 		_tmp81_ = _tmp80_;
530 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp81_);
531 		_vala_ccode_node_unref0 (_tmp81_);
532 		_g_free0 (macro);
533 	}
534 	_tmp83_ = vala_class_get_is_compact (cl);
535 	_tmp84_ = _tmp83_;
536 	if (_tmp84_) {
537 		ValaClass* _tmp85_;
538 		ValaClass* _tmp86_;
539 		_tmp85_ = vala_class_get_base_class (cl);
540 		_tmp86_ = _tmp85_;
541 		_tmp82_ = _tmp86_ != NULL;
542 	} else {
543 		_tmp82_ = FALSE;
544 	}
545 	if (_tmp82_) {
546 		ValaClass* _tmp87_;
547 		ValaClass* _tmp88_;
548 		gchar* _tmp89_;
549 		gchar* _tmp90_;
550 		gchar* _tmp91_;
551 		gchar* _tmp92_;
552 		ValaCCodeVariableDeclarator* _tmp93_;
553 		ValaCCodeVariableDeclarator* _tmp94_;
554 		ValaCCodeTypeDefinition* _tmp95_;
555 		ValaCCodeTypeDefinition* _tmp96_;
556 		_tmp87_ = vala_class_get_base_class (cl);
557 		_tmp88_ = _tmp87_;
558 		_tmp89_ = vala_get_ccode_name ((ValaCodeNode*) _tmp88_);
559 		_tmp90_ = _tmp89_;
560 		_tmp91_ = vala_get_ccode_name ((ValaCodeNode*) cl);
561 		_tmp92_ = _tmp91_;
562 		_tmp93_ = vala_ccode_variable_declarator_new (_tmp92_, NULL, NULL);
563 		_tmp94_ = _tmp93_;
564 		_tmp95_ = vala_ccode_type_definition_new (_tmp90_, (ValaCCodeDeclarator*) _tmp94_);
565 		_tmp96_ = _tmp95_;
566 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp96_);
567 		_vala_ccode_node_unref0 (_tmp96_);
568 		_vala_ccode_node_unref0 (_tmp94_);
569 		_g_free0 (_tmp92_);
570 		_g_free0 (_tmp90_);
571 	} else {
572 		gchar* _tmp97_;
573 		gchar* _tmp98_;
574 		gchar* _tmp99_;
575 		gchar* _tmp100_;
576 		gchar* _tmp101_;
577 		gchar* _tmp102_;
578 		ValaCCodeVariableDeclarator* _tmp103_;
579 		ValaCCodeVariableDeclarator* _tmp104_;
580 		ValaCCodeTypeDefinition* _tmp105_;
581 		ValaCCodeTypeDefinition* _tmp106_;
582 		_tmp97_ = vala_get_ccode_name ((ValaCodeNode*) cl);
583 		_tmp98_ = _tmp97_;
584 		_tmp99_ = g_strdup_printf ("struct _%s", _tmp98_);
585 		_tmp100_ = _tmp99_;
586 		_tmp101_ = vala_get_ccode_name ((ValaCodeNode*) cl);
587 		_tmp102_ = _tmp101_;
588 		_tmp103_ = vala_ccode_variable_declarator_new (_tmp102_, NULL, NULL);
589 		_tmp104_ = _tmp103_;
590 		_tmp105_ = vala_ccode_type_definition_new (_tmp100_, (ValaCCodeDeclarator*) _tmp104_);
591 		_tmp106_ = _tmp105_;
592 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp106_);
593 		_vala_ccode_node_unref0 (_tmp106_);
594 		_vala_ccode_node_unref0 (_tmp104_);
595 		_g_free0 (_tmp102_);
596 		_g_free0 (_tmp100_);
597 		_g_free0 (_tmp98_);
598 	}
599 	if (is_fundamental) {
600 		ValaCCodeFunction* ref_fun = NULL;
601 		gchar* _tmp107_;
602 		gchar* _tmp108_;
603 		ValaCCodeFunction* _tmp109_;
604 		ValaCCodeFunction* _tmp110_;
605 		ValaCCodeFunction* unref_fun = NULL;
606 		gchar* _tmp111_;
607 		gchar* _tmp112_;
608 		ValaCCodeFunction* _tmp113_;
609 		ValaCCodeFunction* _tmp114_;
610 		ValaCCodeFunction* _tmp124_;
611 		ValaCCodeParameter* _tmp125_;
612 		ValaCCodeParameter* _tmp126_;
613 		ValaCCodeFunction* _tmp127_;
614 		ValaCCodeParameter* _tmp128_;
615 		ValaCCodeParameter* _tmp129_;
616 		ValaCCodeFunction* _tmp130_;
617 		ValaCCodeFunction* _tmp131_;
618 		ValaCCodeFunction* function = NULL;
619 		gchar* _tmp132_;
620 		gchar* _tmp133_;
621 		ValaCCodeFunction* _tmp134_;
622 		ValaCCodeFunction* _tmp135_;
623 		ValaCCodeFunction* _tmp136_;
624 		ValaCCodeParameter* _tmp137_;
625 		ValaCCodeParameter* _tmp138_;
626 		ValaCCodeFunction* _tmp139_;
627 		ValaCCodeParameter* _tmp140_;
628 		ValaCCodeParameter* _tmp141_;
629 		ValaCCodeFunction* _tmp142_;
630 		ValaCCodeParameter* _tmp143_;
631 		ValaCCodeParameter* _tmp144_;
632 		ValaCCodeFunction* _tmp145_;
633 		ValaCCodeParameter* _tmp146_;
634 		ValaCCodeParameter* _tmp147_;
635 		ValaCCodeFunction* _tmp148_;
636 		ValaCCodeParameter* _tmp149_;
637 		ValaCCodeParameter* _tmp150_;
638 		ValaCCodeFunction* _tmp158_;
639 		gchar* _tmp159_;
640 		gchar* _tmp160_;
641 		ValaCCodeFunction* _tmp161_;
642 		ValaCCodeFunction* _tmp162_;
643 		ValaCCodeParameter* _tmp163_;
644 		ValaCCodeParameter* _tmp164_;
645 		ValaCCodeFunction* _tmp165_;
646 		ValaCCodeParameter* _tmp166_;
647 		ValaCCodeParameter* _tmp167_;
648 		ValaCCodeFunction* _tmp175_;
649 		gchar* _tmp176_;
650 		gchar* _tmp177_;
651 		ValaCCodeFunction* _tmp178_;
652 		ValaCCodeFunction* _tmp179_;
653 		ValaCCodeParameter* _tmp180_;
654 		ValaCCodeParameter* _tmp181_;
655 		ValaCCodeFunction* _tmp182_;
656 		ValaCCodeParameter* _tmp183_;
657 		ValaCCodeParameter* _tmp184_;
658 		ValaCCodeFunction* _tmp192_;
659 		gchar* _tmp193_;
660 		gchar* _tmp194_;
661 		ValaCCodeFunction* _tmp195_;
662 		ValaCCodeFunction* _tmp196_;
663 		ValaCCodeParameter* _tmp197_;
664 		ValaCCodeParameter* _tmp198_;
665 		ValaCCodeFunction* _tmp206_;
666 		_tmp107_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
667 		_tmp108_ = _tmp107_;
668 		_tmp109_ = vala_ccode_function_new (_tmp108_, "gpointer");
669 		_tmp110_ = _tmp109_;
670 		_g_free0 (_tmp108_);
671 		ref_fun = _tmp110_;
672 		_tmp111_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) cl);
673 		_tmp112_ = _tmp111_;
674 		_tmp113_ = vala_ccode_function_new (_tmp112_, "void");
675 		_tmp114_ = _tmp113_;
676 		_g_free0 (_tmp112_);
677 		unref_fun = _tmp114_;
678 		if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
679 			ValaCCodeFunction* _tmp115_;
680 			ValaCCodeFunction* _tmp116_;
681 			_tmp115_ = ref_fun;
682 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp115_, VALA_CCODE_MODIFIERS_STATIC);
683 			_tmp116_ = unref_fun;
684 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp116_, VALA_CCODE_MODIFIERS_STATIC);
685 		} else {
686 			gboolean _tmp117_ = FALSE;
687 			ValaCodeContext* _tmp118_;
688 			ValaCodeContext* _tmp119_;
689 			gboolean _tmp120_;
690 			gboolean _tmp121_;
691 			_tmp118_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
692 			_tmp119_ = _tmp118_;
693 			_tmp120_ = vala_code_context_get_hide_internal (_tmp119_);
694 			_tmp121_ = _tmp120_;
695 			if (_tmp121_) {
696 				_tmp117_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
697 			} else {
698 				_tmp117_ = FALSE;
699 			}
700 			if (_tmp117_) {
701 				ValaCCodeFunction* _tmp122_;
702 				ValaCCodeFunction* _tmp123_;
703 				_tmp122_ = ref_fun;
704 				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp122_, VALA_CCODE_MODIFIERS_INTERNAL);
705 				_tmp123_ = unref_fun;
706 				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp123_, VALA_CCODE_MODIFIERS_INTERNAL);
707 			}
708 		}
709 		_tmp124_ = ref_fun;
710 		_tmp125_ = vala_ccode_parameter_new ("instance", "gpointer");
711 		_tmp126_ = _tmp125_;
712 		vala_ccode_function_add_parameter (_tmp124_, _tmp126_);
713 		_vala_ccode_node_unref0 (_tmp126_);
714 		_tmp127_ = unref_fun;
715 		_tmp128_ = vala_ccode_parameter_new ("instance", "gpointer");
716 		_tmp129_ = _tmp128_;
717 		vala_ccode_function_add_parameter (_tmp127_, _tmp129_);
718 		_vala_ccode_node_unref0 (_tmp129_);
719 		_tmp130_ = ref_fun;
720 		vala_ccode_file_add_function_declaration (decl_space, _tmp130_);
721 		_tmp131_ = unref_fun;
722 		vala_ccode_file_add_function_declaration (decl_space, _tmp131_);
723 		_tmp132_ = vala_get_ccode_param_spec_function ((ValaCodeNode*) cl);
724 		_tmp133_ = _tmp132_;
725 		_tmp134_ = vala_ccode_function_new (_tmp133_, "GParamSpec*");
726 		_tmp135_ = _tmp134_;
727 		_g_free0 (_tmp133_);
728 		function = _tmp135_;
729 		_tmp136_ = function;
730 		_tmp137_ = vala_ccode_parameter_new ("name", "const gchar*");
731 		_tmp138_ = _tmp137_;
732 		vala_ccode_function_add_parameter (_tmp136_, _tmp138_);
733 		_vala_ccode_node_unref0 (_tmp138_);
734 		_tmp139_ = function;
735 		_tmp140_ = vala_ccode_parameter_new ("nick", "const gchar*");
736 		_tmp141_ = _tmp140_;
737 		vala_ccode_function_add_parameter (_tmp139_, _tmp141_);
738 		_vala_ccode_node_unref0 (_tmp141_);
739 		_tmp142_ = function;
740 		_tmp143_ = vala_ccode_parameter_new ("blurb", "const gchar*");
741 		_tmp144_ = _tmp143_;
742 		vala_ccode_function_add_parameter (_tmp142_, _tmp144_);
743 		_vala_ccode_node_unref0 (_tmp144_);
744 		_tmp145_ = function;
745 		_tmp146_ = vala_ccode_parameter_new ("object_type", "GType");
746 		_tmp147_ = _tmp146_;
747 		vala_ccode_function_add_parameter (_tmp145_, _tmp147_);
748 		_vala_ccode_node_unref0 (_tmp147_);
749 		_tmp148_ = function;
750 		_tmp149_ = vala_ccode_parameter_new ("flags", "GParamFlags");
751 		_tmp150_ = _tmp149_;
752 		vala_ccode_function_add_parameter (_tmp148_, _tmp150_);
753 		_vala_ccode_node_unref0 (_tmp150_);
754 		if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
755 			ValaCCodeFunction* _tmp151_;
756 			_tmp151_ = function;
757 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp151_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
758 		} else {
759 			gboolean _tmp152_ = FALSE;
760 			ValaCodeContext* _tmp153_;
761 			ValaCodeContext* _tmp154_;
762 			gboolean _tmp155_;
763 			gboolean _tmp156_;
764 			_tmp153_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
765 			_tmp154_ = _tmp153_;
766 			_tmp155_ = vala_code_context_get_hide_internal (_tmp154_);
767 			_tmp156_ = _tmp155_;
768 			if (_tmp156_) {
769 				_tmp152_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
770 			} else {
771 				_tmp152_ = FALSE;
772 			}
773 			if (_tmp152_) {
774 				ValaCCodeFunction* _tmp157_;
775 				_tmp157_ = function;
776 				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp157_, VALA_CCODE_MODIFIERS_INTERNAL);
777 			}
778 		}
779 		_tmp158_ = function;
780 		vala_ccode_file_add_function_declaration (decl_space, _tmp158_);
781 		_tmp159_ = vala_get_ccode_set_value_function ((ValaCodeNode*) cl);
782 		_tmp160_ = _tmp159_;
783 		_tmp161_ = vala_ccode_function_new (_tmp160_, "void");
784 		_vala_ccode_node_unref0 (function);
785 		function = _tmp161_;
786 		_g_free0 (_tmp160_);
787 		_tmp162_ = function;
788 		_tmp163_ = vala_ccode_parameter_new ("value", "GValue*");
789 		_tmp164_ = _tmp163_;
790 		vala_ccode_function_add_parameter (_tmp162_, _tmp164_);
791 		_vala_ccode_node_unref0 (_tmp164_);
792 		_tmp165_ = function;
793 		_tmp166_ = vala_ccode_parameter_new ("v_object", "gpointer");
794 		_tmp167_ = _tmp166_;
795 		vala_ccode_function_add_parameter (_tmp165_, _tmp167_);
796 		_vala_ccode_node_unref0 (_tmp167_);
797 		if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
798 			ValaCCodeFunction* _tmp168_;
799 			_tmp168_ = function;
800 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp168_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
801 		} else {
802 			gboolean _tmp169_ = FALSE;
803 			ValaCodeContext* _tmp170_;
804 			ValaCodeContext* _tmp171_;
805 			gboolean _tmp172_;
806 			gboolean _tmp173_;
807 			_tmp170_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
808 			_tmp171_ = _tmp170_;
809 			_tmp172_ = vala_code_context_get_hide_internal (_tmp171_);
810 			_tmp173_ = _tmp172_;
811 			if (_tmp173_) {
812 				_tmp169_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
813 			} else {
814 				_tmp169_ = FALSE;
815 			}
816 			if (_tmp169_) {
817 				ValaCCodeFunction* _tmp174_;
818 				_tmp174_ = function;
819 				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp174_, VALA_CCODE_MODIFIERS_INTERNAL | VALA_CCODE_MODIFIERS_UNUSED);
820 			}
821 		}
822 		_tmp175_ = function;
823 		vala_ccode_file_add_function_declaration (decl_space, _tmp175_);
824 		_tmp176_ = vala_get_ccode_take_value_function ((ValaCodeNode*) cl);
825 		_tmp177_ = _tmp176_;
826 		_tmp178_ = vala_ccode_function_new (_tmp177_, "void");
827 		_vala_ccode_node_unref0 (function);
828 		function = _tmp178_;
829 		_g_free0 (_tmp177_);
830 		_tmp179_ = function;
831 		_tmp180_ = vala_ccode_parameter_new ("value", "GValue*");
832 		_tmp181_ = _tmp180_;
833 		vala_ccode_function_add_parameter (_tmp179_, _tmp181_);
834 		_vala_ccode_node_unref0 (_tmp181_);
835 		_tmp182_ = function;
836 		_tmp183_ = vala_ccode_parameter_new ("v_object", "gpointer");
837 		_tmp184_ = _tmp183_;
838 		vala_ccode_function_add_parameter (_tmp182_, _tmp184_);
839 		_vala_ccode_node_unref0 (_tmp184_);
840 		if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
841 			ValaCCodeFunction* _tmp185_;
842 			_tmp185_ = function;
843 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp185_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
844 		} else {
845 			gboolean _tmp186_ = FALSE;
846 			ValaCodeContext* _tmp187_;
847 			ValaCodeContext* _tmp188_;
848 			gboolean _tmp189_;
849 			gboolean _tmp190_;
850 			_tmp187_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
851 			_tmp188_ = _tmp187_;
852 			_tmp189_ = vala_code_context_get_hide_internal (_tmp188_);
853 			_tmp190_ = _tmp189_;
854 			if (_tmp190_) {
855 				_tmp186_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
856 			} else {
857 				_tmp186_ = FALSE;
858 			}
859 			if (_tmp186_) {
860 				ValaCCodeFunction* _tmp191_;
861 				_tmp191_ = function;
862 				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp191_, VALA_CCODE_MODIFIERS_INTERNAL);
863 			}
864 		}
865 		_tmp192_ = function;
866 		vala_ccode_file_add_function_declaration (decl_space, _tmp192_);
867 		_tmp193_ = vala_get_ccode_get_value_function ((ValaCodeNode*) cl);
868 		_tmp194_ = _tmp193_;
869 		_tmp195_ = vala_ccode_function_new (_tmp194_, "gpointer");
870 		_vala_ccode_node_unref0 (function);
871 		function = _tmp195_;
872 		_g_free0 (_tmp194_);
873 		_tmp196_ = function;
874 		_tmp197_ = vala_ccode_parameter_new ("value", "const GValue*");
875 		_tmp198_ = _tmp197_;
876 		vala_ccode_function_add_parameter (_tmp196_, _tmp198_);
877 		_vala_ccode_node_unref0 (_tmp198_);
878 		if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
879 			ValaCCodeFunction* _tmp199_;
880 			_tmp199_ = function;
881 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp199_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
882 		} else {
883 			gboolean _tmp200_ = FALSE;
884 			ValaCodeContext* _tmp201_;
885 			ValaCodeContext* _tmp202_;
886 			gboolean _tmp203_;
887 			gboolean _tmp204_;
888 			_tmp201_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
889 			_tmp202_ = _tmp201_;
890 			_tmp203_ = vala_code_context_get_hide_internal (_tmp202_);
891 			_tmp204_ = _tmp203_;
892 			if (_tmp204_) {
893 				_tmp200_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
894 			} else {
895 				_tmp200_ = FALSE;
896 			}
897 			if (_tmp200_) {
898 				ValaCCodeFunction* _tmp205_;
899 				_tmp205_ = function;
900 				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp205_, VALA_CCODE_MODIFIERS_INTERNAL | VALA_CCODE_MODIFIERS_UNUSED);
901 			}
902 		}
903 		_tmp206_ = function;
904 		vala_ccode_file_add_function_declaration (decl_space, _tmp206_);
905 		_vala_ccode_node_unref0 (function);
906 		_vala_ccode_node_unref0 (unref_fun);
907 		_vala_ccode_node_unref0 (ref_fun);
908 	} else {
909 		gboolean _tmp207_ = FALSE;
910 		if (!is_gtypeinstance) {
911 			_tmp207_ = !is_gsource;
912 		} else {
913 			_tmp207_ = FALSE;
914 		}
915 		if (_tmp207_) {
916 			ValaClass* _tmp208_;
917 			ValaClass* _tmp209_;
918 			_tmp208_ = vala_class_get_base_class (cl);
919 			_tmp209_ = _tmp208_;
920 			if (_tmp209_ == NULL) {
921 				ValaCCodeFunction* function = NULL;
922 				gchar* _tmp210_;
923 				gchar* _tmp211_;
924 				ValaCCodeFunction* _tmp212_;
925 				ValaCCodeFunction* _tmp213_;
926 				ValaCCodeFunction* _tmp221_;
927 				gchar* _tmp222_;
928 				gchar* _tmp223_;
929 				gchar* _tmp224_;
930 				gchar* _tmp225_;
931 				ValaCCodeParameter* _tmp226_;
932 				ValaCCodeParameter* _tmp227_;
933 				ValaCCodeFunction* _tmp228_;
934 				_tmp210_ = vala_get_ccode_free_function ((ValaTypeSymbol*) cl);
935 				_tmp211_ = _tmp210_;
936 				_tmp212_ = vala_ccode_function_new (_tmp211_, "void");
937 				_tmp213_ = _tmp212_;
938 				_g_free0 (_tmp211_);
939 				function = _tmp213_;
940 				if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
941 					ValaCCodeFunction* _tmp214_;
942 					_tmp214_ = function;
943 					vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp214_, VALA_CCODE_MODIFIERS_STATIC);
944 				} else {
945 					gboolean _tmp215_ = FALSE;
946 					ValaCodeContext* _tmp216_;
947 					ValaCodeContext* _tmp217_;
948 					gboolean _tmp218_;
949 					gboolean _tmp219_;
950 					_tmp216_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
951 					_tmp217_ = _tmp216_;
952 					_tmp218_ = vala_code_context_get_hide_internal (_tmp217_);
953 					_tmp219_ = _tmp218_;
954 					if (_tmp219_) {
955 						_tmp215_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
956 					} else {
957 						_tmp215_ = FALSE;
958 					}
959 					if (_tmp215_) {
960 						ValaCCodeFunction* _tmp220_;
961 						_tmp220_ = function;
962 						vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp220_, VALA_CCODE_MODIFIERS_INTERNAL);
963 					}
964 				}
965 				_tmp221_ = function;
966 				_tmp222_ = vala_get_ccode_name ((ValaCodeNode*) cl);
967 				_tmp223_ = _tmp222_;
968 				_tmp224_ = g_strdup_printf ("%s *", _tmp223_);
969 				_tmp225_ = _tmp224_;
970 				_tmp226_ = vala_ccode_parameter_new ("self", _tmp225_);
971 				_tmp227_ = _tmp226_;
972 				vala_ccode_function_add_parameter (_tmp221_, _tmp227_);
973 				_vala_ccode_node_unref0 (_tmp227_);
974 				_g_free0 (_tmp225_);
975 				_g_free0 (_tmp223_);
976 				_tmp228_ = function;
977 				vala_ccode_file_add_function_declaration (decl_space, _tmp228_);
978 				_vala_ccode_node_unref0 (function);
979 			}
980 		}
981 	}
982 	if (is_gtypeinstance) {
983 		gchar* _tmp229_;
984 		gchar* _tmp230_;
985 		gchar* _tmp231_;
986 		gchar* _tmp232_;
987 		gchar* _tmp233_;
988 		gchar* _tmp234_;
989 		ValaCCodeVariableDeclarator* _tmp235_;
990 		ValaCCodeVariableDeclarator* _tmp236_;
991 		ValaCCodeTypeDefinition* _tmp237_;
992 		ValaCCodeTypeDefinition* _tmp238_;
993 		ValaClassRegisterFunction* type_fun = NULL;
994 		ValaClassRegisterFunction* _tmp239_;
995 		ValaClassRegisterFunction* _tmp240_;
996 		ValaCodeContext* _tmp241_;
997 		ValaCodeContext* _tmp242_;
998 		ValaClassRegisterFunction* _tmp243_;
999 		ValaCCodeFragment* _tmp244_;
1000 		ValaCCodeFragment* _tmp245_;
1001 		_tmp229_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
1002 		_tmp230_ = _tmp229_;
1003 		_tmp231_ = g_strdup_printf ("struct _%s", _tmp230_);
1004 		_tmp232_ = _tmp231_;
1005 		_tmp233_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
1006 		_tmp234_ = _tmp233_;
1007 		_tmp235_ = vala_ccode_variable_declarator_new (_tmp234_, NULL, NULL);
1008 		_tmp236_ = _tmp235_;
1009 		_tmp237_ = vala_ccode_type_definition_new (_tmp232_, (ValaCCodeDeclarator*) _tmp236_);
1010 		_tmp238_ = _tmp237_;
1011 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp238_);
1012 		_vala_ccode_node_unref0 (_tmp238_);
1013 		_vala_ccode_node_unref0 (_tmp236_);
1014 		_g_free0 (_tmp234_);
1015 		_g_free0 (_tmp232_);
1016 		_g_free0 (_tmp230_);
1017 		_tmp239_ = vala_class_register_function_new (cl);
1018 		type_fun = _tmp239_;
1019 		_tmp240_ = type_fun;
1020 		_tmp241_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
1021 		_tmp242_ = _tmp241_;
1022 		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp240_, _tmp242_, ((ValaCCodeBaseModule*) self)->in_plugin, TRUE);
1023 		_tmp243_ = type_fun;
1024 		_tmp244_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) _tmp243_);
1025 		_tmp245_ = _tmp244_;
1026 		vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp245_);
1027 		_vala_ccode_node_unref0 (_tmp245_);
1028 		_vala_typeregister_function_unref0 (type_fun);
1029 	}
1030 	_tmp246_ = _vala_code_node_ref0 (cl);
1031 	base_class = _tmp246_;
1032 	while (TRUE) {
1033 		ValaClass* _tmp247_;
1034 		ValaClass* _tmp248_;
1035 		ValaClass* _tmp249_;
1036 		ValaClass* _tmp250_;
1037 		ValaClass* _tmp251_;
1038 		ValaClass* _tmp252_;
1039 		ValaClass* _tmp253_;
1040 		_tmp247_ = base_class;
1041 		_tmp248_ = vala_class_get_base_class (_tmp247_);
1042 		_tmp249_ = _tmp248_;
1043 		if (!(_tmp249_ != NULL)) {
1044 			break;
1045 		}
1046 		_tmp250_ = base_class;
1047 		_tmp251_ = vala_class_get_base_class (_tmp250_);
1048 		_tmp252_ = _tmp251_;
1049 		_tmp253_ = _vala_code_node_ref0 (_tmp252_);
1050 		_vala_code_node_unref0 (base_class);
1051 		base_class = _tmp253_;
1052 	}
1053 	_tmp256_ = base_class;
1054 	_tmp257_ = vala_class_get_is_compact (_tmp256_);
1055 	_tmp258_ = _tmp257_;
1056 	if (_tmp258_) {
1057 		ValaClass* _tmp259_;
1058 		_tmp259_ = base_class;
1059 		_tmp255_ = vala_is_reference_counting ((ValaTypeSymbol*) _tmp259_);
1060 	} else {
1061 		_tmp255_ = FALSE;
1062 	}
1063 	if (!_tmp255_) {
1064 		gboolean _tmp260_ = FALSE;
1065 		ValaCodeContext* _tmp261_;
1066 		ValaCodeContext* _tmp262_;
1067 		gboolean _tmp263_;
1068 		gboolean _tmp264_;
1069 		_tmp261_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
1070 		_tmp262_ = _tmp261_;
1071 		_tmp263_ = vala_code_context_get_use_header (_tmp262_);
1072 		_tmp264_ = _tmp263_;
1073 		if (!_tmp264_) {
1074 			_tmp260_ = TRUE;
1075 		} else {
1076 			gboolean _tmp265_;
1077 			gboolean _tmp266_;
1078 			_tmp265_ = vala_ccode_file_get_is_header (decl_space);
1079 			_tmp266_ = _tmp265_;
1080 			_tmp260_ = _tmp266_;
1081 		}
1082 		_tmp254_ = _tmp260_;
1083 	} else {
1084 		_tmp254_ = FALSE;
1085 	}
1086 	if (_tmp254_) {
1087 		gchar* autoptr_cleanup_func = NULL;
1088 		ValaClass* _tmp267_;
1089 		gboolean _tmp272_ = FALSE;
1090 		const gchar* _tmp273_;
1091 		gchar* _tmp277_;
1092 		gchar* _tmp278_;
1093 		const gchar* _tmp279_;
1094 		gchar* _tmp280_;
1095 		gchar* _tmp281_;
1096 		ValaCCodeIdentifier* _tmp282_;
1097 		ValaCCodeIdentifier* _tmp283_;
1098 		ValaCCodeNewline* _tmp284_;
1099 		ValaCCodeNewline* _tmp285_;
1100 		_tmp267_ = base_class;
1101 		if (vala_is_reference_counting ((ValaTypeSymbol*) _tmp267_)) {
1102 			ValaClass* _tmp268_;
1103 			gchar* _tmp269_;
1104 			_tmp268_ = base_class;
1105 			_tmp269_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp268_);
1106 			_g_free0 (autoptr_cleanup_func);
1107 			autoptr_cleanup_func = _tmp269_;
1108 		} else {
1109 			ValaClass* _tmp270_;
1110 			gchar* _tmp271_;
1111 			_tmp270_ = base_class;
1112 			_tmp271_ = vala_get_ccode_free_function ((ValaTypeSymbol*) _tmp270_);
1113 			_g_free0 (autoptr_cleanup_func);
1114 			autoptr_cleanup_func = _tmp271_;
1115 		}
1116 		_tmp273_ = autoptr_cleanup_func;
1117 		if (_tmp273_ == NULL) {
1118 			_tmp272_ = TRUE;
1119 		} else {
1120 			const gchar* _tmp274_;
1121 			_tmp274_ = autoptr_cleanup_func;
1122 			_tmp272_ = g_strcmp0 (_tmp274_, "") == 0;
1123 		}
1124 		if (_tmp272_) {
1125 			ValaSourceReference* _tmp275_;
1126 			ValaSourceReference* _tmp276_;
1127 			_tmp275_ = vala_code_node_get_source_reference ((ValaCodeNode*) cl);
1128 			_tmp276_ = _tmp275_;
1129 			vala_report_error (_tmp276_, "internal error: autoptr_cleanup_func not available");
1130 		}
1131 		_tmp277_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1132 		_tmp278_ = _tmp277_;
1133 		_tmp279_ = autoptr_cleanup_func;
1134 		_tmp280_ = g_strdup_printf ("G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, %s)", _tmp278_, _tmp279_);
1135 		_tmp281_ = _tmp280_;
1136 		_tmp282_ = vala_ccode_identifier_new (_tmp281_);
1137 		_tmp283_ = _tmp282_;
1138 		vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp283_);
1139 		_vala_ccode_node_unref0 (_tmp283_);
1140 		_g_free0 (_tmp281_);
1141 		_g_free0 (_tmp278_);
1142 		_tmp284_ = vala_ccode_newline_new ();
1143 		_tmp285_ = _tmp284_;
1144 		vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp285_);
1145 		_vala_ccode_node_unref0 (_tmp285_);
1146 		_g_free0 (autoptr_cleanup_func);
1147 	}
1148 	_vala_code_node_unref0 (base_class);
1149 }
1150 
1151 static gpointer
_vala_iterable_ref0(gpointer self)1152 _vala_iterable_ref0 (gpointer self)
1153 {
1154 	return self ? vala_iterable_ref (self) : NULL;
1155 }
1156 
1157 static void
vala_gtype_module_real_generate_class_struct_declaration(ValaCCodeBaseModule * base,ValaClass * cl,ValaCCodeFile * decl_space)1158 vala_gtype_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* base,
1159                                                           ValaClass* cl,
1160                                                           ValaCCodeFile* decl_space)
1161 {
1162 	ValaGTypeModule * self;
1163 	gchar* _tmp0_;
1164 	gchar* _tmp1_;
1165 	gchar* _tmp2_;
1166 	gchar* _tmp3_;
1167 	gboolean _tmp4_;
1168 	ValaClass* _tmp5_;
1169 	ValaClass* _tmp6_;
1170 	gboolean is_gtypeinstance = FALSE;
1171 	gboolean _tmp23_;
1172 	gboolean _tmp24_;
1173 	gboolean _tmp25_ = FALSE;
1174 	gboolean is_fundamental = FALSE;
1175 	ValaCCodeStruct* instance_struct = NULL;
1176 	gchar* _tmp28_;
1177 	gchar* _tmp29_;
1178 	gchar* _tmp30_;
1179 	gchar* _tmp31_;
1180 	ValaCCodeStruct* _tmp32_;
1181 	ValaCCodeStruct* _tmp33_;
1182 	ValaCCodeStruct* type_struct = NULL;
1183 	gchar* _tmp34_;
1184 	gchar* _tmp35_;
1185 	gchar* _tmp36_;
1186 	gchar* _tmp37_;
1187 	ValaCCodeStruct* _tmp38_;
1188 	ValaCCodeStruct* _tmp39_;
1189 	ValaClass* _tmp40_;
1190 	ValaClass* _tmp41_;
1191 	gboolean has_struct_member = FALSE;
1192 	ValaCodeContext* _tmp82_;
1193 	ValaCodeContext* _tmp83_;
1194 	gboolean _tmp84_;
1195 	gboolean _tmp85_;
1196 	gboolean _tmp182_ = FALSE;
1197 	gboolean _tmp183_ = FALSE;
1198 	gboolean _tmp184_;
1199 	gboolean _tmp185_;
1200 	gboolean _tmp189_ = FALSE;
1201 	gboolean _tmp190_;
1202 	gboolean _tmp191_;
1203 	self = (ValaGTypeModule*) base;
1204 	g_return_if_fail (cl != NULL);
1205 	g_return_if_fail (decl_space != NULL);
1206 	_tmp0_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1207 	_tmp1_ = _tmp0_;
1208 	_tmp2_ = g_strdup_printf ("struct _%s", _tmp1_);
1209 	_tmp3_ = _tmp2_;
1210 	_tmp4_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) cl, _tmp3_);
1211 	_g_free0 (_tmp3_);
1212 	_g_free0 (_tmp1_);
1213 	if (_tmp4_) {
1214 		return;
1215 	}
1216 	_tmp5_ = vala_class_get_base_class (cl);
1217 	_tmp6_ = _tmp5_;
1218 	if (_tmp6_ != NULL) {
1219 		ValaClass* _tmp7_;
1220 		ValaClass* _tmp8_;
1221 		_tmp7_ = vala_class_get_base_class (cl);
1222 		_tmp8_ = _tmp7_;
1223 		vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp8_, decl_space);
1224 	}
1225 	{
1226 		ValaList* _base_type_list = NULL;
1227 		ValaList* _tmp9_;
1228 		ValaList* _tmp10_;
1229 		gint _base_type_size = 0;
1230 		ValaList* _tmp11_;
1231 		gint _tmp12_;
1232 		gint _tmp13_;
1233 		gint _base_type_index = 0;
1234 		_tmp9_ = vala_class_get_base_types (cl);
1235 		_tmp10_ = _vala_iterable_ref0 (_tmp9_);
1236 		_base_type_list = _tmp10_;
1237 		_tmp11_ = _base_type_list;
1238 		_tmp12_ = vala_collection_get_size ((ValaCollection*) _tmp11_);
1239 		_tmp13_ = _tmp12_;
1240 		_base_type_size = _tmp13_;
1241 		_base_type_index = -1;
1242 		while (TRUE) {
1243 			gint _tmp14_;
1244 			gint _tmp15_;
1245 			ValaDataType* base_type = NULL;
1246 			ValaList* _tmp16_;
1247 			gpointer _tmp17_;
1248 			ValaInterface* iface = NULL;
1249 			ValaDataType* _tmp18_;
1250 			ValaTypeSymbol* _tmp19_;
1251 			ValaTypeSymbol* _tmp20_;
1252 			ValaInterface* _tmp21_;
1253 			_base_type_index = _base_type_index + 1;
1254 			_tmp14_ = _base_type_index;
1255 			_tmp15_ = _base_type_size;
1256 			if (!(_tmp14_ < _tmp15_)) {
1257 				break;
1258 			}
1259 			_tmp16_ = _base_type_list;
1260 			_tmp17_ = vala_list_get (_tmp16_, _base_type_index);
1261 			base_type = (ValaDataType*) _tmp17_;
1262 			_tmp18_ = base_type;
1263 			_tmp19_ = vala_data_type_get_type_symbol (_tmp18_);
1264 			_tmp20_ = _tmp19_;
1265 			iface = G_TYPE_CHECK_INSTANCE_TYPE (_tmp20_, VALA_TYPE_INTERFACE) ? ((ValaInterface*) _tmp20_) : NULL;
1266 			_tmp21_ = iface;
1267 			if (_tmp21_ != NULL) {
1268 				ValaInterface* _tmp22_;
1269 				_tmp22_ = iface;
1270 				vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp22_, decl_space);
1271 			}
1272 			_vala_code_node_unref0 (base_type);
1273 		}
1274 		_vala_iterable_unref0 (_base_type_list);
1275 	}
1276 	vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, cl, decl_space);
1277 	_tmp23_ = vala_class_get_is_compact (cl);
1278 	_tmp24_ = _tmp23_;
1279 	is_gtypeinstance = !_tmp24_;
1280 	if (is_gtypeinstance) {
1281 		ValaClass* _tmp26_;
1282 		ValaClass* _tmp27_;
1283 		_tmp26_ = vala_class_get_base_class (cl);
1284 		_tmp27_ = _tmp26_;
1285 		_tmp25_ = _tmp27_ == NULL;
1286 	} else {
1287 		_tmp25_ = FALSE;
1288 	}
1289 	is_fundamental = _tmp25_;
1290 	_tmp28_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1291 	_tmp29_ = _tmp28_;
1292 	_tmp30_ = g_strdup_printf ("_%s", _tmp29_);
1293 	_tmp31_ = _tmp30_;
1294 	_tmp32_ = vala_ccode_struct_new (_tmp31_);
1295 	_tmp33_ = _tmp32_;
1296 	_g_free0 (_tmp31_);
1297 	_g_free0 (_tmp29_);
1298 	instance_struct = _tmp33_;
1299 	_tmp34_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
1300 	_tmp35_ = _tmp34_;
1301 	_tmp36_ = g_strdup_printf ("_%s", _tmp35_);
1302 	_tmp37_ = _tmp36_;
1303 	_tmp38_ = vala_ccode_struct_new (_tmp37_);
1304 	_tmp39_ = _tmp38_;
1305 	_g_free0 (_tmp37_);
1306 	_g_free0 (_tmp35_);
1307 	type_struct = _tmp39_;
1308 	_tmp40_ = vala_class_get_base_class (cl);
1309 	_tmp41_ = _tmp40_;
1310 	if (_tmp41_ != NULL) {
1311 		ValaCCodeStruct* _tmp42_;
1312 		ValaClass* _tmp43_;
1313 		ValaClass* _tmp44_;
1314 		gchar* _tmp45_;
1315 		gchar* _tmp46_;
1316 		_tmp42_ = instance_struct;
1317 		_tmp43_ = vala_class_get_base_class (cl);
1318 		_tmp44_ = _tmp43_;
1319 		_tmp45_ = vala_get_ccode_name ((ValaCodeNode*) _tmp44_);
1320 		_tmp46_ = _tmp45_;
1321 		vala_ccode_struct_add_field (_tmp42_, _tmp46_, "parent_instance", 0, NULL);
1322 		_g_free0 (_tmp46_);
1323 	} else {
1324 		if (is_fundamental) {
1325 			ValaCCodeStruct* _tmp47_;
1326 			ValaCCodeStruct* _tmp48_;
1327 			_tmp47_ = instance_struct;
1328 			vala_ccode_struct_add_field (_tmp47_, "GTypeInstance", "parent_instance", 0, NULL);
1329 			_tmp48_ = instance_struct;
1330 			vala_ccode_struct_add_field (_tmp48_, "volatile int", "ref_count", 0, NULL);
1331 		}
1332 	}
1333 	if (is_gtypeinstance) {
1334 		ValaCCodeStruct* _tmp49_;
1335 		const gchar* _tmp50_;
1336 		const gchar* _tmp51_;
1337 		gchar* _tmp52_;
1338 		gchar* _tmp53_;
1339 		gchar* _tmp54_;
1340 		gchar* _tmp55_;
1341 		gchar* _tmp56_;
1342 		gchar* _tmp57_;
1343 		ValaCCodeVariableDeclarator* _tmp58_;
1344 		ValaCCodeVariableDeclarator* _tmp59_;
1345 		ValaCCodeTypeDefinition* _tmp60_;
1346 		ValaCCodeTypeDefinition* _tmp61_;
1347 		ValaCodeContext* _tmp62_;
1348 		ValaCodeContext* _tmp63_;
1349 		gboolean _tmp64_;
1350 		gboolean _tmp65_;
1351 		_tmp49_ = instance_struct;
1352 		_tmp50_ = vala_ccode_struct_get_name (_tmp49_);
1353 		_tmp51_ = _tmp50_;
1354 		_tmp52_ = g_strdup_printf ("struct %sPrivate", _tmp51_);
1355 		_tmp53_ = _tmp52_;
1356 		_tmp54_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1357 		_tmp55_ = _tmp54_;
1358 		_tmp56_ = g_strdup_printf ("%sPrivate", _tmp55_);
1359 		_tmp57_ = _tmp56_;
1360 		_tmp58_ = vala_ccode_variable_declarator_new (_tmp57_, NULL, NULL);
1361 		_tmp59_ = _tmp58_;
1362 		_tmp60_ = vala_ccode_type_definition_new (_tmp53_, (ValaCCodeDeclarator*) _tmp59_);
1363 		_tmp61_ = _tmp60_;
1364 		vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp61_);
1365 		_vala_ccode_node_unref0 (_tmp61_);
1366 		_vala_ccode_node_unref0 (_tmp59_);
1367 		_g_free0 (_tmp57_);
1368 		_g_free0 (_tmp55_);
1369 		_g_free0 (_tmp53_);
1370 		_tmp62_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
1371 		_tmp63_ = _tmp62_;
1372 		_tmp64_ = vala_code_context_get_abi_stability (_tmp63_);
1373 		_tmp65_ = _tmp64_;
1374 		if (!_tmp65_) {
1375 			ValaCCodeStruct* _tmp66_;
1376 			gchar* _tmp67_;
1377 			gchar* _tmp68_;
1378 			gchar* _tmp69_;
1379 			gchar* _tmp70_;
1380 			_tmp66_ = instance_struct;
1381 			_tmp67_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1382 			_tmp68_ = _tmp67_;
1383 			_tmp69_ = g_strdup_printf ("%sPrivate *", _tmp68_);
1384 			_tmp70_ = _tmp69_;
1385 			vala_ccode_struct_add_field (_tmp66_, _tmp70_, "priv", 0, NULL);
1386 			_g_free0 (_tmp70_);
1387 			_g_free0 (_tmp68_);
1388 		}
1389 		if (is_fundamental) {
1390 			ValaCCodeStruct* _tmp71_;
1391 			_tmp71_ = type_struct;
1392 			vala_ccode_struct_add_field (_tmp71_, "GTypeClass", "parent_class", 0, NULL);
1393 		} else {
1394 			ValaCCodeStruct* _tmp72_;
1395 			ValaClass* _tmp73_;
1396 			ValaClass* _tmp74_;
1397 			gchar* _tmp75_;
1398 			gchar* _tmp76_;
1399 			_tmp72_ = type_struct;
1400 			_tmp73_ = vala_class_get_base_class (cl);
1401 			_tmp74_ = _tmp73_;
1402 			_tmp75_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) _tmp74_);
1403 			_tmp76_ = _tmp75_;
1404 			vala_ccode_struct_add_field (_tmp72_, _tmp76_, "parent_class", 0, NULL);
1405 			_g_free0 (_tmp76_);
1406 		}
1407 		if (is_fundamental) {
1408 			ValaCCodeStruct* _tmp77_;
1409 			gchar* _tmp78_;
1410 			gchar* _tmp79_;
1411 			gchar* _tmp80_;
1412 			gchar* _tmp81_;
1413 			_tmp77_ = type_struct;
1414 			_tmp78_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1415 			_tmp79_ = _tmp78_;
1416 			_tmp80_ = g_strdup_printf ("(*finalize) (%s *self)", _tmp79_);
1417 			_tmp81_ = _tmp80_;
1418 			vala_ccode_struct_add_field (_tmp77_, "void", _tmp81_, 0, NULL);
1419 			_g_free0 (_tmp81_);
1420 			_g_free0 (_tmp79_);
1421 		}
1422 	}
1423 	has_struct_member = FALSE;
1424 	_tmp82_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
1425 	_tmp83_ = _tmp82_;
1426 	_tmp84_ = vala_code_context_get_abi_stability (_tmp83_);
1427 	_tmp85_ = _tmp84_;
1428 	if (_tmp85_) {
1429 		{
1430 			ValaList* _s_list = NULL;
1431 			ValaList* _tmp86_;
1432 			ValaList* _tmp87_;
1433 			gint _s_size = 0;
1434 			ValaList* _tmp88_;
1435 			gint _tmp89_;
1436 			gint _tmp90_;
1437 			gint _s_index = 0;
1438 			_tmp86_ = vala_object_type_symbol_get_members ((ValaObjectTypeSymbol*) cl);
1439 			_tmp87_ = _vala_iterable_ref0 (_tmp86_);
1440 			_s_list = _tmp87_;
1441 			_tmp88_ = _s_list;
1442 			_tmp89_ = vala_collection_get_size ((ValaCollection*) _tmp88_);
1443 			_tmp90_ = _tmp89_;
1444 			_s_size = _tmp90_;
1445 			_s_index = -1;
1446 			while (TRUE) {
1447 				gint _tmp91_;
1448 				gint _tmp92_;
1449 				ValaSymbol* s = NULL;
1450 				ValaList* _tmp93_;
1451 				gpointer _tmp94_;
1452 				ValaSymbol* _tmp95_;
1453 				_s_index = _s_index + 1;
1454 				_tmp91_ = _s_index;
1455 				_tmp92_ = _s_size;
1456 				if (!(_tmp91_ < _tmp92_)) {
1457 					break;
1458 				}
1459 				_tmp93_ = _s_list;
1460 				_tmp94_ = vala_list_get (_tmp93_, _s_index);
1461 				s = (ValaSymbol*) _tmp94_;
1462 				_tmp95_ = s;
1463 				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp95_, VALA_TYPE_METHOD)) {
1464 					ValaMethod* m = NULL;
1465 					ValaSymbol* _tmp96_;
1466 					ValaMethod* _tmp97_;
1467 					ValaMethod* _tmp98_;
1468 					ValaCCodeStruct* _tmp99_;
1469 					ValaCCodeStruct* _tmp100_;
1470 					_tmp96_ = s;
1471 					_tmp97_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp96_, VALA_TYPE_METHOD, ValaMethod));
1472 					m = _tmp97_;
1473 					_tmp98_ = m;
1474 					_tmp99_ = instance_struct;
1475 					_tmp100_ = type_struct;
1476 					vala_gtype_module_generate_struct_method_declaration (self, (ValaObjectTypeSymbol*) cl, _tmp98_, _tmp99_, _tmp100_, decl_space, &has_struct_member);
1477 					_vala_code_node_unref0 (m);
1478 				} else {
1479 					ValaSymbol* _tmp101_;
1480 					_tmp101_ = s;
1481 					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp101_, VALA_TYPE_SIGNAL)) {
1482 						ValaSignal* sig = NULL;
1483 						ValaSymbol* _tmp102_;
1484 						ValaSignal* _tmp103_;
1485 						ValaSignal* _tmp104_;
1486 						ValaMethod* _tmp105_;
1487 						ValaMethod* _tmp106_;
1488 						_tmp102_ = s;
1489 						_tmp103_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp102_, VALA_TYPE_SIGNAL, ValaSignal));
1490 						sig = _tmp103_;
1491 						_tmp104_ = sig;
1492 						_tmp105_ = vala_signal_get_default_handler (_tmp104_);
1493 						_tmp106_ = _tmp105_;
1494 						if (_tmp106_ != NULL) {
1495 							ValaSignal* _tmp107_;
1496 							ValaMethod* _tmp108_;
1497 							ValaMethod* _tmp109_;
1498 							ValaCCodeStruct* _tmp110_;
1499 							_tmp107_ = sig;
1500 							_tmp108_ = vala_signal_get_default_handler (_tmp107_);
1501 							_tmp109_ = _tmp108_;
1502 							_tmp110_ = type_struct;
1503 							vala_gtype_module_generate_virtual_method_declaration (self, _tmp109_, decl_space, _tmp110_);
1504 						}
1505 						_vala_code_node_unref0 (sig);
1506 					} else {
1507 						ValaSymbol* _tmp111_;
1508 						_tmp111_ = s;
1509 						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp111_, VALA_TYPE_PROPERTY)) {
1510 							ValaProperty* prop = NULL;
1511 							ValaSymbol* _tmp112_;
1512 							ValaProperty* _tmp113_;
1513 							ValaProperty* _tmp114_;
1514 							ValaCCodeStruct* _tmp115_;
1515 							ValaCCodeStruct* _tmp116_;
1516 							_tmp112_ = s;
1517 							_tmp113_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp112_, VALA_TYPE_PROPERTY, ValaProperty));
1518 							prop = _tmp113_;
1519 							_tmp114_ = prop;
1520 							_tmp115_ = instance_struct;
1521 							_tmp116_ = type_struct;
1522 							vala_gtype_module_generate_struct_property_declaration (self, (ValaObjectTypeSymbol*) cl, _tmp114_, _tmp115_, _tmp116_, decl_space, &has_struct_member);
1523 							_vala_code_node_unref0 (prop);
1524 						} else {
1525 							ValaSymbol* _tmp117_;
1526 							_tmp117_ = s;
1527 							if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp117_, VALA_TYPE_FIELD)) {
1528 								ValaSymbol* _tmp118_;
1529 								ValaSymbolAccessibility _tmp119_;
1530 								ValaSymbolAccessibility _tmp120_;
1531 								_tmp118_ = s;
1532 								_tmp119_ = vala_symbol_get_access (_tmp118_);
1533 								_tmp120_ = _tmp119_;
1534 								if (_tmp120_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
1535 									ValaSymbol* _tmp121_;
1536 									ValaCCodeStruct* _tmp122_;
1537 									ValaCCodeStruct* _tmp123_;
1538 									_tmp121_ = s;
1539 									_tmp122_ = instance_struct;
1540 									_tmp123_ = type_struct;
1541 									vala_gtype_module_generate_struct_field_declaration (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp121_, VALA_TYPE_FIELD, ValaField), _tmp122_, _tmp123_, decl_space, &has_struct_member);
1542 								}
1543 							} else {
1544 								ValaSymbol* _tmp124_;
1545 								ValaSourceReference* _tmp125_;
1546 								ValaSourceReference* _tmp126_;
1547 								_tmp124_ = s;
1548 								_tmp125_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp124_);
1549 								_tmp126_ = _tmp125_;
1550 								vala_report_error (_tmp126_, "internal: Unsupported symbol");
1551 							}
1552 						}
1553 					}
1554 				}
1555 				_vala_code_node_unref0 (s);
1556 			}
1557 			_vala_iterable_unref0 (_s_list);
1558 		}
1559 	} else {
1560 		{
1561 			ValaList* _m_list = NULL;
1562 			ValaList* _tmp127_;
1563 			ValaList* _tmp128_;
1564 			gint _m_size = 0;
1565 			ValaList* _tmp129_;
1566 			gint _tmp130_;
1567 			gint _tmp131_;
1568 			gint _m_index = 0;
1569 			_tmp127_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) cl);
1570 			_tmp128_ = _vala_iterable_ref0 (_tmp127_);
1571 			_m_list = _tmp128_;
1572 			_tmp129_ = _m_list;
1573 			_tmp130_ = vala_collection_get_size ((ValaCollection*) _tmp129_);
1574 			_tmp131_ = _tmp130_;
1575 			_m_size = _tmp131_;
1576 			_m_index = -1;
1577 			while (TRUE) {
1578 				gint _tmp132_;
1579 				gint _tmp133_;
1580 				ValaMethod* m = NULL;
1581 				ValaList* _tmp134_;
1582 				gpointer _tmp135_;
1583 				ValaMethod* _tmp136_;
1584 				ValaCCodeStruct* _tmp137_;
1585 				ValaCCodeStruct* _tmp138_;
1586 				_m_index = _m_index + 1;
1587 				_tmp132_ = _m_index;
1588 				_tmp133_ = _m_size;
1589 				if (!(_tmp132_ < _tmp133_)) {
1590 					break;
1591 				}
1592 				_tmp134_ = _m_list;
1593 				_tmp135_ = vala_list_get (_tmp134_, _m_index);
1594 				m = (ValaMethod*) _tmp135_;
1595 				_tmp136_ = m;
1596 				_tmp137_ = instance_struct;
1597 				_tmp138_ = type_struct;
1598 				vala_gtype_module_generate_struct_method_declaration (self, (ValaObjectTypeSymbol*) cl, _tmp136_, _tmp137_, _tmp138_, decl_space, &has_struct_member);
1599 				_vala_code_node_unref0 (m);
1600 			}
1601 			_vala_iterable_unref0 (_m_list);
1602 		}
1603 		{
1604 			ValaList* _sig_list = NULL;
1605 			ValaList* _tmp139_;
1606 			ValaList* _tmp140_;
1607 			gint _sig_size = 0;
1608 			ValaList* _tmp141_;
1609 			gint _tmp142_;
1610 			gint _tmp143_;
1611 			gint _sig_index = 0;
1612 			_tmp139_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) cl);
1613 			_tmp140_ = _vala_iterable_ref0 (_tmp139_);
1614 			_sig_list = _tmp140_;
1615 			_tmp141_ = _sig_list;
1616 			_tmp142_ = vala_collection_get_size ((ValaCollection*) _tmp141_);
1617 			_tmp143_ = _tmp142_;
1618 			_sig_size = _tmp143_;
1619 			_sig_index = -1;
1620 			while (TRUE) {
1621 				gint _tmp144_;
1622 				gint _tmp145_;
1623 				ValaSignal* sig = NULL;
1624 				ValaList* _tmp146_;
1625 				gpointer _tmp147_;
1626 				ValaSignal* _tmp148_;
1627 				ValaMethod* _tmp149_;
1628 				ValaMethod* _tmp150_;
1629 				_sig_index = _sig_index + 1;
1630 				_tmp144_ = _sig_index;
1631 				_tmp145_ = _sig_size;
1632 				if (!(_tmp144_ < _tmp145_)) {
1633 					break;
1634 				}
1635 				_tmp146_ = _sig_list;
1636 				_tmp147_ = vala_list_get (_tmp146_, _sig_index);
1637 				sig = (ValaSignal*) _tmp147_;
1638 				_tmp148_ = sig;
1639 				_tmp149_ = vala_signal_get_default_handler (_tmp148_);
1640 				_tmp150_ = _tmp149_;
1641 				if (_tmp150_ != NULL) {
1642 					ValaSignal* _tmp151_;
1643 					ValaMethod* _tmp152_;
1644 					ValaMethod* _tmp153_;
1645 					ValaCCodeStruct* _tmp154_;
1646 					_tmp151_ = sig;
1647 					_tmp152_ = vala_signal_get_default_handler (_tmp151_);
1648 					_tmp153_ = _tmp152_;
1649 					_tmp154_ = type_struct;
1650 					vala_gtype_module_generate_virtual_method_declaration (self, _tmp153_, decl_space, _tmp154_);
1651 				}
1652 				_vala_code_node_unref0 (sig);
1653 			}
1654 			_vala_iterable_unref0 (_sig_list);
1655 		}
1656 		{
1657 			ValaList* _prop_list = NULL;
1658 			ValaList* _tmp155_;
1659 			ValaList* _tmp156_;
1660 			gint _prop_size = 0;
1661 			ValaList* _tmp157_;
1662 			gint _tmp158_;
1663 			gint _tmp159_;
1664 			gint _prop_index = 0;
1665 			_tmp155_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
1666 			_tmp156_ = _vala_iterable_ref0 (_tmp155_);
1667 			_prop_list = _tmp156_;
1668 			_tmp157_ = _prop_list;
1669 			_tmp158_ = vala_collection_get_size ((ValaCollection*) _tmp157_);
1670 			_tmp159_ = _tmp158_;
1671 			_prop_size = _tmp159_;
1672 			_prop_index = -1;
1673 			while (TRUE) {
1674 				gint _tmp160_;
1675 				gint _tmp161_;
1676 				ValaProperty* prop = NULL;
1677 				ValaList* _tmp162_;
1678 				gpointer _tmp163_;
1679 				ValaProperty* _tmp164_;
1680 				ValaCCodeStruct* _tmp165_;
1681 				ValaCCodeStruct* _tmp166_;
1682 				_prop_index = _prop_index + 1;
1683 				_tmp160_ = _prop_index;
1684 				_tmp161_ = _prop_size;
1685 				if (!(_tmp160_ < _tmp161_)) {
1686 					break;
1687 				}
1688 				_tmp162_ = _prop_list;
1689 				_tmp163_ = vala_list_get (_tmp162_, _prop_index);
1690 				prop = (ValaProperty*) _tmp163_;
1691 				_tmp164_ = prop;
1692 				_tmp165_ = instance_struct;
1693 				_tmp166_ = type_struct;
1694 				vala_gtype_module_generate_struct_property_declaration (self, (ValaObjectTypeSymbol*) cl, _tmp164_, _tmp165_, _tmp166_, decl_space, &has_struct_member);
1695 				_vala_code_node_unref0 (prop);
1696 			}
1697 			_vala_iterable_unref0 (_prop_list);
1698 		}
1699 		{
1700 			ValaList* _f_list = NULL;
1701 			ValaList* _tmp167_;
1702 			ValaList* _tmp168_;
1703 			gint _f_size = 0;
1704 			ValaList* _tmp169_;
1705 			gint _tmp170_;
1706 			gint _tmp171_;
1707 			gint _f_index = 0;
1708 			_tmp167_ = vala_object_type_symbol_get_fields ((ValaObjectTypeSymbol*) cl);
1709 			_tmp168_ = _vala_iterable_ref0 (_tmp167_);
1710 			_f_list = _tmp168_;
1711 			_tmp169_ = _f_list;
1712 			_tmp170_ = vala_collection_get_size ((ValaCollection*) _tmp169_);
1713 			_tmp171_ = _tmp170_;
1714 			_f_size = _tmp171_;
1715 			_f_index = -1;
1716 			while (TRUE) {
1717 				gint _tmp172_;
1718 				gint _tmp173_;
1719 				ValaField* f = NULL;
1720 				ValaList* _tmp174_;
1721 				gpointer _tmp175_;
1722 				ValaField* _tmp176_;
1723 				ValaSymbolAccessibility _tmp177_;
1724 				ValaSymbolAccessibility _tmp178_;
1725 				_f_index = _f_index + 1;
1726 				_tmp172_ = _f_index;
1727 				_tmp173_ = _f_size;
1728 				if (!(_tmp172_ < _tmp173_)) {
1729 					break;
1730 				}
1731 				_tmp174_ = _f_list;
1732 				_tmp175_ = vala_list_get (_tmp174_, _f_index);
1733 				f = (ValaField*) _tmp175_;
1734 				_tmp176_ = f;
1735 				_tmp177_ = vala_symbol_get_access ((ValaSymbol*) _tmp176_);
1736 				_tmp178_ = _tmp177_;
1737 				if (_tmp178_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
1738 					ValaField* _tmp179_;
1739 					ValaCCodeStruct* _tmp180_;
1740 					ValaCCodeStruct* _tmp181_;
1741 					_tmp179_ = f;
1742 					_tmp180_ = instance_struct;
1743 					_tmp181_ = type_struct;
1744 					vala_gtype_module_generate_struct_field_declaration (self, _tmp179_, _tmp180_, _tmp181_, decl_space, &has_struct_member);
1745 				}
1746 				_vala_code_node_unref0 (f);
1747 			}
1748 			_vala_iterable_unref0 (_f_list);
1749 		}
1750 	}
1751 	_tmp184_ = vala_class_get_is_compact (cl);
1752 	_tmp185_ = _tmp184_;
1753 	if (_tmp185_) {
1754 		ValaClass* _tmp186_;
1755 		ValaClass* _tmp187_;
1756 		_tmp186_ = vala_class_get_base_class (cl);
1757 		_tmp187_ = _tmp186_;
1758 		_tmp183_ = _tmp187_ == NULL;
1759 	} else {
1760 		_tmp183_ = FALSE;
1761 	}
1762 	if (_tmp183_) {
1763 		_tmp182_ = !has_struct_member;
1764 	} else {
1765 		_tmp182_ = FALSE;
1766 	}
1767 	if (_tmp182_) {
1768 		ValaCCodeStruct* _tmp188_;
1769 		_tmp188_ = instance_struct;
1770 		vala_ccode_struct_add_field (_tmp188_, "int", "dummy", 0, NULL);
1771 	}
1772 	_tmp190_ = vala_class_get_is_compact (cl);
1773 	_tmp191_ = _tmp190_;
1774 	if (!_tmp191_) {
1775 		_tmp189_ = TRUE;
1776 	} else {
1777 		ValaClass* _tmp192_;
1778 		ValaClass* _tmp193_;
1779 		_tmp192_ = vala_class_get_base_class (cl);
1780 		_tmp193_ = _tmp192_;
1781 		_tmp189_ = _tmp193_ == NULL;
1782 	}
1783 	if (_tmp189_) {
1784 		ValaCCodeStruct* _tmp194_;
1785 		_tmp194_ = instance_struct;
1786 		vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) _tmp194_);
1787 	}
1788 	if (is_gtypeinstance) {
1789 		ValaCodeContext* _tmp195_;
1790 		ValaCodeContext* _tmp196_;
1791 		gboolean _tmp197_;
1792 		gboolean _tmp198_;
1793 		ValaCCodeStruct* _tmp204_;
1794 		_tmp195_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
1795 		_tmp196_ = _tmp195_;
1796 		_tmp197_ = vala_code_context_get_abi_stability (_tmp196_);
1797 		_tmp198_ = _tmp197_;
1798 		if (_tmp198_) {
1799 			ValaCCodeStruct* _tmp199_;
1800 			gchar* _tmp200_;
1801 			gchar* _tmp201_;
1802 			gchar* _tmp202_;
1803 			gchar* _tmp203_;
1804 			_tmp199_ = instance_struct;
1805 			_tmp200_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1806 			_tmp201_ = _tmp200_;
1807 			_tmp202_ = g_strdup_printf ("%sPrivate *", _tmp201_);
1808 			_tmp203_ = _tmp202_;
1809 			vala_ccode_struct_add_field (_tmp199_, _tmp203_, "priv", 0, NULL);
1810 			_g_free0 (_tmp203_);
1811 			_g_free0 (_tmp201_);
1812 		}
1813 		_tmp204_ = type_struct;
1814 		vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) _tmp204_);
1815 	}
1816 	_vala_ccode_node_unref0 (type_struct);
1817 	_vala_ccode_node_unref0 (instance_struct);
1818 }
1819 
1820 static void
vala_gtype_module_generate_struct_method_declaration(ValaGTypeModule * self,ValaObjectTypeSymbol * type_sym,ValaMethod * m,ValaCCodeStruct * instance_struct,ValaCCodeStruct * type_struct,ValaCCodeFile * decl_space,gboolean * has_struct_member)1821 vala_gtype_module_generate_struct_method_declaration (ValaGTypeModule* self,
1822                                                       ValaObjectTypeSymbol* type_sym,
1823                                                       ValaMethod* m,
1824                                                       ValaCCodeStruct* instance_struct,
1825                                                       ValaCCodeStruct* type_struct,
1826                                                       ValaCCodeFile* decl_space,
1827                                                       gboolean* has_struct_member)
1828 {
1829 	ValaClass* cl = NULL;
1830 	gboolean _tmp0_ = FALSE;
1831 	g_return_if_fail (self != NULL);
1832 	g_return_if_fail (type_sym != NULL);
1833 	g_return_if_fail (m != NULL);
1834 	g_return_if_fail (instance_struct != NULL);
1835 	g_return_if_fail (type_struct != NULL);
1836 	g_return_if_fail (decl_space != NULL);
1837 	cl = G_TYPE_CHECK_INSTANCE_TYPE (type_sym, VALA_TYPE_CLASS) ? ((ValaClass*) type_sym) : NULL;
1838 	if (G_TYPE_CHECK_INSTANCE_TYPE (type_sym, VALA_TYPE_INTERFACE)) {
1839 		_tmp0_ = TRUE;
1840 	} else {
1841 		gboolean _tmp1_ = FALSE;
1842 		ValaClass* _tmp2_;
1843 		_tmp2_ = cl;
1844 		if (_tmp2_ != NULL) {
1845 			ValaClass* _tmp3_;
1846 			gboolean _tmp4_;
1847 			gboolean _tmp5_;
1848 			_tmp3_ = cl;
1849 			_tmp4_ = vala_class_get_is_compact (_tmp3_);
1850 			_tmp5_ = _tmp4_;
1851 			_tmp1_ = !_tmp5_;
1852 		} else {
1853 			_tmp1_ = FALSE;
1854 		}
1855 		_tmp0_ = _tmp1_;
1856 	}
1857 	if (_tmp0_) {
1858 		vala_gtype_module_generate_virtual_method_declaration (self, m, decl_space, type_struct);
1859 	} else {
1860 		gboolean _tmp6_ = FALSE;
1861 		gboolean _tmp7_ = FALSE;
1862 		ValaClass* _tmp8_;
1863 		_tmp8_ = cl;
1864 		if (_tmp8_ != NULL) {
1865 			ValaClass* _tmp9_;
1866 			gboolean _tmp10_;
1867 			gboolean _tmp11_;
1868 			_tmp9_ = cl;
1869 			_tmp10_ = vala_class_get_is_compact (_tmp9_);
1870 			_tmp11_ = _tmp10_;
1871 			_tmp7_ = _tmp11_;
1872 		} else {
1873 			_tmp7_ = FALSE;
1874 		}
1875 		if (_tmp7_) {
1876 			ValaClass* _tmp12_;
1877 			ValaClass* _tmp13_;
1878 			ValaClass* _tmp14_;
1879 			_tmp12_ = cl;
1880 			_tmp13_ = vala_class_get_base_class (_tmp12_);
1881 			_tmp14_ = _tmp13_;
1882 			_tmp6_ = _tmp14_ == NULL;
1883 		} else {
1884 			_tmp6_ = FALSE;
1885 		}
1886 		if (_tmp6_) {
1887 			gboolean _tmp15_ = FALSE;
1888 			gboolean _tmp16_;
1889 			gboolean _tmp17_;
1890 			vala_gtype_module_generate_virtual_method_declaration (self, m, decl_space, instance_struct);
1891 			_tmp16_ = vala_method_get_is_abstract (m);
1892 			_tmp17_ = _tmp16_;
1893 			if (_tmp17_) {
1894 				_tmp15_ = TRUE;
1895 			} else {
1896 				gboolean _tmp18_;
1897 				gboolean _tmp19_;
1898 				_tmp18_ = vala_method_get_is_virtual (m);
1899 				_tmp19_ = _tmp18_;
1900 				_tmp15_ = _tmp19_;
1901 			}
1902 			*has_struct_member = (*has_struct_member) | _tmp15_;
1903 		}
1904 	}
1905 }
1906 
1907 static void
vala_gtype_module_generate_struct_property_declaration(ValaGTypeModule * self,ValaObjectTypeSymbol * type_sym,ValaProperty * prop,ValaCCodeStruct * instance_struct,ValaCCodeStruct * type_struct,ValaCCodeFile * decl_space,gboolean * has_struct_member)1908 vala_gtype_module_generate_struct_property_declaration (ValaGTypeModule* self,
1909                                                         ValaObjectTypeSymbol* type_sym,
1910                                                         ValaProperty* prop,
1911                                                         ValaCCodeStruct* instance_struct,
1912                                                         ValaCCodeStruct* type_struct,
1913                                                         ValaCCodeFile* decl_space,
1914                                                         gboolean* has_struct_member)
1915 {
1916 	gboolean _tmp0_ = FALSE;
1917 	gboolean _tmp1_;
1918 	gboolean _tmp2_;
1919 	ValaDataType* _tmp5_;
1920 	ValaDataType* _tmp6_;
1921 	ValaObjectTypeSymbol* t = NULL;
1922 	ValaSymbol* _tmp7_;
1923 	ValaSymbol* _tmp8_;
1924 	ValaClass* cl = NULL;
1925 	ValaObjectType* this_type = NULL;
1926 	ValaObjectTypeSymbol* _tmp9_;
1927 	ValaObjectType* _tmp10_;
1928 	ValaCCodeParameter* cselfparam = NULL;
1929 	ValaObjectType* _tmp11_;
1930 	gchar* _tmp12_;
1931 	gchar* _tmp13_;
1932 	ValaCCodeParameter* _tmp14_;
1933 	ValaCCodeParameter* _tmp15_;
1934 	ValaPropertyAccessor* _tmp16_;
1935 	ValaPropertyAccessor* _tmp17_;
1936 	ValaPropertyAccessor* _tmp99_;
1937 	ValaPropertyAccessor* _tmp100_;
1938 	g_return_if_fail (self != NULL);
1939 	g_return_if_fail (type_sym != NULL);
1940 	g_return_if_fail (prop != NULL);
1941 	g_return_if_fail (instance_struct != NULL);
1942 	g_return_if_fail (type_struct != NULL);
1943 	g_return_if_fail (decl_space != NULL);
1944 	_tmp1_ = vala_property_get_is_abstract (prop);
1945 	_tmp2_ = _tmp1_;
1946 	if (!_tmp2_) {
1947 		gboolean _tmp3_;
1948 		gboolean _tmp4_;
1949 		_tmp3_ = vala_property_get_is_virtual (prop);
1950 		_tmp4_ = _tmp3_;
1951 		_tmp0_ = !_tmp4_;
1952 	} else {
1953 		_tmp0_ = FALSE;
1954 	}
1955 	if (_tmp0_) {
1956 		return;
1957 	}
1958 	_tmp5_ = vala_property_get_property_type (prop);
1959 	_tmp6_ = _tmp5_;
1960 	vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp6_, decl_space);
1961 	_tmp7_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
1962 	_tmp8_ = _tmp7_;
1963 	t = G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol);
1964 	cl = G_TYPE_CHECK_INSTANCE_TYPE (type_sym, VALA_TYPE_CLASS) ? ((ValaClass*) type_sym) : NULL;
1965 	_tmp9_ = t;
1966 	_tmp10_ = vala_object_type_new (_tmp9_);
1967 	this_type = _tmp10_;
1968 	_tmp11_ = this_type;
1969 	_tmp12_ = vala_get_ccode_name ((ValaCodeNode*) _tmp11_);
1970 	_tmp13_ = _tmp12_;
1971 	_tmp14_ = vala_ccode_parameter_new ("self", _tmp13_);
1972 	_tmp15_ = _tmp14_;
1973 	_g_free0 (_tmp13_);
1974 	cselfparam = _tmp15_;
1975 	_tmp16_ = vala_property_get_get_accessor (prop);
1976 	_tmp17_ = _tmp16_;
1977 	if (_tmp17_ != NULL) {
1978 		ValaCCodeFunctionDeclarator* vdeclarator = NULL;
1979 		const gchar* _tmp18_;
1980 		const gchar* _tmp19_;
1981 		gchar* _tmp20_;
1982 		gchar* _tmp21_;
1983 		ValaCCodeFunctionDeclarator* _tmp22_;
1984 		ValaCCodeFunctionDeclarator* _tmp23_;
1985 		ValaCCodeFunctionDeclarator* _tmp24_;
1986 		ValaCCodeParameter* _tmp25_;
1987 		ValaDataType* creturn_type = NULL;
1988 		ValaPropertyAccessor* _tmp26_;
1989 		ValaPropertyAccessor* _tmp27_;
1990 		ValaMethod* _tmp28_;
1991 		ValaMethod* _tmp29_;
1992 		ValaDataType* _tmp30_;
1993 		ValaDataType* _tmp31_;
1994 		ValaDataType* _tmp32_;
1995 		ValaDataType* _tmp33_;
1996 		ValaArrayType* array_type = NULL;
1997 		ValaDataType* _tmp46_;
1998 		ValaDataType* _tmp47_;
1999 		ValaArrayType* _tmp48_;
2000 		gboolean _tmp49_ = FALSE;
2001 		ValaArrayType* _tmp50_;
2002 		ValaCCodeDeclaration* vdecl = NULL;
2003 		ValaDataType* _tmp81_;
2004 		gchar* _tmp82_;
2005 		gchar* _tmp83_;
2006 		ValaCCodeDeclaration* _tmp84_;
2007 		ValaCCodeDeclaration* _tmp85_;
2008 		ValaCCodeDeclaration* _tmp86_;
2009 		ValaCCodeFunctionDeclarator* _tmp87_;
2010 		ValaCCodeDeclaration* _tmp88_;
2011 		gboolean _tmp89_ = FALSE;
2012 		gboolean _tmp90_ = FALSE;
2013 		ValaClass* _tmp91_;
2014 		_tmp18_ = vala_symbol_get_name ((ValaSymbol*) prop);
2015 		_tmp19_ = _tmp18_;
2016 		_tmp20_ = g_strdup_printf ("get_%s", _tmp19_);
2017 		_tmp21_ = _tmp20_;
2018 		_tmp22_ = vala_ccode_function_declarator_new (_tmp21_);
2019 		_tmp23_ = _tmp22_;
2020 		_g_free0 (_tmp21_);
2021 		vdeclarator = _tmp23_;
2022 		_tmp24_ = vdeclarator;
2023 		_tmp25_ = cselfparam;
2024 		vala_ccode_function_declarator_add_parameter (_tmp24_, _tmp25_);
2025 		_tmp26_ = vala_property_get_get_accessor (prop);
2026 		_tmp27_ = _tmp26_;
2027 		_tmp28_ = vala_property_accessor_get_method (_tmp27_);
2028 		_tmp29_ = _tmp28_;
2029 		_tmp30_ = vala_ccode_base_module_get_callable_creturn_type ((ValaCallable*) _tmp29_);
2030 		_tmp31_ = _tmp30_;
2031 		_vala_code_node_unref0 (_tmp29_);
2032 		creturn_type = _tmp31_;
2033 		_tmp32_ = vala_property_get_property_type (prop);
2034 		_tmp33_ = _tmp32_;
2035 		if (vala_data_type_is_real_non_null_struct_type (_tmp33_)) {
2036 			ValaCCodeParameter* cvalueparam = NULL;
2037 			ValaPropertyAccessor* _tmp34_;
2038 			ValaPropertyAccessor* _tmp35_;
2039 			ValaDataType* _tmp36_;
2040 			ValaDataType* _tmp37_;
2041 			gchar* _tmp38_;
2042 			gchar* _tmp39_;
2043 			gchar* _tmp40_;
2044 			gchar* _tmp41_;
2045 			ValaCCodeParameter* _tmp42_;
2046 			ValaCCodeParameter* _tmp43_;
2047 			ValaCCodeFunctionDeclarator* _tmp44_;
2048 			ValaCCodeParameter* _tmp45_;
2049 			_tmp34_ = vala_property_get_get_accessor (prop);
2050 			_tmp35_ = _tmp34_;
2051 			_tmp36_ = vala_property_accessor_get_value_type (_tmp35_);
2052 			_tmp37_ = _tmp36_;
2053 			_tmp38_ = vala_get_ccode_name ((ValaCodeNode*) _tmp37_);
2054 			_tmp39_ = _tmp38_;
2055 			_tmp40_ = g_strdup_printf ("%s *", _tmp39_);
2056 			_tmp41_ = _tmp40_;
2057 			_tmp42_ = vala_ccode_parameter_new ("result", _tmp41_);
2058 			_tmp43_ = _tmp42_;
2059 			_g_free0 (_tmp41_);
2060 			_g_free0 (_tmp39_);
2061 			cvalueparam = _tmp43_;
2062 			_tmp44_ = vdeclarator;
2063 			_tmp45_ = cvalueparam;
2064 			vala_ccode_function_declarator_add_parameter (_tmp44_, _tmp45_);
2065 			_vala_ccode_node_unref0 (cvalueparam);
2066 		}
2067 		_tmp46_ = vala_property_get_property_type (prop);
2068 		_tmp47_ = _tmp46_;
2069 		_tmp48_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp47_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp47_) : NULL);
2070 		array_type = _tmp48_;
2071 		_tmp50_ = array_type;
2072 		if (_tmp50_ != NULL) {
2073 			_tmp49_ = vala_get_ccode_array_length ((ValaCodeNode*) prop);
2074 		} else {
2075 			_tmp49_ = FALSE;
2076 		}
2077 		if (_tmp49_) {
2078 			gchar* length_ctype = NULL;
2079 			gchar* _tmp51_;
2080 			gchar* _tmp52_;
2081 			gchar* _tmp53_;
2082 			gchar* _tmp54_;
2083 			_tmp51_ = vala_get_ccode_array_length_type ((ValaCodeNode*) prop);
2084 			_tmp52_ = _tmp51_;
2085 			_tmp53_ = g_strconcat (_tmp52_, "*", NULL);
2086 			_tmp54_ = _tmp53_;
2087 			_g_free0 (_tmp52_);
2088 			length_ctype = _tmp54_;
2089 			{
2090 				gint dim = 0;
2091 				dim = 1;
2092 				{
2093 					gboolean _tmp55_ = FALSE;
2094 					_tmp55_ = TRUE;
2095 					while (TRUE) {
2096 						ValaArrayType* _tmp57_;
2097 						gint _tmp58_;
2098 						gint _tmp59_;
2099 						ValaCCodeFunctionDeclarator* _tmp60_;
2100 						gchar* _tmp61_;
2101 						gchar* _tmp62_;
2102 						const gchar* _tmp63_;
2103 						ValaCCodeParameter* _tmp64_;
2104 						ValaCCodeParameter* _tmp65_;
2105 						if (!_tmp55_) {
2106 							gint _tmp56_;
2107 							_tmp56_ = dim;
2108 							dim = _tmp56_ + 1;
2109 						}
2110 						_tmp55_ = FALSE;
2111 						_tmp57_ = array_type;
2112 						_tmp58_ = vala_array_type_get_rank (_tmp57_);
2113 						_tmp59_ = _tmp58_;
2114 						if (!(dim <= _tmp59_)) {
2115 							break;
2116 						}
2117 						_tmp60_ = vdeclarator;
2118 						_tmp61_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
2119 						_tmp62_ = _tmp61_;
2120 						_tmp63_ = length_ctype;
2121 						_tmp64_ = vala_ccode_parameter_new (_tmp62_, _tmp63_);
2122 						_tmp65_ = _tmp64_;
2123 						vala_ccode_function_declarator_add_parameter (_tmp60_, _tmp65_);
2124 						_vala_ccode_node_unref0 (_tmp65_);
2125 						_g_free0 (_tmp62_);
2126 					}
2127 				}
2128 			}
2129 			_g_free0 (length_ctype);
2130 		} else {
2131 			gboolean _tmp66_ = FALSE;
2132 			gboolean _tmp67_ = FALSE;
2133 			ValaDataType* _tmp68_;
2134 			ValaDataType* _tmp69_;
2135 			_tmp68_ = vala_property_get_property_type (prop);
2136 			_tmp69_ = _tmp68_;
2137 			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp69_, VALA_TYPE_DELEGATE_TYPE)) {
2138 				_tmp67_ = vala_get_ccode_delegate_target ((ValaCodeNode*) prop);
2139 			} else {
2140 				_tmp67_ = FALSE;
2141 			}
2142 			if (_tmp67_) {
2143 				ValaDataType* _tmp70_;
2144 				ValaDataType* _tmp71_;
2145 				ValaDelegate* _tmp72_;
2146 				ValaDelegate* _tmp73_;
2147 				gboolean _tmp74_;
2148 				gboolean _tmp75_;
2149 				_tmp70_ = vala_property_get_property_type (prop);
2150 				_tmp71_ = _tmp70_;
2151 				_tmp72_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp71_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
2152 				_tmp73_ = _tmp72_;
2153 				_tmp74_ = vala_delegate_get_has_target (_tmp73_);
2154 				_tmp75_ = _tmp74_;
2155 				_tmp66_ = _tmp75_;
2156 			} else {
2157 				_tmp66_ = FALSE;
2158 			}
2159 			if (_tmp66_) {
2160 				ValaCCodeFunctionDeclarator* _tmp76_;
2161 				gchar* _tmp77_;
2162 				gchar* _tmp78_;
2163 				ValaCCodeParameter* _tmp79_;
2164 				ValaCCodeParameter* _tmp80_;
2165 				_tmp76_ = vdeclarator;
2166 				_tmp77_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
2167 				_tmp78_ = _tmp77_;
2168 				_tmp79_ = vala_ccode_parameter_new (_tmp78_, "gpointer*");
2169 				_tmp80_ = _tmp79_;
2170 				vala_ccode_function_declarator_add_parameter (_tmp76_, _tmp80_);
2171 				_vala_ccode_node_unref0 (_tmp80_);
2172 				_g_free0 (_tmp78_);
2173 			}
2174 		}
2175 		_tmp81_ = creturn_type;
2176 		_tmp82_ = vala_get_ccode_name ((ValaCodeNode*) _tmp81_);
2177 		_tmp83_ = _tmp82_;
2178 		_tmp84_ = vala_ccode_declaration_new (_tmp83_);
2179 		_tmp85_ = _tmp84_;
2180 		_g_free0 (_tmp83_);
2181 		vdecl = _tmp85_;
2182 		_tmp86_ = vdecl;
2183 		_tmp87_ = vdeclarator;
2184 		vala_ccode_declaration_add_declarator (_tmp86_, (ValaCCodeDeclarator*) _tmp87_);
2185 		_tmp88_ = vdecl;
2186 		vala_ccode_struct_add_declaration (type_struct, _tmp88_);
2187 		_tmp91_ = cl;
2188 		if (_tmp91_ != NULL) {
2189 			ValaClass* _tmp92_;
2190 			gboolean _tmp93_;
2191 			gboolean _tmp94_;
2192 			_tmp92_ = cl;
2193 			_tmp93_ = vala_class_get_is_compact (_tmp92_);
2194 			_tmp94_ = _tmp93_;
2195 			_tmp90_ = _tmp94_;
2196 		} else {
2197 			_tmp90_ = FALSE;
2198 		}
2199 		if (_tmp90_) {
2200 			ValaClass* _tmp95_;
2201 			ValaClass* _tmp96_;
2202 			ValaClass* _tmp97_;
2203 			_tmp95_ = cl;
2204 			_tmp96_ = vala_class_get_base_class (_tmp95_);
2205 			_tmp97_ = _tmp96_;
2206 			_tmp89_ = _tmp97_ == NULL;
2207 		} else {
2208 			_tmp89_ = FALSE;
2209 		}
2210 		if (_tmp89_) {
2211 			ValaCCodeDeclaration* _tmp98_;
2212 			_tmp98_ = vdecl;
2213 			vala_ccode_struct_add_declaration (instance_struct, _tmp98_);
2214 			*has_struct_member = TRUE;
2215 		}
2216 		_vala_ccode_node_unref0 (vdecl);
2217 		_vala_code_node_unref0 (array_type);
2218 		_vala_code_node_unref0 (creturn_type);
2219 		_vala_ccode_node_unref0 (vdeclarator);
2220 	}
2221 	_tmp99_ = vala_property_get_set_accessor (prop);
2222 	_tmp100_ = _tmp99_;
2223 	if (_tmp100_ != NULL) {
2224 		ValaCCodeParameter* cvalueparam = NULL;
2225 		ValaDataType* _tmp101_;
2226 		ValaDataType* _tmp102_;
2227 		ValaCCodeFunctionDeclarator* vdeclarator = NULL;
2228 		const gchar* _tmp119_;
2229 		const gchar* _tmp120_;
2230 		gchar* _tmp121_;
2231 		gchar* _tmp122_;
2232 		ValaCCodeFunctionDeclarator* _tmp123_;
2233 		ValaCCodeFunctionDeclarator* _tmp124_;
2234 		ValaCCodeFunctionDeclarator* _tmp125_;
2235 		ValaCCodeParameter* _tmp126_;
2236 		ValaCCodeFunctionDeclarator* _tmp127_;
2237 		ValaCCodeParameter* _tmp128_;
2238 		ValaArrayType* array_type = NULL;
2239 		ValaDataType* _tmp129_;
2240 		ValaDataType* _tmp130_;
2241 		ValaArrayType* _tmp131_;
2242 		gboolean _tmp132_ = FALSE;
2243 		ValaArrayType* _tmp133_;
2244 		ValaCCodeDeclaration* vdecl = NULL;
2245 		ValaCCodeDeclaration* _tmp175_;
2246 		ValaCCodeDeclaration* _tmp176_;
2247 		ValaCCodeFunctionDeclarator* _tmp177_;
2248 		ValaCCodeDeclaration* _tmp178_;
2249 		gboolean _tmp179_ = FALSE;
2250 		gboolean _tmp180_ = FALSE;
2251 		ValaClass* _tmp181_;
2252 		_tmp101_ = vala_property_get_property_type (prop);
2253 		_tmp102_ = _tmp101_;
2254 		if (vala_data_type_is_real_non_null_struct_type (_tmp102_)) {
2255 			ValaPropertyAccessor* _tmp103_;
2256 			ValaPropertyAccessor* _tmp104_;
2257 			ValaDataType* _tmp105_;
2258 			ValaDataType* _tmp106_;
2259 			gchar* _tmp107_;
2260 			gchar* _tmp108_;
2261 			gchar* _tmp109_;
2262 			gchar* _tmp110_;
2263 			ValaCCodeParameter* _tmp111_;
2264 			_tmp103_ = vala_property_get_set_accessor (prop);
2265 			_tmp104_ = _tmp103_;
2266 			_tmp105_ = vala_property_accessor_get_value_type (_tmp104_);
2267 			_tmp106_ = _tmp105_;
2268 			_tmp107_ = vala_get_ccode_name ((ValaCodeNode*) _tmp106_);
2269 			_tmp108_ = _tmp107_;
2270 			_tmp109_ = g_strdup_printf ("%s *", _tmp108_);
2271 			_tmp110_ = _tmp109_;
2272 			_tmp111_ = vala_ccode_parameter_new ("value", _tmp110_);
2273 			_vala_ccode_node_unref0 (cvalueparam);
2274 			cvalueparam = _tmp111_;
2275 			_g_free0 (_tmp110_);
2276 			_g_free0 (_tmp108_);
2277 		} else {
2278 			ValaPropertyAccessor* _tmp112_;
2279 			ValaPropertyAccessor* _tmp113_;
2280 			ValaDataType* _tmp114_;
2281 			ValaDataType* _tmp115_;
2282 			gchar* _tmp116_;
2283 			gchar* _tmp117_;
2284 			ValaCCodeParameter* _tmp118_;
2285 			_tmp112_ = vala_property_get_set_accessor (prop);
2286 			_tmp113_ = _tmp112_;
2287 			_tmp114_ = vala_property_accessor_get_value_type (_tmp113_);
2288 			_tmp115_ = _tmp114_;
2289 			_tmp116_ = vala_get_ccode_name ((ValaCodeNode*) _tmp115_);
2290 			_tmp117_ = _tmp116_;
2291 			_tmp118_ = vala_ccode_parameter_new ("value", _tmp117_);
2292 			_vala_ccode_node_unref0 (cvalueparam);
2293 			cvalueparam = _tmp118_;
2294 			_g_free0 (_tmp117_);
2295 		}
2296 		_tmp119_ = vala_symbol_get_name ((ValaSymbol*) prop);
2297 		_tmp120_ = _tmp119_;
2298 		_tmp121_ = g_strdup_printf ("set_%s", _tmp120_);
2299 		_tmp122_ = _tmp121_;
2300 		_tmp123_ = vala_ccode_function_declarator_new (_tmp122_);
2301 		_tmp124_ = _tmp123_;
2302 		_g_free0 (_tmp122_);
2303 		vdeclarator = _tmp124_;
2304 		_tmp125_ = vdeclarator;
2305 		_tmp126_ = cselfparam;
2306 		vala_ccode_function_declarator_add_parameter (_tmp125_, _tmp126_);
2307 		_tmp127_ = vdeclarator;
2308 		_tmp128_ = cvalueparam;
2309 		vala_ccode_function_declarator_add_parameter (_tmp127_, _tmp128_);
2310 		_tmp129_ = vala_property_get_property_type (prop);
2311 		_tmp130_ = _tmp129_;
2312 		_tmp131_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp130_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp130_) : NULL);
2313 		array_type = _tmp131_;
2314 		_tmp133_ = array_type;
2315 		if (_tmp133_ != NULL) {
2316 			_tmp132_ = vala_get_ccode_array_length ((ValaCodeNode*) prop);
2317 		} else {
2318 			_tmp132_ = FALSE;
2319 		}
2320 		if (_tmp132_) {
2321 			gchar* length_ctype = NULL;
2322 			gchar* _tmp134_;
2323 			_tmp134_ = vala_get_ccode_array_length_type ((ValaCodeNode*) prop);
2324 			length_ctype = _tmp134_;
2325 			{
2326 				gint dim = 0;
2327 				dim = 1;
2328 				{
2329 					gboolean _tmp135_ = FALSE;
2330 					_tmp135_ = TRUE;
2331 					while (TRUE) {
2332 						ValaArrayType* _tmp137_;
2333 						gint _tmp138_;
2334 						gint _tmp139_;
2335 						ValaCCodeFunctionDeclarator* _tmp140_;
2336 						gchar* _tmp141_;
2337 						gchar* _tmp142_;
2338 						const gchar* _tmp143_;
2339 						ValaCCodeParameter* _tmp144_;
2340 						ValaCCodeParameter* _tmp145_;
2341 						if (!_tmp135_) {
2342 							gint _tmp136_;
2343 							_tmp136_ = dim;
2344 							dim = _tmp136_ + 1;
2345 						}
2346 						_tmp135_ = FALSE;
2347 						_tmp137_ = array_type;
2348 						_tmp138_ = vala_array_type_get_rank (_tmp137_);
2349 						_tmp139_ = _tmp138_;
2350 						if (!(dim <= _tmp139_)) {
2351 							break;
2352 						}
2353 						_tmp140_ = vdeclarator;
2354 						_tmp141_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", dim);
2355 						_tmp142_ = _tmp141_;
2356 						_tmp143_ = length_ctype;
2357 						_tmp144_ = vala_ccode_parameter_new (_tmp142_, _tmp143_);
2358 						_tmp145_ = _tmp144_;
2359 						vala_ccode_function_declarator_add_parameter (_tmp140_, _tmp145_);
2360 						_vala_ccode_node_unref0 (_tmp145_);
2361 						_g_free0 (_tmp142_);
2362 					}
2363 				}
2364 			}
2365 			_g_free0 (length_ctype);
2366 		} else {
2367 			gboolean _tmp146_ = FALSE;
2368 			gboolean _tmp147_ = FALSE;
2369 			ValaDataType* _tmp148_;
2370 			ValaDataType* _tmp149_;
2371 			_tmp148_ = vala_property_get_property_type (prop);
2372 			_tmp149_ = _tmp148_;
2373 			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp149_, VALA_TYPE_DELEGATE_TYPE)) {
2374 				_tmp147_ = vala_get_ccode_delegate_target ((ValaCodeNode*) prop);
2375 			} else {
2376 				_tmp147_ = FALSE;
2377 			}
2378 			if (_tmp147_) {
2379 				ValaDataType* _tmp150_;
2380 				ValaDataType* _tmp151_;
2381 				ValaDelegate* _tmp152_;
2382 				ValaDelegate* _tmp153_;
2383 				gboolean _tmp154_;
2384 				gboolean _tmp155_;
2385 				_tmp150_ = vala_property_get_property_type (prop);
2386 				_tmp151_ = _tmp150_;
2387 				_tmp152_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp151_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
2388 				_tmp153_ = _tmp152_;
2389 				_tmp154_ = vala_delegate_get_has_target (_tmp153_);
2390 				_tmp155_ = _tmp154_;
2391 				_tmp146_ = _tmp155_;
2392 			} else {
2393 				_tmp146_ = FALSE;
2394 			}
2395 			if (_tmp146_) {
2396 				ValaCCodeFunctionDeclarator* _tmp156_;
2397 				gchar* _tmp157_;
2398 				gchar* _tmp158_;
2399 				ValaCCodeParameter* _tmp159_;
2400 				ValaCCodeParameter* _tmp160_;
2401 				ValaPropertyAccessor* _tmp161_;
2402 				ValaPropertyAccessor* _tmp162_;
2403 				ValaDataType* _tmp163_;
2404 				ValaDataType* _tmp164_;
2405 				gboolean _tmp165_;
2406 				gboolean _tmp166_;
2407 				_tmp156_ = vdeclarator;
2408 				_tmp157_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "value");
2409 				_tmp158_ = _tmp157_;
2410 				_tmp159_ = vala_ccode_parameter_new (_tmp158_, "gpointer");
2411 				_tmp160_ = _tmp159_;
2412 				vala_ccode_function_declarator_add_parameter (_tmp156_, _tmp160_);
2413 				_vala_ccode_node_unref0 (_tmp160_);
2414 				_g_free0 (_tmp158_);
2415 				_tmp161_ = vala_property_get_set_accessor (prop);
2416 				_tmp162_ = _tmp161_;
2417 				_tmp163_ = vala_property_accessor_get_value_type (_tmp162_);
2418 				_tmp164_ = _tmp163_;
2419 				_tmp165_ = vala_data_type_get_value_owned (_tmp164_);
2420 				_tmp166_ = _tmp165_;
2421 				if (_tmp166_) {
2422 					ValaCCodeFunctionDeclarator* _tmp167_;
2423 					gchar* _tmp168_;
2424 					gchar* _tmp169_;
2425 					ValaDelegateType* _tmp170_;
2426 					gchar* _tmp171_;
2427 					gchar* _tmp172_;
2428 					ValaCCodeParameter* _tmp173_;
2429 					ValaCCodeParameter* _tmp174_;
2430 					_tmp167_ = vdeclarator;
2431 					_tmp168_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, "value");
2432 					_tmp169_ = _tmp168_;
2433 					_tmp170_ = ((ValaCCodeBaseModule*) self)->delegate_target_destroy_type;
2434 					_tmp171_ = vala_get_ccode_name ((ValaCodeNode*) _tmp170_);
2435 					_tmp172_ = _tmp171_;
2436 					_tmp173_ = vala_ccode_parameter_new (_tmp169_, _tmp172_);
2437 					_tmp174_ = _tmp173_;
2438 					vala_ccode_function_declarator_add_parameter (_tmp167_, _tmp174_);
2439 					_vala_ccode_node_unref0 (_tmp174_);
2440 					_g_free0 (_tmp172_);
2441 					_g_free0 (_tmp169_);
2442 				}
2443 			}
2444 		}
2445 		_tmp175_ = vala_ccode_declaration_new ("void");
2446 		vdecl = _tmp175_;
2447 		_tmp176_ = vdecl;
2448 		_tmp177_ = vdeclarator;
2449 		vala_ccode_declaration_add_declarator (_tmp176_, (ValaCCodeDeclarator*) _tmp177_);
2450 		_tmp178_ = vdecl;
2451 		vala_ccode_struct_add_declaration (type_struct, _tmp178_);
2452 		_tmp181_ = cl;
2453 		if (_tmp181_ != NULL) {
2454 			ValaClass* _tmp182_;
2455 			gboolean _tmp183_;
2456 			gboolean _tmp184_;
2457 			_tmp182_ = cl;
2458 			_tmp183_ = vala_class_get_is_compact (_tmp182_);
2459 			_tmp184_ = _tmp183_;
2460 			_tmp180_ = _tmp184_;
2461 		} else {
2462 			_tmp180_ = FALSE;
2463 		}
2464 		if (_tmp180_) {
2465 			ValaClass* _tmp185_;
2466 			ValaClass* _tmp186_;
2467 			ValaClass* _tmp187_;
2468 			_tmp185_ = cl;
2469 			_tmp186_ = vala_class_get_base_class (_tmp185_);
2470 			_tmp187_ = _tmp186_;
2471 			_tmp179_ = _tmp187_ == NULL;
2472 		} else {
2473 			_tmp179_ = FALSE;
2474 		}
2475 		if (_tmp179_) {
2476 			ValaCCodeDeclaration* _tmp188_;
2477 			_tmp188_ = vdecl;
2478 			vala_ccode_struct_add_declaration (instance_struct, _tmp188_);
2479 			*has_struct_member = TRUE;
2480 		}
2481 		_vala_ccode_node_unref0 (vdecl);
2482 		_vala_code_node_unref0 (array_type);
2483 		_vala_ccode_node_unref0 (vdeclarator);
2484 		_vala_ccode_node_unref0 (cvalueparam);
2485 	}
2486 	_vala_ccode_node_unref0 (cselfparam);
2487 	_vala_code_node_unref0 (this_type);
2488 }
2489 
2490 static void
vala_gtype_module_generate_struct_field_declaration(ValaGTypeModule * self,ValaField * f,ValaCCodeStruct * instance_struct,ValaCCodeStruct * type_struct,ValaCCodeFile * decl_space,gboolean * has_struct_member)2491 vala_gtype_module_generate_struct_field_declaration (ValaGTypeModule* self,
2492                                                      ValaField* f,
2493                                                      ValaCCodeStruct* instance_struct,
2494                                                      ValaCCodeStruct* type_struct,
2495                                                      ValaCCodeFile* decl_space,
2496                                                      gboolean* has_struct_member)
2497 {
2498 	ValaCCodeModifiers _tmp0_ = 0U;
2499 	gboolean _tmp1_;
2500 	gboolean _tmp2_;
2501 	ValaCCodeModifiers _tmp3_ = 0U;
2502 	ValaVersionAttribute* _tmp4_;
2503 	ValaVersionAttribute* _tmp5_;
2504 	gboolean _tmp6_;
2505 	gboolean _tmp7_;
2506 	ValaCCodeModifiers modifiers = 0U;
2507 	ValaMemberBinding _tmp8_;
2508 	ValaMemberBinding _tmp9_;
2509 	g_return_if_fail (self != NULL);
2510 	g_return_if_fail (f != NULL);
2511 	g_return_if_fail (instance_struct != NULL);
2512 	g_return_if_fail (type_struct != NULL);
2513 	g_return_if_fail (decl_space != NULL);
2514 	_tmp1_ = vala_field_get_is_volatile (f);
2515 	_tmp2_ = _tmp1_;
2516 	if (_tmp2_) {
2517 		_tmp0_ = VALA_CCODE_MODIFIERS_VOLATILE;
2518 	} else {
2519 		_tmp0_ = 0;
2520 	}
2521 	_tmp4_ = vala_symbol_get_version ((ValaSymbol*) f);
2522 	_tmp5_ = _tmp4_;
2523 	_tmp6_ = vala_version_attribute_get_deprecated (_tmp5_);
2524 	_tmp7_ = _tmp6_;
2525 	if (_tmp7_) {
2526 		_tmp3_ = VALA_CCODE_MODIFIERS_DEPRECATED;
2527 	} else {
2528 		_tmp3_ = 0;
2529 	}
2530 	modifiers = _tmp0_ | _tmp3_;
2531 	_tmp8_ = vala_field_get_binding (f);
2532 	_tmp9_ = _tmp8_;
2533 	if (_tmp9_ == VALA_MEMBER_BINDING_INSTANCE) {
2534 		vala_ccode_base_module_append_field ((ValaCCodeBaseModule*) self, instance_struct, f, decl_space);
2535 		*has_struct_member = TRUE;
2536 	} else {
2537 		ValaMemberBinding _tmp10_;
2538 		ValaMemberBinding _tmp11_;
2539 		_tmp10_ = vala_field_get_binding (f);
2540 		_tmp11_ = _tmp10_;
2541 		if (_tmp11_ == VALA_MEMBER_BINDING_CLASS) {
2542 			ValaDataType* _tmp12_;
2543 			ValaDataType* _tmp13_;
2544 			gchar* _tmp14_;
2545 			gchar* _tmp15_;
2546 			gchar* _tmp16_;
2547 			gchar* _tmp17_;
2548 			ValaCCodeModifiers _tmp18_;
2549 			_tmp12_ = vala_variable_get_variable_type ((ValaVariable*) f);
2550 			_tmp13_ = _tmp12_;
2551 			_tmp14_ = vala_get_ccode_name ((ValaCodeNode*) _tmp13_);
2552 			_tmp15_ = _tmp14_;
2553 			_tmp16_ = vala_get_ccode_name ((ValaCodeNode*) f);
2554 			_tmp17_ = _tmp16_;
2555 			_tmp18_ = modifiers;
2556 			vala_ccode_struct_add_field (type_struct, _tmp15_, _tmp17_, _tmp18_, NULL);
2557 			_g_free0 (_tmp17_);
2558 			_g_free0 (_tmp15_);
2559 		}
2560 	}
2561 }
2562 
2563 static gboolean
vala_gtype_module_real_generate_method_declaration(ValaCCodeBaseModule * base,ValaMethod * m,ValaCCodeFile * decl_space)2564 vala_gtype_module_real_generate_method_declaration (ValaCCodeBaseModule* base,
2565                                                     ValaMethod* m,
2566                                                     ValaCCodeFile* decl_space)
2567 {
2568 	ValaGTypeModule * self;
2569 	gboolean result = FALSE;
2570 	self = (ValaGTypeModule*) base;
2571 	g_return_val_if_fail (m != NULL, FALSE);
2572 	g_return_val_if_fail (decl_space != NULL, FALSE);
2573 	if (VALA_CCODE_BASE_MODULE_CLASS (vala_gtype_module_parent_class)->generate_method_declaration ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), m, decl_space)) {
2574 		ValaClass* cl = NULL;
2575 		ValaSymbol* _tmp0_;
2576 		ValaSymbol* _tmp1_;
2577 		gboolean _tmp2_ = FALSE;
2578 		gboolean _tmp3_ = FALSE;
2579 		gboolean _tmp4_ = FALSE;
2580 		ValaClass* _tmp5_;
2581 		_tmp0_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
2582 		_tmp1_ = _tmp0_;
2583 		cl = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp1_) : NULL;
2584 		_tmp5_ = cl;
2585 		if (_tmp5_ != NULL) {
2586 			ValaClass* _tmp6_;
2587 			gboolean _tmp7_;
2588 			gboolean _tmp8_;
2589 			_tmp6_ = cl;
2590 			_tmp7_ = vala_class_get_is_compact (_tmp6_);
2591 			_tmp8_ = _tmp7_;
2592 			_tmp4_ = _tmp8_;
2593 		} else {
2594 			_tmp4_ = FALSE;
2595 		}
2596 		if (_tmp4_) {
2597 			ValaClass* _tmp9_;
2598 			gchar* _tmp10_;
2599 			gchar* _tmp11_;
2600 			gchar* _tmp12_;
2601 			gchar* _tmp13_;
2602 			_tmp9_ = cl;
2603 			_tmp10_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp9_);
2604 			_tmp11_ = _tmp10_;
2605 			_tmp12_ = vala_get_ccode_name ((ValaCodeNode*) m);
2606 			_tmp13_ = _tmp12_;
2607 			_tmp3_ = g_strcmp0 (_tmp11_, _tmp13_) == 0;
2608 			_g_free0 (_tmp13_);
2609 			_g_free0 (_tmp11_);
2610 		} else {
2611 			_tmp3_ = FALSE;
2612 		}
2613 		if (_tmp3_) {
2614 			gboolean _tmp14_ = FALSE;
2615 			ValaCodeContext* _tmp15_;
2616 			ValaCodeContext* _tmp16_;
2617 			gboolean _tmp17_;
2618 			gboolean _tmp18_;
2619 			_tmp15_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
2620 			_tmp16_ = _tmp15_;
2621 			_tmp17_ = vala_code_context_get_use_header (_tmp16_);
2622 			_tmp18_ = _tmp17_;
2623 			if (!_tmp18_) {
2624 				_tmp14_ = TRUE;
2625 			} else {
2626 				gboolean _tmp19_;
2627 				gboolean _tmp20_;
2628 				_tmp19_ = vala_ccode_file_get_is_header (decl_space);
2629 				_tmp20_ = _tmp19_;
2630 				_tmp14_ = _tmp20_;
2631 			}
2632 			_tmp2_ = _tmp14_;
2633 		} else {
2634 			_tmp2_ = FALSE;
2635 		}
2636 		if (_tmp2_) {
2637 			ValaClass* _tmp21_;
2638 			gchar* _tmp22_;
2639 			gchar* _tmp23_;
2640 			gchar* _tmp24_;
2641 			gchar* _tmp25_;
2642 			gchar* _tmp26_;
2643 			gchar* _tmp27_;
2644 			ValaCCodeIdentifier* _tmp28_;
2645 			ValaCCodeIdentifier* _tmp29_;
2646 			ValaCCodeNewline* _tmp30_;
2647 			ValaCCodeNewline* _tmp31_;
2648 			_tmp21_ = cl;
2649 			_tmp22_ = vala_get_ccode_name ((ValaCodeNode*) _tmp21_);
2650 			_tmp23_ = _tmp22_;
2651 			_tmp24_ = vala_get_ccode_name ((ValaCodeNode*) m);
2652 			_tmp25_ = _tmp24_;
2653 			_tmp26_ = g_strdup_printf ("G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, %s)", _tmp23_, _tmp25_);
2654 			_tmp27_ = _tmp26_;
2655 			_tmp28_ = vala_ccode_identifier_new (_tmp27_);
2656 			_tmp29_ = _tmp28_;
2657 			vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp29_);
2658 			_vala_ccode_node_unref0 (_tmp29_);
2659 			_g_free0 (_tmp27_);
2660 			_g_free0 (_tmp25_);
2661 			_g_free0 (_tmp23_);
2662 			_tmp30_ = vala_ccode_newline_new ();
2663 			_tmp31_ = _tmp30_;
2664 			vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp31_);
2665 			_vala_ccode_node_unref0 (_tmp31_);
2666 		}
2667 		result = TRUE;
2668 		return result;
2669 	}
2670 	result = FALSE;
2671 	return result;
2672 }
2673 
2674 static void
vala_gtype_module_real_generate_virtual_method_declaration(ValaGTypeModule * self,ValaMethod * m,ValaCCodeFile * decl_space,ValaCCodeStruct * type_struct)2675 vala_gtype_module_real_generate_virtual_method_declaration (ValaGTypeModule* self,
2676                                                             ValaMethod* m,
2677                                                             ValaCCodeFile* decl_space,
2678                                                             ValaCCodeStruct* type_struct)
2679 {
2680 	gboolean _tmp0_ = FALSE;
2681 	gboolean _tmp1_;
2682 	gboolean _tmp2_;
2683 	ValaDataType* creturn_type = NULL;
2684 	ValaDataType* _tmp5_;
2685 	ValaCCodeFunctionDeclarator* vdeclarator = NULL;
2686 	gchar* _tmp6_;
2687 	gchar* _tmp7_;
2688 	ValaCCodeFunctionDeclarator* _tmp8_;
2689 	ValaCCodeFunctionDeclarator* _tmp9_;
2690 	ValaHashMap* cparam_map = NULL;
2691 	GHashFunc _tmp10_;
2692 	GEqualFunc _tmp11_;
2693 	GEqualFunc _tmp12_;
2694 	ValaHashMap* _tmp13_;
2695 	gboolean _tmp14_;
2696 	gboolean _tmp15_;
2697 	ValaVersionAttribute* _tmp26_;
2698 	ValaVersionAttribute* _tmp27_;
2699 	gboolean _tmp28_;
2700 	gboolean _tmp29_;
2701 	ValaHashMap* _tmp34_;
2702 	ValaCCodeFunction* _tmp35_;
2703 	ValaCCodeFunction* _tmp36_;
2704 	ValaCCodeFunctionDeclarator* _tmp37_;
2705 	ValaCCodeDeclaration* vdecl = NULL;
2706 	ValaDataType* _tmp38_;
2707 	gchar* _tmp39_;
2708 	gchar* _tmp40_;
2709 	ValaCCodeDeclaration* _tmp41_;
2710 	ValaCCodeDeclaration* _tmp42_;
2711 	ValaCCodeDeclaration* _tmp43_;
2712 	ValaCCodeFunctionDeclarator* _tmp44_;
2713 	ValaCCodeDeclaration* _tmp45_;
2714 	g_return_if_fail (m != NULL);
2715 	g_return_if_fail (decl_space != NULL);
2716 	g_return_if_fail (type_struct != NULL);
2717 	_tmp1_ = vala_method_get_is_abstract (m);
2718 	_tmp2_ = _tmp1_;
2719 	if (!_tmp2_) {
2720 		gboolean _tmp3_;
2721 		gboolean _tmp4_;
2722 		_tmp3_ = vala_method_get_is_virtual (m);
2723 		_tmp4_ = _tmp3_;
2724 		_tmp0_ = !_tmp4_;
2725 	} else {
2726 		_tmp0_ = FALSE;
2727 	}
2728 	if (_tmp0_) {
2729 		return;
2730 	}
2731 	_tmp5_ = vala_ccode_base_module_get_callable_creturn_type ((ValaCallable*) m);
2732 	creturn_type = _tmp5_;
2733 	_tmp6_ = vala_get_ccode_vfunc_name (m);
2734 	_tmp7_ = _tmp6_;
2735 	_tmp8_ = vala_ccode_function_declarator_new (_tmp7_);
2736 	_tmp9_ = _tmp8_;
2737 	_g_free0 (_tmp7_);
2738 	vdeclarator = _tmp9_;
2739 	_tmp10_ = g_direct_hash;
2740 	_tmp11_ = g_direct_equal;
2741 	_tmp12_ = g_direct_equal;
2742 	_tmp13_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp10_, _tmp11_, _tmp12_);
2743 	cparam_map = _tmp13_;
2744 	_tmp14_ = vala_method_get_printf_format (m);
2745 	_tmp15_ = _tmp14_;
2746 	if (_tmp15_) {
2747 		ValaCCodeFunctionDeclarator* _tmp16_;
2748 		ValaCCodeFunctionDeclarator* _tmp17_;
2749 		ValaCCodeModifiers _tmp18_;
2750 		ValaCCodeModifiers _tmp19_;
2751 		_tmp16_ = vdeclarator;
2752 		_tmp17_ = vdeclarator;
2753 		_tmp18_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp17_);
2754 		_tmp19_ = _tmp18_;
2755 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp17_, _tmp19_ | VALA_CCODE_MODIFIERS_PRINTF);
2756 	} else {
2757 		gboolean _tmp20_;
2758 		gboolean _tmp21_;
2759 		_tmp20_ = vala_method_get_scanf_format (m);
2760 		_tmp21_ = _tmp20_;
2761 		if (_tmp21_) {
2762 			ValaCCodeFunctionDeclarator* _tmp22_;
2763 			ValaCCodeFunctionDeclarator* _tmp23_;
2764 			ValaCCodeModifiers _tmp24_;
2765 			ValaCCodeModifiers _tmp25_;
2766 			_tmp22_ = vdeclarator;
2767 			_tmp23_ = vdeclarator;
2768 			_tmp24_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp23_);
2769 			_tmp25_ = _tmp24_;
2770 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp23_, _tmp25_ | VALA_CCODE_MODIFIERS_SCANF);
2771 		}
2772 	}
2773 	_tmp26_ = vala_symbol_get_version ((ValaSymbol*) m);
2774 	_tmp27_ = _tmp26_;
2775 	_tmp28_ = vala_version_attribute_get_deprecated (_tmp27_);
2776 	_tmp29_ = _tmp28_;
2777 	if (_tmp29_) {
2778 		ValaCCodeFunctionDeclarator* _tmp30_;
2779 		ValaCCodeFunctionDeclarator* _tmp31_;
2780 		ValaCCodeModifiers _tmp32_;
2781 		ValaCCodeModifiers _tmp33_;
2782 		_tmp30_ = vdeclarator;
2783 		_tmp31_ = vdeclarator;
2784 		_tmp32_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp31_);
2785 		_tmp33_ = _tmp32_;
2786 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp31_, _tmp33_ | VALA_CCODE_MODIFIERS_DEPRECATED);
2787 	}
2788 	_tmp34_ = cparam_map;
2789 	_tmp35_ = vala_ccode_function_new ("fake", "void");
2790 	_tmp36_ = _tmp35_;
2791 	_tmp37_ = vdeclarator;
2792 	vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, decl_space, (ValaMap*) _tmp34_, _tmp36_, _tmp37_, NULL, NULL, 3);
2793 	_vala_ccode_node_unref0 (_tmp36_);
2794 	_tmp38_ = creturn_type;
2795 	_tmp39_ = vala_get_ccode_name ((ValaCodeNode*) _tmp38_);
2796 	_tmp40_ = _tmp39_;
2797 	_tmp41_ = vala_ccode_declaration_new (_tmp40_);
2798 	_tmp42_ = _tmp41_;
2799 	_g_free0 (_tmp40_);
2800 	vdecl = _tmp42_;
2801 	_tmp43_ = vdecl;
2802 	_tmp44_ = vdeclarator;
2803 	vala_ccode_declaration_add_declarator (_tmp43_, (ValaCCodeDeclarator*) _tmp44_);
2804 	_tmp45_ = vdecl;
2805 	vala_ccode_struct_add_declaration (type_struct, _tmp45_);
2806 	_vala_ccode_node_unref0 (vdecl);
2807 	_vala_map_unref0 (cparam_map);
2808 	_vala_ccode_node_unref0 (vdeclarator);
2809 	_vala_code_node_unref0 (creturn_type);
2810 }
2811 
2812 void
vala_gtype_module_generate_virtual_method_declaration(ValaGTypeModule * self,ValaMethod * m,ValaCCodeFile * decl_space,ValaCCodeStruct * type_struct)2813 vala_gtype_module_generate_virtual_method_declaration (ValaGTypeModule* self,
2814                                                        ValaMethod* m,
2815                                                        ValaCCodeFile* decl_space,
2816                                                        ValaCCodeStruct* type_struct)
2817 {
2818 	g_return_if_fail (self != NULL);
2819 	VALA_GTYPE_MODULE_GET_CLASS (self)->generate_virtual_method_declaration (self, m, decl_space, type_struct);
2820 }
2821 
2822 static void
vala_gtype_module_generate_class_private_declaration(ValaGTypeModule * self,ValaClass * cl,ValaCCodeFile * decl_space)2823 vala_gtype_module_generate_class_private_declaration (ValaGTypeModule* self,
2824                                                       ValaClass* cl,
2825                                                       ValaCCodeFile* decl_space)
2826 {
2827 	gchar* _tmp0_;
2828 	gchar* _tmp1_;
2829 	gchar* _tmp2_;
2830 	gchar* _tmp3_;
2831 	gboolean _tmp4_;
2832 	gboolean is_gtypeinstance = FALSE;
2833 	gboolean _tmp5_;
2834 	gboolean _tmp6_;
2835 	gboolean has_class_locks = FALSE;
2836 	ValaCCodeStruct* instance_priv_struct = NULL;
2837 	gchar* _tmp7_;
2838 	gchar* _tmp8_;
2839 	gchar* _tmp9_;
2840 	gchar* _tmp10_;
2841 	ValaCCodeStruct* _tmp11_;
2842 	ValaCCodeStruct* _tmp12_;
2843 	ValaCCodeStruct* type_priv_struct = NULL;
2844 	gchar* _tmp13_;
2845 	gchar* _tmp14_;
2846 	gchar* _tmp15_;
2847 	gchar* _tmp16_;
2848 	ValaCCodeStruct* _tmp17_;
2849 	ValaCCodeStruct* _tmp18_;
2850 	gboolean has_struct_member = FALSE;
2851 	g_return_if_fail (self != NULL);
2852 	g_return_if_fail (cl != NULL);
2853 	g_return_if_fail (decl_space != NULL);
2854 	_tmp0_ = vala_get_ccode_name ((ValaCodeNode*) cl);
2855 	_tmp1_ = _tmp0_;
2856 	_tmp2_ = g_strdup_printf ("%sPrivate", _tmp1_);
2857 	_tmp3_ = _tmp2_;
2858 	_tmp4_ = vala_ccode_file_add_declaration (decl_space, _tmp3_);
2859 	_g_free0 (_tmp3_);
2860 	_g_free0 (_tmp1_);
2861 	if (_tmp4_) {
2862 		return;
2863 	}
2864 	_tmp5_ = vala_class_get_is_compact (cl);
2865 	_tmp6_ = _tmp5_;
2866 	is_gtypeinstance = !_tmp6_;
2867 	has_class_locks = FALSE;
2868 	_tmp7_ = vala_get_ccode_name ((ValaCodeNode*) cl);
2869 	_tmp8_ = _tmp7_;
2870 	_tmp9_ = g_strdup_printf ("_%sPrivate", _tmp8_);
2871 	_tmp10_ = _tmp9_;
2872 	_tmp11_ = vala_ccode_struct_new (_tmp10_);
2873 	_tmp12_ = _tmp11_;
2874 	_g_free0 (_tmp10_);
2875 	_g_free0 (_tmp8_);
2876 	instance_priv_struct = _tmp12_;
2877 	_tmp13_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
2878 	_tmp14_ = _tmp13_;
2879 	_tmp15_ = g_strdup_printf ("_%sPrivate", _tmp14_);
2880 	_tmp16_ = _tmp15_;
2881 	_tmp17_ = vala_ccode_struct_new (_tmp16_);
2882 	_tmp18_ = _tmp17_;
2883 	_g_free0 (_tmp16_);
2884 	_g_free0 (_tmp14_);
2885 	type_priv_struct = _tmp18_;
2886 	if (is_gtypeinstance) {
2887 		{
2888 			ValaList* _type_param_list = NULL;
2889 			ValaList* _tmp19_;
2890 			ValaList* _tmp20_;
2891 			gint _type_param_size = 0;
2892 			ValaList* _tmp21_;
2893 			gint _tmp22_;
2894 			gint _tmp23_;
2895 			gint _type_param_index = 0;
2896 			_tmp19_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
2897 			_tmp20_ = _vala_iterable_ref0 (_tmp19_);
2898 			_type_param_list = _tmp20_;
2899 			_tmp21_ = _type_param_list;
2900 			_tmp22_ = vala_collection_get_size ((ValaCollection*) _tmp21_);
2901 			_tmp23_ = _tmp22_;
2902 			_type_param_size = _tmp23_;
2903 			_type_param_index = -1;
2904 			while (TRUE) {
2905 				gint _tmp24_;
2906 				gint _tmp25_;
2907 				ValaTypeParameter* type_param = NULL;
2908 				ValaList* _tmp26_;
2909 				gpointer _tmp27_;
2910 				gchar* func_name = NULL;
2911 				ValaTypeParameter* _tmp28_;
2912 				const gchar* _tmp29_;
2913 				const gchar* _tmp30_;
2914 				gchar* _tmp31_;
2915 				gchar* _tmp32_;
2916 				gchar* _tmp33_;
2917 				ValaCCodeStruct* _tmp34_;
2918 				const gchar* _tmp35_;
2919 				ValaTypeParameter* _tmp36_;
2920 				const gchar* _tmp37_;
2921 				const gchar* _tmp38_;
2922 				gchar* _tmp39_;
2923 				gchar* _tmp40_;
2924 				gchar* _tmp41_;
2925 				ValaCCodeStruct* _tmp42_;
2926 				const gchar* _tmp43_;
2927 				ValaTypeParameter* _tmp44_;
2928 				const gchar* _tmp45_;
2929 				const gchar* _tmp46_;
2930 				gchar* _tmp47_;
2931 				gchar* _tmp48_;
2932 				gchar* _tmp49_;
2933 				ValaCCodeStruct* _tmp50_;
2934 				const gchar* _tmp51_;
2935 				_type_param_index = _type_param_index + 1;
2936 				_tmp24_ = _type_param_index;
2937 				_tmp25_ = _type_param_size;
2938 				if (!(_tmp24_ < _tmp25_)) {
2939 					break;
2940 				}
2941 				_tmp26_ = _type_param_list;
2942 				_tmp27_ = vala_list_get (_tmp26_, _type_param_index);
2943 				type_param = (ValaTypeParameter*) _tmp27_;
2944 				_tmp28_ = type_param;
2945 				_tmp29_ = vala_symbol_get_name ((ValaSymbol*) _tmp28_);
2946 				_tmp30_ = _tmp29_;
2947 				_tmp31_ = g_ascii_strdown (_tmp30_, (gssize) -1);
2948 				_tmp32_ = _tmp31_;
2949 				_tmp33_ = g_strdup_printf ("%s_type", _tmp32_);
2950 				_g_free0 (func_name);
2951 				func_name = _tmp33_;
2952 				_g_free0 (_tmp32_);
2953 				_tmp34_ = instance_priv_struct;
2954 				_tmp35_ = func_name;
2955 				vala_ccode_struct_add_field (_tmp34_, "GType", _tmp35_, 0, NULL);
2956 				_tmp36_ = type_param;
2957 				_tmp37_ = vala_symbol_get_name ((ValaSymbol*) _tmp36_);
2958 				_tmp38_ = _tmp37_;
2959 				_tmp39_ = g_ascii_strdown (_tmp38_, (gssize) -1);
2960 				_tmp40_ = _tmp39_;
2961 				_tmp41_ = g_strdup_printf ("%s_dup_func", _tmp40_);
2962 				_g_free0 (func_name);
2963 				func_name = _tmp41_;
2964 				_g_free0 (_tmp40_);
2965 				_tmp42_ = instance_priv_struct;
2966 				_tmp43_ = func_name;
2967 				vala_ccode_struct_add_field (_tmp42_, "GBoxedCopyFunc", _tmp43_, 0, NULL);
2968 				_tmp44_ = type_param;
2969 				_tmp45_ = vala_symbol_get_name ((ValaSymbol*) _tmp44_);
2970 				_tmp46_ = _tmp45_;
2971 				_tmp47_ = g_ascii_strdown (_tmp46_, (gssize) -1);
2972 				_tmp48_ = _tmp47_;
2973 				_tmp49_ = g_strdup_printf ("%s_destroy_func", _tmp48_);
2974 				_g_free0 (func_name);
2975 				func_name = _tmp49_;
2976 				_g_free0 (_tmp48_);
2977 				_tmp50_ = instance_priv_struct;
2978 				_tmp51_ = func_name;
2979 				vala_ccode_struct_add_field (_tmp50_, "GDestroyNotify", _tmp51_, 0, NULL);
2980 				_g_free0 (func_name);
2981 				_vala_code_node_unref0 (type_param);
2982 			}
2983 			_vala_iterable_unref0 (_type_param_list);
2984 		}
2985 	}
2986 	has_struct_member = FALSE;
2987 	{
2988 		ValaList* _f_list = NULL;
2989 		ValaList* _tmp52_;
2990 		ValaList* _tmp53_;
2991 		gint _f_size = 0;
2992 		ValaList* _tmp54_;
2993 		gint _tmp55_;
2994 		gint _tmp56_;
2995 		gint _f_index = 0;
2996 		_tmp52_ = vala_object_type_symbol_get_fields ((ValaObjectTypeSymbol*) cl);
2997 		_tmp53_ = _vala_iterable_ref0 (_tmp52_);
2998 		_f_list = _tmp53_;
2999 		_tmp54_ = _f_list;
3000 		_tmp55_ = vala_collection_get_size ((ValaCollection*) _tmp54_);
3001 		_tmp56_ = _tmp55_;
3002 		_f_size = _tmp56_;
3003 		_f_index = -1;
3004 		while (TRUE) {
3005 			gint _tmp57_;
3006 			gint _tmp58_;
3007 			ValaField* f = NULL;
3008 			ValaList* _tmp59_;
3009 			gpointer _tmp60_;
3010 			ValaField* _tmp61_;
3011 			ValaSymbolAccessibility _tmp62_;
3012 			ValaSymbolAccessibility _tmp63_;
3013 			ValaField* _tmp67_;
3014 			gboolean _tmp68_;
3015 			gboolean _tmp69_;
3016 			_f_index = _f_index + 1;
3017 			_tmp57_ = _f_index;
3018 			_tmp58_ = _f_size;
3019 			if (!(_tmp57_ < _tmp58_)) {
3020 				break;
3021 			}
3022 			_tmp59_ = _f_list;
3023 			_tmp60_ = vala_list_get (_tmp59_, _f_index);
3024 			f = (ValaField*) _tmp60_;
3025 			_tmp61_ = f;
3026 			_tmp62_ = vala_symbol_get_access ((ValaSymbol*) _tmp61_);
3027 			_tmp63_ = _tmp62_;
3028 			if (_tmp63_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
3029 				ValaField* _tmp64_;
3030 				ValaCCodeStruct* _tmp65_;
3031 				ValaCCodeStruct* _tmp66_;
3032 				_tmp64_ = f;
3033 				_tmp65_ = instance_priv_struct;
3034 				_tmp66_ = type_priv_struct;
3035 				vala_gtype_module_generate_struct_field_declaration (self, _tmp64_, _tmp65_, _tmp66_, decl_space, &has_struct_member);
3036 			}
3037 			_tmp67_ = f;
3038 			_tmp68_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp67_);
3039 			_tmp69_ = _tmp68_;
3040 			if (_tmp69_) {
3041 				ValaField* _tmp70_;
3042 				ValaMemberBinding _tmp71_;
3043 				ValaMemberBinding _tmp72_;
3044 				_tmp70_ = f;
3045 				_tmp71_ = vala_field_get_binding (_tmp70_);
3046 				_tmp72_ = _tmp71_;
3047 				if (_tmp72_ == VALA_MEMBER_BINDING_INSTANCE) {
3048 					ValaCCodeStruct* _tmp73_;
3049 					ValaStruct* _tmp74_;
3050 					gchar* _tmp75_;
3051 					gchar* _tmp76_;
3052 					ValaField* _tmp77_;
3053 					gchar* _tmp78_;
3054 					gchar* _tmp79_;
3055 					gchar* _tmp80_;
3056 					gchar* _tmp81_;
3057 					vala_class_set_has_private_fields (cl, TRUE);
3058 					_tmp73_ = instance_priv_struct;
3059 					_tmp74_ = ((ValaCCodeBaseModule*) self)->mutex_type;
3060 					_tmp75_ = vala_get_ccode_name ((ValaCodeNode*) _tmp74_);
3061 					_tmp76_ = _tmp75_;
3062 					_tmp77_ = f;
3063 					_tmp78_ = vala_get_ccode_name ((ValaCodeNode*) _tmp77_);
3064 					_tmp79_ = _tmp78_;
3065 					_tmp80_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp79_);
3066 					_tmp81_ = _tmp80_;
3067 					vala_ccode_struct_add_field (_tmp73_, _tmp76_, _tmp81_, 0, NULL);
3068 					_g_free0 (_tmp81_);
3069 					_g_free0 (_tmp79_);
3070 					_g_free0 (_tmp76_);
3071 				} else {
3072 					ValaField* _tmp82_;
3073 					ValaMemberBinding _tmp83_;
3074 					ValaMemberBinding _tmp84_;
3075 					_tmp82_ = f;
3076 					_tmp83_ = vala_field_get_binding (_tmp82_);
3077 					_tmp84_ = _tmp83_;
3078 					if (_tmp84_ == VALA_MEMBER_BINDING_CLASS) {
3079 						ValaCCodeStruct* _tmp85_;
3080 						ValaStruct* _tmp86_;
3081 						gchar* _tmp87_;
3082 						gchar* _tmp88_;
3083 						ValaField* _tmp89_;
3084 						gchar* _tmp90_;
3085 						gchar* _tmp91_;
3086 						gchar* _tmp92_;
3087 						gchar* _tmp93_;
3088 						has_class_locks = TRUE;
3089 						_tmp85_ = type_priv_struct;
3090 						_tmp86_ = ((ValaCCodeBaseModule*) self)->mutex_type;
3091 						_tmp87_ = vala_get_ccode_name ((ValaCodeNode*) _tmp86_);
3092 						_tmp88_ = _tmp87_;
3093 						_tmp89_ = f;
3094 						_tmp90_ = vala_get_ccode_name ((ValaCodeNode*) _tmp89_);
3095 						_tmp91_ = _tmp90_;
3096 						_tmp92_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp91_);
3097 						_tmp93_ = _tmp92_;
3098 						vala_ccode_struct_add_field (_tmp85_, _tmp88_, _tmp93_, 0, NULL);
3099 						_g_free0 (_tmp93_);
3100 						_g_free0 (_tmp91_);
3101 						_g_free0 (_tmp88_);
3102 					}
3103 				}
3104 			}
3105 			_vala_code_node_unref0 (f);
3106 		}
3107 		_vala_iterable_unref0 (_f_list);
3108 	}
3109 	{
3110 		ValaList* _prop_list = NULL;
3111 		ValaList* _tmp94_;
3112 		ValaList* _tmp95_;
3113 		gint _prop_size = 0;
3114 		ValaList* _tmp96_;
3115 		gint _tmp97_;
3116 		gint _tmp98_;
3117 		gint _prop_index = 0;
3118 		_tmp94_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
3119 		_tmp95_ = _vala_iterable_ref0 (_tmp94_);
3120 		_prop_list = _tmp95_;
3121 		_tmp96_ = _prop_list;
3122 		_tmp97_ = vala_collection_get_size ((ValaCollection*) _tmp96_);
3123 		_tmp98_ = _tmp97_;
3124 		_prop_size = _tmp98_;
3125 		_prop_index = -1;
3126 		while (TRUE) {
3127 			gint _tmp99_;
3128 			gint _tmp100_;
3129 			ValaProperty* prop = NULL;
3130 			ValaList* _tmp101_;
3131 			gpointer _tmp102_;
3132 			ValaProperty* _tmp103_;
3133 			ValaMemberBinding _tmp104_;
3134 			ValaMemberBinding _tmp105_;
3135 			_prop_index = _prop_index + 1;
3136 			_tmp99_ = _prop_index;
3137 			_tmp100_ = _prop_size;
3138 			if (!(_tmp99_ < _tmp100_)) {
3139 				break;
3140 			}
3141 			_tmp101_ = _prop_list;
3142 			_tmp102_ = vala_list_get (_tmp101_, _prop_index);
3143 			prop = (ValaProperty*) _tmp102_;
3144 			_tmp103_ = prop;
3145 			_tmp104_ = vala_property_get_binding (_tmp103_);
3146 			_tmp105_ = _tmp104_;
3147 			if (_tmp105_ == VALA_MEMBER_BINDING_INSTANCE) {
3148 				ValaProperty* _tmp106_;
3149 				gboolean _tmp107_;
3150 				gboolean _tmp108_;
3151 				_tmp106_ = prop;
3152 				_tmp107_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp106_);
3153 				_tmp108_ = _tmp107_;
3154 				if (_tmp108_) {
3155 					ValaCCodeStruct* _tmp109_;
3156 					ValaStruct* _tmp110_;
3157 					gchar* _tmp111_;
3158 					gchar* _tmp112_;
3159 					ValaProperty* _tmp113_;
3160 					gchar* _tmp114_;
3161 					gchar* _tmp115_;
3162 					gchar* _tmp116_;
3163 					gchar* _tmp117_;
3164 					vala_class_set_has_private_fields (cl, TRUE);
3165 					_tmp109_ = instance_priv_struct;
3166 					_tmp110_ = ((ValaCCodeBaseModule*) self)->mutex_type;
3167 					_tmp111_ = vala_get_ccode_name ((ValaCodeNode*) _tmp110_);
3168 					_tmp112_ = _tmp111_;
3169 					_tmp113_ = prop;
3170 					_tmp114_ = vala_get_ccode_name ((ValaCodeNode*) _tmp113_);
3171 					_tmp115_ = _tmp114_;
3172 					_tmp116_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp115_);
3173 					_tmp117_ = _tmp116_;
3174 					vala_ccode_struct_add_field (_tmp109_, _tmp112_, _tmp117_, 0, NULL);
3175 					_g_free0 (_tmp117_);
3176 					_g_free0 (_tmp115_);
3177 					_g_free0 (_tmp112_);
3178 				}
3179 			} else {
3180 				ValaProperty* _tmp118_;
3181 				ValaMemberBinding _tmp119_;
3182 				ValaMemberBinding _tmp120_;
3183 				_tmp118_ = prop;
3184 				_tmp119_ = vala_property_get_binding (_tmp118_);
3185 				_tmp120_ = _tmp119_;
3186 				if (_tmp120_ == VALA_MEMBER_BINDING_CLASS) {
3187 					ValaProperty* _tmp121_;
3188 					gboolean _tmp122_;
3189 					gboolean _tmp123_;
3190 					_tmp121_ = prop;
3191 					_tmp122_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp121_);
3192 					_tmp123_ = _tmp122_;
3193 					if (_tmp123_) {
3194 						ValaCCodeStruct* _tmp124_;
3195 						ValaStruct* _tmp125_;
3196 						gchar* _tmp126_;
3197 						gchar* _tmp127_;
3198 						ValaProperty* _tmp128_;
3199 						gchar* _tmp129_;
3200 						gchar* _tmp130_;
3201 						gchar* _tmp131_;
3202 						gchar* _tmp132_;
3203 						has_class_locks = TRUE;
3204 						_tmp124_ = type_priv_struct;
3205 						_tmp125_ = ((ValaCCodeBaseModule*) self)->mutex_type;
3206 						_tmp126_ = vala_get_ccode_name ((ValaCodeNode*) _tmp125_);
3207 						_tmp127_ = _tmp126_;
3208 						_tmp128_ = prop;
3209 						_tmp129_ = vala_get_ccode_name ((ValaCodeNode*) _tmp128_);
3210 						_tmp130_ = _tmp129_;
3211 						_tmp131_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp130_);
3212 						_tmp132_ = _tmp131_;
3213 						vala_ccode_struct_add_field (_tmp124_, _tmp127_, _tmp132_, 0, NULL);
3214 						_g_free0 (_tmp132_);
3215 						_g_free0 (_tmp130_);
3216 						_g_free0 (_tmp127_);
3217 					}
3218 				}
3219 			}
3220 			_vala_code_node_unref0 (prop);
3221 		}
3222 		_vala_iterable_unref0 (_prop_list);
3223 	}
3224 	if (is_gtypeinstance) {
3225 		gboolean _tmp133_ = FALSE;
3226 		gboolean _tmp134_;
3227 		gboolean _tmp135_;
3228 		gboolean _tmp149_ = FALSE;
3229 		gboolean _tmp150_;
3230 		gboolean _tmp151_;
3231 		gboolean _tmp205_ = FALSE;
3232 		gboolean _tmp206_;
3233 		gboolean _tmp207_;
3234 		_tmp134_ = vala_class_get_has_class_private_fields (cl);
3235 		_tmp135_ = _tmp134_;
3236 		if (_tmp135_) {
3237 			_tmp133_ = TRUE;
3238 		} else {
3239 			_tmp133_ = has_class_locks;
3240 		}
3241 		if (_tmp133_) {
3242 			ValaCCodeStruct* _tmp136_;
3243 			const gchar* _tmp137_;
3244 			const gchar* _tmp138_;
3245 			gchar* _tmp139_;
3246 			gchar* _tmp140_;
3247 			gchar* _tmp141_;
3248 			gchar* _tmp142_;
3249 			gchar* _tmp143_;
3250 			gchar* _tmp144_;
3251 			ValaCCodeVariableDeclarator* _tmp145_;
3252 			ValaCCodeVariableDeclarator* _tmp146_;
3253 			ValaCCodeTypeDefinition* _tmp147_;
3254 			ValaCCodeTypeDefinition* _tmp148_;
3255 			_tmp136_ = type_priv_struct;
3256 			_tmp137_ = vala_ccode_struct_get_name (_tmp136_);
3257 			_tmp138_ = _tmp137_;
3258 			_tmp139_ = g_strdup_printf ("struct %s", _tmp138_);
3259 			_tmp140_ = _tmp139_;
3260 			_tmp141_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
3261 			_tmp142_ = _tmp141_;
3262 			_tmp143_ = g_strdup_printf ("%sPrivate", _tmp142_);
3263 			_tmp144_ = _tmp143_;
3264 			_tmp145_ = vala_ccode_variable_declarator_new (_tmp144_, NULL, NULL);
3265 			_tmp146_ = _tmp145_;
3266 			_tmp147_ = vala_ccode_type_definition_new (_tmp140_, (ValaCCodeDeclarator*) _tmp146_);
3267 			_tmp148_ = _tmp147_;
3268 			vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp148_);
3269 			_vala_ccode_node_unref0 (_tmp148_);
3270 			_vala_ccode_node_unref0 (_tmp146_);
3271 			_g_free0 (_tmp144_);
3272 			_g_free0 (_tmp142_);
3273 			_g_free0 (_tmp140_);
3274 		}
3275 		_tmp150_ = vala_class_get_has_private_fields (cl);
3276 		_tmp151_ = _tmp150_;
3277 		if (_tmp151_) {
3278 			_tmp149_ = TRUE;
3279 		} else {
3280 			_tmp149_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
3281 		}
3282 		if (_tmp149_) {
3283 			ValaCCodeStruct* _tmp152_;
3284 			ValaCCodeDeclaration* parent_decl = NULL;
3285 			ValaCCodeDeclaration* _tmp153_;
3286 			ValaCCodeVariableDeclarator* parent_var_decl = NULL;
3287 			gchar* _tmp154_;
3288 			gchar* _tmp155_;
3289 			gchar* _tmp156_;
3290 			gchar* _tmp157_;
3291 			ValaCCodeVariableDeclarator* _tmp158_;
3292 			ValaCCodeVariableDeclarator* _tmp159_;
3293 			ValaCCodeDeclaration* _tmp160_;
3294 			ValaCCodeVariableDeclarator* _tmp161_;
3295 			ValaCCodeDeclaration* _tmp162_;
3296 			ValaCCodeFile* _tmp163_;
3297 			ValaCCodeDeclaration* _tmp164_;
3298 			ValaCCodeFunction* function = NULL;
3299 			gchar* _tmp165_;
3300 			gchar* _tmp166_;
3301 			gchar* _tmp167_;
3302 			gchar* _tmp168_;
3303 			ValaCCodeFunction* _tmp169_;
3304 			ValaCCodeFunction* _tmp170_;
3305 			ValaCCodeFunction* _tmp171_;
3306 			ValaCCodeFunction* _tmp172_;
3307 			gchar* _tmp173_;
3308 			gchar* _tmp174_;
3309 			gchar* _tmp175_;
3310 			gchar* _tmp176_;
3311 			ValaCCodeParameter* _tmp177_;
3312 			ValaCCodeParameter* _tmp178_;
3313 			ValaCCodeFunction* _tmp179_;
3314 			ValaCCodeFunction* _tmp180_;
3315 			ValaCCodeBlock* _tmp181_;
3316 			ValaCCodeBlock* _tmp182_;
3317 			ValaCCodeFunctionCall* ccall = NULL;
3318 			ValaCCodeIdentifier* _tmp183_;
3319 			ValaCCodeIdentifier* _tmp184_;
3320 			ValaCCodeFunctionCall* _tmp185_;
3321 			ValaCCodeFunctionCall* _tmp186_;
3322 			ValaCCodeFunctionCall* _tmp187_;
3323 			ValaCCodeIdentifier* _tmp188_;
3324 			ValaCCodeIdentifier* _tmp189_;
3325 			ValaCCodeFunctionCall* _tmp190_;
3326 			gchar* _tmp191_;
3327 			gchar* _tmp192_;
3328 			gchar* _tmp193_;
3329 			gchar* _tmp194_;
3330 			ValaCCodeIdentifier* _tmp195_;
3331 			ValaCCodeIdentifier* _tmp196_;
3332 			ValaCCodeFunction* _tmp197_;
3333 			ValaCCodeBlock* _tmp198_;
3334 			ValaCCodeBlock* _tmp199_;
3335 			ValaCCodeFunctionCall* _tmp200_;
3336 			ValaCCodeReturnStatement* _tmp201_;
3337 			ValaCCodeReturnStatement* _tmp202_;
3338 			ValaCCodeFile* _tmp203_;
3339 			ValaCCodeFunction* _tmp204_;
3340 			_tmp152_ = instance_priv_struct;
3341 			vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) _tmp152_);
3342 			_tmp153_ = vala_ccode_declaration_new ("gint");
3343 			parent_decl = _tmp153_;
3344 			_tmp154_ = vala_get_ccode_name ((ValaCodeNode*) cl);
3345 			_tmp155_ = _tmp154_;
3346 			_tmp156_ = g_strdup_printf ("%s_private_offset", _tmp155_);
3347 			_tmp157_ = _tmp156_;
3348 			_tmp158_ = vala_ccode_variable_declarator_new (_tmp157_, NULL, NULL);
3349 			_tmp159_ = _tmp158_;
3350 			_g_free0 (_tmp157_);
3351 			_g_free0 (_tmp155_);
3352 			parent_var_decl = _tmp159_;
3353 			_tmp160_ = parent_decl;
3354 			_tmp161_ = parent_var_decl;
3355 			vala_ccode_declaration_add_declarator (_tmp160_, (ValaCCodeDeclarator*) _tmp161_);
3356 			_tmp162_ = parent_decl;
3357 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp162_, VALA_CCODE_MODIFIERS_STATIC);
3358 			_tmp163_ = ((ValaCCodeBaseModule*) self)->cfile;
3359 			_tmp164_ = parent_decl;
3360 			vala_ccode_file_add_type_member_declaration (_tmp163_, (ValaCCodeNode*) _tmp164_);
3361 			_tmp165_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
3362 			_tmp166_ = _tmp165_;
3363 			_tmp167_ = g_strdup_printf ("%s_get_instance_private", _tmp166_);
3364 			_tmp168_ = _tmp167_;
3365 			_tmp169_ = vala_ccode_function_new (_tmp168_, "gpointer");
3366 			_tmp170_ = _tmp169_;
3367 			_g_free0 (_tmp168_);
3368 			_g_free0 (_tmp166_);
3369 			function = _tmp170_;
3370 			_tmp171_ = function;
3371 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp171_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_INLINE);
3372 			_tmp172_ = function;
3373 			_tmp173_ = vala_get_ccode_name ((ValaCodeNode*) cl);
3374 			_tmp174_ = _tmp173_;
3375 			_tmp175_ = g_strdup_printf ("%s*", _tmp174_);
3376 			_tmp176_ = _tmp175_;
3377 			_tmp177_ = vala_ccode_parameter_new ("self", _tmp176_);
3378 			_tmp178_ = _tmp177_;
3379 			vala_ccode_function_add_parameter (_tmp172_, _tmp178_);
3380 			_vala_ccode_node_unref0 (_tmp178_);
3381 			_g_free0 (_tmp176_);
3382 			_g_free0 (_tmp174_);
3383 			_tmp179_ = function;
3384 			vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp179_);
3385 			_tmp180_ = function;
3386 			_tmp181_ = vala_ccode_block_new ();
3387 			_tmp182_ = _tmp181_;
3388 			vala_ccode_function_set_block (_tmp180_, _tmp182_);
3389 			_vala_ccode_node_unref0 (_tmp182_);
3390 			_tmp183_ = vala_ccode_identifier_new ("G_STRUCT_MEMBER_P");
3391 			_tmp184_ = _tmp183_;
3392 			_tmp185_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp184_);
3393 			_tmp186_ = _tmp185_;
3394 			_vala_ccode_node_unref0 (_tmp184_);
3395 			ccall = _tmp186_;
3396 			_tmp187_ = ccall;
3397 			_tmp188_ = vala_ccode_identifier_new ("self");
3398 			_tmp189_ = _tmp188_;
3399 			vala_ccode_function_call_add_argument (_tmp187_, (ValaCCodeExpression*) _tmp189_);
3400 			_vala_ccode_node_unref0 (_tmp189_);
3401 			_tmp190_ = ccall;
3402 			_tmp191_ = vala_get_ccode_name ((ValaCodeNode*) cl);
3403 			_tmp192_ = _tmp191_;
3404 			_tmp193_ = g_strdup_printf ("%s_private_offset", _tmp192_);
3405 			_tmp194_ = _tmp193_;
3406 			_tmp195_ = vala_ccode_identifier_new (_tmp194_);
3407 			_tmp196_ = _tmp195_;
3408 			vala_ccode_function_call_add_argument (_tmp190_, (ValaCCodeExpression*) _tmp196_);
3409 			_vala_ccode_node_unref0 (_tmp196_);
3410 			_g_free0 (_tmp194_);
3411 			_g_free0 (_tmp192_);
3412 			_tmp197_ = function;
3413 			_tmp198_ = vala_ccode_function_get_block (_tmp197_);
3414 			_tmp199_ = _tmp198_;
3415 			_tmp200_ = ccall;
3416 			_tmp201_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp200_);
3417 			_tmp202_ = _tmp201_;
3418 			vala_ccode_block_add_statement (_tmp199_, (ValaCCodeNode*) _tmp202_);
3419 			_vala_ccode_node_unref0 (_tmp202_);
3420 			vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
3421 			_tmp203_ = ((ValaCCodeBaseModule*) self)->cfile;
3422 			_tmp204_ = function;
3423 			vala_ccode_file_add_function (_tmp203_, _tmp204_);
3424 			_vala_ccode_node_unref0 (ccall);
3425 			_vala_ccode_node_unref0 (function);
3426 			_vala_ccode_node_unref0 (parent_var_decl);
3427 			_vala_ccode_node_unref0 (parent_decl);
3428 		}
3429 		_tmp206_ = vala_class_get_has_class_private_fields (cl);
3430 		_tmp207_ = _tmp206_;
3431 		if (_tmp207_) {
3432 			_tmp205_ = TRUE;
3433 		} else {
3434 			_tmp205_ = has_class_locks;
3435 		}
3436 		if (_tmp205_) {
3437 			ValaCCodeStruct* _tmp208_;
3438 			gchar* macro = NULL;
3439 			gchar* _tmp209_;
3440 			gchar* _tmp210_;
3441 			gchar* _tmp211_;
3442 			gchar* _tmp212_;
3443 			gchar* _tmp213_;
3444 			gchar* _tmp214_;
3445 			gchar* _tmp215_;
3446 			gchar* _tmp216_;
3447 			gchar* _tmp217_;
3448 			gchar* _tmp218_;
3449 			const gchar* _tmp219_;
3450 			ValaCCodeMacroReplacement* _tmp220_;
3451 			ValaCCodeMacroReplacement* _tmp221_;
3452 			_tmp208_ = type_priv_struct;
3453 			vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) _tmp208_);
3454 			_tmp209_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
3455 			_tmp210_ = _tmp209_;
3456 			_tmp211_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
3457 			_tmp212_ = _tmp211_;
3458 			_tmp213_ = g_strdup_printf ("(G_TYPE_CLASS_GET_PRIVATE (klass, %s, %sPrivate))", _tmp210_, _tmp212_);
3459 			_tmp214_ = _tmp213_;
3460 			_g_free0 (_tmp212_);
3461 			_g_free0 (_tmp210_);
3462 			macro = _tmp214_;
3463 			_tmp215_ = vala_get_ccode_class_get_private_function (cl);
3464 			_tmp216_ = _tmp215_;
3465 			_tmp217_ = g_strdup_printf ("%s(klass)", _tmp216_);
3466 			_tmp218_ = _tmp217_;
3467 			_tmp219_ = macro;
3468 			_tmp220_ = vala_ccode_macro_replacement_new (_tmp218_, _tmp219_);
3469 			_tmp221_ = _tmp220_;
3470 			vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp221_);
3471 			_vala_ccode_node_unref0 (_tmp221_);
3472 			_g_free0 (_tmp218_);
3473 			_g_free0 (_tmp216_);
3474 			_g_free0 (macro);
3475 		}
3476 	}
3477 	_vala_ccode_node_unref0 (type_priv_struct);
3478 	_vala_ccode_node_unref0 (instance_priv_struct);
3479 }
3480 
3481 static gpointer
_vala_ccode_node_ref0(gpointer self)3482 _vala_ccode_node_ref0 (gpointer self)
3483 {
3484 	return self ? vala_ccode_node_ref (self) : NULL;
3485 }
3486 
3487 static gpointer
_vala_ccode_base_module_emit_context_ref0(gpointer self)3488 _vala_ccode_base_module_emit_context_ref0 (gpointer self)
3489 {
3490 	return self ? vala_ccode_base_module_emit_context_ref (self) : NULL;
3491 }
3492 
3493 static void
vala_gtype_module_real_visit_class(ValaCodeVisitor * base,ValaClass * cl)3494 vala_gtype_module_real_visit_class (ValaCodeVisitor* base,
3495                                     ValaClass* cl)
3496 {
3497 	ValaGTypeModule * self;
3498 	ValaCCodeBaseModuleEmitContext* _tmp0_;
3499 	ValaCCodeBaseModuleEmitContext* _tmp1_;
3500 	ValaSourceReference* _tmp2_;
3501 	ValaSourceReference* _tmp3_;
3502 	ValaCCodeStruct* old_param_spec_struct = NULL;
3503 	ValaCCodeStruct* _tmp4_;
3504 	ValaCCodeStruct* _tmp5_;
3505 	ValaCCodeEnum* old_prop_enum = NULL;
3506 	ValaCCodeEnum* _tmp6_;
3507 	ValaCCodeEnum* _tmp7_;
3508 	ValaCCodeEnum* old_signal_enum = NULL;
3509 	ValaCCodeEnum* _tmp8_;
3510 	ValaCCodeEnum* _tmp9_;
3511 	ValaCCodeBaseModuleEmitContext* old_class_init_context = NULL;
3512 	ValaCCodeBaseModuleEmitContext* _tmp10_;
3513 	ValaCCodeBaseModuleEmitContext* _tmp11_;
3514 	ValaCCodeBaseModuleEmitContext* old_base_init_context = NULL;
3515 	ValaCCodeBaseModuleEmitContext* _tmp12_;
3516 	ValaCCodeBaseModuleEmitContext* _tmp13_;
3517 	ValaCCodeBaseModuleEmitContext* old_class_finalize_context = NULL;
3518 	ValaCCodeBaseModuleEmitContext* _tmp14_;
3519 	ValaCCodeBaseModuleEmitContext* _tmp15_;
3520 	ValaCCodeBaseModuleEmitContext* old_base_finalize_context = NULL;
3521 	ValaCCodeBaseModuleEmitContext* _tmp16_;
3522 	ValaCCodeBaseModuleEmitContext* _tmp17_;
3523 	ValaCCodeBaseModuleEmitContext* old_instance_init_context = NULL;
3524 	ValaCCodeBaseModuleEmitContext* _tmp18_;
3525 	ValaCCodeBaseModuleEmitContext* _tmp19_;
3526 	ValaCCodeBaseModuleEmitContext* old_instance_finalize_context = NULL;
3527 	ValaCCodeBaseModuleEmitContext* _tmp20_;
3528 	ValaCCodeBaseModuleEmitContext* _tmp21_;
3529 	gboolean is_gtypeinstance = FALSE;
3530 	gboolean _tmp22_;
3531 	gboolean _tmp23_;
3532 	gboolean _tmp24_ = FALSE;
3533 	gboolean is_gobject = FALSE;
3534 	gboolean _tmp26_ = FALSE;
3535 	gboolean is_fundamental = FALSE;
3536 	gchar* _tmp29_;
3537 	gchar* _tmp30_;
3538 	gint _tmp31_;
3539 	gint _tmp32_;
3540 	gboolean _tmp33_;
3541 	ValaCCodeEnum* _tmp40_;
3542 	ValaCCodeEnum* _tmp41_;
3543 	gchar* _tmp42_;
3544 	gchar* _tmp43_;
3545 	gchar* _tmp44_;
3546 	gchar* _tmp45_;
3547 	ValaCCodeEnumValue* _tmp46_;
3548 	ValaCCodeEnumValue* _tmp47_;
3549 	ValaCCodeEnum* _tmp48_;
3550 	ValaCCodeBaseModuleEmitContext* _tmp49_;
3551 	ValaCCodeBaseModuleEmitContext* _tmp50_;
3552 	ValaCCodeBaseModuleEmitContext* _tmp51_;
3553 	ValaCCodeBaseModuleEmitContext* _tmp52_;
3554 	ValaCCodeBaseModuleEmitContext* _tmp53_;
3555 	ValaCCodeBaseModuleEmitContext* _tmp54_;
3556 	ValaCCodeFile* _tmp55_;
3557 	ValaCCodeFile* _tmp56_;
3558 	gchar* last_prop = NULL;
3559 	gchar* _tmp57_;
3560 	gchar* _tmp58_;
3561 	gchar* _tmp59_;
3562 	gchar* _tmp60_;
3563 	ValaCCodeStruct* _tmp355_;
3564 	ValaCCodeStruct* _tmp356_;
3565 	ValaCCodeEnum* _tmp357_;
3566 	ValaCCodeEnum* _tmp358_;
3567 	ValaCCodeEnum* _tmp359_;
3568 	ValaCCodeEnum* _tmp360_;
3569 	ValaCCodeBaseModuleEmitContext* _tmp361_;
3570 	ValaCCodeBaseModuleEmitContext* _tmp362_;
3571 	ValaCCodeBaseModuleEmitContext* _tmp363_;
3572 	ValaCCodeBaseModuleEmitContext* _tmp364_;
3573 	ValaCCodeBaseModuleEmitContext* _tmp365_;
3574 	ValaCCodeBaseModuleEmitContext* _tmp366_;
3575 	ValaCCodeBaseModuleEmitContext* _tmp367_;
3576 	ValaCCodeBaseModuleEmitContext* _tmp368_;
3577 	ValaCCodeBaseModuleEmitContext* _tmp369_;
3578 	ValaCCodeBaseModuleEmitContext* _tmp370_;
3579 	ValaCCodeBaseModuleEmitContext* _tmp371_;
3580 	ValaCCodeBaseModuleEmitContext* _tmp372_;
3581 	self = (ValaGTypeModule*) base;
3582 	g_return_if_fail (cl != NULL);
3583 	_tmp0_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3584 	_tmp1_ = _tmp0_;
3585 	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp1_);
3586 	_vala_ccode_base_module_emit_context_unref0 (_tmp1_);
3587 	_tmp2_ = vala_code_node_get_source_reference ((ValaCodeNode*) cl);
3588 	_tmp3_ = _tmp2_;
3589 	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp3_);
3590 	_tmp4_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
3591 	_tmp5_ = _vala_ccode_node_ref0 (_tmp4_);
3592 	old_param_spec_struct = _tmp5_;
3593 	_tmp6_ = ((ValaCCodeBaseModule*) self)->prop_enum;
3594 	_tmp7_ = _vala_ccode_node_ref0 (_tmp6_);
3595 	old_prop_enum = _tmp7_;
3596 	_tmp8_ = ((ValaCCodeBaseModule*) self)->signal_enum;
3597 	_tmp9_ = _vala_ccode_node_ref0 (_tmp8_);
3598 	old_signal_enum = _tmp9_;
3599 	_tmp10_ = ((ValaCCodeBaseModule*) self)->class_init_context;
3600 	_tmp11_ = _vala_ccode_base_module_emit_context_ref0 (_tmp10_);
3601 	old_class_init_context = _tmp11_;
3602 	_tmp12_ = ((ValaCCodeBaseModule*) self)->base_init_context;
3603 	_tmp13_ = _vala_ccode_base_module_emit_context_ref0 (_tmp12_);
3604 	old_base_init_context = _tmp13_;
3605 	_tmp14_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
3606 	_tmp15_ = _vala_ccode_base_module_emit_context_ref0 (_tmp14_);
3607 	old_class_finalize_context = _tmp15_;
3608 	_tmp16_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
3609 	_tmp17_ = _vala_ccode_base_module_emit_context_ref0 (_tmp16_);
3610 	old_base_finalize_context = _tmp17_;
3611 	_tmp18_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
3612 	_tmp19_ = _vala_ccode_base_module_emit_context_ref0 (_tmp18_);
3613 	old_instance_init_context = _tmp19_;
3614 	_tmp20_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
3615 	_tmp21_ = _vala_ccode_base_module_emit_context_ref0 (_tmp20_);
3616 	old_instance_finalize_context = _tmp21_;
3617 	_tmp22_ = vala_class_get_is_compact (cl);
3618 	_tmp23_ = _tmp22_;
3619 	is_gtypeinstance = !_tmp23_;
3620 	if (is_gtypeinstance) {
3621 		ValaTypeSymbol* _tmp25_;
3622 		_tmp25_ = ((ValaCCodeBaseModule*) self)->gobject_type;
3623 		_tmp24_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, _tmp25_);
3624 	} else {
3625 		_tmp24_ = FALSE;
3626 	}
3627 	is_gobject = _tmp24_;
3628 	if (is_gtypeinstance) {
3629 		ValaClass* _tmp27_;
3630 		ValaClass* _tmp28_;
3631 		_tmp27_ = vala_class_get_base_class (cl);
3632 		_tmp28_ = _tmp27_;
3633 		_tmp26_ = _tmp28_ == NULL;
3634 	} else {
3635 		_tmp26_ = FALSE;
3636 	}
3637 	is_fundamental = _tmp26_;
3638 	_tmp29_ = vala_get_ccode_name ((ValaCodeNode*) cl);
3639 	_tmp30_ = _tmp29_;
3640 	_tmp31_ = strlen (_tmp30_);
3641 	_tmp32_ = _tmp31_;
3642 	_tmp33_ = _tmp32_ < 3;
3643 	_g_free0 (_tmp30_);
3644 	if (_tmp33_) {
3645 		ValaSourceReference* _tmp34_;
3646 		ValaSourceReference* _tmp35_;
3647 		gchar* _tmp36_;
3648 		gchar* _tmp37_;
3649 		gchar* _tmp38_;
3650 		gchar* _tmp39_;
3651 		vala_code_node_set_error ((ValaCodeNode*) cl, TRUE);
3652 		_tmp34_ = vala_code_node_get_source_reference ((ValaCodeNode*) cl);
3653 		_tmp35_ = _tmp34_;
3654 		_tmp36_ = vala_get_ccode_name ((ValaCodeNode*) cl);
3655 		_tmp37_ = _tmp36_;
3656 		_tmp38_ = g_strdup_printf ("Class name `%s' is too short", _tmp37_);
3657 		_tmp39_ = _tmp38_;
3658 		vala_report_error (_tmp35_, _tmp39_);
3659 		_g_free0 (_tmp39_);
3660 		_g_free0 (_tmp37_);
3661 		_vala_ccode_base_module_emit_context_unref0 (old_instance_finalize_context);
3662 		_vala_ccode_base_module_emit_context_unref0 (old_instance_init_context);
3663 		_vala_ccode_base_module_emit_context_unref0 (old_base_finalize_context);
3664 		_vala_ccode_base_module_emit_context_unref0 (old_class_finalize_context);
3665 		_vala_ccode_base_module_emit_context_unref0 (old_base_init_context);
3666 		_vala_ccode_base_module_emit_context_unref0 (old_class_init_context);
3667 		_vala_ccode_node_unref0 (old_signal_enum);
3668 		_vala_ccode_node_unref0 (old_prop_enum);
3669 		_vala_ccode_node_unref0 (old_param_spec_struct);
3670 		return;
3671 	}
3672 	_tmp40_ = vala_ccode_enum_new (NULL);
3673 	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->prop_enum);
3674 	((ValaCCodeBaseModule*) self)->prop_enum = _tmp40_;
3675 	_tmp41_ = ((ValaCCodeBaseModule*) self)->prop_enum;
3676 	_tmp42_ = vala_get_ccode_upper_case_name ((ValaSymbol*) cl, NULL);
3677 	_tmp43_ = _tmp42_;
3678 	_tmp44_ = g_strdup_printf ("%s_0_PROPERTY", _tmp43_);
3679 	_tmp45_ = _tmp44_;
3680 	_tmp46_ = vala_ccode_enum_value_new (_tmp45_, NULL);
3681 	_tmp47_ = _tmp46_;
3682 	vala_ccode_enum_add_value (_tmp41_, _tmp47_);
3683 	_vala_ccode_node_unref0 (_tmp47_);
3684 	_g_free0 (_tmp45_);
3685 	_g_free0 (_tmp43_);
3686 	_tmp48_ = vala_ccode_enum_new (NULL);
3687 	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
3688 	((ValaCCodeBaseModule*) self)->signal_enum = _tmp48_;
3689 	_tmp49_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3690 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_init_context);
3691 	((ValaCCodeBaseModule*) self)->class_init_context = _tmp49_;
3692 	_tmp50_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3693 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_init_context);
3694 	((ValaCCodeBaseModule*) self)->base_init_context = _tmp50_;
3695 	_tmp51_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3696 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
3697 	((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp51_;
3698 	_tmp52_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3699 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
3700 	((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp52_;
3701 	_tmp53_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3702 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
3703 	((ValaCCodeBaseModule*) self)->instance_init_context = _tmp53_;
3704 	_tmp54_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3705 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
3706 	((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp54_;
3707 	_tmp55_ = ((ValaCCodeBaseModule*) self)->cfile;
3708 	vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, cl, _tmp55_);
3709 	_tmp56_ = ((ValaCCodeBaseModule*) self)->cfile;
3710 	vala_gtype_module_generate_class_private_declaration (self, cl, _tmp56_);
3711 	_tmp57_ = vala_get_ccode_upper_case_name ((ValaSymbol*) cl, NULL);
3712 	_tmp58_ = _tmp57_;
3713 	_tmp59_ = g_strdup_printf ("%s_NUM_PROPERTIES", _tmp58_);
3714 	_tmp60_ = _tmp59_;
3715 	_g_free0 (_tmp58_);
3716 	last_prop = _tmp60_;
3717 	if (is_gobject) {
3718 		ValaCCodeFile* _tmp61_;
3719 		ValaCCodeEnum* _tmp62_;
3720 		ValaCCodeDeclaration* prop_array_decl = NULL;
3721 		ValaCCodeDeclaration* _tmp63_;
3722 		ValaCCodeDeclaration* _tmp64_;
3723 		ValaCCodeDeclaration* _tmp65_;
3724 		ValaCCodeModifiers _tmp66_;
3725 		ValaCCodeModifiers _tmp67_;
3726 		ValaCCodeDeclaration* _tmp68_;
3727 		gchar* _tmp69_;
3728 		gchar* _tmp70_;
3729 		gchar* _tmp71_;
3730 		gchar* _tmp72_;
3731 		const gchar* _tmp73_;
3732 		ValaCCodeIdentifier* _tmp74_;
3733 		ValaCCodeIdentifier* _tmp75_;
3734 		ValaCCodeDeclaratorSuffix* _tmp76_;
3735 		ValaCCodeDeclaratorSuffix* _tmp77_;
3736 		ValaCCodeVariableDeclarator* _tmp78_;
3737 		ValaCCodeVariableDeclarator* _tmp79_;
3738 		ValaCCodeFile* _tmp80_;
3739 		ValaCCodeDeclaration* _tmp81_;
3740 		_tmp61_ = ((ValaCCodeBaseModule*) self)->cfile;
3741 		_tmp62_ = ((ValaCCodeBaseModule*) self)->prop_enum;
3742 		vala_ccode_file_add_type_declaration (_tmp61_, (ValaCCodeNode*) _tmp62_);
3743 		_tmp63_ = vala_ccode_declaration_new ("GParamSpec*");
3744 		prop_array_decl = _tmp63_;
3745 		_tmp64_ = prop_array_decl;
3746 		_tmp65_ = prop_array_decl;
3747 		_tmp66_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp65_);
3748 		_tmp67_ = _tmp66_;
3749 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp65_, _tmp67_ | VALA_CCODE_MODIFIERS_STATIC);
3750 		_tmp68_ = prop_array_decl;
3751 		_tmp69_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
3752 		_tmp70_ = _tmp69_;
3753 		_tmp71_ = g_strdup_printf ("%s_properties", _tmp70_);
3754 		_tmp72_ = _tmp71_;
3755 		_tmp73_ = last_prop;
3756 		_tmp74_ = vala_ccode_identifier_new (_tmp73_);
3757 		_tmp75_ = _tmp74_;
3758 		_tmp76_ = vala_ccode_declarator_suffix_new_with_array ((ValaCCodeExpression*) _tmp75_);
3759 		_tmp77_ = _tmp76_;
3760 		_tmp78_ = vala_ccode_variable_declarator_new (_tmp72_, NULL, _tmp77_);
3761 		_tmp79_ = _tmp78_;
3762 		vala_ccode_declaration_add_declarator (_tmp68_, (ValaCCodeDeclarator*) _tmp79_);
3763 		_vala_ccode_node_unref0 (_tmp79_);
3764 		_vala_ccode_declarator_suffix_unref0 (_tmp77_);
3765 		_vala_ccode_node_unref0 (_tmp75_);
3766 		_g_free0 (_tmp72_);
3767 		_g_free0 (_tmp70_);
3768 		_tmp80_ = ((ValaCCodeBaseModule*) self)->cfile;
3769 		_tmp81_ = prop_array_decl;
3770 		vala_ccode_file_add_type_declaration (_tmp80_, (ValaCCodeNode*) _tmp81_);
3771 		_vala_ccode_node_unref0 (prop_array_decl);
3772 	}
3773 	if (!vala_symbol_is_internal_symbol ((ValaSymbol*) cl)) {
3774 		ValaCCodeFile* _tmp82_;
3775 		_tmp82_ = ((ValaCCodeBaseModule*) self)->header_file;
3776 		vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, cl, _tmp82_);
3777 	}
3778 	if (!vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
3779 		ValaCCodeFile* _tmp83_;
3780 		_tmp83_ = ((ValaCCodeBaseModule*) self)->internal_header_file;
3781 		vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, cl, _tmp83_);
3782 	}
3783 	if (is_gtypeinstance) {
3784 		vala_gtype_module_begin_base_init_function (self, cl);
3785 		vala_gtype_module_begin_class_init_function (self, cl);
3786 		vala_gtype_module_begin_instance_init_function (self, cl);
3787 		vala_gtype_module_begin_base_finalize_function (self, cl);
3788 		vala_gtype_module_begin_class_finalize_function (self, cl);
3789 		vala_gtype_module_begin_finalize_function (self, cl);
3790 	} else {
3791 		gboolean _tmp84_ = FALSE;
3792 		gboolean _tmp85_ = FALSE;
3793 		gboolean _tmp86_;
3794 		gboolean _tmp87_;
3795 		_tmp86_ = vala_class_get_is_compact (cl);
3796 		_tmp87_ = _tmp86_;
3797 		if (_tmp87_) {
3798 			_tmp85_ = TRUE;
3799 		} else {
3800 			ValaClass* _tmp88_;
3801 			ValaClass* _tmp89_;
3802 			_tmp88_ = vala_class_get_base_class (cl);
3803 			_tmp89_ = _tmp88_;
3804 			_tmp85_ = _tmp89_ == NULL;
3805 		}
3806 		if (_tmp85_) {
3807 			_tmp84_ = TRUE;
3808 		} else {
3809 			ValaClass* _tmp90_;
3810 			_tmp90_ = ((ValaCCodeBaseModule*) self)->gsource_type;
3811 			_tmp84_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp90_);
3812 		}
3813 		if (_tmp84_) {
3814 			vala_gtype_module_begin_instance_init_function (self, cl);
3815 			vala_gtype_module_begin_finalize_function (self, cl);
3816 		}
3817 	}
3818 	vala_code_node_accept_children ((ValaCodeNode*) cl, (ValaCodeVisitor*) self);
3819 	if (is_gtypeinstance) {
3820 		ValaList* _tmp137_;
3821 		gint _tmp138_;
3822 		gint _tmp139_;
3823 		ValaConstructor* _tmp171_;
3824 		ValaConstructor* _tmp172_;
3825 		ValaDestructor* _tmp173_;
3826 		ValaDestructor* _tmp174_;
3827 		ValaDestructor* _tmp175_;
3828 		ValaDestructor* _tmp176_;
3829 		gboolean _tmp192_ = FALSE;
3830 		gboolean _tmp193_;
3831 		gboolean _tmp194_;
3832 		ValaComment* _tmp202_;
3833 		ValaComment* _tmp203_;
3834 		ValaClassRegisterFunction* type_fun = NULL;
3835 		ValaClassRegisterFunction* _tmp211_;
3836 		ValaClassRegisterFunction* _tmp212_;
3837 		ValaCodeContext* _tmp213_;
3838 		ValaCodeContext* _tmp214_;
3839 		ValaCCodeFile* _tmp215_;
3840 		ValaClassRegisterFunction* _tmp216_;
3841 		ValaCCodeFragment* _tmp217_;
3842 		ValaCCodeFragment* _tmp218_;
3843 		ValaCCodeFile* _tmp219_;
3844 		ValaClassRegisterFunction* _tmp220_;
3845 		ValaCCodeFragment* _tmp221_;
3846 		ValaCCodeFragment* _tmp222_;
3847 		if (is_fundamental) {
3848 			ValaSymbol* _tmp91_;
3849 			ValaSymbol* _tmp92_;
3850 			gchar* _tmp93_;
3851 			gchar* _tmp94_;
3852 			const gchar* _tmp95_;
3853 			const gchar* _tmp96_;
3854 			gchar* _tmp97_;
3855 			gchar* _tmp98_;
3856 			ValaCCodeStruct* _tmp99_;
3857 			ValaCCodeStruct* _tmp100_;
3858 			ValaCCodeFile* _tmp101_;
3859 			ValaCCodeStruct* _tmp102_;
3860 			ValaCCodeFile* _tmp103_;
3861 			ValaCCodeStruct* _tmp104_;
3862 			const gchar* _tmp105_;
3863 			const gchar* _tmp106_;
3864 			gchar* _tmp107_;
3865 			gchar* _tmp108_;
3866 			ValaSymbol* _tmp109_;
3867 			ValaSymbol* _tmp110_;
3868 			gchar* _tmp111_;
3869 			gchar* _tmp112_;
3870 			const gchar* _tmp113_;
3871 			const gchar* _tmp114_;
3872 			gchar* _tmp115_;
3873 			gchar* _tmp116_;
3874 			ValaCCodeVariableDeclarator* _tmp117_;
3875 			ValaCCodeVariableDeclarator* _tmp118_;
3876 			ValaCCodeTypeDefinition* _tmp119_;
3877 			ValaCCodeTypeDefinition* _tmp120_;
3878 			ValaCCodeAssignment* ref_count = NULL;
3879 			ValaCCodeIdentifier* _tmp121_;
3880 			ValaCCodeIdentifier* _tmp122_;
3881 			ValaCCodeMemberAccess* _tmp123_;
3882 			ValaCCodeMemberAccess* _tmp124_;
3883 			ValaCCodeConstant* _tmp125_;
3884 			ValaCCodeConstant* _tmp126_;
3885 			ValaCCodeAssignment* _tmp127_;
3886 			ValaCCodeAssignment* _tmp128_;
3887 			ValaCCodeBaseModuleEmitContext* _tmp129_;
3888 			ValaCCodeFunction* _tmp130_;
3889 			ValaCCodeFunction* _tmp131_;
3890 			ValaCCodeAssignment* _tmp132_;
3891 			_tmp91_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cl);
3892 			_tmp92_ = _tmp91_;
3893 			_tmp93_ = vala_get_ccode_prefix (_tmp92_);
3894 			_tmp94_ = _tmp93_;
3895 			_tmp95_ = vala_symbol_get_name ((ValaSymbol*) cl);
3896 			_tmp96_ = _tmp95_;
3897 			_tmp97_ = g_strdup_printf ("_%sParamSpec%s", _tmp94_, _tmp96_);
3898 			_tmp98_ = _tmp97_;
3899 			_tmp99_ = vala_ccode_struct_new (_tmp98_);
3900 			_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
3901 			((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp99_;
3902 			_g_free0 (_tmp98_);
3903 			_g_free0 (_tmp94_);
3904 			_tmp100_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
3905 			vala_ccode_struct_add_field (_tmp100_, "GParamSpec", "parent_instance", 0, NULL);
3906 			_tmp101_ = ((ValaCCodeBaseModule*) self)->cfile;
3907 			_tmp102_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
3908 			vala_ccode_file_add_type_definition (_tmp101_, (ValaCCodeNode*) _tmp102_);
3909 			_tmp103_ = ((ValaCCodeBaseModule*) self)->cfile;
3910 			_tmp104_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
3911 			_tmp105_ = vala_ccode_struct_get_name (_tmp104_);
3912 			_tmp106_ = _tmp105_;
3913 			_tmp107_ = g_strdup_printf ("struct %s", _tmp106_);
3914 			_tmp108_ = _tmp107_;
3915 			_tmp109_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cl);
3916 			_tmp110_ = _tmp109_;
3917 			_tmp111_ = vala_get_ccode_prefix (_tmp110_);
3918 			_tmp112_ = _tmp111_;
3919 			_tmp113_ = vala_symbol_get_name ((ValaSymbol*) cl);
3920 			_tmp114_ = _tmp113_;
3921 			_tmp115_ = g_strdup_printf ("%sParamSpec%s", _tmp112_, _tmp114_);
3922 			_tmp116_ = _tmp115_;
3923 			_tmp117_ = vala_ccode_variable_declarator_new (_tmp116_, NULL, NULL);
3924 			_tmp118_ = _tmp117_;
3925 			_tmp119_ = vala_ccode_type_definition_new (_tmp108_, (ValaCCodeDeclarator*) _tmp118_);
3926 			_tmp120_ = _tmp119_;
3927 			vala_ccode_file_add_type_declaration (_tmp103_, (ValaCCodeNode*) _tmp120_);
3928 			_vala_ccode_node_unref0 (_tmp120_);
3929 			_vala_ccode_node_unref0 (_tmp118_);
3930 			_g_free0 (_tmp116_);
3931 			_g_free0 (_tmp112_);
3932 			_g_free0 (_tmp108_);
3933 			vala_gtype_module_add_type_value_table_init_function (self, cl);
3934 			vala_gtype_module_add_type_value_table_free_function (self, cl);
3935 			vala_gtype_module_add_type_value_table_copy_function (self, cl);
3936 			vala_gtype_module_add_type_value_table_peek_pointer_function (self, cl);
3937 			vala_gtype_module_add_type_value_table_collect_value_function (self, cl);
3938 			vala_gtype_module_add_type_value_table_lcopy_value_function (self, cl);
3939 			vala_gtype_module_add_g_param_spec_type_function (self, cl);
3940 			vala_gtype_module_add_g_value_get_function (self, cl);
3941 			vala_gtype_module_add_g_value_set_function (self, cl);
3942 			vala_gtype_module_add_g_value_take_function (self, cl);
3943 			_tmp121_ = vala_ccode_identifier_new ("self");
3944 			_tmp122_ = _tmp121_;
3945 			_tmp123_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp122_, "ref_count");
3946 			_tmp124_ = _tmp123_;
3947 			_tmp125_ = vala_ccode_constant_new ("1");
3948 			_tmp126_ = _tmp125_;
3949 			_tmp127_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp124_, (ValaCCodeExpression*) _tmp126_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
3950 			_tmp128_ = _tmp127_;
3951 			_vala_ccode_node_unref0 (_tmp126_);
3952 			_vala_ccode_node_unref0 (_tmp124_);
3953 			_vala_ccode_node_unref0 (_tmp122_);
3954 			ref_count = _tmp128_;
3955 			_tmp129_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
3956 			vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp129_);
3957 			_tmp130_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3958 			_tmp131_ = _tmp130_;
3959 			_tmp132_ = ref_count;
3960 			vala_ccode_function_add_expression (_tmp131_, (ValaCCodeExpression*) _tmp132_);
3961 			vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
3962 			_vala_ccode_node_unref0 (ref_count);
3963 		}
3964 		if (is_gobject) {
3965 			ValaCCodeEnum* _tmp133_;
3966 			const gchar* _tmp134_;
3967 			ValaCCodeEnumValue* _tmp135_;
3968 			ValaCCodeEnumValue* _tmp136_;
3969 			_tmp133_ = ((ValaCCodeBaseModule*) self)->prop_enum;
3970 			_tmp134_ = last_prop;
3971 			_tmp135_ = vala_ccode_enum_value_new (_tmp134_, NULL);
3972 			_tmp136_ = _tmp135_;
3973 			vala_ccode_enum_add_value (_tmp133_, _tmp136_);
3974 			_vala_ccode_node_unref0 (_tmp136_);
3975 		}
3976 		_tmp137_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) cl);
3977 		_tmp138_ = vala_collection_get_size ((ValaCollection*) _tmp137_);
3978 		_tmp139_ = _tmp138_;
3979 		if (_tmp139_ > 0) {
3980 			gchar* last_signal = NULL;
3981 			gchar* _tmp140_;
3982 			gchar* _tmp141_;
3983 			gchar* _tmp142_;
3984 			gchar* _tmp143_;
3985 			ValaCCodeEnum* _tmp144_;
3986 			const gchar* _tmp145_;
3987 			ValaCCodeEnumValue* _tmp146_;
3988 			ValaCCodeEnumValue* _tmp147_;
3989 			ValaCCodeFile* _tmp148_;
3990 			ValaCCodeEnum* _tmp149_;
3991 			ValaCCodeDeclaration* signal_array_decl = NULL;
3992 			ValaCCodeDeclaration* _tmp150_;
3993 			ValaCCodeDeclaration* _tmp151_;
3994 			ValaCCodeDeclaration* _tmp152_;
3995 			ValaCCodeModifiers _tmp153_;
3996 			ValaCCodeModifiers _tmp154_;
3997 			ValaCCodeDeclaration* _tmp155_;
3998 			gchar* _tmp156_;
3999 			gchar* _tmp157_;
4000 			gchar* _tmp158_;
4001 			gchar* _tmp159_;
4002 			ValaCCodeConstant* _tmp160_;
4003 			ValaCCodeConstant* _tmp161_;
4004 			const gchar* _tmp162_;
4005 			ValaCCodeIdentifier* _tmp163_;
4006 			ValaCCodeIdentifier* _tmp164_;
4007 			ValaCCodeDeclaratorSuffix* _tmp165_;
4008 			ValaCCodeDeclaratorSuffix* _tmp166_;
4009 			ValaCCodeVariableDeclarator* _tmp167_;
4010 			ValaCCodeVariableDeclarator* _tmp168_;
4011 			ValaCCodeFile* _tmp169_;
4012 			ValaCCodeDeclaration* _tmp170_;
4013 			_tmp140_ = vala_get_ccode_upper_case_name ((ValaSymbol*) cl, NULL);
4014 			_tmp141_ = _tmp140_;
4015 			_tmp142_ = g_strdup_printf ("%s_NUM_SIGNALS", _tmp141_);
4016 			_tmp143_ = _tmp142_;
4017 			_g_free0 (_tmp141_);
4018 			last_signal = _tmp143_;
4019 			_tmp144_ = ((ValaCCodeBaseModule*) self)->signal_enum;
4020 			_tmp145_ = last_signal;
4021 			_tmp146_ = vala_ccode_enum_value_new (_tmp145_, NULL);
4022 			_tmp147_ = _tmp146_;
4023 			vala_ccode_enum_add_value (_tmp144_, _tmp147_);
4024 			_vala_ccode_node_unref0 (_tmp147_);
4025 			_tmp148_ = ((ValaCCodeBaseModule*) self)->cfile;
4026 			_tmp149_ = ((ValaCCodeBaseModule*) self)->signal_enum;
4027 			vala_ccode_file_add_type_declaration (_tmp148_, (ValaCCodeNode*) _tmp149_);
4028 			_tmp150_ = vala_ccode_declaration_new ("guint");
4029 			signal_array_decl = _tmp150_;
4030 			_tmp151_ = signal_array_decl;
4031 			_tmp152_ = signal_array_decl;
4032 			_tmp153_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp152_);
4033 			_tmp154_ = _tmp153_;
4034 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp152_, _tmp154_ | VALA_CCODE_MODIFIERS_STATIC);
4035 			_tmp155_ = signal_array_decl;
4036 			_tmp156_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
4037 			_tmp157_ = _tmp156_;
4038 			_tmp158_ = g_strdup_printf ("%s_signals", _tmp157_);
4039 			_tmp159_ = _tmp158_;
4040 			_tmp160_ = vala_ccode_constant_new ("{0}");
4041 			_tmp161_ = _tmp160_;
4042 			_tmp162_ = last_signal;
4043 			_tmp163_ = vala_ccode_identifier_new (_tmp162_);
4044 			_tmp164_ = _tmp163_;
4045 			_tmp165_ = vala_ccode_declarator_suffix_new_with_array ((ValaCCodeExpression*) _tmp164_);
4046 			_tmp166_ = _tmp165_;
4047 			_tmp167_ = vala_ccode_variable_declarator_new (_tmp159_, (ValaCCodeExpression*) _tmp161_, _tmp166_);
4048 			_tmp168_ = _tmp167_;
4049 			vala_ccode_declaration_add_declarator (_tmp155_, (ValaCCodeDeclarator*) _tmp168_);
4050 			_vala_ccode_node_unref0 (_tmp168_);
4051 			_vala_ccode_declarator_suffix_unref0 (_tmp166_);
4052 			_vala_ccode_node_unref0 (_tmp164_);
4053 			_vala_ccode_node_unref0 (_tmp161_);
4054 			_g_free0 (_tmp159_);
4055 			_g_free0 (_tmp157_);
4056 			_tmp169_ = ((ValaCCodeBaseModule*) self)->cfile;
4057 			_tmp170_ = signal_array_decl;
4058 			vala_ccode_file_add_type_declaration (_tmp169_, (ValaCCodeNode*) _tmp170_);
4059 			_vala_ccode_node_unref0 (signal_array_decl);
4060 			_g_free0 (last_signal);
4061 		}
4062 		_tmp171_ = vala_class_get_class_constructor (cl);
4063 		_tmp172_ = _tmp171_;
4064 		if (_tmp172_ != NULL) {
4065 			vala_gtype_module_add_base_init_function (self, cl);
4066 		}
4067 		vala_gtype_module_add_class_init_function (self, cl);
4068 		_tmp173_ = vala_class_get_class_destructor (cl);
4069 		_tmp174_ = _tmp173_;
4070 		if (_tmp174_ != NULL) {
4071 			vala_gtype_module_add_base_finalize_function (self, cl);
4072 		}
4073 		_tmp175_ = vala_class_get_static_destructor (cl);
4074 		_tmp176_ = _tmp175_;
4075 		if (_tmp176_ != NULL) {
4076 			vala_gtype_module_add_class_finalize_function (self, cl);
4077 		}
4078 		{
4079 			ValaList* _base_type_list = NULL;
4080 			ValaList* _tmp177_;
4081 			ValaList* _tmp178_;
4082 			gint _base_type_size = 0;
4083 			ValaList* _tmp179_;
4084 			gint _tmp180_;
4085 			gint _tmp181_;
4086 			gint _base_type_index = 0;
4087 			_tmp177_ = vala_class_get_base_types (cl);
4088 			_tmp178_ = _vala_iterable_ref0 (_tmp177_);
4089 			_base_type_list = _tmp178_;
4090 			_tmp179_ = _base_type_list;
4091 			_tmp180_ = vala_collection_get_size ((ValaCollection*) _tmp179_);
4092 			_tmp181_ = _tmp180_;
4093 			_base_type_size = _tmp181_;
4094 			_base_type_index = -1;
4095 			while (TRUE) {
4096 				gint _tmp182_;
4097 				gint _tmp183_;
4098 				ValaDataType* base_type = NULL;
4099 				ValaList* _tmp184_;
4100 				gpointer _tmp185_;
4101 				ValaDataType* _tmp186_;
4102 				ValaTypeSymbol* _tmp187_;
4103 				ValaTypeSymbol* _tmp188_;
4104 				_base_type_index = _base_type_index + 1;
4105 				_tmp182_ = _base_type_index;
4106 				_tmp183_ = _base_type_size;
4107 				if (!(_tmp182_ < _tmp183_)) {
4108 					break;
4109 				}
4110 				_tmp184_ = _base_type_list;
4111 				_tmp185_ = vala_list_get (_tmp184_, _base_type_index);
4112 				base_type = (ValaDataType*) _tmp185_;
4113 				_tmp186_ = base_type;
4114 				_tmp187_ = vala_data_type_get_type_symbol (_tmp186_);
4115 				_tmp188_ = _tmp187_;
4116 				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp188_, VALA_TYPE_INTERFACE)) {
4117 					ValaDataType* _tmp189_;
4118 					ValaTypeSymbol* _tmp190_;
4119 					ValaTypeSymbol* _tmp191_;
4120 					_tmp189_ = base_type;
4121 					_tmp190_ = vala_data_type_get_type_symbol (_tmp189_);
4122 					_tmp191_ = _tmp190_;
4123 					vala_gtype_module_add_interface_init_function (self, cl, G_TYPE_CHECK_INSTANCE_CAST (_tmp191_, VALA_TYPE_INTERFACE, ValaInterface));
4124 				}
4125 				_vala_code_node_unref0 (base_type);
4126 			}
4127 			_vala_iterable_unref0 (_base_type_list);
4128 		}
4129 		vala_gtype_module_add_instance_init_function (self, cl);
4130 		_tmp193_ = vala_class_get_is_compact (cl);
4131 		_tmp194_ = _tmp193_;
4132 		if (!_tmp194_) {
4133 			gboolean _tmp195_ = FALSE;
4134 			gboolean _tmp196_ = FALSE;
4135 			ValaList* _tmp197_;
4136 			gint _tmp198_;
4137 			gint _tmp199_;
4138 			_tmp197_ = vala_object_type_symbol_get_fields ((ValaObjectTypeSymbol*) cl);
4139 			_tmp198_ = vala_collection_get_size ((ValaCollection*) _tmp197_);
4140 			_tmp199_ = _tmp198_;
4141 			if (_tmp199_ > 0) {
4142 				_tmp196_ = TRUE;
4143 			} else {
4144 				ValaDestructor* _tmp200_;
4145 				ValaDestructor* _tmp201_;
4146 				_tmp200_ = vala_class_get_destructor (cl);
4147 				_tmp201_ = _tmp200_;
4148 				_tmp196_ = _tmp201_ != NULL;
4149 			}
4150 			if (_tmp196_) {
4151 				_tmp195_ = TRUE;
4152 			} else {
4153 				_tmp195_ = vala_class_is_fundamental (cl);
4154 			}
4155 			_tmp192_ = _tmp195_;
4156 		} else {
4157 			_tmp192_ = FALSE;
4158 		}
4159 		if (_tmp192_) {
4160 			vala_gtype_module_add_finalize_function (self, cl);
4161 		}
4162 		_tmp202_ = vala_symbol_get_comment ((ValaSymbol*) cl);
4163 		_tmp203_ = _tmp202_;
4164 		if (_tmp203_ != NULL) {
4165 			ValaCCodeFile* _tmp204_;
4166 			ValaComment* _tmp205_;
4167 			ValaComment* _tmp206_;
4168 			const gchar* _tmp207_;
4169 			const gchar* _tmp208_;
4170 			ValaCCodeComment* _tmp209_;
4171 			ValaCCodeComment* _tmp210_;
4172 			_tmp204_ = ((ValaCCodeBaseModule*) self)->cfile;
4173 			_tmp205_ = vala_symbol_get_comment ((ValaSymbol*) cl);
4174 			_tmp206_ = _tmp205_;
4175 			_tmp207_ = vala_comment_get_content (_tmp206_);
4176 			_tmp208_ = _tmp207_;
4177 			_tmp209_ = vala_ccode_comment_new (_tmp208_);
4178 			_tmp210_ = _tmp209_;
4179 			vala_ccode_file_add_type_member_definition (_tmp204_, (ValaCCodeNode*) _tmp210_);
4180 			_vala_ccode_node_unref0 (_tmp210_);
4181 		}
4182 		_tmp211_ = vala_class_register_function_new (cl);
4183 		type_fun = _tmp211_;
4184 		_tmp212_ = type_fun;
4185 		_tmp213_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
4186 		_tmp214_ = _tmp213_;
4187 		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp212_, _tmp214_, ((ValaCCodeBaseModule*) self)->in_plugin, FALSE);
4188 		_tmp215_ = ((ValaCCodeBaseModule*) self)->cfile;
4189 		_tmp216_ = type_fun;
4190 		_tmp217_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) _tmp216_);
4191 		_tmp218_ = _tmp217_;
4192 		vala_ccode_file_add_type_member_declaration (_tmp215_, (ValaCCodeNode*) _tmp218_);
4193 		_vala_ccode_node_unref0 (_tmp218_);
4194 		_tmp219_ = ((ValaCCodeBaseModule*) self)->cfile;
4195 		_tmp220_ = type_fun;
4196 		_tmp221_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp220_);
4197 		_tmp222_ = _tmp221_;
4198 		vala_ccode_file_add_type_member_definition (_tmp219_, (ValaCCodeNode*) _tmp222_);
4199 		_vala_ccode_node_unref0 (_tmp222_);
4200 		if (is_fundamental) {
4201 			ValaCCodeMemberAccess* ref_count = NULL;
4202 			ValaCCodeIdentifier* _tmp223_;
4203 			ValaCCodeIdentifier* _tmp224_;
4204 			ValaCCodeMemberAccess* _tmp225_;
4205 			ValaCCodeMemberAccess* _tmp226_;
4206 			ValaCCodeFunction* ref_fun = NULL;
4207 			gchar* _tmp227_;
4208 			gchar* _tmp228_;
4209 			ValaCCodeFunction* _tmp229_;
4210 			ValaCCodeFunction* _tmp230_;
4211 			ValaCCodeFunction* _tmp231_;
4212 			ValaCCodeParameter* _tmp232_;
4213 			ValaCCodeParameter* _tmp233_;
4214 			ValaCCodeFunction* _tmp241_;
4215 			ValaCCodeFunction* _tmp242_;
4216 			ValaCCodeFunction* _tmp243_;
4217 			gchar* _tmp244_;
4218 			gchar* _tmp245_;
4219 			gchar* _tmp246_;
4220 			gchar* _tmp247_;
4221 			ValaCCodeIdentifier* _tmp248_;
4222 			ValaCCodeIdentifier* _tmp249_;
4223 			ValaCCodeVariableDeclarator* _tmp250_;
4224 			ValaCCodeVariableDeclarator* _tmp251_;
4225 			ValaCCodeFunctionCall* ccall = NULL;
4226 			ValaCCodeIdentifier* _tmp252_;
4227 			ValaCCodeIdentifier* _tmp253_;
4228 			ValaCCodeFunctionCall* _tmp254_;
4229 			ValaCCodeFunctionCall* _tmp255_;
4230 			ValaCCodeFunctionCall* _tmp256_;
4231 			ValaCCodeMemberAccess* _tmp257_;
4232 			ValaCCodeUnaryExpression* _tmp258_;
4233 			ValaCCodeUnaryExpression* _tmp259_;
4234 			ValaCCodeFunction* _tmp260_;
4235 			ValaCCodeFunction* _tmp261_;
4236 			ValaCCodeFunctionCall* _tmp262_;
4237 			ValaCCodeFunction* _tmp263_;
4238 			ValaCCodeFunction* _tmp264_;
4239 			ValaCCodeIdentifier* _tmp265_;
4240 			ValaCCodeIdentifier* _tmp266_;
4241 			ValaCCodeFile* _tmp267_;
4242 			ValaCCodeFunction* _tmp268_;
4243 			ValaCCodeFunction* unref_fun = NULL;
4244 			gchar* _tmp269_;
4245 			gchar* _tmp270_;
4246 			ValaCCodeFunction* _tmp271_;
4247 			ValaCCodeFunction* _tmp272_;
4248 			ValaCCodeFunction* _tmp273_;
4249 			ValaCCodeParameter* _tmp274_;
4250 			ValaCCodeParameter* _tmp275_;
4251 			ValaCCodeFunction* _tmp283_;
4252 			ValaCCodeFunction* _tmp284_;
4253 			ValaCCodeFunction* _tmp285_;
4254 			gchar* _tmp286_;
4255 			gchar* _tmp287_;
4256 			gchar* _tmp288_;
4257 			gchar* _tmp289_;
4258 			ValaCCodeIdentifier* _tmp290_;
4259 			ValaCCodeIdentifier* _tmp291_;
4260 			ValaCCodeVariableDeclarator* _tmp292_;
4261 			ValaCCodeVariableDeclarator* _tmp293_;
4262 			ValaCCodeIdentifier* _tmp294_;
4263 			ValaCCodeIdentifier* _tmp295_;
4264 			ValaCCodeFunctionCall* _tmp296_;
4265 			ValaCCodeFunctionCall* _tmp297_;
4266 			ValaCCodeMemberAccess* _tmp298_;
4267 			ValaCCodeUnaryExpression* _tmp299_;
4268 			ValaCCodeUnaryExpression* _tmp300_;
4269 			ValaCCodeFunction* _tmp301_;
4270 			ValaCCodeFunction* _tmp302_;
4271 			ValaCCodeFunctionCall* _tmp303_;
4272 			ValaCCodeFunctionCall* get_class = NULL;
4273 			gchar* _tmp304_;
4274 			gchar* _tmp305_;
4275 			ValaCCodeIdentifier* _tmp306_;
4276 			ValaCCodeIdentifier* _tmp307_;
4277 			ValaCCodeFunctionCall* _tmp308_;
4278 			ValaCCodeFunctionCall* _tmp309_;
4279 			ValaCCodeFunctionCall* _tmp310_;
4280 			ValaCCodeIdentifier* _tmp311_;
4281 			ValaCCodeIdentifier* _tmp312_;
4282 			ValaCCodeFunctionCall* ccast = NULL;
4283 			gchar* _tmp313_;
4284 			gchar* _tmp314_;
4285 			ValaCCodeIdentifier* _tmp315_;
4286 			ValaCCodeIdentifier* _tmp316_;
4287 			ValaCCodeFunctionCall* _tmp317_;
4288 			ValaCCodeFunctionCall* _tmp318_;
4289 			ValaCCodeFunctionCall* _tmp319_;
4290 			ValaCCodeIdentifier* _tmp320_;
4291 			ValaCCodeIdentifier* _tmp321_;
4292 			ValaCCodeFunctionCall* _tmp322_;
4293 			ValaCCodeMemberAccess* _tmp323_;
4294 			ValaCCodeMemberAccess* _tmp324_;
4295 			ValaCCodeFunctionCall* _tmp325_;
4296 			ValaCCodeFunctionCall* _tmp326_;
4297 			ValaCCodeIdentifier* _tmp327_;
4298 			ValaCCodeIdentifier* _tmp328_;
4299 			ValaCCodeFunction* _tmp329_;
4300 			ValaCCodeFunction* _tmp330_;
4301 			ValaCCodeFunctionCall* _tmp331_;
4302 			ValaCCodeFunctionCall* free = NULL;
4303 			ValaCCodeIdentifier* _tmp332_;
4304 			ValaCCodeIdentifier* _tmp333_;
4305 			ValaCCodeFunctionCall* _tmp334_;
4306 			ValaCCodeFunctionCall* _tmp335_;
4307 			ValaCCodeFunctionCall* _tmp336_;
4308 			ValaCCodeIdentifier* _tmp337_;
4309 			ValaCCodeIdentifier* _tmp338_;
4310 			ValaCCodeCastExpression* _tmp339_;
4311 			ValaCCodeCastExpression* _tmp340_;
4312 			ValaCCodeFunction* _tmp341_;
4313 			ValaCCodeFunction* _tmp342_;
4314 			ValaCCodeFunctionCall* _tmp343_;
4315 			ValaCCodeFunction* _tmp344_;
4316 			ValaCCodeFunction* _tmp345_;
4317 			ValaCCodeFile* _tmp346_;
4318 			ValaCCodeFunction* _tmp347_;
4319 			_tmp223_ = vala_ccode_identifier_new ("self");
4320 			_tmp224_ = _tmp223_;
4321 			_tmp225_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp224_, "ref_count");
4322 			_tmp226_ = _tmp225_;
4323 			_vala_ccode_node_unref0 (_tmp224_);
4324 			ref_count = _tmp226_;
4325 			_tmp227_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
4326 			_tmp228_ = _tmp227_;
4327 			_tmp229_ = vala_ccode_function_new (_tmp228_, "gpointer");
4328 			_tmp230_ = _tmp229_;
4329 			_g_free0 (_tmp228_);
4330 			ref_fun = _tmp230_;
4331 			_tmp231_ = ref_fun;
4332 			_tmp232_ = vala_ccode_parameter_new ("instance", "gpointer");
4333 			_tmp233_ = _tmp232_;
4334 			vala_ccode_function_add_parameter (_tmp231_, _tmp233_);
4335 			_vala_ccode_node_unref0 (_tmp233_);
4336 			if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
4337 				ValaCCodeFunction* _tmp234_;
4338 				_tmp234_ = ref_fun;
4339 				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp234_, VALA_CCODE_MODIFIERS_STATIC);
4340 			} else {
4341 				gboolean _tmp235_ = FALSE;
4342 				ValaCodeContext* _tmp236_;
4343 				ValaCodeContext* _tmp237_;
4344 				gboolean _tmp238_;
4345 				gboolean _tmp239_;
4346 				_tmp236_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
4347 				_tmp237_ = _tmp236_;
4348 				_tmp238_ = vala_code_context_get_hide_internal (_tmp237_);
4349 				_tmp239_ = _tmp238_;
4350 				if (_tmp239_) {
4351 					_tmp235_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
4352 				} else {
4353 					_tmp235_ = FALSE;
4354 				}
4355 				if (_tmp235_) {
4356 					ValaCCodeFunction* _tmp240_;
4357 					_tmp240_ = ref_fun;
4358 					vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp240_, VALA_CCODE_MODIFIERS_INTERNAL);
4359 				}
4360 			}
4361 			_tmp241_ = ref_fun;
4362 			vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp241_);
4363 			_tmp242_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4364 			_tmp243_ = _tmp242_;
4365 			_tmp244_ = vala_get_ccode_name ((ValaCodeNode*) cl);
4366 			_tmp245_ = _tmp244_;
4367 			_tmp246_ = g_strdup_printf ("%s *", _tmp245_);
4368 			_tmp247_ = _tmp246_;
4369 			_tmp248_ = vala_ccode_identifier_new ("instance");
4370 			_tmp249_ = _tmp248_;
4371 			_tmp250_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp249_, NULL);
4372 			_tmp251_ = _tmp250_;
4373 			vala_ccode_function_add_declaration (_tmp243_, _tmp247_, (ValaCCodeDeclarator*) _tmp251_, 0);
4374 			_vala_ccode_node_unref0 (_tmp251_);
4375 			_vala_ccode_node_unref0 (_tmp249_);
4376 			_g_free0 (_tmp247_);
4377 			_g_free0 (_tmp245_);
4378 			_tmp252_ = vala_ccode_identifier_new ("g_atomic_int_inc");
4379 			_tmp253_ = _tmp252_;
4380 			_tmp254_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp253_);
4381 			_tmp255_ = _tmp254_;
4382 			_vala_ccode_node_unref0 (_tmp253_);
4383 			ccall = _tmp255_;
4384 			_tmp256_ = ccall;
4385 			_tmp257_ = ref_count;
4386 			_tmp258_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp257_);
4387 			_tmp259_ = _tmp258_;
4388 			vala_ccode_function_call_add_argument (_tmp256_, (ValaCCodeExpression*) _tmp259_);
4389 			_vala_ccode_node_unref0 (_tmp259_);
4390 			_tmp260_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4391 			_tmp261_ = _tmp260_;
4392 			_tmp262_ = ccall;
4393 			vala_ccode_function_add_expression (_tmp261_, (ValaCCodeExpression*) _tmp262_);
4394 			_tmp263_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4395 			_tmp264_ = _tmp263_;
4396 			_tmp265_ = vala_ccode_identifier_new ("instance");
4397 			_tmp266_ = _tmp265_;
4398 			vala_ccode_function_add_return (_tmp264_, (ValaCCodeExpression*) _tmp266_);
4399 			_vala_ccode_node_unref0 (_tmp266_);
4400 			vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4401 			_tmp267_ = ((ValaCCodeBaseModule*) self)->cfile;
4402 			_tmp268_ = ref_fun;
4403 			vala_ccode_file_add_function (_tmp267_, _tmp268_);
4404 			_tmp269_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) cl);
4405 			_tmp270_ = _tmp269_;
4406 			_tmp271_ = vala_ccode_function_new (_tmp270_, "void");
4407 			_tmp272_ = _tmp271_;
4408 			_g_free0 (_tmp270_);
4409 			unref_fun = _tmp272_;
4410 			_tmp273_ = unref_fun;
4411 			_tmp274_ = vala_ccode_parameter_new ("instance", "gpointer");
4412 			_tmp275_ = _tmp274_;
4413 			vala_ccode_function_add_parameter (_tmp273_, _tmp275_);
4414 			_vala_ccode_node_unref0 (_tmp275_);
4415 			if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
4416 				ValaCCodeFunction* _tmp276_;
4417 				_tmp276_ = unref_fun;
4418 				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp276_, VALA_CCODE_MODIFIERS_STATIC);
4419 			} else {
4420 				gboolean _tmp277_ = FALSE;
4421 				ValaCodeContext* _tmp278_;
4422 				ValaCodeContext* _tmp279_;
4423 				gboolean _tmp280_;
4424 				gboolean _tmp281_;
4425 				_tmp278_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
4426 				_tmp279_ = _tmp278_;
4427 				_tmp280_ = vala_code_context_get_hide_internal (_tmp279_);
4428 				_tmp281_ = _tmp280_;
4429 				if (_tmp281_) {
4430 					_tmp277_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
4431 				} else {
4432 					_tmp277_ = FALSE;
4433 				}
4434 				if (_tmp277_) {
4435 					ValaCCodeFunction* _tmp282_;
4436 					_tmp282_ = unref_fun;
4437 					vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp282_, VALA_CCODE_MODIFIERS_INTERNAL);
4438 				}
4439 			}
4440 			_tmp283_ = unref_fun;
4441 			vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp283_);
4442 			_tmp284_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4443 			_tmp285_ = _tmp284_;
4444 			_tmp286_ = vala_get_ccode_name ((ValaCodeNode*) cl);
4445 			_tmp287_ = _tmp286_;
4446 			_tmp288_ = g_strdup_printf ("%s *", _tmp287_);
4447 			_tmp289_ = _tmp288_;
4448 			_tmp290_ = vala_ccode_identifier_new ("instance");
4449 			_tmp291_ = _tmp290_;
4450 			_tmp292_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp291_, NULL);
4451 			_tmp293_ = _tmp292_;
4452 			vala_ccode_function_add_declaration (_tmp285_, _tmp289_, (ValaCCodeDeclarator*) _tmp293_, 0);
4453 			_vala_ccode_node_unref0 (_tmp293_);
4454 			_vala_ccode_node_unref0 (_tmp291_);
4455 			_g_free0 (_tmp289_);
4456 			_g_free0 (_tmp287_);
4457 			_tmp294_ = vala_ccode_identifier_new ("g_atomic_int_dec_and_test");
4458 			_tmp295_ = _tmp294_;
4459 			_tmp296_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp295_);
4460 			_vala_ccode_node_unref0 (ccall);
4461 			ccall = _tmp296_;
4462 			_vala_ccode_node_unref0 (_tmp295_);
4463 			_tmp297_ = ccall;
4464 			_tmp298_ = ref_count;
4465 			_tmp299_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp298_);
4466 			_tmp300_ = _tmp299_;
4467 			vala_ccode_function_call_add_argument (_tmp297_, (ValaCCodeExpression*) _tmp300_);
4468 			_vala_ccode_node_unref0 (_tmp300_);
4469 			_tmp301_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4470 			_tmp302_ = _tmp301_;
4471 			_tmp303_ = ccall;
4472 			vala_ccode_function_open_if (_tmp302_, (ValaCCodeExpression*) _tmp303_);
4473 			_tmp304_ = vala_get_ccode_type_get_function ((ValaObjectTypeSymbol*) cl);
4474 			_tmp305_ = _tmp304_;
4475 			_tmp306_ = vala_ccode_identifier_new (_tmp305_);
4476 			_tmp307_ = _tmp306_;
4477 			_tmp308_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp307_);
4478 			_tmp309_ = _tmp308_;
4479 			_vala_ccode_node_unref0 (_tmp307_);
4480 			_g_free0 (_tmp305_);
4481 			get_class = _tmp309_;
4482 			_tmp310_ = get_class;
4483 			_tmp311_ = vala_ccode_identifier_new ("self");
4484 			_tmp312_ = _tmp311_;
4485 			vala_ccode_function_call_add_argument (_tmp310_, (ValaCCodeExpression*) _tmp312_);
4486 			_vala_ccode_node_unref0 (_tmp312_);
4487 			_tmp313_ = vala_get_ccode_type_get_function ((ValaObjectTypeSymbol*) cl);
4488 			_tmp314_ = _tmp313_;
4489 			_tmp315_ = vala_ccode_identifier_new (_tmp314_);
4490 			_tmp316_ = _tmp315_;
4491 			_tmp317_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp316_);
4492 			_tmp318_ = _tmp317_;
4493 			_vala_ccode_node_unref0 (_tmp316_);
4494 			_g_free0 (_tmp314_);
4495 			ccast = _tmp318_;
4496 			_tmp319_ = ccast;
4497 			_tmp320_ = vala_ccode_identifier_new ("self");
4498 			_tmp321_ = _tmp320_;
4499 			vala_ccode_function_call_add_argument (_tmp319_, (ValaCCodeExpression*) _tmp321_);
4500 			_vala_ccode_node_unref0 (_tmp321_);
4501 			_tmp322_ = ccast;
4502 			_tmp323_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp322_, "finalize");
4503 			_tmp324_ = _tmp323_;
4504 			_tmp325_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp324_);
4505 			_vala_ccode_node_unref0 (ccall);
4506 			ccall = _tmp325_;
4507 			_vala_ccode_node_unref0 (_tmp324_);
4508 			_tmp326_ = ccall;
4509 			_tmp327_ = vala_ccode_identifier_new ("self");
4510 			_tmp328_ = _tmp327_;
4511 			vala_ccode_function_call_add_argument (_tmp326_, (ValaCCodeExpression*) _tmp328_);
4512 			_vala_ccode_node_unref0 (_tmp328_);
4513 			_tmp329_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4514 			_tmp330_ = _tmp329_;
4515 			_tmp331_ = ccall;
4516 			vala_ccode_function_add_expression (_tmp330_, (ValaCCodeExpression*) _tmp331_);
4517 			_tmp332_ = vala_ccode_identifier_new ("g_type_free_instance");
4518 			_tmp333_ = _tmp332_;
4519 			_tmp334_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp333_);
4520 			_tmp335_ = _tmp334_;
4521 			_vala_ccode_node_unref0 (_tmp333_);
4522 			free = _tmp335_;
4523 			_tmp336_ = free;
4524 			_tmp337_ = vala_ccode_identifier_new ("self");
4525 			_tmp338_ = _tmp337_;
4526 			_tmp339_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp338_, "GTypeInstance *");
4527 			_tmp340_ = _tmp339_;
4528 			vala_ccode_function_call_add_argument (_tmp336_, (ValaCCodeExpression*) _tmp340_);
4529 			_vala_ccode_node_unref0 (_tmp340_);
4530 			_vala_ccode_node_unref0 (_tmp338_);
4531 			_tmp341_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4532 			_tmp342_ = _tmp341_;
4533 			_tmp343_ = free;
4534 			vala_ccode_function_add_expression (_tmp342_, (ValaCCodeExpression*) _tmp343_);
4535 			_tmp344_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4536 			_tmp345_ = _tmp344_;
4537 			vala_ccode_function_close (_tmp345_);
4538 			vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4539 			_tmp346_ = ((ValaCCodeBaseModule*) self)->cfile;
4540 			_tmp347_ = unref_fun;
4541 			vala_ccode_file_add_function (_tmp346_, _tmp347_);
4542 			_vala_ccode_node_unref0 (free);
4543 			_vala_ccode_node_unref0 (ccast);
4544 			_vala_ccode_node_unref0 (get_class);
4545 			_vala_ccode_node_unref0 (unref_fun);
4546 			_vala_ccode_node_unref0 (ccall);
4547 			_vala_ccode_node_unref0 (ref_fun);
4548 			_vala_ccode_node_unref0 (ref_count);
4549 		}
4550 		_vala_typeregister_function_unref0 (type_fun);
4551 	} else {
4552 		gboolean _tmp348_ = FALSE;
4553 		gboolean _tmp349_ = FALSE;
4554 		gboolean _tmp350_;
4555 		gboolean _tmp351_;
4556 		_tmp350_ = vala_class_get_is_compact (cl);
4557 		_tmp351_ = _tmp350_;
4558 		if (_tmp351_) {
4559 			_tmp349_ = TRUE;
4560 		} else {
4561 			ValaClass* _tmp352_;
4562 			ValaClass* _tmp353_;
4563 			_tmp352_ = vala_class_get_base_class (cl);
4564 			_tmp353_ = _tmp352_;
4565 			_tmp349_ = _tmp353_ == NULL;
4566 		}
4567 		if (_tmp349_) {
4568 			_tmp348_ = TRUE;
4569 		} else {
4570 			ValaClass* _tmp354_;
4571 			_tmp354_ = ((ValaCCodeBaseModule*) self)->gsource_type;
4572 			_tmp348_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp354_);
4573 		}
4574 		if (_tmp348_) {
4575 			vala_gtype_module_add_instance_init_function (self, cl);
4576 			vala_gtype_module_add_finalize_function (self, cl);
4577 		}
4578 	}
4579 	_tmp355_ = old_param_spec_struct;
4580 	_tmp356_ = _vala_ccode_node_ref0 (_tmp355_);
4581 	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
4582 	((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp356_;
4583 	_tmp357_ = old_prop_enum;
4584 	_tmp358_ = _vala_ccode_node_ref0 (_tmp357_);
4585 	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->prop_enum);
4586 	((ValaCCodeBaseModule*) self)->prop_enum = _tmp358_;
4587 	_tmp359_ = old_signal_enum;
4588 	_tmp360_ = _vala_ccode_node_ref0 (_tmp359_);
4589 	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
4590 	((ValaCCodeBaseModule*) self)->signal_enum = _tmp360_;
4591 	_tmp361_ = old_class_init_context;
4592 	_tmp362_ = _vala_ccode_base_module_emit_context_ref0 (_tmp361_);
4593 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_init_context);
4594 	((ValaCCodeBaseModule*) self)->class_init_context = _tmp362_;
4595 	_tmp363_ = old_base_init_context;
4596 	_tmp364_ = _vala_ccode_base_module_emit_context_ref0 (_tmp363_);
4597 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_init_context);
4598 	((ValaCCodeBaseModule*) self)->base_init_context = _tmp364_;
4599 	_tmp365_ = old_class_finalize_context;
4600 	_tmp366_ = _vala_ccode_base_module_emit_context_ref0 (_tmp365_);
4601 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
4602 	((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp366_;
4603 	_tmp367_ = old_base_finalize_context;
4604 	_tmp368_ = _vala_ccode_base_module_emit_context_ref0 (_tmp367_);
4605 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
4606 	((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp368_;
4607 	_tmp369_ = old_instance_init_context;
4608 	_tmp370_ = _vala_ccode_base_module_emit_context_ref0 (_tmp369_);
4609 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
4610 	((ValaCCodeBaseModule*) self)->instance_init_context = _tmp370_;
4611 	_tmp371_ = old_instance_finalize_context;
4612 	_tmp372_ = _vala_ccode_base_module_emit_context_ref0 (_tmp371_);
4613 	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
4614 	((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp372_;
4615 	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
4616 	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
4617 	_g_free0 (last_prop);
4618 	_vala_ccode_base_module_emit_context_unref0 (old_instance_finalize_context);
4619 	_vala_ccode_base_module_emit_context_unref0 (old_instance_init_context);
4620 	_vala_ccode_base_module_emit_context_unref0 (old_base_finalize_context);
4621 	_vala_ccode_base_module_emit_context_unref0 (old_class_finalize_context);
4622 	_vala_ccode_base_module_emit_context_unref0 (old_base_init_context);
4623 	_vala_ccode_base_module_emit_context_unref0 (old_class_init_context);
4624 	_vala_ccode_node_unref0 (old_signal_enum);
4625 	_vala_ccode_node_unref0 (old_prop_enum);
4626 	_vala_ccode_node_unref0 (old_param_spec_struct);
4627 }
4628 
4629 static void
vala_gtype_module_add_type_value_table_init_function(ValaGTypeModule * self,ValaClass * cl)4630 vala_gtype_module_add_type_value_table_init_function (ValaGTypeModule* self,
4631                                                       ValaClass* cl)
4632 {
4633 	ValaCCodeFunction* function = NULL;
4634 	gchar* _tmp0_;
4635 	gchar* _tmp1_;
4636 	gchar* _tmp2_;
4637 	gchar* _tmp3_;
4638 	ValaCCodeFunction* _tmp4_;
4639 	ValaCCodeFunction* _tmp5_;
4640 	ValaCCodeParameter* _tmp6_;
4641 	ValaCCodeParameter* _tmp7_;
4642 	ValaCCodeFunction* _tmp8_;
4643 	ValaCCodeFunction* _tmp9_;
4644 	ValaCCodeIdentifier* _tmp10_;
4645 	ValaCCodeIdentifier* _tmp11_;
4646 	ValaCCodeMemberAccess* _tmp12_;
4647 	ValaCCodeMemberAccess* _tmp13_;
4648 	ValaCCodeMemberAccess* _tmp14_;
4649 	ValaCCodeMemberAccess* _tmp15_;
4650 	ValaCCodeConstant* _tmp16_;
4651 	ValaCCodeConstant* _tmp17_;
4652 	ValaCCodeFile* _tmp18_;
4653 	g_return_if_fail (self != NULL);
4654 	g_return_if_fail (cl != NULL);
4655 	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
4656 	_tmp1_ = _tmp0_;
4657 	_tmp2_ = g_strdup_printf ("%s_init", _tmp1_);
4658 	_tmp3_ = _tmp2_;
4659 	_tmp4_ = vala_ccode_function_new (_tmp3_, "void");
4660 	_tmp5_ = _tmp4_;
4661 	_g_free0 (_tmp3_);
4662 	_g_free0 (_tmp1_);
4663 	function = _tmp5_;
4664 	_tmp6_ = vala_ccode_parameter_new ("value", "GValue*");
4665 	_tmp7_ = _tmp6_;
4666 	vala_ccode_function_add_parameter (function, _tmp7_);
4667 	_vala_ccode_node_unref0 (_tmp7_);
4668 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
4669 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
4670 	_tmp8_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4671 	_tmp9_ = _tmp8_;
4672 	_tmp10_ = vala_ccode_identifier_new ("value");
4673 	_tmp11_ = _tmp10_;
4674 	_tmp12_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp11_, "data[0]");
4675 	_tmp13_ = _tmp12_;
4676 	_tmp14_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp13_, "v_pointer", FALSE);
4677 	_tmp15_ = _tmp14_;
4678 	_tmp16_ = vala_ccode_constant_new ("NULL");
4679 	_tmp17_ = _tmp16_;
4680 	vala_ccode_function_add_assignment (_tmp9_, (ValaCCodeExpression*) _tmp15_, (ValaCCodeExpression*) _tmp17_);
4681 	_vala_ccode_node_unref0 (_tmp17_);
4682 	_vala_ccode_node_unref0 (_tmp15_);
4683 	_vala_ccode_node_unref0 (_tmp13_);
4684 	_vala_ccode_node_unref0 (_tmp11_);
4685 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4686 	_tmp18_ = ((ValaCCodeBaseModule*) self)->cfile;
4687 	vala_ccode_file_add_function (_tmp18_, function);
4688 	_vala_ccode_node_unref0 (function);
4689 }
4690 
4691 static void
vala_gtype_module_add_type_value_table_free_function(ValaGTypeModule * self,ValaClass * cl)4692 vala_gtype_module_add_type_value_table_free_function (ValaGTypeModule* self,
4693                                                       ValaClass* cl)
4694 {
4695 	ValaCCodeFunction* function = NULL;
4696 	gchar* _tmp0_;
4697 	gchar* _tmp1_;
4698 	gchar* _tmp2_;
4699 	gchar* _tmp3_;
4700 	ValaCCodeFunction* _tmp4_;
4701 	ValaCCodeFunction* _tmp5_;
4702 	ValaCCodeParameter* _tmp6_;
4703 	ValaCCodeParameter* _tmp7_;
4704 	ValaCCodeMemberAccess* vpointer = NULL;
4705 	ValaCCodeIdentifier* _tmp8_;
4706 	ValaCCodeIdentifier* _tmp9_;
4707 	ValaCCodeMemberAccess* _tmp10_;
4708 	ValaCCodeMemberAccess* _tmp11_;
4709 	ValaCCodeMemberAccess* _tmp12_;
4710 	ValaCCodeMemberAccess* _tmp13_;
4711 	ValaCCodeFunctionCall* ccall = NULL;
4712 	gchar* _tmp14_;
4713 	gchar* _tmp15_;
4714 	ValaCCodeIdentifier* _tmp16_;
4715 	ValaCCodeIdentifier* _tmp17_;
4716 	ValaCCodeFunctionCall* _tmp18_;
4717 	ValaCCodeFunctionCall* _tmp19_;
4718 	ValaCCodeFunction* _tmp20_;
4719 	ValaCCodeFunction* _tmp21_;
4720 	ValaCCodeFunction* _tmp22_;
4721 	ValaCCodeFunction* _tmp23_;
4722 	ValaCCodeFunction* _tmp24_;
4723 	ValaCCodeFunction* _tmp25_;
4724 	ValaCCodeFile* _tmp26_;
4725 	g_return_if_fail (self != NULL);
4726 	g_return_if_fail (cl != NULL);
4727 	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
4728 	_tmp1_ = _tmp0_;
4729 	_tmp2_ = g_strdup_printf ("%s_free_value", _tmp1_);
4730 	_tmp3_ = _tmp2_;
4731 	_tmp4_ = vala_ccode_function_new (_tmp3_, "void");
4732 	_tmp5_ = _tmp4_;
4733 	_g_free0 (_tmp3_);
4734 	_g_free0 (_tmp1_);
4735 	function = _tmp5_;
4736 	_tmp6_ = vala_ccode_parameter_new ("value", "GValue*");
4737 	_tmp7_ = _tmp6_;
4738 	vala_ccode_function_add_parameter (function, _tmp7_);
4739 	_vala_ccode_node_unref0 (_tmp7_);
4740 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
4741 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
4742 	_tmp8_ = vala_ccode_identifier_new ("value");
4743 	_tmp9_ = _tmp8_;
4744 	_tmp10_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp9_, "data[0]");
4745 	_tmp11_ = _tmp10_;
4746 	_tmp12_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp11_, "v_pointer", FALSE);
4747 	_tmp13_ = _tmp12_;
4748 	_vala_ccode_node_unref0 (_tmp11_);
4749 	_vala_ccode_node_unref0 (_tmp9_);
4750 	vpointer = _tmp13_;
4751 	_tmp14_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) cl);
4752 	_tmp15_ = _tmp14_;
4753 	_tmp16_ = vala_ccode_identifier_new (_tmp15_);
4754 	_tmp17_ = _tmp16_;
4755 	_tmp18_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp17_);
4756 	_tmp19_ = _tmp18_;
4757 	_vala_ccode_node_unref0 (_tmp17_);
4758 	_g_free0 (_tmp15_);
4759 	ccall = _tmp19_;
4760 	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) vpointer);
4761 	_tmp20_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4762 	_tmp21_ = _tmp20_;
4763 	vala_ccode_function_open_if (_tmp21_, (ValaCCodeExpression*) vpointer);
4764 	_tmp22_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4765 	_tmp23_ = _tmp22_;
4766 	vala_ccode_function_add_expression (_tmp23_, (ValaCCodeExpression*) ccall);
4767 	_tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4768 	_tmp25_ = _tmp24_;
4769 	vala_ccode_function_close (_tmp25_);
4770 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4771 	_tmp26_ = ((ValaCCodeBaseModule*) self)->cfile;
4772 	vala_ccode_file_add_function (_tmp26_, function);
4773 	_vala_ccode_node_unref0 (ccall);
4774 	_vala_ccode_node_unref0 (vpointer);
4775 	_vala_ccode_node_unref0 (function);
4776 }
4777 
4778 static void
vala_gtype_module_add_type_value_table_copy_function(ValaGTypeModule * self,ValaClass * cl)4779 vala_gtype_module_add_type_value_table_copy_function (ValaGTypeModule* self,
4780                                                       ValaClass* cl)
4781 {
4782 	ValaCCodeFunction* function = NULL;
4783 	gchar* _tmp0_;
4784 	gchar* _tmp1_;
4785 	gchar* _tmp2_;
4786 	gchar* _tmp3_;
4787 	ValaCCodeFunction* _tmp4_;
4788 	ValaCCodeFunction* _tmp5_;
4789 	ValaCCodeParameter* _tmp6_;
4790 	ValaCCodeParameter* _tmp7_;
4791 	ValaCCodeParameter* _tmp8_;
4792 	ValaCCodeParameter* _tmp9_;
4793 	ValaCCodeMemberAccess* dest_vpointer = NULL;
4794 	ValaCCodeIdentifier* _tmp10_;
4795 	ValaCCodeIdentifier* _tmp11_;
4796 	ValaCCodeMemberAccess* _tmp12_;
4797 	ValaCCodeMemberAccess* _tmp13_;
4798 	ValaCCodeMemberAccess* _tmp14_;
4799 	ValaCCodeMemberAccess* _tmp15_;
4800 	ValaCCodeMemberAccess* src_vpointer = NULL;
4801 	ValaCCodeIdentifier* _tmp16_;
4802 	ValaCCodeIdentifier* _tmp17_;
4803 	ValaCCodeMemberAccess* _tmp18_;
4804 	ValaCCodeMemberAccess* _tmp19_;
4805 	ValaCCodeMemberAccess* _tmp20_;
4806 	ValaCCodeMemberAccess* _tmp21_;
4807 	ValaCCodeFunctionCall* ref_ccall = NULL;
4808 	gchar* _tmp22_;
4809 	gchar* _tmp23_;
4810 	ValaCCodeIdentifier* _tmp24_;
4811 	ValaCCodeIdentifier* _tmp25_;
4812 	ValaCCodeFunctionCall* _tmp26_;
4813 	ValaCCodeFunctionCall* _tmp27_;
4814 	ValaCCodeFunction* _tmp28_;
4815 	ValaCCodeFunction* _tmp29_;
4816 	ValaCCodeFunction* _tmp30_;
4817 	ValaCCodeFunction* _tmp31_;
4818 	ValaCCodeFunction* _tmp32_;
4819 	ValaCCodeFunction* _tmp33_;
4820 	ValaCCodeFunction* _tmp34_;
4821 	ValaCCodeFunction* _tmp35_;
4822 	ValaCCodeConstant* _tmp36_;
4823 	ValaCCodeConstant* _tmp37_;
4824 	ValaCCodeFunction* _tmp38_;
4825 	ValaCCodeFunction* _tmp39_;
4826 	ValaCCodeFile* _tmp40_;
4827 	g_return_if_fail (self != NULL);
4828 	g_return_if_fail (cl != NULL);
4829 	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
4830 	_tmp1_ = _tmp0_;
4831 	_tmp2_ = g_strdup_printf ("%s_copy_value", _tmp1_);
4832 	_tmp3_ = _tmp2_;
4833 	_tmp4_ = vala_ccode_function_new (_tmp3_, "void");
4834 	_tmp5_ = _tmp4_;
4835 	_g_free0 (_tmp3_);
4836 	_g_free0 (_tmp1_);
4837 	function = _tmp5_;
4838 	_tmp6_ = vala_ccode_parameter_new ("src_value", "const GValue*");
4839 	_tmp7_ = _tmp6_;
4840 	vala_ccode_function_add_parameter (function, _tmp7_);
4841 	_vala_ccode_node_unref0 (_tmp7_);
4842 	_tmp8_ = vala_ccode_parameter_new ("dest_value", "GValue*");
4843 	_tmp9_ = _tmp8_;
4844 	vala_ccode_function_add_parameter (function, _tmp9_);
4845 	_vala_ccode_node_unref0 (_tmp9_);
4846 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
4847 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
4848 	_tmp10_ = vala_ccode_identifier_new ("dest_value");
4849 	_tmp11_ = _tmp10_;
4850 	_tmp12_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp11_, "data[0]");
4851 	_tmp13_ = _tmp12_;
4852 	_tmp14_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp13_, "v_pointer", FALSE);
4853 	_tmp15_ = _tmp14_;
4854 	_vala_ccode_node_unref0 (_tmp13_);
4855 	_vala_ccode_node_unref0 (_tmp11_);
4856 	dest_vpointer = _tmp15_;
4857 	_tmp16_ = vala_ccode_identifier_new ("src_value");
4858 	_tmp17_ = _tmp16_;
4859 	_tmp18_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp17_, "data[0]");
4860 	_tmp19_ = _tmp18_;
4861 	_tmp20_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp19_, "v_pointer", FALSE);
4862 	_tmp21_ = _tmp20_;
4863 	_vala_ccode_node_unref0 (_tmp19_);
4864 	_vala_ccode_node_unref0 (_tmp17_);
4865 	src_vpointer = _tmp21_;
4866 	_tmp22_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
4867 	_tmp23_ = _tmp22_;
4868 	_tmp24_ = vala_ccode_identifier_new (_tmp23_);
4869 	_tmp25_ = _tmp24_;
4870 	_tmp26_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp25_);
4871 	_tmp27_ = _tmp26_;
4872 	_vala_ccode_node_unref0 (_tmp25_);
4873 	_g_free0 (_tmp23_);
4874 	ref_ccall = _tmp27_;
4875 	vala_ccode_function_call_add_argument (ref_ccall, (ValaCCodeExpression*) src_vpointer);
4876 	_tmp28_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4877 	_tmp29_ = _tmp28_;
4878 	vala_ccode_function_open_if (_tmp29_, (ValaCCodeExpression*) src_vpointer);
4879 	_tmp30_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4880 	_tmp31_ = _tmp30_;
4881 	vala_ccode_function_add_assignment (_tmp31_, (ValaCCodeExpression*) dest_vpointer, (ValaCCodeExpression*) ref_ccall);
4882 	_tmp32_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4883 	_tmp33_ = _tmp32_;
4884 	vala_ccode_function_add_else (_tmp33_);
4885 	_tmp34_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4886 	_tmp35_ = _tmp34_;
4887 	_tmp36_ = vala_ccode_constant_new ("NULL");
4888 	_tmp37_ = _tmp36_;
4889 	vala_ccode_function_add_assignment (_tmp35_, (ValaCCodeExpression*) dest_vpointer, (ValaCCodeExpression*) _tmp37_);
4890 	_vala_ccode_node_unref0 (_tmp37_);
4891 	_tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4892 	_tmp39_ = _tmp38_;
4893 	vala_ccode_function_close (_tmp39_);
4894 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4895 	_tmp40_ = ((ValaCCodeBaseModule*) self)->cfile;
4896 	vala_ccode_file_add_function (_tmp40_, function);
4897 	_vala_ccode_node_unref0 (ref_ccall);
4898 	_vala_ccode_node_unref0 (src_vpointer);
4899 	_vala_ccode_node_unref0 (dest_vpointer);
4900 	_vala_ccode_node_unref0 (function);
4901 }
4902 
4903 static void
vala_gtype_module_add_type_value_table_peek_pointer_function(ValaGTypeModule * self,ValaClass * cl)4904 vala_gtype_module_add_type_value_table_peek_pointer_function (ValaGTypeModule* self,
4905                                                               ValaClass* cl)
4906 {
4907 	ValaCCodeFunction* function = NULL;
4908 	gchar* _tmp0_;
4909 	gchar* _tmp1_;
4910 	gchar* _tmp2_;
4911 	gchar* _tmp3_;
4912 	ValaCCodeFunction* _tmp4_;
4913 	ValaCCodeFunction* _tmp5_;
4914 	ValaCCodeParameter* _tmp6_;
4915 	ValaCCodeParameter* _tmp7_;
4916 	ValaCCodeMemberAccess* vpointer = NULL;
4917 	ValaCCodeIdentifier* _tmp8_;
4918 	ValaCCodeIdentifier* _tmp9_;
4919 	ValaCCodeMemberAccess* _tmp10_;
4920 	ValaCCodeMemberAccess* _tmp11_;
4921 	ValaCCodeMemberAccess* _tmp12_;
4922 	ValaCCodeMemberAccess* _tmp13_;
4923 	ValaCCodeFunction* _tmp14_;
4924 	ValaCCodeFunction* _tmp15_;
4925 	ValaCCodeFile* _tmp16_;
4926 	g_return_if_fail (self != NULL);
4927 	g_return_if_fail (cl != NULL);
4928 	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
4929 	_tmp1_ = _tmp0_;
4930 	_tmp2_ = g_strdup_printf ("%s_peek_pointer", _tmp1_);
4931 	_tmp3_ = _tmp2_;
4932 	_tmp4_ = vala_ccode_function_new (_tmp3_, "gpointer");
4933 	_tmp5_ = _tmp4_;
4934 	_g_free0 (_tmp3_);
4935 	_g_free0 (_tmp1_);
4936 	function = _tmp5_;
4937 	_tmp6_ = vala_ccode_parameter_new ("value", "const GValue*");
4938 	_tmp7_ = _tmp6_;
4939 	vala_ccode_function_add_parameter (function, _tmp7_);
4940 	_vala_ccode_node_unref0 (_tmp7_);
4941 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
4942 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
4943 	_tmp8_ = vala_ccode_identifier_new ("value");
4944 	_tmp9_ = _tmp8_;
4945 	_tmp10_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp9_, "data[0]");
4946 	_tmp11_ = _tmp10_;
4947 	_tmp12_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp11_, "v_pointer", FALSE);
4948 	_tmp13_ = _tmp12_;
4949 	_vala_ccode_node_unref0 (_tmp11_);
4950 	_vala_ccode_node_unref0 (_tmp9_);
4951 	vpointer = _tmp13_;
4952 	_tmp14_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4953 	_tmp15_ = _tmp14_;
4954 	vala_ccode_function_add_return (_tmp15_, (ValaCCodeExpression*) vpointer);
4955 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4956 	_tmp16_ = ((ValaCCodeBaseModule*) self)->cfile;
4957 	vala_ccode_file_add_function (_tmp16_, function);
4958 	_vala_ccode_node_unref0 (vpointer);
4959 	_vala_ccode_node_unref0 (function);
4960 }
4961 
4962 static void
vala_gtype_module_add_type_value_table_lcopy_value_function(ValaGTypeModule * self,ValaClass * cl)4963 vala_gtype_module_add_type_value_table_lcopy_value_function (ValaGTypeModule* self,
4964                                                              ValaClass* cl)
4965 {
4966 	ValaCCodeFile* _tmp0_;
4967 	ValaCCodeFunction* function = NULL;
4968 	gchar* _tmp1_;
4969 	gchar* _tmp2_;
4970 	gchar* _tmp3_;
4971 	gchar* _tmp4_;
4972 	ValaCCodeFunction* _tmp5_;
4973 	ValaCCodeFunction* _tmp6_;
4974 	ValaCCodeParameter* _tmp7_;
4975 	ValaCCodeParameter* _tmp8_;
4976 	ValaCCodeParameter* _tmp9_;
4977 	ValaCCodeParameter* _tmp10_;
4978 	ValaCCodeParameter* _tmp11_;
4979 	ValaCCodeParameter* _tmp12_;
4980 	ValaCCodeParameter* _tmp13_;
4981 	ValaCCodeParameter* _tmp14_;
4982 	ValaCCodeMemberAccess* vpointer = NULL;
4983 	ValaCCodeIdentifier* _tmp15_;
4984 	ValaCCodeIdentifier* _tmp16_;
4985 	ValaCCodeMemberAccess* _tmp17_;
4986 	ValaCCodeMemberAccess* _tmp18_;
4987 	ValaCCodeMemberAccess* _tmp19_;
4988 	ValaCCodeMemberAccess* _tmp20_;
4989 	ValaCCodeIdentifier* object_p_ptr = NULL;
4990 	ValaCCodeIdentifier* _tmp21_;
4991 	ValaCCodeConstant* null_ = NULL;
4992 	ValaCCodeConstant* _tmp22_;
4993 	ValaCCodeFunction* _tmp23_;
4994 	ValaCCodeFunction* _tmp24_;
4995 	gchar* _tmp25_;
4996 	gchar* _tmp26_;
4997 	gchar* _tmp27_;
4998 	gchar* _tmp28_;
4999 	ValaCCodeIdentifier* _tmp29_;
5000 	ValaCCodeIdentifier* _tmp30_;
5001 	ValaCCodeMemberAccess* _tmp31_;
5002 	ValaCCodeMemberAccess* _tmp32_;
5003 	ValaCCodeVariableDeclarator* _tmp33_;
5004 	ValaCCodeVariableDeclarator* _tmp34_;
5005 	ValaCCodeFunctionCall* value_type_name_fct = NULL;
5006 	ValaCCodeIdentifier* _tmp35_;
5007 	ValaCCodeIdentifier* _tmp36_;
5008 	ValaCCodeFunctionCall* _tmp37_;
5009 	ValaCCodeFunctionCall* _tmp38_;
5010 	ValaCCodeConstant* _tmp39_;
5011 	ValaCCodeConstant* _tmp40_;
5012 	ValaCCodeUnaryExpression* assert_condition = NULL;
5013 	ValaCCodeIdentifier* _tmp41_;
5014 	ValaCCodeIdentifier* _tmp42_;
5015 	ValaCCodeUnaryExpression* _tmp43_;
5016 	ValaCCodeUnaryExpression* _tmp44_;
5017 	ValaCCodeFunction* _tmp45_;
5018 	ValaCCodeFunction* _tmp46_;
5019 	ValaCCodeFunctionCall* assert_printf = NULL;
5020 	ValaCCodeIdentifier* _tmp47_;
5021 	ValaCCodeIdentifier* _tmp48_;
5022 	ValaCCodeFunctionCall* _tmp49_;
5023 	ValaCCodeFunctionCall* _tmp50_;
5024 	ValaCCodeConstant* _tmp51_;
5025 	ValaCCodeConstant* _tmp52_;
5026 	ValaCCodeFunction* _tmp53_;
5027 	ValaCCodeFunction* _tmp54_;
5028 	ValaCCodeFunction* _tmp55_;
5029 	ValaCCodeFunction* _tmp56_;
5030 	ValaCCodeUnaryExpression* main_condition = NULL;
5031 	ValaCCodeUnaryExpression* _tmp57_;
5032 	ValaCCodeBinaryExpression* main_else_if_condition = NULL;
5033 	ValaCCodeIdentifier* _tmp58_;
5034 	ValaCCodeIdentifier* _tmp59_;
5035 	ValaCCodeIdentifier* _tmp60_;
5036 	ValaCCodeIdentifier* _tmp61_;
5037 	ValaCCodeBinaryExpression* _tmp62_;
5038 	ValaCCodeBinaryExpression* _tmp63_;
5039 	ValaCCodeFunctionCall* ref_fct = NULL;
5040 	gchar* _tmp64_;
5041 	gchar* _tmp65_;
5042 	ValaCCodeIdentifier* _tmp66_;
5043 	ValaCCodeIdentifier* _tmp67_;
5044 	ValaCCodeFunctionCall* _tmp68_;
5045 	ValaCCodeFunctionCall* _tmp69_;
5046 	ValaCCodeFunction* _tmp70_;
5047 	ValaCCodeFunction* _tmp71_;
5048 	ValaCCodeFunction* _tmp72_;
5049 	ValaCCodeFunction* _tmp73_;
5050 	ValaCCodeFunction* _tmp74_;
5051 	ValaCCodeFunction* _tmp75_;
5052 	ValaCCodeFunction* _tmp76_;
5053 	ValaCCodeFunction* _tmp77_;
5054 	ValaCCodeFunction* _tmp78_;
5055 	ValaCCodeFunction* _tmp79_;
5056 	ValaCCodeFunction* _tmp80_;
5057 	ValaCCodeFunction* _tmp81_;
5058 	ValaCCodeFunction* _tmp82_;
5059 	ValaCCodeFunction* _tmp83_;
5060 	ValaCCodeFunction* _tmp84_;
5061 	ValaCCodeFunction* _tmp85_;
5062 	ValaCCodeFile* _tmp86_;
5063 	g_return_if_fail (self != NULL);
5064 	g_return_if_fail (cl != NULL);
5065 	_tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
5066 	vala_ccode_file_add_include (_tmp0_, "gobject/gvaluecollector.h", FALSE);
5067 	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
5068 	_tmp2_ = _tmp1_;
5069 	_tmp3_ = g_strdup_printf ("%s_lcopy_value", _tmp2_);
5070 	_tmp4_ = _tmp3_;
5071 	_tmp5_ = vala_ccode_function_new (_tmp4_, "gchar*");
5072 	_tmp6_ = _tmp5_;
5073 	_g_free0 (_tmp4_);
5074 	_g_free0 (_tmp2_);
5075 	function = _tmp6_;
5076 	_tmp7_ = vala_ccode_parameter_new ("value", "const GValue*");
5077 	_tmp8_ = _tmp7_;
5078 	vala_ccode_function_add_parameter (function, _tmp8_);
5079 	_vala_ccode_node_unref0 (_tmp8_);
5080 	_tmp9_ = vala_ccode_parameter_new ("n_collect_values", "guint");
5081 	_tmp10_ = _tmp9_;
5082 	vala_ccode_function_add_parameter (function, _tmp10_);
5083 	_vala_ccode_node_unref0 (_tmp10_);
5084 	_tmp11_ = vala_ccode_parameter_new ("collect_values", "GTypeCValue*");
5085 	_tmp12_ = _tmp11_;
5086 	vala_ccode_function_add_parameter (function, _tmp12_);
5087 	_vala_ccode_node_unref0 (_tmp12_);
5088 	_tmp13_ = vala_ccode_parameter_new ("collect_flags", "guint");
5089 	_tmp14_ = _tmp13_;
5090 	vala_ccode_function_add_parameter (function, _tmp14_);
5091 	_vala_ccode_node_unref0 (_tmp14_);
5092 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
5093 	_tmp15_ = vala_ccode_identifier_new ("value");
5094 	_tmp16_ = _tmp15_;
5095 	_tmp17_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp16_, "data[0]");
5096 	_tmp18_ = _tmp17_;
5097 	_tmp19_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp18_, "v_pointer", FALSE);
5098 	_tmp20_ = _tmp19_;
5099 	_vala_ccode_node_unref0 (_tmp18_);
5100 	_vala_ccode_node_unref0 (_tmp16_);
5101 	vpointer = _tmp20_;
5102 	_tmp21_ = vala_ccode_identifier_new ("*object_p");
5103 	object_p_ptr = _tmp21_;
5104 	_tmp22_ = vala_ccode_constant_new ("NULL");
5105 	null_ = _tmp22_;
5106 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
5107 	_tmp23_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5108 	_tmp24_ = _tmp23_;
5109 	_tmp25_ = vala_get_ccode_name ((ValaCodeNode*) cl);
5110 	_tmp26_ = _tmp25_;
5111 	_tmp27_ = g_strdup_printf ("%s **", _tmp26_);
5112 	_tmp28_ = _tmp27_;
5113 	_tmp29_ = vala_ccode_identifier_new ("collect_values[0]");
5114 	_tmp30_ = _tmp29_;
5115 	_tmp31_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp30_, "v_pointer", FALSE);
5116 	_tmp32_ = _tmp31_;
5117 	_tmp33_ = vala_ccode_variable_declarator_new ("object_p", (ValaCCodeExpression*) _tmp32_, NULL);
5118 	_tmp34_ = _tmp33_;
5119 	vala_ccode_function_add_declaration (_tmp24_, _tmp28_, (ValaCCodeDeclarator*) _tmp34_, 0);
5120 	_vala_ccode_node_unref0 (_tmp34_);
5121 	_vala_ccode_node_unref0 (_tmp32_);
5122 	_vala_ccode_node_unref0 (_tmp30_);
5123 	_g_free0 (_tmp28_);
5124 	_g_free0 (_tmp26_);
5125 	_tmp35_ = vala_ccode_identifier_new ("G_VALUE_TYPE_NAME");
5126 	_tmp36_ = _tmp35_;
5127 	_tmp37_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp36_);
5128 	_tmp38_ = _tmp37_;
5129 	_vala_ccode_node_unref0 (_tmp36_);
5130 	value_type_name_fct = _tmp38_;
5131 	_tmp39_ = vala_ccode_constant_new ("value");
5132 	_tmp40_ = _tmp39_;
5133 	vala_ccode_function_call_add_argument (value_type_name_fct, (ValaCCodeExpression*) _tmp40_);
5134 	_vala_ccode_node_unref0 (_tmp40_);
5135 	_tmp41_ = vala_ccode_identifier_new ("object_p");
5136 	_tmp42_ = _tmp41_;
5137 	_tmp43_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp42_);
5138 	_tmp44_ = _tmp43_;
5139 	_vala_ccode_node_unref0 (_tmp42_);
5140 	assert_condition = _tmp44_;
5141 	_tmp45_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5142 	_tmp46_ = _tmp45_;
5143 	vala_ccode_function_open_if (_tmp46_, (ValaCCodeExpression*) assert_condition);
5144 	_tmp47_ = vala_ccode_identifier_new ("g_strdup_printf");
5145 	_tmp48_ = _tmp47_;
5146 	_tmp49_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp48_);
5147 	_tmp50_ = _tmp49_;
5148 	_vala_ccode_node_unref0 (_tmp48_);
5149 	assert_printf = _tmp50_;
5150 	_tmp51_ = vala_ccode_constant_new ("\"value location for `%s' passed as NULL\"");
5151 	_tmp52_ = _tmp51_;
5152 	vala_ccode_function_call_add_argument (assert_printf, (ValaCCodeExpression*) _tmp52_);
5153 	_vala_ccode_node_unref0 (_tmp52_);
5154 	vala_ccode_function_call_add_argument (assert_printf, (ValaCCodeExpression*) value_type_name_fct);
5155 	_tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5156 	_tmp54_ = _tmp53_;
5157 	vala_ccode_function_add_return (_tmp54_, (ValaCCodeExpression*) assert_printf);
5158 	_tmp55_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5159 	_tmp56_ = _tmp55_;
5160 	vala_ccode_function_close (_tmp56_);
5161 	_tmp57_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) vpointer);
5162 	main_condition = _tmp57_;
5163 	_tmp58_ = vala_ccode_identifier_new ("collect_flags");
5164 	_tmp59_ = _tmp58_;
5165 	_tmp60_ = vala_ccode_identifier_new ("G_VALUE_NOCOPY_CONTENTS");
5166 	_tmp61_ = _tmp60_;
5167 	_tmp62_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_BITWISE_AND, (ValaCCodeExpression*) _tmp59_, (ValaCCodeExpression*) _tmp61_);
5168 	_tmp63_ = _tmp62_;
5169 	_vala_ccode_node_unref0 (_tmp61_);
5170 	_vala_ccode_node_unref0 (_tmp59_);
5171 	main_else_if_condition = _tmp63_;
5172 	_tmp64_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
5173 	_tmp65_ = _tmp64_;
5174 	_tmp66_ = vala_ccode_identifier_new (_tmp65_);
5175 	_tmp67_ = _tmp66_;
5176 	_tmp68_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp67_);
5177 	_tmp69_ = _tmp68_;
5178 	_vala_ccode_node_unref0 (_tmp67_);
5179 	_g_free0 (_tmp65_);
5180 	ref_fct = _tmp69_;
5181 	vala_ccode_function_call_add_argument (ref_fct, (ValaCCodeExpression*) vpointer);
5182 	_tmp70_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5183 	_tmp71_ = _tmp70_;
5184 	vala_ccode_function_open_if (_tmp71_, (ValaCCodeExpression*) main_condition);
5185 	_tmp72_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5186 	_tmp73_ = _tmp72_;
5187 	vala_ccode_function_add_assignment (_tmp73_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) null_);
5188 	_tmp74_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5189 	_tmp75_ = _tmp74_;
5190 	vala_ccode_function_else_if (_tmp75_, (ValaCCodeExpression*) main_else_if_condition);
5191 	_tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5192 	_tmp77_ = _tmp76_;
5193 	vala_ccode_function_add_assignment (_tmp77_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) vpointer);
5194 	_tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5195 	_tmp79_ = _tmp78_;
5196 	vala_ccode_function_add_else (_tmp79_);
5197 	_tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5198 	_tmp81_ = _tmp80_;
5199 	vala_ccode_function_add_assignment (_tmp81_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) ref_fct);
5200 	_tmp82_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5201 	_tmp83_ = _tmp82_;
5202 	vala_ccode_function_close (_tmp83_);
5203 	_tmp84_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5204 	_tmp85_ = _tmp84_;
5205 	vala_ccode_function_add_return (_tmp85_, (ValaCCodeExpression*) null_);
5206 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
5207 	_tmp86_ = ((ValaCCodeBaseModule*) self)->cfile;
5208 	vala_ccode_file_add_function (_tmp86_, function);
5209 	_vala_ccode_node_unref0 (ref_fct);
5210 	_vala_ccode_node_unref0 (main_else_if_condition);
5211 	_vala_ccode_node_unref0 (main_condition);
5212 	_vala_ccode_node_unref0 (assert_printf);
5213 	_vala_ccode_node_unref0 (assert_condition);
5214 	_vala_ccode_node_unref0 (value_type_name_fct);
5215 	_vala_ccode_node_unref0 (null_);
5216 	_vala_ccode_node_unref0 (object_p_ptr);
5217 	_vala_ccode_node_unref0 (vpointer);
5218 	_vala_ccode_node_unref0 (function);
5219 }
5220 
5221 static void
vala_gtype_module_add_type_value_table_collect_value_function(ValaGTypeModule * self,ValaClass * cl)5222 vala_gtype_module_add_type_value_table_collect_value_function (ValaGTypeModule* self,
5223                                                                ValaClass* cl)
5224 {
5225 	ValaCCodeFile* _tmp0_;
5226 	ValaCCodeFunction* function = NULL;
5227 	gchar* _tmp1_;
5228 	gchar* _tmp2_;
5229 	gchar* _tmp3_;
5230 	gchar* _tmp4_;
5231 	ValaCCodeFunction* _tmp5_;
5232 	ValaCCodeFunction* _tmp6_;
5233 	ValaCCodeParameter* _tmp7_;
5234 	ValaCCodeParameter* _tmp8_;
5235 	ValaCCodeParameter* _tmp9_;
5236 	ValaCCodeParameter* _tmp10_;
5237 	ValaCCodeParameter* _tmp11_;
5238 	ValaCCodeParameter* _tmp12_;
5239 	ValaCCodeParameter* _tmp13_;
5240 	ValaCCodeParameter* _tmp14_;
5241 	ValaCCodeMemberAccess* vpointer = NULL;
5242 	ValaCCodeIdentifier* _tmp15_;
5243 	ValaCCodeIdentifier* _tmp16_;
5244 	ValaCCodeMemberAccess* _tmp17_;
5245 	ValaCCodeMemberAccess* _tmp18_;
5246 	ValaCCodeMemberAccess* _tmp19_;
5247 	ValaCCodeMemberAccess* _tmp20_;
5248 	ValaCCodeMemberAccess* collect_vpointer = NULL;
5249 	ValaCCodeIdentifier* _tmp21_;
5250 	ValaCCodeIdentifier* _tmp22_;
5251 	ValaCCodeMemberAccess* _tmp23_;
5252 	ValaCCodeMemberAccess* _tmp24_;
5253 	ValaCCodeFunction* _tmp25_;
5254 	ValaCCodeFunction* _tmp26_;
5255 	ValaCCodeFunction* _tmp27_;
5256 	ValaCCodeFunction* _tmp28_;
5257 	gchar* _tmp29_;
5258 	gchar* _tmp30_;
5259 	gchar* _tmp31_;
5260 	gchar* _tmp32_;
5261 	ValaCCodeVariableDeclarator* _tmp33_;
5262 	ValaCCodeVariableDeclarator* _tmp34_;
5263 	ValaCCodeIdentifier* obj_identifier = NULL;
5264 	ValaCCodeIdentifier* _tmp35_;
5265 	ValaCCodeMemberAccess* l_expression = NULL;
5266 	ValaCCodeMemberAccess* _tmp36_;
5267 	ValaCCodeMemberAccess* _tmp37_;
5268 	ValaCCodeMemberAccess* _tmp38_;
5269 	ValaCCodeMemberAccess* _tmp39_;
5270 	ValaCCodeBinaryExpression* sub_condition = NULL;
5271 	ValaCCodeConstant* _tmp40_;
5272 	ValaCCodeConstant* _tmp41_;
5273 	ValaCCodeBinaryExpression* _tmp42_;
5274 	ValaCCodeBinaryExpression* _tmp43_;
5275 	ValaCCodeFunctionCall* value_type_name_fct = NULL;
5276 	ValaCCodeIdentifier* _tmp44_;
5277 	ValaCCodeIdentifier* _tmp45_;
5278 	ValaCCodeFunctionCall* _tmp46_;
5279 	ValaCCodeFunctionCall* _tmp47_;
5280 	ValaCCodeConstant* _tmp48_;
5281 	ValaCCodeConstant* _tmp49_;
5282 	ValaCCodeFunction* _tmp50_;
5283 	ValaCCodeFunction* _tmp51_;
5284 	ValaCCodeFunctionCall* true_return = NULL;
5285 	ValaCCodeIdentifier* _tmp52_;
5286 	ValaCCodeIdentifier* _tmp53_;
5287 	ValaCCodeFunctionCall* _tmp54_;
5288 	ValaCCodeFunctionCall* _tmp55_;
5289 	ValaCCodeConstant* _tmp56_;
5290 	ValaCCodeConstant* _tmp57_;
5291 	ValaCCodeConstant* _tmp58_;
5292 	ValaCCodeConstant* _tmp59_;
5293 	ValaCCodeConstant* _tmp60_;
5294 	ValaCCodeConstant* _tmp61_;
5295 	ValaCCodeFunction* _tmp62_;
5296 	ValaCCodeFunction* _tmp63_;
5297 	ValaCCodeFunctionCall* reg_call = NULL;
5298 	ValaCCodeIdentifier* _tmp64_;
5299 	ValaCCodeIdentifier* _tmp65_;
5300 	ValaCCodeFunctionCall* _tmp66_;
5301 	ValaCCodeFunctionCall* _tmp67_;
5302 	ValaCCodeFunctionCall* type_check = NULL;
5303 	ValaCCodeIdentifier* _tmp68_;
5304 	ValaCCodeIdentifier* _tmp69_;
5305 	ValaCCodeFunctionCall* _tmp70_;
5306 	ValaCCodeFunctionCall* _tmp71_;
5307 	ValaCCodeIdentifier* _tmp72_;
5308 	ValaCCodeIdentifier* _tmp73_;
5309 	ValaCCodeFunctionCall* stored_type = NULL;
5310 	ValaCCodeIdentifier* _tmp74_;
5311 	ValaCCodeIdentifier* _tmp75_;
5312 	ValaCCodeFunctionCall* _tmp76_;
5313 	ValaCCodeFunctionCall* _tmp77_;
5314 	ValaCCodeIdentifier* _tmp78_;
5315 	ValaCCodeIdentifier* _tmp79_;
5316 	ValaCCodeFunction* _tmp80_;
5317 	ValaCCodeFunction* _tmp81_;
5318 	ValaCCodeUnaryExpression* _tmp82_;
5319 	ValaCCodeUnaryExpression* _tmp83_;
5320 	ValaCCodeFunctionCall* false_return = NULL;
5321 	ValaCCodeIdentifier* _tmp84_;
5322 	ValaCCodeIdentifier* _tmp85_;
5323 	ValaCCodeFunctionCall* _tmp86_;
5324 	ValaCCodeFunctionCall* _tmp87_;
5325 	ValaCCodeFunctionCall* type_name_fct = NULL;
5326 	ValaCCodeIdentifier* _tmp88_;
5327 	ValaCCodeIdentifier* _tmp89_;
5328 	ValaCCodeFunctionCall* _tmp90_;
5329 	ValaCCodeFunctionCall* _tmp91_;
5330 	ValaCCodeConstant* _tmp92_;
5331 	ValaCCodeConstant* _tmp93_;
5332 	ValaCCodeConstant* _tmp94_;
5333 	ValaCCodeConstant* _tmp95_;
5334 	ValaCCodeConstant* _tmp96_;
5335 	ValaCCodeConstant* _tmp97_;
5336 	ValaCCodeConstant* _tmp98_;
5337 	ValaCCodeConstant* _tmp99_;
5338 	ValaCCodeFunction* _tmp100_;
5339 	ValaCCodeFunction* _tmp101_;
5340 	ValaCCodeFunction* _tmp102_;
5341 	ValaCCodeFunction* _tmp103_;
5342 	ValaCCodeFunctionCall* ref_call = NULL;
5343 	gchar* _tmp104_;
5344 	gchar* _tmp105_;
5345 	ValaCCodeIdentifier* _tmp106_;
5346 	ValaCCodeIdentifier* _tmp107_;
5347 	ValaCCodeFunctionCall* _tmp108_;
5348 	ValaCCodeFunctionCall* _tmp109_;
5349 	ValaCCodeIdentifier* _tmp110_;
5350 	ValaCCodeIdentifier* _tmp111_;
5351 	ValaCCodeFunction* _tmp112_;
5352 	ValaCCodeFunction* _tmp113_;
5353 	ValaCCodeFunction* _tmp114_;
5354 	ValaCCodeFunction* _tmp115_;
5355 	ValaCCodeFunction* _tmp116_;
5356 	ValaCCodeFunction* _tmp117_;
5357 	ValaCCodeConstant* _tmp118_;
5358 	ValaCCodeConstant* _tmp119_;
5359 	ValaCCodeFunction* _tmp120_;
5360 	ValaCCodeFunction* _tmp121_;
5361 	ValaCCodeFunction* _tmp122_;
5362 	ValaCCodeFunction* _tmp123_;
5363 	ValaCCodeConstant* _tmp124_;
5364 	ValaCCodeConstant* _tmp125_;
5365 	ValaCCodeFile* _tmp126_;
5366 	g_return_if_fail (self != NULL);
5367 	g_return_if_fail (cl != NULL);
5368 	_tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
5369 	vala_ccode_file_add_include (_tmp0_, "gobject/gvaluecollector.h", FALSE);
5370 	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
5371 	_tmp2_ = _tmp1_;
5372 	_tmp3_ = g_strdup_printf ("%s_collect_value", _tmp2_);
5373 	_tmp4_ = _tmp3_;
5374 	_tmp5_ = vala_ccode_function_new (_tmp4_, "gchar*");
5375 	_tmp6_ = _tmp5_;
5376 	_g_free0 (_tmp4_);
5377 	_g_free0 (_tmp2_);
5378 	function = _tmp6_;
5379 	_tmp7_ = vala_ccode_parameter_new ("value", "GValue*");
5380 	_tmp8_ = _tmp7_;
5381 	vala_ccode_function_add_parameter (function, _tmp8_);
5382 	_vala_ccode_node_unref0 (_tmp8_);
5383 	_tmp9_ = vala_ccode_parameter_new ("n_collect_values", "guint");
5384 	_tmp10_ = _tmp9_;
5385 	vala_ccode_function_add_parameter (function, _tmp10_);
5386 	_vala_ccode_node_unref0 (_tmp10_);
5387 	_tmp11_ = vala_ccode_parameter_new ("collect_values", "GTypeCValue*");
5388 	_tmp12_ = _tmp11_;
5389 	vala_ccode_function_add_parameter (function, _tmp12_);
5390 	_vala_ccode_node_unref0 (_tmp12_);
5391 	_tmp13_ = vala_ccode_parameter_new ("collect_flags", "guint");
5392 	_tmp14_ = _tmp13_;
5393 	vala_ccode_function_add_parameter (function, _tmp14_);
5394 	_vala_ccode_node_unref0 (_tmp14_);
5395 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
5396 	_tmp15_ = vala_ccode_identifier_new ("value");
5397 	_tmp16_ = _tmp15_;
5398 	_tmp17_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp16_, "data[0]");
5399 	_tmp18_ = _tmp17_;
5400 	_tmp19_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp18_, "v_pointer", FALSE);
5401 	_tmp20_ = _tmp19_;
5402 	_vala_ccode_node_unref0 (_tmp18_);
5403 	_vala_ccode_node_unref0 (_tmp16_);
5404 	vpointer = _tmp20_;
5405 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
5406 	_tmp21_ = vala_ccode_identifier_new ("collect_values[0]");
5407 	_tmp22_ = _tmp21_;
5408 	_tmp23_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp22_, "v_pointer", FALSE);
5409 	_tmp24_ = _tmp23_;
5410 	_vala_ccode_node_unref0 (_tmp22_);
5411 	collect_vpointer = _tmp24_;
5412 	_tmp25_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5413 	_tmp26_ = _tmp25_;
5414 	vala_ccode_function_open_if (_tmp26_, (ValaCCodeExpression*) collect_vpointer);
5415 	_tmp27_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5416 	_tmp28_ = _tmp27_;
5417 	_tmp29_ = vala_get_ccode_name ((ValaCodeNode*) cl);
5418 	_tmp30_ = _tmp29_;
5419 	_tmp31_ = g_strdup_printf ("%s *", _tmp30_);
5420 	_tmp32_ = _tmp31_;
5421 	_tmp33_ = vala_ccode_variable_declarator_new ("object", (ValaCCodeExpression*) collect_vpointer, NULL);
5422 	_tmp34_ = _tmp33_;
5423 	vala_ccode_function_add_declaration (_tmp28_, _tmp32_, (ValaCCodeDeclarator*) _tmp34_, 0);
5424 	_vala_ccode_node_unref0 (_tmp34_);
5425 	_g_free0 (_tmp32_);
5426 	_g_free0 (_tmp30_);
5427 	_tmp35_ = vala_ccode_identifier_new ("object");
5428 	obj_identifier = _tmp35_;
5429 	_tmp36_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) obj_identifier, "parent_instance");
5430 	_tmp37_ = _tmp36_;
5431 	_tmp38_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp37_, "g_class", FALSE);
5432 	_tmp39_ = _tmp38_;
5433 	_vala_ccode_node_unref0 (_tmp37_);
5434 	l_expression = _tmp39_;
5435 	_tmp40_ = vala_ccode_constant_new ("NULL");
5436 	_tmp41_ = _tmp40_;
5437 	_tmp42_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) l_expression, (ValaCCodeExpression*) _tmp41_);
5438 	_tmp43_ = _tmp42_;
5439 	_vala_ccode_node_unref0 (_tmp41_);
5440 	sub_condition = _tmp43_;
5441 	_tmp44_ = vala_ccode_identifier_new ("G_VALUE_TYPE_NAME");
5442 	_tmp45_ = _tmp44_;
5443 	_tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
5444 	_tmp47_ = _tmp46_;
5445 	_vala_ccode_node_unref0 (_tmp45_);
5446 	value_type_name_fct = _tmp47_;
5447 	_tmp48_ = vala_ccode_constant_new ("value");
5448 	_tmp49_ = _tmp48_;
5449 	vala_ccode_function_call_add_argument (value_type_name_fct, (ValaCCodeExpression*) _tmp49_);
5450 	_vala_ccode_node_unref0 (_tmp49_);
5451 	_tmp50_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5452 	_tmp51_ = _tmp50_;
5453 	vala_ccode_function_open_if (_tmp51_, (ValaCCodeExpression*) sub_condition);
5454 	_tmp52_ = vala_ccode_identifier_new ("g_strconcat");
5455 	_tmp53_ = _tmp52_;
5456 	_tmp54_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp53_);
5457 	_tmp55_ = _tmp54_;
5458 	_vala_ccode_node_unref0 (_tmp53_);
5459 	true_return = _tmp55_;
5460 	_tmp56_ = vala_ccode_constant_new ("\"invalid unclassed object pointer for value type `\"");
5461 	_tmp57_ = _tmp56_;
5462 	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp57_);
5463 	_vala_ccode_node_unref0 (_tmp57_);
5464 	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) value_type_name_fct);
5465 	_tmp58_ = vala_ccode_constant_new ("\"'\"");
5466 	_tmp59_ = _tmp58_;
5467 	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp59_);
5468 	_vala_ccode_node_unref0 (_tmp59_);
5469 	_tmp60_ = vala_ccode_constant_new ("NULL");
5470 	_tmp61_ = _tmp60_;
5471 	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp61_);
5472 	_vala_ccode_node_unref0 (_tmp61_);
5473 	_tmp62_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5474 	_tmp63_ = _tmp62_;
5475 	vala_ccode_function_add_return (_tmp63_, (ValaCCodeExpression*) true_return);
5476 	_tmp64_ = vala_ccode_identifier_new ("g_value_type_compatible");
5477 	_tmp65_ = _tmp64_;
5478 	_tmp66_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp65_);
5479 	_tmp67_ = _tmp66_;
5480 	_vala_ccode_node_unref0 (_tmp65_);
5481 	reg_call = _tmp67_;
5482 	_tmp68_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
5483 	_tmp69_ = _tmp68_;
5484 	_tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
5485 	_tmp71_ = _tmp70_;
5486 	_vala_ccode_node_unref0 (_tmp69_);
5487 	type_check = _tmp71_;
5488 	_tmp72_ = vala_ccode_identifier_new ("object");
5489 	_tmp73_ = _tmp72_;
5490 	vala_ccode_function_call_add_argument (type_check, (ValaCCodeExpression*) _tmp73_);
5491 	_vala_ccode_node_unref0 (_tmp73_);
5492 	vala_ccode_function_call_add_argument (reg_call, (ValaCCodeExpression*) type_check);
5493 	_tmp74_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
5494 	_tmp75_ = _tmp74_;
5495 	_tmp76_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp75_);
5496 	_tmp77_ = _tmp76_;
5497 	_vala_ccode_node_unref0 (_tmp75_);
5498 	stored_type = _tmp77_;
5499 	_tmp78_ = vala_ccode_identifier_new ("value");
5500 	_tmp79_ = _tmp78_;
5501 	vala_ccode_function_call_add_argument (stored_type, (ValaCCodeExpression*) _tmp79_);
5502 	_vala_ccode_node_unref0 (_tmp79_);
5503 	vala_ccode_function_call_add_argument (reg_call, (ValaCCodeExpression*) stored_type);
5504 	_tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5505 	_tmp81_ = _tmp80_;
5506 	_tmp82_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) reg_call);
5507 	_tmp83_ = _tmp82_;
5508 	vala_ccode_function_else_if (_tmp81_, (ValaCCodeExpression*) _tmp83_);
5509 	_vala_ccode_node_unref0 (_tmp83_);
5510 	_tmp84_ = vala_ccode_identifier_new ("g_strconcat");
5511 	_tmp85_ = _tmp84_;
5512 	_tmp86_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp85_);
5513 	_tmp87_ = _tmp86_;
5514 	_vala_ccode_node_unref0 (_tmp85_);
5515 	false_return = _tmp87_;
5516 	_tmp88_ = vala_ccode_identifier_new ("g_type_name");
5517 	_tmp89_ = _tmp88_;
5518 	_tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
5519 	_tmp91_ = _tmp90_;
5520 	_vala_ccode_node_unref0 (_tmp89_);
5521 	type_name_fct = _tmp91_;
5522 	vala_ccode_function_call_add_argument (type_name_fct, (ValaCCodeExpression*) type_check);
5523 	_tmp92_ = vala_ccode_constant_new ("\"invalid object type `\"");
5524 	_tmp93_ = _tmp92_;
5525 	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp93_);
5526 	_vala_ccode_node_unref0 (_tmp93_);
5527 	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) type_name_fct);
5528 	_tmp94_ = vala_ccode_constant_new ("\"' for value type `\"");
5529 	_tmp95_ = _tmp94_;
5530 	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp95_);
5531 	_vala_ccode_node_unref0 (_tmp95_);
5532 	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) value_type_name_fct);
5533 	_tmp96_ = vala_ccode_constant_new ("\"'\"");
5534 	_tmp97_ = _tmp96_;
5535 	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp97_);
5536 	_vala_ccode_node_unref0 (_tmp97_);
5537 	_tmp98_ = vala_ccode_constant_new ("NULL");
5538 	_tmp99_ = _tmp98_;
5539 	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp99_);
5540 	_vala_ccode_node_unref0 (_tmp99_);
5541 	_tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5542 	_tmp101_ = _tmp100_;
5543 	vala_ccode_function_add_return (_tmp101_, (ValaCCodeExpression*) false_return);
5544 	_tmp102_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5545 	_tmp103_ = _tmp102_;
5546 	vala_ccode_function_close (_tmp103_);
5547 	_tmp104_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
5548 	_tmp105_ = _tmp104_;
5549 	_tmp106_ = vala_ccode_identifier_new (_tmp105_);
5550 	_tmp107_ = _tmp106_;
5551 	_tmp108_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp107_);
5552 	_tmp109_ = _tmp108_;
5553 	_vala_ccode_node_unref0 (_tmp107_);
5554 	_g_free0 (_tmp105_);
5555 	ref_call = _tmp109_;
5556 	_tmp110_ = vala_ccode_identifier_new ("object");
5557 	_tmp111_ = _tmp110_;
5558 	vala_ccode_function_call_add_argument (ref_call, (ValaCCodeExpression*) _tmp111_);
5559 	_vala_ccode_node_unref0 (_tmp111_);
5560 	_tmp112_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5561 	_tmp113_ = _tmp112_;
5562 	vala_ccode_function_add_assignment (_tmp113_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) ref_call);
5563 	_tmp114_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5564 	_tmp115_ = _tmp114_;
5565 	vala_ccode_function_add_else (_tmp115_);
5566 	_tmp116_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5567 	_tmp117_ = _tmp116_;
5568 	_tmp118_ = vala_ccode_constant_new ("NULL");
5569 	_tmp119_ = _tmp118_;
5570 	vala_ccode_function_add_assignment (_tmp117_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp119_);
5571 	_vala_ccode_node_unref0 (_tmp119_);
5572 	_tmp120_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5573 	_tmp121_ = _tmp120_;
5574 	vala_ccode_function_close (_tmp121_);
5575 	_tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5576 	_tmp123_ = _tmp122_;
5577 	_tmp124_ = vala_ccode_constant_new ("NULL");
5578 	_tmp125_ = _tmp124_;
5579 	vala_ccode_function_add_return (_tmp123_, (ValaCCodeExpression*) _tmp125_);
5580 	_vala_ccode_node_unref0 (_tmp125_);
5581 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
5582 	_tmp126_ = ((ValaCCodeBaseModule*) self)->cfile;
5583 	vala_ccode_file_add_function (_tmp126_, function);
5584 	_vala_ccode_node_unref0 (ref_call);
5585 	_vala_ccode_node_unref0 (type_name_fct);
5586 	_vala_ccode_node_unref0 (false_return);
5587 	_vala_ccode_node_unref0 (stored_type);
5588 	_vala_ccode_node_unref0 (type_check);
5589 	_vala_ccode_node_unref0 (reg_call);
5590 	_vala_ccode_node_unref0 (true_return);
5591 	_vala_ccode_node_unref0 (value_type_name_fct);
5592 	_vala_ccode_node_unref0 (sub_condition);
5593 	_vala_ccode_node_unref0 (l_expression);
5594 	_vala_ccode_node_unref0 (obj_identifier);
5595 	_vala_ccode_node_unref0 (collect_vpointer);
5596 	_vala_ccode_node_unref0 (vpointer);
5597 	_vala_ccode_node_unref0 (function);
5598 }
5599 
5600 static void
vala_gtype_module_add_g_param_spec_type_function(ValaGTypeModule * self,ValaClass * cl)5601 vala_gtype_module_add_g_param_spec_type_function (ValaGTypeModule* self,
5602                                                   ValaClass* cl)
5603 {
5604 	ValaCCodeFunction* function = NULL;
5605 	gchar* _tmp0_;
5606 	gchar* _tmp1_;
5607 	ValaCCodeFunction* _tmp2_;
5608 	ValaCCodeFunction* _tmp3_;
5609 	ValaCCodeFunction* _tmp4_;
5610 	ValaCCodeParameter* _tmp5_;
5611 	ValaCCodeParameter* _tmp6_;
5612 	ValaCCodeFunction* _tmp7_;
5613 	ValaCCodeParameter* _tmp8_;
5614 	ValaCCodeParameter* _tmp9_;
5615 	ValaCCodeFunction* _tmp10_;
5616 	ValaCCodeParameter* _tmp11_;
5617 	ValaCCodeParameter* _tmp12_;
5618 	ValaCCodeFunction* _tmp13_;
5619 	ValaCCodeParameter* _tmp14_;
5620 	ValaCCodeParameter* _tmp15_;
5621 	ValaCCodeFunction* _tmp16_;
5622 	ValaCCodeParameter* _tmp17_;
5623 	ValaCCodeParameter* _tmp18_;
5624 	ValaCCodeFunction* _tmp26_;
5625 	ValaCCodeFunction* _tmp27_;
5626 	ValaCCodeFunction* _tmp28_;
5627 	ValaSymbol* _tmp29_;
5628 	ValaSymbol* _tmp30_;
5629 	gchar* _tmp31_;
5630 	gchar* _tmp32_;
5631 	const gchar* _tmp33_;
5632 	const gchar* _tmp34_;
5633 	gchar* _tmp35_;
5634 	gchar* _tmp36_;
5635 	ValaCCodeVariableDeclarator* _tmp37_;
5636 	ValaCCodeVariableDeclarator* _tmp38_;
5637 	ValaCCodeFunctionCall* subccall = NULL;
5638 	ValaCCodeIdentifier* _tmp39_;
5639 	ValaCCodeIdentifier* _tmp40_;
5640 	ValaCCodeFunctionCall* _tmp41_;
5641 	ValaCCodeFunctionCall* _tmp42_;
5642 	ValaCCodeIdentifier* _tmp43_;
5643 	ValaCCodeIdentifier* _tmp44_;
5644 	gchar* _tmp45_;
5645 	gchar* _tmp46_;
5646 	ValaCCodeIdentifier* _tmp47_;
5647 	ValaCCodeIdentifier* _tmp48_;
5648 	ValaCCodeFunctionCall* ccall = NULL;
5649 	ValaCCodeIdentifier* _tmp49_;
5650 	ValaCCodeIdentifier* _tmp50_;
5651 	ValaCCodeFunctionCall* _tmp51_;
5652 	ValaCCodeFunctionCall* _tmp52_;
5653 	ValaCCodeFunctionCall* _tmp53_;
5654 	ValaCCodeFunctionCall* _tmp54_;
5655 	ValaCCodeConstant* _tmp55_;
5656 	ValaCCodeConstant* _tmp56_;
5657 	ValaCCodeFunction* _tmp57_;
5658 	ValaCCodeFunction* _tmp58_;
5659 	ValaCCodeFunctionCall* _tmp59_;
5660 	ValaCCodeIdentifier* _tmp60_;
5661 	ValaCCodeIdentifier* _tmp61_;
5662 	ValaCCodeFunctionCall* _tmp62_;
5663 	ValaCCodeFunctionCall* _tmp63_;
5664 	ValaCCodeIdentifier* _tmp64_;
5665 	ValaCCodeIdentifier* _tmp65_;
5666 	ValaCCodeFunctionCall* _tmp66_;
5667 	ValaCCodeIdentifier* _tmp67_;
5668 	ValaCCodeIdentifier* _tmp68_;
5669 	ValaCCodeFunctionCall* _tmp69_;
5670 	ValaCCodeIdentifier* _tmp70_;
5671 	ValaCCodeIdentifier* _tmp71_;
5672 	ValaCCodeFunctionCall* _tmp72_;
5673 	ValaCCodeIdentifier* _tmp73_;
5674 	ValaCCodeIdentifier* _tmp74_;
5675 	ValaCCodeFunctionCall* _tmp75_;
5676 	ValaCCodeIdentifier* _tmp76_;
5677 	ValaCCodeIdentifier* _tmp77_;
5678 	ValaCCodeFunction* _tmp78_;
5679 	ValaCCodeFunction* _tmp79_;
5680 	ValaCCodeIdentifier* _tmp80_;
5681 	ValaCCodeIdentifier* _tmp81_;
5682 	ValaCCodeFunctionCall* _tmp82_;
5683 	ValaCCodeIdentifier* _tmp83_;
5684 	ValaCCodeIdentifier* _tmp84_;
5685 	ValaCCodeFunctionCall* _tmp85_;
5686 	ValaCCodeFunctionCall* _tmp86_;
5687 	ValaCCodeIdentifier* _tmp87_;
5688 	ValaCCodeIdentifier* _tmp88_;
5689 	ValaCCodeFunction* _tmp89_;
5690 	ValaCCodeFunction* _tmp90_;
5691 	ValaCCodeFunctionCall* _tmp91_;
5692 	ValaCCodeMemberAccess* _tmp92_;
5693 	ValaCCodeMemberAccess* _tmp93_;
5694 	ValaCCodeIdentifier* _tmp94_;
5695 	ValaCCodeIdentifier* _tmp95_;
5696 	ValaCCodeFunction* _tmp96_;
5697 	ValaCCodeFunction* _tmp97_;
5698 	ValaCCodeFunctionCall* _tmp98_;
5699 	ValaCCodeFile* _tmp99_;
5700 	ValaCCodeFunction* _tmp100_;
5701 	g_return_if_fail (self != NULL);
5702 	g_return_if_fail (cl != NULL);
5703 	_tmp0_ = vala_get_ccode_param_spec_function ((ValaCodeNode*) cl);
5704 	_tmp1_ = _tmp0_;
5705 	_tmp2_ = vala_ccode_function_new (_tmp1_, "GParamSpec*");
5706 	_tmp3_ = _tmp2_;
5707 	_g_free0 (_tmp1_);
5708 	function = _tmp3_;
5709 	_tmp4_ = function;
5710 	_tmp5_ = vala_ccode_parameter_new ("name", "const gchar*");
5711 	_tmp6_ = _tmp5_;
5712 	vala_ccode_function_add_parameter (_tmp4_, _tmp6_);
5713 	_vala_ccode_node_unref0 (_tmp6_);
5714 	_tmp7_ = function;
5715 	_tmp8_ = vala_ccode_parameter_new ("nick", "const gchar*");
5716 	_tmp9_ = _tmp8_;
5717 	vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
5718 	_vala_ccode_node_unref0 (_tmp9_);
5719 	_tmp10_ = function;
5720 	_tmp11_ = vala_ccode_parameter_new ("blurb", "const gchar*");
5721 	_tmp12_ = _tmp11_;
5722 	vala_ccode_function_add_parameter (_tmp10_, _tmp12_);
5723 	_vala_ccode_node_unref0 (_tmp12_);
5724 	_tmp13_ = function;
5725 	_tmp14_ = vala_ccode_parameter_new ("object_type", "GType");
5726 	_tmp15_ = _tmp14_;
5727 	vala_ccode_function_add_parameter (_tmp13_, _tmp15_);
5728 	_vala_ccode_node_unref0 (_tmp15_);
5729 	_tmp16_ = function;
5730 	_tmp17_ = vala_ccode_parameter_new ("flags", "GParamFlags");
5731 	_tmp18_ = _tmp17_;
5732 	vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
5733 	_vala_ccode_node_unref0 (_tmp18_);
5734 	if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
5735 		ValaCCodeFunction* _tmp19_;
5736 		_tmp19_ = function;
5737 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp19_, VALA_CCODE_MODIFIERS_STATIC);
5738 	} else {
5739 		gboolean _tmp20_ = FALSE;
5740 		ValaCodeContext* _tmp21_;
5741 		ValaCodeContext* _tmp22_;
5742 		gboolean _tmp23_;
5743 		gboolean _tmp24_;
5744 		_tmp21_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
5745 		_tmp22_ = _tmp21_;
5746 		_tmp23_ = vala_code_context_get_hide_internal (_tmp22_);
5747 		_tmp24_ = _tmp23_;
5748 		if (_tmp24_) {
5749 			_tmp20_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
5750 		} else {
5751 			_tmp20_ = FALSE;
5752 		}
5753 		if (_tmp20_) {
5754 			ValaCCodeFunction* _tmp25_;
5755 			_tmp25_ = function;
5756 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp25_, VALA_CCODE_MODIFIERS_INTERNAL);
5757 		}
5758 	}
5759 	_tmp26_ = function;
5760 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp26_);
5761 	_tmp27_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5762 	_tmp28_ = _tmp27_;
5763 	_tmp29_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cl);
5764 	_tmp30_ = _tmp29_;
5765 	_tmp31_ = vala_get_ccode_prefix (_tmp30_);
5766 	_tmp32_ = _tmp31_;
5767 	_tmp33_ = vala_symbol_get_name ((ValaSymbol*) cl);
5768 	_tmp34_ = _tmp33_;
5769 	_tmp35_ = g_strdup_printf ("%sParamSpec%s*", _tmp32_, _tmp34_);
5770 	_tmp36_ = _tmp35_;
5771 	_tmp37_ = vala_ccode_variable_declarator_new ("spec", NULL, NULL);
5772 	_tmp38_ = _tmp37_;
5773 	vala_ccode_function_add_declaration (_tmp28_, _tmp36_, (ValaCCodeDeclarator*) _tmp38_, 0);
5774 	_vala_ccode_node_unref0 (_tmp38_);
5775 	_g_free0 (_tmp36_);
5776 	_g_free0 (_tmp32_);
5777 	_tmp39_ = vala_ccode_identifier_new ("g_type_is_a");
5778 	_tmp40_ = _tmp39_;
5779 	_tmp41_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp40_);
5780 	_tmp42_ = _tmp41_;
5781 	_vala_ccode_node_unref0 (_tmp40_);
5782 	subccall = _tmp42_;
5783 	_tmp43_ = vala_ccode_identifier_new ("object_type");
5784 	_tmp44_ = _tmp43_;
5785 	vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp44_);
5786 	_vala_ccode_node_unref0 (_tmp44_);
5787 	_tmp45_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
5788 	_tmp46_ = _tmp45_;
5789 	_tmp47_ = vala_ccode_identifier_new (_tmp46_);
5790 	_tmp48_ = _tmp47_;
5791 	vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp48_);
5792 	_vala_ccode_node_unref0 (_tmp48_);
5793 	_g_free0 (_tmp46_);
5794 	_tmp49_ = vala_ccode_identifier_new ("g_return_val_if_fail");
5795 	_tmp50_ = _tmp49_;
5796 	_tmp51_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp50_);
5797 	_tmp52_ = _tmp51_;
5798 	_vala_ccode_node_unref0 (_tmp50_);
5799 	ccall = _tmp52_;
5800 	_tmp53_ = ccall;
5801 	vala_ccode_function_call_add_argument (_tmp53_, (ValaCCodeExpression*) subccall);
5802 	_tmp54_ = ccall;
5803 	_tmp55_ = vala_ccode_constant_new ("NULL");
5804 	_tmp56_ = _tmp55_;
5805 	vala_ccode_function_call_add_argument (_tmp54_, (ValaCCodeExpression*) _tmp56_);
5806 	_vala_ccode_node_unref0 (_tmp56_);
5807 	_tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5808 	_tmp58_ = _tmp57_;
5809 	_tmp59_ = ccall;
5810 	vala_ccode_function_add_expression (_tmp58_, (ValaCCodeExpression*) _tmp59_);
5811 	_tmp60_ = vala_ccode_identifier_new ("g_param_spec_internal");
5812 	_tmp61_ = _tmp60_;
5813 	_tmp62_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp61_);
5814 	_vala_ccode_node_unref0 (ccall);
5815 	ccall = _tmp62_;
5816 	_vala_ccode_node_unref0 (_tmp61_);
5817 	_tmp63_ = ccall;
5818 	_tmp64_ = vala_ccode_identifier_new ("G_TYPE_PARAM_OBJECT");
5819 	_tmp65_ = _tmp64_;
5820 	vala_ccode_function_call_add_argument (_tmp63_, (ValaCCodeExpression*) _tmp65_);
5821 	_vala_ccode_node_unref0 (_tmp65_);
5822 	_tmp66_ = ccall;
5823 	_tmp67_ = vala_ccode_identifier_new ("name");
5824 	_tmp68_ = _tmp67_;
5825 	vala_ccode_function_call_add_argument (_tmp66_, (ValaCCodeExpression*) _tmp68_);
5826 	_vala_ccode_node_unref0 (_tmp68_);
5827 	_tmp69_ = ccall;
5828 	_tmp70_ = vala_ccode_identifier_new ("nick");
5829 	_tmp71_ = _tmp70_;
5830 	vala_ccode_function_call_add_argument (_tmp69_, (ValaCCodeExpression*) _tmp71_);
5831 	_vala_ccode_node_unref0 (_tmp71_);
5832 	_tmp72_ = ccall;
5833 	_tmp73_ = vala_ccode_identifier_new ("blurb");
5834 	_tmp74_ = _tmp73_;
5835 	vala_ccode_function_call_add_argument (_tmp72_, (ValaCCodeExpression*) _tmp74_);
5836 	_vala_ccode_node_unref0 (_tmp74_);
5837 	_tmp75_ = ccall;
5838 	_tmp76_ = vala_ccode_identifier_new ("flags");
5839 	_tmp77_ = _tmp76_;
5840 	vala_ccode_function_call_add_argument (_tmp75_, (ValaCCodeExpression*) _tmp77_);
5841 	_vala_ccode_node_unref0 (_tmp77_);
5842 	_tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5843 	_tmp79_ = _tmp78_;
5844 	_tmp80_ = vala_ccode_identifier_new ("spec");
5845 	_tmp81_ = _tmp80_;
5846 	_tmp82_ = ccall;
5847 	vala_ccode_function_add_assignment (_tmp79_, (ValaCCodeExpression*) _tmp81_, (ValaCCodeExpression*) _tmp82_);
5848 	_vala_ccode_node_unref0 (_tmp81_);
5849 	_tmp83_ = vala_ccode_identifier_new ("G_PARAM_SPEC");
5850 	_tmp84_ = _tmp83_;
5851 	_tmp85_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp84_);
5852 	_vala_ccode_node_unref0 (ccall);
5853 	ccall = _tmp85_;
5854 	_vala_ccode_node_unref0 (_tmp84_);
5855 	_tmp86_ = ccall;
5856 	_tmp87_ = vala_ccode_identifier_new ("spec");
5857 	_tmp88_ = _tmp87_;
5858 	vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp88_);
5859 	_vala_ccode_node_unref0 (_tmp88_);
5860 	_tmp89_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5861 	_tmp90_ = _tmp89_;
5862 	_tmp91_ = ccall;
5863 	_tmp92_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp91_, "value_type");
5864 	_tmp93_ = _tmp92_;
5865 	_tmp94_ = vala_ccode_identifier_new ("object_type");
5866 	_tmp95_ = _tmp94_;
5867 	vala_ccode_function_add_assignment (_tmp90_, (ValaCCodeExpression*) _tmp93_, (ValaCCodeExpression*) _tmp95_);
5868 	_vala_ccode_node_unref0 (_tmp95_);
5869 	_vala_ccode_node_unref0 (_tmp93_);
5870 	_tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5871 	_tmp97_ = _tmp96_;
5872 	_tmp98_ = ccall;
5873 	vala_ccode_function_add_return (_tmp97_, (ValaCCodeExpression*) _tmp98_);
5874 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
5875 	_tmp99_ = ((ValaCCodeBaseModule*) self)->cfile;
5876 	_tmp100_ = function;
5877 	vala_ccode_file_add_function (_tmp99_, _tmp100_);
5878 	_vala_ccode_node_unref0 (ccall);
5879 	_vala_ccode_node_unref0 (subccall);
5880 	_vala_ccode_node_unref0 (function);
5881 }
5882 
5883 static void
vala_gtype_module_add_g_value_set_function(ValaGTypeModule * self,ValaClass * cl)5884 vala_gtype_module_add_g_value_set_function (ValaGTypeModule* self,
5885                                             ValaClass* cl)
5886 {
5887 	ValaCCodeFunction* function = NULL;
5888 	gchar* _tmp0_;
5889 	gchar* _tmp1_;
5890 	ValaCCodeFunction* _tmp2_;
5891 	ValaCCodeFunction* _tmp3_;
5892 	ValaCCodeFunction* _tmp4_;
5893 	ValaCCodeParameter* _tmp5_;
5894 	ValaCCodeParameter* _tmp6_;
5895 	ValaCCodeFunction* _tmp7_;
5896 	ValaCCodeParameter* _tmp8_;
5897 	ValaCCodeParameter* _tmp9_;
5898 	ValaCCodeMemberAccess* vpointer = NULL;
5899 	ValaCCodeIdentifier* _tmp17_;
5900 	ValaCCodeIdentifier* _tmp18_;
5901 	ValaCCodeMemberAccess* _tmp19_;
5902 	ValaCCodeMemberAccess* _tmp20_;
5903 	ValaCCodeMemberAccess* _tmp21_;
5904 	ValaCCodeMemberAccess* _tmp22_;
5905 	ValaCCodeFunction* _tmp23_;
5906 	ValaCCodeFunction* _tmp24_;
5907 	ValaCCodeFunction* _tmp25_;
5908 	gchar* _tmp26_;
5909 	gchar* _tmp27_;
5910 	gchar* _tmp28_;
5911 	gchar* _tmp29_;
5912 	ValaCCodeVariableDeclarator* _tmp30_;
5913 	ValaCCodeVariableDeclarator* _tmp31_;
5914 	ValaCCodeFunctionCall* ccall_typecheck = NULL;
5915 	ValaCCodeIdentifier* _tmp32_;
5916 	ValaCCodeIdentifier* _tmp33_;
5917 	ValaCCodeFunctionCall* _tmp34_;
5918 	ValaCCodeFunctionCall* _tmp35_;
5919 	ValaCCodeFunctionCall* _tmp36_;
5920 	ValaCCodeIdentifier* _tmp37_;
5921 	ValaCCodeIdentifier* _tmp38_;
5922 	ValaCCodeFunctionCall* _tmp39_;
5923 	gchar* _tmp40_;
5924 	gchar* _tmp41_;
5925 	ValaCCodeIdentifier* _tmp42_;
5926 	ValaCCodeIdentifier* _tmp43_;
5927 	ValaCCodeFunctionCall* ccall = NULL;
5928 	ValaCCodeIdentifier* _tmp44_;
5929 	ValaCCodeIdentifier* _tmp45_;
5930 	ValaCCodeFunctionCall* _tmp46_;
5931 	ValaCCodeFunctionCall* _tmp47_;
5932 	ValaCCodeFunctionCall* _tmp48_;
5933 	ValaCCodeFunctionCall* _tmp49_;
5934 	ValaCCodeFunction* _tmp50_;
5935 	ValaCCodeFunction* _tmp51_;
5936 	ValaCCodeFunctionCall* _tmp52_;
5937 	ValaCCodeFunction* _tmp53_;
5938 	ValaCCodeFunction* _tmp54_;
5939 	ValaCCodeConstant* _tmp55_;
5940 	ValaCCodeConstant* _tmp56_;
5941 	ValaCCodeFunction* _tmp57_;
5942 	ValaCCodeFunction* _tmp58_;
5943 	ValaCCodeIdentifier* _tmp59_;
5944 	ValaCCodeIdentifier* _tmp60_;
5945 	ValaCCodeIdentifier* _tmp61_;
5946 	ValaCCodeIdentifier* _tmp62_;
5947 	ValaCCodeFunctionCall* _tmp63_;
5948 	ValaCCodeFunctionCall* _tmp64_;
5949 	ValaCCodeIdentifier* _tmp65_;
5950 	ValaCCodeIdentifier* _tmp66_;
5951 	ValaCCodeFunctionCall* _tmp67_;
5952 	gchar* _tmp68_;
5953 	gchar* _tmp69_;
5954 	ValaCCodeIdentifier* _tmp70_;
5955 	ValaCCodeIdentifier* _tmp71_;
5956 	ValaCCodeIdentifier* _tmp72_;
5957 	ValaCCodeIdentifier* _tmp73_;
5958 	ValaCCodeFunctionCall* _tmp74_;
5959 	ValaCCodeFunctionCall* _tmp75_;
5960 	ValaCCodeFunctionCall* _tmp76_;
5961 	ValaCCodeFunction* _tmp77_;
5962 	ValaCCodeFunction* _tmp78_;
5963 	ValaCCodeFunctionCall* _tmp79_;
5964 	ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
5965 	ValaCCodeIdentifier* _tmp80_;
5966 	ValaCCodeIdentifier* _tmp81_;
5967 	ValaCCodeFunctionCall* _tmp82_;
5968 	ValaCCodeFunctionCall* _tmp83_;
5969 	ValaCCodeIdentifier* _tmp84_;
5970 	ValaCCodeIdentifier* _tmp85_;
5971 	ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
5972 	ValaCCodeIdentifier* _tmp86_;
5973 	ValaCCodeIdentifier* _tmp87_;
5974 	ValaCCodeFunctionCall* _tmp88_;
5975 	ValaCCodeFunctionCall* _tmp89_;
5976 	ValaCCodeIdentifier* _tmp90_;
5977 	ValaCCodeIdentifier* _tmp91_;
5978 	ValaCCodeFunctionCall* ccall_typecompatible = NULL;
5979 	ValaCCodeIdentifier* _tmp92_;
5980 	ValaCCodeIdentifier* _tmp93_;
5981 	ValaCCodeFunctionCall* _tmp94_;
5982 	ValaCCodeFunctionCall* _tmp95_;
5983 	ValaCCodeIdentifier* _tmp96_;
5984 	ValaCCodeIdentifier* _tmp97_;
5985 	ValaCCodeFunctionCall* _tmp98_;
5986 	ValaCCodeFunctionCall* _tmp99_;
5987 	ValaCCodeFunction* _tmp100_;
5988 	ValaCCodeFunction* _tmp101_;
5989 	ValaCCodeFunctionCall* _tmp102_;
5990 	ValaCCodeFunction* _tmp103_;
5991 	ValaCCodeFunction* _tmp104_;
5992 	ValaCCodeConstant* _tmp105_;
5993 	ValaCCodeConstant* _tmp106_;
5994 	gchar* _tmp107_;
5995 	gchar* _tmp108_;
5996 	ValaCCodeIdentifier* _tmp109_;
5997 	ValaCCodeIdentifier* _tmp110_;
5998 	ValaCCodeFunctionCall* _tmp111_;
5999 	ValaCCodeFunctionCall* _tmp112_;
6000 	ValaCCodeFunction* _tmp113_;
6001 	ValaCCodeFunction* _tmp114_;
6002 	ValaCCodeFunctionCall* _tmp115_;
6003 	ValaCCodeFunction* _tmp116_;
6004 	ValaCCodeFunction* _tmp117_;
6005 	ValaCCodeFunction* _tmp118_;
6006 	ValaCCodeFunction* _tmp119_;
6007 	ValaCCodeConstant* _tmp120_;
6008 	ValaCCodeConstant* _tmp121_;
6009 	ValaCCodeFunction* _tmp122_;
6010 	ValaCCodeFunction* _tmp123_;
6011 	ValaCCodeFunction* _tmp124_;
6012 	ValaCCodeFunction* _tmp125_;
6013 	ValaCCodeIdentifier* _tmp126_;
6014 	ValaCCodeIdentifier* _tmp127_;
6015 	gchar* _tmp128_;
6016 	gchar* _tmp129_;
6017 	ValaCCodeIdentifier* _tmp130_;
6018 	ValaCCodeIdentifier* _tmp131_;
6019 	ValaCCodeFunctionCall* _tmp132_;
6020 	ValaCCodeFunctionCall* _tmp133_;
6021 	ValaCCodeIdentifier* _tmp134_;
6022 	ValaCCodeIdentifier* _tmp135_;
6023 	ValaCCodeFunction* _tmp136_;
6024 	ValaCCodeFunction* _tmp137_;
6025 	ValaCCodeFunctionCall* _tmp138_;
6026 	ValaCCodeFunction* _tmp139_;
6027 	ValaCCodeFunction* _tmp140_;
6028 	ValaCCodeFile* _tmp141_;
6029 	ValaCCodeFunction* _tmp142_;
6030 	g_return_if_fail (self != NULL);
6031 	g_return_if_fail (cl != NULL);
6032 	_tmp0_ = vala_get_ccode_set_value_function ((ValaCodeNode*) cl);
6033 	_tmp1_ = _tmp0_;
6034 	_tmp2_ = vala_ccode_function_new (_tmp1_, "void");
6035 	_tmp3_ = _tmp2_;
6036 	_g_free0 (_tmp1_);
6037 	function = _tmp3_;
6038 	_tmp4_ = function;
6039 	_tmp5_ = vala_ccode_parameter_new ("value", "GValue*");
6040 	_tmp6_ = _tmp5_;
6041 	vala_ccode_function_add_parameter (_tmp4_, _tmp6_);
6042 	_vala_ccode_node_unref0 (_tmp6_);
6043 	_tmp7_ = function;
6044 	_tmp8_ = vala_ccode_parameter_new ("v_object", "gpointer");
6045 	_tmp9_ = _tmp8_;
6046 	vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
6047 	_vala_ccode_node_unref0 (_tmp9_);
6048 	if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
6049 		ValaCCodeFunction* _tmp10_;
6050 		_tmp10_ = function;
6051 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp10_, VALA_CCODE_MODIFIERS_STATIC);
6052 	} else {
6053 		gboolean _tmp11_ = FALSE;
6054 		ValaCodeContext* _tmp12_;
6055 		ValaCodeContext* _tmp13_;
6056 		gboolean _tmp14_;
6057 		gboolean _tmp15_;
6058 		_tmp12_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
6059 		_tmp13_ = _tmp12_;
6060 		_tmp14_ = vala_code_context_get_hide_internal (_tmp13_);
6061 		_tmp15_ = _tmp14_;
6062 		if (_tmp15_) {
6063 			_tmp11_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
6064 		} else {
6065 			_tmp11_ = FALSE;
6066 		}
6067 		if (_tmp11_) {
6068 			ValaCCodeFunction* _tmp16_;
6069 			_tmp16_ = function;
6070 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp16_, VALA_CCODE_MODIFIERS_INTERNAL);
6071 		}
6072 	}
6073 	_tmp17_ = vala_ccode_identifier_new ("value");
6074 	_tmp18_ = _tmp17_;
6075 	_tmp19_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp18_, "data[0]");
6076 	_tmp20_ = _tmp19_;
6077 	_tmp21_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp20_, "v_pointer", FALSE);
6078 	_tmp22_ = _tmp21_;
6079 	_vala_ccode_node_unref0 (_tmp20_);
6080 	_vala_ccode_node_unref0 (_tmp18_);
6081 	vpointer = _tmp22_;
6082 	_tmp23_ = function;
6083 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp23_);
6084 	_tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6085 	_tmp25_ = _tmp24_;
6086 	_tmp26_ = vala_get_ccode_name ((ValaCodeNode*) cl);
6087 	_tmp27_ = _tmp26_;
6088 	_tmp28_ = g_strdup_printf ("%s *", _tmp27_);
6089 	_tmp29_ = _tmp28_;
6090 	_tmp30_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
6091 	_tmp31_ = _tmp30_;
6092 	vala_ccode_function_add_declaration (_tmp25_, _tmp29_, (ValaCCodeDeclarator*) _tmp31_, 0);
6093 	_vala_ccode_node_unref0 (_tmp31_);
6094 	_g_free0 (_tmp29_);
6095 	_g_free0 (_tmp27_);
6096 	_tmp32_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
6097 	_tmp33_ = _tmp32_;
6098 	_tmp34_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp33_);
6099 	_tmp35_ = _tmp34_;
6100 	_vala_ccode_node_unref0 (_tmp33_);
6101 	ccall_typecheck = _tmp35_;
6102 	_tmp36_ = ccall_typecheck;
6103 	_tmp37_ = vala_ccode_identifier_new ("value");
6104 	_tmp38_ = _tmp37_;
6105 	vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp38_);
6106 	_vala_ccode_node_unref0 (_tmp38_);
6107 	_tmp39_ = ccall_typecheck;
6108 	_tmp40_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
6109 	_tmp41_ = _tmp40_;
6110 	_tmp42_ = vala_ccode_identifier_new (_tmp41_);
6111 	_tmp43_ = _tmp42_;
6112 	vala_ccode_function_call_add_argument (_tmp39_, (ValaCCodeExpression*) _tmp43_);
6113 	_vala_ccode_node_unref0 (_tmp43_);
6114 	_g_free0 (_tmp41_);
6115 	_tmp44_ = vala_ccode_identifier_new ("g_return_if_fail");
6116 	_tmp45_ = _tmp44_;
6117 	_tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
6118 	_tmp47_ = _tmp46_;
6119 	_vala_ccode_node_unref0 (_tmp45_);
6120 	ccall = _tmp47_;
6121 	_tmp48_ = ccall;
6122 	_tmp49_ = ccall_typecheck;
6123 	vala_ccode_function_call_add_argument (_tmp48_, (ValaCCodeExpression*) _tmp49_);
6124 	_tmp50_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6125 	_tmp51_ = _tmp50_;
6126 	_tmp52_ = ccall;
6127 	vala_ccode_function_add_expression (_tmp51_, (ValaCCodeExpression*) _tmp52_);
6128 	_tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6129 	_tmp54_ = _tmp53_;
6130 	_tmp55_ = vala_ccode_constant_new ("old");
6131 	_tmp56_ = _tmp55_;
6132 	vala_ccode_function_add_assignment (_tmp54_, (ValaCCodeExpression*) _tmp56_, (ValaCCodeExpression*) vpointer);
6133 	_vala_ccode_node_unref0 (_tmp56_);
6134 	_tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6135 	_tmp58_ = _tmp57_;
6136 	_tmp59_ = vala_ccode_identifier_new ("v_object");
6137 	_tmp60_ = _tmp59_;
6138 	vala_ccode_function_open_if (_tmp58_, (ValaCCodeExpression*) _tmp60_);
6139 	_vala_ccode_node_unref0 (_tmp60_);
6140 	_tmp61_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
6141 	_tmp62_ = _tmp61_;
6142 	_tmp63_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp62_);
6143 	_vala_ccode_node_unref0 (ccall_typecheck);
6144 	ccall_typecheck = _tmp63_;
6145 	_vala_ccode_node_unref0 (_tmp62_);
6146 	_tmp64_ = ccall_typecheck;
6147 	_tmp65_ = vala_ccode_identifier_new ("v_object");
6148 	_tmp66_ = _tmp65_;
6149 	vala_ccode_function_call_add_argument (_tmp64_, (ValaCCodeExpression*) _tmp66_);
6150 	_vala_ccode_node_unref0 (_tmp66_);
6151 	_tmp67_ = ccall_typecheck;
6152 	_tmp68_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
6153 	_tmp69_ = _tmp68_;
6154 	_tmp70_ = vala_ccode_identifier_new (_tmp69_);
6155 	_tmp71_ = _tmp70_;
6156 	vala_ccode_function_call_add_argument (_tmp67_, (ValaCCodeExpression*) _tmp71_);
6157 	_vala_ccode_node_unref0 (_tmp71_);
6158 	_g_free0 (_tmp69_);
6159 	_tmp72_ = vala_ccode_identifier_new ("g_return_if_fail");
6160 	_tmp73_ = _tmp72_;
6161 	_tmp74_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp73_);
6162 	_vala_ccode_node_unref0 (ccall);
6163 	ccall = _tmp74_;
6164 	_vala_ccode_node_unref0 (_tmp73_);
6165 	_tmp75_ = ccall;
6166 	_tmp76_ = ccall_typecheck;
6167 	vala_ccode_function_call_add_argument (_tmp75_, (ValaCCodeExpression*) _tmp76_);
6168 	_tmp77_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6169 	_tmp78_ = _tmp77_;
6170 	_tmp79_ = ccall;
6171 	vala_ccode_function_add_expression (_tmp78_, (ValaCCodeExpression*) _tmp79_);
6172 	_tmp80_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
6173 	_tmp81_ = _tmp80_;
6174 	_tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
6175 	_tmp83_ = _tmp82_;
6176 	_vala_ccode_node_unref0 (_tmp81_);
6177 	ccall_typefrominstance = _tmp83_;
6178 	_tmp84_ = vala_ccode_identifier_new ("v_object");
6179 	_tmp85_ = _tmp84_;
6180 	vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp85_);
6181 	_vala_ccode_node_unref0 (_tmp85_);
6182 	_tmp86_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
6183 	_tmp87_ = _tmp86_;
6184 	_tmp88_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp87_);
6185 	_tmp89_ = _tmp88_;
6186 	_vala_ccode_node_unref0 (_tmp87_);
6187 	ccall_gvaluetype = _tmp89_;
6188 	_tmp90_ = vala_ccode_identifier_new ("value");
6189 	_tmp91_ = _tmp90_;
6190 	vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp91_);
6191 	_vala_ccode_node_unref0 (_tmp91_);
6192 	_tmp92_ = vala_ccode_identifier_new ("g_value_type_compatible");
6193 	_tmp93_ = _tmp92_;
6194 	_tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_);
6195 	_tmp95_ = _tmp94_;
6196 	_vala_ccode_node_unref0 (_tmp93_);
6197 	ccall_typecompatible = _tmp95_;
6198 	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
6199 	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
6200 	_tmp96_ = vala_ccode_identifier_new ("g_return_if_fail");
6201 	_tmp97_ = _tmp96_;
6202 	_tmp98_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp97_);
6203 	_vala_ccode_node_unref0 (ccall);
6204 	ccall = _tmp98_;
6205 	_vala_ccode_node_unref0 (_tmp97_);
6206 	_tmp99_ = ccall;
6207 	vala_ccode_function_call_add_argument (_tmp99_, (ValaCCodeExpression*) ccall_typecompatible);
6208 	_tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6209 	_tmp101_ = _tmp100_;
6210 	_tmp102_ = ccall;
6211 	vala_ccode_function_add_expression (_tmp101_, (ValaCCodeExpression*) _tmp102_);
6212 	_tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6213 	_tmp104_ = _tmp103_;
6214 	_tmp105_ = vala_ccode_constant_new ("v_object");
6215 	_tmp106_ = _tmp105_;
6216 	vala_ccode_function_add_assignment (_tmp104_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp106_);
6217 	_vala_ccode_node_unref0 (_tmp106_);
6218 	_tmp107_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
6219 	_tmp108_ = _tmp107_;
6220 	_tmp109_ = vala_ccode_identifier_new (_tmp108_);
6221 	_tmp110_ = _tmp109_;
6222 	_tmp111_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp110_);
6223 	_vala_ccode_node_unref0 (ccall);
6224 	ccall = _tmp111_;
6225 	_vala_ccode_node_unref0 (_tmp110_);
6226 	_g_free0 (_tmp108_);
6227 	_tmp112_ = ccall;
6228 	vala_ccode_function_call_add_argument (_tmp112_, (ValaCCodeExpression*) vpointer);
6229 	_tmp113_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6230 	_tmp114_ = _tmp113_;
6231 	_tmp115_ = ccall;
6232 	vala_ccode_function_add_expression (_tmp114_, (ValaCCodeExpression*) _tmp115_);
6233 	_tmp116_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6234 	_tmp117_ = _tmp116_;
6235 	vala_ccode_function_add_else (_tmp117_);
6236 	_tmp118_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6237 	_tmp119_ = _tmp118_;
6238 	_tmp120_ = vala_ccode_constant_new ("NULL");
6239 	_tmp121_ = _tmp120_;
6240 	vala_ccode_function_add_assignment (_tmp119_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp121_);
6241 	_vala_ccode_node_unref0 (_tmp121_);
6242 	_tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6243 	_tmp123_ = _tmp122_;
6244 	vala_ccode_function_close (_tmp123_);
6245 	_tmp124_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6246 	_tmp125_ = _tmp124_;
6247 	_tmp126_ = vala_ccode_identifier_new ("old");
6248 	_tmp127_ = _tmp126_;
6249 	vala_ccode_function_open_if (_tmp125_, (ValaCCodeExpression*) _tmp127_);
6250 	_vala_ccode_node_unref0 (_tmp127_);
6251 	_tmp128_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) cl);
6252 	_tmp129_ = _tmp128_;
6253 	_tmp130_ = vala_ccode_identifier_new (_tmp129_);
6254 	_tmp131_ = _tmp130_;
6255 	_tmp132_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp131_);
6256 	_vala_ccode_node_unref0 (ccall);
6257 	ccall = _tmp132_;
6258 	_vala_ccode_node_unref0 (_tmp131_);
6259 	_g_free0 (_tmp129_);
6260 	_tmp133_ = ccall;
6261 	_tmp134_ = vala_ccode_identifier_new ("old");
6262 	_tmp135_ = _tmp134_;
6263 	vala_ccode_function_call_add_argument (_tmp133_, (ValaCCodeExpression*) _tmp135_);
6264 	_vala_ccode_node_unref0 (_tmp135_);
6265 	_tmp136_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6266 	_tmp137_ = _tmp136_;
6267 	_tmp138_ = ccall;
6268 	vala_ccode_function_add_expression (_tmp137_, (ValaCCodeExpression*) _tmp138_);
6269 	_tmp139_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6270 	_tmp140_ = _tmp139_;
6271 	vala_ccode_function_close (_tmp140_);
6272 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
6273 	_tmp141_ = ((ValaCCodeBaseModule*) self)->cfile;
6274 	_tmp142_ = function;
6275 	vala_ccode_file_add_function (_tmp141_, _tmp142_);
6276 	_vala_ccode_node_unref0 (ccall_typecompatible);
6277 	_vala_ccode_node_unref0 (ccall_gvaluetype);
6278 	_vala_ccode_node_unref0 (ccall_typefrominstance);
6279 	_vala_ccode_node_unref0 (ccall);
6280 	_vala_ccode_node_unref0 (ccall_typecheck);
6281 	_vala_ccode_node_unref0 (vpointer);
6282 	_vala_ccode_node_unref0 (function);
6283 }
6284 
6285 static void
vala_gtype_module_add_g_value_take_function(ValaGTypeModule * self,ValaClass * cl)6286 vala_gtype_module_add_g_value_take_function (ValaGTypeModule* self,
6287                                              ValaClass* cl)
6288 {
6289 	ValaCCodeFunction* function = NULL;
6290 	gchar* _tmp0_;
6291 	gchar* _tmp1_;
6292 	ValaCCodeFunction* _tmp2_;
6293 	ValaCCodeFunction* _tmp3_;
6294 	ValaCCodeFunction* _tmp4_;
6295 	ValaCCodeParameter* _tmp5_;
6296 	ValaCCodeParameter* _tmp6_;
6297 	ValaCCodeFunction* _tmp7_;
6298 	ValaCCodeParameter* _tmp8_;
6299 	ValaCCodeParameter* _tmp9_;
6300 	ValaCCodeMemberAccess* vpointer = NULL;
6301 	ValaCCodeIdentifier* _tmp17_;
6302 	ValaCCodeIdentifier* _tmp18_;
6303 	ValaCCodeMemberAccess* _tmp19_;
6304 	ValaCCodeMemberAccess* _tmp20_;
6305 	ValaCCodeMemberAccess* _tmp21_;
6306 	ValaCCodeMemberAccess* _tmp22_;
6307 	ValaCCodeFunction* _tmp23_;
6308 	ValaCCodeFunction* _tmp24_;
6309 	ValaCCodeFunction* _tmp25_;
6310 	gchar* _tmp26_;
6311 	gchar* _tmp27_;
6312 	gchar* _tmp28_;
6313 	gchar* _tmp29_;
6314 	ValaCCodeVariableDeclarator* _tmp30_;
6315 	ValaCCodeVariableDeclarator* _tmp31_;
6316 	ValaCCodeFunctionCall* ccall_typecheck = NULL;
6317 	ValaCCodeIdentifier* _tmp32_;
6318 	ValaCCodeIdentifier* _tmp33_;
6319 	ValaCCodeFunctionCall* _tmp34_;
6320 	ValaCCodeFunctionCall* _tmp35_;
6321 	ValaCCodeFunctionCall* _tmp36_;
6322 	ValaCCodeIdentifier* _tmp37_;
6323 	ValaCCodeIdentifier* _tmp38_;
6324 	ValaCCodeFunctionCall* _tmp39_;
6325 	gchar* _tmp40_;
6326 	gchar* _tmp41_;
6327 	ValaCCodeIdentifier* _tmp42_;
6328 	ValaCCodeIdentifier* _tmp43_;
6329 	ValaCCodeFunctionCall* ccall = NULL;
6330 	ValaCCodeIdentifier* _tmp44_;
6331 	ValaCCodeIdentifier* _tmp45_;
6332 	ValaCCodeFunctionCall* _tmp46_;
6333 	ValaCCodeFunctionCall* _tmp47_;
6334 	ValaCCodeFunctionCall* _tmp48_;
6335 	ValaCCodeFunctionCall* _tmp49_;
6336 	ValaCCodeFunction* _tmp50_;
6337 	ValaCCodeFunction* _tmp51_;
6338 	ValaCCodeFunctionCall* _tmp52_;
6339 	ValaCCodeFunction* _tmp53_;
6340 	ValaCCodeFunction* _tmp54_;
6341 	ValaCCodeConstant* _tmp55_;
6342 	ValaCCodeConstant* _tmp56_;
6343 	ValaCCodeFunction* _tmp57_;
6344 	ValaCCodeFunction* _tmp58_;
6345 	ValaCCodeIdentifier* _tmp59_;
6346 	ValaCCodeIdentifier* _tmp60_;
6347 	ValaCCodeIdentifier* _tmp61_;
6348 	ValaCCodeIdentifier* _tmp62_;
6349 	ValaCCodeFunctionCall* _tmp63_;
6350 	ValaCCodeFunctionCall* _tmp64_;
6351 	ValaCCodeIdentifier* _tmp65_;
6352 	ValaCCodeIdentifier* _tmp66_;
6353 	ValaCCodeFunctionCall* _tmp67_;
6354 	gchar* _tmp68_;
6355 	gchar* _tmp69_;
6356 	ValaCCodeIdentifier* _tmp70_;
6357 	ValaCCodeIdentifier* _tmp71_;
6358 	ValaCCodeIdentifier* _tmp72_;
6359 	ValaCCodeIdentifier* _tmp73_;
6360 	ValaCCodeFunctionCall* _tmp74_;
6361 	ValaCCodeFunctionCall* _tmp75_;
6362 	ValaCCodeFunctionCall* _tmp76_;
6363 	ValaCCodeFunction* _tmp77_;
6364 	ValaCCodeFunction* _tmp78_;
6365 	ValaCCodeFunctionCall* _tmp79_;
6366 	ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
6367 	ValaCCodeIdentifier* _tmp80_;
6368 	ValaCCodeIdentifier* _tmp81_;
6369 	ValaCCodeFunctionCall* _tmp82_;
6370 	ValaCCodeFunctionCall* _tmp83_;
6371 	ValaCCodeIdentifier* _tmp84_;
6372 	ValaCCodeIdentifier* _tmp85_;
6373 	ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
6374 	ValaCCodeIdentifier* _tmp86_;
6375 	ValaCCodeIdentifier* _tmp87_;
6376 	ValaCCodeFunctionCall* _tmp88_;
6377 	ValaCCodeFunctionCall* _tmp89_;
6378 	ValaCCodeIdentifier* _tmp90_;
6379 	ValaCCodeIdentifier* _tmp91_;
6380 	ValaCCodeFunctionCall* ccall_typecompatible = NULL;
6381 	ValaCCodeIdentifier* _tmp92_;
6382 	ValaCCodeIdentifier* _tmp93_;
6383 	ValaCCodeFunctionCall* _tmp94_;
6384 	ValaCCodeFunctionCall* _tmp95_;
6385 	ValaCCodeIdentifier* _tmp96_;
6386 	ValaCCodeIdentifier* _tmp97_;
6387 	ValaCCodeFunctionCall* _tmp98_;
6388 	ValaCCodeFunctionCall* _tmp99_;
6389 	ValaCCodeFunction* _tmp100_;
6390 	ValaCCodeFunction* _tmp101_;
6391 	ValaCCodeFunctionCall* _tmp102_;
6392 	ValaCCodeFunction* _tmp103_;
6393 	ValaCCodeFunction* _tmp104_;
6394 	ValaCCodeConstant* _tmp105_;
6395 	ValaCCodeConstant* _tmp106_;
6396 	ValaCCodeFunction* _tmp107_;
6397 	ValaCCodeFunction* _tmp108_;
6398 	ValaCCodeFunction* _tmp109_;
6399 	ValaCCodeFunction* _tmp110_;
6400 	ValaCCodeConstant* _tmp111_;
6401 	ValaCCodeConstant* _tmp112_;
6402 	ValaCCodeFunction* _tmp113_;
6403 	ValaCCodeFunction* _tmp114_;
6404 	ValaCCodeFunction* _tmp115_;
6405 	ValaCCodeFunction* _tmp116_;
6406 	ValaCCodeIdentifier* _tmp117_;
6407 	ValaCCodeIdentifier* _tmp118_;
6408 	gchar* _tmp119_;
6409 	gchar* _tmp120_;
6410 	ValaCCodeIdentifier* _tmp121_;
6411 	ValaCCodeIdentifier* _tmp122_;
6412 	ValaCCodeFunctionCall* _tmp123_;
6413 	ValaCCodeFunctionCall* _tmp124_;
6414 	ValaCCodeIdentifier* _tmp125_;
6415 	ValaCCodeIdentifier* _tmp126_;
6416 	ValaCCodeFunction* _tmp127_;
6417 	ValaCCodeFunction* _tmp128_;
6418 	ValaCCodeFunctionCall* _tmp129_;
6419 	ValaCCodeFunction* _tmp130_;
6420 	ValaCCodeFunction* _tmp131_;
6421 	ValaCCodeFile* _tmp132_;
6422 	ValaCCodeFunction* _tmp133_;
6423 	g_return_if_fail (self != NULL);
6424 	g_return_if_fail (cl != NULL);
6425 	_tmp0_ = vala_get_ccode_take_value_function ((ValaCodeNode*) cl);
6426 	_tmp1_ = _tmp0_;
6427 	_tmp2_ = vala_ccode_function_new (_tmp1_, "void");
6428 	_tmp3_ = _tmp2_;
6429 	_g_free0 (_tmp1_);
6430 	function = _tmp3_;
6431 	_tmp4_ = function;
6432 	_tmp5_ = vala_ccode_parameter_new ("value", "GValue*");
6433 	_tmp6_ = _tmp5_;
6434 	vala_ccode_function_add_parameter (_tmp4_, _tmp6_);
6435 	_vala_ccode_node_unref0 (_tmp6_);
6436 	_tmp7_ = function;
6437 	_tmp8_ = vala_ccode_parameter_new ("v_object", "gpointer");
6438 	_tmp9_ = _tmp8_;
6439 	vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
6440 	_vala_ccode_node_unref0 (_tmp9_);
6441 	if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
6442 		ValaCCodeFunction* _tmp10_;
6443 		_tmp10_ = function;
6444 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp10_, VALA_CCODE_MODIFIERS_STATIC);
6445 	} else {
6446 		gboolean _tmp11_ = FALSE;
6447 		ValaCodeContext* _tmp12_;
6448 		ValaCodeContext* _tmp13_;
6449 		gboolean _tmp14_;
6450 		gboolean _tmp15_;
6451 		_tmp12_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
6452 		_tmp13_ = _tmp12_;
6453 		_tmp14_ = vala_code_context_get_hide_internal (_tmp13_);
6454 		_tmp15_ = _tmp14_;
6455 		if (_tmp15_) {
6456 			_tmp11_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
6457 		} else {
6458 			_tmp11_ = FALSE;
6459 		}
6460 		if (_tmp11_) {
6461 			ValaCCodeFunction* _tmp16_;
6462 			_tmp16_ = function;
6463 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp16_, VALA_CCODE_MODIFIERS_INTERNAL);
6464 		}
6465 	}
6466 	_tmp17_ = vala_ccode_identifier_new ("value");
6467 	_tmp18_ = _tmp17_;
6468 	_tmp19_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp18_, "data[0]");
6469 	_tmp20_ = _tmp19_;
6470 	_tmp21_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp20_, "v_pointer", FALSE);
6471 	_tmp22_ = _tmp21_;
6472 	_vala_ccode_node_unref0 (_tmp20_);
6473 	_vala_ccode_node_unref0 (_tmp18_);
6474 	vpointer = _tmp22_;
6475 	_tmp23_ = function;
6476 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp23_);
6477 	_tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6478 	_tmp25_ = _tmp24_;
6479 	_tmp26_ = vala_get_ccode_name ((ValaCodeNode*) cl);
6480 	_tmp27_ = _tmp26_;
6481 	_tmp28_ = g_strdup_printf ("%s *", _tmp27_);
6482 	_tmp29_ = _tmp28_;
6483 	_tmp30_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
6484 	_tmp31_ = _tmp30_;
6485 	vala_ccode_function_add_declaration (_tmp25_, _tmp29_, (ValaCCodeDeclarator*) _tmp31_, 0);
6486 	_vala_ccode_node_unref0 (_tmp31_);
6487 	_g_free0 (_tmp29_);
6488 	_g_free0 (_tmp27_);
6489 	_tmp32_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
6490 	_tmp33_ = _tmp32_;
6491 	_tmp34_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp33_);
6492 	_tmp35_ = _tmp34_;
6493 	_vala_ccode_node_unref0 (_tmp33_);
6494 	ccall_typecheck = _tmp35_;
6495 	_tmp36_ = ccall_typecheck;
6496 	_tmp37_ = vala_ccode_identifier_new ("value");
6497 	_tmp38_ = _tmp37_;
6498 	vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp38_);
6499 	_vala_ccode_node_unref0 (_tmp38_);
6500 	_tmp39_ = ccall_typecheck;
6501 	_tmp40_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
6502 	_tmp41_ = _tmp40_;
6503 	_tmp42_ = vala_ccode_identifier_new (_tmp41_);
6504 	_tmp43_ = _tmp42_;
6505 	vala_ccode_function_call_add_argument (_tmp39_, (ValaCCodeExpression*) _tmp43_);
6506 	_vala_ccode_node_unref0 (_tmp43_);
6507 	_g_free0 (_tmp41_);
6508 	_tmp44_ = vala_ccode_identifier_new ("g_return_if_fail");
6509 	_tmp45_ = _tmp44_;
6510 	_tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
6511 	_tmp47_ = _tmp46_;
6512 	_vala_ccode_node_unref0 (_tmp45_);
6513 	ccall = _tmp47_;
6514 	_tmp48_ = ccall;
6515 	_tmp49_ = ccall_typecheck;
6516 	vala_ccode_function_call_add_argument (_tmp48_, (ValaCCodeExpression*) _tmp49_);
6517 	_tmp50_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6518 	_tmp51_ = _tmp50_;
6519 	_tmp52_ = ccall;
6520 	vala_ccode_function_add_expression (_tmp51_, (ValaCCodeExpression*) _tmp52_);
6521 	_tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6522 	_tmp54_ = _tmp53_;
6523 	_tmp55_ = vala_ccode_constant_new ("old");
6524 	_tmp56_ = _tmp55_;
6525 	vala_ccode_function_add_assignment (_tmp54_, (ValaCCodeExpression*) _tmp56_, (ValaCCodeExpression*) vpointer);
6526 	_vala_ccode_node_unref0 (_tmp56_);
6527 	_tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6528 	_tmp58_ = _tmp57_;
6529 	_tmp59_ = vala_ccode_identifier_new ("v_object");
6530 	_tmp60_ = _tmp59_;
6531 	vala_ccode_function_open_if (_tmp58_, (ValaCCodeExpression*) _tmp60_);
6532 	_vala_ccode_node_unref0 (_tmp60_);
6533 	_tmp61_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
6534 	_tmp62_ = _tmp61_;
6535 	_tmp63_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp62_);
6536 	_vala_ccode_node_unref0 (ccall_typecheck);
6537 	ccall_typecheck = _tmp63_;
6538 	_vala_ccode_node_unref0 (_tmp62_);
6539 	_tmp64_ = ccall_typecheck;
6540 	_tmp65_ = vala_ccode_identifier_new ("v_object");
6541 	_tmp66_ = _tmp65_;
6542 	vala_ccode_function_call_add_argument (_tmp64_, (ValaCCodeExpression*) _tmp66_);
6543 	_vala_ccode_node_unref0 (_tmp66_);
6544 	_tmp67_ = ccall_typecheck;
6545 	_tmp68_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
6546 	_tmp69_ = _tmp68_;
6547 	_tmp70_ = vala_ccode_identifier_new (_tmp69_);
6548 	_tmp71_ = _tmp70_;
6549 	vala_ccode_function_call_add_argument (_tmp67_, (ValaCCodeExpression*) _tmp71_);
6550 	_vala_ccode_node_unref0 (_tmp71_);
6551 	_g_free0 (_tmp69_);
6552 	_tmp72_ = vala_ccode_identifier_new ("g_return_if_fail");
6553 	_tmp73_ = _tmp72_;
6554 	_tmp74_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp73_);
6555 	_vala_ccode_node_unref0 (ccall);
6556 	ccall = _tmp74_;
6557 	_vala_ccode_node_unref0 (_tmp73_);
6558 	_tmp75_ = ccall;
6559 	_tmp76_ = ccall_typecheck;
6560 	vala_ccode_function_call_add_argument (_tmp75_, (ValaCCodeExpression*) _tmp76_);
6561 	_tmp77_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6562 	_tmp78_ = _tmp77_;
6563 	_tmp79_ = ccall;
6564 	vala_ccode_function_add_expression (_tmp78_, (ValaCCodeExpression*) _tmp79_);
6565 	_tmp80_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
6566 	_tmp81_ = _tmp80_;
6567 	_tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
6568 	_tmp83_ = _tmp82_;
6569 	_vala_ccode_node_unref0 (_tmp81_);
6570 	ccall_typefrominstance = _tmp83_;
6571 	_tmp84_ = vala_ccode_identifier_new ("v_object");
6572 	_tmp85_ = _tmp84_;
6573 	vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp85_);
6574 	_vala_ccode_node_unref0 (_tmp85_);
6575 	_tmp86_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
6576 	_tmp87_ = _tmp86_;
6577 	_tmp88_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp87_);
6578 	_tmp89_ = _tmp88_;
6579 	_vala_ccode_node_unref0 (_tmp87_);
6580 	ccall_gvaluetype = _tmp89_;
6581 	_tmp90_ = vala_ccode_identifier_new ("value");
6582 	_tmp91_ = _tmp90_;
6583 	vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp91_);
6584 	_vala_ccode_node_unref0 (_tmp91_);
6585 	_tmp92_ = vala_ccode_identifier_new ("g_value_type_compatible");
6586 	_tmp93_ = _tmp92_;
6587 	_tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_);
6588 	_tmp95_ = _tmp94_;
6589 	_vala_ccode_node_unref0 (_tmp93_);
6590 	ccall_typecompatible = _tmp95_;
6591 	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
6592 	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
6593 	_tmp96_ = vala_ccode_identifier_new ("g_return_if_fail");
6594 	_tmp97_ = _tmp96_;
6595 	_tmp98_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp97_);
6596 	_vala_ccode_node_unref0 (ccall);
6597 	ccall = _tmp98_;
6598 	_vala_ccode_node_unref0 (_tmp97_);
6599 	_tmp99_ = ccall;
6600 	vala_ccode_function_call_add_argument (_tmp99_, (ValaCCodeExpression*) ccall_typecompatible);
6601 	_tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6602 	_tmp101_ = _tmp100_;
6603 	_tmp102_ = ccall;
6604 	vala_ccode_function_add_expression (_tmp101_, (ValaCCodeExpression*) _tmp102_);
6605 	_tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6606 	_tmp104_ = _tmp103_;
6607 	_tmp105_ = vala_ccode_constant_new ("v_object");
6608 	_tmp106_ = _tmp105_;
6609 	vala_ccode_function_add_assignment (_tmp104_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp106_);
6610 	_vala_ccode_node_unref0 (_tmp106_);
6611 	_tmp107_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6612 	_tmp108_ = _tmp107_;
6613 	vala_ccode_function_add_else (_tmp108_);
6614 	_tmp109_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6615 	_tmp110_ = _tmp109_;
6616 	_tmp111_ = vala_ccode_constant_new ("NULL");
6617 	_tmp112_ = _tmp111_;
6618 	vala_ccode_function_add_assignment (_tmp110_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp112_);
6619 	_vala_ccode_node_unref0 (_tmp112_);
6620 	_tmp113_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6621 	_tmp114_ = _tmp113_;
6622 	vala_ccode_function_close (_tmp114_);
6623 	_tmp115_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6624 	_tmp116_ = _tmp115_;
6625 	_tmp117_ = vala_ccode_identifier_new ("old");
6626 	_tmp118_ = _tmp117_;
6627 	vala_ccode_function_open_if (_tmp116_, (ValaCCodeExpression*) _tmp118_);
6628 	_vala_ccode_node_unref0 (_tmp118_);
6629 	_tmp119_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) cl);
6630 	_tmp120_ = _tmp119_;
6631 	_tmp121_ = vala_ccode_identifier_new (_tmp120_);
6632 	_tmp122_ = _tmp121_;
6633 	_tmp123_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp122_);
6634 	_vala_ccode_node_unref0 (ccall);
6635 	ccall = _tmp123_;
6636 	_vala_ccode_node_unref0 (_tmp122_);
6637 	_g_free0 (_tmp120_);
6638 	_tmp124_ = ccall;
6639 	_tmp125_ = vala_ccode_identifier_new ("old");
6640 	_tmp126_ = _tmp125_;
6641 	vala_ccode_function_call_add_argument (_tmp124_, (ValaCCodeExpression*) _tmp126_);
6642 	_vala_ccode_node_unref0 (_tmp126_);
6643 	_tmp127_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6644 	_tmp128_ = _tmp127_;
6645 	_tmp129_ = ccall;
6646 	vala_ccode_function_add_expression (_tmp128_, (ValaCCodeExpression*) _tmp129_);
6647 	_tmp130_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6648 	_tmp131_ = _tmp130_;
6649 	vala_ccode_function_close (_tmp131_);
6650 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
6651 	_tmp132_ = ((ValaCCodeBaseModule*) self)->cfile;
6652 	_tmp133_ = function;
6653 	vala_ccode_file_add_function (_tmp132_, _tmp133_);
6654 	_vala_ccode_node_unref0 (ccall_typecompatible);
6655 	_vala_ccode_node_unref0 (ccall_gvaluetype);
6656 	_vala_ccode_node_unref0 (ccall_typefrominstance);
6657 	_vala_ccode_node_unref0 (ccall);
6658 	_vala_ccode_node_unref0 (ccall_typecheck);
6659 	_vala_ccode_node_unref0 (vpointer);
6660 	_vala_ccode_node_unref0 (function);
6661 }
6662 
6663 static void
vala_gtype_module_add_g_value_get_function(ValaGTypeModule * self,ValaClass * cl)6664 vala_gtype_module_add_g_value_get_function (ValaGTypeModule* self,
6665                                             ValaClass* cl)
6666 {
6667 	ValaCCodeFunction* function = NULL;
6668 	gchar* _tmp0_;
6669 	gchar* _tmp1_;
6670 	ValaCCodeFunction* _tmp2_;
6671 	ValaCCodeFunction* _tmp3_;
6672 	ValaCCodeFunction* _tmp4_;
6673 	ValaCCodeParameter* _tmp5_;
6674 	ValaCCodeParameter* _tmp6_;
6675 	ValaCCodeMemberAccess* vpointer = NULL;
6676 	ValaCCodeIdentifier* _tmp14_;
6677 	ValaCCodeIdentifier* _tmp15_;
6678 	ValaCCodeMemberAccess* _tmp16_;
6679 	ValaCCodeMemberAccess* _tmp17_;
6680 	ValaCCodeMemberAccess* _tmp18_;
6681 	ValaCCodeMemberAccess* _tmp19_;
6682 	ValaCCodeFunction* _tmp20_;
6683 	ValaCCodeFunctionCall* ccall_typecheck = NULL;
6684 	ValaCCodeIdentifier* _tmp21_;
6685 	ValaCCodeIdentifier* _tmp22_;
6686 	ValaCCodeFunctionCall* _tmp23_;
6687 	ValaCCodeFunctionCall* _tmp24_;
6688 	ValaCCodeIdentifier* _tmp25_;
6689 	ValaCCodeIdentifier* _tmp26_;
6690 	gchar* _tmp27_;
6691 	gchar* _tmp28_;
6692 	ValaCCodeIdentifier* _tmp29_;
6693 	ValaCCodeIdentifier* _tmp30_;
6694 	ValaCCodeFunctionCall* ccall = NULL;
6695 	ValaCCodeIdentifier* _tmp31_;
6696 	ValaCCodeIdentifier* _tmp32_;
6697 	ValaCCodeFunctionCall* _tmp33_;
6698 	ValaCCodeFunctionCall* _tmp34_;
6699 	ValaCCodeConstant* _tmp35_;
6700 	ValaCCodeConstant* _tmp36_;
6701 	ValaCCodeFunction* _tmp37_;
6702 	ValaCCodeFunction* _tmp38_;
6703 	ValaCCodeFunction* _tmp39_;
6704 	ValaCCodeFunction* _tmp40_;
6705 	ValaCCodeFile* _tmp41_;
6706 	ValaCCodeFunction* _tmp42_;
6707 	g_return_if_fail (self != NULL);
6708 	g_return_if_fail (cl != NULL);
6709 	_tmp0_ = vala_get_ccode_get_value_function ((ValaCodeNode*) cl);
6710 	_tmp1_ = _tmp0_;
6711 	_tmp2_ = vala_ccode_function_new (_tmp1_, "gpointer");
6712 	_tmp3_ = _tmp2_;
6713 	_g_free0 (_tmp1_);
6714 	function = _tmp3_;
6715 	_tmp4_ = function;
6716 	_tmp5_ = vala_ccode_parameter_new ("value", "const GValue*");
6717 	_tmp6_ = _tmp5_;
6718 	vala_ccode_function_add_parameter (_tmp4_, _tmp6_);
6719 	_vala_ccode_node_unref0 (_tmp6_);
6720 	if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
6721 		ValaCCodeFunction* _tmp7_;
6722 		_tmp7_ = function;
6723 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp7_, VALA_CCODE_MODIFIERS_STATIC);
6724 	} else {
6725 		gboolean _tmp8_ = FALSE;
6726 		ValaCodeContext* _tmp9_;
6727 		ValaCodeContext* _tmp10_;
6728 		gboolean _tmp11_;
6729 		gboolean _tmp12_;
6730 		_tmp9_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
6731 		_tmp10_ = _tmp9_;
6732 		_tmp11_ = vala_code_context_get_hide_internal (_tmp10_);
6733 		_tmp12_ = _tmp11_;
6734 		if (_tmp12_) {
6735 			_tmp8_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
6736 		} else {
6737 			_tmp8_ = FALSE;
6738 		}
6739 		if (_tmp8_) {
6740 			ValaCCodeFunction* _tmp13_;
6741 			_tmp13_ = function;
6742 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp13_, VALA_CCODE_MODIFIERS_INTERNAL);
6743 		}
6744 	}
6745 	_tmp14_ = vala_ccode_identifier_new ("value");
6746 	_tmp15_ = _tmp14_;
6747 	_tmp16_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp15_, "data[0]");
6748 	_tmp17_ = _tmp16_;
6749 	_tmp18_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp17_, "v_pointer", FALSE);
6750 	_tmp19_ = _tmp18_;
6751 	_vala_ccode_node_unref0 (_tmp17_);
6752 	_vala_ccode_node_unref0 (_tmp15_);
6753 	vpointer = _tmp19_;
6754 	_tmp20_ = function;
6755 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp20_);
6756 	_tmp21_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
6757 	_tmp22_ = _tmp21_;
6758 	_tmp23_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp22_);
6759 	_tmp24_ = _tmp23_;
6760 	_vala_ccode_node_unref0 (_tmp22_);
6761 	ccall_typecheck = _tmp24_;
6762 	_tmp25_ = vala_ccode_identifier_new ("value");
6763 	_tmp26_ = _tmp25_;
6764 	vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp26_);
6765 	_vala_ccode_node_unref0 (_tmp26_);
6766 	_tmp27_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
6767 	_tmp28_ = _tmp27_;
6768 	_tmp29_ = vala_ccode_identifier_new (_tmp28_);
6769 	_tmp30_ = _tmp29_;
6770 	vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp30_);
6771 	_vala_ccode_node_unref0 (_tmp30_);
6772 	_g_free0 (_tmp28_);
6773 	_tmp31_ = vala_ccode_identifier_new ("g_return_val_if_fail");
6774 	_tmp32_ = _tmp31_;
6775 	_tmp33_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp32_);
6776 	_tmp34_ = _tmp33_;
6777 	_vala_ccode_node_unref0 (_tmp32_);
6778 	ccall = _tmp34_;
6779 	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecheck);
6780 	_tmp35_ = vala_ccode_constant_new ("NULL");
6781 	_tmp36_ = _tmp35_;
6782 	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp36_);
6783 	_vala_ccode_node_unref0 (_tmp36_);
6784 	_tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6785 	_tmp38_ = _tmp37_;
6786 	vala_ccode_function_add_expression (_tmp38_, (ValaCCodeExpression*) ccall);
6787 	_tmp39_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6788 	_tmp40_ = _tmp39_;
6789 	vala_ccode_function_add_return (_tmp40_, (ValaCCodeExpression*) vpointer);
6790 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
6791 	_tmp41_ = ((ValaCCodeBaseModule*) self)->cfile;
6792 	_tmp42_ = function;
6793 	vala_ccode_file_add_function (_tmp41_, _tmp42_);
6794 	_vala_ccode_node_unref0 (ccall);
6795 	_vala_ccode_node_unref0 (ccall_typecheck);
6796 	_vala_ccode_node_unref0 (vpointer);
6797 	_vala_ccode_node_unref0 (function);
6798 }
6799 
6800 static void
vala_gtype_module_begin_base_init_function(ValaGTypeModule * self,ValaClass * cl)6801 vala_gtype_module_begin_base_init_function (ValaGTypeModule* self,
6802                                             ValaClass* cl)
6803 {
6804 	ValaCCodeBaseModuleEmitContext* _tmp0_;
6805 	ValaCCodeFunction* base_init = NULL;
6806 	gchar* _tmp1_;
6807 	gchar* _tmp2_;
6808 	gchar* _tmp3_;
6809 	gchar* _tmp4_;
6810 	ValaCCodeFunction* _tmp5_;
6811 	ValaCCodeFunction* _tmp6_;
6812 	gchar* _tmp7_;
6813 	gchar* _tmp8_;
6814 	gchar* _tmp9_;
6815 	gchar* _tmp10_;
6816 	ValaCCodeParameter* _tmp11_;
6817 	ValaCCodeParameter* _tmp12_;
6818 	g_return_if_fail (self != NULL);
6819 	g_return_if_fail (cl != NULL);
6820 	_tmp0_ = ((ValaCCodeBaseModule*) self)->base_init_context;
6821 	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
6822 	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
6823 	_tmp2_ = _tmp1_;
6824 	_tmp3_ = g_strdup_printf ("%s_base_init", _tmp2_);
6825 	_tmp4_ = _tmp3_;
6826 	_tmp5_ = vala_ccode_function_new (_tmp4_, "void");
6827 	_tmp6_ = _tmp5_;
6828 	_g_free0 (_tmp4_);
6829 	_g_free0 (_tmp2_);
6830 	base_init = _tmp6_;
6831 	_tmp7_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
6832 	_tmp8_ = _tmp7_;
6833 	_tmp9_ = g_strdup_printf ("%s *", _tmp8_);
6834 	_tmp10_ = _tmp9_;
6835 	_tmp11_ = vala_ccode_parameter_new ("klass", _tmp10_);
6836 	_tmp12_ = _tmp11_;
6837 	vala_ccode_function_add_parameter (base_init, _tmp12_);
6838 	_vala_ccode_node_unref0 (_tmp12_);
6839 	_g_free0 (_tmp10_);
6840 	_g_free0 (_tmp8_);
6841 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) base_init, VALA_CCODE_MODIFIERS_STATIC);
6842 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, base_init);
6843 	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
6844 	_vala_ccode_node_unref0 (base_init);
6845 }
6846 
6847 static void
vala_gtype_module_add_base_init_function(ValaGTypeModule * self,ValaClass * cl)6848 vala_gtype_module_add_base_init_function (ValaGTypeModule* self,
6849                                           ValaClass* cl)
6850 {
6851 	ValaCCodeFile* _tmp0_;
6852 	ValaCCodeBaseModuleEmitContext* _tmp1_;
6853 	ValaCCodeFunction* _tmp2_;
6854 	g_return_if_fail (self != NULL);
6855 	g_return_if_fail (cl != NULL);
6856 	_tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
6857 	_tmp1_ = ((ValaCCodeBaseModule*) self)->base_init_context;
6858 	_tmp2_ = _tmp1_->ccode;
6859 	vala_ccode_file_add_function (_tmp0_, _tmp2_);
6860 }
6861 
6862 static void
vala_gtype_module_real_generate_class_init(ValaGTypeModule * self,ValaClass * cl)6863 vala_gtype_module_real_generate_class_init (ValaGTypeModule* self,
6864                                             ValaClass* cl)
6865 {
6866 	g_return_if_fail (cl != NULL);
6867 }
6868 
6869 void
vala_gtype_module_generate_class_init(ValaGTypeModule * self,ValaClass * cl)6870 vala_gtype_module_generate_class_init (ValaGTypeModule* self,
6871                                        ValaClass* cl)
6872 {
6873 	g_return_if_fail (self != NULL);
6874 	VALA_GTYPE_MODULE_GET_CLASS (self)->generate_class_init (self, cl);
6875 }
6876 
6877 static void
vala_gtype_module_real_end_instance_init(ValaGTypeModule * self,ValaClass * cl)6878 vala_gtype_module_real_end_instance_init (ValaGTypeModule* self,
6879                                           ValaClass* cl)
6880 {
6881 	g_return_if_fail (cl != NULL);
6882 }
6883 
6884 void
vala_gtype_module_end_instance_init(ValaGTypeModule * self,ValaClass * cl)6885 vala_gtype_module_end_instance_init (ValaGTypeModule* self,
6886                                      ValaClass* cl)
6887 {
6888 	g_return_if_fail (self != NULL);
6889 	VALA_GTYPE_MODULE_GET_CLASS (self)->end_instance_init (self, cl);
6890 }
6891 
6892 static void
vala_gtype_module_begin_class_init_function(ValaGTypeModule * self,ValaClass * cl)6893 vala_gtype_module_begin_class_init_function (ValaGTypeModule* self,
6894                                              ValaClass* cl)
6895 {
6896 	ValaCCodeBaseModuleEmitContext* _tmp0_;
6897 	ValaCCodeFunction* func = NULL;
6898 	gchar* _tmp1_;
6899 	gchar* _tmp2_;
6900 	gchar* _tmp3_;
6901 	gchar* _tmp4_;
6902 	ValaCCodeFunction* _tmp5_;
6903 	ValaCCodeFunction* _tmp6_;
6904 	ValaCCodeFunction* _tmp7_;
6905 	gchar* _tmp8_;
6906 	gchar* _tmp9_;
6907 	gchar* _tmp10_;
6908 	gchar* _tmp11_;
6909 	ValaCCodeParameter* _tmp12_;
6910 	ValaCCodeParameter* _tmp13_;
6911 	ValaCCodeFunction* _tmp14_;
6912 	ValaCCodeParameter* _tmp15_;
6913 	ValaCCodeParameter* _tmp16_;
6914 	ValaCCodeFunction* _tmp17_;
6915 	ValaCCodeFunctionCall* ccall = NULL;
6916 	ValaCCodeDeclaration* parent_decl = NULL;
6917 	ValaCCodeDeclaration* _tmp18_;
6918 	ValaCCodeVariableDeclarator* parent_var_decl = NULL;
6919 	gchar* _tmp19_;
6920 	gchar* _tmp20_;
6921 	gchar* _tmp21_;
6922 	gchar* _tmp22_;
6923 	ValaCCodeVariableDeclarator* _tmp23_;
6924 	ValaCCodeVariableDeclarator* _tmp24_;
6925 	ValaCCodeVariableDeclarator* _tmp25_;
6926 	ValaCCodeConstant* _tmp26_;
6927 	ValaCCodeConstant* _tmp27_;
6928 	ValaCCodeDeclaration* _tmp28_;
6929 	ValaCCodeVariableDeclarator* _tmp29_;
6930 	ValaCCodeDeclaration* _tmp30_;
6931 	ValaCCodeFile* _tmp31_;
6932 	ValaCCodeDeclaration* _tmp32_;
6933 	ValaCCodeFunction* _tmp33_;
6934 	ValaCCodeIdentifier* _tmp34_;
6935 	ValaCCodeIdentifier* _tmp35_;
6936 	ValaCCodeFunctionCall* _tmp36_;
6937 	ValaCCodeFunctionCall* _tmp37_;
6938 	ValaCCodeIdentifier* _tmp38_;
6939 	ValaCCodeIdentifier* _tmp39_;
6940 	ValaCCodeAssignment* parent_assignment = NULL;
6941 	gchar* _tmp40_;
6942 	gchar* _tmp41_;
6943 	gchar* _tmp42_;
6944 	gchar* _tmp43_;
6945 	ValaCCodeIdentifier* _tmp44_;
6946 	ValaCCodeIdentifier* _tmp45_;
6947 	ValaCCodeFunctionCall* _tmp46_;
6948 	ValaCCodeAssignment* _tmp47_;
6949 	ValaCCodeAssignment* _tmp48_;
6950 	ValaCCodeFunction* _tmp49_;
6951 	ValaCCodeFunction* _tmp50_;
6952 	ValaCCodeAssignment* _tmp51_;
6953 	gboolean _tmp52_ = FALSE;
6954 	gboolean _tmp53_ = FALSE;
6955 	gboolean _tmp54_;
6956 	gboolean _tmp55_;
6957 	gboolean _tmp95_ = FALSE;
6958 	gboolean _tmp96_;
6959 	gboolean _tmp97_;
6960 	gboolean _tmp326_;
6961 	gboolean _tmp327_;
6962 	g_return_if_fail (self != NULL);
6963 	g_return_if_fail (cl != NULL);
6964 	_tmp0_ = ((ValaCCodeBaseModule*) self)->class_init_context;
6965 	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
6966 	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
6967 	_tmp2_ = _tmp1_;
6968 	_tmp3_ = g_strdup_printf ("%s_class_init", _tmp2_);
6969 	_tmp4_ = _tmp3_;
6970 	_tmp5_ = vala_ccode_function_new (_tmp4_, "void");
6971 	_tmp6_ = _tmp5_;
6972 	_g_free0 (_tmp4_);
6973 	_g_free0 (_tmp2_);
6974 	func = _tmp6_;
6975 	_tmp7_ = func;
6976 	_tmp8_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
6977 	_tmp9_ = _tmp8_;
6978 	_tmp10_ = g_strdup_printf ("%s *", _tmp9_);
6979 	_tmp11_ = _tmp10_;
6980 	_tmp12_ = vala_ccode_parameter_new ("klass", _tmp11_);
6981 	_tmp13_ = _tmp12_;
6982 	vala_ccode_function_add_parameter (_tmp7_, _tmp13_);
6983 	_vala_ccode_node_unref0 (_tmp13_);
6984 	_g_free0 (_tmp11_);
6985 	_g_free0 (_tmp9_);
6986 	_tmp14_ = func;
6987 	_tmp15_ = vala_ccode_parameter_new ("klass_data", "gpointer");
6988 	_tmp16_ = _tmp15_;
6989 	vala_ccode_function_add_parameter (_tmp14_, _tmp16_);
6990 	_vala_ccode_node_unref0 (_tmp16_);
6991 	_tmp17_ = func;
6992 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp17_, VALA_CCODE_MODIFIERS_STATIC);
6993 	_tmp18_ = vala_ccode_declaration_new ("gpointer");
6994 	parent_decl = _tmp18_;
6995 	_tmp19_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
6996 	_tmp20_ = _tmp19_;
6997 	_tmp21_ = g_strdup_printf ("%s_parent_class", _tmp20_);
6998 	_tmp22_ = _tmp21_;
6999 	_tmp23_ = vala_ccode_variable_declarator_new (_tmp22_, NULL, NULL);
7000 	_tmp24_ = _tmp23_;
7001 	_g_free0 (_tmp22_);
7002 	_g_free0 (_tmp20_);
7003 	parent_var_decl = _tmp24_;
7004 	_tmp25_ = parent_var_decl;
7005 	_tmp26_ = vala_ccode_constant_new ("NULL");
7006 	_tmp27_ = _tmp26_;
7007 	vala_ccode_variable_declarator_set_initializer (_tmp25_, (ValaCCodeExpression*) _tmp27_);
7008 	_vala_ccode_node_unref0 (_tmp27_);
7009 	_tmp28_ = parent_decl;
7010 	_tmp29_ = parent_var_decl;
7011 	vala_ccode_declaration_add_declarator (_tmp28_, (ValaCCodeDeclarator*) _tmp29_);
7012 	_tmp30_ = parent_decl;
7013 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp30_, VALA_CCODE_MODIFIERS_STATIC);
7014 	_tmp31_ = ((ValaCCodeBaseModule*) self)->cfile;
7015 	_tmp32_ = parent_decl;
7016 	vala_ccode_file_add_type_member_declaration (_tmp31_, (ValaCCodeNode*) _tmp32_);
7017 	_tmp33_ = func;
7018 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp33_);
7019 	_tmp34_ = vala_ccode_identifier_new ("g_type_class_peek_parent");
7020 	_tmp35_ = _tmp34_;
7021 	_tmp36_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp35_);
7022 	_vala_ccode_node_unref0 (ccall);
7023 	ccall = _tmp36_;
7024 	_vala_ccode_node_unref0 (_tmp35_);
7025 	_tmp37_ = ccall;
7026 	_tmp38_ = vala_ccode_identifier_new ("klass");
7027 	_tmp39_ = _tmp38_;
7028 	vala_ccode_function_call_add_argument (_tmp37_, (ValaCCodeExpression*) _tmp39_);
7029 	_vala_ccode_node_unref0 (_tmp39_);
7030 	_tmp40_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
7031 	_tmp41_ = _tmp40_;
7032 	_tmp42_ = g_strdup_printf ("%s_parent_class", _tmp41_);
7033 	_tmp43_ = _tmp42_;
7034 	_tmp44_ = vala_ccode_identifier_new (_tmp43_);
7035 	_tmp45_ = _tmp44_;
7036 	_tmp46_ = ccall;
7037 	_tmp47_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp45_, (ValaCCodeExpression*) _tmp46_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
7038 	_tmp48_ = _tmp47_;
7039 	_vala_ccode_node_unref0 (_tmp45_);
7040 	_g_free0 (_tmp43_);
7041 	_g_free0 (_tmp41_);
7042 	parent_assignment = _tmp48_;
7043 	_tmp49_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7044 	_tmp50_ = _tmp49_;
7045 	_tmp51_ = parent_assignment;
7046 	vala_ccode_function_add_expression (_tmp50_, (ValaCCodeExpression*) _tmp51_);
7047 	_tmp54_ = vala_class_get_is_compact (cl);
7048 	_tmp55_ = _tmp54_;
7049 	if (!_tmp55_) {
7050 		ValaTypeSymbol* _tmp56_;
7051 		_tmp56_ = ((ValaCCodeBaseModule*) self)->gobject_type;
7052 		_tmp53_ = !vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, _tmp56_);
7053 	} else {
7054 		_tmp53_ = FALSE;
7055 	}
7056 	if (_tmp53_) {
7057 		gboolean _tmp57_ = FALSE;
7058 		gboolean _tmp58_ = FALSE;
7059 		ValaList* _tmp59_;
7060 		gint _tmp60_;
7061 		gint _tmp61_;
7062 		_tmp59_ = vala_object_type_symbol_get_fields ((ValaObjectTypeSymbol*) cl);
7063 		_tmp60_ = vala_collection_get_size ((ValaCollection*) _tmp59_);
7064 		_tmp61_ = _tmp60_;
7065 		if (_tmp61_ > 0) {
7066 			_tmp58_ = TRUE;
7067 		} else {
7068 			ValaDestructor* _tmp62_;
7069 			ValaDestructor* _tmp63_;
7070 			_tmp62_ = vala_class_get_destructor (cl);
7071 			_tmp63_ = _tmp62_;
7072 			_tmp58_ = _tmp63_ != NULL;
7073 		}
7074 		if (_tmp58_) {
7075 			_tmp57_ = TRUE;
7076 		} else {
7077 			_tmp57_ = vala_class_is_fundamental (cl);
7078 		}
7079 		_tmp52_ = _tmp57_;
7080 	} else {
7081 		_tmp52_ = FALSE;
7082 	}
7083 	if (_tmp52_) {
7084 		ValaClass* fundamental_class = NULL;
7085 		ValaClass* _tmp64_;
7086 		ValaCCodeCastExpression* ccast = NULL;
7087 		ValaCCodeIdentifier* _tmp72_;
7088 		ValaCCodeIdentifier* _tmp73_;
7089 		ValaClass* _tmp74_;
7090 		gchar* _tmp75_;
7091 		gchar* _tmp76_;
7092 		gchar* _tmp77_;
7093 		gchar* _tmp78_;
7094 		ValaCCodeCastExpression* _tmp79_;
7095 		ValaCCodeCastExpression* _tmp80_;
7096 		ValaCCodeAssignment* finalize_assignment = NULL;
7097 		ValaCCodeCastExpression* _tmp81_;
7098 		ValaCCodeMemberAccess* _tmp82_;
7099 		ValaCCodeMemberAccess* _tmp83_;
7100 		gchar* _tmp84_;
7101 		gchar* _tmp85_;
7102 		gchar* _tmp86_;
7103 		gchar* _tmp87_;
7104 		ValaCCodeIdentifier* _tmp88_;
7105 		ValaCCodeIdentifier* _tmp89_;
7106 		ValaCCodeAssignment* _tmp90_;
7107 		ValaCCodeAssignment* _tmp91_;
7108 		ValaCCodeFunction* _tmp92_;
7109 		ValaCCodeFunction* _tmp93_;
7110 		ValaCCodeAssignment* _tmp94_;
7111 		_tmp64_ = _vala_code_node_ref0 (cl);
7112 		fundamental_class = _tmp64_;
7113 		while (TRUE) {
7114 			ValaClass* _tmp65_;
7115 			ValaClass* _tmp66_;
7116 			ValaClass* _tmp67_;
7117 			ValaClass* _tmp68_;
7118 			ValaClass* _tmp69_;
7119 			ValaClass* _tmp70_;
7120 			ValaClass* _tmp71_;
7121 			_tmp65_ = fundamental_class;
7122 			_tmp66_ = vala_class_get_base_class (_tmp65_);
7123 			_tmp67_ = _tmp66_;
7124 			if (!(_tmp67_ != NULL)) {
7125 				break;
7126 			}
7127 			_tmp68_ = fundamental_class;
7128 			_tmp69_ = vala_class_get_base_class (_tmp68_);
7129 			_tmp70_ = _tmp69_;
7130 			_tmp71_ = _vala_code_node_ref0 (_tmp70_);
7131 			_vala_code_node_unref0 (fundamental_class);
7132 			fundamental_class = _tmp71_;
7133 		}
7134 		_tmp72_ = vala_ccode_identifier_new ("klass");
7135 		_tmp73_ = _tmp72_;
7136 		_tmp74_ = fundamental_class;
7137 		_tmp75_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) _tmp74_);
7138 		_tmp76_ = _tmp75_;
7139 		_tmp77_ = g_strdup_printf ("%s *", _tmp76_);
7140 		_tmp78_ = _tmp77_;
7141 		_tmp79_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp73_, _tmp78_);
7142 		_tmp80_ = _tmp79_;
7143 		_g_free0 (_tmp78_);
7144 		_g_free0 (_tmp76_);
7145 		_vala_ccode_node_unref0 (_tmp73_);
7146 		ccast = _tmp80_;
7147 		_tmp81_ = ccast;
7148 		_tmp82_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp81_, "finalize");
7149 		_tmp83_ = _tmp82_;
7150 		_tmp84_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) cl);
7151 		_tmp85_ = _tmp84_;
7152 		_tmp86_ = g_strdup_printf ("%sfinalize", _tmp85_);
7153 		_tmp87_ = _tmp86_;
7154 		_tmp88_ = vala_ccode_identifier_new (_tmp87_);
7155 		_tmp89_ = _tmp88_;
7156 		_tmp90_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp83_, (ValaCCodeExpression*) _tmp89_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
7157 		_tmp91_ = _tmp90_;
7158 		_vala_ccode_node_unref0 (_tmp89_);
7159 		_g_free0 (_tmp87_);
7160 		_g_free0 (_tmp85_);
7161 		_vala_ccode_node_unref0 (_tmp83_);
7162 		finalize_assignment = _tmp91_;
7163 		_tmp92_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7164 		_tmp93_ = _tmp92_;
7165 		_tmp94_ = finalize_assignment;
7166 		vala_ccode_function_add_expression (_tmp93_, (ValaCCodeExpression*) _tmp94_);
7167 		_vala_ccode_node_unref0 (finalize_assignment);
7168 		_vala_ccode_node_unref0 (ccast);
7169 		_vala_code_node_unref0 (fundamental_class);
7170 	}
7171 	_tmp96_ = vala_class_get_has_private_fields (cl);
7172 	_tmp97_ = _tmp96_;
7173 	if (_tmp97_) {
7174 		_tmp95_ = TRUE;
7175 	} else {
7176 		_tmp95_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
7177 	}
7178 	if (_tmp95_) {
7179 		ValaCCodeIdentifier* _tmp98_;
7180 		ValaCCodeIdentifier* _tmp99_;
7181 		ValaCCodeFunctionCall* _tmp100_;
7182 		ValaCCodeFunctionCall* _tmp101_;
7183 		ValaCCodeIdentifier* _tmp102_;
7184 		ValaCCodeIdentifier* _tmp103_;
7185 		ValaCCodeFunctionCall* _tmp104_;
7186 		gchar* _tmp105_;
7187 		gchar* _tmp106_;
7188 		gchar* _tmp107_;
7189 		gchar* _tmp108_;
7190 		ValaCCodeIdentifier* _tmp109_;
7191 		ValaCCodeIdentifier* _tmp110_;
7192 		ValaCCodeFunction* _tmp111_;
7193 		ValaCCodeFunction* _tmp112_;
7194 		ValaCCodeFunctionCall* _tmp113_;
7195 		_tmp98_ = vala_ccode_identifier_new ("g_type_class_adjust_private_offset");
7196 		_tmp99_ = _tmp98_;
7197 		_tmp100_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp99_);
7198 		_vala_ccode_node_unref0 (ccall);
7199 		ccall = _tmp100_;
7200 		_vala_ccode_node_unref0 (_tmp99_);
7201 		_tmp101_ = ccall;
7202 		_tmp102_ = vala_ccode_identifier_new ("klass");
7203 		_tmp103_ = _tmp102_;
7204 		vala_ccode_function_call_add_argument (_tmp101_, (ValaCCodeExpression*) _tmp103_);
7205 		_vala_ccode_node_unref0 (_tmp103_);
7206 		_tmp104_ = ccall;
7207 		_tmp105_ = vala_get_ccode_name ((ValaCodeNode*) cl);
7208 		_tmp106_ = _tmp105_;
7209 		_tmp107_ = g_strdup_printf ("&%s_private_offset", _tmp106_);
7210 		_tmp108_ = _tmp107_;
7211 		_tmp109_ = vala_ccode_identifier_new (_tmp108_);
7212 		_tmp110_ = _tmp109_;
7213 		vala_ccode_function_call_add_argument (_tmp104_, (ValaCCodeExpression*) _tmp110_);
7214 		_vala_ccode_node_unref0 (_tmp110_);
7215 		_g_free0 (_tmp108_);
7216 		_g_free0 (_tmp106_);
7217 		_tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7218 		_tmp112_ = _tmp111_;
7219 		_tmp113_ = ccall;
7220 		vala_ccode_function_add_expression (_tmp112_, (ValaCCodeExpression*) _tmp113_);
7221 	}
7222 	{
7223 		ValaList* _m_list = NULL;
7224 		ValaList* _tmp114_;
7225 		ValaList* _tmp115_;
7226 		gint _m_size = 0;
7227 		ValaList* _tmp116_;
7228 		gint _tmp117_;
7229 		gint _tmp118_;
7230 		gint _m_index = 0;
7231 		_tmp114_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) cl);
7232 		_tmp115_ = _vala_iterable_ref0 (_tmp114_);
7233 		_m_list = _tmp115_;
7234 		_tmp116_ = _m_list;
7235 		_tmp117_ = vala_collection_get_size ((ValaCollection*) _tmp116_);
7236 		_tmp118_ = _tmp117_;
7237 		_m_size = _tmp118_;
7238 		_m_index = -1;
7239 		while (TRUE) {
7240 			gint _tmp119_;
7241 			gint _tmp120_;
7242 			ValaMethod* m = NULL;
7243 			ValaList* _tmp121_;
7244 			gpointer _tmp122_;
7245 			ValaMethod* _tmp123_;
7246 			ValaMethod* _tmp124_;
7247 			ValaMethod* _tmp125_;
7248 			ValaObjectTypeSymbol* base_type = NULL;
7249 			ValaMethod* _tmp126_;
7250 			ValaMethod* _tmp127_;
7251 			ValaMethod* _tmp128_;
7252 			ValaSymbol* _tmp129_;
7253 			ValaSymbol* _tmp130_;
7254 			ValaObjectTypeSymbol* _tmp131_;
7255 			gboolean _tmp132_ = FALSE;
7256 			ValaMethod* _tmp133_;
7257 			gboolean _tmp134_;
7258 			gboolean _tmp135_;
7259 			_m_index = _m_index + 1;
7260 			_tmp119_ = _m_index;
7261 			_tmp120_ = _m_size;
7262 			if (!(_tmp119_ < _tmp120_)) {
7263 				break;
7264 			}
7265 			_tmp121_ = _m_list;
7266 			_tmp122_ = vala_list_get (_tmp121_, _m_index);
7267 			m = (ValaMethod*) _tmp122_;
7268 			_tmp123_ = m;
7269 			_tmp124_ = vala_method_get_base_method (_tmp123_);
7270 			_tmp125_ = _tmp124_;
7271 			if (_tmp125_ == NULL) {
7272 				_vala_code_node_unref0 (m);
7273 				continue;
7274 			}
7275 			_tmp126_ = m;
7276 			_tmp127_ = vala_method_get_base_method (_tmp126_);
7277 			_tmp128_ = _tmp127_;
7278 			_tmp129_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp128_);
7279 			_tmp130_ = _tmp129_;
7280 			_tmp131_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp130_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
7281 			base_type = _tmp131_;
7282 			_tmp133_ = m;
7283 			_tmp134_ = vala_method_get_is_abstract (_tmp133_);
7284 			_tmp135_ = _tmp134_;
7285 			if (!_tmp135_) {
7286 				_tmp132_ = TRUE;
7287 			} else {
7288 				ValaMethod* _tmp136_;
7289 				gboolean _tmp137_;
7290 				gboolean _tmp138_;
7291 				_tmp136_ = m;
7292 				_tmp137_ = vala_method_get_coroutine (_tmp136_);
7293 				_tmp138_ = _tmp137_;
7294 				_tmp132_ = !_tmp138_;
7295 			}
7296 			if (_tmp132_) {
7297 				ValaMethod* _tmp139_;
7298 				ValaMethod* _tmp140_;
7299 				ValaMethod* _tmp141_;
7300 				ValaCCodeFile* _tmp142_;
7301 				ValaCCodeExpression* cfunc = NULL;
7302 				ValaMethod* _tmp143_;
7303 				gchar* _tmp144_;
7304 				gchar* _tmp145_;
7305 				ValaCCodeIdentifier* _tmp146_;
7306 				ValaCCodeExpression* _tmp147_;
7307 				gint _tmp148_ = 0;
7308 				ValaMethod* _tmp149_;
7309 				gboolean _tmp150_;
7310 				gboolean _tmp151_;
7311 				ValaMethod* _tmp152_;
7312 				ValaMethod* _tmp153_;
7313 				ValaMethod* _tmp154_;
7314 				ValaCCodeExpression* _tmp155_;
7315 				ValaObjectTypeSymbol* _tmp156_;
7316 				ValaCCodeExpression* _tmp157_;
7317 				ValaCCodeCastExpression* ccast = NULL;
7318 				ValaCCodeIdentifier* _tmp158_;
7319 				ValaCCodeIdentifier* _tmp159_;
7320 				ValaObjectTypeSymbol* _tmp160_;
7321 				gchar* _tmp161_;
7322 				gchar* _tmp162_;
7323 				gchar* _tmp163_;
7324 				gchar* _tmp164_;
7325 				ValaCCodeCastExpression* _tmp165_;
7326 				ValaCCodeCastExpression* _tmp166_;
7327 				ValaCCodeFunction* _tmp167_;
7328 				ValaCCodeFunction* _tmp168_;
7329 				ValaCCodeCastExpression* _tmp169_;
7330 				ValaMethod* _tmp170_;
7331 				ValaMethod* _tmp171_;
7332 				ValaMethod* _tmp172_;
7333 				gchar* _tmp173_;
7334 				gchar* _tmp174_;
7335 				ValaCCodeMemberAccess* _tmp175_;
7336 				ValaCCodeMemberAccess* _tmp176_;
7337 				ValaCCodeExpression* _tmp177_;
7338 				ValaMethod* _tmp178_;
7339 				gboolean _tmp179_;
7340 				gboolean _tmp180_;
7341 				_tmp139_ = m;
7342 				_tmp140_ = vala_method_get_base_method (_tmp139_);
7343 				_tmp141_ = _tmp140_;
7344 				_tmp142_ = ((ValaCCodeBaseModule*) self)->cfile;
7345 				vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp141_, _tmp142_);
7346 				_tmp143_ = m;
7347 				_tmp144_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp143_);
7348 				_tmp145_ = _tmp144_;
7349 				_tmp146_ = vala_ccode_identifier_new (_tmp145_);
7350 				_tmp147_ = (ValaCCodeExpression*) _tmp146_;
7351 				_g_free0 (_tmp145_);
7352 				cfunc = _tmp147_;
7353 				_tmp149_ = m;
7354 				_tmp150_ = vala_method_get_coroutine (_tmp149_);
7355 				_tmp151_ = _tmp150_;
7356 				if (_tmp151_) {
7357 					_tmp148_ = 1;
7358 				} else {
7359 					_tmp148_ = 3;
7360 				}
7361 				_tmp152_ = m;
7362 				_tmp153_ = vala_method_get_base_method (_tmp152_);
7363 				_tmp154_ = _tmp153_;
7364 				_tmp155_ = cfunc;
7365 				_tmp156_ = base_type;
7366 				_tmp157_ = vala_gtype_module_cast_method_pointer (self, _tmp154_, _tmp155_, _tmp156_, _tmp148_);
7367 				_vala_ccode_node_unref0 (cfunc);
7368 				cfunc = _tmp157_;
7369 				_tmp158_ = vala_ccode_identifier_new ("klass");
7370 				_tmp159_ = _tmp158_;
7371 				_tmp160_ = base_type;
7372 				_tmp161_ = vala_get_ccode_type_name (_tmp160_);
7373 				_tmp162_ = _tmp161_;
7374 				_tmp163_ = g_strdup_printf ("%s *", _tmp162_);
7375 				_tmp164_ = _tmp163_;
7376 				_tmp165_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp159_, _tmp164_);
7377 				_tmp166_ = _tmp165_;
7378 				_g_free0 (_tmp164_);
7379 				_g_free0 (_tmp162_);
7380 				_vala_ccode_node_unref0 (_tmp159_);
7381 				ccast = _tmp166_;
7382 				_tmp167_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7383 				_tmp168_ = _tmp167_;
7384 				_tmp169_ = ccast;
7385 				_tmp170_ = m;
7386 				_tmp171_ = vala_method_get_base_method (_tmp170_);
7387 				_tmp172_ = _tmp171_;
7388 				_tmp173_ = vala_get_ccode_vfunc_name (_tmp172_);
7389 				_tmp174_ = _tmp173_;
7390 				_tmp175_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp169_, _tmp174_);
7391 				_tmp176_ = _tmp175_;
7392 				_tmp177_ = cfunc;
7393 				vala_ccode_function_add_assignment (_tmp168_, (ValaCCodeExpression*) _tmp176_, _tmp177_);
7394 				_vala_ccode_node_unref0 (_tmp176_);
7395 				_g_free0 (_tmp174_);
7396 				_tmp178_ = m;
7397 				_tmp179_ = vala_method_get_coroutine (_tmp178_);
7398 				_tmp180_ = _tmp179_;
7399 				if (_tmp180_) {
7400 					ValaMethod* _tmp181_;
7401 					gchar* _tmp182_;
7402 					gchar* _tmp183_;
7403 					ValaCCodeIdentifier* _tmp184_;
7404 					ValaMethod* _tmp185_;
7405 					ValaMethod* _tmp186_;
7406 					ValaMethod* _tmp187_;
7407 					ValaCCodeExpression* _tmp188_;
7408 					ValaObjectTypeSymbol* _tmp189_;
7409 					ValaCCodeExpression* _tmp190_;
7410 					ValaCCodeFunction* _tmp191_;
7411 					ValaCCodeFunction* _tmp192_;
7412 					ValaCCodeCastExpression* _tmp193_;
7413 					ValaMethod* _tmp194_;
7414 					ValaMethod* _tmp195_;
7415 					ValaMethod* _tmp196_;
7416 					gchar* _tmp197_;
7417 					gchar* _tmp198_;
7418 					ValaCCodeMemberAccess* _tmp199_;
7419 					ValaCCodeMemberAccess* _tmp200_;
7420 					ValaCCodeExpression* _tmp201_;
7421 					_tmp181_ = m;
7422 					_tmp182_ = vala_get_ccode_finish_real_name (_tmp181_);
7423 					_tmp183_ = _tmp182_;
7424 					_tmp184_ = vala_ccode_identifier_new (_tmp183_);
7425 					_vala_ccode_node_unref0 (cfunc);
7426 					cfunc = (ValaCCodeExpression*) _tmp184_;
7427 					_g_free0 (_tmp183_);
7428 					_tmp185_ = m;
7429 					_tmp186_ = vala_method_get_base_method (_tmp185_);
7430 					_tmp187_ = _tmp186_;
7431 					_tmp188_ = cfunc;
7432 					_tmp189_ = base_type;
7433 					_tmp190_ = vala_gtype_module_cast_method_pointer (self, _tmp187_, _tmp188_, _tmp189_, 2);
7434 					_vala_ccode_node_unref0 (cfunc);
7435 					cfunc = _tmp190_;
7436 					_tmp191_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7437 					_tmp192_ = _tmp191_;
7438 					_tmp193_ = ccast;
7439 					_tmp194_ = m;
7440 					_tmp195_ = vala_method_get_base_method (_tmp194_);
7441 					_tmp196_ = _tmp195_;
7442 					_tmp197_ = vala_get_ccode_finish_vfunc_name (_tmp196_);
7443 					_tmp198_ = _tmp197_;
7444 					_tmp199_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp193_, _tmp198_);
7445 					_tmp200_ = _tmp199_;
7446 					_tmp201_ = cfunc;
7447 					vala_ccode_function_add_assignment (_tmp192_, (ValaCCodeExpression*) _tmp200_, _tmp201_);
7448 					_vala_ccode_node_unref0 (_tmp200_);
7449 					_g_free0 (_tmp198_);
7450 				}
7451 				_vala_ccode_node_unref0 (ccast);
7452 				_vala_ccode_node_unref0 (cfunc);
7453 			}
7454 			_vala_code_node_unref0 (base_type);
7455 			_vala_code_node_unref0 (m);
7456 		}
7457 		_vala_iterable_unref0 (_m_list);
7458 	}
7459 	{
7460 		ValaList* _sig_list = NULL;
7461 		ValaList* _tmp202_;
7462 		ValaList* _tmp203_;
7463 		gint _sig_size = 0;
7464 		ValaList* _tmp204_;
7465 		gint _tmp205_;
7466 		gint _tmp206_;
7467 		gint _sig_index = 0;
7468 		_tmp202_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) cl);
7469 		_tmp203_ = _vala_iterable_ref0 (_tmp202_);
7470 		_sig_list = _tmp203_;
7471 		_tmp204_ = _sig_list;
7472 		_tmp205_ = vala_collection_get_size ((ValaCollection*) _tmp204_);
7473 		_tmp206_ = _tmp205_;
7474 		_sig_size = _tmp206_;
7475 		_sig_index = -1;
7476 		while (TRUE) {
7477 			gint _tmp207_;
7478 			gint _tmp208_;
7479 			ValaSignal* sig = NULL;
7480 			ValaList* _tmp209_;
7481 			gpointer _tmp210_;
7482 			ValaSignal* _tmp211_;
7483 			ValaMethod* _tmp212_;
7484 			ValaMethod* _tmp213_;
7485 			ValaCCodeCastExpression* ccast = NULL;
7486 			ValaCCodeIdentifier* _tmp214_;
7487 			ValaCCodeIdentifier* _tmp215_;
7488 			gchar* _tmp216_;
7489 			gchar* _tmp217_;
7490 			gchar* _tmp218_;
7491 			gchar* _tmp219_;
7492 			ValaCCodeCastExpression* _tmp220_;
7493 			ValaCCodeCastExpression* _tmp221_;
7494 			ValaCCodeFunction* _tmp222_;
7495 			ValaCCodeFunction* _tmp223_;
7496 			ValaCCodeCastExpression* _tmp224_;
7497 			ValaSignal* _tmp225_;
7498 			ValaMethod* _tmp226_;
7499 			ValaMethod* _tmp227_;
7500 			gchar* _tmp228_;
7501 			gchar* _tmp229_;
7502 			ValaCCodeMemberAccess* _tmp230_;
7503 			ValaCCodeMemberAccess* _tmp231_;
7504 			ValaSignal* _tmp232_;
7505 			ValaMethod* _tmp233_;
7506 			ValaMethod* _tmp234_;
7507 			gchar* _tmp235_;
7508 			gchar* _tmp236_;
7509 			ValaCCodeIdentifier* _tmp237_;
7510 			ValaCCodeIdentifier* _tmp238_;
7511 			_sig_index = _sig_index + 1;
7512 			_tmp207_ = _sig_index;
7513 			_tmp208_ = _sig_size;
7514 			if (!(_tmp207_ < _tmp208_)) {
7515 				break;
7516 			}
7517 			_tmp209_ = _sig_list;
7518 			_tmp210_ = vala_list_get (_tmp209_, _sig_index);
7519 			sig = (ValaSignal*) _tmp210_;
7520 			_tmp211_ = sig;
7521 			_tmp212_ = vala_signal_get_default_handler (_tmp211_);
7522 			_tmp213_ = _tmp212_;
7523 			if (_tmp213_ == NULL) {
7524 				_vala_code_node_unref0 (sig);
7525 				continue;
7526 			}
7527 			_tmp214_ = vala_ccode_identifier_new ("klass");
7528 			_tmp215_ = _tmp214_;
7529 			_tmp216_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
7530 			_tmp217_ = _tmp216_;
7531 			_tmp218_ = g_strdup_printf ("%s *", _tmp217_);
7532 			_tmp219_ = _tmp218_;
7533 			_tmp220_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp215_, _tmp219_);
7534 			_tmp221_ = _tmp220_;
7535 			_g_free0 (_tmp219_);
7536 			_g_free0 (_tmp217_);
7537 			_vala_ccode_node_unref0 (_tmp215_);
7538 			ccast = _tmp221_;
7539 			_tmp222_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7540 			_tmp223_ = _tmp222_;
7541 			_tmp224_ = ccast;
7542 			_tmp225_ = sig;
7543 			_tmp226_ = vala_signal_get_default_handler (_tmp225_);
7544 			_tmp227_ = _tmp226_;
7545 			_tmp228_ = vala_get_ccode_vfunc_name (_tmp227_);
7546 			_tmp229_ = _tmp228_;
7547 			_tmp230_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp224_, _tmp229_);
7548 			_tmp231_ = _tmp230_;
7549 			_tmp232_ = sig;
7550 			_tmp233_ = vala_signal_get_default_handler (_tmp232_);
7551 			_tmp234_ = _tmp233_;
7552 			_tmp235_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp234_);
7553 			_tmp236_ = _tmp235_;
7554 			_tmp237_ = vala_ccode_identifier_new (_tmp236_);
7555 			_tmp238_ = _tmp237_;
7556 			vala_ccode_function_add_assignment (_tmp223_, (ValaCCodeExpression*) _tmp231_, (ValaCCodeExpression*) _tmp238_);
7557 			_vala_ccode_node_unref0 (_tmp238_);
7558 			_g_free0 (_tmp236_);
7559 			_vala_ccode_node_unref0 (_tmp231_);
7560 			_g_free0 (_tmp229_);
7561 			_vala_ccode_node_unref0 (ccast);
7562 			_vala_code_node_unref0 (sig);
7563 		}
7564 		_vala_iterable_unref0 (_sig_list);
7565 	}
7566 	{
7567 		ValaList* _prop_list = NULL;
7568 		ValaList* _tmp239_;
7569 		ValaList* _tmp240_;
7570 		gint _prop_size = 0;
7571 		ValaList* _tmp241_;
7572 		gint _tmp242_;
7573 		gint _tmp243_;
7574 		gint _prop_index = 0;
7575 		_tmp239_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
7576 		_tmp240_ = _vala_iterable_ref0 (_tmp239_);
7577 		_prop_list = _tmp240_;
7578 		_tmp241_ = _prop_list;
7579 		_tmp242_ = vala_collection_get_size ((ValaCollection*) _tmp241_);
7580 		_tmp243_ = _tmp242_;
7581 		_prop_size = _tmp243_;
7582 		_prop_index = -1;
7583 		while (TRUE) {
7584 			gint _tmp244_;
7585 			gint _tmp245_;
7586 			ValaProperty* prop = NULL;
7587 			ValaList* _tmp246_;
7588 			gpointer _tmp247_;
7589 			ValaProperty* _tmp248_;
7590 			ValaProperty* _tmp249_;
7591 			ValaProperty* _tmp250_;
7592 			ValaClass* base_type = NULL;
7593 			ValaProperty* _tmp251_;
7594 			ValaProperty* _tmp252_;
7595 			ValaProperty* _tmp253_;
7596 			ValaSymbol* _tmp254_;
7597 			ValaSymbol* _tmp255_;
7598 			ValaClass* _tmp256_;
7599 			ValaCCodeFunctionCall* ccast = NULL;
7600 			ValaClass* _tmp257_;
7601 			gchar* _tmp258_;
7602 			gchar* _tmp259_;
7603 			ValaCCodeIdentifier* _tmp260_;
7604 			ValaCCodeIdentifier* _tmp261_;
7605 			ValaCCodeFunctionCall* _tmp262_;
7606 			ValaCCodeFunctionCall* _tmp263_;
7607 			ValaCCodeFunctionCall* _tmp264_;
7608 			ValaCCodeIdentifier* _tmp265_;
7609 			ValaCCodeIdentifier* _tmp266_;
7610 			gboolean _tmp267_ = FALSE;
7611 			ValaProperty* _tmp268_;
7612 			ValaProperty* _tmp269_;
7613 			ValaProperty* _tmp270_;
7614 			_prop_index = _prop_index + 1;
7615 			_tmp244_ = _prop_index;
7616 			_tmp245_ = _prop_size;
7617 			if (!(_tmp244_ < _tmp245_)) {
7618 				break;
7619 			}
7620 			_tmp246_ = _prop_list;
7621 			_tmp247_ = vala_list_get (_tmp246_, _prop_index);
7622 			prop = (ValaProperty*) _tmp247_;
7623 			_tmp248_ = prop;
7624 			_tmp249_ = vala_property_get_base_property (_tmp248_);
7625 			_tmp250_ = _tmp249_;
7626 			if (_tmp250_ == NULL) {
7627 				_vala_code_node_unref0 (prop);
7628 				continue;
7629 			}
7630 			_tmp251_ = prop;
7631 			_tmp252_ = vala_property_get_base_property (_tmp251_);
7632 			_tmp253_ = _tmp252_;
7633 			_tmp254_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp253_);
7634 			_tmp255_ = _tmp254_;
7635 			_tmp256_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp255_, VALA_TYPE_CLASS, ValaClass));
7636 			base_type = _tmp256_;
7637 			_tmp257_ = base_type;
7638 			_tmp258_ = vala_get_ccode_class_type_function (_tmp257_);
7639 			_tmp259_ = _tmp258_;
7640 			_tmp260_ = vala_ccode_identifier_new (_tmp259_);
7641 			_tmp261_ = _tmp260_;
7642 			_tmp262_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp261_);
7643 			_tmp263_ = _tmp262_;
7644 			_vala_ccode_node_unref0 (_tmp261_);
7645 			_g_free0 (_tmp259_);
7646 			ccast = _tmp263_;
7647 			_tmp264_ = ccast;
7648 			_tmp265_ = vala_ccode_identifier_new ("klass");
7649 			_tmp266_ = _tmp265_;
7650 			vala_ccode_function_call_add_argument (_tmp264_, (ValaCCodeExpression*) _tmp266_);
7651 			_vala_ccode_node_unref0 (_tmp266_);
7652 			_tmp268_ = prop;
7653 			_tmp269_ = vala_property_get_base_property (_tmp268_);
7654 			_tmp270_ = _tmp269_;
7655 			if (!vala_get_ccode_no_accessor_method (_tmp270_)) {
7656 				ValaProperty* _tmp271_;
7657 				ValaProperty* _tmp272_;
7658 				ValaProperty* _tmp273_;
7659 				_tmp271_ = prop;
7660 				_tmp272_ = vala_property_get_base_property (_tmp271_);
7661 				_tmp273_ = _tmp272_;
7662 				_tmp267_ = !vala_get_ccode_concrete_accessor (_tmp273_);
7663 			} else {
7664 				_tmp267_ = FALSE;
7665 			}
7666 			if (_tmp267_) {
7667 				ValaProperty* _tmp274_;
7668 				ValaPropertyAccessor* _tmp275_;
7669 				ValaPropertyAccessor* _tmp276_;
7670 				ValaProperty* _tmp300_;
7671 				ValaPropertyAccessor* _tmp301_;
7672 				ValaPropertyAccessor* _tmp302_;
7673 				_tmp274_ = prop;
7674 				_tmp275_ = vala_property_get_get_accessor (_tmp274_);
7675 				_tmp276_ = _tmp275_;
7676 				if (_tmp276_ != NULL) {
7677 					ValaProperty* _tmp277_;
7678 					ValaProperty* _tmp278_;
7679 					ValaProperty* _tmp279_;
7680 					ValaPropertyAccessor* _tmp280_;
7681 					ValaPropertyAccessor* _tmp281_;
7682 					ValaCCodeFile* _tmp282_;
7683 					gchar* cname = NULL;
7684 					ValaProperty* _tmp283_;
7685 					ValaPropertyAccessor* _tmp284_;
7686 					ValaPropertyAccessor* _tmp285_;
7687 					gchar* _tmp286_;
7688 					ValaCCodeFunction* _tmp287_;
7689 					ValaCCodeFunction* _tmp288_;
7690 					ValaCCodeFunctionCall* _tmp289_;
7691 					ValaProperty* _tmp290_;
7692 					const gchar* _tmp291_;
7693 					const gchar* _tmp292_;
7694 					gchar* _tmp293_;
7695 					gchar* _tmp294_;
7696 					ValaCCodeMemberAccess* _tmp295_;
7697 					ValaCCodeMemberAccess* _tmp296_;
7698 					const gchar* _tmp297_;
7699 					ValaCCodeIdentifier* _tmp298_;
7700 					ValaCCodeIdentifier* _tmp299_;
7701 					_tmp277_ = prop;
7702 					_tmp278_ = vala_property_get_base_property (_tmp277_);
7703 					_tmp279_ = _tmp278_;
7704 					_tmp280_ = vala_property_get_get_accessor (_tmp279_);
7705 					_tmp281_ = _tmp280_;
7706 					_tmp282_ = ((ValaCCodeBaseModule*) self)->cfile;
7707 					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp281_, _tmp282_);
7708 					_tmp283_ = prop;
7709 					_tmp284_ = vala_property_get_get_accessor (_tmp283_);
7710 					_tmp285_ = _tmp284_;
7711 					_tmp286_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp285_);
7712 					cname = _tmp286_;
7713 					_tmp287_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7714 					_tmp288_ = _tmp287_;
7715 					_tmp289_ = ccast;
7716 					_tmp290_ = prop;
7717 					_tmp291_ = vala_symbol_get_name ((ValaSymbol*) _tmp290_);
7718 					_tmp292_ = _tmp291_;
7719 					_tmp293_ = g_strdup_printf ("get_%s", _tmp292_);
7720 					_tmp294_ = _tmp293_;
7721 					_tmp295_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp289_, _tmp294_);
7722 					_tmp296_ = _tmp295_;
7723 					_tmp297_ = cname;
7724 					_tmp298_ = vala_ccode_identifier_new (_tmp297_);
7725 					_tmp299_ = _tmp298_;
7726 					vala_ccode_function_add_assignment (_tmp288_, (ValaCCodeExpression*) _tmp296_, (ValaCCodeExpression*) _tmp299_);
7727 					_vala_ccode_node_unref0 (_tmp299_);
7728 					_vala_ccode_node_unref0 (_tmp296_);
7729 					_g_free0 (_tmp294_);
7730 					_g_free0 (cname);
7731 				}
7732 				_tmp300_ = prop;
7733 				_tmp301_ = vala_property_get_set_accessor (_tmp300_);
7734 				_tmp302_ = _tmp301_;
7735 				if (_tmp302_ != NULL) {
7736 					ValaProperty* _tmp303_;
7737 					ValaProperty* _tmp304_;
7738 					ValaProperty* _tmp305_;
7739 					ValaPropertyAccessor* _tmp306_;
7740 					ValaPropertyAccessor* _tmp307_;
7741 					ValaCCodeFile* _tmp308_;
7742 					gchar* cname = NULL;
7743 					ValaProperty* _tmp309_;
7744 					ValaPropertyAccessor* _tmp310_;
7745 					ValaPropertyAccessor* _tmp311_;
7746 					gchar* _tmp312_;
7747 					ValaCCodeFunction* _tmp313_;
7748 					ValaCCodeFunction* _tmp314_;
7749 					ValaCCodeFunctionCall* _tmp315_;
7750 					ValaProperty* _tmp316_;
7751 					const gchar* _tmp317_;
7752 					const gchar* _tmp318_;
7753 					gchar* _tmp319_;
7754 					gchar* _tmp320_;
7755 					ValaCCodeMemberAccess* _tmp321_;
7756 					ValaCCodeMemberAccess* _tmp322_;
7757 					const gchar* _tmp323_;
7758 					ValaCCodeIdentifier* _tmp324_;
7759 					ValaCCodeIdentifier* _tmp325_;
7760 					_tmp303_ = prop;
7761 					_tmp304_ = vala_property_get_base_property (_tmp303_);
7762 					_tmp305_ = _tmp304_;
7763 					_tmp306_ = vala_property_get_set_accessor (_tmp305_);
7764 					_tmp307_ = _tmp306_;
7765 					_tmp308_ = ((ValaCCodeBaseModule*) self)->cfile;
7766 					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp307_, _tmp308_);
7767 					_tmp309_ = prop;
7768 					_tmp310_ = vala_property_get_set_accessor (_tmp309_);
7769 					_tmp311_ = _tmp310_;
7770 					_tmp312_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp311_);
7771 					cname = _tmp312_;
7772 					_tmp313_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7773 					_tmp314_ = _tmp313_;
7774 					_tmp315_ = ccast;
7775 					_tmp316_ = prop;
7776 					_tmp317_ = vala_symbol_get_name ((ValaSymbol*) _tmp316_);
7777 					_tmp318_ = _tmp317_;
7778 					_tmp319_ = g_strdup_printf ("set_%s", _tmp318_);
7779 					_tmp320_ = _tmp319_;
7780 					_tmp321_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp315_, _tmp320_);
7781 					_tmp322_ = _tmp321_;
7782 					_tmp323_ = cname;
7783 					_tmp324_ = vala_ccode_identifier_new (_tmp323_);
7784 					_tmp325_ = _tmp324_;
7785 					vala_ccode_function_add_assignment (_tmp314_, (ValaCCodeExpression*) _tmp322_, (ValaCCodeExpression*) _tmp325_);
7786 					_vala_ccode_node_unref0 (_tmp325_);
7787 					_vala_ccode_node_unref0 (_tmp322_);
7788 					_g_free0 (_tmp320_);
7789 					_g_free0 (cname);
7790 				}
7791 			}
7792 			_vala_ccode_node_unref0 (ccast);
7793 			_vala_code_node_unref0 (base_type);
7794 			_vala_code_node_unref0 (prop);
7795 		}
7796 		_vala_iterable_unref0 (_prop_list);
7797 	}
7798 	vala_gtype_module_generate_class_init (self, cl);
7799 	_tmp326_ = vala_class_get_is_compact (cl);
7800 	_tmp327_ = _tmp326_;
7801 	if (!_tmp327_) {
7802 		{
7803 			ValaList* _sig_list = NULL;
7804 			ValaList* _tmp328_;
7805 			ValaList* _tmp329_;
7806 			gint _sig_size = 0;
7807 			ValaList* _tmp330_;
7808 			gint _tmp331_;
7809 			gint _tmp332_;
7810 			gint _sig_index = 0;
7811 			_tmp328_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) cl);
7812 			_tmp329_ = _vala_iterable_ref0 (_tmp328_);
7813 			_sig_list = _tmp329_;
7814 			_tmp330_ = _sig_list;
7815 			_tmp331_ = vala_collection_get_size ((ValaCollection*) _tmp330_);
7816 			_tmp332_ = _tmp331_;
7817 			_sig_size = _tmp332_;
7818 			_sig_index = -1;
7819 			while (TRUE) {
7820 				gint _tmp333_;
7821 				gint _tmp334_;
7822 				ValaSignal* sig = NULL;
7823 				ValaList* _tmp335_;
7824 				gpointer _tmp336_;
7825 				ValaSignal* _tmp337_;
7826 				ValaComment* _tmp338_;
7827 				ValaComment* _tmp339_;
7828 				ValaCCodeFunction* _tmp349_;
7829 				ValaCCodeFunction* _tmp350_;
7830 				ValaSignal* _tmp351_;
7831 				ValaCCodeExpression* _tmp352_;
7832 				ValaCCodeExpression* _tmp353_;
7833 				_sig_index = _sig_index + 1;
7834 				_tmp333_ = _sig_index;
7835 				_tmp334_ = _sig_size;
7836 				if (!(_tmp333_ < _tmp334_)) {
7837 					break;
7838 				}
7839 				_tmp335_ = _sig_list;
7840 				_tmp336_ = vala_list_get (_tmp335_, _sig_index);
7841 				sig = (ValaSignal*) _tmp336_;
7842 				_tmp337_ = sig;
7843 				_tmp338_ = vala_symbol_get_comment ((ValaSymbol*) _tmp337_);
7844 				_tmp339_ = _tmp338_;
7845 				if (_tmp339_ != NULL) {
7846 					ValaCCodeFunction* _tmp340_;
7847 					ValaCCodeFunction* _tmp341_;
7848 					ValaSignal* _tmp342_;
7849 					ValaComment* _tmp343_;
7850 					ValaComment* _tmp344_;
7851 					const gchar* _tmp345_;
7852 					const gchar* _tmp346_;
7853 					ValaCCodeComment* _tmp347_;
7854 					ValaCCodeComment* _tmp348_;
7855 					_tmp340_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7856 					_tmp341_ = _tmp340_;
7857 					_tmp342_ = sig;
7858 					_tmp343_ = vala_symbol_get_comment ((ValaSymbol*) _tmp342_);
7859 					_tmp344_ = _tmp343_;
7860 					_tmp345_ = vala_comment_get_content (_tmp344_);
7861 					_tmp346_ = _tmp345_;
7862 					_tmp347_ = vala_ccode_comment_new (_tmp346_);
7863 					_tmp348_ = _tmp347_;
7864 					vala_ccode_function_add_statement (_tmp341_, (ValaCCodeNode*) _tmp348_);
7865 					_vala_ccode_node_unref0 (_tmp348_);
7866 				}
7867 				_tmp349_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7868 				_tmp350_ = _tmp349_;
7869 				_tmp351_ = sig;
7870 				_tmp352_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, _tmp351_, (ValaObjectTypeSymbol*) cl);
7871 				_tmp353_ = _tmp352_;
7872 				vala_ccode_function_add_expression (_tmp350_, _tmp353_);
7873 				_vala_ccode_node_unref0 (_tmp353_);
7874 				_vala_code_node_unref0 (sig);
7875 			}
7876 			_vala_iterable_unref0 (_sig_list);
7877 		}
7878 	}
7879 	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
7880 	_vala_ccode_node_unref0 (parent_assignment);
7881 	_vala_ccode_node_unref0 (parent_var_decl);
7882 	_vala_ccode_node_unref0 (parent_decl);
7883 	_vala_ccode_node_unref0 (ccall);
7884 	_vala_ccode_node_unref0 (func);
7885 }
7886 
7887 static void
vala_gtype_module_add_class_init_function(ValaGTypeModule * self,ValaClass * cl)7888 vala_gtype_module_add_class_init_function (ValaGTypeModule* self,
7889                                            ValaClass* cl)
7890 {
7891 	ValaCCodeFile* _tmp0_;
7892 	ValaCCodeBaseModuleEmitContext* _tmp1_;
7893 	ValaCCodeFunction* _tmp2_;
7894 	g_return_if_fail (self != NULL);
7895 	g_return_if_fail (cl != NULL);
7896 	_tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
7897 	_tmp1_ = ((ValaCCodeBaseModule*) self)->class_init_context;
7898 	_tmp2_ = _tmp1_->ccode;
7899 	vala_ccode_file_add_function (_tmp0_, _tmp2_);
7900 }
7901 
7902 static void
vala_gtype_module_add_generic_accessor_function(ValaGTypeModule * self,const gchar * base_name,const gchar * return_type,ValaCCodeExpression * expression,ValaTypeParameter * p,ValaClass * cl,ValaInterface * iface)7903 vala_gtype_module_add_generic_accessor_function (ValaGTypeModule* self,
7904                                                  const gchar* base_name,
7905                                                  const gchar* return_type,
7906                                                  ValaCCodeExpression* expression,
7907                                                  ValaTypeParameter* p,
7908                                                  ValaClass* cl,
7909                                                  ValaInterface* iface)
7910 {
7911 	gchar* name = NULL;
7912 	gchar* _tmp0_;
7913 	gchar* _tmp1_;
7914 	gchar* _tmp2_;
7915 	gchar* _tmp3_;
7916 	gchar* _tmp4_;
7917 	gchar* _tmp5_;
7918 	ValaCCodeFunction* function = NULL;
7919 	ValaCCodeFunction* _tmp6_;
7920 	ValaDataType* this_type = NULL;
7921 	ValaDataType* _tmp7_;
7922 	gchar* _tmp8_;
7923 	gchar* _tmp9_;
7924 	ValaCCodeParameter* _tmp10_;
7925 	ValaCCodeParameter* _tmp11_;
7926 	ValaCCodeFunction* _tmp12_;
7927 	ValaCCodeFunction* _tmp13_;
7928 	ValaCCodeFile* _tmp14_;
7929 	ValaCCodeExpression* cfunc = NULL;
7930 	const gchar* _tmp15_;
7931 	const gchar* _tmp16_;
7932 	ValaCCodeIdentifier* _tmp17_;
7933 	gchar* cast = NULL;
7934 	gchar* _tmp18_;
7935 	gchar* cast_args = NULL;
7936 	gchar* _tmp19_;
7937 	gchar* _tmp20_;
7938 	gchar* _tmp21_;
7939 	gchar* _tmp22_;
7940 	const gchar* _tmp23_;
7941 	gchar* _tmp24_;
7942 	ValaCCodeExpression* _tmp25_;
7943 	const gchar* _tmp26_;
7944 	ValaCCodeCastExpression* _tmp27_;
7945 	ValaCCodeIdentifier* ciface = NULL;
7946 	ValaCCodeIdentifier* _tmp28_;
7947 	ValaCCodeFunction* _tmp29_;
7948 	ValaCCodeFunction* _tmp30_;
7949 	ValaCCodeMemberAccess* _tmp31_;
7950 	ValaCCodeMemberAccess* _tmp32_;
7951 	ValaCCodeExpression* _tmp33_;
7952 	g_return_if_fail (self != NULL);
7953 	g_return_if_fail (base_name != NULL);
7954 	g_return_if_fail (return_type != NULL);
7955 	g_return_if_fail (p != NULL);
7956 	g_return_if_fail (cl != NULL);
7957 	g_return_if_fail (iface != NULL);
7958 	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
7959 	_tmp1_ = _tmp0_;
7960 	_tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
7961 	_tmp3_ = _tmp2_;
7962 	_tmp4_ = g_strdup_printf ("%s_%s_%s", _tmp1_, _tmp3_, base_name);
7963 	_tmp5_ = _tmp4_;
7964 	_g_free0 (_tmp3_);
7965 	_g_free0 (_tmp1_);
7966 	name = _tmp5_;
7967 	_tmp6_ = vala_ccode_function_new (name, return_type);
7968 	function = _tmp6_;
7969 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
7970 	_tmp7_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaSymbol*) cl);
7971 	this_type = _tmp7_;
7972 	_tmp8_ = vala_get_ccode_name ((ValaCodeNode*) this_type);
7973 	_tmp9_ = _tmp8_;
7974 	_tmp10_ = vala_ccode_parameter_new ("self", _tmp9_);
7975 	_tmp11_ = _tmp10_;
7976 	vala_ccode_function_add_parameter (function, _tmp11_);
7977 	_vala_ccode_node_unref0 (_tmp11_);
7978 	_g_free0 (_tmp9_);
7979 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
7980 	_tmp12_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7981 	_tmp13_ = _tmp12_;
7982 	vala_ccode_function_add_return (_tmp13_, expression);
7983 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
7984 	_tmp14_ = ((ValaCCodeBaseModule*) self)->cfile;
7985 	vala_ccode_file_add_function (_tmp14_, function);
7986 	_tmp15_ = vala_ccode_function_get_name (function);
7987 	_tmp16_ = _tmp15_;
7988 	_tmp17_ = vala_ccode_identifier_new (_tmp16_);
7989 	cfunc = (ValaCCodeExpression*) _tmp17_;
7990 	_tmp18_ = g_strdup_printf ("%s (*)", return_type);
7991 	cast = _tmp18_;
7992 	_tmp19_ = vala_get_ccode_name ((ValaCodeNode*) iface);
7993 	_tmp20_ = _tmp19_;
7994 	_tmp21_ = g_strdup_printf ("%s *", _tmp20_);
7995 	_tmp22_ = _tmp21_;
7996 	_g_free0 (_tmp20_);
7997 	cast_args = _tmp22_;
7998 	_tmp23_ = cast;
7999 	_tmp24_ = g_strdup_printf ("%s (%s)", _tmp23_, cast_args);
8000 	_g_free0 (cast);
8001 	cast = _tmp24_;
8002 	_tmp25_ = cfunc;
8003 	_tmp26_ = cast;
8004 	_tmp27_ = vala_ccode_cast_expression_new (_tmp25_, _tmp26_);
8005 	_vala_ccode_node_unref0 (cfunc);
8006 	cfunc = (ValaCCodeExpression*) _tmp27_;
8007 	_tmp28_ = vala_ccode_identifier_new ("iface");
8008 	ciface = _tmp28_;
8009 	_tmp29_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8010 	_tmp30_ = _tmp29_;
8011 	_tmp31_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, base_name);
8012 	_tmp32_ = _tmp31_;
8013 	_tmp33_ = cfunc;
8014 	vala_ccode_function_add_assignment (_tmp30_, (ValaCCodeExpression*) _tmp32_, _tmp33_);
8015 	_vala_ccode_node_unref0 (_tmp32_);
8016 	_vala_ccode_node_unref0 (ciface);
8017 	_g_free0 (cast_args);
8018 	_g_free0 (cast);
8019 	_vala_ccode_node_unref0 (cfunc);
8020 	_vala_code_node_unref0 (this_type);
8021 	_vala_ccode_node_unref0 (function);
8022 	_g_free0 (name);
8023 }
8024 
8025 static void
vala_gtype_module_add_interface_init_function(ValaGTypeModule * self,ValaClass * cl,ValaInterface * iface)8026 vala_gtype_module_add_interface_init_function (ValaGTypeModule* self,
8027                                                ValaClass* cl,
8028                                                ValaInterface* iface)
8029 {
8030 	ValaCCodeFunction* iface_init = NULL;
8031 	gchar* _tmp0_;
8032 	gchar* _tmp1_;
8033 	gchar* _tmp2_;
8034 	gchar* _tmp3_;
8035 	gchar* _tmp4_;
8036 	gchar* _tmp5_;
8037 	ValaCCodeFunction* _tmp6_;
8038 	ValaCCodeFunction* _tmp7_;
8039 	ValaCCodeFunction* _tmp8_;
8040 	gchar* _tmp9_;
8041 	gchar* _tmp10_;
8042 	gchar* _tmp11_;
8043 	gchar* _tmp12_;
8044 	ValaCCodeParameter* _tmp13_;
8045 	ValaCCodeParameter* _tmp14_;
8046 	ValaCCodeFunction* _tmp15_;
8047 	ValaCCodeParameter* _tmp16_;
8048 	ValaCCodeParameter* _tmp17_;
8049 	ValaCCodeFunction* _tmp18_;
8050 	ValaCCodeFunction* _tmp19_;
8051 	ValaCCodeFunctionCall* ccall = NULL;
8052 	gchar* parent_iface_var = NULL;
8053 	gchar* _tmp20_;
8054 	gchar* _tmp21_;
8055 	gchar* _tmp22_;
8056 	gchar* _tmp23_;
8057 	gchar* _tmp24_;
8058 	gchar* _tmp25_;
8059 	ValaCCodeDeclaration* parent_decl = NULL;
8060 	gchar* _tmp26_;
8061 	gchar* _tmp27_;
8062 	gchar* _tmp28_;
8063 	gchar* _tmp29_;
8064 	ValaCCodeDeclaration* _tmp30_;
8065 	ValaCCodeDeclaration* _tmp31_;
8066 	ValaCCodeVariableDeclarator* parent_var_decl = NULL;
8067 	const gchar* _tmp32_;
8068 	ValaCCodeVariableDeclarator* _tmp33_;
8069 	ValaCCodeVariableDeclarator* _tmp34_;
8070 	ValaCCodeConstant* _tmp35_;
8071 	ValaCCodeConstant* _tmp36_;
8072 	ValaCCodeDeclaration* _tmp37_;
8073 	ValaCCodeVariableDeclarator* _tmp38_;
8074 	ValaCCodeDeclaration* _tmp39_;
8075 	ValaCCodeFile* _tmp40_;
8076 	ValaCCodeDeclaration* _tmp41_;
8077 	ValaCCodeIdentifier* _tmp42_;
8078 	ValaCCodeIdentifier* _tmp43_;
8079 	ValaCCodeFunctionCall* _tmp44_;
8080 	ValaCCodeFunctionCall* _tmp45_;
8081 	ValaCCodeIdentifier* _tmp46_;
8082 	ValaCCodeIdentifier* _tmp47_;
8083 	ValaCCodeFunction* _tmp48_;
8084 	ValaCCodeFunction* _tmp49_;
8085 	const gchar* _tmp50_;
8086 	ValaCCodeIdentifier* _tmp51_;
8087 	ValaCCodeIdentifier* _tmp52_;
8088 	ValaCCodeFunctionCall* _tmp53_;
8089 	ValaAttribute* _tmp147_;
8090 	ValaMapIterator* it = NULL;
8091 	ValaHashMap* _tmp197_;
8092 	ValaHashMap* _tmp198_;
8093 	ValaMapIterator* _tmp199_;
8094 	ValaMapIterator* _tmp200_;
8095 	ValaCCodeFile* _tmp474_;
8096 	ValaCCodeFunction* _tmp475_;
8097 	g_return_if_fail (self != NULL);
8098 	g_return_if_fail (cl != NULL);
8099 	g_return_if_fail (iface != NULL);
8100 	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
8101 	_tmp1_ = _tmp0_;
8102 	_tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
8103 	_tmp3_ = _tmp2_;
8104 	_tmp4_ = g_strdup_printf ("%s_%s_interface_init", _tmp1_, _tmp3_);
8105 	_tmp5_ = _tmp4_;
8106 	_tmp6_ = vala_ccode_function_new (_tmp5_, "void");
8107 	_tmp7_ = _tmp6_;
8108 	_g_free0 (_tmp5_);
8109 	_g_free0 (_tmp3_);
8110 	_g_free0 (_tmp1_);
8111 	iface_init = _tmp7_;
8112 	_tmp8_ = iface_init;
8113 	_tmp9_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
8114 	_tmp10_ = _tmp9_;
8115 	_tmp11_ = g_strdup_printf ("%s *", _tmp10_);
8116 	_tmp12_ = _tmp11_;
8117 	_tmp13_ = vala_ccode_parameter_new ("iface", _tmp12_);
8118 	_tmp14_ = _tmp13_;
8119 	vala_ccode_function_add_parameter (_tmp8_, _tmp14_);
8120 	_vala_ccode_node_unref0 (_tmp14_);
8121 	_g_free0 (_tmp12_);
8122 	_g_free0 (_tmp10_);
8123 	_tmp15_ = iface_init;
8124 	_tmp16_ = vala_ccode_parameter_new ("iface_data", "gpointer");
8125 	_tmp17_ = _tmp16_;
8126 	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
8127 	_vala_ccode_node_unref0 (_tmp17_);
8128 	_tmp18_ = iface_init;
8129 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp18_, VALA_CCODE_MODIFIERS_STATIC);
8130 	_tmp19_ = iface_init;
8131 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
8132 	_tmp20_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
8133 	_tmp21_ = _tmp20_;
8134 	_tmp22_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
8135 	_tmp23_ = _tmp22_;
8136 	_tmp24_ = g_strdup_printf ("%s_%s_parent_iface", _tmp21_, _tmp23_);
8137 	_tmp25_ = _tmp24_;
8138 	_g_free0 (_tmp23_);
8139 	_g_free0 (_tmp21_);
8140 	parent_iface_var = _tmp25_;
8141 	_tmp26_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
8142 	_tmp27_ = _tmp26_;
8143 	_tmp28_ = g_strdup_printf ("%s *", _tmp27_);
8144 	_tmp29_ = _tmp28_;
8145 	_tmp30_ = vala_ccode_declaration_new (_tmp29_);
8146 	_tmp31_ = _tmp30_;
8147 	_g_free0 (_tmp29_);
8148 	_g_free0 (_tmp27_);
8149 	parent_decl = _tmp31_;
8150 	_tmp32_ = parent_iface_var;
8151 	_tmp33_ = vala_ccode_variable_declarator_new (_tmp32_, NULL, NULL);
8152 	parent_var_decl = _tmp33_;
8153 	_tmp34_ = parent_var_decl;
8154 	_tmp35_ = vala_ccode_constant_new ("NULL");
8155 	_tmp36_ = _tmp35_;
8156 	vala_ccode_variable_declarator_set_initializer (_tmp34_, (ValaCCodeExpression*) _tmp36_);
8157 	_vala_ccode_node_unref0 (_tmp36_);
8158 	_tmp37_ = parent_decl;
8159 	_tmp38_ = parent_var_decl;
8160 	vala_ccode_declaration_add_declarator (_tmp37_, (ValaCCodeDeclarator*) _tmp38_);
8161 	_tmp39_ = parent_decl;
8162 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp39_, VALA_CCODE_MODIFIERS_STATIC);
8163 	_tmp40_ = ((ValaCCodeBaseModule*) self)->cfile;
8164 	_tmp41_ = parent_decl;
8165 	vala_ccode_file_add_type_member_declaration (_tmp40_, (ValaCCodeNode*) _tmp41_);
8166 	_tmp42_ = vala_ccode_identifier_new ("g_type_interface_peek_parent");
8167 	_tmp43_ = _tmp42_;
8168 	_tmp44_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp43_);
8169 	_vala_ccode_node_unref0 (ccall);
8170 	ccall = _tmp44_;
8171 	_vala_ccode_node_unref0 (_tmp43_);
8172 	_tmp45_ = ccall;
8173 	_tmp46_ = vala_ccode_identifier_new ("iface");
8174 	_tmp47_ = _tmp46_;
8175 	vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp47_);
8176 	_vala_ccode_node_unref0 (_tmp47_);
8177 	_tmp48_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8178 	_tmp49_ = _tmp48_;
8179 	_tmp50_ = parent_iface_var;
8180 	_tmp51_ = vala_ccode_identifier_new (_tmp50_);
8181 	_tmp52_ = _tmp51_;
8182 	_tmp53_ = ccall;
8183 	vala_ccode_function_add_assignment (_tmp49_, (ValaCCodeExpression*) _tmp52_, (ValaCCodeExpression*) _tmp53_);
8184 	_vala_ccode_node_unref0 (_tmp52_);
8185 	{
8186 		ValaList* _m_list = NULL;
8187 		ValaList* _tmp54_;
8188 		ValaList* _tmp55_;
8189 		gint _m_size = 0;
8190 		ValaList* _tmp56_;
8191 		gint _tmp57_;
8192 		gint _tmp58_;
8193 		gint _m_index = 0;
8194 		_tmp54_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) cl);
8195 		_tmp55_ = _vala_iterable_ref0 (_tmp54_);
8196 		_m_list = _tmp55_;
8197 		_tmp56_ = _m_list;
8198 		_tmp57_ = vala_collection_get_size ((ValaCollection*) _tmp56_);
8199 		_tmp58_ = _tmp57_;
8200 		_m_size = _tmp58_;
8201 		_m_index = -1;
8202 		while (TRUE) {
8203 			gint _tmp59_;
8204 			gint _tmp60_;
8205 			ValaMethod* m = NULL;
8206 			ValaList* _tmp61_;
8207 			gpointer _tmp62_;
8208 			ValaMethod* _tmp63_;
8209 			ValaMethod* _tmp64_;
8210 			ValaMethod* _tmp65_;
8211 			ValaSymbol* base_type = NULL;
8212 			ValaMethod* _tmp66_;
8213 			ValaMethod* _tmp67_;
8214 			ValaMethod* _tmp68_;
8215 			ValaSymbol* _tmp69_;
8216 			ValaSymbol* _tmp70_;
8217 			ValaSymbol* _tmp71_;
8218 			ValaSymbol* _tmp72_;
8219 			ValaMethod* _tmp73_;
8220 			ValaMethod* _tmp74_;
8221 			ValaMethod* _tmp75_;
8222 			ValaCCodeFile* _tmp76_;
8223 			ValaCCodeIdentifier* ciface = NULL;
8224 			ValaCCodeIdentifier* _tmp77_;
8225 			ValaCCodeExpression* cfunc = NULL;
8226 			gboolean _tmp78_ = FALSE;
8227 			ValaMethod* _tmp79_;
8228 			gboolean _tmp80_;
8229 			gboolean _tmp81_;
8230 			gint _tmp93_ = 0;
8231 			ValaMethod* _tmp94_;
8232 			gboolean _tmp95_;
8233 			gboolean _tmp96_;
8234 			ValaMethod* _tmp97_;
8235 			ValaMethod* _tmp98_;
8236 			ValaMethod* _tmp99_;
8237 			ValaCCodeExpression* _tmp100_;
8238 			ValaCCodeExpression* _tmp101_;
8239 			ValaCCodeFunction* _tmp102_;
8240 			ValaCCodeFunction* _tmp103_;
8241 			ValaCCodeIdentifier* _tmp104_;
8242 			ValaMethod* _tmp105_;
8243 			ValaMethod* _tmp106_;
8244 			ValaMethod* _tmp107_;
8245 			gchar* _tmp108_;
8246 			gchar* _tmp109_;
8247 			ValaCCodeMemberAccess* _tmp110_;
8248 			ValaCCodeMemberAccess* _tmp111_;
8249 			ValaCCodeExpression* _tmp112_;
8250 			ValaMethod* _tmp113_;
8251 			gboolean _tmp114_;
8252 			gboolean _tmp115_;
8253 			_m_index = _m_index + 1;
8254 			_tmp59_ = _m_index;
8255 			_tmp60_ = _m_size;
8256 			if (!(_tmp59_ < _tmp60_)) {
8257 				break;
8258 			}
8259 			_tmp61_ = _m_list;
8260 			_tmp62_ = vala_list_get (_tmp61_, _m_index);
8261 			m = (ValaMethod*) _tmp62_;
8262 			_tmp63_ = m;
8263 			_tmp64_ = vala_method_get_base_interface_method (_tmp63_);
8264 			_tmp65_ = _tmp64_;
8265 			if (_tmp65_ == NULL) {
8266 				_vala_code_node_unref0 (m);
8267 				continue;
8268 			}
8269 			_tmp66_ = m;
8270 			_tmp67_ = vala_method_get_base_interface_method (_tmp66_);
8271 			_tmp68_ = _tmp67_;
8272 			_tmp69_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp68_);
8273 			_tmp70_ = _tmp69_;
8274 			_tmp71_ = _vala_code_node_ref0 (_tmp70_);
8275 			base_type = _tmp71_;
8276 			_tmp72_ = base_type;
8277 			if (_tmp72_ != G_TYPE_CHECK_INSTANCE_CAST (iface, VALA_TYPE_SYMBOL, ValaSymbol)) {
8278 				_vala_code_node_unref0 (base_type);
8279 				_vala_code_node_unref0 (m);
8280 				continue;
8281 			}
8282 			_tmp73_ = m;
8283 			_tmp74_ = vala_method_get_base_interface_method (_tmp73_);
8284 			_tmp75_ = _tmp74_;
8285 			_tmp76_ = ((ValaCCodeBaseModule*) self)->cfile;
8286 			vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp75_, _tmp76_);
8287 			_tmp77_ = vala_ccode_identifier_new ("iface");
8288 			ciface = _tmp77_;
8289 			_tmp79_ = m;
8290 			_tmp80_ = vala_method_get_is_abstract (_tmp79_);
8291 			_tmp81_ = _tmp80_;
8292 			if (_tmp81_) {
8293 				_tmp78_ = TRUE;
8294 			} else {
8295 				ValaMethod* _tmp82_;
8296 				gboolean _tmp83_;
8297 				gboolean _tmp84_;
8298 				_tmp82_ = m;
8299 				_tmp83_ = vala_method_get_is_virtual (_tmp82_);
8300 				_tmp84_ = _tmp83_;
8301 				_tmp78_ = _tmp84_;
8302 			}
8303 			if (_tmp78_) {
8304 				ValaMethod* _tmp85_;
8305 				gchar* _tmp86_;
8306 				gchar* _tmp87_;
8307 				ValaCCodeIdentifier* _tmp88_;
8308 				_tmp85_ = m;
8309 				_tmp86_ = vala_get_ccode_name ((ValaCodeNode*) _tmp85_);
8310 				_tmp87_ = _tmp86_;
8311 				_tmp88_ = vala_ccode_identifier_new (_tmp87_);
8312 				_vala_ccode_node_unref0 (cfunc);
8313 				cfunc = (ValaCCodeExpression*) _tmp88_;
8314 				_g_free0 (_tmp87_);
8315 			} else {
8316 				ValaMethod* _tmp89_;
8317 				gchar* _tmp90_;
8318 				gchar* _tmp91_;
8319 				ValaCCodeIdentifier* _tmp92_;
8320 				_tmp89_ = m;
8321 				_tmp90_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp89_);
8322 				_tmp91_ = _tmp90_;
8323 				_tmp92_ = vala_ccode_identifier_new (_tmp91_);
8324 				_vala_ccode_node_unref0 (cfunc);
8325 				cfunc = (ValaCCodeExpression*) _tmp92_;
8326 				_g_free0 (_tmp91_);
8327 			}
8328 			_tmp94_ = m;
8329 			_tmp95_ = vala_method_get_coroutine (_tmp94_);
8330 			_tmp96_ = _tmp95_;
8331 			if (_tmp96_) {
8332 				_tmp93_ = 1;
8333 			} else {
8334 				_tmp93_ = 3;
8335 			}
8336 			_tmp97_ = m;
8337 			_tmp98_ = vala_method_get_base_interface_method (_tmp97_);
8338 			_tmp99_ = _tmp98_;
8339 			_tmp100_ = cfunc;
8340 			_tmp101_ = vala_gtype_module_cast_method_pointer (self, _tmp99_, _tmp100_, (ValaObjectTypeSymbol*) iface, _tmp93_);
8341 			_vala_ccode_node_unref0 (cfunc);
8342 			cfunc = _tmp101_;
8343 			_tmp102_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8344 			_tmp103_ = _tmp102_;
8345 			_tmp104_ = ciface;
8346 			_tmp105_ = m;
8347 			_tmp106_ = vala_method_get_base_interface_method (_tmp105_);
8348 			_tmp107_ = _tmp106_;
8349 			_tmp108_ = vala_get_ccode_vfunc_name (_tmp107_);
8350 			_tmp109_ = _tmp108_;
8351 			_tmp110_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp104_, _tmp109_);
8352 			_tmp111_ = _tmp110_;
8353 			_tmp112_ = cfunc;
8354 			vala_ccode_function_add_assignment (_tmp103_, (ValaCCodeExpression*) _tmp111_, _tmp112_);
8355 			_vala_ccode_node_unref0 (_tmp111_);
8356 			_g_free0 (_tmp109_);
8357 			_tmp113_ = m;
8358 			_tmp114_ = vala_method_get_coroutine (_tmp113_);
8359 			_tmp115_ = _tmp114_;
8360 			if (_tmp115_) {
8361 				gboolean _tmp116_ = FALSE;
8362 				ValaMethod* _tmp117_;
8363 				gboolean _tmp118_;
8364 				gboolean _tmp119_;
8365 				ValaMethod* _tmp131_;
8366 				ValaMethod* _tmp132_;
8367 				ValaMethod* _tmp133_;
8368 				ValaCCodeExpression* _tmp134_;
8369 				ValaCCodeExpression* _tmp135_;
8370 				ValaCCodeFunction* _tmp136_;
8371 				ValaCCodeFunction* _tmp137_;
8372 				ValaCCodeIdentifier* _tmp138_;
8373 				ValaMethod* _tmp139_;
8374 				ValaMethod* _tmp140_;
8375 				ValaMethod* _tmp141_;
8376 				gchar* _tmp142_;
8377 				gchar* _tmp143_;
8378 				ValaCCodeMemberAccess* _tmp144_;
8379 				ValaCCodeMemberAccess* _tmp145_;
8380 				ValaCCodeExpression* _tmp146_;
8381 				_tmp117_ = m;
8382 				_tmp118_ = vala_method_get_is_abstract (_tmp117_);
8383 				_tmp119_ = _tmp118_;
8384 				if (_tmp119_) {
8385 					_tmp116_ = TRUE;
8386 				} else {
8387 					ValaMethod* _tmp120_;
8388 					gboolean _tmp121_;
8389 					gboolean _tmp122_;
8390 					_tmp120_ = m;
8391 					_tmp121_ = vala_method_get_is_virtual (_tmp120_);
8392 					_tmp122_ = _tmp121_;
8393 					_tmp116_ = _tmp122_;
8394 				}
8395 				if (_tmp116_) {
8396 					ValaMethod* _tmp123_;
8397 					gchar* _tmp124_;
8398 					gchar* _tmp125_;
8399 					ValaCCodeIdentifier* _tmp126_;
8400 					_tmp123_ = m;
8401 					_tmp124_ = vala_get_ccode_finish_name (_tmp123_);
8402 					_tmp125_ = _tmp124_;
8403 					_tmp126_ = vala_ccode_identifier_new (_tmp125_);
8404 					_vala_ccode_node_unref0 (cfunc);
8405 					cfunc = (ValaCCodeExpression*) _tmp126_;
8406 					_g_free0 (_tmp125_);
8407 				} else {
8408 					ValaMethod* _tmp127_;
8409 					gchar* _tmp128_;
8410 					gchar* _tmp129_;
8411 					ValaCCodeIdentifier* _tmp130_;
8412 					_tmp127_ = m;
8413 					_tmp128_ = vala_get_ccode_finish_real_name (_tmp127_);
8414 					_tmp129_ = _tmp128_;
8415 					_tmp130_ = vala_ccode_identifier_new (_tmp129_);
8416 					_vala_ccode_node_unref0 (cfunc);
8417 					cfunc = (ValaCCodeExpression*) _tmp130_;
8418 					_g_free0 (_tmp129_);
8419 				}
8420 				_tmp131_ = m;
8421 				_tmp132_ = vala_method_get_base_interface_method (_tmp131_);
8422 				_tmp133_ = _tmp132_;
8423 				_tmp134_ = cfunc;
8424 				_tmp135_ = vala_gtype_module_cast_method_pointer (self, _tmp133_, _tmp134_, (ValaObjectTypeSymbol*) iface, 2);
8425 				_vala_ccode_node_unref0 (cfunc);
8426 				cfunc = _tmp135_;
8427 				_tmp136_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8428 				_tmp137_ = _tmp136_;
8429 				_tmp138_ = ciface;
8430 				_tmp139_ = m;
8431 				_tmp140_ = vala_method_get_base_interface_method (_tmp139_);
8432 				_tmp141_ = _tmp140_;
8433 				_tmp142_ = vala_get_ccode_finish_vfunc_name (_tmp141_);
8434 				_tmp143_ = _tmp142_;
8435 				_tmp144_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp138_, _tmp143_);
8436 				_tmp145_ = _tmp144_;
8437 				_tmp146_ = cfunc;
8438 				vala_ccode_function_add_assignment (_tmp137_, (ValaCCodeExpression*) _tmp145_, _tmp146_);
8439 				_vala_ccode_node_unref0 (_tmp145_);
8440 				_g_free0 (_tmp143_);
8441 			}
8442 			_vala_ccode_node_unref0 (cfunc);
8443 			_vala_ccode_node_unref0 (ciface);
8444 			_vala_code_node_unref0 (base_type);
8445 			_vala_code_node_unref0 (m);
8446 		}
8447 		_vala_iterable_unref0 (_m_list);
8448 	}
8449 	_tmp147_ = vala_code_node_get_attribute ((ValaCodeNode*) iface, "GenericAccessors");
8450 	if (_tmp147_ != NULL) {
8451 		{
8452 			ValaList* _p_list = NULL;
8453 			ValaList* _tmp148_;
8454 			ValaList* _tmp149_;
8455 			gint _p_size = 0;
8456 			ValaList* _tmp150_;
8457 			gint _tmp151_;
8458 			gint _tmp152_;
8459 			gint _p_index = 0;
8460 			_tmp148_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) iface);
8461 			_tmp149_ = _vala_iterable_ref0 (_tmp148_);
8462 			_p_list = _tmp149_;
8463 			_tmp150_ = _p_list;
8464 			_tmp151_ = vala_collection_get_size ((ValaCollection*) _tmp150_);
8465 			_tmp152_ = _tmp151_;
8466 			_p_size = _tmp152_;
8467 			_p_index = -1;
8468 			while (TRUE) {
8469 				gint _tmp153_;
8470 				gint _tmp154_;
8471 				ValaTypeParameter* p = NULL;
8472 				ValaList* _tmp155_;
8473 				gpointer _tmp156_;
8474 				ValaGenericType* p_type = NULL;
8475 				ValaTypeParameter* _tmp157_;
8476 				ValaGenericType* _tmp158_;
8477 				ValaDataType* p_data_type = NULL;
8478 				ValaGenericType* _tmp159_;
8479 				ValaDataType* _tmp160_;
8480 				ValaDataType* _tmp161_;
8481 				ValaDataType* _tmp162_;
8482 				ValaDataType* _tmp163_;
8483 				ValaTypeParameter* _tmp164_;
8484 				const gchar* _tmp165_;
8485 				const gchar* _tmp166_;
8486 				gchar* _tmp167_;
8487 				gchar* _tmp168_;
8488 				gchar* _tmp169_;
8489 				gchar* _tmp170_;
8490 				ValaDataType* _tmp171_;
8491 				ValaCCodeExpression* _tmp172_;
8492 				ValaCCodeExpression* _tmp173_;
8493 				ValaTypeParameter* _tmp174_;
8494 				ValaTypeParameter* _tmp175_;
8495 				const gchar* _tmp176_;
8496 				const gchar* _tmp177_;
8497 				gchar* _tmp178_;
8498 				gchar* _tmp179_;
8499 				gchar* _tmp180_;
8500 				gchar* _tmp181_;
8501 				ValaDataType* _tmp182_;
8502 				ValaCCodeExpression* _tmp183_;
8503 				ValaCCodeExpression* _tmp184_;
8504 				ValaTypeParameter* _tmp185_;
8505 				ValaTypeParameter* _tmp186_;
8506 				const gchar* _tmp187_;
8507 				const gchar* _tmp188_;
8508 				gchar* _tmp189_;
8509 				gchar* _tmp190_;
8510 				gchar* _tmp191_;
8511 				gchar* _tmp192_;
8512 				ValaDataType* _tmp193_;
8513 				ValaCCodeExpression* _tmp194_;
8514 				ValaCCodeExpression* _tmp195_;
8515 				ValaTypeParameter* _tmp196_;
8516 				_p_index = _p_index + 1;
8517 				_tmp153_ = _p_index;
8518 				_tmp154_ = _p_size;
8519 				if (!(_tmp153_ < _tmp154_)) {
8520 					break;
8521 				}
8522 				_tmp155_ = _p_list;
8523 				_tmp156_ = vala_list_get (_tmp155_, _p_index);
8524 				p = (ValaTypeParameter*) _tmp156_;
8525 				_tmp157_ = p;
8526 				_tmp158_ = vala_generic_type_new (_tmp157_);
8527 				p_type = _tmp158_;
8528 				_tmp159_ = p_type;
8529 				_tmp160_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaSymbol*) cl);
8530 				_tmp161_ = _tmp160_;
8531 				_tmp162_ = vala_data_type_get_actual_type ((ValaDataType*) _tmp159_, _tmp161_, NULL, (ValaCodeNode*) cl);
8532 				_tmp163_ = _tmp162_;
8533 				_vala_code_node_unref0 (_tmp161_);
8534 				p_data_type = _tmp163_;
8535 				_tmp164_ = p;
8536 				_tmp165_ = vala_symbol_get_name ((ValaSymbol*) _tmp164_);
8537 				_tmp166_ = _tmp165_;
8538 				_tmp167_ = g_ascii_strdown (_tmp166_, (gssize) -1);
8539 				_tmp168_ = _tmp167_;
8540 				_tmp169_ = g_strdup_printf ("get_%s_type", _tmp168_);
8541 				_tmp170_ = _tmp169_;
8542 				_tmp171_ = p_data_type;
8543 				_tmp172_ = vala_ccode_base_module_get_type_id_expression ((ValaCCodeBaseModule*) self, _tmp171_, FALSE);
8544 				_tmp173_ = _tmp172_;
8545 				_tmp174_ = p;
8546 				vala_gtype_module_add_generic_accessor_function (self, _tmp170_, "GType", _tmp173_, _tmp174_, cl, iface);
8547 				_vala_ccode_node_unref0 (_tmp173_);
8548 				_g_free0 (_tmp170_);
8549 				_g_free0 (_tmp168_);
8550 				_tmp175_ = p;
8551 				_tmp176_ = vala_symbol_get_name ((ValaSymbol*) _tmp175_);
8552 				_tmp177_ = _tmp176_;
8553 				_tmp178_ = g_ascii_strdown (_tmp177_, (gssize) -1);
8554 				_tmp179_ = _tmp178_;
8555 				_tmp180_ = g_strdup_printf ("get_%s_dup_func", _tmp179_);
8556 				_tmp181_ = _tmp180_;
8557 				_tmp182_ = p_data_type;
8558 				_tmp183_ = vala_ccode_base_module_get_dup_func_expression ((ValaCCodeBaseModule*) self, _tmp182_, NULL, FALSE);
8559 				_tmp184_ = _tmp183_;
8560 				_tmp185_ = p;
8561 				vala_gtype_module_add_generic_accessor_function (self, _tmp181_, "GBoxedCopyFunc", _tmp184_, _tmp185_, cl, iface);
8562 				_vala_ccode_node_unref0 (_tmp184_);
8563 				_g_free0 (_tmp181_);
8564 				_g_free0 (_tmp179_);
8565 				_tmp186_ = p;
8566 				_tmp187_ = vala_symbol_get_name ((ValaSymbol*) _tmp186_);
8567 				_tmp188_ = _tmp187_;
8568 				_tmp189_ = g_ascii_strdown (_tmp188_, (gssize) -1);
8569 				_tmp190_ = _tmp189_;
8570 				_tmp191_ = g_strdup_printf ("get_%s_destroy_func", _tmp190_);
8571 				_tmp192_ = _tmp191_;
8572 				_tmp193_ = p_data_type;
8573 				_tmp194_ = vala_ccode_base_module_get_destroy_func_expression ((ValaCCodeBaseModule*) self, _tmp193_, FALSE);
8574 				_tmp195_ = _tmp194_;
8575 				_tmp196_ = p;
8576 				vala_gtype_module_add_generic_accessor_function (self, _tmp192_, "GDestroyNotify", _tmp195_, _tmp196_, cl, iface);
8577 				_vala_ccode_node_unref0 (_tmp195_);
8578 				_g_free0 (_tmp192_);
8579 				_g_free0 (_tmp190_);
8580 				_vala_code_node_unref0 (p_data_type);
8581 				_vala_code_node_unref0 (p_type);
8582 				_vala_code_node_unref0 (p);
8583 			}
8584 			_vala_iterable_unref0 (_p_list);
8585 		}
8586 	}
8587 	_tmp197_ = vala_class_get_implicit_implementations (cl);
8588 	_tmp198_ = _tmp197_;
8589 	_tmp199_ = vala_map_map_iterator ((ValaMap*) _tmp198_);
8590 	_tmp200_ = _tmp199_;
8591 	_vala_map_unref0 (_tmp198_);
8592 	it = _tmp200_;
8593 	while (TRUE) {
8594 		ValaMapIterator* _tmp201_;
8595 		ValaMethod* m = NULL;
8596 		ValaMapIterator* _tmp202_;
8597 		gpointer _tmp203_;
8598 		ValaMethod* _tmp204_;
8599 		ValaSymbol* _tmp205_;
8600 		ValaSymbol* _tmp206_;
8601 		_tmp201_ = it;
8602 		if (!vala_map_iterator_next (_tmp201_)) {
8603 			break;
8604 		}
8605 		_tmp202_ = it;
8606 		_tmp203_ = vala_map_iterator_get_key (_tmp202_);
8607 		m = (ValaMethod*) _tmp203_;
8608 		_tmp204_ = m;
8609 		_tmp205_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp204_);
8610 		_tmp206_ = _tmp205_;
8611 		if (_tmp206_ == G_TYPE_CHECK_INSTANCE_CAST (iface, VALA_TYPE_SYMBOL, ValaSymbol)) {
8612 			ValaMethod* base_method = NULL;
8613 			ValaMapIterator* _tmp207_;
8614 			gpointer _tmp208_;
8615 			ValaMethod* _tmp209_;
8616 			ValaCCodeFile* _tmp210_;
8617 			ValaCCodeExpression* cfunc = NULL;
8618 			ValaMethod* _tmp211_;
8619 			gchar* _tmp212_;
8620 			gchar* _tmp213_;
8621 			ValaCCodeIdentifier* _tmp214_;
8622 			ValaCCodeExpression* _tmp215_;
8623 			ValaMethod* _tmp216_;
8624 			ValaCCodeExpression* _tmp217_;
8625 			ValaCCodeExpression* _tmp218_;
8626 			ValaCCodeIdentifier* ciface = NULL;
8627 			ValaCCodeIdentifier* _tmp219_;
8628 			ValaCCodeFunction* _tmp220_;
8629 			ValaCCodeFunction* _tmp221_;
8630 			ValaCCodeIdentifier* _tmp222_;
8631 			ValaMethod* _tmp223_;
8632 			gchar* _tmp224_;
8633 			gchar* _tmp225_;
8634 			ValaCCodeMemberAccess* _tmp226_;
8635 			ValaCCodeMemberAccess* _tmp227_;
8636 			ValaCCodeExpression* _tmp228_;
8637 			_tmp207_ = it;
8638 			_tmp208_ = vala_map_iterator_get_value (_tmp207_);
8639 			base_method = (ValaMethod*) _tmp208_;
8640 			_tmp209_ = base_method;
8641 			_tmp210_ = ((ValaCCodeBaseModule*) self)->cfile;
8642 			vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp209_, _tmp210_);
8643 			_tmp211_ = base_method;
8644 			_tmp212_ = vala_get_ccode_name ((ValaCodeNode*) _tmp211_);
8645 			_tmp213_ = _tmp212_;
8646 			_tmp214_ = vala_ccode_identifier_new (_tmp213_);
8647 			_tmp215_ = (ValaCCodeExpression*) _tmp214_;
8648 			_g_free0 (_tmp213_);
8649 			cfunc = _tmp215_;
8650 			_tmp216_ = m;
8651 			_tmp217_ = cfunc;
8652 			_tmp218_ = vala_gtype_module_cast_method_pointer (self, _tmp216_, _tmp217_, (ValaObjectTypeSymbol*) iface, 3);
8653 			_vala_ccode_node_unref0 (cfunc);
8654 			cfunc = _tmp218_;
8655 			_tmp219_ = vala_ccode_identifier_new ("iface");
8656 			ciface = _tmp219_;
8657 			_tmp220_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8658 			_tmp221_ = _tmp220_;
8659 			_tmp222_ = ciface;
8660 			_tmp223_ = m;
8661 			_tmp224_ = vala_get_ccode_vfunc_name (_tmp223_);
8662 			_tmp225_ = _tmp224_;
8663 			_tmp226_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp222_, _tmp225_);
8664 			_tmp227_ = _tmp226_;
8665 			_tmp228_ = cfunc;
8666 			vala_ccode_function_add_assignment (_tmp221_, (ValaCCodeExpression*) _tmp227_, _tmp228_);
8667 			_vala_ccode_node_unref0 (_tmp227_);
8668 			_g_free0 (_tmp225_);
8669 			_vala_ccode_node_unref0 (ciface);
8670 			_vala_ccode_node_unref0 (cfunc);
8671 			_vala_code_node_unref0 (base_method);
8672 		}
8673 		_vala_code_node_unref0 (m);
8674 	}
8675 	{
8676 		ValaList* _prop_list = NULL;
8677 		ValaList* _tmp229_;
8678 		ValaList* _tmp230_;
8679 		gint _prop_size = 0;
8680 		ValaList* _tmp231_;
8681 		gint _tmp232_;
8682 		gint _tmp233_;
8683 		gint _prop_index = 0;
8684 		_tmp229_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
8685 		_tmp230_ = _vala_iterable_ref0 (_tmp229_);
8686 		_prop_list = _tmp230_;
8687 		_tmp231_ = _prop_list;
8688 		_tmp232_ = vala_collection_get_size ((ValaCollection*) _tmp231_);
8689 		_tmp233_ = _tmp232_;
8690 		_prop_size = _tmp233_;
8691 		_prop_index = -1;
8692 		while (TRUE) {
8693 			gint _tmp234_;
8694 			gint _tmp235_;
8695 			ValaProperty* prop = NULL;
8696 			ValaList* _tmp236_;
8697 			gpointer _tmp237_;
8698 			ValaProperty* _tmp238_;
8699 			ValaProperty* _tmp239_;
8700 			ValaProperty* _tmp240_;
8701 			ValaObjectTypeSymbol* base_type = NULL;
8702 			ValaProperty* _tmp241_;
8703 			ValaProperty* _tmp242_;
8704 			ValaProperty* _tmp243_;
8705 			ValaSymbol* _tmp244_;
8706 			ValaSymbol* _tmp245_;
8707 			ValaObjectTypeSymbol* _tmp246_;
8708 			ValaObjectTypeSymbol* _tmp247_;
8709 			ValaCCodeIdentifier* ciface = NULL;
8710 			ValaCCodeIdentifier* _tmp248_;
8711 			gboolean _tmp249_ = FALSE;
8712 			ValaProperty* _tmp250_;
8713 			ValaProperty* _tmp251_;
8714 			ValaProperty* _tmp252_;
8715 			_prop_index = _prop_index + 1;
8716 			_tmp234_ = _prop_index;
8717 			_tmp235_ = _prop_size;
8718 			if (!(_tmp234_ < _tmp235_)) {
8719 				break;
8720 			}
8721 			_tmp236_ = _prop_list;
8722 			_tmp237_ = vala_list_get (_tmp236_, _prop_index);
8723 			prop = (ValaProperty*) _tmp237_;
8724 			_tmp238_ = prop;
8725 			_tmp239_ = vala_property_get_base_interface_property (_tmp238_);
8726 			_tmp240_ = _tmp239_;
8727 			if (_tmp240_ == NULL) {
8728 				_vala_code_node_unref0 (prop);
8729 				continue;
8730 			}
8731 			_tmp241_ = prop;
8732 			_tmp242_ = vala_property_get_base_interface_property (_tmp241_);
8733 			_tmp243_ = _tmp242_;
8734 			_tmp244_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp243_);
8735 			_tmp245_ = _tmp244_;
8736 			_tmp246_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp245_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
8737 			base_type = _tmp246_;
8738 			_tmp247_ = base_type;
8739 			if (_tmp247_ != G_TYPE_CHECK_INSTANCE_CAST (iface, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol)) {
8740 				_vala_code_node_unref0 (base_type);
8741 				_vala_code_node_unref0 (prop);
8742 				continue;
8743 			}
8744 			_tmp248_ = vala_ccode_identifier_new ("iface");
8745 			ciface = _tmp248_;
8746 			_tmp250_ = prop;
8747 			_tmp251_ = vala_property_get_base_interface_property (_tmp250_);
8748 			_tmp252_ = _tmp251_;
8749 			if (!vala_get_ccode_no_accessor_method (_tmp252_)) {
8750 				ValaProperty* _tmp253_;
8751 				ValaProperty* _tmp254_;
8752 				ValaProperty* _tmp255_;
8753 				_tmp253_ = prop;
8754 				_tmp254_ = vala_property_get_base_interface_property (_tmp253_);
8755 				_tmp255_ = _tmp254_;
8756 				_tmp249_ = !vala_get_ccode_concrete_accessor (_tmp255_);
8757 			} else {
8758 				_tmp249_ = FALSE;
8759 			}
8760 			if (_tmp249_) {
8761 				ValaProperty* _tmp256_;
8762 				ValaPropertyAccessor* _tmp257_;
8763 				ValaPropertyAccessor* _tmp258_;
8764 				ValaProperty* _tmp306_;
8765 				ValaPropertyAccessor* _tmp307_;
8766 				ValaPropertyAccessor* _tmp308_;
8767 				_tmp256_ = prop;
8768 				_tmp257_ = vala_property_get_get_accessor (_tmp256_);
8769 				_tmp258_ = _tmp257_;
8770 				if (_tmp258_ != NULL) {
8771 					ValaProperty* _tmp259_;
8772 					ValaProperty* _tmp260_;
8773 					ValaProperty* _tmp261_;
8774 					ValaPropertyAccessor* _tmp262_;
8775 					ValaPropertyAccessor* _tmp263_;
8776 					ValaCCodeFile* _tmp264_;
8777 					gchar* cname = NULL;
8778 					ValaProperty* _tmp265_;
8779 					ValaPropertyAccessor* _tmp266_;
8780 					ValaPropertyAccessor* _tmp267_;
8781 					gchar* _tmp268_;
8782 					gboolean _tmp269_ = FALSE;
8783 					ValaProperty* _tmp270_;
8784 					gboolean _tmp271_;
8785 					gboolean _tmp272_;
8786 					ValaCCodeExpression* cfunc = NULL;
8787 					const gchar* _tmp280_;
8788 					ValaCCodeIdentifier* _tmp281_;
8789 					gboolean _tmp282_ = FALSE;
8790 					ValaProperty* _tmp283_;
8791 					gboolean _tmp284_;
8792 					gboolean _tmp285_;
8793 					ValaCCodeFunction* _tmp295_;
8794 					ValaCCodeFunction* _tmp296_;
8795 					ValaCCodeIdentifier* _tmp297_;
8796 					ValaProperty* _tmp298_;
8797 					const gchar* _tmp299_;
8798 					const gchar* _tmp300_;
8799 					gchar* _tmp301_;
8800 					gchar* _tmp302_;
8801 					ValaCCodeMemberAccess* _tmp303_;
8802 					ValaCCodeMemberAccess* _tmp304_;
8803 					ValaCCodeExpression* _tmp305_;
8804 					_tmp259_ = prop;
8805 					_tmp260_ = vala_property_get_base_interface_property (_tmp259_);
8806 					_tmp261_ = _tmp260_;
8807 					_tmp262_ = vala_property_get_get_accessor (_tmp261_);
8808 					_tmp263_ = _tmp262_;
8809 					_tmp264_ = ((ValaCCodeBaseModule*) self)->cfile;
8810 					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp263_, _tmp264_);
8811 					_tmp265_ = prop;
8812 					_tmp266_ = vala_property_get_get_accessor (_tmp265_);
8813 					_tmp267_ = _tmp266_;
8814 					_tmp268_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp267_);
8815 					cname = _tmp268_;
8816 					_tmp270_ = prop;
8817 					_tmp271_ = vala_property_get_is_abstract (_tmp270_);
8818 					_tmp272_ = _tmp271_;
8819 					if (_tmp272_) {
8820 						_tmp269_ = TRUE;
8821 					} else {
8822 						ValaProperty* _tmp273_;
8823 						gboolean _tmp274_;
8824 						gboolean _tmp275_;
8825 						_tmp273_ = prop;
8826 						_tmp274_ = vala_property_get_is_virtual (_tmp273_);
8827 						_tmp275_ = _tmp274_;
8828 						_tmp269_ = _tmp275_;
8829 					}
8830 					if (_tmp269_) {
8831 						ValaProperty* _tmp276_;
8832 						ValaPropertyAccessor* _tmp277_;
8833 						ValaPropertyAccessor* _tmp278_;
8834 						gchar* _tmp279_;
8835 						_tmp276_ = prop;
8836 						_tmp277_ = vala_property_get_get_accessor (_tmp276_);
8837 						_tmp278_ = _tmp277_;
8838 						_tmp279_ = vala_get_ccode_name ((ValaCodeNode*) _tmp278_);
8839 						_g_free0 (cname);
8840 						cname = _tmp279_;
8841 					}
8842 					_tmp280_ = cname;
8843 					_tmp281_ = vala_ccode_identifier_new (_tmp280_);
8844 					cfunc = (ValaCCodeExpression*) _tmp281_;
8845 					_tmp283_ = prop;
8846 					_tmp284_ = vala_property_get_is_abstract (_tmp283_);
8847 					_tmp285_ = _tmp284_;
8848 					if (_tmp285_) {
8849 						_tmp282_ = TRUE;
8850 					} else {
8851 						ValaProperty* _tmp286_;
8852 						gboolean _tmp287_;
8853 						gboolean _tmp288_;
8854 						_tmp286_ = prop;
8855 						_tmp287_ = vala_property_get_is_virtual (_tmp286_);
8856 						_tmp288_ = _tmp287_;
8857 						_tmp282_ = _tmp288_;
8858 					}
8859 					if (_tmp282_) {
8860 						ValaProperty* _tmp289_;
8861 						ValaPropertyAccessor* _tmp290_;
8862 						ValaPropertyAccessor* _tmp291_;
8863 						ValaCCodeExpression* _tmp292_;
8864 						ValaObjectTypeSymbol* _tmp293_;
8865 						ValaCCodeExpression* _tmp294_;
8866 						_tmp289_ = prop;
8867 						_tmp290_ = vala_property_get_get_accessor (_tmp289_);
8868 						_tmp291_ = _tmp290_;
8869 						_tmp292_ = cfunc;
8870 						_tmp293_ = base_type;
8871 						_tmp294_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp291_, _tmp292_, _tmp293_);
8872 						_vala_ccode_node_unref0 (cfunc);
8873 						cfunc = _tmp294_;
8874 					}
8875 					_tmp295_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8876 					_tmp296_ = _tmp295_;
8877 					_tmp297_ = ciface;
8878 					_tmp298_ = prop;
8879 					_tmp299_ = vala_symbol_get_name ((ValaSymbol*) _tmp298_);
8880 					_tmp300_ = _tmp299_;
8881 					_tmp301_ = g_strdup_printf ("get_%s", _tmp300_);
8882 					_tmp302_ = _tmp301_;
8883 					_tmp303_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp297_, _tmp302_);
8884 					_tmp304_ = _tmp303_;
8885 					_tmp305_ = cfunc;
8886 					vala_ccode_function_add_assignment (_tmp296_, (ValaCCodeExpression*) _tmp304_, _tmp305_);
8887 					_vala_ccode_node_unref0 (_tmp304_);
8888 					_g_free0 (_tmp302_);
8889 					_vala_ccode_node_unref0 (cfunc);
8890 					_g_free0 (cname);
8891 				}
8892 				_tmp306_ = prop;
8893 				_tmp307_ = vala_property_get_set_accessor (_tmp306_);
8894 				_tmp308_ = _tmp307_;
8895 				if (_tmp308_ != NULL) {
8896 					ValaProperty* _tmp309_;
8897 					ValaProperty* _tmp310_;
8898 					ValaProperty* _tmp311_;
8899 					ValaPropertyAccessor* _tmp312_;
8900 					ValaPropertyAccessor* _tmp313_;
8901 					ValaCCodeFile* _tmp314_;
8902 					gchar* cname = NULL;
8903 					ValaProperty* _tmp315_;
8904 					ValaPropertyAccessor* _tmp316_;
8905 					ValaPropertyAccessor* _tmp317_;
8906 					gchar* _tmp318_;
8907 					gboolean _tmp319_ = FALSE;
8908 					ValaProperty* _tmp320_;
8909 					gboolean _tmp321_;
8910 					gboolean _tmp322_;
8911 					ValaCCodeExpression* cfunc = NULL;
8912 					const gchar* _tmp330_;
8913 					ValaCCodeIdentifier* _tmp331_;
8914 					gboolean _tmp332_ = FALSE;
8915 					ValaProperty* _tmp333_;
8916 					gboolean _tmp334_;
8917 					gboolean _tmp335_;
8918 					ValaCCodeFunction* _tmp345_;
8919 					ValaCCodeFunction* _tmp346_;
8920 					ValaCCodeIdentifier* _tmp347_;
8921 					ValaProperty* _tmp348_;
8922 					const gchar* _tmp349_;
8923 					const gchar* _tmp350_;
8924 					gchar* _tmp351_;
8925 					gchar* _tmp352_;
8926 					ValaCCodeMemberAccess* _tmp353_;
8927 					ValaCCodeMemberAccess* _tmp354_;
8928 					ValaCCodeExpression* _tmp355_;
8929 					_tmp309_ = prop;
8930 					_tmp310_ = vala_property_get_base_interface_property (_tmp309_);
8931 					_tmp311_ = _tmp310_;
8932 					_tmp312_ = vala_property_get_set_accessor (_tmp311_);
8933 					_tmp313_ = _tmp312_;
8934 					_tmp314_ = ((ValaCCodeBaseModule*) self)->cfile;
8935 					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp313_, _tmp314_);
8936 					_tmp315_ = prop;
8937 					_tmp316_ = vala_property_get_set_accessor (_tmp315_);
8938 					_tmp317_ = _tmp316_;
8939 					_tmp318_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp317_);
8940 					cname = _tmp318_;
8941 					_tmp320_ = prop;
8942 					_tmp321_ = vala_property_get_is_abstract (_tmp320_);
8943 					_tmp322_ = _tmp321_;
8944 					if (_tmp322_) {
8945 						_tmp319_ = TRUE;
8946 					} else {
8947 						ValaProperty* _tmp323_;
8948 						gboolean _tmp324_;
8949 						gboolean _tmp325_;
8950 						_tmp323_ = prop;
8951 						_tmp324_ = vala_property_get_is_virtual (_tmp323_);
8952 						_tmp325_ = _tmp324_;
8953 						_tmp319_ = _tmp325_;
8954 					}
8955 					if (_tmp319_) {
8956 						ValaProperty* _tmp326_;
8957 						ValaPropertyAccessor* _tmp327_;
8958 						ValaPropertyAccessor* _tmp328_;
8959 						gchar* _tmp329_;
8960 						_tmp326_ = prop;
8961 						_tmp327_ = vala_property_get_set_accessor (_tmp326_);
8962 						_tmp328_ = _tmp327_;
8963 						_tmp329_ = vala_get_ccode_name ((ValaCodeNode*) _tmp328_);
8964 						_g_free0 (cname);
8965 						cname = _tmp329_;
8966 					}
8967 					_tmp330_ = cname;
8968 					_tmp331_ = vala_ccode_identifier_new (_tmp330_);
8969 					cfunc = (ValaCCodeExpression*) _tmp331_;
8970 					_tmp333_ = prop;
8971 					_tmp334_ = vala_property_get_is_abstract (_tmp333_);
8972 					_tmp335_ = _tmp334_;
8973 					if (_tmp335_) {
8974 						_tmp332_ = TRUE;
8975 					} else {
8976 						ValaProperty* _tmp336_;
8977 						gboolean _tmp337_;
8978 						gboolean _tmp338_;
8979 						_tmp336_ = prop;
8980 						_tmp337_ = vala_property_get_is_virtual (_tmp336_);
8981 						_tmp338_ = _tmp337_;
8982 						_tmp332_ = _tmp338_;
8983 					}
8984 					if (_tmp332_) {
8985 						ValaProperty* _tmp339_;
8986 						ValaPropertyAccessor* _tmp340_;
8987 						ValaPropertyAccessor* _tmp341_;
8988 						ValaCCodeExpression* _tmp342_;
8989 						ValaObjectTypeSymbol* _tmp343_;
8990 						ValaCCodeExpression* _tmp344_;
8991 						_tmp339_ = prop;
8992 						_tmp340_ = vala_property_get_set_accessor (_tmp339_);
8993 						_tmp341_ = _tmp340_;
8994 						_tmp342_ = cfunc;
8995 						_tmp343_ = base_type;
8996 						_tmp344_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp341_, _tmp342_, _tmp343_);
8997 						_vala_ccode_node_unref0 (cfunc);
8998 						cfunc = _tmp344_;
8999 					}
9000 					_tmp345_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
9001 					_tmp346_ = _tmp345_;
9002 					_tmp347_ = ciface;
9003 					_tmp348_ = prop;
9004 					_tmp349_ = vala_symbol_get_name ((ValaSymbol*) _tmp348_);
9005 					_tmp350_ = _tmp349_;
9006 					_tmp351_ = g_strdup_printf ("set_%s", _tmp350_);
9007 					_tmp352_ = _tmp351_;
9008 					_tmp353_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp347_, _tmp352_);
9009 					_tmp354_ = _tmp353_;
9010 					_tmp355_ = cfunc;
9011 					vala_ccode_function_add_assignment (_tmp346_, (ValaCCodeExpression*) _tmp354_, _tmp355_);
9012 					_vala_ccode_node_unref0 (_tmp354_);
9013 					_g_free0 (_tmp352_);
9014 					_vala_ccode_node_unref0 (cfunc);
9015 					_g_free0 (cname);
9016 				}
9017 			}
9018 			_vala_ccode_node_unref0 (ciface);
9019 			_vala_code_node_unref0 (base_type);
9020 			_vala_code_node_unref0 (prop);
9021 		}
9022 		_vala_iterable_unref0 (_prop_list);
9023 	}
9024 	{
9025 		ValaList* _prop_list = NULL;
9026 		ValaList* _tmp356_;
9027 		ValaList* _tmp357_;
9028 		gint _prop_size = 0;
9029 		ValaList* _tmp358_;
9030 		gint _tmp359_;
9031 		gint _tmp360_;
9032 		gint _prop_index = 0;
9033 		_tmp356_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) iface);
9034 		_tmp357_ = _vala_iterable_ref0 (_tmp356_);
9035 		_prop_list = _tmp357_;
9036 		_tmp358_ = _prop_list;
9037 		_tmp359_ = vala_collection_get_size ((ValaCollection*) _tmp358_);
9038 		_tmp360_ = _tmp359_;
9039 		_prop_size = _tmp360_;
9040 		_prop_index = -1;
9041 		while (TRUE) {
9042 			gint _tmp361_;
9043 			gint _tmp362_;
9044 			ValaProperty* prop = NULL;
9045 			ValaList* _tmp363_;
9046 			gpointer _tmp364_;
9047 			ValaProperty* _tmp365_;
9048 			gboolean _tmp366_;
9049 			gboolean _tmp367_;
9050 			ValaProperty* cl_prop = NULL;
9051 			ValaClass* base_class = NULL;
9052 			ValaClass* _tmp368_;
9053 			gboolean _tmp384_ = FALSE;
9054 			ValaClass* _tmp385_;
9055 			_prop_index = _prop_index + 1;
9056 			_tmp361_ = _prop_index;
9057 			_tmp362_ = _prop_size;
9058 			if (!(_tmp361_ < _tmp362_)) {
9059 				break;
9060 			}
9061 			_tmp363_ = _prop_list;
9062 			_tmp364_ = vala_list_get (_tmp363_, _prop_index);
9063 			prop = (ValaProperty*) _tmp364_;
9064 			_tmp365_ = prop;
9065 			_tmp366_ = vala_property_get_is_abstract (_tmp365_);
9066 			_tmp367_ = _tmp366_;
9067 			if (!_tmp367_) {
9068 				_vala_code_node_unref0 (prop);
9069 				continue;
9070 			}
9071 			cl_prop = NULL;
9072 			_tmp368_ = _vala_code_node_ref0 (cl);
9073 			base_class = _tmp368_;
9074 			while (TRUE) {
9075 				gboolean _tmp369_ = FALSE;
9076 				ValaClass* _tmp370_;
9077 				ValaClass* _tmp372_;
9078 				ValaScope* _tmp373_;
9079 				ValaScope* _tmp374_;
9080 				ValaProperty* _tmp375_;
9081 				const gchar* _tmp376_;
9082 				const gchar* _tmp377_;
9083 				ValaSymbol* _tmp378_;
9084 				ValaProperty* _tmp379_;
9085 				ValaClass* _tmp380_;
9086 				ValaClass* _tmp381_;
9087 				ValaClass* _tmp382_;
9088 				ValaClass* _tmp383_;
9089 				_tmp370_ = base_class;
9090 				if (_tmp370_ != NULL) {
9091 					ValaProperty* _tmp371_;
9092 					_tmp371_ = cl_prop;
9093 					_tmp369_ = _tmp371_ == NULL;
9094 				} else {
9095 					_tmp369_ = FALSE;
9096 				}
9097 				if (!_tmp369_) {
9098 					break;
9099 				}
9100 				_tmp372_ = base_class;
9101 				_tmp373_ = vala_symbol_get_scope ((ValaSymbol*) _tmp372_);
9102 				_tmp374_ = _tmp373_;
9103 				_tmp375_ = prop;
9104 				_tmp376_ = vala_symbol_get_name ((ValaSymbol*) _tmp375_);
9105 				_tmp377_ = _tmp376_;
9106 				_tmp378_ = vala_scope_lookup (_tmp374_, _tmp377_);
9107 				_tmp379_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp378_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp378_) : NULL;
9108 				if (_tmp379_ == NULL) {
9109 					_vala_code_node_unref0 (_tmp378_);
9110 				}
9111 				_vala_code_node_unref0 (cl_prop);
9112 				cl_prop = _tmp379_;
9113 				_tmp380_ = base_class;
9114 				_tmp381_ = vala_class_get_base_class (_tmp380_);
9115 				_tmp382_ = _tmp381_;
9116 				_tmp383_ = _vala_code_node_ref0 (_tmp382_);
9117 				_vala_code_node_unref0 (base_class);
9118 				base_class = _tmp383_;
9119 			}
9120 			_tmp385_ = base_class;
9121 			if (_tmp385_ != NULL) {
9122 				ValaProperty* _tmp386_;
9123 				ValaSymbol* _tmp387_;
9124 				ValaSymbol* _tmp388_;
9125 				_tmp386_ = cl_prop;
9126 				_tmp387_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp386_);
9127 				_tmp388_ = _tmp387_;
9128 				_tmp384_ = _tmp388_ != G_TYPE_CHECK_INSTANCE_CAST (cl, VALA_TYPE_SYMBOL, ValaSymbol);
9129 			} else {
9130 				_tmp384_ = FALSE;
9131 			}
9132 			if (_tmp384_) {
9133 				ValaProperty* base_property = NULL;
9134 				ValaProperty* _tmp389_;
9135 				ValaProperty* _tmp390_;
9136 				ValaProperty* _tmp391_;
9137 				ValaProperty* _tmp392_;
9138 				ValaProperty* _tmp393_;
9139 				ValaProperty* _tmp405_;
9140 				ValaProperty* _tmp406_;
9141 				ValaCCodeIdentifier* ciface = NULL;
9142 				ValaCCodeIdentifier* _tmp407_;
9143 				gboolean _tmp408_ = FALSE;
9144 				ValaProperty* _tmp409_;
9145 				ValaPropertyAccessor* _tmp410_;
9146 				ValaPropertyAccessor* _tmp411_;
9147 				gboolean _tmp441_ = FALSE;
9148 				ValaProperty* _tmp442_;
9149 				ValaPropertyAccessor* _tmp443_;
9150 				ValaPropertyAccessor* _tmp444_;
9151 				_tmp389_ = cl_prop;
9152 				_tmp390_ = _vala_code_node_ref0 (_tmp389_);
9153 				base_property = _tmp390_;
9154 				_tmp391_ = cl_prop;
9155 				_tmp392_ = vala_property_get_base_property (_tmp391_);
9156 				_tmp393_ = _tmp392_;
9157 				if (_tmp393_ != NULL) {
9158 					ValaProperty* _tmp394_;
9159 					ValaProperty* _tmp395_;
9160 					ValaProperty* _tmp396_;
9161 					ValaProperty* _tmp397_;
9162 					_tmp394_ = cl_prop;
9163 					_tmp395_ = vala_property_get_base_property (_tmp394_);
9164 					_tmp396_ = _tmp395_;
9165 					_tmp397_ = _vala_code_node_ref0 (_tmp396_);
9166 					_vala_code_node_unref0 (base_property);
9167 					base_property = _tmp397_;
9168 				} else {
9169 					ValaProperty* _tmp398_;
9170 					ValaProperty* _tmp399_;
9171 					ValaProperty* _tmp400_;
9172 					_tmp398_ = cl_prop;
9173 					_tmp399_ = vala_property_get_base_interface_property (_tmp398_);
9174 					_tmp400_ = _tmp399_;
9175 					if (_tmp400_ != NULL) {
9176 						ValaProperty* _tmp401_;
9177 						ValaProperty* _tmp402_;
9178 						ValaProperty* _tmp403_;
9179 						ValaProperty* _tmp404_;
9180 						_tmp401_ = cl_prop;
9181 						_tmp402_ = vala_property_get_base_interface_property (_tmp401_);
9182 						_tmp403_ = _tmp402_;
9183 						_tmp404_ = _vala_code_node_ref0 (_tmp403_);
9184 						_vala_code_node_unref0 (base_property);
9185 						base_property = _tmp404_;
9186 					}
9187 				}
9188 				_tmp405_ = prop;
9189 				_tmp406_ = base_property;
9190 				if (_tmp405_ == _tmp406_) {
9191 					_vala_code_node_unref0 (base_property);
9192 					_vala_code_node_unref0 (base_class);
9193 					_vala_code_node_unref0 (cl_prop);
9194 					_vala_code_node_unref0 (prop);
9195 					continue;
9196 				}
9197 				_tmp407_ = vala_ccode_identifier_new ("iface");
9198 				ciface = _tmp407_;
9199 				_tmp409_ = base_property;
9200 				_tmp410_ = vala_property_get_get_accessor (_tmp409_);
9201 				_tmp411_ = _tmp410_;
9202 				if (_tmp411_ != NULL) {
9203 					ValaProperty* _tmp412_;
9204 					ValaPropertyAccessor* _tmp413_;
9205 					ValaPropertyAccessor* _tmp414_;
9206 					_tmp412_ = prop;
9207 					_tmp413_ = vala_property_get_get_accessor (_tmp412_);
9208 					_tmp414_ = _tmp413_;
9209 					_tmp408_ = _tmp414_ != NULL;
9210 				} else {
9211 					_tmp408_ = FALSE;
9212 				}
9213 				if (_tmp408_) {
9214 					ValaProperty* _tmp415_;
9215 					ValaPropertyAccessor* _tmp416_;
9216 					ValaPropertyAccessor* _tmp417_;
9217 					ValaCCodeFile* _tmp418_;
9218 					gchar* cname = NULL;
9219 					ValaProperty* _tmp419_;
9220 					ValaPropertyAccessor* _tmp420_;
9221 					ValaPropertyAccessor* _tmp421_;
9222 					gchar* _tmp422_;
9223 					ValaCCodeExpression* cfunc = NULL;
9224 					const gchar* _tmp423_;
9225 					ValaCCodeIdentifier* _tmp424_;
9226 					ValaProperty* _tmp425_;
9227 					ValaPropertyAccessor* _tmp426_;
9228 					ValaPropertyAccessor* _tmp427_;
9229 					ValaCCodeExpression* _tmp428_;
9230 					ValaCCodeExpression* _tmp429_;
9231 					ValaCCodeFunction* _tmp430_;
9232 					ValaCCodeFunction* _tmp431_;
9233 					ValaCCodeIdentifier* _tmp432_;
9234 					ValaProperty* _tmp433_;
9235 					const gchar* _tmp434_;
9236 					const gchar* _tmp435_;
9237 					gchar* _tmp436_;
9238 					gchar* _tmp437_;
9239 					ValaCCodeMemberAccess* _tmp438_;
9240 					ValaCCodeMemberAccess* _tmp439_;
9241 					ValaCCodeExpression* _tmp440_;
9242 					_tmp415_ = base_property;
9243 					_tmp416_ = vala_property_get_get_accessor (_tmp415_);
9244 					_tmp417_ = _tmp416_;
9245 					_tmp418_ = ((ValaCCodeBaseModule*) self)->cfile;
9246 					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp417_, _tmp418_);
9247 					_tmp419_ = base_property;
9248 					_tmp420_ = vala_property_get_get_accessor (_tmp419_);
9249 					_tmp421_ = _tmp420_;
9250 					_tmp422_ = vala_get_ccode_name ((ValaCodeNode*) _tmp421_);
9251 					cname = _tmp422_;
9252 					_tmp423_ = cname;
9253 					_tmp424_ = vala_ccode_identifier_new (_tmp423_);
9254 					cfunc = (ValaCCodeExpression*) _tmp424_;
9255 					_tmp425_ = prop;
9256 					_tmp426_ = vala_property_get_get_accessor (_tmp425_);
9257 					_tmp427_ = _tmp426_;
9258 					_tmp428_ = cfunc;
9259 					_tmp429_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp427_, _tmp428_, (ValaObjectTypeSymbol*) iface);
9260 					_vala_ccode_node_unref0 (cfunc);
9261 					cfunc = _tmp429_;
9262 					_tmp430_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
9263 					_tmp431_ = _tmp430_;
9264 					_tmp432_ = ciface;
9265 					_tmp433_ = prop;
9266 					_tmp434_ = vala_symbol_get_name ((ValaSymbol*) _tmp433_);
9267 					_tmp435_ = _tmp434_;
9268 					_tmp436_ = g_strdup_printf ("get_%s", _tmp435_);
9269 					_tmp437_ = _tmp436_;
9270 					_tmp438_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp432_, _tmp437_);
9271 					_tmp439_ = _tmp438_;
9272 					_tmp440_ = cfunc;
9273 					vala_ccode_function_add_assignment (_tmp431_, (ValaCCodeExpression*) _tmp439_, _tmp440_);
9274 					_vala_ccode_node_unref0 (_tmp439_);
9275 					_g_free0 (_tmp437_);
9276 					_vala_ccode_node_unref0 (cfunc);
9277 					_g_free0 (cname);
9278 				}
9279 				_tmp442_ = base_property;
9280 				_tmp443_ = vala_property_get_set_accessor (_tmp442_);
9281 				_tmp444_ = _tmp443_;
9282 				if (_tmp444_ != NULL) {
9283 					ValaProperty* _tmp445_;
9284 					ValaPropertyAccessor* _tmp446_;
9285 					ValaPropertyAccessor* _tmp447_;
9286 					_tmp445_ = prop;
9287 					_tmp446_ = vala_property_get_set_accessor (_tmp445_);
9288 					_tmp447_ = _tmp446_;
9289 					_tmp441_ = _tmp447_ != NULL;
9290 				} else {
9291 					_tmp441_ = FALSE;
9292 				}
9293 				if (_tmp441_) {
9294 					ValaProperty* _tmp448_;
9295 					ValaPropertyAccessor* _tmp449_;
9296 					ValaPropertyAccessor* _tmp450_;
9297 					ValaCCodeFile* _tmp451_;
9298 					gchar* cname = NULL;
9299 					ValaProperty* _tmp452_;
9300 					ValaPropertyAccessor* _tmp453_;
9301 					ValaPropertyAccessor* _tmp454_;
9302 					gchar* _tmp455_;
9303 					ValaCCodeExpression* cfunc = NULL;
9304 					const gchar* _tmp456_;
9305 					ValaCCodeIdentifier* _tmp457_;
9306 					ValaProperty* _tmp458_;
9307 					ValaPropertyAccessor* _tmp459_;
9308 					ValaPropertyAccessor* _tmp460_;
9309 					ValaCCodeExpression* _tmp461_;
9310 					ValaCCodeExpression* _tmp462_;
9311 					ValaCCodeFunction* _tmp463_;
9312 					ValaCCodeFunction* _tmp464_;
9313 					ValaCCodeIdentifier* _tmp465_;
9314 					ValaProperty* _tmp466_;
9315 					const gchar* _tmp467_;
9316 					const gchar* _tmp468_;
9317 					gchar* _tmp469_;
9318 					gchar* _tmp470_;
9319 					ValaCCodeMemberAccess* _tmp471_;
9320 					ValaCCodeMemberAccess* _tmp472_;
9321 					ValaCCodeExpression* _tmp473_;
9322 					_tmp448_ = base_property;
9323 					_tmp449_ = vala_property_get_set_accessor (_tmp448_);
9324 					_tmp450_ = _tmp449_;
9325 					_tmp451_ = ((ValaCCodeBaseModule*) self)->cfile;
9326 					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp450_, _tmp451_);
9327 					_tmp452_ = base_property;
9328 					_tmp453_ = vala_property_get_set_accessor (_tmp452_);
9329 					_tmp454_ = _tmp453_;
9330 					_tmp455_ = vala_get_ccode_name ((ValaCodeNode*) _tmp454_);
9331 					cname = _tmp455_;
9332 					_tmp456_ = cname;
9333 					_tmp457_ = vala_ccode_identifier_new (_tmp456_);
9334 					cfunc = (ValaCCodeExpression*) _tmp457_;
9335 					_tmp458_ = prop;
9336 					_tmp459_ = vala_property_get_set_accessor (_tmp458_);
9337 					_tmp460_ = _tmp459_;
9338 					_tmp461_ = cfunc;
9339 					_tmp462_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp460_, _tmp461_, (ValaObjectTypeSymbol*) iface);
9340 					_vala_ccode_node_unref0 (cfunc);
9341 					cfunc = _tmp462_;
9342 					_tmp463_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
9343 					_tmp464_ = _tmp463_;
9344 					_tmp465_ = ciface;
9345 					_tmp466_ = prop;
9346 					_tmp467_ = vala_symbol_get_name ((ValaSymbol*) _tmp466_);
9347 					_tmp468_ = _tmp467_;
9348 					_tmp469_ = g_strdup_printf ("set_%s", _tmp468_);
9349 					_tmp470_ = _tmp469_;
9350 					_tmp471_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp465_, _tmp470_);
9351 					_tmp472_ = _tmp471_;
9352 					_tmp473_ = cfunc;
9353 					vala_ccode_function_add_assignment (_tmp464_, (ValaCCodeExpression*) _tmp472_, _tmp473_);
9354 					_vala_ccode_node_unref0 (_tmp472_);
9355 					_g_free0 (_tmp470_);
9356 					_vala_ccode_node_unref0 (cfunc);
9357 					_g_free0 (cname);
9358 				}
9359 				_vala_ccode_node_unref0 (ciface);
9360 				_vala_code_node_unref0 (base_property);
9361 			}
9362 			_vala_code_node_unref0 (base_class);
9363 			_vala_code_node_unref0 (cl_prop);
9364 			_vala_code_node_unref0 (prop);
9365 		}
9366 		_vala_iterable_unref0 (_prop_list);
9367 	}
9368 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
9369 	_tmp474_ = ((ValaCCodeBaseModule*) self)->cfile;
9370 	_tmp475_ = iface_init;
9371 	vala_ccode_file_add_function (_tmp474_, _tmp475_);
9372 	_vala_map_iterator_unref0 (it);
9373 	_vala_ccode_node_unref0 (parent_var_decl);
9374 	_vala_ccode_node_unref0 (parent_decl);
9375 	_g_free0 (parent_iface_var);
9376 	_vala_ccode_node_unref0 (ccall);
9377 	_vala_ccode_node_unref0 (iface_init);
9378 }
9379 
9380 static ValaCCodeExpression*
vala_gtype_module_cast_property_accessor_pointer(ValaGTypeModule * self,ValaPropertyAccessor * acc,ValaCCodeExpression * cfunc,ValaObjectTypeSymbol * base_type)9381 vala_gtype_module_cast_property_accessor_pointer (ValaGTypeModule* self,
9382                                                   ValaPropertyAccessor* acc,
9383                                                   ValaCCodeExpression* cfunc,
9384                                                   ValaObjectTypeSymbol* base_type)
9385 {
9386 	gchar* cast = NULL;
9387 	gboolean _tmp0_ = FALSE;
9388 	gboolean _tmp1_;
9389 	gboolean _tmp2_;
9390 	const gchar* _tmp37_;
9391 	ValaCCodeCastExpression* _tmp38_;
9392 	ValaCCodeExpression* result = NULL;
9393 	g_return_val_if_fail (self != NULL, NULL);
9394 	g_return_val_if_fail (acc != NULL, NULL);
9395 	g_return_val_if_fail (cfunc != NULL, NULL);
9396 	g_return_val_if_fail (base_type != NULL, NULL);
9397 	_tmp1_ = vala_property_accessor_get_readable (acc);
9398 	_tmp2_ = _tmp1_;
9399 	if (_tmp2_) {
9400 		ValaDataType* _tmp3_;
9401 		ValaDataType* _tmp4_;
9402 		_tmp3_ = vala_property_accessor_get_value_type (acc);
9403 		_tmp4_ = _tmp3_;
9404 		_tmp0_ = vala_data_type_is_real_non_null_struct_type (_tmp4_);
9405 	} else {
9406 		_tmp0_ = FALSE;
9407 	}
9408 	if (_tmp0_) {
9409 		gchar* _tmp5_;
9410 		gchar* _tmp6_;
9411 		ValaDataType* _tmp7_;
9412 		ValaDataType* _tmp8_;
9413 		gchar* _tmp9_;
9414 		gchar* _tmp10_;
9415 		gchar* _tmp11_;
9416 		_tmp5_ = vala_get_ccode_name ((ValaCodeNode*) base_type);
9417 		_tmp6_ = _tmp5_;
9418 		_tmp7_ = vala_property_accessor_get_value_type (acc);
9419 		_tmp8_ = _tmp7_;
9420 		_tmp9_ = vala_get_ccode_name ((ValaCodeNode*) _tmp8_);
9421 		_tmp10_ = _tmp9_;
9422 		_tmp11_ = g_strdup_printf ("void (*) (%s *, %s *)", _tmp6_, _tmp10_);
9423 		_g_free0 (cast);
9424 		cast = _tmp11_;
9425 		_g_free0 (_tmp10_);
9426 		_g_free0 (_tmp6_);
9427 	} else {
9428 		gboolean _tmp12_;
9429 		gboolean _tmp13_;
9430 		_tmp12_ = vala_property_accessor_get_readable (acc);
9431 		_tmp13_ = _tmp12_;
9432 		if (_tmp13_) {
9433 			ValaDataType* _tmp14_;
9434 			ValaDataType* _tmp15_;
9435 			gchar* _tmp16_;
9436 			gchar* _tmp17_;
9437 			gchar* _tmp18_;
9438 			gchar* _tmp19_;
9439 			gchar* _tmp20_;
9440 			_tmp14_ = vala_property_accessor_get_value_type (acc);
9441 			_tmp15_ = _tmp14_;
9442 			_tmp16_ = vala_get_ccode_name ((ValaCodeNode*) _tmp15_);
9443 			_tmp17_ = _tmp16_;
9444 			_tmp18_ = vala_get_ccode_name ((ValaCodeNode*) base_type);
9445 			_tmp19_ = _tmp18_;
9446 			_tmp20_ = g_strdup_printf ("%s (*) (%s *)", _tmp17_, _tmp19_);
9447 			_g_free0 (cast);
9448 			cast = _tmp20_;
9449 			_g_free0 (_tmp19_);
9450 			_g_free0 (_tmp17_);
9451 		} else {
9452 			ValaDataType* _tmp21_;
9453 			ValaDataType* _tmp22_;
9454 			_tmp21_ = vala_property_accessor_get_value_type (acc);
9455 			_tmp22_ = _tmp21_;
9456 			if (vala_data_type_is_real_non_null_struct_type (_tmp22_)) {
9457 				gchar* _tmp23_;
9458 				gchar* _tmp24_;
9459 				ValaDataType* _tmp25_;
9460 				ValaDataType* _tmp26_;
9461 				gchar* _tmp27_;
9462 				gchar* _tmp28_;
9463 				gchar* _tmp29_;
9464 				_tmp23_ = vala_get_ccode_name ((ValaCodeNode*) base_type);
9465 				_tmp24_ = _tmp23_;
9466 				_tmp25_ = vala_property_accessor_get_value_type (acc);
9467 				_tmp26_ = _tmp25_;
9468 				_tmp27_ = vala_get_ccode_name ((ValaCodeNode*) _tmp26_);
9469 				_tmp28_ = _tmp27_;
9470 				_tmp29_ = g_strdup_printf ("void (*) (%s *, %s *)", _tmp24_, _tmp28_);
9471 				_g_free0 (cast);
9472 				cast = _tmp29_;
9473 				_g_free0 (_tmp28_);
9474 				_g_free0 (_tmp24_);
9475 			} else {
9476 				gchar* _tmp30_;
9477 				gchar* _tmp31_;
9478 				ValaDataType* _tmp32_;
9479 				ValaDataType* _tmp33_;
9480 				gchar* _tmp34_;
9481 				gchar* _tmp35_;
9482 				gchar* _tmp36_;
9483 				_tmp30_ = vala_get_ccode_name ((ValaCodeNode*) base_type);
9484 				_tmp31_ = _tmp30_;
9485 				_tmp32_ = vala_property_accessor_get_value_type (acc);
9486 				_tmp33_ = _tmp32_;
9487 				_tmp34_ = vala_get_ccode_name ((ValaCodeNode*) _tmp33_);
9488 				_tmp35_ = _tmp34_;
9489 				_tmp36_ = g_strdup_printf ("void (*) (%s *, %s)", _tmp31_, _tmp35_);
9490 				_g_free0 (cast);
9491 				cast = _tmp36_;
9492 				_g_free0 (_tmp35_);
9493 				_g_free0 (_tmp31_);
9494 			}
9495 		}
9496 	}
9497 	_tmp37_ = cast;
9498 	_tmp38_ = vala_ccode_cast_expression_new (cfunc, _tmp37_);
9499 	result = (ValaCCodeExpression*) _tmp38_;
9500 	_g_free0 (cast);
9501 	return result;
9502 }
9503 
9504 static ValaCCodeExpression*
vala_gtype_module_cast_method_pointer(ValaGTypeModule * self,ValaMethod * m,ValaCCodeExpression * cfunc,ValaObjectTypeSymbol * base_type,gint direction)9505 vala_gtype_module_cast_method_pointer (ValaGTypeModule* self,
9506                                        ValaMethod* m,
9507                                        ValaCCodeExpression* cfunc,
9508                                        ValaObjectTypeSymbol* base_type,
9509                                        gint direction)
9510 {
9511 	gchar* cast = NULL;
9512 	gboolean _tmp0_ = FALSE;
9513 	ValaCCodeFunctionDeclarator* vdeclarator = NULL;
9514 	gchar* _tmp9_;
9515 	gchar* _tmp10_;
9516 	ValaCCodeFunctionDeclarator* _tmp11_;
9517 	ValaCCodeFunctionDeclarator* _tmp12_;
9518 	ValaHashMap* cparam_map = NULL;
9519 	GHashFunc _tmp13_;
9520 	GEqualFunc _tmp14_;
9521 	GEqualFunc _tmp15_;
9522 	ValaHashMap* _tmp16_;
9523 	ValaCCodeFile* _tmp17_;
9524 	ValaHashMap* _tmp18_;
9525 	ValaCCodeFunction* _tmp19_;
9526 	ValaCCodeFunction* _tmp20_;
9527 	ValaCCodeFunctionDeclarator* _tmp21_;
9528 	gint last_pos = 0;
9529 	gint min_pos = 0;
9530 	gchar* cast_args = NULL;
9531 	gchar* _tmp22_;
9532 	const gchar* _tmp47_;
9533 	const gchar* _tmp48_;
9534 	gchar* _tmp49_;
9535 	const gchar* _tmp50_;
9536 	ValaCCodeCastExpression* _tmp51_;
9537 	ValaCCodeExpression* result = NULL;
9538 	g_return_val_if_fail (self != NULL, NULL);
9539 	g_return_val_if_fail (m != NULL, NULL);
9540 	g_return_val_if_fail (cfunc != NULL, NULL);
9541 	g_return_val_if_fail (base_type != NULL, NULL);
9542 	if (direction == 1) {
9543 		_tmp0_ = TRUE;
9544 	} else {
9545 		ValaDataType* _tmp1_;
9546 		ValaDataType* _tmp2_;
9547 		_tmp1_ = vala_callable_get_return_type ((ValaCallable*) m);
9548 		_tmp2_ = _tmp1_;
9549 		_tmp0_ = vala_data_type_is_real_non_null_struct_type (_tmp2_);
9550 	}
9551 	if (_tmp0_) {
9552 		gchar* _tmp3_;
9553 		_tmp3_ = g_strdup ("void (*)");
9554 		_g_free0 (cast);
9555 		cast = _tmp3_;
9556 	} else {
9557 		ValaDataType* _tmp4_;
9558 		ValaDataType* _tmp5_;
9559 		gchar* _tmp6_;
9560 		gchar* _tmp7_;
9561 		gchar* _tmp8_;
9562 		_tmp4_ = vala_callable_get_return_type ((ValaCallable*) m);
9563 		_tmp5_ = _tmp4_;
9564 		_tmp6_ = vala_get_ccode_name ((ValaCodeNode*) _tmp5_);
9565 		_tmp7_ = _tmp6_;
9566 		_tmp8_ = g_strdup_printf ("%s (*)", _tmp7_);
9567 		_g_free0 (cast);
9568 		cast = _tmp8_;
9569 		_g_free0 (_tmp7_);
9570 	}
9571 	_tmp9_ = vala_get_ccode_vfunc_name (m);
9572 	_tmp10_ = _tmp9_;
9573 	_tmp11_ = vala_ccode_function_declarator_new (_tmp10_);
9574 	_tmp12_ = _tmp11_;
9575 	_g_free0 (_tmp10_);
9576 	vdeclarator = _tmp12_;
9577 	_tmp13_ = g_direct_hash;
9578 	_tmp14_ = g_direct_equal;
9579 	_tmp15_ = g_direct_equal;
9580 	_tmp16_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp13_, _tmp14_, _tmp15_);
9581 	cparam_map = _tmp16_;
9582 	_tmp17_ = ((ValaCCodeBaseModule*) self)->cfile;
9583 	_tmp18_ = cparam_map;
9584 	_tmp19_ = vala_ccode_function_new ("fake", "void");
9585 	_tmp20_ = _tmp19_;
9586 	_tmp21_ = vdeclarator;
9587 	vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, _tmp17_, (ValaMap*) _tmp18_, _tmp20_, _tmp21_, NULL, NULL, direction);
9588 	_vala_ccode_node_unref0 (_tmp20_);
9589 	last_pos = -1;
9590 	_tmp22_ = g_strdup ("");
9591 	cast_args = _tmp22_;
9592 	while (TRUE) {
9593 		ValaCCodeParameter* cparam = NULL;
9594 		ValaHashMap* _tmp35_;
9595 		gpointer _tmp36_;
9596 		ValaCCodeParameter* _tmp37_;
9597 		gboolean _tmp38_;
9598 		gboolean _tmp39_;
9599 		min_pos = -1;
9600 		{
9601 			ValaIterator* _pos_it = NULL;
9602 			ValaHashMap* _tmp23_;
9603 			ValaSet* _tmp24_;
9604 			ValaSet* _tmp25_;
9605 			ValaIterator* _tmp26_;
9606 			ValaIterator* _tmp27_;
9607 			_tmp23_ = cparam_map;
9608 			_tmp24_ = vala_map_get_keys ((ValaMap*) _tmp23_);
9609 			_tmp25_ = _tmp24_;
9610 			_tmp26_ = vala_iterable_iterator ((ValaIterable*) _tmp25_);
9611 			_tmp27_ = _tmp26_;
9612 			_vala_iterable_unref0 (_tmp25_);
9613 			_pos_it = _tmp27_;
9614 			while (TRUE) {
9615 				ValaIterator* _tmp28_;
9616 				gint pos = 0;
9617 				ValaIterator* _tmp29_;
9618 				gpointer _tmp30_;
9619 				gboolean _tmp31_ = FALSE;
9620 				_tmp28_ = _pos_it;
9621 				if (!vala_iterator_next (_tmp28_)) {
9622 					break;
9623 				}
9624 				_tmp29_ = _pos_it;
9625 				_tmp30_ = vala_iterator_get (_tmp29_);
9626 				pos = (gint) ((gintptr) _tmp30_);
9627 				if (pos > last_pos) {
9628 					gboolean _tmp32_ = FALSE;
9629 					if (min_pos == -1) {
9630 						_tmp32_ = TRUE;
9631 					} else {
9632 						_tmp32_ = pos < min_pos;
9633 					}
9634 					_tmp31_ = _tmp32_;
9635 				} else {
9636 					_tmp31_ = FALSE;
9637 				}
9638 				if (_tmp31_) {
9639 					min_pos = pos;
9640 				}
9641 			}
9642 			_vala_iterator_unref0 (_pos_it);
9643 		}
9644 		if (min_pos == -1) {
9645 			break;
9646 		}
9647 		if (last_pos != -1) {
9648 			const gchar* _tmp33_;
9649 			gchar* _tmp34_;
9650 			_tmp33_ = cast_args;
9651 			_tmp34_ = g_strdup_printf ("%s, ", _tmp33_);
9652 			_g_free0 (cast_args);
9653 			cast_args = _tmp34_;
9654 		}
9655 		_tmp35_ = cparam_map;
9656 		_tmp36_ = vala_map_get ((ValaMap*) _tmp35_, (gpointer) ((gintptr) min_pos));
9657 		cparam = (ValaCCodeParameter*) _tmp36_;
9658 		_tmp37_ = cparam;
9659 		_tmp38_ = vala_ccode_parameter_get_ellipsis (_tmp37_);
9660 		_tmp39_ = _tmp38_;
9661 		if (_tmp39_) {
9662 			const gchar* _tmp40_;
9663 			gchar* _tmp41_;
9664 			_tmp40_ = cast_args;
9665 			_tmp41_ = g_strdup_printf ("%s...", _tmp40_);
9666 			_g_free0 (cast_args);
9667 			cast_args = _tmp41_;
9668 		} else {
9669 			const gchar* _tmp42_;
9670 			ValaCCodeParameter* _tmp43_;
9671 			const gchar* _tmp44_;
9672 			const gchar* _tmp45_;
9673 			gchar* _tmp46_;
9674 			_tmp42_ = cast_args;
9675 			_tmp43_ = cparam;
9676 			_tmp44_ = vala_ccode_parameter_get_type_name (_tmp43_);
9677 			_tmp45_ = _tmp44_;
9678 			_tmp46_ = g_strdup_printf ("%s%s", _tmp42_, _tmp45_);
9679 			_g_free0 (cast_args);
9680 			cast_args = _tmp46_;
9681 		}
9682 		last_pos = min_pos;
9683 		_vala_ccode_node_unref0 (cparam);
9684 	}
9685 	_tmp47_ = cast;
9686 	_tmp48_ = cast_args;
9687 	_tmp49_ = g_strdup_printf ("%s (%s)", _tmp47_, _tmp48_);
9688 	_g_free0 (cast);
9689 	cast = _tmp49_;
9690 	_tmp50_ = cast;
9691 	_tmp51_ = vala_ccode_cast_expression_new (cfunc, _tmp50_);
9692 	result = (ValaCCodeExpression*) _tmp51_;
9693 	_g_free0 (cast_args);
9694 	_vala_map_unref0 (cparam_map);
9695 	_vala_ccode_node_unref0 (vdeclarator);
9696 	_g_free0 (cast);
9697 	return result;
9698 }
9699 
9700 static void
vala_gtype_module_begin_instance_init_function(ValaGTypeModule * self,ValaClass * cl)9701 vala_gtype_module_begin_instance_init_function (ValaGTypeModule* self,
9702                                                 ValaClass* cl)
9703 {
9704 	ValaCCodeBaseModuleEmitContext* _tmp0_;
9705 	ValaCCodeFunction* func = NULL;
9706 	gchar* _tmp1_;
9707 	gchar* _tmp2_;
9708 	gchar* _tmp3_;
9709 	gchar* _tmp4_;
9710 	ValaCCodeFunction* _tmp5_;
9711 	ValaCCodeFunction* _tmp6_;
9712 	ValaCCodeFunction* _tmp7_;
9713 	gchar* _tmp8_;
9714 	gchar* _tmp9_;
9715 	gchar* _tmp10_;
9716 	gchar* _tmp11_;
9717 	ValaCCodeParameter* _tmp12_;
9718 	ValaCCodeParameter* _tmp13_;
9719 	gboolean _tmp14_;
9720 	gboolean _tmp15_;
9721 	ValaCCodeFunction* _tmp19_;
9722 	ValaCCodeFunction* _tmp20_;
9723 	gboolean is_gsource = FALSE;
9724 	ValaClass* _tmp21_;
9725 	gboolean _tmp22_;
9726 	gboolean _tmp23_;
9727 	gboolean _tmp201_ = FALSE;
9728 	gboolean _tmp202_;
9729 	gboolean _tmp203_;
9730 	g_return_if_fail (self != NULL);
9731 	g_return_if_fail (cl != NULL);
9732 	_tmp0_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
9733 	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
9734 	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
9735 	_tmp2_ = _tmp1_;
9736 	_tmp3_ = g_strdup_printf ("%s_instance_init", _tmp2_);
9737 	_tmp4_ = _tmp3_;
9738 	_tmp5_ = vala_ccode_function_new (_tmp4_, "void");
9739 	_tmp6_ = _tmp5_;
9740 	_g_free0 (_tmp4_);
9741 	_g_free0 (_tmp2_);
9742 	func = _tmp6_;
9743 	_tmp7_ = func;
9744 	_tmp8_ = vala_get_ccode_name ((ValaCodeNode*) cl);
9745 	_tmp9_ = _tmp8_;
9746 	_tmp10_ = g_strdup_printf ("%s *", _tmp9_);
9747 	_tmp11_ = _tmp10_;
9748 	_tmp12_ = vala_ccode_parameter_new ("self", _tmp11_);
9749 	_tmp13_ = _tmp12_;
9750 	vala_ccode_function_add_parameter (_tmp7_, _tmp13_);
9751 	_vala_ccode_node_unref0 (_tmp13_);
9752 	_g_free0 (_tmp11_);
9753 	_g_free0 (_tmp9_);
9754 	_tmp14_ = vala_class_get_is_compact (cl);
9755 	_tmp15_ = _tmp14_;
9756 	if (!_tmp15_) {
9757 		ValaCCodeFunction* _tmp16_;
9758 		ValaCCodeParameter* _tmp17_;
9759 		ValaCCodeParameter* _tmp18_;
9760 		_tmp16_ = func;
9761 		_tmp17_ = vala_ccode_parameter_new ("klass", "gpointer");
9762 		_tmp18_ = _tmp17_;
9763 		vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
9764 		_vala_ccode_node_unref0 (_tmp18_);
9765 	}
9766 	_tmp19_ = func;
9767 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp19_, VALA_CCODE_MODIFIERS_STATIC);
9768 	_tmp20_ = func;
9769 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp20_);
9770 	_tmp21_ = ((ValaCCodeBaseModule*) self)->gsource_type;
9771 	is_gsource = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp21_);
9772 	_tmp22_ = vala_class_get_is_compact (cl);
9773 	_tmp23_ = _tmp22_;
9774 	if (_tmp23_) {
9775 		ValaCCodeFile* _tmp24_;
9776 		ValaCCodeFunction* _tmp25_;
9777 		_tmp24_ = ((ValaCCodeBaseModule*) self)->cfile;
9778 		_tmp25_ = func;
9779 		vala_ccode_file_add_function_declaration (_tmp24_, _tmp25_);
9780 		{
9781 			ValaList* _m_list = NULL;
9782 			ValaList* _tmp26_;
9783 			ValaList* _tmp27_;
9784 			gint _m_size = 0;
9785 			ValaList* _tmp28_;
9786 			gint _tmp29_;
9787 			gint _tmp30_;
9788 			gint _m_index = 0;
9789 			_tmp26_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) cl);
9790 			_tmp27_ = _vala_iterable_ref0 (_tmp26_);
9791 			_m_list = _tmp27_;
9792 			_tmp28_ = _m_list;
9793 			_tmp29_ = vala_collection_get_size ((ValaCollection*) _tmp28_);
9794 			_tmp30_ = _tmp29_;
9795 			_m_size = _tmp30_;
9796 			_m_index = -1;
9797 			while (TRUE) {
9798 				gint _tmp31_;
9799 				gint _tmp32_;
9800 				ValaMethod* m = NULL;
9801 				ValaList* _tmp33_;
9802 				gpointer _tmp34_;
9803 				gboolean _tmp35_ = FALSE;
9804 				ValaMethod* _tmp36_;
9805 				ValaMethod* _tmp37_;
9806 				ValaMethod* _tmp38_;
9807 				ValaObjectTypeSymbol* base_type = NULL;
9808 				ValaMethod* _tmp39_;
9809 				ValaMethod* _tmp40_;
9810 				ValaMethod* _tmp41_;
9811 				ValaSymbol* _tmp42_;
9812 				ValaSymbol* _tmp43_;
9813 				ValaObjectTypeSymbol* _tmp44_;
9814 				gboolean _tmp45_ = FALSE;
9815 				ValaMethod* _tmp46_;
9816 				gboolean _tmp47_;
9817 				gboolean _tmp48_;
9818 				_m_index = _m_index + 1;
9819 				_tmp31_ = _m_index;
9820 				_tmp32_ = _m_size;
9821 				if (!(_tmp31_ < _tmp32_)) {
9822 					break;
9823 				}
9824 				_tmp33_ = _m_list;
9825 				_tmp34_ = vala_list_get (_tmp33_, _m_index);
9826 				m = (ValaMethod*) _tmp34_;
9827 				_tmp36_ = m;
9828 				_tmp37_ = vala_method_get_base_method (_tmp36_);
9829 				_tmp38_ = _tmp37_;
9830 				if (_tmp38_ == NULL) {
9831 					_tmp35_ = TRUE;
9832 				} else {
9833 					_tmp35_ = is_gsource;
9834 				}
9835 				if (_tmp35_) {
9836 					_vala_code_node_unref0 (m);
9837 					continue;
9838 				}
9839 				_tmp39_ = m;
9840 				_tmp40_ = vala_method_get_base_method (_tmp39_);
9841 				_tmp41_ = _tmp40_;
9842 				_tmp42_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp41_);
9843 				_tmp43_ = _tmp42_;
9844 				_tmp44_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp43_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
9845 				base_type = _tmp44_;
9846 				_tmp46_ = m;
9847 				_tmp47_ = vala_method_get_is_abstract (_tmp46_);
9848 				_tmp48_ = _tmp47_;
9849 				if (!_tmp48_) {
9850 					_tmp45_ = TRUE;
9851 				} else {
9852 					ValaMethod* _tmp49_;
9853 					gboolean _tmp50_;
9854 					gboolean _tmp51_;
9855 					_tmp49_ = m;
9856 					_tmp50_ = vala_method_get_coroutine (_tmp49_);
9857 					_tmp51_ = _tmp50_;
9858 					_tmp45_ = !_tmp51_;
9859 				}
9860 				if (_tmp45_) {
9861 					ValaMethod* _tmp52_;
9862 					ValaMethod* _tmp53_;
9863 					ValaMethod* _tmp54_;
9864 					ValaCCodeFile* _tmp55_;
9865 					ValaCCodeExpression* cfunc = NULL;
9866 					ValaMethod* _tmp56_;
9867 					gchar* _tmp57_;
9868 					gchar* _tmp58_;
9869 					ValaCCodeIdentifier* _tmp59_;
9870 					ValaCCodeExpression* _tmp60_;
9871 					gint _tmp61_ = 0;
9872 					ValaMethod* _tmp62_;
9873 					gboolean _tmp63_;
9874 					gboolean _tmp64_;
9875 					ValaMethod* _tmp65_;
9876 					ValaMethod* _tmp66_;
9877 					ValaMethod* _tmp67_;
9878 					ValaCCodeExpression* _tmp68_;
9879 					ValaObjectTypeSymbol* _tmp69_;
9880 					ValaCCodeExpression* _tmp70_;
9881 					ValaCCodeCastExpression* ccast = NULL;
9882 					ValaCCodeIdentifier* _tmp71_;
9883 					ValaCCodeIdentifier* _tmp72_;
9884 					ValaObjectTypeSymbol* _tmp73_;
9885 					gchar* _tmp74_;
9886 					gchar* _tmp75_;
9887 					gchar* _tmp76_;
9888 					gchar* _tmp77_;
9889 					ValaCCodeCastExpression* _tmp78_;
9890 					ValaCCodeCastExpression* _tmp79_;
9891 					ValaCCodeFunction* _tmp80_;
9892 					ValaCCodeCastExpression* _tmp81_;
9893 					ValaMethod* _tmp82_;
9894 					ValaMethod* _tmp83_;
9895 					ValaMethod* _tmp84_;
9896 					gchar* _tmp85_;
9897 					gchar* _tmp86_;
9898 					ValaCCodeMemberAccess* _tmp87_;
9899 					ValaCCodeMemberAccess* _tmp88_;
9900 					ValaCCodeExpression* _tmp89_;
9901 					ValaMethod* _tmp90_;
9902 					gboolean _tmp91_;
9903 					gboolean _tmp92_;
9904 					_tmp52_ = m;
9905 					_tmp53_ = vala_method_get_base_method (_tmp52_);
9906 					_tmp54_ = _tmp53_;
9907 					_tmp55_ = ((ValaCCodeBaseModule*) self)->cfile;
9908 					vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp54_, _tmp55_);
9909 					_tmp56_ = m;
9910 					_tmp57_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp56_);
9911 					_tmp58_ = _tmp57_;
9912 					_tmp59_ = vala_ccode_identifier_new (_tmp58_);
9913 					_tmp60_ = (ValaCCodeExpression*) _tmp59_;
9914 					_g_free0 (_tmp58_);
9915 					cfunc = _tmp60_;
9916 					_tmp62_ = m;
9917 					_tmp63_ = vala_method_get_coroutine (_tmp62_);
9918 					_tmp64_ = _tmp63_;
9919 					if (_tmp64_) {
9920 						_tmp61_ = 1;
9921 					} else {
9922 						_tmp61_ = 3;
9923 					}
9924 					_tmp65_ = m;
9925 					_tmp66_ = vala_method_get_base_method (_tmp65_);
9926 					_tmp67_ = _tmp66_;
9927 					_tmp68_ = cfunc;
9928 					_tmp69_ = base_type;
9929 					_tmp70_ = vala_gtype_module_cast_method_pointer (self, _tmp67_, _tmp68_, _tmp69_, _tmp61_);
9930 					_vala_ccode_node_unref0 (cfunc);
9931 					cfunc = _tmp70_;
9932 					_tmp71_ = vala_ccode_identifier_new ("self");
9933 					_tmp72_ = _tmp71_;
9934 					_tmp73_ = base_type;
9935 					_tmp74_ = vala_get_ccode_name ((ValaCodeNode*) _tmp73_);
9936 					_tmp75_ = _tmp74_;
9937 					_tmp76_ = g_strdup_printf ("%s *", _tmp75_);
9938 					_tmp77_ = _tmp76_;
9939 					_tmp78_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp72_, _tmp77_);
9940 					_tmp79_ = _tmp78_;
9941 					_g_free0 (_tmp77_);
9942 					_g_free0 (_tmp75_);
9943 					_vala_ccode_node_unref0 (_tmp72_);
9944 					ccast = _tmp79_;
9945 					_tmp80_ = func;
9946 					_tmp81_ = ccast;
9947 					_tmp82_ = m;
9948 					_tmp83_ = vala_method_get_base_method (_tmp82_);
9949 					_tmp84_ = _tmp83_;
9950 					_tmp85_ = vala_get_ccode_vfunc_name (_tmp84_);
9951 					_tmp86_ = _tmp85_;
9952 					_tmp87_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp81_, _tmp86_);
9953 					_tmp88_ = _tmp87_;
9954 					_tmp89_ = cfunc;
9955 					vala_ccode_function_add_assignment (_tmp80_, (ValaCCodeExpression*) _tmp88_, _tmp89_);
9956 					_vala_ccode_node_unref0 (_tmp88_);
9957 					_g_free0 (_tmp86_);
9958 					_tmp90_ = m;
9959 					_tmp91_ = vala_method_get_coroutine (_tmp90_);
9960 					_tmp92_ = _tmp91_;
9961 					if (_tmp92_) {
9962 						ValaMethod* _tmp93_;
9963 						gchar* _tmp94_;
9964 						gchar* _tmp95_;
9965 						ValaCCodeIdentifier* _tmp96_;
9966 						ValaMethod* _tmp97_;
9967 						ValaMethod* _tmp98_;
9968 						ValaMethod* _tmp99_;
9969 						ValaCCodeExpression* _tmp100_;
9970 						ValaObjectTypeSymbol* _tmp101_;
9971 						ValaCCodeExpression* _tmp102_;
9972 						ValaCCodeFunction* _tmp103_;
9973 						ValaCCodeFunction* _tmp104_;
9974 						ValaCCodeCastExpression* _tmp105_;
9975 						ValaMethod* _tmp106_;
9976 						ValaMethod* _tmp107_;
9977 						ValaMethod* _tmp108_;
9978 						gchar* _tmp109_;
9979 						gchar* _tmp110_;
9980 						ValaCCodeMemberAccess* _tmp111_;
9981 						ValaCCodeMemberAccess* _tmp112_;
9982 						ValaCCodeExpression* _tmp113_;
9983 						_tmp93_ = m;
9984 						_tmp94_ = vala_get_ccode_finish_real_name (_tmp93_);
9985 						_tmp95_ = _tmp94_;
9986 						_tmp96_ = vala_ccode_identifier_new (_tmp95_);
9987 						_vala_ccode_node_unref0 (cfunc);
9988 						cfunc = (ValaCCodeExpression*) _tmp96_;
9989 						_g_free0 (_tmp95_);
9990 						_tmp97_ = m;
9991 						_tmp98_ = vala_method_get_base_method (_tmp97_);
9992 						_tmp99_ = _tmp98_;
9993 						_tmp100_ = cfunc;
9994 						_tmp101_ = base_type;
9995 						_tmp102_ = vala_gtype_module_cast_method_pointer (self, _tmp99_, _tmp100_, _tmp101_, 2);
9996 						_vala_ccode_node_unref0 (cfunc);
9997 						cfunc = _tmp102_;
9998 						_tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
9999 						_tmp104_ = _tmp103_;
10000 						_tmp105_ = ccast;
10001 						_tmp106_ = m;
10002 						_tmp107_ = vala_method_get_base_method (_tmp106_);
10003 						_tmp108_ = _tmp107_;
10004 						_tmp109_ = vala_get_ccode_finish_vfunc_name (_tmp108_);
10005 						_tmp110_ = _tmp109_;
10006 						_tmp111_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp105_, _tmp110_);
10007 						_tmp112_ = _tmp111_;
10008 						_tmp113_ = cfunc;
10009 						vala_ccode_function_add_assignment (_tmp104_, (ValaCCodeExpression*) _tmp112_, _tmp113_);
10010 						_vala_ccode_node_unref0 (_tmp112_);
10011 						_g_free0 (_tmp110_);
10012 					}
10013 					_vala_ccode_node_unref0 (ccast);
10014 					_vala_ccode_node_unref0 (cfunc);
10015 				}
10016 				_vala_code_node_unref0 (base_type);
10017 				_vala_code_node_unref0 (m);
10018 			}
10019 			_vala_iterable_unref0 (_m_list);
10020 		}
10021 		{
10022 			ValaList* _prop_list = NULL;
10023 			ValaList* _tmp114_;
10024 			ValaList* _tmp115_;
10025 			gint _prop_size = 0;
10026 			ValaList* _tmp116_;
10027 			gint _tmp117_;
10028 			gint _tmp118_;
10029 			gint _prop_index = 0;
10030 			_tmp114_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
10031 			_tmp115_ = _vala_iterable_ref0 (_tmp114_);
10032 			_prop_list = _tmp115_;
10033 			_tmp116_ = _prop_list;
10034 			_tmp117_ = vala_collection_get_size ((ValaCollection*) _tmp116_);
10035 			_tmp118_ = _tmp117_;
10036 			_prop_size = _tmp118_;
10037 			_prop_index = -1;
10038 			while (TRUE) {
10039 				gint _tmp119_;
10040 				gint _tmp120_;
10041 				ValaProperty* prop = NULL;
10042 				ValaList* _tmp121_;
10043 				gpointer _tmp122_;
10044 				gboolean _tmp123_ = FALSE;
10045 				ValaProperty* _tmp124_;
10046 				ValaProperty* _tmp125_;
10047 				ValaProperty* _tmp126_;
10048 				ValaSymbol* base_type = NULL;
10049 				ValaProperty* _tmp127_;
10050 				ValaProperty* _tmp128_;
10051 				ValaProperty* _tmp129_;
10052 				ValaSymbol* _tmp130_;
10053 				ValaSymbol* _tmp131_;
10054 				ValaSymbol* _tmp132_;
10055 				ValaCCodeCastExpression* ccast = NULL;
10056 				ValaCCodeIdentifier* _tmp133_;
10057 				ValaCCodeIdentifier* _tmp134_;
10058 				ValaSymbol* _tmp135_;
10059 				gchar* _tmp136_;
10060 				gchar* _tmp137_;
10061 				gchar* _tmp138_;
10062 				gchar* _tmp139_;
10063 				ValaCCodeCastExpression* _tmp140_;
10064 				ValaCCodeCastExpression* _tmp141_;
10065 				gboolean _tmp142_ = FALSE;
10066 				ValaProperty* _tmp143_;
10067 				ValaProperty* _tmp144_;
10068 				ValaProperty* _tmp145_;
10069 				_prop_index = _prop_index + 1;
10070 				_tmp119_ = _prop_index;
10071 				_tmp120_ = _prop_size;
10072 				if (!(_tmp119_ < _tmp120_)) {
10073 					break;
10074 				}
10075 				_tmp121_ = _prop_list;
10076 				_tmp122_ = vala_list_get (_tmp121_, _prop_index);
10077 				prop = (ValaProperty*) _tmp122_;
10078 				_tmp124_ = prop;
10079 				_tmp125_ = vala_property_get_base_property (_tmp124_);
10080 				_tmp126_ = _tmp125_;
10081 				if (_tmp126_ == NULL) {
10082 					_tmp123_ = TRUE;
10083 				} else {
10084 					_tmp123_ = is_gsource;
10085 				}
10086 				if (_tmp123_) {
10087 					_vala_code_node_unref0 (prop);
10088 					continue;
10089 				}
10090 				_tmp127_ = prop;
10091 				_tmp128_ = vala_property_get_base_property (_tmp127_);
10092 				_tmp129_ = _tmp128_;
10093 				_tmp130_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp129_);
10094 				_tmp131_ = _tmp130_;
10095 				_tmp132_ = _vala_code_node_ref0 (_tmp131_);
10096 				base_type = _tmp132_;
10097 				_tmp133_ = vala_ccode_identifier_new ("self");
10098 				_tmp134_ = _tmp133_;
10099 				_tmp135_ = base_type;
10100 				_tmp136_ = vala_get_ccode_name ((ValaCodeNode*) _tmp135_);
10101 				_tmp137_ = _tmp136_;
10102 				_tmp138_ = g_strdup_printf ("%s *", _tmp137_);
10103 				_tmp139_ = _tmp138_;
10104 				_tmp140_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp134_, _tmp139_);
10105 				_tmp141_ = _tmp140_;
10106 				_g_free0 (_tmp139_);
10107 				_g_free0 (_tmp137_);
10108 				_vala_ccode_node_unref0 (_tmp134_);
10109 				ccast = _tmp141_;
10110 				_tmp143_ = prop;
10111 				_tmp144_ = vala_property_get_base_property (_tmp143_);
10112 				_tmp145_ = _tmp144_;
10113 				if (!vala_get_ccode_no_accessor_method (_tmp145_)) {
10114 					ValaProperty* _tmp146_;
10115 					ValaProperty* _tmp147_;
10116 					ValaProperty* _tmp148_;
10117 					_tmp146_ = prop;
10118 					_tmp147_ = vala_property_get_base_property (_tmp146_);
10119 					_tmp148_ = _tmp147_;
10120 					_tmp142_ = !vala_get_ccode_concrete_accessor (_tmp148_);
10121 				} else {
10122 					_tmp142_ = FALSE;
10123 				}
10124 				if (_tmp142_) {
10125 					ValaProperty* _tmp149_;
10126 					ValaPropertyAccessor* _tmp150_;
10127 					ValaPropertyAccessor* _tmp151_;
10128 					ValaProperty* _tmp175_;
10129 					ValaPropertyAccessor* _tmp176_;
10130 					ValaPropertyAccessor* _tmp177_;
10131 					_tmp149_ = prop;
10132 					_tmp150_ = vala_property_get_get_accessor (_tmp149_);
10133 					_tmp151_ = _tmp150_;
10134 					if (_tmp151_ != NULL) {
10135 						ValaProperty* _tmp152_;
10136 						ValaProperty* _tmp153_;
10137 						ValaProperty* _tmp154_;
10138 						ValaPropertyAccessor* _tmp155_;
10139 						ValaPropertyAccessor* _tmp156_;
10140 						ValaCCodeFile* _tmp157_;
10141 						gchar* cname = NULL;
10142 						ValaProperty* _tmp158_;
10143 						ValaPropertyAccessor* _tmp159_;
10144 						ValaPropertyAccessor* _tmp160_;
10145 						gchar* _tmp161_;
10146 						ValaCCodeFunction* _tmp162_;
10147 						ValaCCodeFunction* _tmp163_;
10148 						ValaCCodeCastExpression* _tmp164_;
10149 						ValaProperty* _tmp165_;
10150 						const gchar* _tmp166_;
10151 						const gchar* _tmp167_;
10152 						gchar* _tmp168_;
10153 						gchar* _tmp169_;
10154 						ValaCCodeMemberAccess* _tmp170_;
10155 						ValaCCodeMemberAccess* _tmp171_;
10156 						const gchar* _tmp172_;
10157 						ValaCCodeIdentifier* _tmp173_;
10158 						ValaCCodeIdentifier* _tmp174_;
10159 						_tmp152_ = prop;
10160 						_tmp153_ = vala_property_get_base_property (_tmp152_);
10161 						_tmp154_ = _tmp153_;
10162 						_tmp155_ = vala_property_get_get_accessor (_tmp154_);
10163 						_tmp156_ = _tmp155_;
10164 						_tmp157_ = ((ValaCCodeBaseModule*) self)->cfile;
10165 						vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp156_, _tmp157_);
10166 						_tmp158_ = prop;
10167 						_tmp159_ = vala_property_get_get_accessor (_tmp158_);
10168 						_tmp160_ = _tmp159_;
10169 						_tmp161_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp160_);
10170 						cname = _tmp161_;
10171 						_tmp162_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10172 						_tmp163_ = _tmp162_;
10173 						_tmp164_ = ccast;
10174 						_tmp165_ = prop;
10175 						_tmp166_ = vala_symbol_get_name ((ValaSymbol*) _tmp165_);
10176 						_tmp167_ = _tmp166_;
10177 						_tmp168_ = g_strdup_printf ("get_%s", _tmp167_);
10178 						_tmp169_ = _tmp168_;
10179 						_tmp170_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp164_, _tmp169_);
10180 						_tmp171_ = _tmp170_;
10181 						_tmp172_ = cname;
10182 						_tmp173_ = vala_ccode_identifier_new (_tmp172_);
10183 						_tmp174_ = _tmp173_;
10184 						vala_ccode_function_add_assignment (_tmp163_, (ValaCCodeExpression*) _tmp171_, (ValaCCodeExpression*) _tmp174_);
10185 						_vala_ccode_node_unref0 (_tmp174_);
10186 						_vala_ccode_node_unref0 (_tmp171_);
10187 						_g_free0 (_tmp169_);
10188 						_g_free0 (cname);
10189 					}
10190 					_tmp175_ = prop;
10191 					_tmp176_ = vala_property_get_set_accessor (_tmp175_);
10192 					_tmp177_ = _tmp176_;
10193 					if (_tmp177_ != NULL) {
10194 						ValaProperty* _tmp178_;
10195 						ValaProperty* _tmp179_;
10196 						ValaProperty* _tmp180_;
10197 						ValaPropertyAccessor* _tmp181_;
10198 						ValaPropertyAccessor* _tmp182_;
10199 						ValaCCodeFile* _tmp183_;
10200 						gchar* cname = NULL;
10201 						ValaProperty* _tmp184_;
10202 						ValaPropertyAccessor* _tmp185_;
10203 						ValaPropertyAccessor* _tmp186_;
10204 						gchar* _tmp187_;
10205 						ValaCCodeFunction* _tmp188_;
10206 						ValaCCodeFunction* _tmp189_;
10207 						ValaCCodeCastExpression* _tmp190_;
10208 						ValaProperty* _tmp191_;
10209 						const gchar* _tmp192_;
10210 						const gchar* _tmp193_;
10211 						gchar* _tmp194_;
10212 						gchar* _tmp195_;
10213 						ValaCCodeMemberAccess* _tmp196_;
10214 						ValaCCodeMemberAccess* _tmp197_;
10215 						const gchar* _tmp198_;
10216 						ValaCCodeIdentifier* _tmp199_;
10217 						ValaCCodeIdentifier* _tmp200_;
10218 						_tmp178_ = prop;
10219 						_tmp179_ = vala_property_get_base_property (_tmp178_);
10220 						_tmp180_ = _tmp179_;
10221 						_tmp181_ = vala_property_get_set_accessor (_tmp180_);
10222 						_tmp182_ = _tmp181_;
10223 						_tmp183_ = ((ValaCCodeBaseModule*) self)->cfile;
10224 						vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp182_, _tmp183_);
10225 						_tmp184_ = prop;
10226 						_tmp185_ = vala_property_get_set_accessor (_tmp184_);
10227 						_tmp186_ = _tmp185_;
10228 						_tmp187_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp186_);
10229 						cname = _tmp187_;
10230 						_tmp188_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10231 						_tmp189_ = _tmp188_;
10232 						_tmp190_ = ccast;
10233 						_tmp191_ = prop;
10234 						_tmp192_ = vala_symbol_get_name ((ValaSymbol*) _tmp191_);
10235 						_tmp193_ = _tmp192_;
10236 						_tmp194_ = g_strdup_printf ("set_%s", _tmp193_);
10237 						_tmp195_ = _tmp194_;
10238 						_tmp196_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp190_, _tmp195_);
10239 						_tmp197_ = _tmp196_;
10240 						_tmp198_ = cname;
10241 						_tmp199_ = vala_ccode_identifier_new (_tmp198_);
10242 						_tmp200_ = _tmp199_;
10243 						vala_ccode_function_add_assignment (_tmp189_, (ValaCCodeExpression*) _tmp197_, (ValaCCodeExpression*) _tmp200_);
10244 						_vala_ccode_node_unref0 (_tmp200_);
10245 						_vala_ccode_node_unref0 (_tmp197_);
10246 						_g_free0 (_tmp195_);
10247 						_g_free0 (cname);
10248 					}
10249 				}
10250 				_vala_ccode_node_unref0 (ccast);
10251 				_vala_code_node_unref0 (base_type);
10252 				_vala_code_node_unref0 (prop);
10253 			}
10254 			_vala_iterable_unref0 (_prop_list);
10255 		}
10256 	}
10257 	_tmp202_ = vala_class_get_is_compact (cl);
10258 	_tmp203_ = _tmp202_;
10259 	if (!_tmp203_) {
10260 		gboolean _tmp204_ = FALSE;
10261 		gboolean _tmp205_;
10262 		gboolean _tmp206_;
10263 		_tmp205_ = vala_class_get_has_private_fields (cl);
10264 		_tmp206_ = _tmp205_;
10265 		if (_tmp206_) {
10266 			_tmp204_ = TRUE;
10267 		} else {
10268 			_tmp204_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
10269 		}
10270 		_tmp201_ = _tmp204_;
10271 	} else {
10272 		_tmp201_ = FALSE;
10273 	}
10274 	if (_tmp201_) {
10275 		ValaCCodeFunctionCall* ccall = NULL;
10276 		gchar* _tmp207_;
10277 		gchar* _tmp208_;
10278 		gchar* _tmp209_;
10279 		gchar* _tmp210_;
10280 		ValaCCodeIdentifier* _tmp211_;
10281 		ValaCCodeIdentifier* _tmp212_;
10282 		ValaCCodeFunctionCall* _tmp213_;
10283 		ValaCCodeFunctionCall* _tmp214_;
10284 		ValaCCodeFunctionCall* _tmp215_;
10285 		ValaCCodeIdentifier* _tmp216_;
10286 		ValaCCodeIdentifier* _tmp217_;
10287 		ValaCCodeFunction* _tmp218_;
10288 		ValaCCodeIdentifier* _tmp219_;
10289 		ValaCCodeIdentifier* _tmp220_;
10290 		ValaCCodeMemberAccess* _tmp221_;
10291 		ValaCCodeMemberAccess* _tmp222_;
10292 		ValaCCodeFunctionCall* _tmp223_;
10293 		_tmp207_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
10294 		_tmp208_ = _tmp207_;
10295 		_tmp209_ = g_strdup_printf ("%s_get_instance_private", _tmp208_);
10296 		_tmp210_ = _tmp209_;
10297 		_tmp211_ = vala_ccode_identifier_new (_tmp210_);
10298 		_tmp212_ = _tmp211_;
10299 		_tmp213_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp212_);
10300 		_tmp214_ = _tmp213_;
10301 		_vala_ccode_node_unref0 (_tmp212_);
10302 		_g_free0 (_tmp210_);
10303 		_g_free0 (_tmp208_);
10304 		ccall = _tmp214_;
10305 		_tmp215_ = ccall;
10306 		_tmp216_ = vala_ccode_identifier_new ("self");
10307 		_tmp217_ = _tmp216_;
10308 		vala_ccode_function_call_add_argument (_tmp215_, (ValaCCodeExpression*) _tmp217_);
10309 		_vala_ccode_node_unref0 (_tmp217_);
10310 		_tmp218_ = func;
10311 		_tmp219_ = vala_ccode_identifier_new ("self");
10312 		_tmp220_ = _tmp219_;
10313 		_tmp221_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp220_, "priv");
10314 		_tmp222_ = _tmp221_;
10315 		_tmp223_ = ccall;
10316 		vala_ccode_function_add_assignment (_tmp218_, (ValaCCodeExpression*) _tmp222_, (ValaCCodeExpression*) _tmp223_);
10317 		_vala_ccode_node_unref0 (_tmp222_);
10318 		_vala_ccode_node_unref0 (_tmp220_);
10319 		_vala_ccode_node_unref0 (ccall);
10320 	}
10321 	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10322 	_vala_ccode_node_unref0 (func);
10323 }
10324 
10325 static void
vala_gtype_module_add_instance_init_function(ValaGTypeModule * self,ValaClass * cl)10326 vala_gtype_module_add_instance_init_function (ValaGTypeModule* self,
10327                                               ValaClass* cl)
10328 {
10329 	ValaCCodeBaseModuleEmitContext* _tmp0_;
10330 	ValaCCodeFile* _tmp1_;
10331 	ValaCCodeBaseModuleEmitContext* _tmp2_;
10332 	ValaCCodeFunction* _tmp3_;
10333 	g_return_if_fail (self != NULL);
10334 	g_return_if_fail (cl != NULL);
10335 	_tmp0_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
10336 	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
10337 	vala_gtype_module_end_instance_init (self, cl);
10338 	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10339 	_tmp1_ = ((ValaCCodeBaseModule*) self)->cfile;
10340 	_tmp2_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
10341 	_tmp3_ = _tmp2_->ccode;
10342 	vala_ccode_file_add_function (_tmp1_, _tmp3_);
10343 }
10344 
10345 static void
vala_gtype_module_begin_class_finalize_function(ValaGTypeModule * self,ValaClass * cl)10346 vala_gtype_module_begin_class_finalize_function (ValaGTypeModule* self,
10347                                                  ValaClass* cl)
10348 {
10349 	ValaCCodeBaseModuleEmitContext* _tmp0_;
10350 	ValaCCodeFunction* function = NULL;
10351 	gchar* _tmp1_;
10352 	gchar* _tmp2_;
10353 	gchar* _tmp3_;
10354 	gchar* _tmp4_;
10355 	ValaCCodeFunction* _tmp5_;
10356 	ValaCCodeFunction* _tmp6_;
10357 	ValaCCodeFunction* _tmp7_;
10358 	ValaCCodeFunction* _tmp8_;
10359 	gchar* _tmp9_;
10360 	gchar* _tmp10_;
10361 	gchar* _tmp11_;
10362 	gchar* _tmp12_;
10363 	ValaCCodeParameter* _tmp13_;
10364 	ValaCCodeParameter* _tmp14_;
10365 	ValaCCodeFunction* _tmp15_;
10366 	ValaDestructor* _tmp16_;
10367 	ValaDestructor* _tmp17_;
10368 	g_return_if_fail (self != NULL);
10369 	g_return_if_fail (cl != NULL);
10370 	_tmp0_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
10371 	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
10372 	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
10373 	_tmp2_ = _tmp1_;
10374 	_tmp3_ = g_strdup_printf ("%s_class_finalize", _tmp2_);
10375 	_tmp4_ = _tmp3_;
10376 	_tmp5_ = vala_ccode_function_new (_tmp4_, "void");
10377 	_tmp6_ = _tmp5_;
10378 	_g_free0 (_tmp4_);
10379 	_g_free0 (_tmp2_);
10380 	function = _tmp6_;
10381 	_tmp7_ = function;
10382 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp7_, VALA_CCODE_MODIFIERS_STATIC);
10383 	_tmp8_ = function;
10384 	_tmp9_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
10385 	_tmp10_ = _tmp9_;
10386 	_tmp11_ = g_strdup_printf ("%s *", _tmp10_);
10387 	_tmp12_ = _tmp11_;
10388 	_tmp13_ = vala_ccode_parameter_new ("klass", _tmp12_);
10389 	_tmp14_ = _tmp13_;
10390 	vala_ccode_function_add_parameter (_tmp8_, _tmp14_);
10391 	_vala_ccode_node_unref0 (_tmp14_);
10392 	_g_free0 (_tmp12_);
10393 	_g_free0 (_tmp10_);
10394 	_tmp15_ = function;
10395 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp15_);
10396 	_tmp16_ = vala_class_get_static_destructor (cl);
10397 	_tmp17_ = _tmp16_;
10398 	if (_tmp17_ != NULL) {
10399 		ValaDestructor* _tmp18_;
10400 		ValaDestructor* _tmp19_;
10401 		ValaBlock* _tmp20_;
10402 		ValaBlock* _tmp21_;
10403 		gboolean _tmp22_;
10404 		gboolean _tmp23_;
10405 		gboolean _tmp34_;
10406 		gboolean _tmp35_;
10407 		_tmp18_ = vala_class_get_static_destructor (cl);
10408 		_tmp19_ = _tmp18_;
10409 		_tmp20_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp19_);
10410 		_tmp21_ = _tmp20_;
10411 		vala_code_node_emit ((ValaCodeNode*) _tmp21_, (ValaCodeGenerator*) self);
10412 		_tmp22_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
10413 		_tmp23_ = _tmp22_;
10414 		if (_tmp23_) {
10415 			ValaCCodeFunction* _tmp24_;
10416 			ValaCCodeFunction* _tmp25_;
10417 			gint _tmp26_;
10418 			gint _tmp27_;
10419 			gchar* _tmp28_;
10420 			gchar* _tmp29_;
10421 			ValaCCodeConstant* _tmp30_;
10422 			ValaCCodeConstant* _tmp31_;
10423 			ValaCCodeVariableDeclarator* _tmp32_;
10424 			ValaCCodeVariableDeclarator* _tmp33_;
10425 			_tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10426 			_tmp25_ = _tmp24_;
10427 			_tmp26_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
10428 			_tmp27_ = _tmp26_;
10429 			_tmp28_ = g_strdup_printf ("_inner_error%d_", _tmp27_);
10430 			_tmp29_ = _tmp28_;
10431 			_tmp30_ = vala_ccode_constant_new ("NULL");
10432 			_tmp31_ = _tmp30_;
10433 			_tmp32_ = vala_ccode_variable_declarator_new_zero (_tmp29_, (ValaCCodeExpression*) _tmp31_, NULL);
10434 			_tmp33_ = _tmp32_;
10435 			vala_ccode_function_add_declaration (_tmp25_, "GError*", (ValaCCodeDeclarator*) _tmp33_, 0);
10436 			_vala_ccode_node_unref0 (_tmp33_);
10437 			_vala_ccode_node_unref0 (_tmp31_);
10438 			_g_free0 (_tmp29_);
10439 		}
10440 		_tmp34_ = vala_ccode_base_module_get_current_method_return ((ValaCCodeBaseModule*) self);
10441 		_tmp35_ = _tmp34_;
10442 		if (_tmp35_) {
10443 			ValaCCodeFunction* _tmp36_;
10444 			ValaCCodeFunction* _tmp37_;
10445 			ValaCCodeFunction* _tmp38_;
10446 			ValaCCodeFunction* _tmp39_;
10447 			ValaCCodeEmptyStatement* _tmp40_;
10448 			ValaCCodeEmptyStatement* _tmp41_;
10449 			_tmp36_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10450 			_tmp37_ = _tmp36_;
10451 			vala_ccode_function_add_label (_tmp37_, "_return");
10452 			_tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10453 			_tmp39_ = _tmp38_;
10454 			_tmp40_ = vala_ccode_empty_statement_new ();
10455 			_tmp41_ = _tmp40_;
10456 			vala_ccode_function_add_statement (_tmp39_, (ValaCCodeNode*) _tmp41_);
10457 			_vala_ccode_node_unref0 (_tmp41_);
10458 		}
10459 	}
10460 	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10461 	_vala_ccode_node_unref0 (function);
10462 }
10463 
10464 static void
vala_gtype_module_add_class_finalize_function(ValaGTypeModule * self,ValaClass * cl)10465 vala_gtype_module_add_class_finalize_function (ValaGTypeModule* self,
10466                                                ValaClass* cl)
10467 {
10468 	ValaCCodeFile* _tmp0_;
10469 	ValaCCodeBaseModuleEmitContext* _tmp1_;
10470 	ValaCCodeFunction* _tmp2_;
10471 	ValaCCodeFile* _tmp3_;
10472 	ValaCCodeBaseModuleEmitContext* _tmp4_;
10473 	ValaCCodeFunction* _tmp5_;
10474 	g_return_if_fail (self != NULL);
10475 	g_return_if_fail (cl != NULL);
10476 	_tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
10477 	_tmp1_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
10478 	_tmp2_ = _tmp1_->ccode;
10479 	vala_ccode_file_add_function_declaration (_tmp0_, _tmp2_);
10480 	_tmp3_ = ((ValaCCodeBaseModule*) self)->cfile;
10481 	_tmp4_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
10482 	_tmp5_ = _tmp4_->ccode;
10483 	vala_ccode_file_add_function (_tmp3_, _tmp5_);
10484 }
10485 
10486 static void
vala_gtype_module_begin_base_finalize_function(ValaGTypeModule * self,ValaClass * cl)10487 vala_gtype_module_begin_base_finalize_function (ValaGTypeModule* self,
10488                                                 ValaClass* cl)
10489 {
10490 	ValaCCodeBaseModuleEmitContext* _tmp0_;
10491 	ValaCCodeFunction* function = NULL;
10492 	gchar* _tmp1_;
10493 	gchar* _tmp2_;
10494 	gchar* _tmp3_;
10495 	gchar* _tmp4_;
10496 	ValaCCodeFunction* _tmp5_;
10497 	ValaCCodeFunction* _tmp6_;
10498 	ValaCCodeFunction* _tmp7_;
10499 	ValaCCodeFunction* _tmp8_;
10500 	gchar* _tmp9_;
10501 	gchar* _tmp10_;
10502 	gchar* _tmp11_;
10503 	gchar* _tmp12_;
10504 	ValaCCodeParameter* _tmp13_;
10505 	ValaCCodeParameter* _tmp14_;
10506 	ValaCCodeFunction* _tmp15_;
10507 	ValaCCodeParameter* _tmp16_;
10508 	ValaCCodeParameter* _tmp17_;
10509 	ValaCCodeFunction* _tmp18_;
10510 	ValaDestructor* _tmp19_;
10511 	ValaDestructor* _tmp20_;
10512 	g_return_if_fail (self != NULL);
10513 	g_return_if_fail (cl != NULL);
10514 	_tmp0_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
10515 	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
10516 	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
10517 	_tmp2_ = _tmp1_;
10518 	_tmp3_ = g_strdup_printf ("%s_base_finalize", _tmp2_);
10519 	_tmp4_ = _tmp3_;
10520 	_tmp5_ = vala_ccode_function_new (_tmp4_, "void");
10521 	_tmp6_ = _tmp5_;
10522 	_g_free0 (_tmp4_);
10523 	_g_free0 (_tmp2_);
10524 	function = _tmp6_;
10525 	_tmp7_ = function;
10526 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp7_, VALA_CCODE_MODIFIERS_STATIC);
10527 	_tmp8_ = function;
10528 	_tmp9_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
10529 	_tmp10_ = _tmp9_;
10530 	_tmp11_ = g_strdup_printf ("%s *", _tmp10_);
10531 	_tmp12_ = _tmp11_;
10532 	_tmp13_ = vala_ccode_parameter_new ("klass", _tmp12_);
10533 	_tmp14_ = _tmp13_;
10534 	vala_ccode_function_add_parameter (_tmp8_, _tmp14_);
10535 	_vala_ccode_node_unref0 (_tmp14_);
10536 	_g_free0 (_tmp12_);
10537 	_g_free0 (_tmp10_);
10538 	_tmp15_ = function;
10539 	_tmp16_ = vala_ccode_parameter_new ("klass_data", "gpointer");
10540 	_tmp17_ = _tmp16_;
10541 	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
10542 	_vala_ccode_node_unref0 (_tmp17_);
10543 	_tmp18_ = function;
10544 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp18_);
10545 	_tmp19_ = vala_class_get_class_destructor (cl);
10546 	_tmp20_ = _tmp19_;
10547 	if (_tmp20_ != NULL) {
10548 		ValaDestructor* _tmp21_;
10549 		ValaDestructor* _tmp22_;
10550 		ValaBlock* _tmp23_;
10551 		ValaBlock* _tmp24_;
10552 		gboolean _tmp25_;
10553 		gboolean _tmp26_;
10554 		gboolean _tmp37_;
10555 		gboolean _tmp38_;
10556 		_tmp21_ = vala_class_get_class_destructor (cl);
10557 		_tmp22_ = _tmp21_;
10558 		_tmp23_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp22_);
10559 		_tmp24_ = _tmp23_;
10560 		vala_code_node_emit ((ValaCodeNode*) _tmp24_, (ValaCodeGenerator*) self);
10561 		_tmp25_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
10562 		_tmp26_ = _tmp25_;
10563 		if (_tmp26_) {
10564 			ValaCCodeFunction* _tmp27_;
10565 			ValaCCodeFunction* _tmp28_;
10566 			gint _tmp29_;
10567 			gint _tmp30_;
10568 			gchar* _tmp31_;
10569 			gchar* _tmp32_;
10570 			ValaCCodeConstant* _tmp33_;
10571 			ValaCCodeConstant* _tmp34_;
10572 			ValaCCodeVariableDeclarator* _tmp35_;
10573 			ValaCCodeVariableDeclarator* _tmp36_;
10574 			_tmp27_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10575 			_tmp28_ = _tmp27_;
10576 			_tmp29_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
10577 			_tmp30_ = _tmp29_;
10578 			_tmp31_ = g_strdup_printf ("_inner_error%d_", _tmp30_);
10579 			_tmp32_ = _tmp31_;
10580 			_tmp33_ = vala_ccode_constant_new ("NULL");
10581 			_tmp34_ = _tmp33_;
10582 			_tmp35_ = vala_ccode_variable_declarator_new_zero (_tmp32_, (ValaCCodeExpression*) _tmp34_, NULL);
10583 			_tmp36_ = _tmp35_;
10584 			vala_ccode_function_add_declaration (_tmp28_, "GError*", (ValaCCodeDeclarator*) _tmp36_, 0);
10585 			_vala_ccode_node_unref0 (_tmp36_);
10586 			_vala_ccode_node_unref0 (_tmp34_);
10587 			_g_free0 (_tmp32_);
10588 		}
10589 		_tmp37_ = vala_ccode_base_module_get_current_method_return ((ValaCCodeBaseModule*) self);
10590 		_tmp38_ = _tmp37_;
10591 		if (_tmp38_) {
10592 			ValaCCodeFunction* _tmp39_;
10593 			ValaCCodeFunction* _tmp40_;
10594 			ValaCCodeFunction* _tmp41_;
10595 			ValaCCodeFunction* _tmp42_;
10596 			ValaCCodeEmptyStatement* _tmp43_;
10597 			ValaCCodeEmptyStatement* _tmp44_;
10598 			_tmp39_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10599 			_tmp40_ = _tmp39_;
10600 			vala_ccode_function_add_label (_tmp40_, "_return");
10601 			_tmp41_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10602 			_tmp42_ = _tmp41_;
10603 			_tmp43_ = vala_ccode_empty_statement_new ();
10604 			_tmp44_ = _tmp43_;
10605 			vala_ccode_function_add_statement (_tmp42_, (ValaCCodeNode*) _tmp44_);
10606 			_vala_ccode_node_unref0 (_tmp44_);
10607 		}
10608 	}
10609 	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10610 	_vala_ccode_node_unref0 (function);
10611 }
10612 
10613 static void
vala_gtype_module_add_base_finalize_function(ValaGTypeModule * self,ValaClass * cl)10614 vala_gtype_module_add_base_finalize_function (ValaGTypeModule* self,
10615                                               ValaClass* cl)
10616 {
10617 	ValaCCodeBaseModuleEmitContext* _tmp0_;
10618 	ValaCCodeFile* _tmp1_;
10619 	ValaCCodeFunction* _tmp2_;
10620 	ValaCCodeFunction* _tmp3_;
10621 	ValaCCodeFile* _tmp4_;
10622 	ValaCCodeFunction* _tmp5_;
10623 	ValaCCodeFunction* _tmp6_;
10624 	g_return_if_fail (self != NULL);
10625 	g_return_if_fail (cl != NULL);
10626 	_tmp0_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
10627 	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
10628 	_tmp1_ = ((ValaCCodeBaseModule*) self)->cfile;
10629 	_tmp2_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10630 	_tmp3_ = _tmp2_;
10631 	vala_ccode_file_add_function_declaration (_tmp1_, _tmp3_);
10632 	_tmp4_ = ((ValaCCodeBaseModule*) self)->cfile;
10633 	_tmp5_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10634 	_tmp6_ = _tmp5_;
10635 	vala_ccode_file_add_function (_tmp4_, _tmp6_);
10636 	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10637 }
10638 
10639 static void
vala_gtype_module_begin_finalize_function(ValaGTypeModule * self,ValaClass * cl)10640 vala_gtype_module_begin_finalize_function (ValaGTypeModule* self,
10641                                            ValaClass* cl)
10642 {
10643 	ValaCCodeBaseModuleEmitContext* _tmp0_;
10644 	gboolean is_gsource = FALSE;
10645 	ValaClass* _tmp1_;
10646 	gboolean _tmp2_ = FALSE;
10647 	gboolean _tmp3_;
10648 	gboolean _tmp4_;
10649 	ValaDestructor* _tmp92_;
10650 	ValaDestructor* _tmp93_;
10651 	g_return_if_fail (self != NULL);
10652 	g_return_if_fail (cl != NULL);
10653 	_tmp0_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
10654 	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
10655 	_tmp1_ = ((ValaCCodeBaseModule*) self)->gsource_type;
10656 	is_gsource = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp1_);
10657 	_tmp3_ = vala_class_get_is_compact (cl);
10658 	_tmp4_ = _tmp3_;
10659 	if (!_tmp4_) {
10660 		_tmp2_ = TRUE;
10661 	} else {
10662 		_tmp2_ = is_gsource;
10663 	}
10664 	if (_tmp2_) {
10665 		ValaClass* fundamental_class = NULL;
10666 		ValaClass* _tmp5_;
10667 		ValaCCodeFunction* func = NULL;
10668 		gchar* _tmp13_;
10669 		gchar* _tmp14_;
10670 		gchar* _tmp15_;
10671 		gchar* _tmp16_;
10672 		ValaCCodeFunction* _tmp17_;
10673 		ValaCCodeFunction* _tmp18_;
10674 		ValaCCodeFunction* _tmp19_;
10675 		ValaClass* _tmp20_;
10676 		gchar* _tmp21_;
10677 		gchar* _tmp22_;
10678 		gchar* _tmp23_;
10679 		gchar* _tmp24_;
10680 		ValaCCodeParameter* _tmp25_;
10681 		ValaCCodeParameter* _tmp26_;
10682 		ValaCCodeFunction* _tmp27_;
10683 		ValaCCodeFunction* _tmp28_;
10684 		ValaCCodeExpression* ccast = NULL;
10685 		gboolean _tmp31_;
10686 		gboolean _tmp32_;
10687 		ValaCCodeFunction* _tmp43_;
10688 		ValaCCodeFunction* _tmp44_;
10689 		gchar* _tmp45_;
10690 		gchar* _tmp46_;
10691 		gchar* _tmp47_;
10692 		gchar* _tmp48_;
10693 		ValaCCodeVariableDeclarator* _tmp49_;
10694 		ValaCCodeVariableDeclarator* _tmp50_;
10695 		ValaCCodeFunction* _tmp51_;
10696 		ValaCCodeFunction* _tmp52_;
10697 		ValaCCodeIdentifier* _tmp53_;
10698 		ValaCCodeIdentifier* _tmp54_;
10699 		ValaCCodeExpression* _tmp55_;
10700 		gboolean _tmp56_ = FALSE;
10701 		gboolean _tmp57_;
10702 		gboolean _tmp58_;
10703 		_tmp5_ = _vala_code_node_ref0 (cl);
10704 		fundamental_class = _tmp5_;
10705 		while (TRUE) {
10706 			ValaClass* _tmp6_;
10707 			ValaClass* _tmp7_;
10708 			ValaClass* _tmp8_;
10709 			ValaClass* _tmp9_;
10710 			ValaClass* _tmp10_;
10711 			ValaClass* _tmp11_;
10712 			ValaClass* _tmp12_;
10713 			_tmp6_ = fundamental_class;
10714 			_tmp7_ = vala_class_get_base_class (_tmp6_);
10715 			_tmp8_ = _tmp7_;
10716 			if (!(_tmp8_ != NULL)) {
10717 				break;
10718 			}
10719 			_tmp9_ = fundamental_class;
10720 			_tmp10_ = vala_class_get_base_class (_tmp9_);
10721 			_tmp11_ = _tmp10_;
10722 			_tmp12_ = _vala_code_node_ref0 (_tmp11_);
10723 			_vala_code_node_unref0 (fundamental_class);
10724 			fundamental_class = _tmp12_;
10725 		}
10726 		_tmp13_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) cl);
10727 		_tmp14_ = _tmp13_;
10728 		_tmp15_ = g_strdup_printf ("%sfinalize", _tmp14_);
10729 		_tmp16_ = _tmp15_;
10730 		_tmp17_ = vala_ccode_function_new (_tmp16_, "void");
10731 		_tmp18_ = _tmp17_;
10732 		_g_free0 (_tmp16_);
10733 		_g_free0 (_tmp14_);
10734 		func = _tmp18_;
10735 		_tmp19_ = func;
10736 		_tmp20_ = fundamental_class;
10737 		_tmp21_ = vala_get_ccode_name ((ValaCodeNode*) _tmp20_);
10738 		_tmp22_ = _tmp21_;
10739 		_tmp23_ = g_strdup_printf ("%s *", _tmp22_);
10740 		_tmp24_ = _tmp23_;
10741 		_tmp25_ = vala_ccode_parameter_new ("obj", _tmp24_);
10742 		_tmp26_ = _tmp25_;
10743 		vala_ccode_function_add_parameter (_tmp19_, _tmp26_);
10744 		_vala_ccode_node_unref0 (_tmp26_);
10745 		_g_free0 (_tmp24_);
10746 		_g_free0 (_tmp22_);
10747 		_tmp27_ = func;
10748 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp27_, VALA_CCODE_MODIFIERS_STATIC);
10749 		_tmp28_ = func;
10750 		vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp28_);
10751 		if (is_gsource) {
10752 			ValaCCodeFile* _tmp29_;
10753 			ValaCCodeFunction* _tmp30_;
10754 			_tmp29_ = ((ValaCCodeBaseModule*) self)->cfile;
10755 			_tmp30_ = func;
10756 			vala_ccode_file_add_function_declaration (_tmp29_, _tmp30_);
10757 		}
10758 		_tmp31_ = vala_class_get_is_compact (cl);
10759 		_tmp32_ = _tmp31_;
10760 		if (!_tmp32_) {
10761 			ValaCCodeIdentifier* _tmp33_;
10762 			ValaCCodeIdentifier* _tmp34_;
10763 			ValaCCodeFunctionCall* _tmp35_;
10764 			_tmp33_ = vala_ccode_identifier_new ("obj");
10765 			_tmp34_ = _tmp33_;
10766 			_tmp35_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp34_, (ValaTypeSymbol*) cl);
10767 			_vala_ccode_node_unref0 (ccast);
10768 			ccast = (ValaCCodeExpression*) _tmp35_;
10769 			_vala_ccode_node_unref0 (_tmp34_);
10770 		} else {
10771 			ValaCCodeIdentifier* _tmp36_;
10772 			ValaCCodeIdentifier* _tmp37_;
10773 			gchar* _tmp38_;
10774 			gchar* _tmp39_;
10775 			gchar* _tmp40_;
10776 			gchar* _tmp41_;
10777 			ValaCCodeCastExpression* _tmp42_;
10778 			_tmp36_ = vala_ccode_identifier_new ("obj");
10779 			_tmp37_ = _tmp36_;
10780 			_tmp38_ = vala_get_ccode_name ((ValaCodeNode*) cl);
10781 			_tmp39_ = _tmp38_;
10782 			_tmp40_ = g_strdup_printf ("%s *", _tmp39_);
10783 			_tmp41_ = _tmp40_;
10784 			_tmp42_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp37_, _tmp41_);
10785 			_vala_ccode_node_unref0 (ccast);
10786 			ccast = (ValaCCodeExpression*) _tmp42_;
10787 			_g_free0 (_tmp41_);
10788 			_g_free0 (_tmp39_);
10789 			_vala_ccode_node_unref0 (_tmp37_);
10790 		}
10791 		_tmp43_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10792 		_tmp44_ = _tmp43_;
10793 		_tmp45_ = vala_get_ccode_name ((ValaCodeNode*) cl);
10794 		_tmp46_ = _tmp45_;
10795 		_tmp47_ = g_strdup_printf ("%s *", _tmp46_);
10796 		_tmp48_ = _tmp47_;
10797 		_tmp49_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
10798 		_tmp50_ = _tmp49_;
10799 		vala_ccode_function_add_declaration (_tmp44_, _tmp48_, (ValaCCodeDeclarator*) _tmp50_, 0);
10800 		_vala_ccode_node_unref0 (_tmp50_);
10801 		_g_free0 (_tmp48_);
10802 		_g_free0 (_tmp46_);
10803 		_tmp51_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10804 		_tmp52_ = _tmp51_;
10805 		_tmp53_ = vala_ccode_identifier_new ("self");
10806 		_tmp54_ = _tmp53_;
10807 		_tmp55_ = ccast;
10808 		vala_ccode_function_add_assignment (_tmp52_, (ValaCCodeExpression*) _tmp54_, _tmp55_);
10809 		_vala_ccode_node_unref0 (_tmp54_);
10810 		_tmp57_ = vala_class_get_is_compact (cl);
10811 		_tmp58_ = _tmp57_;
10812 		if (!_tmp58_) {
10813 			ValaClass* _tmp59_;
10814 			ValaClass* _tmp60_;
10815 			_tmp59_ = vala_class_get_base_class (cl);
10816 			_tmp60_ = _tmp59_;
10817 			_tmp56_ = _tmp60_ == NULL;
10818 		} else {
10819 			_tmp56_ = FALSE;
10820 		}
10821 		if (_tmp56_) {
10822 			ValaCCodeFunctionCall* call = NULL;
10823 			ValaCCodeIdentifier* _tmp61_;
10824 			ValaCCodeIdentifier* _tmp62_;
10825 			ValaCCodeFunctionCall* _tmp63_;
10826 			ValaCCodeFunctionCall* _tmp64_;
10827 			ValaCCodeFunctionCall* _tmp65_;
10828 			ValaCCodeIdentifier* _tmp66_;
10829 			ValaCCodeIdentifier* _tmp67_;
10830 			ValaCCodeFunction* _tmp68_;
10831 			ValaCCodeFunction* _tmp69_;
10832 			ValaCCodeFunctionCall* _tmp70_;
10833 			_tmp61_ = vala_ccode_identifier_new ("g_signal_handlers_destroy");
10834 			_tmp62_ = _tmp61_;
10835 			_tmp63_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp62_);
10836 			_tmp64_ = _tmp63_;
10837 			_vala_ccode_node_unref0 (_tmp62_);
10838 			call = _tmp64_;
10839 			_tmp65_ = call;
10840 			_tmp66_ = vala_ccode_identifier_new ("self");
10841 			_tmp67_ = _tmp66_;
10842 			vala_ccode_function_call_add_argument (_tmp65_, (ValaCCodeExpression*) _tmp67_);
10843 			_vala_ccode_node_unref0 (_tmp67_);
10844 			_tmp68_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10845 			_tmp69_ = _tmp68_;
10846 			_tmp70_ = call;
10847 			vala_ccode_function_add_expression (_tmp69_, (ValaCCodeExpression*) _tmp70_);
10848 			_vala_ccode_node_unref0 (call);
10849 		}
10850 		_vala_ccode_node_unref0 (ccast);
10851 		_vala_ccode_node_unref0 (func);
10852 		_vala_code_node_unref0 (fundamental_class);
10853 	} else {
10854 		ValaClass* _tmp71_;
10855 		ValaClass* _tmp72_;
10856 		_tmp71_ = vala_class_get_base_class (cl);
10857 		_tmp72_ = _tmp71_;
10858 		if (_tmp72_ == NULL) {
10859 			ValaCCodeFunction* function = NULL;
10860 			gchar* _tmp73_;
10861 			gchar* _tmp74_;
10862 			ValaCCodeFunction* _tmp75_;
10863 			ValaCCodeFunction* _tmp76_;
10864 			ValaCCodeFunction* _tmp84_;
10865 			gchar* _tmp85_;
10866 			gchar* _tmp86_;
10867 			gchar* _tmp87_;
10868 			gchar* _tmp88_;
10869 			ValaCCodeParameter* _tmp89_;
10870 			ValaCCodeParameter* _tmp90_;
10871 			ValaCCodeFunction* _tmp91_;
10872 			_tmp73_ = vala_get_ccode_free_function ((ValaTypeSymbol*) cl);
10873 			_tmp74_ = _tmp73_;
10874 			_tmp75_ = vala_ccode_function_new (_tmp74_, "void");
10875 			_tmp76_ = _tmp75_;
10876 			_g_free0 (_tmp74_);
10877 			function = _tmp76_;
10878 			if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
10879 				ValaCCodeFunction* _tmp77_;
10880 				_tmp77_ = function;
10881 				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp77_, VALA_CCODE_MODIFIERS_STATIC);
10882 			} else {
10883 				gboolean _tmp78_ = FALSE;
10884 				ValaCodeContext* _tmp79_;
10885 				ValaCodeContext* _tmp80_;
10886 				gboolean _tmp81_;
10887 				gboolean _tmp82_;
10888 				_tmp79_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
10889 				_tmp80_ = _tmp79_;
10890 				_tmp81_ = vala_code_context_get_hide_internal (_tmp80_);
10891 				_tmp82_ = _tmp81_;
10892 				if (_tmp82_) {
10893 					_tmp78_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
10894 				} else {
10895 					_tmp78_ = FALSE;
10896 				}
10897 				if (_tmp78_) {
10898 					ValaCCodeFunction* _tmp83_;
10899 					_tmp83_ = function;
10900 					vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp83_, VALA_CCODE_MODIFIERS_INTERNAL);
10901 				}
10902 			}
10903 			_tmp84_ = function;
10904 			_tmp85_ = vala_get_ccode_name ((ValaCodeNode*) cl);
10905 			_tmp86_ = _tmp85_;
10906 			_tmp87_ = g_strdup_printf ("%s *", _tmp86_);
10907 			_tmp88_ = _tmp87_;
10908 			_tmp89_ = vala_ccode_parameter_new ("self", _tmp88_);
10909 			_tmp90_ = _tmp89_;
10910 			vala_ccode_function_add_parameter (_tmp84_, _tmp90_);
10911 			_vala_ccode_node_unref0 (_tmp90_);
10912 			_g_free0 (_tmp88_);
10913 			_g_free0 (_tmp86_);
10914 			_tmp91_ = function;
10915 			vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp91_);
10916 			_vala_ccode_node_unref0 (function);
10917 		}
10918 	}
10919 	_tmp92_ = vala_class_get_destructor (cl);
10920 	_tmp93_ = _tmp92_;
10921 	if (_tmp93_ != NULL) {
10922 		ValaDestructor* _tmp94_;
10923 		ValaDestructor* _tmp95_;
10924 		ValaBlock* _tmp96_;
10925 		ValaBlock* _tmp97_;
10926 		gboolean _tmp98_;
10927 		gboolean _tmp99_;
10928 		gboolean _tmp110_;
10929 		gboolean _tmp111_;
10930 		_tmp94_ = vala_class_get_destructor (cl);
10931 		_tmp95_ = _tmp94_;
10932 		_tmp96_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp95_);
10933 		_tmp97_ = _tmp96_;
10934 		vala_code_node_emit ((ValaCodeNode*) _tmp97_, (ValaCodeGenerator*) self);
10935 		_tmp98_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
10936 		_tmp99_ = _tmp98_;
10937 		if (_tmp99_) {
10938 			ValaCCodeFunction* _tmp100_;
10939 			ValaCCodeFunction* _tmp101_;
10940 			gint _tmp102_;
10941 			gint _tmp103_;
10942 			gchar* _tmp104_;
10943 			gchar* _tmp105_;
10944 			ValaCCodeConstant* _tmp106_;
10945 			ValaCCodeConstant* _tmp107_;
10946 			ValaCCodeVariableDeclarator* _tmp108_;
10947 			ValaCCodeVariableDeclarator* _tmp109_;
10948 			_tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10949 			_tmp101_ = _tmp100_;
10950 			_tmp102_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
10951 			_tmp103_ = _tmp102_;
10952 			_tmp104_ = g_strdup_printf ("_inner_error%d_", _tmp103_);
10953 			_tmp105_ = _tmp104_;
10954 			_tmp106_ = vala_ccode_constant_new ("NULL");
10955 			_tmp107_ = _tmp106_;
10956 			_tmp108_ = vala_ccode_variable_declarator_new_zero (_tmp105_, (ValaCCodeExpression*) _tmp107_, NULL);
10957 			_tmp109_ = _tmp108_;
10958 			vala_ccode_function_add_declaration (_tmp101_, "GError*", (ValaCCodeDeclarator*) _tmp109_, 0);
10959 			_vala_ccode_node_unref0 (_tmp109_);
10960 			_vala_ccode_node_unref0 (_tmp107_);
10961 			_g_free0 (_tmp105_);
10962 		}
10963 		_tmp110_ = vala_ccode_base_module_get_current_method_return ((ValaCCodeBaseModule*) self);
10964 		_tmp111_ = _tmp110_;
10965 		if (_tmp111_) {
10966 			ValaCCodeFunction* _tmp112_;
10967 			ValaCCodeFunction* _tmp113_;
10968 			_tmp112_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10969 			_tmp113_ = _tmp112_;
10970 			vala_ccode_function_add_label (_tmp113_, "_return");
10971 		}
10972 	}
10973 	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10974 }
10975 
10976 static void
vala_gtype_module_add_finalize_function(ValaGTypeModule * self,ValaClass * cl)10977 vala_gtype_module_add_finalize_function (ValaGTypeModule* self,
10978                                          ValaClass* cl)
10979 {
10980 	gboolean _tmp0_;
10981 	gboolean _tmp1_;
10982 	g_return_if_fail (self != NULL);
10983 	g_return_if_fail (cl != NULL);
10984 	_tmp0_ = vala_class_get_is_compact (cl);
10985 	_tmp1_ = _tmp0_;
10986 	if (!_tmp1_) {
10987 		ValaClass* fundamental_class = NULL;
10988 		ValaClass* _tmp2_;
10989 		ValaClass* _tmp10_;
10990 		ValaClass* _tmp11_;
10991 		ValaCCodeFile* _tmp38_;
10992 		ValaCCodeBaseModuleEmitContext* _tmp39_;
10993 		ValaCCodeFunction* _tmp40_;
10994 		ValaCCodeFile* _tmp41_;
10995 		ValaCCodeBaseModuleEmitContext* _tmp42_;
10996 		ValaCCodeFunction* _tmp43_;
10997 		_tmp2_ = _vala_code_node_ref0 (cl);
10998 		fundamental_class = _tmp2_;
10999 		while (TRUE) {
11000 			ValaClass* _tmp3_;
11001 			ValaClass* _tmp4_;
11002 			ValaClass* _tmp5_;
11003 			ValaClass* _tmp6_;
11004 			ValaClass* _tmp7_;
11005 			ValaClass* _tmp8_;
11006 			ValaClass* _tmp9_;
11007 			_tmp3_ = fundamental_class;
11008 			_tmp4_ = vala_class_get_base_class (_tmp3_);
11009 			_tmp5_ = _tmp4_;
11010 			if (!(_tmp5_ != NULL)) {
11011 				break;
11012 			}
11013 			_tmp6_ = fundamental_class;
11014 			_tmp7_ = vala_class_get_base_class (_tmp6_);
11015 			_tmp8_ = _tmp7_;
11016 			_tmp9_ = _vala_code_node_ref0 (_tmp8_);
11017 			_vala_code_node_unref0 (fundamental_class);
11018 			fundamental_class = _tmp9_;
11019 		}
11020 		_tmp10_ = vala_class_get_base_class (cl);
11021 		_tmp11_ = _tmp10_;
11022 		if (_tmp11_ != NULL) {
11023 			ValaCCodeFunctionCall* ccast = NULL;
11024 			ValaClass* _tmp12_;
11025 			gchar* _tmp13_;
11026 			gchar* _tmp14_;
11027 			ValaCCodeIdentifier* _tmp15_;
11028 			ValaCCodeIdentifier* _tmp16_;
11029 			ValaCCodeFunctionCall* _tmp17_;
11030 			ValaCCodeFunctionCall* _tmp18_;
11031 			ValaCCodeFunctionCall* _tmp19_;
11032 			gchar* _tmp20_;
11033 			gchar* _tmp21_;
11034 			gchar* _tmp22_;
11035 			gchar* _tmp23_;
11036 			ValaCCodeIdentifier* _tmp24_;
11037 			ValaCCodeIdentifier* _tmp25_;
11038 			ValaCCodeFunctionCall* ccall = NULL;
11039 			ValaCCodeFunctionCall* _tmp26_;
11040 			ValaCCodeMemberAccess* _tmp27_;
11041 			ValaCCodeMemberAccess* _tmp28_;
11042 			ValaCCodeFunctionCall* _tmp29_;
11043 			ValaCCodeFunctionCall* _tmp30_;
11044 			ValaCCodeFunctionCall* _tmp31_;
11045 			ValaCCodeIdentifier* _tmp32_;
11046 			ValaCCodeIdentifier* _tmp33_;
11047 			ValaCCodeBaseModuleEmitContext* _tmp34_;
11048 			ValaCCodeFunction* _tmp35_;
11049 			ValaCCodeFunction* _tmp36_;
11050 			ValaCCodeFunctionCall* _tmp37_;
11051 			_tmp12_ = fundamental_class;
11052 			_tmp13_ = vala_get_ccode_class_type_function (_tmp12_);
11053 			_tmp14_ = _tmp13_;
11054 			_tmp15_ = vala_ccode_identifier_new (_tmp14_);
11055 			_tmp16_ = _tmp15_;
11056 			_tmp17_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp16_);
11057 			_tmp18_ = _tmp17_;
11058 			_vala_ccode_node_unref0 (_tmp16_);
11059 			_g_free0 (_tmp14_);
11060 			ccast = _tmp18_;
11061 			_tmp19_ = ccast;
11062 			_tmp20_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
11063 			_tmp21_ = _tmp20_;
11064 			_tmp22_ = g_strdup_printf ("%s_parent_class", _tmp21_);
11065 			_tmp23_ = _tmp22_;
11066 			_tmp24_ = vala_ccode_identifier_new (_tmp23_);
11067 			_tmp25_ = _tmp24_;
11068 			vala_ccode_function_call_add_argument (_tmp19_, (ValaCCodeExpression*) _tmp25_);
11069 			_vala_ccode_node_unref0 (_tmp25_);
11070 			_g_free0 (_tmp23_);
11071 			_g_free0 (_tmp21_);
11072 			_tmp26_ = ccast;
11073 			_tmp27_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp26_, "finalize");
11074 			_tmp28_ = _tmp27_;
11075 			_tmp29_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp28_);
11076 			_tmp30_ = _tmp29_;
11077 			_vala_ccode_node_unref0 (_tmp28_);
11078 			ccall = _tmp30_;
11079 			_tmp31_ = ccall;
11080 			_tmp32_ = vala_ccode_identifier_new ("obj");
11081 			_tmp33_ = _tmp32_;
11082 			vala_ccode_function_call_add_argument (_tmp31_, (ValaCCodeExpression*) _tmp33_);
11083 			_vala_ccode_node_unref0 (_tmp33_);
11084 			_tmp34_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11085 			vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp34_);
11086 			_tmp35_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
11087 			_tmp36_ = _tmp35_;
11088 			_tmp37_ = ccall;
11089 			vala_ccode_function_add_expression (_tmp36_, (ValaCCodeExpression*) _tmp37_);
11090 			vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
11091 			_vala_ccode_node_unref0 (ccall);
11092 			_vala_ccode_node_unref0 (ccast);
11093 		}
11094 		_tmp38_ = ((ValaCCodeBaseModule*) self)->cfile;
11095 		_tmp39_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11096 		_tmp40_ = _tmp39_->ccode;
11097 		vala_ccode_file_add_function_declaration (_tmp38_, _tmp40_);
11098 		_tmp41_ = ((ValaCCodeBaseModule*) self)->cfile;
11099 		_tmp42_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11100 		_tmp43_ = _tmp42_->ccode;
11101 		vala_ccode_file_add_function (_tmp41_, _tmp43_);
11102 		_vala_code_node_unref0 (fundamental_class);
11103 	} else {
11104 		ValaClass* _tmp44_;
11105 		ValaClass* _tmp45_;
11106 		_tmp44_ = vala_class_get_base_class (cl);
11107 		_tmp45_ = _tmp44_;
11108 		if (_tmp45_ == NULL) {
11109 			ValaCCodeFile* _tmp46_;
11110 			ValaCCodeFunctionCall* ccall = NULL;
11111 			ValaCCodeIdentifier* _tmp47_;
11112 			ValaCCodeIdentifier* _tmp48_;
11113 			ValaCCodeFunctionCall* _tmp49_;
11114 			ValaCCodeFunctionCall* _tmp50_;
11115 			ValaCCodeFunctionCall* _tmp51_;
11116 			gchar* _tmp52_;
11117 			gchar* _tmp53_;
11118 			ValaCCodeIdentifier* _tmp54_;
11119 			ValaCCodeIdentifier* _tmp55_;
11120 			ValaCCodeFunctionCall* _tmp56_;
11121 			ValaCCodeIdentifier* _tmp57_;
11122 			ValaCCodeIdentifier* _tmp58_;
11123 			ValaCCodeBaseModuleEmitContext* _tmp59_;
11124 			ValaCCodeFunction* _tmp60_;
11125 			ValaCCodeFunction* _tmp61_;
11126 			ValaCCodeFunctionCall* _tmp62_;
11127 			ValaCCodeFile* _tmp63_;
11128 			ValaCCodeBaseModuleEmitContext* _tmp64_;
11129 			ValaCCodeFunction* _tmp65_;
11130 			_tmp46_ = ((ValaCCodeBaseModule*) self)->cfile;
11131 			vala_ccode_file_add_include (_tmp46_, "glib.h", FALSE);
11132 			_tmp47_ = vala_ccode_identifier_new ("g_slice_free");
11133 			_tmp48_ = _tmp47_;
11134 			_tmp49_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp48_);
11135 			_tmp50_ = _tmp49_;
11136 			_vala_ccode_node_unref0 (_tmp48_);
11137 			ccall = _tmp50_;
11138 			_tmp51_ = ccall;
11139 			_tmp52_ = vala_get_ccode_name ((ValaCodeNode*) cl);
11140 			_tmp53_ = _tmp52_;
11141 			_tmp54_ = vala_ccode_identifier_new (_tmp53_);
11142 			_tmp55_ = _tmp54_;
11143 			vala_ccode_function_call_add_argument (_tmp51_, (ValaCCodeExpression*) _tmp55_);
11144 			_vala_ccode_node_unref0 (_tmp55_);
11145 			_g_free0 (_tmp53_);
11146 			_tmp56_ = ccall;
11147 			_tmp57_ = vala_ccode_identifier_new ("self");
11148 			_tmp58_ = _tmp57_;
11149 			vala_ccode_function_call_add_argument (_tmp56_, (ValaCCodeExpression*) _tmp58_);
11150 			_vala_ccode_node_unref0 (_tmp58_);
11151 			_tmp59_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11152 			vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp59_);
11153 			_tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
11154 			_tmp61_ = _tmp60_;
11155 			_tmp62_ = ccall;
11156 			vala_ccode_function_add_expression (_tmp61_, (ValaCCodeExpression*) _tmp62_);
11157 			vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
11158 			_tmp63_ = ((ValaCCodeBaseModule*) self)->cfile;
11159 			_tmp64_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11160 			_tmp65_ = _tmp64_->ccode;
11161 			vala_ccode_file_add_function (_tmp63_, _tmp65_);
11162 			_vala_ccode_node_unref0 (ccall);
11163 		} else {
11164 			ValaClass* _tmp66_;
11165 			_tmp66_ = ((ValaCCodeBaseModule*) self)->gsource_type;
11166 			if (vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp66_)) {
11167 				ValaCCodeFile* _tmp67_;
11168 				ValaCCodeBaseModuleEmitContext* _tmp68_;
11169 				ValaCCodeFunction* _tmp69_;
11170 				_tmp67_ = ((ValaCCodeBaseModule*) self)->cfile;
11171 				_tmp68_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11172 				_tmp69_ = _tmp68_->ccode;
11173 				vala_ccode_file_add_function (_tmp67_, _tmp69_);
11174 			}
11175 		}
11176 	}
11177 }
11178 
11179 static ValaCCodeExpression*
vala_gtype_module_real_get_param_spec_cexpression(ValaCCodeBaseModule * base,ValaProperty * prop)11180 vala_gtype_module_real_get_param_spec_cexpression (ValaCCodeBaseModule* base,
11181                                                    ValaProperty* prop)
11182 {
11183 	ValaGTypeModule * self;
11184 	ValaTypeSymbol* cl = NULL;
11185 	ValaSymbol* _tmp0_;
11186 	ValaSymbol* _tmp1_;
11187 	ValaTypeSymbol* _tmp2_;
11188 	ValaCCodeIdentifier* prop_array = NULL;
11189 	gchar* _tmp3_;
11190 	gchar* _tmp4_;
11191 	gchar* _tmp5_;
11192 	gchar* _tmp6_;
11193 	ValaCCodeIdentifier* _tmp7_;
11194 	ValaCCodeIdentifier* _tmp8_;
11195 	ValaCCodeIdentifier* prop_enum_value = NULL;
11196 	gchar* _tmp9_;
11197 	gchar* _tmp10_;
11198 	gchar* _tmp11_;
11199 	gchar* _tmp12_;
11200 	ValaCCodeIdentifier* _tmp13_;
11201 	ValaCCodeIdentifier* _tmp14_;
11202 	ValaCCodeElementAccess* _tmp15_;
11203 	ValaCCodeExpression* result = NULL;
11204 	self = (ValaGTypeModule*) base;
11205 	g_return_val_if_fail (prop != NULL, NULL);
11206 	_tmp0_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
11207 	_tmp1_ = _tmp0_;
11208 	_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
11209 	cl = _tmp2_;
11210 	_tmp3_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
11211 	_tmp4_ = _tmp3_;
11212 	_tmp5_ = g_strdup_printf ("%s_properties", _tmp4_);
11213 	_tmp6_ = _tmp5_;
11214 	_tmp7_ = vala_ccode_identifier_new (_tmp6_);
11215 	_tmp8_ = _tmp7_;
11216 	_g_free0 (_tmp6_);
11217 	_g_free0 (_tmp4_);
11218 	prop_array = _tmp8_;
11219 	_tmp9_ = vala_get_ccode_upper_case_name ((ValaSymbol*) prop, NULL);
11220 	_tmp10_ = _tmp9_;
11221 	_tmp11_ = g_strdup_printf ("%s_PROPERTY", _tmp10_);
11222 	_tmp12_ = _tmp11_;
11223 	_tmp13_ = vala_ccode_identifier_new (_tmp12_);
11224 	_tmp14_ = _tmp13_;
11225 	_g_free0 (_tmp12_);
11226 	_g_free0 (_tmp10_);
11227 	prop_enum_value = _tmp14_;
11228 	_tmp15_ = vala_ccode_element_access_new ((ValaCCodeExpression*) prop_array, (ValaCCodeExpression*) prop_enum_value);
11229 	result = (ValaCCodeExpression*) _tmp15_;
11230 	_vala_ccode_node_unref0 (prop_enum_value);
11231 	_vala_ccode_node_unref0 (prop_array);
11232 	_vala_code_node_unref0 (cl);
11233 	return result;
11234 }
11235 
11236 static ValaCCodeExpression*
vala_gtype_module_real_get_param_spec(ValaCCodeBaseModule * base,ValaProperty * prop)11237 vala_gtype_module_real_get_param_spec (ValaCCodeBaseModule* base,
11238                                        ValaProperty* prop)
11239 {
11240 	ValaGTypeModule * self;
11241 	ValaCCodeFunctionCall* cspec = NULL;
11242 	ValaCCodeFunctionCall* _tmp0_;
11243 	ValaCCodeFunctionCall* _tmp1_;
11244 	ValaCCodeConstant* _tmp2_;
11245 	ValaCCodeConstant* _tmp3_;
11246 	ValaCCodeFunctionCall* _tmp4_;
11247 	const gchar* _tmp5_;
11248 	const gchar* _tmp6_;
11249 	gchar* _tmp7_;
11250 	gchar* _tmp8_;
11251 	ValaCCodeConstant* _tmp9_;
11252 	ValaCCodeConstant* _tmp10_;
11253 	ValaCCodeFunctionCall* _tmp11_;
11254 	const gchar* _tmp12_;
11255 	const gchar* _tmp13_;
11256 	gchar* _tmp14_;
11257 	gchar* _tmp15_;
11258 	ValaCCodeConstant* _tmp16_;
11259 	ValaCCodeConstant* _tmp17_;
11260 	ValaTypeSymbol* type_symbol = NULL;
11261 	ValaDataType* _tmp18_;
11262 	ValaDataType* _tmp19_;
11263 	ValaTypeSymbol* _tmp20_;
11264 	ValaTypeSymbol* _tmp21_;
11265 	gboolean _tmp22_ = FALSE;
11266 	ValaTypeSymbol* _tmp23_;
11267 	gchar* pflags = NULL;
11268 	gchar* _tmp365_;
11269 	gboolean _tmp366_ = FALSE;
11270 	ValaPropertyAccessor* _tmp367_;
11271 	ValaPropertyAccessor* _tmp368_;
11272 	gboolean _tmp375_ = FALSE;
11273 	ValaPropertyAccessor* _tmp376_;
11274 	ValaPropertyAccessor* _tmp377_;
11275 	gboolean _tmp396_;
11276 	gboolean _tmp397_;
11277 	ValaVersionAttribute* _tmp400_;
11278 	ValaVersionAttribute* _tmp401_;
11279 	gboolean _tmp402_;
11280 	gboolean _tmp403_;
11281 	ValaCCodeFunctionCall* _tmp406_;
11282 	const gchar* _tmp407_;
11283 	ValaCCodeConstant* _tmp408_;
11284 	ValaCCodeConstant* _tmp409_;
11285 	ValaSymbol* _tmp410_;
11286 	ValaSymbol* _tmp411_;
11287 	ValaCCodeExpression* result = NULL;
11288 	self = (ValaGTypeModule*) base;
11289 	g_return_val_if_fail (prop != NULL, NULL);
11290 	_tmp0_ = vala_ccode_function_call_new (NULL);
11291 	cspec = _tmp0_;
11292 	_tmp1_ = cspec;
11293 	_tmp2_ = vala_ccode_base_module_get_property_canonical_cconstant ((ValaCCodeBaseModule*) self, prop);
11294 	_tmp3_ = _tmp2_;
11295 	vala_ccode_function_call_add_argument (_tmp1_, (ValaCCodeExpression*) _tmp3_);
11296 	_vala_ccode_node_unref0 (_tmp3_);
11297 	_tmp4_ = cspec;
11298 	_tmp5_ = vala_property_get_nick (prop);
11299 	_tmp6_ = _tmp5_;
11300 	_tmp7_ = g_strdup_printf ("\"%s\"", _tmp6_);
11301 	_tmp8_ = _tmp7_;
11302 	_tmp9_ = vala_ccode_constant_new (_tmp8_);
11303 	_tmp10_ = _tmp9_;
11304 	vala_ccode_function_call_add_argument (_tmp4_, (ValaCCodeExpression*) _tmp10_);
11305 	_vala_ccode_node_unref0 (_tmp10_);
11306 	_g_free0 (_tmp8_);
11307 	_tmp11_ = cspec;
11308 	_tmp12_ = vala_property_get_blurb (prop);
11309 	_tmp13_ = _tmp12_;
11310 	_tmp14_ = g_strdup_printf ("\"%s\"", _tmp13_);
11311 	_tmp15_ = _tmp14_;
11312 	_tmp16_ = vala_ccode_constant_new (_tmp15_);
11313 	_tmp17_ = _tmp16_;
11314 	vala_ccode_function_call_add_argument (_tmp11_, (ValaCCodeExpression*) _tmp17_);
11315 	_vala_ccode_node_unref0 (_tmp17_);
11316 	_g_free0 (_tmp15_);
11317 	_tmp18_ = vala_property_get_property_type (prop);
11318 	_tmp19_ = _tmp18_;
11319 	_tmp20_ = vala_data_type_get_type_symbol (_tmp19_);
11320 	_tmp21_ = _tmp20_;
11321 	type_symbol = _tmp21_;
11322 	_tmp23_ = type_symbol;
11323 	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp23_, VALA_TYPE_CLASS)) {
11324 		_tmp22_ = TRUE;
11325 	} else {
11326 		ValaTypeSymbol* _tmp24_;
11327 		_tmp24_ = type_symbol;
11328 		_tmp22_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp24_, VALA_TYPE_INTERFACE);
11329 	}
11330 	if (_tmp22_) {
11331 		gchar* param_spec_name = NULL;
11332 		ValaTypeSymbol* _tmp25_;
11333 		gchar* _tmp26_;
11334 		ValaCCodeFunctionCall* _tmp27_;
11335 		const gchar* _tmp28_;
11336 		ValaCCodeIdentifier* _tmp29_;
11337 		ValaCCodeIdentifier* _tmp30_;
11338 		const gchar* _tmp31_;
11339 		_tmp25_ = type_symbol;
11340 		_tmp26_ = vala_get_ccode_param_spec_function ((ValaCodeNode*) _tmp25_);
11341 		param_spec_name = _tmp26_;
11342 		_tmp27_ = cspec;
11343 		_tmp28_ = param_spec_name;
11344 		_tmp29_ = vala_ccode_identifier_new (_tmp28_);
11345 		_tmp30_ = _tmp29_;
11346 		vala_ccode_function_call_set_call (_tmp27_, (ValaCCodeExpression*) _tmp30_);
11347 		_vala_ccode_node_unref0 (_tmp30_);
11348 		_tmp31_ = param_spec_name;
11349 		if (g_strcmp0 (_tmp31_, "g_param_spec_string") == 0) {
11350 			ValaCCodeFunctionCall* _tmp32_;
11351 			ValaCCodeConstant* _tmp33_;
11352 			ValaCCodeConstant* _tmp34_;
11353 			_tmp32_ = cspec;
11354 			_tmp33_ = vala_ccode_constant_new ("NULL");
11355 			_tmp34_ = _tmp33_;
11356 			vala_ccode_function_call_add_argument (_tmp32_, (ValaCCodeExpression*) _tmp34_);
11357 			_vala_ccode_node_unref0 (_tmp34_);
11358 		} else {
11359 			const gchar* _tmp35_;
11360 			_tmp35_ = param_spec_name;
11361 			if (g_strcmp0 (_tmp35_, "g_param_spec_variant") == 0) {
11362 				ValaCCodeFunctionCall* _tmp36_;
11363 				ValaCCodeConstant* _tmp37_;
11364 				ValaCCodeConstant* _tmp38_;
11365 				ValaCCodeFunctionCall* _tmp39_;
11366 				ValaCCodeConstant* _tmp40_;
11367 				ValaCCodeConstant* _tmp41_;
11368 				_tmp36_ = cspec;
11369 				_tmp37_ = vala_ccode_constant_new ("G_VARIANT_TYPE_ANY");
11370 				_tmp38_ = _tmp37_;
11371 				vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp38_);
11372 				_vala_ccode_node_unref0 (_tmp38_);
11373 				_tmp39_ = cspec;
11374 				_tmp40_ = vala_ccode_constant_new ("NULL");
11375 				_tmp41_ = _tmp40_;
11376 				vala_ccode_function_call_add_argument (_tmp39_, (ValaCCodeExpression*) _tmp41_);
11377 				_vala_ccode_node_unref0 (_tmp41_);
11378 			} else {
11379 				const gchar* _tmp42_;
11380 				_tmp42_ = param_spec_name;
11381 				if (g_strcmp0 (_tmp42_, "gtk_param_spec_expression") == 0) {
11382 				} else {
11383 					ValaTypeSymbol* _tmp43_;
11384 					gchar* _tmp44_;
11385 					gchar* _tmp45_;
11386 					gboolean _tmp46_;
11387 					_tmp43_ = type_symbol;
11388 					_tmp44_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp43_);
11389 					_tmp45_ = _tmp44_;
11390 					_tmp46_ = g_strcmp0 (_tmp45_, "G_TYPE_POINTER") != 0;
11391 					_g_free0 (_tmp45_);
11392 					if (_tmp46_) {
11393 						ValaCCodeFunctionCall* _tmp47_;
11394 						ValaTypeSymbol* _tmp48_;
11395 						gchar* _tmp49_;
11396 						gchar* _tmp50_;
11397 						ValaCCodeIdentifier* _tmp51_;
11398 						ValaCCodeIdentifier* _tmp52_;
11399 						_tmp47_ = cspec;
11400 						_tmp48_ = type_symbol;
11401 						_tmp49_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp48_);
11402 						_tmp50_ = _tmp49_;
11403 						_tmp51_ = vala_ccode_identifier_new (_tmp50_);
11404 						_tmp52_ = _tmp51_;
11405 						vala_ccode_function_call_add_argument (_tmp47_, (ValaCCodeExpression*) _tmp52_);
11406 						_vala_ccode_node_unref0 (_tmp52_);
11407 						_g_free0 (_tmp50_);
11408 					}
11409 				}
11410 			}
11411 		}
11412 		_g_free0 (param_spec_name);
11413 	} else {
11414 		ValaTypeSymbol* _tmp53_;
11415 		_tmp53_ = type_symbol;
11416 		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp53_, VALA_TYPE_ENUM)) {
11417 			ValaEnum* e = NULL;
11418 			ValaTypeSymbol* _tmp54_;
11419 			ValaEnum* _tmp55_;
11420 			ValaExpression* _tmp92_;
11421 			ValaExpression* _tmp93_;
11422 			_tmp54_ = type_symbol;
11423 			e = G_TYPE_CHECK_INSTANCE_CAST (_tmp54_, VALA_TYPE_ENUM, ValaEnum);
11424 			_tmp55_ = e;
11425 			if (vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp55_)) {
11426 				ValaEnum* _tmp56_;
11427 				gboolean _tmp57_;
11428 				gboolean _tmp58_;
11429 				ValaCCodeFunctionCall* _tmp65_;
11430 				ValaEnum* _tmp66_;
11431 				gchar* _tmp67_;
11432 				gchar* _tmp68_;
11433 				ValaCCodeIdentifier* _tmp69_;
11434 				ValaCCodeIdentifier* _tmp70_;
11435 				_tmp56_ = e;
11436 				_tmp57_ = vala_enum_get_is_flags (_tmp56_);
11437 				_tmp58_ = _tmp57_;
11438 				if (_tmp58_) {
11439 					ValaCCodeFunctionCall* _tmp59_;
11440 					ValaCCodeIdentifier* _tmp60_;
11441 					ValaCCodeIdentifier* _tmp61_;
11442 					_tmp59_ = cspec;
11443 					_tmp60_ = vala_ccode_identifier_new ("g_param_spec_flags");
11444 					_tmp61_ = _tmp60_;
11445 					vala_ccode_function_call_set_call (_tmp59_, (ValaCCodeExpression*) _tmp61_);
11446 					_vala_ccode_node_unref0 (_tmp61_);
11447 				} else {
11448 					ValaCCodeFunctionCall* _tmp62_;
11449 					ValaCCodeIdentifier* _tmp63_;
11450 					ValaCCodeIdentifier* _tmp64_;
11451 					_tmp62_ = cspec;
11452 					_tmp63_ = vala_ccode_identifier_new ("g_param_spec_enum");
11453 					_tmp64_ = _tmp63_;
11454 					vala_ccode_function_call_set_call (_tmp62_, (ValaCCodeExpression*) _tmp64_);
11455 					_vala_ccode_node_unref0 (_tmp64_);
11456 				}
11457 				_tmp65_ = cspec;
11458 				_tmp66_ = e;
11459 				_tmp67_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp66_);
11460 				_tmp68_ = _tmp67_;
11461 				_tmp69_ = vala_ccode_identifier_new (_tmp68_);
11462 				_tmp70_ = _tmp69_;
11463 				vala_ccode_function_call_add_argument (_tmp65_, (ValaCCodeExpression*) _tmp70_);
11464 				_vala_ccode_node_unref0 (_tmp70_);
11465 				_g_free0 (_tmp68_);
11466 			} else {
11467 				ValaEnum* _tmp71_;
11468 				gboolean _tmp72_;
11469 				gboolean _tmp73_;
11470 				_tmp71_ = e;
11471 				_tmp72_ = vala_enum_get_is_flags (_tmp71_);
11472 				_tmp73_ = _tmp72_;
11473 				if (_tmp73_) {
11474 					ValaCCodeFunctionCall* _tmp74_;
11475 					ValaCCodeIdentifier* _tmp75_;
11476 					ValaCCodeIdentifier* _tmp76_;
11477 					ValaCCodeFunctionCall* _tmp77_;
11478 					ValaCCodeConstant* _tmp78_;
11479 					ValaCCodeConstant* _tmp79_;
11480 					ValaCCodeFunctionCall* _tmp80_;
11481 					ValaCCodeConstant* _tmp81_;
11482 					ValaCCodeConstant* _tmp82_;
11483 					_tmp74_ = cspec;
11484 					_tmp75_ = vala_ccode_identifier_new ("g_param_spec_uint");
11485 					_tmp76_ = _tmp75_;
11486 					vala_ccode_function_call_set_call (_tmp74_, (ValaCCodeExpression*) _tmp76_);
11487 					_vala_ccode_node_unref0 (_tmp76_);
11488 					_tmp77_ = cspec;
11489 					_tmp78_ = vala_ccode_constant_new ("0");
11490 					_tmp79_ = _tmp78_;
11491 					vala_ccode_function_call_add_argument (_tmp77_, (ValaCCodeExpression*) _tmp79_);
11492 					_vala_ccode_node_unref0 (_tmp79_);
11493 					_tmp80_ = cspec;
11494 					_tmp81_ = vala_ccode_constant_new ("G_MAXUINT");
11495 					_tmp82_ = _tmp81_;
11496 					vala_ccode_function_call_add_argument (_tmp80_, (ValaCCodeExpression*) _tmp82_);
11497 					_vala_ccode_node_unref0 (_tmp82_);
11498 				} else {
11499 					ValaCCodeFunctionCall* _tmp83_;
11500 					ValaCCodeIdentifier* _tmp84_;
11501 					ValaCCodeIdentifier* _tmp85_;
11502 					ValaCCodeFunctionCall* _tmp86_;
11503 					ValaCCodeConstant* _tmp87_;
11504 					ValaCCodeConstant* _tmp88_;
11505 					ValaCCodeFunctionCall* _tmp89_;
11506 					ValaCCodeConstant* _tmp90_;
11507 					ValaCCodeConstant* _tmp91_;
11508 					_tmp83_ = cspec;
11509 					_tmp84_ = vala_ccode_identifier_new ("g_param_spec_int");
11510 					_tmp85_ = _tmp84_;
11511 					vala_ccode_function_call_set_call (_tmp83_, (ValaCCodeExpression*) _tmp85_);
11512 					_vala_ccode_node_unref0 (_tmp85_);
11513 					_tmp86_ = cspec;
11514 					_tmp87_ = vala_ccode_constant_new ("G_MININT");
11515 					_tmp88_ = _tmp87_;
11516 					vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp88_);
11517 					_vala_ccode_node_unref0 (_tmp88_);
11518 					_tmp89_ = cspec;
11519 					_tmp90_ = vala_ccode_constant_new ("G_MAXINT");
11520 					_tmp91_ = _tmp90_;
11521 					vala_ccode_function_call_add_argument (_tmp89_, (ValaCCodeExpression*) _tmp91_);
11522 					_vala_ccode_node_unref0 (_tmp91_);
11523 				}
11524 			}
11525 			_tmp92_ = vala_property_get_initializer (prop);
11526 			_tmp93_ = _tmp92_;
11527 			if (_tmp93_ != NULL) {
11528 				ValaCCodeFunctionCall* _tmp94_;
11529 				ValaExpression* _tmp95_;
11530 				ValaExpression* _tmp96_;
11531 				ValaCCodeExpression* _tmp97_;
11532 				ValaCCodeExpression* _tmp98_;
11533 				_tmp94_ = cspec;
11534 				_tmp95_ = vala_property_get_initializer (prop);
11535 				_tmp96_ = _tmp95_;
11536 				_tmp97_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp96_);
11537 				_tmp98_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp97_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11538 				vala_ccode_function_call_add_argument (_tmp94_, _tmp98_);
11539 				_vala_ccode_node_unref0 (_tmp98_);
11540 			} else {
11541 				ValaCCodeFunctionCall* _tmp99_;
11542 				ValaTypeSymbol* _tmp100_;
11543 				gchar* _tmp101_;
11544 				gchar* _tmp102_;
11545 				ValaCCodeConstant* _tmp103_;
11546 				ValaCCodeConstant* _tmp104_;
11547 				_tmp99_ = cspec;
11548 				_tmp100_ = type_symbol;
11549 				_tmp101_ = vala_get_ccode_default_value (_tmp100_);
11550 				_tmp102_ = _tmp101_;
11551 				_tmp103_ = vala_ccode_constant_new (_tmp102_);
11552 				_tmp104_ = _tmp103_;
11553 				vala_ccode_function_call_add_argument (_tmp99_, (ValaCCodeExpression*) _tmp104_);
11554 				_vala_ccode_node_unref0 (_tmp104_);
11555 				_g_free0 (_tmp102_);
11556 			}
11557 		} else {
11558 			ValaTypeSymbol* _tmp105_;
11559 			_tmp105_ = type_symbol;
11560 			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp105_, VALA_TYPE_STRUCT)) {
11561 				ValaStruct* st = NULL;
11562 				ValaTypeSymbol* _tmp106_;
11563 				gchar* type_id = NULL;
11564 				ValaStruct* _tmp107_;
11565 				gchar* _tmp108_;
11566 				const gchar* _tmp109_;
11567 				_tmp106_ = type_symbol;
11568 				st = G_TYPE_CHECK_INSTANCE_CAST (_tmp106_, VALA_TYPE_STRUCT, ValaStruct);
11569 				_tmp107_ = st;
11570 				_tmp108_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp107_);
11571 				type_id = _tmp108_;
11572 				_tmp109_ = type_id;
11573 				if (g_strcmp0 (_tmp109_, "G_TYPE_INT") == 0) {
11574 					ValaCCodeFunctionCall* _tmp110_;
11575 					ValaCCodeIdentifier* _tmp111_;
11576 					ValaCCodeIdentifier* _tmp112_;
11577 					ValaCCodeFunctionCall* _tmp113_;
11578 					ValaCCodeConstant* _tmp114_;
11579 					ValaCCodeConstant* _tmp115_;
11580 					ValaCCodeFunctionCall* _tmp116_;
11581 					ValaCCodeConstant* _tmp117_;
11582 					ValaCCodeConstant* _tmp118_;
11583 					ValaExpression* _tmp119_;
11584 					ValaExpression* _tmp120_;
11585 					_tmp110_ = cspec;
11586 					_tmp111_ = vala_ccode_identifier_new ("g_param_spec_int");
11587 					_tmp112_ = _tmp111_;
11588 					vala_ccode_function_call_set_call (_tmp110_, (ValaCCodeExpression*) _tmp112_);
11589 					_vala_ccode_node_unref0 (_tmp112_);
11590 					_tmp113_ = cspec;
11591 					_tmp114_ = vala_ccode_constant_new ("G_MININT");
11592 					_tmp115_ = _tmp114_;
11593 					vala_ccode_function_call_add_argument (_tmp113_, (ValaCCodeExpression*) _tmp115_);
11594 					_vala_ccode_node_unref0 (_tmp115_);
11595 					_tmp116_ = cspec;
11596 					_tmp117_ = vala_ccode_constant_new ("G_MAXINT");
11597 					_tmp118_ = _tmp117_;
11598 					vala_ccode_function_call_add_argument (_tmp116_, (ValaCCodeExpression*) _tmp118_);
11599 					_vala_ccode_node_unref0 (_tmp118_);
11600 					_tmp119_ = vala_property_get_initializer (prop);
11601 					_tmp120_ = _tmp119_;
11602 					if (_tmp120_ != NULL) {
11603 						ValaCCodeFunctionCall* _tmp121_;
11604 						ValaExpression* _tmp122_;
11605 						ValaExpression* _tmp123_;
11606 						ValaCCodeExpression* _tmp124_;
11607 						ValaCCodeExpression* _tmp125_;
11608 						_tmp121_ = cspec;
11609 						_tmp122_ = vala_property_get_initializer (prop);
11610 						_tmp123_ = _tmp122_;
11611 						_tmp124_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp123_);
11612 						_tmp125_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp124_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11613 						vala_ccode_function_call_add_argument (_tmp121_, _tmp125_);
11614 						_vala_ccode_node_unref0 (_tmp125_);
11615 					} else {
11616 						ValaCCodeFunctionCall* _tmp126_;
11617 						ValaCCodeConstant* _tmp127_;
11618 						ValaCCodeConstant* _tmp128_;
11619 						_tmp126_ = cspec;
11620 						_tmp127_ = vala_ccode_constant_new ("0");
11621 						_tmp128_ = _tmp127_;
11622 						vala_ccode_function_call_add_argument (_tmp126_, (ValaCCodeExpression*) _tmp128_);
11623 						_vala_ccode_node_unref0 (_tmp128_);
11624 					}
11625 				} else {
11626 					const gchar* _tmp129_;
11627 					_tmp129_ = type_id;
11628 					if (g_strcmp0 (_tmp129_, "G_TYPE_UINT") == 0) {
11629 						ValaCCodeFunctionCall* _tmp130_;
11630 						ValaCCodeIdentifier* _tmp131_;
11631 						ValaCCodeIdentifier* _tmp132_;
11632 						ValaCCodeFunctionCall* _tmp133_;
11633 						ValaCCodeConstant* _tmp134_;
11634 						ValaCCodeConstant* _tmp135_;
11635 						ValaCCodeFunctionCall* _tmp136_;
11636 						ValaCCodeConstant* _tmp137_;
11637 						ValaCCodeConstant* _tmp138_;
11638 						ValaExpression* _tmp139_;
11639 						ValaExpression* _tmp140_;
11640 						_tmp130_ = cspec;
11641 						_tmp131_ = vala_ccode_identifier_new ("g_param_spec_uint");
11642 						_tmp132_ = _tmp131_;
11643 						vala_ccode_function_call_set_call (_tmp130_, (ValaCCodeExpression*) _tmp132_);
11644 						_vala_ccode_node_unref0 (_tmp132_);
11645 						_tmp133_ = cspec;
11646 						_tmp134_ = vala_ccode_constant_new ("0");
11647 						_tmp135_ = _tmp134_;
11648 						vala_ccode_function_call_add_argument (_tmp133_, (ValaCCodeExpression*) _tmp135_);
11649 						_vala_ccode_node_unref0 (_tmp135_);
11650 						_tmp136_ = cspec;
11651 						_tmp137_ = vala_ccode_constant_new ("G_MAXUINT");
11652 						_tmp138_ = _tmp137_;
11653 						vala_ccode_function_call_add_argument (_tmp136_, (ValaCCodeExpression*) _tmp138_);
11654 						_vala_ccode_node_unref0 (_tmp138_);
11655 						_tmp139_ = vala_property_get_initializer (prop);
11656 						_tmp140_ = _tmp139_;
11657 						if (_tmp140_ != NULL) {
11658 							ValaCCodeFunctionCall* _tmp141_;
11659 							ValaExpression* _tmp142_;
11660 							ValaExpression* _tmp143_;
11661 							ValaCCodeExpression* _tmp144_;
11662 							ValaCCodeExpression* _tmp145_;
11663 							_tmp141_ = cspec;
11664 							_tmp142_ = vala_property_get_initializer (prop);
11665 							_tmp143_ = _tmp142_;
11666 							_tmp144_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp143_);
11667 							_tmp145_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp144_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11668 							vala_ccode_function_call_add_argument (_tmp141_, _tmp145_);
11669 							_vala_ccode_node_unref0 (_tmp145_);
11670 						} else {
11671 							ValaCCodeFunctionCall* _tmp146_;
11672 							ValaCCodeConstant* _tmp147_;
11673 							ValaCCodeConstant* _tmp148_;
11674 							_tmp146_ = cspec;
11675 							_tmp147_ = vala_ccode_constant_new ("0U");
11676 							_tmp148_ = _tmp147_;
11677 							vala_ccode_function_call_add_argument (_tmp146_, (ValaCCodeExpression*) _tmp148_);
11678 							_vala_ccode_node_unref0 (_tmp148_);
11679 						}
11680 					} else {
11681 						const gchar* _tmp149_;
11682 						_tmp149_ = type_id;
11683 						if (g_strcmp0 (_tmp149_, "G_TYPE_INT64") == 0) {
11684 							ValaCCodeFunctionCall* _tmp150_;
11685 							ValaCCodeIdentifier* _tmp151_;
11686 							ValaCCodeIdentifier* _tmp152_;
11687 							ValaCCodeFunctionCall* _tmp153_;
11688 							ValaCCodeConstant* _tmp154_;
11689 							ValaCCodeConstant* _tmp155_;
11690 							ValaCCodeFunctionCall* _tmp156_;
11691 							ValaCCodeConstant* _tmp157_;
11692 							ValaCCodeConstant* _tmp158_;
11693 							ValaExpression* _tmp159_;
11694 							ValaExpression* _tmp160_;
11695 							_tmp150_ = cspec;
11696 							_tmp151_ = vala_ccode_identifier_new ("g_param_spec_int64");
11697 							_tmp152_ = _tmp151_;
11698 							vala_ccode_function_call_set_call (_tmp150_, (ValaCCodeExpression*) _tmp152_);
11699 							_vala_ccode_node_unref0 (_tmp152_);
11700 							_tmp153_ = cspec;
11701 							_tmp154_ = vala_ccode_constant_new ("G_MININT64");
11702 							_tmp155_ = _tmp154_;
11703 							vala_ccode_function_call_add_argument (_tmp153_, (ValaCCodeExpression*) _tmp155_);
11704 							_vala_ccode_node_unref0 (_tmp155_);
11705 							_tmp156_ = cspec;
11706 							_tmp157_ = vala_ccode_constant_new ("G_MAXINT64");
11707 							_tmp158_ = _tmp157_;
11708 							vala_ccode_function_call_add_argument (_tmp156_, (ValaCCodeExpression*) _tmp158_);
11709 							_vala_ccode_node_unref0 (_tmp158_);
11710 							_tmp159_ = vala_property_get_initializer (prop);
11711 							_tmp160_ = _tmp159_;
11712 							if (_tmp160_ != NULL) {
11713 								ValaCCodeFunctionCall* _tmp161_;
11714 								ValaExpression* _tmp162_;
11715 								ValaExpression* _tmp163_;
11716 								ValaCCodeExpression* _tmp164_;
11717 								ValaCCodeExpression* _tmp165_;
11718 								_tmp161_ = cspec;
11719 								_tmp162_ = vala_property_get_initializer (prop);
11720 								_tmp163_ = _tmp162_;
11721 								_tmp164_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp163_);
11722 								_tmp165_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp164_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11723 								vala_ccode_function_call_add_argument (_tmp161_, _tmp165_);
11724 								_vala_ccode_node_unref0 (_tmp165_);
11725 							} else {
11726 								ValaCCodeFunctionCall* _tmp166_;
11727 								ValaCCodeConstant* _tmp167_;
11728 								ValaCCodeConstant* _tmp168_;
11729 								_tmp166_ = cspec;
11730 								_tmp167_ = vala_ccode_constant_new ("0");
11731 								_tmp168_ = _tmp167_;
11732 								vala_ccode_function_call_add_argument (_tmp166_, (ValaCCodeExpression*) _tmp168_);
11733 								_vala_ccode_node_unref0 (_tmp168_);
11734 							}
11735 						} else {
11736 							const gchar* _tmp169_;
11737 							_tmp169_ = type_id;
11738 							if (g_strcmp0 (_tmp169_, "G_TYPE_UINT64") == 0) {
11739 								ValaCCodeFunctionCall* _tmp170_;
11740 								ValaCCodeIdentifier* _tmp171_;
11741 								ValaCCodeIdentifier* _tmp172_;
11742 								ValaCCodeFunctionCall* _tmp173_;
11743 								ValaCCodeConstant* _tmp174_;
11744 								ValaCCodeConstant* _tmp175_;
11745 								ValaCCodeFunctionCall* _tmp176_;
11746 								ValaCCodeConstant* _tmp177_;
11747 								ValaCCodeConstant* _tmp178_;
11748 								ValaExpression* _tmp179_;
11749 								ValaExpression* _tmp180_;
11750 								_tmp170_ = cspec;
11751 								_tmp171_ = vala_ccode_identifier_new ("g_param_spec_uint64");
11752 								_tmp172_ = _tmp171_;
11753 								vala_ccode_function_call_set_call (_tmp170_, (ValaCCodeExpression*) _tmp172_);
11754 								_vala_ccode_node_unref0 (_tmp172_);
11755 								_tmp173_ = cspec;
11756 								_tmp174_ = vala_ccode_constant_new ("0");
11757 								_tmp175_ = _tmp174_;
11758 								vala_ccode_function_call_add_argument (_tmp173_, (ValaCCodeExpression*) _tmp175_);
11759 								_vala_ccode_node_unref0 (_tmp175_);
11760 								_tmp176_ = cspec;
11761 								_tmp177_ = vala_ccode_constant_new ("G_MAXUINT64");
11762 								_tmp178_ = _tmp177_;
11763 								vala_ccode_function_call_add_argument (_tmp176_, (ValaCCodeExpression*) _tmp178_);
11764 								_vala_ccode_node_unref0 (_tmp178_);
11765 								_tmp179_ = vala_property_get_initializer (prop);
11766 								_tmp180_ = _tmp179_;
11767 								if (_tmp180_ != NULL) {
11768 									ValaCCodeFunctionCall* _tmp181_;
11769 									ValaExpression* _tmp182_;
11770 									ValaExpression* _tmp183_;
11771 									ValaCCodeExpression* _tmp184_;
11772 									ValaCCodeExpression* _tmp185_;
11773 									_tmp181_ = cspec;
11774 									_tmp182_ = vala_property_get_initializer (prop);
11775 									_tmp183_ = _tmp182_;
11776 									_tmp184_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp183_);
11777 									_tmp185_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp184_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11778 									vala_ccode_function_call_add_argument (_tmp181_, _tmp185_);
11779 									_vala_ccode_node_unref0 (_tmp185_);
11780 								} else {
11781 									ValaCCodeFunctionCall* _tmp186_;
11782 									ValaCCodeConstant* _tmp187_;
11783 									ValaCCodeConstant* _tmp188_;
11784 									_tmp186_ = cspec;
11785 									_tmp187_ = vala_ccode_constant_new ("0U");
11786 									_tmp188_ = _tmp187_;
11787 									vala_ccode_function_call_add_argument (_tmp186_, (ValaCCodeExpression*) _tmp188_);
11788 									_vala_ccode_node_unref0 (_tmp188_);
11789 								}
11790 							} else {
11791 								const gchar* _tmp189_;
11792 								_tmp189_ = type_id;
11793 								if (g_strcmp0 (_tmp189_, "G_TYPE_LONG") == 0) {
11794 									ValaCCodeFunctionCall* _tmp190_;
11795 									ValaCCodeIdentifier* _tmp191_;
11796 									ValaCCodeIdentifier* _tmp192_;
11797 									ValaCCodeFunctionCall* _tmp193_;
11798 									ValaCCodeConstant* _tmp194_;
11799 									ValaCCodeConstant* _tmp195_;
11800 									ValaCCodeFunctionCall* _tmp196_;
11801 									ValaCCodeConstant* _tmp197_;
11802 									ValaCCodeConstant* _tmp198_;
11803 									ValaExpression* _tmp199_;
11804 									ValaExpression* _tmp200_;
11805 									_tmp190_ = cspec;
11806 									_tmp191_ = vala_ccode_identifier_new ("g_param_spec_long");
11807 									_tmp192_ = _tmp191_;
11808 									vala_ccode_function_call_set_call (_tmp190_, (ValaCCodeExpression*) _tmp192_);
11809 									_vala_ccode_node_unref0 (_tmp192_);
11810 									_tmp193_ = cspec;
11811 									_tmp194_ = vala_ccode_constant_new ("G_MINLONG");
11812 									_tmp195_ = _tmp194_;
11813 									vala_ccode_function_call_add_argument (_tmp193_, (ValaCCodeExpression*) _tmp195_);
11814 									_vala_ccode_node_unref0 (_tmp195_);
11815 									_tmp196_ = cspec;
11816 									_tmp197_ = vala_ccode_constant_new ("G_MAXLONG");
11817 									_tmp198_ = _tmp197_;
11818 									vala_ccode_function_call_add_argument (_tmp196_, (ValaCCodeExpression*) _tmp198_);
11819 									_vala_ccode_node_unref0 (_tmp198_);
11820 									_tmp199_ = vala_property_get_initializer (prop);
11821 									_tmp200_ = _tmp199_;
11822 									if (_tmp200_ != NULL) {
11823 										ValaCCodeFunctionCall* _tmp201_;
11824 										ValaExpression* _tmp202_;
11825 										ValaExpression* _tmp203_;
11826 										ValaCCodeExpression* _tmp204_;
11827 										ValaCCodeExpression* _tmp205_;
11828 										_tmp201_ = cspec;
11829 										_tmp202_ = vala_property_get_initializer (prop);
11830 										_tmp203_ = _tmp202_;
11831 										_tmp204_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp203_);
11832 										_tmp205_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp204_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11833 										vala_ccode_function_call_add_argument (_tmp201_, _tmp205_);
11834 										_vala_ccode_node_unref0 (_tmp205_);
11835 									} else {
11836 										ValaCCodeFunctionCall* _tmp206_;
11837 										ValaCCodeConstant* _tmp207_;
11838 										ValaCCodeConstant* _tmp208_;
11839 										_tmp206_ = cspec;
11840 										_tmp207_ = vala_ccode_constant_new ("0L");
11841 										_tmp208_ = _tmp207_;
11842 										vala_ccode_function_call_add_argument (_tmp206_, (ValaCCodeExpression*) _tmp208_);
11843 										_vala_ccode_node_unref0 (_tmp208_);
11844 									}
11845 								} else {
11846 									const gchar* _tmp209_;
11847 									_tmp209_ = type_id;
11848 									if (g_strcmp0 (_tmp209_, "G_TYPE_ULONG") == 0) {
11849 										ValaCCodeFunctionCall* _tmp210_;
11850 										ValaCCodeIdentifier* _tmp211_;
11851 										ValaCCodeIdentifier* _tmp212_;
11852 										ValaCCodeFunctionCall* _tmp213_;
11853 										ValaCCodeConstant* _tmp214_;
11854 										ValaCCodeConstant* _tmp215_;
11855 										ValaCCodeFunctionCall* _tmp216_;
11856 										ValaCCodeConstant* _tmp217_;
11857 										ValaCCodeConstant* _tmp218_;
11858 										ValaExpression* _tmp219_;
11859 										ValaExpression* _tmp220_;
11860 										_tmp210_ = cspec;
11861 										_tmp211_ = vala_ccode_identifier_new ("g_param_spec_ulong");
11862 										_tmp212_ = _tmp211_;
11863 										vala_ccode_function_call_set_call (_tmp210_, (ValaCCodeExpression*) _tmp212_);
11864 										_vala_ccode_node_unref0 (_tmp212_);
11865 										_tmp213_ = cspec;
11866 										_tmp214_ = vala_ccode_constant_new ("0");
11867 										_tmp215_ = _tmp214_;
11868 										vala_ccode_function_call_add_argument (_tmp213_, (ValaCCodeExpression*) _tmp215_);
11869 										_vala_ccode_node_unref0 (_tmp215_);
11870 										_tmp216_ = cspec;
11871 										_tmp217_ = vala_ccode_constant_new ("G_MAXULONG");
11872 										_tmp218_ = _tmp217_;
11873 										vala_ccode_function_call_add_argument (_tmp216_, (ValaCCodeExpression*) _tmp218_);
11874 										_vala_ccode_node_unref0 (_tmp218_);
11875 										_tmp219_ = vala_property_get_initializer (prop);
11876 										_tmp220_ = _tmp219_;
11877 										if (_tmp220_ != NULL) {
11878 											ValaCCodeFunctionCall* _tmp221_;
11879 											ValaExpression* _tmp222_;
11880 											ValaExpression* _tmp223_;
11881 											ValaCCodeExpression* _tmp224_;
11882 											ValaCCodeExpression* _tmp225_;
11883 											_tmp221_ = cspec;
11884 											_tmp222_ = vala_property_get_initializer (prop);
11885 											_tmp223_ = _tmp222_;
11886 											_tmp224_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp223_);
11887 											_tmp225_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp224_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11888 											vala_ccode_function_call_add_argument (_tmp221_, _tmp225_);
11889 											_vala_ccode_node_unref0 (_tmp225_);
11890 										} else {
11891 											ValaCCodeFunctionCall* _tmp226_;
11892 											ValaCCodeConstant* _tmp227_;
11893 											ValaCCodeConstant* _tmp228_;
11894 											_tmp226_ = cspec;
11895 											_tmp227_ = vala_ccode_constant_new ("0UL");
11896 											_tmp228_ = _tmp227_;
11897 											vala_ccode_function_call_add_argument (_tmp226_, (ValaCCodeExpression*) _tmp228_);
11898 											_vala_ccode_node_unref0 (_tmp228_);
11899 										}
11900 									} else {
11901 										const gchar* _tmp229_;
11902 										_tmp229_ = type_id;
11903 										if (g_strcmp0 (_tmp229_, "G_TYPE_BOOLEAN") == 0) {
11904 											ValaCCodeFunctionCall* _tmp230_;
11905 											ValaCCodeIdentifier* _tmp231_;
11906 											ValaCCodeIdentifier* _tmp232_;
11907 											ValaExpression* _tmp233_;
11908 											ValaExpression* _tmp234_;
11909 											_tmp230_ = cspec;
11910 											_tmp231_ = vala_ccode_identifier_new ("g_param_spec_boolean");
11911 											_tmp232_ = _tmp231_;
11912 											vala_ccode_function_call_set_call (_tmp230_, (ValaCCodeExpression*) _tmp232_);
11913 											_vala_ccode_node_unref0 (_tmp232_);
11914 											_tmp233_ = vala_property_get_initializer (prop);
11915 											_tmp234_ = _tmp233_;
11916 											if (_tmp234_ != NULL) {
11917 												ValaCCodeFunctionCall* _tmp235_;
11918 												ValaExpression* _tmp236_;
11919 												ValaExpression* _tmp237_;
11920 												ValaCCodeExpression* _tmp238_;
11921 												ValaCCodeExpression* _tmp239_;
11922 												_tmp235_ = cspec;
11923 												_tmp236_ = vala_property_get_initializer (prop);
11924 												_tmp237_ = _tmp236_;
11925 												_tmp238_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp237_);
11926 												_tmp239_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp238_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11927 												vala_ccode_function_call_add_argument (_tmp235_, _tmp239_);
11928 												_vala_ccode_node_unref0 (_tmp239_);
11929 											} else {
11930 												ValaCCodeFunctionCall* _tmp240_;
11931 												ValaCCodeConstant* _tmp241_;
11932 												ValaCCodeConstant* _tmp242_;
11933 												_tmp240_ = cspec;
11934 												_tmp241_ = vala_ccode_constant_new ("FALSE");
11935 												_tmp242_ = _tmp241_;
11936 												vala_ccode_function_call_add_argument (_tmp240_, (ValaCCodeExpression*) _tmp242_);
11937 												_vala_ccode_node_unref0 (_tmp242_);
11938 											}
11939 										} else {
11940 											const gchar* _tmp243_;
11941 											_tmp243_ = type_id;
11942 											if (g_strcmp0 (_tmp243_, "G_TYPE_CHAR") == 0) {
11943 												ValaCCodeFunctionCall* _tmp244_;
11944 												ValaCCodeIdentifier* _tmp245_;
11945 												ValaCCodeIdentifier* _tmp246_;
11946 												ValaCCodeFunctionCall* _tmp247_;
11947 												ValaCCodeConstant* _tmp248_;
11948 												ValaCCodeConstant* _tmp249_;
11949 												ValaCCodeFunctionCall* _tmp250_;
11950 												ValaCCodeConstant* _tmp251_;
11951 												ValaCCodeConstant* _tmp252_;
11952 												ValaExpression* _tmp253_;
11953 												ValaExpression* _tmp254_;
11954 												_tmp244_ = cspec;
11955 												_tmp245_ = vala_ccode_identifier_new ("g_param_spec_char");
11956 												_tmp246_ = _tmp245_;
11957 												vala_ccode_function_call_set_call (_tmp244_, (ValaCCodeExpression*) _tmp246_);
11958 												_vala_ccode_node_unref0 (_tmp246_);
11959 												_tmp247_ = cspec;
11960 												_tmp248_ = vala_ccode_constant_new ("G_MININT8");
11961 												_tmp249_ = _tmp248_;
11962 												vala_ccode_function_call_add_argument (_tmp247_, (ValaCCodeExpression*) _tmp249_);
11963 												_vala_ccode_node_unref0 (_tmp249_);
11964 												_tmp250_ = cspec;
11965 												_tmp251_ = vala_ccode_constant_new ("G_MAXINT8");
11966 												_tmp252_ = _tmp251_;
11967 												vala_ccode_function_call_add_argument (_tmp250_, (ValaCCodeExpression*) _tmp252_);
11968 												_vala_ccode_node_unref0 (_tmp252_);
11969 												_tmp253_ = vala_property_get_initializer (prop);
11970 												_tmp254_ = _tmp253_;
11971 												if (_tmp254_ != NULL) {
11972 													ValaCCodeFunctionCall* _tmp255_;
11973 													ValaExpression* _tmp256_;
11974 													ValaExpression* _tmp257_;
11975 													ValaCCodeExpression* _tmp258_;
11976 													ValaCCodeExpression* _tmp259_;
11977 													_tmp255_ = cspec;
11978 													_tmp256_ = vala_property_get_initializer (prop);
11979 													_tmp257_ = _tmp256_;
11980 													_tmp258_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp257_);
11981 													_tmp259_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp258_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11982 													vala_ccode_function_call_add_argument (_tmp255_, _tmp259_);
11983 													_vala_ccode_node_unref0 (_tmp259_);
11984 												} else {
11985 													ValaCCodeFunctionCall* _tmp260_;
11986 													ValaCCodeConstant* _tmp261_;
11987 													ValaCCodeConstant* _tmp262_;
11988 													_tmp260_ = cspec;
11989 													_tmp261_ = vala_ccode_constant_new ("0");
11990 													_tmp262_ = _tmp261_;
11991 													vala_ccode_function_call_add_argument (_tmp260_, (ValaCCodeExpression*) _tmp262_);
11992 													_vala_ccode_node_unref0 (_tmp262_);
11993 												}
11994 											} else {
11995 												const gchar* _tmp263_;
11996 												_tmp263_ = type_id;
11997 												if (g_strcmp0 (_tmp263_, "G_TYPE_UCHAR") == 0) {
11998 													ValaCCodeFunctionCall* _tmp264_;
11999 													ValaCCodeIdentifier* _tmp265_;
12000 													ValaCCodeIdentifier* _tmp266_;
12001 													ValaCCodeFunctionCall* _tmp267_;
12002 													ValaCCodeConstant* _tmp268_;
12003 													ValaCCodeConstant* _tmp269_;
12004 													ValaCCodeFunctionCall* _tmp270_;
12005 													ValaCCodeConstant* _tmp271_;
12006 													ValaCCodeConstant* _tmp272_;
12007 													ValaExpression* _tmp273_;
12008 													ValaExpression* _tmp274_;
12009 													_tmp264_ = cspec;
12010 													_tmp265_ = vala_ccode_identifier_new ("g_param_spec_uchar");
12011 													_tmp266_ = _tmp265_;
12012 													vala_ccode_function_call_set_call (_tmp264_, (ValaCCodeExpression*) _tmp266_);
12013 													_vala_ccode_node_unref0 (_tmp266_);
12014 													_tmp267_ = cspec;
12015 													_tmp268_ = vala_ccode_constant_new ("0");
12016 													_tmp269_ = _tmp268_;
12017 													vala_ccode_function_call_add_argument (_tmp267_, (ValaCCodeExpression*) _tmp269_);
12018 													_vala_ccode_node_unref0 (_tmp269_);
12019 													_tmp270_ = cspec;
12020 													_tmp271_ = vala_ccode_constant_new ("G_MAXUINT8");
12021 													_tmp272_ = _tmp271_;
12022 													vala_ccode_function_call_add_argument (_tmp270_, (ValaCCodeExpression*) _tmp272_);
12023 													_vala_ccode_node_unref0 (_tmp272_);
12024 													_tmp273_ = vala_property_get_initializer (prop);
12025 													_tmp274_ = _tmp273_;
12026 													if (_tmp274_ != NULL) {
12027 														ValaCCodeFunctionCall* _tmp275_;
12028 														ValaExpression* _tmp276_;
12029 														ValaExpression* _tmp277_;
12030 														ValaCCodeExpression* _tmp278_;
12031 														ValaCCodeExpression* _tmp279_;
12032 														_tmp275_ = cspec;
12033 														_tmp276_ = vala_property_get_initializer (prop);
12034 														_tmp277_ = _tmp276_;
12035 														_tmp278_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp277_);
12036 														_tmp279_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp278_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
12037 														vala_ccode_function_call_add_argument (_tmp275_, _tmp279_);
12038 														_vala_ccode_node_unref0 (_tmp279_);
12039 													} else {
12040 														ValaCCodeFunctionCall* _tmp280_;
12041 														ValaCCodeConstant* _tmp281_;
12042 														ValaCCodeConstant* _tmp282_;
12043 														_tmp280_ = cspec;
12044 														_tmp281_ = vala_ccode_constant_new ("0");
12045 														_tmp282_ = _tmp281_;
12046 														vala_ccode_function_call_add_argument (_tmp280_, (ValaCCodeExpression*) _tmp282_);
12047 														_vala_ccode_node_unref0 (_tmp282_);
12048 													}
12049 												} else {
12050 													const gchar* _tmp283_;
12051 													_tmp283_ = type_id;
12052 													if (g_strcmp0 (_tmp283_, "G_TYPE_FLOAT") == 0) {
12053 														ValaCCodeFunctionCall* _tmp284_;
12054 														ValaCCodeIdentifier* _tmp285_;
12055 														ValaCCodeIdentifier* _tmp286_;
12056 														ValaCCodeFunctionCall* _tmp287_;
12057 														ValaCCodeConstant* _tmp288_;
12058 														ValaCCodeConstant* _tmp289_;
12059 														ValaCCodeFunctionCall* _tmp290_;
12060 														ValaCCodeConstant* _tmp291_;
12061 														ValaCCodeConstant* _tmp292_;
12062 														ValaExpression* _tmp293_;
12063 														ValaExpression* _tmp294_;
12064 														_tmp284_ = cspec;
12065 														_tmp285_ = vala_ccode_identifier_new ("g_param_spec_float");
12066 														_tmp286_ = _tmp285_;
12067 														vala_ccode_function_call_set_call (_tmp284_, (ValaCCodeExpression*) _tmp286_);
12068 														_vala_ccode_node_unref0 (_tmp286_);
12069 														_tmp287_ = cspec;
12070 														_tmp288_ = vala_ccode_constant_new ("-G_MAXFLOAT");
12071 														_tmp289_ = _tmp288_;
12072 														vala_ccode_function_call_add_argument (_tmp287_, (ValaCCodeExpression*) _tmp289_);
12073 														_vala_ccode_node_unref0 (_tmp289_);
12074 														_tmp290_ = cspec;
12075 														_tmp291_ = vala_ccode_constant_new ("G_MAXFLOAT");
12076 														_tmp292_ = _tmp291_;
12077 														vala_ccode_function_call_add_argument (_tmp290_, (ValaCCodeExpression*) _tmp292_);
12078 														_vala_ccode_node_unref0 (_tmp292_);
12079 														_tmp293_ = vala_property_get_initializer (prop);
12080 														_tmp294_ = _tmp293_;
12081 														if (_tmp294_ != NULL) {
12082 															ValaCCodeFunctionCall* _tmp295_;
12083 															ValaExpression* _tmp296_;
12084 															ValaExpression* _tmp297_;
12085 															ValaCCodeExpression* _tmp298_;
12086 															ValaCCodeExpression* _tmp299_;
12087 															_tmp295_ = cspec;
12088 															_tmp296_ = vala_property_get_initializer (prop);
12089 															_tmp297_ = _tmp296_;
12090 															_tmp298_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp297_);
12091 															_tmp299_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp298_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
12092 															vala_ccode_function_call_add_argument (_tmp295_, _tmp299_);
12093 															_vala_ccode_node_unref0 (_tmp299_);
12094 														} else {
12095 															ValaCCodeFunctionCall* _tmp300_;
12096 															ValaCCodeConstant* _tmp301_;
12097 															ValaCCodeConstant* _tmp302_;
12098 															_tmp300_ = cspec;
12099 															_tmp301_ = vala_ccode_constant_new ("0.0F");
12100 															_tmp302_ = _tmp301_;
12101 															vala_ccode_function_call_add_argument (_tmp300_, (ValaCCodeExpression*) _tmp302_);
12102 															_vala_ccode_node_unref0 (_tmp302_);
12103 														}
12104 													} else {
12105 														const gchar* _tmp303_;
12106 														_tmp303_ = type_id;
12107 														if (g_strcmp0 (_tmp303_, "G_TYPE_DOUBLE") == 0) {
12108 															ValaCCodeFunctionCall* _tmp304_;
12109 															ValaCCodeIdentifier* _tmp305_;
12110 															ValaCCodeIdentifier* _tmp306_;
12111 															ValaCCodeFunctionCall* _tmp307_;
12112 															ValaCCodeConstant* _tmp308_;
12113 															ValaCCodeConstant* _tmp309_;
12114 															ValaCCodeFunctionCall* _tmp310_;
12115 															ValaCCodeConstant* _tmp311_;
12116 															ValaCCodeConstant* _tmp312_;
12117 															ValaExpression* _tmp313_;
12118 															ValaExpression* _tmp314_;
12119 															_tmp304_ = cspec;
12120 															_tmp305_ = vala_ccode_identifier_new ("g_param_spec_double");
12121 															_tmp306_ = _tmp305_;
12122 															vala_ccode_function_call_set_call (_tmp304_, (ValaCCodeExpression*) _tmp306_);
12123 															_vala_ccode_node_unref0 (_tmp306_);
12124 															_tmp307_ = cspec;
12125 															_tmp308_ = vala_ccode_constant_new ("-G_MAXDOUBLE");
12126 															_tmp309_ = _tmp308_;
12127 															vala_ccode_function_call_add_argument (_tmp307_, (ValaCCodeExpression*) _tmp309_);
12128 															_vala_ccode_node_unref0 (_tmp309_);
12129 															_tmp310_ = cspec;
12130 															_tmp311_ = vala_ccode_constant_new ("G_MAXDOUBLE");
12131 															_tmp312_ = _tmp311_;
12132 															vala_ccode_function_call_add_argument (_tmp310_, (ValaCCodeExpression*) _tmp312_);
12133 															_vala_ccode_node_unref0 (_tmp312_);
12134 															_tmp313_ = vala_property_get_initializer (prop);
12135 															_tmp314_ = _tmp313_;
12136 															if (_tmp314_ != NULL) {
12137 																ValaCCodeFunctionCall* _tmp315_;
12138 																ValaExpression* _tmp316_;
12139 																ValaExpression* _tmp317_;
12140 																ValaCCodeExpression* _tmp318_;
12141 																ValaCCodeExpression* _tmp319_;
12142 																_tmp315_ = cspec;
12143 																_tmp316_ = vala_property_get_initializer (prop);
12144 																_tmp317_ = _tmp316_;
12145 																_tmp318_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp317_);
12146 																_tmp319_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp318_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
12147 																vala_ccode_function_call_add_argument (_tmp315_, _tmp319_);
12148 																_vala_ccode_node_unref0 (_tmp319_);
12149 															} else {
12150 																ValaCCodeFunctionCall* _tmp320_;
12151 																ValaCCodeConstant* _tmp321_;
12152 																ValaCCodeConstant* _tmp322_;
12153 																_tmp320_ = cspec;
12154 																_tmp321_ = vala_ccode_constant_new ("0.0");
12155 																_tmp322_ = _tmp321_;
12156 																vala_ccode_function_call_add_argument (_tmp320_, (ValaCCodeExpression*) _tmp322_);
12157 																_vala_ccode_node_unref0 (_tmp322_);
12158 															}
12159 														} else {
12160 															const gchar* _tmp323_;
12161 															_tmp323_ = type_id;
12162 															if (g_strcmp0 (_tmp323_, "G_TYPE_GTYPE") == 0) {
12163 																ValaCCodeFunctionCall* _tmp324_;
12164 																ValaCCodeIdentifier* _tmp325_;
12165 																ValaCCodeIdentifier* _tmp326_;
12166 																ValaExpression* _tmp327_;
12167 																ValaExpression* _tmp328_;
12168 																_tmp324_ = cspec;
12169 																_tmp325_ = vala_ccode_identifier_new ("g_param_spec_gtype");
12170 																_tmp326_ = _tmp325_;
12171 																vala_ccode_function_call_set_call (_tmp324_, (ValaCCodeExpression*) _tmp326_);
12172 																_vala_ccode_node_unref0 (_tmp326_);
12173 																_tmp327_ = vala_property_get_initializer (prop);
12174 																_tmp328_ = _tmp327_;
12175 																if (_tmp328_ != NULL) {
12176 																	ValaCCodeFunctionCall* _tmp329_;
12177 																	ValaExpression* _tmp330_;
12178 																	ValaExpression* _tmp331_;
12179 																	ValaCCodeExpression* _tmp332_;
12180 																	ValaCCodeExpression* _tmp333_;
12181 																	_tmp329_ = cspec;
12182 																	_tmp330_ = vala_property_get_initializer (prop);
12183 																	_tmp331_ = _tmp330_;
12184 																	_tmp332_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp331_);
12185 																	_tmp333_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp332_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
12186 																	vala_ccode_function_call_add_argument (_tmp329_, _tmp333_);
12187 																	_vala_ccode_node_unref0 (_tmp333_);
12188 																} else {
12189 																	ValaCCodeFunctionCall* _tmp334_;
12190 																	ValaCCodeConstant* _tmp335_;
12191 																	ValaCCodeConstant* _tmp336_;
12192 																	_tmp334_ = cspec;
12193 																	_tmp335_ = vala_ccode_constant_new ("G_TYPE_NONE");
12194 																	_tmp336_ = _tmp335_;
12195 																	vala_ccode_function_call_add_argument (_tmp334_, (ValaCCodeExpression*) _tmp336_);
12196 																	_vala_ccode_node_unref0 (_tmp336_);
12197 																}
12198 															} else {
12199 																ValaCCodeFunctionCall* _tmp337_;
12200 																ValaCCodeIdentifier* _tmp338_;
12201 																ValaCCodeIdentifier* _tmp339_;
12202 																ValaCCodeFunctionCall* _tmp340_;
12203 																const gchar* _tmp341_;
12204 																ValaCCodeIdentifier* _tmp342_;
12205 																ValaCCodeIdentifier* _tmp343_;
12206 																_tmp337_ = cspec;
12207 																_tmp338_ = vala_ccode_identifier_new ("g_param_spec_boxed");
12208 																_tmp339_ = _tmp338_;
12209 																vala_ccode_function_call_set_call (_tmp337_, (ValaCCodeExpression*) _tmp339_);
12210 																_vala_ccode_node_unref0 (_tmp339_);
12211 																_tmp340_ = cspec;
12212 																_tmp341_ = type_id;
12213 																_tmp342_ = vala_ccode_identifier_new (_tmp341_);
12214 																_tmp343_ = _tmp342_;
12215 																vala_ccode_function_call_add_argument (_tmp340_, (ValaCCodeExpression*) _tmp343_);
12216 																_vala_ccode_node_unref0 (_tmp343_);
12217 															}
12218 														}
12219 													}
12220 												}
12221 											}
12222 										}
12223 									}
12224 								}
12225 							}
12226 						}
12227 					}
12228 				}
12229 				_g_free0 (type_id);
12230 			} else {
12231 				gboolean _tmp344_ = FALSE;
12232 				ValaDataType* _tmp345_;
12233 				ValaDataType* _tmp346_;
12234 				_tmp345_ = vala_property_get_property_type (prop);
12235 				_tmp346_ = _tmp345_;
12236 				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp346_, VALA_TYPE_ARRAY_TYPE)) {
12237 					ValaDataType* _tmp347_;
12238 					ValaDataType* _tmp348_;
12239 					ValaDataType* _tmp349_;
12240 					ValaDataType* _tmp350_;
12241 					ValaTypeSymbol* _tmp351_;
12242 					ValaTypeSymbol* _tmp352_;
12243 					ValaDataType* _tmp353_;
12244 					ValaTypeSymbol* _tmp354_;
12245 					ValaTypeSymbol* _tmp355_;
12246 					_tmp347_ = vala_property_get_property_type (prop);
12247 					_tmp348_ = _tmp347_;
12248 					_tmp349_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp348_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
12249 					_tmp350_ = _tmp349_;
12250 					_tmp351_ = vala_data_type_get_type_symbol (_tmp350_);
12251 					_tmp352_ = _tmp351_;
12252 					_tmp353_ = ((ValaCCodeBaseModule*) self)->string_type;
12253 					_tmp354_ = vala_data_type_get_type_symbol (_tmp353_);
12254 					_tmp355_ = _tmp354_;
12255 					_tmp344_ = _tmp352_ == _tmp355_;
12256 				} else {
12257 					_tmp344_ = FALSE;
12258 				}
12259 				if (_tmp344_) {
12260 					ValaCCodeFunctionCall* _tmp356_;
12261 					ValaCCodeIdentifier* _tmp357_;
12262 					ValaCCodeIdentifier* _tmp358_;
12263 					ValaCCodeFunctionCall* _tmp359_;
12264 					ValaCCodeIdentifier* _tmp360_;
12265 					ValaCCodeIdentifier* _tmp361_;
12266 					_tmp356_ = cspec;
12267 					_tmp357_ = vala_ccode_identifier_new ("g_param_spec_boxed");
12268 					_tmp358_ = _tmp357_;
12269 					vala_ccode_function_call_set_call (_tmp356_, (ValaCCodeExpression*) _tmp358_);
12270 					_vala_ccode_node_unref0 (_tmp358_);
12271 					_tmp359_ = cspec;
12272 					_tmp360_ = vala_ccode_identifier_new ("G_TYPE_STRV");
12273 					_tmp361_ = _tmp360_;
12274 					vala_ccode_function_call_add_argument (_tmp359_, (ValaCCodeExpression*) _tmp361_);
12275 					_vala_ccode_node_unref0 (_tmp361_);
12276 				} else {
12277 					ValaCCodeFunctionCall* _tmp362_;
12278 					ValaCCodeIdentifier* _tmp363_;
12279 					ValaCCodeIdentifier* _tmp364_;
12280 					_tmp362_ = cspec;
12281 					_tmp363_ = vala_ccode_identifier_new ("g_param_spec_pointer");
12282 					_tmp364_ = _tmp363_;
12283 					vala_ccode_function_call_set_call (_tmp362_, (ValaCCodeExpression*) _tmp364_);
12284 					_vala_ccode_node_unref0 (_tmp364_);
12285 				}
12286 			}
12287 		}
12288 	}
12289 	_tmp365_ = g_strdup ("G_PARAM_STATIC_STRINGS");
12290 	pflags = _tmp365_;
12291 	_tmp367_ = vala_property_get_get_accessor (prop);
12292 	_tmp368_ = _tmp367_;
12293 	if (_tmp368_ != NULL) {
12294 		ValaPropertyAccessor* _tmp369_;
12295 		ValaPropertyAccessor* _tmp370_;
12296 		ValaSymbolAccessibility _tmp371_;
12297 		ValaSymbolAccessibility _tmp372_;
12298 		_tmp369_ = vala_property_get_get_accessor (prop);
12299 		_tmp370_ = _tmp369_;
12300 		_tmp371_ = vala_symbol_get_access ((ValaSymbol*) _tmp370_);
12301 		_tmp372_ = _tmp371_;
12302 		_tmp366_ = _tmp372_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
12303 	} else {
12304 		_tmp366_ = FALSE;
12305 	}
12306 	if (_tmp366_) {
12307 		const gchar* _tmp373_;
12308 		gchar* _tmp374_;
12309 		_tmp373_ = pflags;
12310 		_tmp374_ = g_strdup_printf ("%s%s", _tmp373_, " | G_PARAM_READABLE");
12311 		_g_free0 (pflags);
12312 		pflags = _tmp374_;
12313 	}
12314 	_tmp376_ = vala_property_get_set_accessor (prop);
12315 	_tmp377_ = _tmp376_;
12316 	if (_tmp377_ != NULL) {
12317 		ValaPropertyAccessor* _tmp378_;
12318 		ValaPropertyAccessor* _tmp379_;
12319 		ValaSymbolAccessibility _tmp380_;
12320 		ValaSymbolAccessibility _tmp381_;
12321 		_tmp378_ = vala_property_get_set_accessor (prop);
12322 		_tmp379_ = _tmp378_;
12323 		_tmp380_ = vala_symbol_get_access ((ValaSymbol*) _tmp379_);
12324 		_tmp381_ = _tmp380_;
12325 		_tmp375_ = _tmp381_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
12326 	} else {
12327 		_tmp375_ = FALSE;
12328 	}
12329 	if (_tmp375_) {
12330 		const gchar* _tmp382_;
12331 		gchar* _tmp383_;
12332 		ValaPropertyAccessor* _tmp384_;
12333 		ValaPropertyAccessor* _tmp385_;
12334 		gboolean _tmp386_;
12335 		gboolean _tmp387_;
12336 		_tmp382_ = pflags;
12337 		_tmp383_ = g_strdup_printf ("%s%s", _tmp382_, " | G_PARAM_WRITABLE");
12338 		_g_free0 (pflags);
12339 		pflags = _tmp383_;
12340 		_tmp384_ = vala_property_get_set_accessor (prop);
12341 		_tmp385_ = _tmp384_;
12342 		_tmp386_ = vala_property_accessor_get_construction (_tmp385_);
12343 		_tmp387_ = _tmp386_;
12344 		if (_tmp387_) {
12345 			ValaPropertyAccessor* _tmp388_;
12346 			ValaPropertyAccessor* _tmp389_;
12347 			gboolean _tmp390_;
12348 			gboolean _tmp391_;
12349 			_tmp388_ = vala_property_get_set_accessor (prop);
12350 			_tmp389_ = _tmp388_;
12351 			_tmp390_ = vala_property_accessor_get_writable (_tmp389_);
12352 			_tmp391_ = _tmp390_;
12353 			if (_tmp391_) {
12354 				const gchar* _tmp392_;
12355 				gchar* _tmp393_;
12356 				_tmp392_ = pflags;
12357 				_tmp393_ = g_strdup_printf ("%s%s", _tmp392_, " | G_PARAM_CONSTRUCT");
12358 				_g_free0 (pflags);
12359 				pflags = _tmp393_;
12360 			} else {
12361 				const gchar* _tmp394_;
12362 				gchar* _tmp395_;
12363 				_tmp394_ = pflags;
12364 				_tmp395_ = g_strdup_printf ("%s%s", _tmp394_, " | G_PARAM_CONSTRUCT_ONLY");
12365 				_g_free0 (pflags);
12366 				pflags = _tmp395_;
12367 			}
12368 		}
12369 	}
12370 	_tmp396_ = vala_property_get_notify (prop);
12371 	_tmp397_ = _tmp396_;
12372 	if (!_tmp397_) {
12373 		const gchar* _tmp398_;
12374 		gchar* _tmp399_;
12375 		_tmp398_ = pflags;
12376 		_tmp399_ = g_strdup_printf ("%s%s", _tmp398_, " | G_PARAM_EXPLICIT_NOTIFY");
12377 		_g_free0 (pflags);
12378 		pflags = _tmp399_;
12379 	}
12380 	_tmp400_ = vala_symbol_get_version ((ValaSymbol*) prop);
12381 	_tmp401_ = _tmp400_;
12382 	_tmp402_ = vala_version_attribute_get_deprecated (_tmp401_);
12383 	_tmp403_ = _tmp402_;
12384 	if (_tmp403_) {
12385 		const gchar* _tmp404_;
12386 		gchar* _tmp405_;
12387 		_tmp404_ = pflags;
12388 		_tmp405_ = g_strdup_printf ("%s%s", _tmp404_, " | G_PARAM_DEPRECATED");
12389 		_g_free0 (pflags);
12390 		pflags = _tmp405_;
12391 	}
12392 	_tmp406_ = cspec;
12393 	_tmp407_ = pflags;
12394 	_tmp408_ = vala_ccode_constant_new (_tmp407_);
12395 	_tmp409_ = _tmp408_;
12396 	vala_ccode_function_call_add_argument (_tmp406_, (ValaCCodeExpression*) _tmp409_);
12397 	_vala_ccode_node_unref0 (_tmp409_);
12398 	_tmp410_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
12399 	_tmp411_ = _tmp410_;
12400 	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp411_, VALA_TYPE_INTERFACE)) {
12401 		result = (ValaCCodeExpression*) cspec;
12402 		_g_free0 (pflags);
12403 		return result;
12404 	} else {
12405 		ValaCCodeExpression* _tmp412_;
12406 		ValaCCodeExpression* _tmp413_;
12407 		ValaCCodeFunctionCall* _tmp414_;
12408 		ValaCCodeAssignment* _tmp415_;
12409 		ValaCCodeExpression* _tmp416_;
12410 		_tmp412_ = vala_ccode_base_module_get_param_spec_cexpression ((ValaCCodeBaseModule*) self, prop);
12411 		_tmp413_ = _tmp412_;
12412 		_tmp414_ = cspec;
12413 		_tmp415_ = vala_ccode_assignment_new (_tmp413_, (ValaCCodeExpression*) _tmp414_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
12414 		_tmp416_ = (ValaCCodeExpression*) _tmp415_;
12415 		_vala_ccode_node_unref0 (_tmp413_);
12416 		result = _tmp416_;
12417 		_g_free0 (pflags);
12418 		_vala_ccode_node_unref0 (cspec);
12419 		return result;
12420 	}
12421 	_g_free0 (pflags);
12422 	_vala_ccode_node_unref0 (cspec);
12423 }
12424 
12425 static void
vala_gtype_module_real_generate_interface_declaration(ValaCCodeBaseModule * base,ValaInterface * iface,ValaCCodeFile * decl_space)12426 vala_gtype_module_real_generate_interface_declaration (ValaCCodeBaseModule* base,
12427                                                        ValaInterface* iface,
12428                                                        ValaCCodeFile* decl_space)
12429 {
12430 	ValaGTypeModule * self;
12431 	gchar* _tmp0_;
12432 	gchar* _tmp1_;
12433 	gboolean _tmp2_;
12434 	ValaCCodeStruct* instance_struct = NULL;
12435 	gchar* _tmp3_;
12436 	gchar* _tmp4_;
12437 	gchar* _tmp5_;
12438 	gchar* _tmp6_;
12439 	ValaCCodeStruct* _tmp7_;
12440 	ValaCCodeStruct* _tmp8_;
12441 	ValaCCodeStruct* type_struct = NULL;
12442 	gchar* _tmp9_;
12443 	gchar* _tmp10_;
12444 	gchar* _tmp11_;
12445 	gchar* _tmp12_;
12446 	ValaCCodeStruct* _tmp13_;
12447 	ValaCCodeStruct* _tmp14_;
12448 	ValaCCodeNewline* _tmp15_;
12449 	ValaCCodeNewline* _tmp16_;
12450 	gchar* macro = NULL;
12451 	gchar* _tmp17_;
12452 	gchar* _tmp18_;
12453 	gchar* _tmp19_;
12454 	gchar* _tmp20_;
12455 	gchar* _tmp21_;
12456 	gchar* _tmp22_;
12457 	const gchar* _tmp23_;
12458 	ValaCCodeMacroReplacement* _tmp24_;
12459 	ValaCCodeMacroReplacement* _tmp25_;
12460 	gchar* _tmp26_;
12461 	gchar* _tmp27_;
12462 	gchar* _tmp28_;
12463 	gchar* _tmp29_;
12464 	gchar* _tmp30_;
12465 	gchar* _tmp31_;
12466 	gchar* _tmp32_;
12467 	gchar* _tmp33_;
12468 	gchar* _tmp34_;
12469 	const gchar* _tmp35_;
12470 	ValaCCodeMacroReplacement* _tmp36_;
12471 	ValaCCodeMacroReplacement* _tmp37_;
12472 	gchar* _tmp38_;
12473 	gchar* _tmp39_;
12474 	gchar* _tmp40_;
12475 	gchar* _tmp41_;
12476 	gchar* _tmp42_;
12477 	gchar* _tmp43_;
12478 	gchar* _tmp44_;
12479 	const gchar* _tmp45_;
12480 	ValaCCodeMacroReplacement* _tmp46_;
12481 	ValaCCodeMacroReplacement* _tmp47_;
12482 	gchar* _tmp48_;
12483 	gchar* _tmp49_;
12484 	gchar* _tmp50_;
12485 	gchar* _tmp51_;
12486 	gchar* _tmp52_;
12487 	gchar* _tmp53_;
12488 	gchar* _tmp54_;
12489 	gchar* _tmp55_;
12490 	gchar* _tmp56_;
12491 	const gchar* _tmp57_;
12492 	ValaCCodeMacroReplacement* _tmp58_;
12493 	ValaCCodeMacroReplacement* _tmp59_;
12494 	ValaCCodeNewline* _tmp60_;
12495 	ValaCCodeNewline* _tmp61_;
12496 	gchar* _tmp62_;
12497 	gchar* _tmp63_;
12498 	gchar* _tmp64_;
12499 	gchar* _tmp65_;
12500 	gchar* _tmp66_;
12501 	gchar* _tmp67_;
12502 	ValaCCodeVariableDeclarator* _tmp68_;
12503 	ValaCCodeVariableDeclarator* _tmp69_;
12504 	ValaCCodeTypeDefinition* _tmp70_;
12505 	ValaCCodeTypeDefinition* _tmp71_;
12506 	ValaCCodeStruct* _tmp72_;
12507 	const gchar* _tmp73_;
12508 	const gchar* _tmp74_;
12509 	gchar* _tmp75_;
12510 	gchar* _tmp76_;
12511 	gchar* _tmp77_;
12512 	gchar* _tmp78_;
12513 	ValaCCodeVariableDeclarator* _tmp79_;
12514 	ValaCCodeVariableDeclarator* _tmp80_;
12515 	ValaCCodeTypeDefinition* _tmp81_;
12516 	ValaCCodeTypeDefinition* _tmp82_;
12517 	ValaCCodeStruct* _tmp102_;
12518 	ValaAttribute* _tmp103_;
12519 	gboolean has_struct_member = FALSE;
12520 	ValaCCodeStruct* _tmp207_;
12521 	ValaInterfaceRegisterFunction* type_fun = NULL;
12522 	ValaInterfaceRegisterFunction* _tmp208_;
12523 	ValaInterfaceRegisterFunction* _tmp209_;
12524 	ValaCodeContext* _tmp210_;
12525 	ValaCodeContext* _tmp211_;
12526 	ValaInterfaceRegisterFunction* _tmp212_;
12527 	ValaCCodeFragment* _tmp213_;
12528 	ValaCCodeFragment* _tmp214_;
12529 	self = (ValaGTypeModule*) base;
12530 	g_return_if_fail (iface != NULL);
12531 	g_return_if_fail (decl_space != NULL);
12532 	_tmp0_ = vala_get_ccode_name ((ValaCodeNode*) iface);
12533 	_tmp1_ = _tmp0_;
12534 	_tmp2_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) iface, _tmp1_);
12535 	_g_free0 (_tmp1_);
12536 	if (_tmp2_) {
12537 		return;
12538 	}
12539 	vala_ccode_file_add_include (decl_space, "glib-object.h", FALSE);
12540 	_tmp3_ = vala_get_ccode_name ((ValaCodeNode*) iface);
12541 	_tmp4_ = _tmp3_;
12542 	_tmp5_ = g_strdup_printf ("_%s", _tmp4_);
12543 	_tmp6_ = _tmp5_;
12544 	_tmp7_ = vala_ccode_struct_new (_tmp6_);
12545 	_tmp8_ = _tmp7_;
12546 	_g_free0 (_tmp6_);
12547 	_g_free0 (_tmp4_);
12548 	instance_struct = _tmp8_;
12549 	_tmp9_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
12550 	_tmp10_ = _tmp9_;
12551 	_tmp11_ = g_strdup_printf ("_%s", _tmp10_);
12552 	_tmp12_ = _tmp11_;
12553 	_tmp13_ = vala_ccode_struct_new (_tmp12_);
12554 	_tmp14_ = _tmp13_;
12555 	_g_free0 (_tmp12_);
12556 	_g_free0 (_tmp10_);
12557 	type_struct = _tmp14_;
12558 	_tmp15_ = vala_ccode_newline_new ();
12559 	_tmp16_ = _tmp15_;
12560 	vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp16_);
12561 	_vala_ccode_node_unref0 (_tmp16_);
12562 	_tmp17_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
12563 	_tmp18_ = _tmp17_;
12564 	_tmp19_ = g_strdup_printf ("(%s_get_type ())", _tmp18_);
12565 	_tmp20_ = _tmp19_;
12566 	_g_free0 (_tmp18_);
12567 	macro = _tmp20_;
12568 	_tmp21_ = vala_get_ccode_type_id ((ValaCodeNode*) iface);
12569 	_tmp22_ = _tmp21_;
12570 	_tmp23_ = macro;
12571 	_tmp24_ = vala_ccode_macro_replacement_new (_tmp22_, _tmp23_);
12572 	_tmp25_ = _tmp24_;
12573 	vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp25_);
12574 	_vala_ccode_node_unref0 (_tmp25_);
12575 	_g_free0 (_tmp22_);
12576 	_tmp26_ = vala_get_ccode_type_id ((ValaCodeNode*) iface);
12577 	_tmp27_ = _tmp26_;
12578 	_tmp28_ = vala_get_ccode_name ((ValaCodeNode*) iface);
12579 	_tmp29_ = _tmp28_;
12580 	_tmp30_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_CAST ((obj), %s, %s))", _tmp27_, _tmp29_);
12581 	_g_free0 (macro);
12582 	macro = _tmp30_;
12583 	_g_free0 (_tmp29_);
12584 	_g_free0 (_tmp27_);
12585 	_tmp31_ = vala_get_ccode_type_cast_function ((ValaObjectTypeSymbol*) iface);
12586 	_tmp32_ = _tmp31_;
12587 	_tmp33_ = g_strdup_printf ("%s(obj)", _tmp32_);
12588 	_tmp34_ = _tmp33_;
12589 	_tmp35_ = macro;
12590 	_tmp36_ = vala_ccode_macro_replacement_new (_tmp34_, _tmp35_);
12591 	_tmp37_ = _tmp36_;
12592 	vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp37_);
12593 	_vala_ccode_node_unref0 (_tmp37_);
12594 	_g_free0 (_tmp34_);
12595 	_g_free0 (_tmp32_);
12596 	_tmp38_ = vala_get_ccode_type_id ((ValaCodeNode*) iface);
12597 	_tmp39_ = _tmp38_;
12598 	_tmp40_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))", _tmp39_);
12599 	_g_free0 (macro);
12600 	macro = _tmp40_;
12601 	_g_free0 (_tmp39_);
12602 	_tmp41_ = vala_get_ccode_type_check_function ((ValaTypeSymbol*) iface);
12603 	_tmp42_ = _tmp41_;
12604 	_tmp43_ = g_strdup_printf ("%s(obj)", _tmp42_);
12605 	_tmp44_ = _tmp43_;
12606 	_tmp45_ = macro;
12607 	_tmp46_ = vala_ccode_macro_replacement_new (_tmp44_, _tmp45_);
12608 	_tmp47_ = _tmp46_;
12609 	vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp47_);
12610 	_vala_ccode_node_unref0 (_tmp47_);
12611 	_g_free0 (_tmp44_);
12612 	_g_free0 (_tmp42_);
12613 	_tmp48_ = vala_get_ccode_type_id ((ValaCodeNode*) iface);
12614 	_tmp49_ = _tmp48_;
12615 	_tmp50_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
12616 	_tmp51_ = _tmp50_;
12617 	_tmp52_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_INTERFACE ((obj), %s, %s))", _tmp49_, _tmp51_);
12618 	_g_free0 (macro);
12619 	macro = _tmp52_;
12620 	_g_free0 (_tmp51_);
12621 	_g_free0 (_tmp49_);
12622 	_tmp53_ = vala_get_ccode_type_get_function ((ValaObjectTypeSymbol*) iface);
12623 	_tmp54_ = _tmp53_;
12624 	_tmp55_ = g_strdup_printf ("%s(obj)", _tmp54_);
12625 	_tmp56_ = _tmp55_;
12626 	_tmp57_ = macro;
12627 	_tmp58_ = vala_ccode_macro_replacement_new (_tmp56_, _tmp57_);
12628 	_tmp59_ = _tmp58_;
12629 	vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp59_);
12630 	_vala_ccode_node_unref0 (_tmp59_);
12631 	_g_free0 (_tmp56_);
12632 	_g_free0 (_tmp54_);
12633 	_tmp60_ = vala_ccode_newline_new ();
12634 	_tmp61_ = _tmp60_;
12635 	vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp61_);
12636 	_vala_ccode_node_unref0 (_tmp61_);
12637 	_tmp62_ = vala_get_ccode_name ((ValaCodeNode*) iface);
12638 	_tmp63_ = _tmp62_;
12639 	_tmp64_ = g_strdup_printf ("struct _%s", _tmp63_);
12640 	_tmp65_ = _tmp64_;
12641 	_tmp66_ = vala_get_ccode_name ((ValaCodeNode*) iface);
12642 	_tmp67_ = _tmp66_;
12643 	_tmp68_ = vala_ccode_variable_declarator_new (_tmp67_, NULL, NULL);
12644 	_tmp69_ = _tmp68_;
12645 	_tmp70_ = vala_ccode_type_definition_new (_tmp65_, (ValaCCodeDeclarator*) _tmp69_);
12646 	_tmp71_ = _tmp70_;
12647 	vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp71_);
12648 	_vala_ccode_node_unref0 (_tmp71_);
12649 	_vala_ccode_node_unref0 (_tmp69_);
12650 	_g_free0 (_tmp67_);
12651 	_g_free0 (_tmp65_);
12652 	_g_free0 (_tmp63_);
12653 	_tmp72_ = type_struct;
12654 	_tmp73_ = vala_ccode_struct_get_name (_tmp72_);
12655 	_tmp74_ = _tmp73_;
12656 	_tmp75_ = g_strdup_printf ("struct %s", _tmp74_);
12657 	_tmp76_ = _tmp75_;
12658 	_tmp77_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
12659 	_tmp78_ = _tmp77_;
12660 	_tmp79_ = vala_ccode_variable_declarator_new (_tmp78_, NULL, NULL);
12661 	_tmp80_ = _tmp79_;
12662 	_tmp81_ = vala_ccode_type_definition_new (_tmp76_, (ValaCCodeDeclarator*) _tmp80_);
12663 	_tmp82_ = _tmp81_;
12664 	vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp82_);
12665 	_vala_ccode_node_unref0 (_tmp82_);
12666 	_vala_ccode_node_unref0 (_tmp80_);
12667 	_g_free0 (_tmp78_);
12668 	_g_free0 (_tmp76_);
12669 	{
12670 		ValaList* _prerequisite_list = NULL;
12671 		ValaList* _tmp83_;
12672 		ValaList* _tmp84_;
12673 		gint _prerequisite_size = 0;
12674 		ValaList* _tmp85_;
12675 		gint _tmp86_;
12676 		gint _tmp87_;
12677 		gint _prerequisite_index = 0;
12678 		_tmp83_ = vala_interface_get_prerequisites (iface);
12679 		_tmp84_ = _vala_iterable_ref0 (_tmp83_);
12680 		_prerequisite_list = _tmp84_;
12681 		_tmp85_ = _prerequisite_list;
12682 		_tmp86_ = vala_collection_get_size ((ValaCollection*) _tmp85_);
12683 		_tmp87_ = _tmp86_;
12684 		_prerequisite_size = _tmp87_;
12685 		_prerequisite_index = -1;
12686 		while (TRUE) {
12687 			gint _tmp88_;
12688 			gint _tmp89_;
12689 			ValaDataType* prerequisite = NULL;
12690 			ValaList* _tmp90_;
12691 			gpointer _tmp91_;
12692 			ValaClass* prereq_cl = NULL;
12693 			ValaDataType* _tmp92_;
12694 			ValaTypeSymbol* _tmp93_;
12695 			ValaTypeSymbol* _tmp94_;
12696 			ValaInterface* prereq_iface = NULL;
12697 			ValaDataType* _tmp95_;
12698 			ValaTypeSymbol* _tmp96_;
12699 			ValaTypeSymbol* _tmp97_;
12700 			ValaClass* _tmp98_;
12701 			_prerequisite_index = _prerequisite_index + 1;
12702 			_tmp88_ = _prerequisite_index;
12703 			_tmp89_ = _prerequisite_size;
12704 			if (!(_tmp88_ < _tmp89_)) {
12705 				break;
12706 			}
12707 			_tmp90_ = _prerequisite_list;
12708 			_tmp91_ = vala_list_get (_tmp90_, _prerequisite_index);
12709 			prerequisite = (ValaDataType*) _tmp91_;
12710 			_tmp92_ = prerequisite;
12711 			_tmp93_ = vala_data_type_get_type_symbol (_tmp92_);
12712 			_tmp94_ = _tmp93_;
12713 			prereq_cl = G_TYPE_CHECK_INSTANCE_TYPE (_tmp94_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp94_) : NULL;
12714 			_tmp95_ = prerequisite;
12715 			_tmp96_ = vala_data_type_get_type_symbol (_tmp95_);
12716 			_tmp97_ = _tmp96_;
12717 			prereq_iface = G_TYPE_CHECK_INSTANCE_TYPE (_tmp97_, VALA_TYPE_INTERFACE) ? ((ValaInterface*) _tmp97_) : NULL;
12718 			_tmp98_ = prereq_cl;
12719 			if (_tmp98_ != NULL) {
12720 				ValaClass* _tmp99_;
12721 				_tmp99_ = prereq_cl;
12722 				vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, _tmp99_, decl_space);
12723 			} else {
12724 				ValaInterface* _tmp100_;
12725 				_tmp100_ = prereq_iface;
12726 				if (_tmp100_ != NULL) {
12727 					ValaInterface* _tmp101_;
12728 					_tmp101_ = prereq_iface;
12729 					vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp101_, decl_space);
12730 				}
12731 			}
12732 			_vala_code_node_unref0 (prerequisite);
12733 		}
12734 		_vala_iterable_unref0 (_prerequisite_list);
12735 	}
12736 	_tmp102_ = type_struct;
12737 	vala_ccode_struct_add_field (_tmp102_, "GTypeInterface", "parent_iface", 0, NULL);
12738 	_tmp103_ = vala_code_node_get_attribute ((ValaCodeNode*) iface, "GenericAccessors");
12739 	if (_tmp103_ != NULL) {
12740 		{
12741 			ValaList* _p_list = NULL;
12742 			ValaList* _tmp104_;
12743 			ValaList* _tmp105_;
12744 			gint _p_size = 0;
12745 			ValaList* _tmp106_;
12746 			gint _tmp107_;
12747 			gint _tmp108_;
12748 			gint _p_index = 0;
12749 			_tmp104_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) iface);
12750 			_tmp105_ = _vala_iterable_ref0 (_tmp104_);
12751 			_p_list = _tmp105_;
12752 			_tmp106_ = _p_list;
12753 			_tmp107_ = vala_collection_get_size ((ValaCollection*) _tmp106_);
12754 			_tmp108_ = _tmp107_;
12755 			_p_size = _tmp108_;
12756 			_p_index = -1;
12757 			while (TRUE) {
12758 				gint _tmp109_;
12759 				gint _tmp110_;
12760 				ValaTypeParameter* p = NULL;
12761 				ValaList* _tmp111_;
12762 				gpointer _tmp112_;
12763 				gchar* method_name = NULL;
12764 				ValaTypeParameter* _tmp113_;
12765 				const gchar* _tmp114_;
12766 				const gchar* _tmp115_;
12767 				gchar* _tmp116_;
12768 				gchar* _tmp117_;
12769 				gchar* _tmp118_;
12770 				gchar* _tmp119_;
12771 				ValaCCodeFunctionDeclarator* vdeclarator = NULL;
12772 				const gchar* _tmp120_;
12773 				ValaCCodeFunctionDeclarator* _tmp121_;
12774 				ValaDataType* this_type = NULL;
12775 				ValaDataType* _tmp122_;
12776 				ValaCCodeFunctionDeclarator* _tmp123_;
12777 				ValaDataType* _tmp124_;
12778 				gchar* _tmp125_;
12779 				gchar* _tmp126_;
12780 				ValaCCodeParameter* _tmp127_;
12781 				ValaCCodeParameter* _tmp128_;
12782 				ValaCCodeDeclaration* vdecl = NULL;
12783 				ValaCCodeDeclaration* _tmp129_;
12784 				ValaCCodeDeclaration* _tmp130_;
12785 				ValaCCodeFunctionDeclarator* _tmp131_;
12786 				ValaCCodeStruct* _tmp132_;
12787 				ValaCCodeDeclaration* _tmp133_;
12788 				ValaTypeParameter* _tmp134_;
12789 				const gchar* _tmp135_;
12790 				const gchar* _tmp136_;
12791 				gchar* _tmp137_;
12792 				gchar* _tmp138_;
12793 				gchar* _tmp139_;
12794 				const gchar* _tmp140_;
12795 				ValaCCodeFunctionDeclarator* _tmp141_;
12796 				ValaDataType* _tmp142_;
12797 				ValaCCodeFunctionDeclarator* _tmp143_;
12798 				ValaDataType* _tmp144_;
12799 				gchar* _tmp145_;
12800 				gchar* _tmp146_;
12801 				ValaCCodeParameter* _tmp147_;
12802 				ValaCCodeParameter* _tmp148_;
12803 				ValaCCodeDeclaration* _tmp149_;
12804 				ValaCCodeDeclaration* _tmp150_;
12805 				ValaCCodeFunctionDeclarator* _tmp151_;
12806 				ValaCCodeStruct* _tmp152_;
12807 				ValaCCodeDeclaration* _tmp153_;
12808 				ValaTypeParameter* _tmp154_;
12809 				const gchar* _tmp155_;
12810 				const gchar* _tmp156_;
12811 				gchar* _tmp157_;
12812 				gchar* _tmp158_;
12813 				gchar* _tmp159_;
12814 				const gchar* _tmp160_;
12815 				ValaCCodeFunctionDeclarator* _tmp161_;
12816 				ValaDataType* _tmp162_;
12817 				ValaCCodeFunctionDeclarator* _tmp163_;
12818 				ValaDataType* _tmp164_;
12819 				gchar* _tmp165_;
12820 				gchar* _tmp166_;
12821 				ValaCCodeParameter* _tmp167_;
12822 				ValaCCodeParameter* _tmp168_;
12823 				ValaCCodeDeclaration* _tmp169_;
12824 				ValaCCodeDeclaration* _tmp170_;
12825 				ValaCCodeFunctionDeclarator* _tmp171_;
12826 				ValaCCodeStruct* _tmp172_;
12827 				ValaCCodeDeclaration* _tmp173_;
12828 				_p_index = _p_index + 1;
12829 				_tmp109_ = _p_index;
12830 				_tmp110_ = _p_size;
12831 				if (!(_tmp109_ < _tmp110_)) {
12832 					break;
12833 				}
12834 				_tmp111_ = _p_list;
12835 				_tmp112_ = vala_list_get (_tmp111_, _p_index);
12836 				p = (ValaTypeParameter*) _tmp112_;
12837 				_tmp113_ = p;
12838 				_tmp114_ = vala_symbol_get_name ((ValaSymbol*) _tmp113_);
12839 				_tmp115_ = _tmp114_;
12840 				_tmp116_ = g_ascii_strdown (_tmp115_, (gssize) -1);
12841 				_tmp117_ = _tmp116_;
12842 				_tmp118_ = g_strdup_printf ("get_%s_type", _tmp117_);
12843 				_tmp119_ = _tmp118_;
12844 				_g_free0 (_tmp117_);
12845 				method_name = _tmp119_;
12846 				_tmp120_ = method_name;
12847 				_tmp121_ = vala_ccode_function_declarator_new (_tmp120_);
12848 				vdeclarator = _tmp121_;
12849 				_tmp122_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaSymbol*) iface);
12850 				this_type = _tmp122_;
12851 				_tmp123_ = vdeclarator;
12852 				_tmp124_ = this_type;
12853 				_tmp125_ = vala_get_ccode_name ((ValaCodeNode*) _tmp124_);
12854 				_tmp126_ = _tmp125_;
12855 				_tmp127_ = vala_ccode_parameter_new ("self", _tmp126_);
12856 				_tmp128_ = _tmp127_;
12857 				vala_ccode_function_declarator_add_parameter (_tmp123_, _tmp128_);
12858 				_vala_ccode_node_unref0 (_tmp128_);
12859 				_g_free0 (_tmp126_);
12860 				_tmp129_ = vala_ccode_declaration_new ("GType");
12861 				vdecl = _tmp129_;
12862 				_tmp130_ = vdecl;
12863 				_tmp131_ = vdeclarator;
12864 				vala_ccode_declaration_add_declarator (_tmp130_, (ValaCCodeDeclarator*) _tmp131_);
12865 				_tmp132_ = type_struct;
12866 				_tmp133_ = vdecl;
12867 				vala_ccode_struct_add_declaration (_tmp132_, _tmp133_);
12868 				_tmp134_ = p;
12869 				_tmp135_ = vala_symbol_get_name ((ValaSymbol*) _tmp134_);
12870 				_tmp136_ = _tmp135_;
12871 				_tmp137_ = g_ascii_strdown (_tmp136_, (gssize) -1);
12872 				_tmp138_ = _tmp137_;
12873 				_tmp139_ = g_strdup_printf ("get_%s_dup_func", _tmp138_);
12874 				_g_free0 (method_name);
12875 				method_name = _tmp139_;
12876 				_g_free0 (_tmp138_);
12877 				_tmp140_ = method_name;
12878 				_tmp141_ = vala_ccode_function_declarator_new (_tmp140_);
12879 				_vala_ccode_node_unref0 (vdeclarator);
12880 				vdeclarator = _tmp141_;
12881 				_tmp142_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaSymbol*) iface);
12882 				_vala_code_node_unref0 (this_type);
12883 				this_type = _tmp142_;
12884 				_tmp143_ = vdeclarator;
12885 				_tmp144_ = this_type;
12886 				_tmp145_ = vala_get_ccode_name ((ValaCodeNode*) _tmp144_);
12887 				_tmp146_ = _tmp145_;
12888 				_tmp147_ = vala_ccode_parameter_new ("self", _tmp146_);
12889 				_tmp148_ = _tmp147_;
12890 				vala_ccode_function_declarator_add_parameter (_tmp143_, _tmp148_);
12891 				_vala_ccode_node_unref0 (_tmp148_);
12892 				_g_free0 (_tmp146_);
12893 				_tmp149_ = vala_ccode_declaration_new ("GBoxedCopyFunc");
12894 				_vala_ccode_node_unref0 (vdecl);
12895 				vdecl = _tmp149_;
12896 				_tmp150_ = vdecl;
12897 				_tmp151_ = vdeclarator;
12898 				vala_ccode_declaration_add_declarator (_tmp150_, (ValaCCodeDeclarator*) _tmp151_);
12899 				_tmp152_ = type_struct;
12900 				_tmp153_ = vdecl;
12901 				vala_ccode_struct_add_declaration (_tmp152_, _tmp153_);
12902 				_tmp154_ = p;
12903 				_tmp155_ = vala_symbol_get_name ((ValaSymbol*) _tmp154_);
12904 				_tmp156_ = _tmp155_;
12905 				_tmp157_ = g_ascii_strdown (_tmp156_, (gssize) -1);
12906 				_tmp158_ = _tmp157_;
12907 				_tmp159_ = g_strdup_printf ("get_%s_destroy_func", _tmp158_);
12908 				_g_free0 (method_name);
12909 				method_name = _tmp159_;
12910 				_g_free0 (_tmp158_);
12911 				_tmp160_ = method_name;
12912 				_tmp161_ = vala_ccode_function_declarator_new (_tmp160_);
12913 				_vala_ccode_node_unref0 (vdeclarator);
12914 				vdeclarator = _tmp161_;
12915 				_tmp162_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaSymbol*) iface);
12916 				_vala_code_node_unref0 (this_type);
12917 				this_type = _tmp162_;
12918 				_tmp163_ = vdeclarator;
12919 				_tmp164_ = this_type;
12920 				_tmp165_ = vala_get_ccode_name ((ValaCodeNode*) _tmp164_);
12921 				_tmp166_ = _tmp165_;
12922 				_tmp167_ = vala_ccode_parameter_new ("self", _tmp166_);
12923 				_tmp168_ = _tmp167_;
12924 				vala_ccode_function_declarator_add_parameter (_tmp163_, _tmp168_);
12925 				_vala_ccode_node_unref0 (_tmp168_);
12926 				_g_free0 (_tmp166_);
12927 				_tmp169_ = vala_ccode_declaration_new ("GDestroyNotify");
12928 				_vala_ccode_node_unref0 (vdecl);
12929 				vdecl = _tmp169_;
12930 				_tmp170_ = vdecl;
12931 				_tmp171_ = vdeclarator;
12932 				vala_ccode_declaration_add_declarator (_tmp170_, (ValaCCodeDeclarator*) _tmp171_);
12933 				_tmp172_ = type_struct;
12934 				_tmp173_ = vdecl;
12935 				vala_ccode_struct_add_declaration (_tmp172_, _tmp173_);
12936 				_vala_ccode_node_unref0 (vdecl);
12937 				_vala_code_node_unref0 (this_type);
12938 				_vala_ccode_node_unref0 (vdeclarator);
12939 				_g_free0 (method_name);
12940 				_vala_code_node_unref0 (p);
12941 			}
12942 			_vala_iterable_unref0 (_p_list);
12943 		}
12944 	}
12945 	has_struct_member = FALSE;
12946 	{
12947 		ValaList* _sym_list = NULL;
12948 		ValaList* _tmp174_;
12949 		gint _sym_size = 0;
12950 		ValaList* _tmp175_;
12951 		gint _tmp176_;
12952 		gint _tmp177_;
12953 		gint _sym_index = 0;
12954 		_tmp174_ = vala_interface_get_virtuals (iface);
12955 		_sym_list = _tmp174_;
12956 		_tmp175_ = _sym_list;
12957 		_tmp176_ = vala_collection_get_size ((ValaCollection*) _tmp175_);
12958 		_tmp177_ = _tmp176_;
12959 		_sym_size = _tmp177_;
12960 		_sym_index = -1;
12961 		while (TRUE) {
12962 			gint _tmp178_;
12963 			gint _tmp179_;
12964 			ValaSymbol* sym = NULL;
12965 			ValaList* _tmp180_;
12966 			gpointer _tmp181_;
12967 			ValaMethod* m = NULL;
12968 			ValaSignal* sig = NULL;
12969 			ValaProperty* prop = NULL;
12970 			ValaSymbol* _tmp182_;
12971 			ValaMethod* _tmp183_;
12972 			ValaMethod* _tmp184_;
12973 			_sym_index = _sym_index + 1;
12974 			_tmp178_ = _sym_index;
12975 			_tmp179_ = _sym_size;
12976 			if (!(_tmp178_ < _tmp179_)) {
12977 				break;
12978 			}
12979 			_tmp180_ = _sym_list;
12980 			_tmp181_ = vala_list_get (_tmp180_, _sym_index);
12981 			sym = (ValaSymbol*) _tmp181_;
12982 			_tmp182_ = sym;
12983 			_tmp183_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp182_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp182_) : NULL);
12984 			_vala_code_node_unref0 (m);
12985 			m = _tmp183_;
12986 			_tmp184_ = m;
12987 			if (_tmp184_ != NULL) {
12988 				ValaMethod* _tmp185_;
12989 				ValaCCodeStruct* _tmp186_;
12990 				ValaCCodeStruct* _tmp187_;
12991 				_tmp185_ = m;
12992 				_tmp186_ = instance_struct;
12993 				_tmp187_ = type_struct;
12994 				vala_gtype_module_generate_struct_method_declaration (self, (ValaObjectTypeSymbol*) iface, _tmp185_, _tmp186_, _tmp187_, decl_space, &has_struct_member);
12995 			} else {
12996 				ValaSymbol* _tmp188_;
12997 				ValaSignal* _tmp189_;
12998 				ValaSignal* _tmp190_;
12999 				_tmp188_ = sym;
13000 				_tmp189_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp188_, VALA_TYPE_SIGNAL) ? ((ValaSignal*) _tmp188_) : NULL);
13001 				_vala_code_node_unref0 (sig);
13002 				sig = _tmp189_;
13003 				_tmp190_ = sig;
13004 				if (_tmp190_ != NULL) {
13005 					ValaSignal* _tmp191_;
13006 					ValaMethod* _tmp192_;
13007 					ValaMethod* _tmp193_;
13008 					_tmp191_ = sig;
13009 					_tmp192_ = vala_signal_get_default_handler (_tmp191_);
13010 					_tmp193_ = _tmp192_;
13011 					if (_tmp193_ != NULL) {
13012 						ValaSignal* _tmp194_;
13013 						ValaMethod* _tmp195_;
13014 						ValaMethod* _tmp196_;
13015 						ValaCCodeStruct* _tmp197_;
13016 						_tmp194_ = sig;
13017 						_tmp195_ = vala_signal_get_default_handler (_tmp194_);
13018 						_tmp196_ = _tmp195_;
13019 						_tmp197_ = type_struct;
13020 						vala_gtype_module_generate_virtual_method_declaration (self, _tmp196_, decl_space, _tmp197_);
13021 					}
13022 				} else {
13023 					ValaSymbol* _tmp198_;
13024 					ValaProperty* _tmp199_;
13025 					ValaProperty* _tmp200_;
13026 					_tmp198_ = sym;
13027 					_tmp199_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp198_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp198_) : NULL);
13028 					_vala_code_node_unref0 (prop);
13029 					prop = _tmp199_;
13030 					_tmp200_ = prop;
13031 					if (_tmp200_ != NULL) {
13032 						ValaProperty* _tmp201_;
13033 						ValaCCodeStruct* _tmp202_;
13034 						ValaCCodeStruct* _tmp203_;
13035 						_tmp201_ = prop;
13036 						_tmp202_ = instance_struct;
13037 						_tmp203_ = type_struct;
13038 						vala_gtype_module_generate_struct_property_declaration (self, (ValaObjectTypeSymbol*) iface, _tmp201_, _tmp202_, _tmp203_, decl_space, &has_struct_member);
13039 					} else {
13040 						ValaSymbol* _tmp204_;
13041 						ValaSourceReference* _tmp205_;
13042 						ValaSourceReference* _tmp206_;
13043 						_tmp204_ = sym;
13044 						_tmp205_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp204_);
13045 						_tmp206_ = _tmp205_;
13046 						vala_report_error (_tmp206_, "internal: Unsupported symbol");
13047 					}
13048 				}
13049 			}
13050 			_vala_code_node_unref0 (prop);
13051 			_vala_code_node_unref0 (sig);
13052 			_vala_code_node_unref0 (m);
13053 			_vala_code_node_unref0 (sym);
13054 		}
13055 		_vala_iterable_unref0 (_sym_list);
13056 	}
13057 	_tmp207_ = type_struct;
13058 	vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) _tmp207_);
13059 	_tmp208_ = vala_interface_register_function_new (iface);
13060 	type_fun = _tmp208_;
13061 	_tmp209_ = type_fun;
13062 	_tmp210_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
13063 	_tmp211_ = _tmp210_;
13064 	vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp209_, _tmp211_, ((ValaCCodeBaseModule*) self)->in_plugin, TRUE);
13065 	_tmp212_ = type_fun;
13066 	_tmp213_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) _tmp212_);
13067 	_tmp214_ = _tmp213_;
13068 	vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp214_);
13069 	_vala_ccode_node_unref0 (_tmp214_);
13070 	_vala_typeregister_function_unref0 (type_fun);
13071 	_g_free0 (macro);
13072 	_vala_ccode_node_unref0 (type_struct);
13073 	_vala_ccode_node_unref0 (instance_struct);
13074 }
13075 
13076 static void
vala_gtype_module_real_visit_interface(ValaCodeVisitor * base,ValaInterface * iface)13077 vala_gtype_module_real_visit_interface (ValaCodeVisitor* base,
13078                                         ValaInterface* iface)
13079 {
13080 	ValaGTypeModule * self;
13081 	ValaCCodeBaseModuleEmitContext* _tmp0_;
13082 	ValaCCodeBaseModuleEmitContext* _tmp1_;
13083 	ValaSourceReference* _tmp2_;
13084 	ValaSourceReference* _tmp3_;
13085 	ValaCCodeEnum* old_signal_enum = NULL;
13086 	ValaCCodeEnum* _tmp4_;
13087 	ValaCCodeEnum* _tmp5_;
13088 	gchar* _tmp6_;
13089 	gchar* _tmp7_;
13090 	gint _tmp8_;
13091 	gint _tmp9_;
13092 	gboolean _tmp10_;
13093 	ValaCCodeEnum* _tmp17_;
13094 	ValaCCodeFile* _tmp18_;
13095 	ValaList* _tmp21_;
13096 	gint _tmp22_;
13097 	gint _tmp23_;
13098 	ValaComment* _tmp55_;
13099 	ValaComment* _tmp56_;
13100 	ValaInterfaceRegisterFunction* type_fun = NULL;
13101 	ValaInterfaceRegisterFunction* _tmp64_;
13102 	ValaInterfaceRegisterFunction* _tmp65_;
13103 	ValaCodeContext* _tmp66_;
13104 	ValaCodeContext* _tmp67_;
13105 	ValaCCodeFile* _tmp68_;
13106 	ValaInterfaceRegisterFunction* _tmp69_;
13107 	ValaCCodeFragment* _tmp70_;
13108 	ValaCCodeFragment* _tmp71_;
13109 	ValaCCodeFile* _tmp72_;
13110 	ValaInterfaceRegisterFunction* _tmp73_;
13111 	ValaCCodeFragment* _tmp74_;
13112 	ValaCCodeFragment* _tmp75_;
13113 	ValaCCodeEnum* _tmp76_;
13114 	ValaCCodeEnum* _tmp77_;
13115 	self = (ValaGTypeModule*) base;
13116 	g_return_if_fail (iface != NULL);
13117 	_tmp0_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) iface);
13118 	_tmp1_ = _tmp0_;
13119 	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp1_);
13120 	_vala_ccode_base_module_emit_context_unref0 (_tmp1_);
13121 	_tmp2_ = vala_code_node_get_source_reference ((ValaCodeNode*) iface);
13122 	_tmp3_ = _tmp2_;
13123 	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp3_);
13124 	_tmp4_ = ((ValaCCodeBaseModule*) self)->signal_enum;
13125 	_tmp5_ = _vala_ccode_node_ref0 (_tmp4_);
13126 	old_signal_enum = _tmp5_;
13127 	_tmp6_ = vala_get_ccode_name ((ValaCodeNode*) iface);
13128 	_tmp7_ = _tmp6_;
13129 	_tmp8_ = strlen (_tmp7_);
13130 	_tmp9_ = _tmp8_;
13131 	_tmp10_ = _tmp9_ < 3;
13132 	_g_free0 (_tmp7_);
13133 	if (_tmp10_) {
13134 		ValaSourceReference* _tmp11_;
13135 		ValaSourceReference* _tmp12_;
13136 		gchar* _tmp13_;
13137 		gchar* _tmp14_;
13138 		gchar* _tmp15_;
13139 		gchar* _tmp16_;
13140 		vala_code_node_set_error ((ValaCodeNode*) iface, TRUE);
13141 		_tmp11_ = vala_code_node_get_source_reference ((ValaCodeNode*) iface);
13142 		_tmp12_ = _tmp11_;
13143 		_tmp13_ = vala_get_ccode_name ((ValaCodeNode*) iface);
13144 		_tmp14_ = _tmp13_;
13145 		_tmp15_ = g_strdup_printf ("Interface name `%s' is too short", _tmp14_);
13146 		_tmp16_ = _tmp15_;
13147 		vala_report_error (_tmp12_, _tmp16_);
13148 		_g_free0 (_tmp16_);
13149 		_g_free0 (_tmp14_);
13150 		_vala_ccode_node_unref0 (old_signal_enum);
13151 		return;
13152 	}
13153 	_tmp17_ = vala_ccode_enum_new (NULL);
13154 	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
13155 	((ValaCCodeBaseModule*) self)->signal_enum = _tmp17_;
13156 	_tmp18_ = ((ValaCCodeBaseModule*) self)->cfile;
13157 	vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, iface, _tmp18_);
13158 	if (!vala_symbol_is_internal_symbol ((ValaSymbol*) iface)) {
13159 		ValaCCodeFile* _tmp19_;
13160 		_tmp19_ = ((ValaCCodeBaseModule*) self)->header_file;
13161 		vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, iface, _tmp19_);
13162 	}
13163 	if (!vala_symbol_is_private_symbol ((ValaSymbol*) iface)) {
13164 		ValaCCodeFile* _tmp20_;
13165 		_tmp20_ = ((ValaCCodeBaseModule*) self)->internal_header_file;
13166 		vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, iface, _tmp20_);
13167 	}
13168 	vala_code_node_accept_children ((ValaCodeNode*) iface, (ValaCodeVisitor*) self);
13169 	_tmp21_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) iface);
13170 	_tmp22_ = vala_collection_get_size ((ValaCollection*) _tmp21_);
13171 	_tmp23_ = _tmp22_;
13172 	if (_tmp23_ > 0) {
13173 		gchar* last_signal = NULL;
13174 		gchar* _tmp24_;
13175 		gchar* _tmp25_;
13176 		gchar* _tmp26_;
13177 		gchar* _tmp27_;
13178 		ValaCCodeEnum* _tmp28_;
13179 		const gchar* _tmp29_;
13180 		ValaCCodeEnumValue* _tmp30_;
13181 		ValaCCodeEnumValue* _tmp31_;
13182 		ValaCCodeFile* _tmp32_;
13183 		ValaCCodeEnum* _tmp33_;
13184 		ValaCCodeDeclaration* signal_array_decl = NULL;
13185 		ValaCCodeDeclaration* _tmp34_;
13186 		ValaCCodeDeclaration* _tmp35_;
13187 		ValaCCodeDeclaration* _tmp36_;
13188 		ValaCCodeModifiers _tmp37_;
13189 		ValaCCodeModifiers _tmp38_;
13190 		ValaCCodeDeclaration* _tmp39_;
13191 		gchar* _tmp40_;
13192 		gchar* _tmp41_;
13193 		gchar* _tmp42_;
13194 		gchar* _tmp43_;
13195 		ValaCCodeConstant* _tmp44_;
13196 		ValaCCodeConstant* _tmp45_;
13197 		const gchar* _tmp46_;
13198 		ValaCCodeIdentifier* _tmp47_;
13199 		ValaCCodeIdentifier* _tmp48_;
13200 		ValaCCodeDeclaratorSuffix* _tmp49_;
13201 		ValaCCodeDeclaratorSuffix* _tmp50_;
13202 		ValaCCodeVariableDeclarator* _tmp51_;
13203 		ValaCCodeVariableDeclarator* _tmp52_;
13204 		ValaCCodeFile* _tmp53_;
13205 		ValaCCodeDeclaration* _tmp54_;
13206 		_tmp24_ = vala_get_ccode_upper_case_name ((ValaSymbol*) iface, NULL);
13207 		_tmp25_ = _tmp24_;
13208 		_tmp26_ = g_strdup_printf ("%s_NUM_SIGNALS", _tmp25_);
13209 		_tmp27_ = _tmp26_;
13210 		_g_free0 (_tmp25_);
13211 		last_signal = _tmp27_;
13212 		_tmp28_ = ((ValaCCodeBaseModule*) self)->signal_enum;
13213 		_tmp29_ = last_signal;
13214 		_tmp30_ = vala_ccode_enum_value_new (_tmp29_, NULL);
13215 		_tmp31_ = _tmp30_;
13216 		vala_ccode_enum_add_value (_tmp28_, _tmp31_);
13217 		_vala_ccode_node_unref0 (_tmp31_);
13218 		_tmp32_ = ((ValaCCodeBaseModule*) self)->cfile;
13219 		_tmp33_ = ((ValaCCodeBaseModule*) self)->signal_enum;
13220 		vala_ccode_file_add_type_declaration (_tmp32_, (ValaCCodeNode*) _tmp33_);
13221 		_tmp34_ = vala_ccode_declaration_new ("guint");
13222 		signal_array_decl = _tmp34_;
13223 		_tmp35_ = signal_array_decl;
13224 		_tmp36_ = signal_array_decl;
13225 		_tmp37_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp36_);
13226 		_tmp38_ = _tmp37_;
13227 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp36_, _tmp38_ | VALA_CCODE_MODIFIERS_STATIC);
13228 		_tmp39_ = signal_array_decl;
13229 		_tmp40_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
13230 		_tmp41_ = _tmp40_;
13231 		_tmp42_ = g_strdup_printf ("%s_signals", _tmp41_);
13232 		_tmp43_ = _tmp42_;
13233 		_tmp44_ = vala_ccode_constant_new ("{0}");
13234 		_tmp45_ = _tmp44_;
13235 		_tmp46_ = last_signal;
13236 		_tmp47_ = vala_ccode_identifier_new (_tmp46_);
13237 		_tmp48_ = _tmp47_;
13238 		_tmp49_ = vala_ccode_declarator_suffix_new_with_array ((ValaCCodeExpression*) _tmp48_);
13239 		_tmp50_ = _tmp49_;
13240 		_tmp51_ = vala_ccode_variable_declarator_new (_tmp43_, (ValaCCodeExpression*) _tmp45_, _tmp50_);
13241 		_tmp52_ = _tmp51_;
13242 		vala_ccode_declaration_add_declarator (_tmp39_, (ValaCCodeDeclarator*) _tmp52_);
13243 		_vala_ccode_node_unref0 (_tmp52_);
13244 		_vala_ccode_declarator_suffix_unref0 (_tmp50_);
13245 		_vala_ccode_node_unref0 (_tmp48_);
13246 		_vala_ccode_node_unref0 (_tmp45_);
13247 		_g_free0 (_tmp43_);
13248 		_g_free0 (_tmp41_);
13249 		_tmp53_ = ((ValaCCodeBaseModule*) self)->cfile;
13250 		_tmp54_ = signal_array_decl;
13251 		vala_ccode_file_add_type_declaration (_tmp53_, (ValaCCodeNode*) _tmp54_);
13252 		_vala_ccode_node_unref0 (signal_array_decl);
13253 		_g_free0 (last_signal);
13254 	}
13255 	vala_gtype_module_add_interface_default_init_function (self, iface);
13256 	_tmp55_ = vala_symbol_get_comment ((ValaSymbol*) iface);
13257 	_tmp56_ = _tmp55_;
13258 	if (_tmp56_ != NULL) {
13259 		ValaCCodeFile* _tmp57_;
13260 		ValaComment* _tmp58_;
13261 		ValaComment* _tmp59_;
13262 		const gchar* _tmp60_;
13263 		const gchar* _tmp61_;
13264 		ValaCCodeComment* _tmp62_;
13265 		ValaCCodeComment* _tmp63_;
13266 		_tmp57_ = ((ValaCCodeBaseModule*) self)->cfile;
13267 		_tmp58_ = vala_symbol_get_comment ((ValaSymbol*) iface);
13268 		_tmp59_ = _tmp58_;
13269 		_tmp60_ = vala_comment_get_content (_tmp59_);
13270 		_tmp61_ = _tmp60_;
13271 		_tmp62_ = vala_ccode_comment_new (_tmp61_);
13272 		_tmp63_ = _tmp62_;
13273 		vala_ccode_file_add_type_member_definition (_tmp57_, (ValaCCodeNode*) _tmp63_);
13274 		_vala_ccode_node_unref0 (_tmp63_);
13275 	}
13276 	_tmp64_ = vala_interface_register_function_new (iface);
13277 	type_fun = _tmp64_;
13278 	_tmp65_ = type_fun;
13279 	_tmp66_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
13280 	_tmp67_ = _tmp66_;
13281 	vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp65_, _tmp67_, ((ValaCCodeBaseModule*) self)->in_plugin, FALSE);
13282 	_tmp68_ = ((ValaCCodeBaseModule*) self)->cfile;
13283 	_tmp69_ = type_fun;
13284 	_tmp70_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) _tmp69_);
13285 	_tmp71_ = _tmp70_;
13286 	vala_ccode_file_add_type_member_declaration (_tmp68_, (ValaCCodeNode*) _tmp71_);
13287 	_vala_ccode_node_unref0 (_tmp71_);
13288 	_tmp72_ = ((ValaCCodeBaseModule*) self)->cfile;
13289 	_tmp73_ = type_fun;
13290 	_tmp74_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp73_);
13291 	_tmp75_ = _tmp74_;
13292 	vala_ccode_file_add_type_member_definition (_tmp72_, (ValaCCodeNode*) _tmp75_);
13293 	_vala_ccode_node_unref0 (_tmp75_);
13294 	_tmp76_ = old_signal_enum;
13295 	_tmp77_ = _vala_ccode_node_ref0 (_tmp76_);
13296 	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
13297 	((ValaCCodeBaseModule*) self)->signal_enum = _tmp77_;
13298 	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
13299 	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
13300 	_vala_typeregister_function_unref0 (type_fun);
13301 	_vala_ccode_node_unref0 (old_signal_enum);
13302 }
13303 
13304 static void
vala_gtype_module_add_interface_default_init_function(ValaGTypeModule * self,ValaInterface * iface)13305 vala_gtype_module_add_interface_default_init_function (ValaGTypeModule* self,
13306                                                        ValaInterface* iface)
13307 {
13308 	ValaCCodeBaseModuleEmitContext* _tmp0_;
13309 	ValaCCodeBaseModuleEmitContext* _tmp1_;
13310 	ValaCCodeFunction* default_init = NULL;
13311 	gchar* _tmp2_;
13312 	gchar* _tmp3_;
13313 	gchar* _tmp4_;
13314 	gchar* _tmp5_;
13315 	ValaCCodeFunction* _tmp6_;
13316 	ValaCCodeFunction* _tmp7_;
13317 	ValaCCodeFunction* _tmp8_;
13318 	gchar* _tmp9_;
13319 	gchar* _tmp10_;
13320 	gchar* _tmp11_;
13321 	gchar* _tmp12_;
13322 	ValaCCodeParameter* _tmp13_;
13323 	ValaCCodeParameter* _tmp14_;
13324 	ValaCCodeFunction* _tmp15_;
13325 	ValaCCodeParameter* _tmp16_;
13326 	ValaCCodeParameter* _tmp17_;
13327 	ValaCCodeFunction* _tmp18_;
13328 	ValaCCodeFunction* _tmp19_;
13329 	ValaTypeSymbol* _tmp20_;
13330 	ValaCCodeIdentifier* ciface = NULL;
13331 	ValaCCodeIdentifier* _tmp66_;
13332 	ValaCCodeFile* _tmp215_;
13333 	ValaCCodeFunction* _tmp216_;
13334 	g_return_if_fail (self != NULL);
13335 	g_return_if_fail (iface != NULL);
13336 	_tmp0_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) iface);
13337 	_tmp1_ = _tmp0_;
13338 	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp1_);
13339 	_vala_ccode_base_module_emit_context_unref0 (_tmp1_);
13340 	_tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
13341 	_tmp3_ = _tmp2_;
13342 	_tmp4_ = g_strdup_printf ("%s_default_init", _tmp3_);
13343 	_tmp5_ = _tmp4_;
13344 	_tmp6_ = vala_ccode_function_new (_tmp5_, "void");
13345 	_tmp7_ = _tmp6_;
13346 	_g_free0 (_tmp5_);
13347 	_g_free0 (_tmp3_);
13348 	default_init = _tmp7_;
13349 	_tmp8_ = default_init;
13350 	_tmp9_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
13351 	_tmp10_ = _tmp9_;
13352 	_tmp11_ = g_strdup_printf ("%s *", _tmp10_);
13353 	_tmp12_ = _tmp11_;
13354 	_tmp13_ = vala_ccode_parameter_new ("iface", _tmp12_);
13355 	_tmp14_ = _tmp13_;
13356 	vala_ccode_function_add_parameter (_tmp8_, _tmp14_);
13357 	_vala_ccode_node_unref0 (_tmp14_);
13358 	_g_free0 (_tmp12_);
13359 	_g_free0 (_tmp10_);
13360 	_tmp15_ = default_init;
13361 	_tmp16_ = vala_ccode_parameter_new ("iface_data", "gpointer");
13362 	_tmp17_ = _tmp16_;
13363 	vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
13364 	_vala_ccode_node_unref0 (_tmp17_);
13365 	_tmp18_ = default_init;
13366 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp18_, VALA_CCODE_MODIFIERS_STATIC);
13367 	_tmp19_ = default_init;
13368 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
13369 	_tmp20_ = ((ValaCCodeBaseModule*) self)->gobject_type;
13370 	if (vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) iface, _tmp20_)) {
13371 		ValaList* props = NULL;
13372 		ValaList* _tmp21_;
13373 		ValaList* _tmp22_;
13374 		_tmp21_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) iface);
13375 		_tmp22_ = _vala_iterable_ref0 (_tmp21_);
13376 		props = _tmp22_;
13377 		{
13378 			ValaList* _prop_list = NULL;
13379 			ValaList* _tmp23_;
13380 			ValaList* _tmp24_;
13381 			gint _prop_size = 0;
13382 			ValaList* _tmp25_;
13383 			gint _tmp26_;
13384 			gint _tmp27_;
13385 			gint _prop_index = 0;
13386 			_tmp23_ = props;
13387 			_tmp24_ = _vala_iterable_ref0 (_tmp23_);
13388 			_prop_list = _tmp24_;
13389 			_tmp25_ = _prop_list;
13390 			_tmp26_ = vala_collection_get_size ((ValaCollection*) _tmp25_);
13391 			_tmp27_ = _tmp26_;
13392 			_prop_size = _tmp27_;
13393 			_prop_index = -1;
13394 			while (TRUE) {
13395 				gint _tmp28_;
13396 				gint _tmp29_;
13397 				ValaProperty* prop = NULL;
13398 				ValaList* _tmp30_;
13399 				gpointer _tmp31_;
13400 				ValaProperty* _tmp32_;
13401 				gboolean _tmp33_;
13402 				gboolean _tmp34_;
13403 				_prop_index = _prop_index + 1;
13404 				_tmp28_ = _prop_index;
13405 				_tmp29_ = _prop_size;
13406 				if (!(_tmp28_ < _tmp29_)) {
13407 					break;
13408 				}
13409 				_tmp30_ = _prop_list;
13410 				_tmp31_ = vala_list_get (_tmp30_, _prop_index);
13411 				prop = (ValaProperty*) _tmp31_;
13412 				_tmp32_ = prop;
13413 				_tmp33_ = vala_property_get_is_abstract (_tmp32_);
13414 				_tmp34_ = _tmp33_;
13415 				if (_tmp34_) {
13416 					ValaCodeContext* _tmp35_;
13417 					ValaCodeContext* _tmp36_;
13418 					ValaSemanticAnalyzer* _tmp37_;
13419 					ValaSemanticAnalyzer* _tmp38_;
13420 					ValaProperty* _tmp39_;
13421 					ValaProperty* _tmp40_;
13422 					ValaComment* _tmp41_;
13423 					ValaComment* _tmp42_;
13424 					ValaCCodeFunctionCall* cinst = NULL;
13425 					ValaCCodeIdentifier* _tmp52_;
13426 					ValaCCodeIdentifier* _tmp53_;
13427 					ValaCCodeFunctionCall* _tmp54_;
13428 					ValaCCodeFunctionCall* _tmp55_;
13429 					ValaCCodeFunctionCall* _tmp56_;
13430 					ValaCCodeIdentifier* _tmp57_;
13431 					ValaCCodeIdentifier* _tmp58_;
13432 					ValaCCodeFunctionCall* _tmp59_;
13433 					ValaProperty* _tmp60_;
13434 					ValaCCodeExpression* _tmp61_;
13435 					ValaCCodeExpression* _tmp62_;
13436 					ValaCCodeFunction* _tmp63_;
13437 					ValaCCodeFunction* _tmp64_;
13438 					ValaCCodeFunctionCall* _tmp65_;
13439 					_tmp35_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
13440 					_tmp36_ = _tmp35_;
13441 					_tmp37_ = vala_code_context_get_analyzer (_tmp36_);
13442 					_tmp38_ = _tmp37_;
13443 					_tmp39_ = prop;
13444 					if (!vala_semantic_analyzer_is_gobject_property (_tmp38_, _tmp39_)) {
13445 						_vala_code_node_unref0 (prop);
13446 						continue;
13447 					}
13448 					_tmp40_ = prop;
13449 					_tmp41_ = vala_symbol_get_comment ((ValaSymbol*) _tmp40_);
13450 					_tmp42_ = _tmp41_;
13451 					if (_tmp42_ != NULL) {
13452 						ValaCCodeFunction* _tmp43_;
13453 						ValaCCodeFunction* _tmp44_;
13454 						ValaProperty* _tmp45_;
13455 						ValaComment* _tmp46_;
13456 						ValaComment* _tmp47_;
13457 						const gchar* _tmp48_;
13458 						const gchar* _tmp49_;
13459 						ValaCCodeComment* _tmp50_;
13460 						ValaCCodeComment* _tmp51_;
13461 						_tmp43_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13462 						_tmp44_ = _tmp43_;
13463 						_tmp45_ = prop;
13464 						_tmp46_ = vala_symbol_get_comment ((ValaSymbol*) _tmp45_);
13465 						_tmp47_ = _tmp46_;
13466 						_tmp48_ = vala_comment_get_content (_tmp47_);
13467 						_tmp49_ = _tmp48_;
13468 						_tmp50_ = vala_ccode_comment_new (_tmp49_);
13469 						_tmp51_ = _tmp50_;
13470 						vala_ccode_function_add_statement (_tmp44_, (ValaCCodeNode*) _tmp51_);
13471 						_vala_ccode_node_unref0 (_tmp51_);
13472 					}
13473 					_tmp52_ = vala_ccode_identifier_new ("g_object_interface_install_property");
13474 					_tmp53_ = _tmp52_;
13475 					_tmp54_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp53_);
13476 					_tmp55_ = _tmp54_;
13477 					_vala_ccode_node_unref0 (_tmp53_);
13478 					cinst = _tmp55_;
13479 					_tmp56_ = cinst;
13480 					_tmp57_ = vala_ccode_identifier_new ("iface");
13481 					_tmp58_ = _tmp57_;
13482 					vala_ccode_function_call_add_argument (_tmp56_, (ValaCCodeExpression*) _tmp58_);
13483 					_vala_ccode_node_unref0 (_tmp58_);
13484 					_tmp59_ = cinst;
13485 					_tmp60_ = prop;
13486 					_tmp61_ = vala_ccode_base_module_get_param_spec ((ValaCCodeBaseModule*) self, _tmp60_);
13487 					_tmp62_ = _tmp61_;
13488 					vala_ccode_function_call_add_argument (_tmp59_, _tmp62_);
13489 					_vala_ccode_node_unref0 (_tmp62_);
13490 					_tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13491 					_tmp64_ = _tmp63_;
13492 					_tmp65_ = cinst;
13493 					vala_ccode_function_add_expression (_tmp64_, (ValaCCodeExpression*) _tmp65_);
13494 					_vala_ccode_node_unref0 (cinst);
13495 				}
13496 				_vala_code_node_unref0 (prop);
13497 			}
13498 			_vala_iterable_unref0 (_prop_list);
13499 		}
13500 		_vala_iterable_unref0 (props);
13501 	}
13502 	_tmp66_ = vala_ccode_identifier_new ("iface");
13503 	ciface = _tmp66_;
13504 	{
13505 		ValaList* _sig_list = NULL;
13506 		ValaList* _tmp67_;
13507 		ValaList* _tmp68_;
13508 		gint _sig_size = 0;
13509 		ValaList* _tmp69_;
13510 		gint _tmp70_;
13511 		gint _tmp71_;
13512 		gint _sig_index = 0;
13513 		_tmp67_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) iface);
13514 		_tmp68_ = _vala_iterable_ref0 (_tmp67_);
13515 		_sig_list = _tmp68_;
13516 		_tmp69_ = _sig_list;
13517 		_tmp70_ = vala_collection_get_size ((ValaCollection*) _tmp69_);
13518 		_tmp71_ = _tmp70_;
13519 		_sig_size = _tmp71_;
13520 		_sig_index = -1;
13521 		while (TRUE) {
13522 			gint _tmp72_;
13523 			gint _tmp73_;
13524 			ValaSignal* sig = NULL;
13525 			ValaList* _tmp74_;
13526 			gpointer _tmp75_;
13527 			ValaSignal* _tmp76_;
13528 			ValaMethod* _tmp77_;
13529 			ValaMethod* _tmp78_;
13530 			gchar* cname = NULL;
13531 			ValaSignal* _tmp79_;
13532 			ValaMethod* _tmp80_;
13533 			ValaMethod* _tmp81_;
13534 			gchar* _tmp82_;
13535 			ValaCCodeFunction* _tmp83_;
13536 			ValaCCodeFunction* _tmp84_;
13537 			ValaCCodeIdentifier* _tmp85_;
13538 			ValaSignal* _tmp86_;
13539 			ValaMethod* _tmp87_;
13540 			ValaMethod* _tmp88_;
13541 			gchar* _tmp89_;
13542 			gchar* _tmp90_;
13543 			ValaCCodeMemberAccess* _tmp91_;
13544 			ValaCCodeMemberAccess* _tmp92_;
13545 			const gchar* _tmp93_;
13546 			ValaCCodeIdentifier* _tmp94_;
13547 			ValaCCodeIdentifier* _tmp95_;
13548 			_sig_index = _sig_index + 1;
13549 			_tmp72_ = _sig_index;
13550 			_tmp73_ = _sig_size;
13551 			if (!(_tmp72_ < _tmp73_)) {
13552 				break;
13553 			}
13554 			_tmp74_ = _sig_list;
13555 			_tmp75_ = vala_list_get (_tmp74_, _sig_index);
13556 			sig = (ValaSignal*) _tmp75_;
13557 			_tmp76_ = sig;
13558 			_tmp77_ = vala_signal_get_default_handler (_tmp76_);
13559 			_tmp78_ = _tmp77_;
13560 			if (_tmp78_ == NULL) {
13561 				_vala_code_node_unref0 (sig);
13562 				continue;
13563 			}
13564 			_tmp79_ = sig;
13565 			_tmp80_ = vala_signal_get_default_handler (_tmp79_);
13566 			_tmp81_ = _tmp80_;
13567 			_tmp82_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp81_);
13568 			cname = _tmp82_;
13569 			_tmp83_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13570 			_tmp84_ = _tmp83_;
13571 			_tmp85_ = ciface;
13572 			_tmp86_ = sig;
13573 			_tmp87_ = vala_signal_get_default_handler (_tmp86_);
13574 			_tmp88_ = _tmp87_;
13575 			_tmp89_ = vala_get_ccode_vfunc_name (_tmp88_);
13576 			_tmp90_ = _tmp89_;
13577 			_tmp91_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp85_, _tmp90_);
13578 			_tmp92_ = _tmp91_;
13579 			_tmp93_ = cname;
13580 			_tmp94_ = vala_ccode_identifier_new (_tmp93_);
13581 			_tmp95_ = _tmp94_;
13582 			vala_ccode_function_add_assignment (_tmp84_, (ValaCCodeExpression*) _tmp92_, (ValaCCodeExpression*) _tmp95_);
13583 			_vala_ccode_node_unref0 (_tmp95_);
13584 			_vala_ccode_node_unref0 (_tmp92_);
13585 			_g_free0 (_tmp90_);
13586 			_g_free0 (cname);
13587 			_vala_code_node_unref0 (sig);
13588 		}
13589 		_vala_iterable_unref0 (_sig_list);
13590 	}
13591 	{
13592 		ValaList* _sig_list = NULL;
13593 		ValaList* _tmp96_;
13594 		ValaList* _tmp97_;
13595 		gint _sig_size = 0;
13596 		ValaList* _tmp98_;
13597 		gint _tmp99_;
13598 		gint _tmp100_;
13599 		gint _sig_index = 0;
13600 		_tmp96_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) iface);
13601 		_tmp97_ = _vala_iterable_ref0 (_tmp96_);
13602 		_sig_list = _tmp97_;
13603 		_tmp98_ = _sig_list;
13604 		_tmp99_ = vala_collection_get_size ((ValaCollection*) _tmp98_);
13605 		_tmp100_ = _tmp99_;
13606 		_sig_size = _tmp100_;
13607 		_sig_index = -1;
13608 		while (TRUE) {
13609 			gint _tmp101_;
13610 			gint _tmp102_;
13611 			ValaSignal* sig = NULL;
13612 			ValaList* _tmp103_;
13613 			gpointer _tmp104_;
13614 			ValaSignal* _tmp105_;
13615 			ValaComment* _tmp106_;
13616 			ValaComment* _tmp107_;
13617 			ValaCCodeFunction* _tmp117_;
13618 			ValaCCodeFunction* _tmp118_;
13619 			ValaSignal* _tmp119_;
13620 			ValaCCodeExpression* _tmp120_;
13621 			ValaCCodeExpression* _tmp121_;
13622 			_sig_index = _sig_index + 1;
13623 			_tmp101_ = _sig_index;
13624 			_tmp102_ = _sig_size;
13625 			if (!(_tmp101_ < _tmp102_)) {
13626 				break;
13627 			}
13628 			_tmp103_ = _sig_list;
13629 			_tmp104_ = vala_list_get (_tmp103_, _sig_index);
13630 			sig = (ValaSignal*) _tmp104_;
13631 			_tmp105_ = sig;
13632 			_tmp106_ = vala_symbol_get_comment ((ValaSymbol*) _tmp105_);
13633 			_tmp107_ = _tmp106_;
13634 			if (_tmp107_ != NULL) {
13635 				ValaCCodeFunction* _tmp108_;
13636 				ValaCCodeFunction* _tmp109_;
13637 				ValaSignal* _tmp110_;
13638 				ValaComment* _tmp111_;
13639 				ValaComment* _tmp112_;
13640 				const gchar* _tmp113_;
13641 				const gchar* _tmp114_;
13642 				ValaCCodeComment* _tmp115_;
13643 				ValaCCodeComment* _tmp116_;
13644 				_tmp108_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13645 				_tmp109_ = _tmp108_;
13646 				_tmp110_ = sig;
13647 				_tmp111_ = vala_symbol_get_comment ((ValaSymbol*) _tmp110_);
13648 				_tmp112_ = _tmp111_;
13649 				_tmp113_ = vala_comment_get_content (_tmp112_);
13650 				_tmp114_ = _tmp113_;
13651 				_tmp115_ = vala_ccode_comment_new (_tmp114_);
13652 				_tmp116_ = _tmp115_;
13653 				vala_ccode_function_add_statement (_tmp109_, (ValaCCodeNode*) _tmp116_);
13654 				_vala_ccode_node_unref0 (_tmp116_);
13655 			}
13656 			_tmp117_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13657 			_tmp118_ = _tmp117_;
13658 			_tmp119_ = sig;
13659 			_tmp120_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, _tmp119_, (ValaObjectTypeSymbol*) iface);
13660 			_tmp121_ = _tmp120_;
13661 			vala_ccode_function_add_expression (_tmp118_, _tmp121_);
13662 			_vala_ccode_node_unref0 (_tmp121_);
13663 			_vala_code_node_unref0 (sig);
13664 		}
13665 		_vala_iterable_unref0 (_sig_list);
13666 	}
13667 	{
13668 		ValaList* _m_list = NULL;
13669 		ValaList* _tmp122_;
13670 		ValaList* _tmp123_;
13671 		gint _m_size = 0;
13672 		ValaList* _tmp124_;
13673 		gint _tmp125_;
13674 		gint _tmp126_;
13675 		gint _m_index = 0;
13676 		_tmp122_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) iface);
13677 		_tmp123_ = _vala_iterable_ref0 (_tmp122_);
13678 		_m_list = _tmp123_;
13679 		_tmp124_ = _m_list;
13680 		_tmp125_ = vala_collection_get_size ((ValaCollection*) _tmp124_);
13681 		_tmp126_ = _tmp125_;
13682 		_m_size = _tmp126_;
13683 		_m_index = -1;
13684 		while (TRUE) {
13685 			gint _tmp127_;
13686 			gint _tmp128_;
13687 			ValaMethod* m = NULL;
13688 			ValaList* _tmp129_;
13689 			gpointer _tmp130_;
13690 			ValaMethod* _tmp131_;
13691 			gboolean _tmp132_;
13692 			gboolean _tmp133_;
13693 			_m_index = _m_index + 1;
13694 			_tmp127_ = _m_index;
13695 			_tmp128_ = _m_size;
13696 			if (!(_tmp127_ < _tmp128_)) {
13697 				break;
13698 			}
13699 			_tmp129_ = _m_list;
13700 			_tmp130_ = vala_list_get (_tmp129_, _m_index);
13701 			m = (ValaMethod*) _tmp130_;
13702 			_tmp131_ = m;
13703 			_tmp132_ = vala_method_get_is_virtual (_tmp131_);
13704 			_tmp133_ = _tmp132_;
13705 			if (_tmp133_) {
13706 				gchar* cname = NULL;
13707 				ValaMethod* _tmp134_;
13708 				gchar* _tmp135_;
13709 				ValaCCodeFunction* _tmp136_;
13710 				ValaCCodeFunction* _tmp137_;
13711 				ValaCCodeIdentifier* _tmp138_;
13712 				ValaMethod* _tmp139_;
13713 				gchar* _tmp140_;
13714 				gchar* _tmp141_;
13715 				ValaCCodeMemberAccess* _tmp142_;
13716 				ValaCCodeMemberAccess* _tmp143_;
13717 				const gchar* _tmp144_;
13718 				ValaCCodeIdentifier* _tmp145_;
13719 				ValaCCodeIdentifier* _tmp146_;
13720 				ValaMethod* _tmp147_;
13721 				gboolean _tmp148_;
13722 				gboolean _tmp149_;
13723 				_tmp134_ = m;
13724 				_tmp135_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp134_);
13725 				cname = _tmp135_;
13726 				_tmp136_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13727 				_tmp137_ = _tmp136_;
13728 				_tmp138_ = ciface;
13729 				_tmp139_ = m;
13730 				_tmp140_ = vala_get_ccode_vfunc_name (_tmp139_);
13731 				_tmp141_ = _tmp140_;
13732 				_tmp142_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp138_, _tmp141_);
13733 				_tmp143_ = _tmp142_;
13734 				_tmp144_ = cname;
13735 				_tmp145_ = vala_ccode_identifier_new (_tmp144_);
13736 				_tmp146_ = _tmp145_;
13737 				vala_ccode_function_add_assignment (_tmp137_, (ValaCCodeExpression*) _tmp143_, (ValaCCodeExpression*) _tmp146_);
13738 				_vala_ccode_node_unref0 (_tmp146_);
13739 				_vala_ccode_node_unref0 (_tmp143_);
13740 				_g_free0 (_tmp141_);
13741 				_tmp147_ = m;
13742 				_tmp148_ = vala_method_get_coroutine (_tmp147_);
13743 				_tmp149_ = _tmp148_;
13744 				if (_tmp149_) {
13745 					ValaCCodeFunction* _tmp150_;
13746 					ValaCCodeFunction* _tmp151_;
13747 					ValaCCodeIdentifier* _tmp152_;
13748 					ValaMethod* _tmp153_;
13749 					gchar* _tmp154_;
13750 					gchar* _tmp155_;
13751 					ValaCCodeMemberAccess* _tmp156_;
13752 					ValaCCodeMemberAccess* _tmp157_;
13753 					ValaMethod* _tmp158_;
13754 					gchar* _tmp159_;
13755 					gchar* _tmp160_;
13756 					ValaCCodeIdentifier* _tmp161_;
13757 					ValaCCodeIdentifier* _tmp162_;
13758 					_tmp150_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13759 					_tmp151_ = _tmp150_;
13760 					_tmp152_ = ciface;
13761 					_tmp153_ = m;
13762 					_tmp154_ = vala_get_ccode_finish_vfunc_name (_tmp153_);
13763 					_tmp155_ = _tmp154_;
13764 					_tmp156_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp152_, _tmp155_);
13765 					_tmp157_ = _tmp156_;
13766 					_tmp158_ = m;
13767 					_tmp159_ = vala_get_ccode_finish_real_name (_tmp158_);
13768 					_tmp160_ = _tmp159_;
13769 					_tmp161_ = vala_ccode_identifier_new (_tmp160_);
13770 					_tmp162_ = _tmp161_;
13771 					vala_ccode_function_add_assignment (_tmp151_, (ValaCCodeExpression*) _tmp157_, (ValaCCodeExpression*) _tmp162_);
13772 					_vala_ccode_node_unref0 (_tmp162_);
13773 					_g_free0 (_tmp160_);
13774 					_vala_ccode_node_unref0 (_tmp157_);
13775 					_g_free0 (_tmp155_);
13776 				}
13777 				_g_free0 (cname);
13778 			}
13779 			_vala_code_node_unref0 (m);
13780 		}
13781 		_vala_iterable_unref0 (_m_list);
13782 	}
13783 	{
13784 		ValaList* _prop_list = NULL;
13785 		ValaList* _tmp163_;
13786 		ValaList* _tmp164_;
13787 		gint _prop_size = 0;
13788 		ValaList* _tmp165_;
13789 		gint _tmp166_;
13790 		gint _tmp167_;
13791 		gint _prop_index = 0;
13792 		_tmp163_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) iface);
13793 		_tmp164_ = _vala_iterable_ref0 (_tmp163_);
13794 		_prop_list = _tmp164_;
13795 		_tmp165_ = _prop_list;
13796 		_tmp166_ = vala_collection_get_size ((ValaCollection*) _tmp165_);
13797 		_tmp167_ = _tmp166_;
13798 		_prop_size = _tmp167_;
13799 		_prop_index = -1;
13800 		while (TRUE) {
13801 			gint _tmp168_;
13802 			gint _tmp169_;
13803 			ValaProperty* prop = NULL;
13804 			ValaList* _tmp170_;
13805 			gpointer _tmp171_;
13806 			ValaProperty* _tmp172_;
13807 			gboolean _tmp173_;
13808 			gboolean _tmp174_;
13809 			_prop_index = _prop_index + 1;
13810 			_tmp168_ = _prop_index;
13811 			_tmp169_ = _prop_size;
13812 			if (!(_tmp168_ < _tmp169_)) {
13813 				break;
13814 			}
13815 			_tmp170_ = _prop_list;
13816 			_tmp171_ = vala_list_get (_tmp170_, _prop_index);
13817 			prop = (ValaProperty*) _tmp171_;
13818 			_tmp172_ = prop;
13819 			_tmp173_ = vala_property_get_is_virtual (_tmp172_);
13820 			_tmp174_ = _tmp173_;
13821 			if (_tmp174_) {
13822 				ValaProperty* _tmp175_;
13823 				ValaPropertyAccessor* _tmp176_;
13824 				ValaPropertyAccessor* _tmp177_;
13825 				ValaProperty* _tmp195_;
13826 				ValaPropertyAccessor* _tmp196_;
13827 				ValaPropertyAccessor* _tmp197_;
13828 				_tmp175_ = prop;
13829 				_tmp176_ = vala_property_get_get_accessor (_tmp175_);
13830 				_tmp177_ = _tmp176_;
13831 				if (_tmp177_ != NULL) {
13832 					gchar* cname = NULL;
13833 					ValaProperty* _tmp178_;
13834 					ValaPropertyAccessor* _tmp179_;
13835 					ValaPropertyAccessor* _tmp180_;
13836 					gchar* _tmp181_;
13837 					ValaCCodeFunction* _tmp182_;
13838 					ValaCCodeFunction* _tmp183_;
13839 					ValaCCodeIdentifier* _tmp184_;
13840 					ValaProperty* _tmp185_;
13841 					const gchar* _tmp186_;
13842 					const gchar* _tmp187_;
13843 					gchar* _tmp188_;
13844 					gchar* _tmp189_;
13845 					ValaCCodeMemberAccess* _tmp190_;
13846 					ValaCCodeMemberAccess* _tmp191_;
13847 					const gchar* _tmp192_;
13848 					ValaCCodeIdentifier* _tmp193_;
13849 					ValaCCodeIdentifier* _tmp194_;
13850 					_tmp178_ = prop;
13851 					_tmp179_ = vala_property_get_get_accessor (_tmp178_);
13852 					_tmp180_ = _tmp179_;
13853 					_tmp181_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp180_);
13854 					cname = _tmp181_;
13855 					_tmp182_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13856 					_tmp183_ = _tmp182_;
13857 					_tmp184_ = ciface;
13858 					_tmp185_ = prop;
13859 					_tmp186_ = vala_symbol_get_name ((ValaSymbol*) _tmp185_);
13860 					_tmp187_ = _tmp186_;
13861 					_tmp188_ = g_strdup_printf ("get_%s", _tmp187_);
13862 					_tmp189_ = _tmp188_;
13863 					_tmp190_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp184_, _tmp189_);
13864 					_tmp191_ = _tmp190_;
13865 					_tmp192_ = cname;
13866 					_tmp193_ = vala_ccode_identifier_new (_tmp192_);
13867 					_tmp194_ = _tmp193_;
13868 					vala_ccode_function_add_assignment (_tmp183_, (ValaCCodeExpression*) _tmp191_, (ValaCCodeExpression*) _tmp194_);
13869 					_vala_ccode_node_unref0 (_tmp194_);
13870 					_vala_ccode_node_unref0 (_tmp191_);
13871 					_g_free0 (_tmp189_);
13872 					_g_free0 (cname);
13873 				}
13874 				_tmp195_ = prop;
13875 				_tmp196_ = vala_property_get_set_accessor (_tmp195_);
13876 				_tmp197_ = _tmp196_;
13877 				if (_tmp197_ != NULL) {
13878 					gchar* cname = NULL;
13879 					ValaProperty* _tmp198_;
13880 					ValaPropertyAccessor* _tmp199_;
13881 					ValaPropertyAccessor* _tmp200_;
13882 					gchar* _tmp201_;
13883 					ValaCCodeFunction* _tmp202_;
13884 					ValaCCodeFunction* _tmp203_;
13885 					ValaCCodeIdentifier* _tmp204_;
13886 					ValaProperty* _tmp205_;
13887 					const gchar* _tmp206_;
13888 					const gchar* _tmp207_;
13889 					gchar* _tmp208_;
13890 					gchar* _tmp209_;
13891 					ValaCCodeMemberAccess* _tmp210_;
13892 					ValaCCodeMemberAccess* _tmp211_;
13893 					const gchar* _tmp212_;
13894 					ValaCCodeIdentifier* _tmp213_;
13895 					ValaCCodeIdentifier* _tmp214_;
13896 					_tmp198_ = prop;
13897 					_tmp199_ = vala_property_get_set_accessor (_tmp198_);
13898 					_tmp200_ = _tmp199_;
13899 					_tmp201_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp200_);
13900 					cname = _tmp201_;
13901 					_tmp202_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13902 					_tmp203_ = _tmp202_;
13903 					_tmp204_ = ciface;
13904 					_tmp205_ = prop;
13905 					_tmp206_ = vala_symbol_get_name ((ValaSymbol*) _tmp205_);
13906 					_tmp207_ = _tmp206_;
13907 					_tmp208_ = g_strdup_printf ("set_%s", _tmp207_);
13908 					_tmp209_ = _tmp208_;
13909 					_tmp210_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp204_, _tmp209_);
13910 					_tmp211_ = _tmp210_;
13911 					_tmp212_ = cname;
13912 					_tmp213_ = vala_ccode_identifier_new (_tmp212_);
13913 					_tmp214_ = _tmp213_;
13914 					vala_ccode_function_add_assignment (_tmp203_, (ValaCCodeExpression*) _tmp211_, (ValaCCodeExpression*) _tmp214_);
13915 					_vala_ccode_node_unref0 (_tmp214_);
13916 					_vala_ccode_node_unref0 (_tmp211_);
13917 					_g_free0 (_tmp209_);
13918 					_g_free0 (cname);
13919 				}
13920 			}
13921 			_vala_code_node_unref0 (prop);
13922 		}
13923 		_vala_iterable_unref0 (_prop_list);
13924 	}
13925 	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
13926 	_tmp215_ = ((ValaCCodeBaseModule*) self)->cfile;
13927 	_tmp216_ = default_init;
13928 	vala_ccode_file_add_function (_tmp215_, _tmp216_);
13929 	_vala_ccode_node_unref0 (ciface);
13930 	_vala_ccode_node_unref0 (default_init);
13931 }
13932 
13933 static void
vala_gtype_module_real_visit_struct(ValaCodeVisitor * base,ValaStruct * st)13934 vala_gtype_module_real_visit_struct (ValaCodeVisitor* base,
13935                                      ValaStruct* st)
13936 {
13937 	ValaGTypeModule * self;
13938 	gboolean _tmp0_ = FALSE;
13939 	ValaAttribute* _tmp1_;
13940 	gboolean _tmp2_ = FALSE;
13941 	gboolean _tmp3_ = FALSE;
13942 	self = (ValaGTypeModule*) base;
13943 	g_return_if_fail (st != NULL);
13944 	_tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) st, "SimpleType");
13945 	if (_tmp1_ != NULL) {
13946 		_tmp0_ = !vala_code_node_has_attribute_argument ((ValaCodeNode*) st, "CCode", "type_id");
13947 	} else {
13948 		_tmp0_ = FALSE;
13949 	}
13950 	if (_tmp0_) {
13951 		vala_code_node_set_attribute_bool ((ValaCodeNode*) st, "CCode", "has_type_id", FALSE, NULL);
13952 	}
13953 	VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_struct ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), st);
13954 	if (vala_struct_is_boolean_type (st)) {
13955 		_tmp3_ = TRUE;
13956 	} else {
13957 		_tmp3_ = vala_struct_is_integer_type (st);
13958 	}
13959 	if (_tmp3_) {
13960 		_tmp2_ = TRUE;
13961 	} else {
13962 		_tmp2_ = vala_struct_is_floating_type (st);
13963 	}
13964 	if (_tmp2_) {
13965 		return;
13966 	}
13967 	if (vala_get_ccode_has_type_id ((ValaTypeSymbol*) st)) {
13968 		ValaSourceReference* _tmp4_;
13969 		ValaSourceReference* _tmp5_;
13970 		ValaStructRegisterFunction* type_fun = NULL;
13971 		ValaStructRegisterFunction* _tmp6_;
13972 		ValaStructRegisterFunction* _tmp7_;
13973 		ValaCodeContext* _tmp8_;
13974 		ValaCodeContext* _tmp9_;
13975 		ValaCCodeFile* _tmp10_;
13976 		ValaStructRegisterFunction* _tmp11_;
13977 		ValaCCodeFragment* _tmp12_;
13978 		ValaCCodeFragment* _tmp13_;
13979 		_tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) st);
13980 		_tmp5_ = _tmp4_;
13981 		vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp5_);
13982 		_tmp6_ = vala_struct_register_function_new (st);
13983 		type_fun = _tmp6_;
13984 		_tmp7_ = type_fun;
13985 		_tmp8_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
13986 		_tmp9_ = _tmp8_;
13987 		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp7_, _tmp9_, FALSE, FALSE);
13988 		_tmp10_ = ((ValaCCodeBaseModule*) self)->cfile;
13989 		_tmp11_ = type_fun;
13990 		_tmp12_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp11_);
13991 		_tmp13_ = _tmp12_;
13992 		vala_ccode_file_add_type_member_definition (_tmp10_, (ValaCCodeNode*) _tmp13_);
13993 		_vala_ccode_node_unref0 (_tmp13_);
13994 		vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
13995 		_vala_typeregister_function_unref0 (type_fun);
13996 	}
13997 }
13998 
13999 static void
vala_gtype_module_real_visit_enum(ValaCodeVisitor * base,ValaEnum * en)14000 vala_gtype_module_real_visit_enum (ValaCodeVisitor* base,
14001                                    ValaEnum* en)
14002 {
14003 	ValaGTypeModule * self;
14004 	self = (ValaGTypeModule*) base;
14005 	g_return_if_fail (en != NULL);
14006 	VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_enum ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), en);
14007 	if (vala_get_ccode_has_type_id ((ValaTypeSymbol*) en)) {
14008 		ValaSourceReference* _tmp0_;
14009 		ValaSourceReference* _tmp1_;
14010 		ValaEnumRegisterFunction* type_fun = NULL;
14011 		ValaEnumRegisterFunction* _tmp2_;
14012 		ValaEnumRegisterFunction* _tmp3_;
14013 		ValaCodeContext* _tmp4_;
14014 		ValaCodeContext* _tmp5_;
14015 		ValaCCodeFile* _tmp6_;
14016 		ValaEnumRegisterFunction* _tmp7_;
14017 		ValaCCodeFragment* _tmp8_;
14018 		ValaCCodeFragment* _tmp9_;
14019 		_tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) en);
14020 		_tmp1_ = _tmp0_;
14021 		vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp1_);
14022 		_tmp2_ = vala_enum_register_function_new (en);
14023 		type_fun = _tmp2_;
14024 		_tmp3_ = type_fun;
14025 		_tmp4_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
14026 		_tmp5_ = _tmp4_;
14027 		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp3_, _tmp5_, FALSE, FALSE);
14028 		_tmp6_ = ((ValaCCodeBaseModule*) self)->cfile;
14029 		_tmp7_ = type_fun;
14030 		_tmp8_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp7_);
14031 		_tmp9_ = _tmp8_;
14032 		vala_ccode_file_add_type_member_definition (_tmp6_, (ValaCCodeNode*) _tmp9_);
14033 		_vala_ccode_node_unref0 (_tmp9_);
14034 		vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
14035 		_vala_typeregister_function_unref0 (type_fun);
14036 	}
14037 }
14038 
14039 static void
vala_gtype_module_real_visit_method_call(ValaCodeVisitor * base,ValaMethodCall * expr)14040 vala_gtype_module_real_visit_method_call (ValaCodeVisitor* base,
14041                                           ValaMethodCall* expr)
14042 {
14043 	ValaGTypeModule * self;
14044 	ValaMemberAccess* ma = NULL;
14045 	ValaExpression* _tmp0_;
14046 	ValaExpression* _tmp1_;
14047 	ValaMemberAccess* _tmp2_;
14048 	ValaMethodType* mtype = NULL;
14049 	ValaExpression* _tmp3_;
14050 	ValaExpression* _tmp4_;
14051 	ValaDataType* _tmp5_;
14052 	ValaDataType* _tmp6_;
14053 	ValaMethodType* _tmp7_;
14054 	gboolean _tmp8_ = FALSE;
14055 	gboolean _tmp9_ = FALSE;
14056 	gboolean _tmp10_ = FALSE;
14057 	gboolean _tmp11_ = FALSE;
14058 	gboolean _tmp12_ = FALSE;
14059 	ValaMethodType* _tmp13_;
14060 	gboolean is_flags = FALSE;
14061 	ValaMemberAccess* _tmp39_;
14062 	ValaExpression* _tmp40_;
14063 	ValaExpression* _tmp41_;
14064 	ValaDataType* _tmp42_;
14065 	ValaDataType* _tmp43_;
14066 	ValaTypeSymbol* _tmp44_;
14067 	ValaTypeSymbol* _tmp45_;
14068 	gboolean _tmp46_;
14069 	gboolean _tmp47_;
14070 	ValaSourceReference* _tmp48_;
14071 	ValaSourceReference* _tmp49_;
14072 	ValaCodeContext* _tmp50_;
14073 	ValaCodeContext* _tmp51_;
14074 	self = (ValaGTypeModule*) base;
14075 	g_return_if_fail (expr != NULL);
14076 	_tmp0_ = vala_method_call_get_call (expr);
14077 	_tmp1_ = _tmp0_;
14078 	_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp1_) : NULL);
14079 	ma = _tmp2_;
14080 	_tmp3_ = vala_method_call_get_call (expr);
14081 	_tmp4_ = _tmp3_;
14082 	_tmp5_ = vala_expression_get_value_type (_tmp4_);
14083 	_tmp6_ = _tmp5_;
14084 	_tmp7_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_METHOD_TYPE) ? ((ValaMethodType*) _tmp6_) : NULL);
14085 	mtype = _tmp7_;
14086 	_tmp13_ = mtype;
14087 	if (_tmp13_ == NULL) {
14088 		_tmp12_ = TRUE;
14089 	} else {
14090 		ValaMemberAccess* _tmp14_;
14091 		_tmp14_ = ma;
14092 		_tmp12_ = _tmp14_ == NULL;
14093 	}
14094 	if (_tmp12_) {
14095 		_tmp11_ = TRUE;
14096 	} else {
14097 		ValaMemberAccess* _tmp15_;
14098 		ValaExpression* _tmp16_;
14099 		ValaExpression* _tmp17_;
14100 		_tmp15_ = ma;
14101 		_tmp16_ = vala_member_access_get_inner (_tmp15_);
14102 		_tmp17_ = _tmp16_;
14103 		_tmp11_ = _tmp17_ == NULL;
14104 	}
14105 	if (_tmp11_) {
14106 		_tmp10_ = TRUE;
14107 	} else {
14108 		ValaMemberAccess* _tmp18_;
14109 		ValaExpression* _tmp19_;
14110 		ValaExpression* _tmp20_;
14111 		ValaDataType* _tmp21_;
14112 		ValaDataType* _tmp22_;
14113 		_tmp18_ = ma;
14114 		_tmp19_ = vala_member_access_get_inner (_tmp18_);
14115 		_tmp20_ = _tmp19_;
14116 		_tmp21_ = vala_expression_get_value_type (_tmp20_);
14117 		_tmp22_ = _tmp21_;
14118 		_tmp10_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp22_, VALA_TYPE_ENUM_VALUE_TYPE);
14119 	}
14120 	if (_tmp10_) {
14121 		_tmp9_ = TRUE;
14122 	} else {
14123 		ValaMemberAccess* _tmp23_;
14124 		ValaExpression* _tmp24_;
14125 		ValaExpression* _tmp25_;
14126 		ValaDataType* _tmp26_;
14127 		ValaDataType* _tmp27_;
14128 		ValaTypeSymbol* _tmp28_;
14129 		ValaTypeSymbol* _tmp29_;
14130 		_tmp23_ = ma;
14131 		_tmp24_ = vala_member_access_get_inner (_tmp23_);
14132 		_tmp25_ = _tmp24_;
14133 		_tmp26_ = vala_expression_get_value_type (_tmp25_);
14134 		_tmp27_ = _tmp26_;
14135 		_tmp28_ = vala_data_type_get_type_symbol (_tmp27_);
14136 		_tmp29_ = _tmp28_;
14137 		_tmp9_ = !vala_get_ccode_has_type_id (_tmp29_);
14138 	}
14139 	if (_tmp9_) {
14140 		_tmp8_ = TRUE;
14141 	} else {
14142 		ValaMethodType* _tmp30_;
14143 		ValaMethod* _tmp31_;
14144 		ValaMethod* _tmp32_;
14145 		ValaMemberAccess* _tmp33_;
14146 		ValaExpression* _tmp34_;
14147 		ValaExpression* _tmp35_;
14148 		ValaDataType* _tmp36_;
14149 		ValaDataType* _tmp37_;
14150 		ValaMethod* _tmp38_;
14151 		_tmp30_ = mtype;
14152 		_tmp31_ = vala_method_type_get_method_symbol (_tmp30_);
14153 		_tmp32_ = _tmp31_;
14154 		_tmp33_ = ma;
14155 		_tmp34_ = vala_member_access_get_inner (_tmp33_);
14156 		_tmp35_ = _tmp34_;
14157 		_tmp36_ = vala_expression_get_value_type (_tmp35_);
14158 		_tmp37_ = _tmp36_;
14159 		_tmp38_ = vala_enum_value_type_get_to_string_method (G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, VALA_TYPE_ENUM_VALUE_TYPE, ValaEnumValueType));
14160 		_tmp8_ = _tmp32_ != _tmp38_;
14161 	}
14162 	if (_tmp8_) {
14163 		VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), expr);
14164 		_vala_code_node_unref0 (mtype);
14165 		_vala_code_node_unref0 (ma);
14166 		return;
14167 	}
14168 	_tmp39_ = ma;
14169 	_tmp40_ = vala_member_access_get_inner (_tmp39_);
14170 	_tmp41_ = _tmp40_;
14171 	_tmp42_ = vala_expression_get_value_type (_tmp41_);
14172 	_tmp43_ = _tmp42_;
14173 	_tmp44_ = vala_data_type_get_type_symbol ((ValaDataType*) G_TYPE_CHECK_INSTANCE_CAST (_tmp43_, VALA_TYPE_ENUM_VALUE_TYPE, ValaEnumValueType));
14174 	_tmp45_ = _tmp44_;
14175 	_tmp46_ = vala_enum_get_is_flags (G_TYPE_CHECK_INSTANCE_CAST (_tmp45_, VALA_TYPE_ENUM, ValaEnum));
14176 	_tmp47_ = _tmp46_;
14177 	is_flags = _tmp47_;
14178 	_tmp48_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
14179 	_tmp49_ = _tmp48_;
14180 	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp49_);
14181 	_tmp50_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
14182 	_tmp51_ = _tmp50_;
14183 	if (vala_code_context_require_glib_version (_tmp51_, 2, 54)) {
14184 		const gchar* _tmp52_ = NULL;
14185 		ValaCCodeFunctionCall* to_string = NULL;
14186 		ValaCCodeIdentifier* _tmp53_;
14187 		ValaCCodeIdentifier* _tmp54_;
14188 		ValaCCodeFunctionCall* _tmp55_;
14189 		ValaCCodeFunctionCall* _tmp56_;
14190 		ValaCCodeFunctionCall* _tmp57_;
14191 		ValaMemberAccess* _tmp58_;
14192 		ValaExpression* _tmp59_;
14193 		ValaExpression* _tmp60_;
14194 		ValaDataType* _tmp61_;
14195 		ValaDataType* _tmp62_;
14196 		gchar* _tmp63_;
14197 		gchar* _tmp64_;
14198 		ValaCCodeIdentifier* _tmp65_;
14199 		ValaCCodeIdentifier* _tmp66_;
14200 		ValaCCodeFunctionCall* _tmp67_;
14201 		ValaExpression* _tmp68_;
14202 		ValaExpression* _tmp69_;
14203 		ValaExpression* _tmp70_;
14204 		ValaExpression* _tmp71_;
14205 		ValaCCodeExpression* _tmp72_;
14206 		ValaCCodeExpression* _tmp73_;
14207 		ValaDataType* _tmp74_;
14208 		ValaDataType* _tmp75_;
14209 		ValaCCodeFunctionCall* _tmp76_;
14210 		if (is_flags) {
14211 			_tmp52_ = "g_flags_to_string";
14212 		} else {
14213 			_tmp52_ = "g_enum_to_string";
14214 		}
14215 		_tmp53_ = vala_ccode_identifier_new (_tmp52_);
14216 		_tmp54_ = _tmp53_;
14217 		_tmp55_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp54_);
14218 		_tmp56_ = _tmp55_;
14219 		_vala_ccode_node_unref0 (_tmp54_);
14220 		to_string = _tmp56_;
14221 		_tmp57_ = to_string;
14222 		_tmp58_ = ma;
14223 		_tmp59_ = vala_member_access_get_inner (_tmp58_);
14224 		_tmp60_ = _tmp59_;
14225 		_tmp61_ = vala_expression_get_value_type (_tmp60_);
14226 		_tmp62_ = _tmp61_;
14227 		_tmp63_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp62_);
14228 		_tmp64_ = _tmp63_;
14229 		_tmp65_ = vala_ccode_identifier_new (_tmp64_);
14230 		_tmp66_ = _tmp65_;
14231 		vala_ccode_function_call_add_argument (_tmp57_, (ValaCCodeExpression*) _tmp66_);
14232 		_vala_ccode_node_unref0 (_tmp66_);
14233 		_g_free0 (_tmp64_);
14234 		_tmp67_ = to_string;
14235 		_tmp68_ = vala_method_call_get_call (expr);
14236 		_tmp69_ = _tmp68_;
14237 		_tmp70_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp69_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
14238 		_tmp71_ = _tmp70_;
14239 		_tmp72_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp71_);
14240 		_tmp73_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp72_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
14241 		vala_ccode_function_call_add_argument (_tmp67_, _tmp73_);
14242 		_vala_ccode_node_unref0 (_tmp73_);
14243 		_tmp74_ = vala_expression_get_value_type ((ValaExpression*) expr);
14244 		_tmp75_ = _tmp74_;
14245 		vala_data_type_set_value_owned (_tmp75_, TRUE);
14246 		_tmp76_ = to_string;
14247 		vala_set_cvalue ((ValaExpression*) expr, (ValaCCodeExpression*) _tmp76_);
14248 		_vala_ccode_node_unref0 (to_string);
14249 	} else {
14250 		const gchar* _tmp77_ = NULL;
14251 		ValaLocalVariable* temp_var = NULL;
14252 		ValaCType* _tmp78_;
14253 		ValaCType* _tmp79_;
14254 		ValaLocalVariable* _tmp80_;
14255 		ValaLocalVariable* _tmp81_;
14256 		ValaLocalVariable* _tmp82_;
14257 		ValaCCodeFunctionCall* class_ref = NULL;
14258 		ValaCCodeIdentifier* _tmp83_;
14259 		ValaCCodeIdentifier* _tmp84_;
14260 		ValaCCodeFunctionCall* _tmp85_;
14261 		ValaCCodeFunctionCall* _tmp86_;
14262 		ValaCCodeFunctionCall* _tmp87_;
14263 		ValaMemberAccess* _tmp88_;
14264 		ValaExpression* _tmp89_;
14265 		ValaExpression* _tmp90_;
14266 		ValaDataType* _tmp91_;
14267 		ValaDataType* _tmp92_;
14268 		gchar* _tmp93_;
14269 		gchar* _tmp94_;
14270 		ValaCCodeIdentifier* _tmp95_;
14271 		ValaCCodeIdentifier* _tmp96_;
14272 		const gchar* _tmp97_ = NULL;
14273 		ValaCCodeFunctionCall* get_value = NULL;
14274 		ValaCCodeIdentifier* _tmp98_;
14275 		ValaCCodeIdentifier* _tmp99_;
14276 		ValaCCodeFunctionCall* _tmp100_;
14277 		ValaCCodeFunctionCall* _tmp101_;
14278 		ValaCCodeFunctionCall* _tmp102_;
14279 		ValaCCodeFunctionCall* _tmp103_;
14280 		ValaCCodeFunctionCall* _tmp104_;
14281 		ValaExpression* _tmp105_;
14282 		ValaExpression* _tmp106_;
14283 		ValaExpression* _tmp107_;
14284 		ValaExpression* _tmp108_;
14285 		ValaCCodeExpression* _tmp109_;
14286 		ValaCCodeExpression* _tmp110_;
14287 		ValaCCodeFunction* _tmp111_;
14288 		ValaCCodeFunction* _tmp112_;
14289 		ValaLocalVariable* _tmp113_;
14290 		const gchar* _tmp114_;
14291 		const gchar* _tmp115_;
14292 		ValaCCodeExpression* _tmp116_;
14293 		ValaCCodeExpression* _tmp117_;
14294 		ValaCCodeFunctionCall* _tmp118_;
14295 		ValaCCodeBinaryExpression* is_null_value = NULL;
14296 		ValaLocalVariable* _tmp119_;
14297 		const gchar* _tmp120_;
14298 		const gchar* _tmp121_;
14299 		ValaCCodeExpression* _tmp122_;
14300 		ValaCCodeExpression* _tmp123_;
14301 		ValaCCodeConstant* _tmp124_;
14302 		ValaCCodeConstant* _tmp125_;
14303 		ValaCCodeBinaryExpression* _tmp126_;
14304 		ValaCCodeBinaryExpression* _tmp127_;
14305 		ValaCCodeBinaryExpression* _tmp128_;
14306 		ValaLocalVariable* _tmp129_;
14307 		const gchar* _tmp130_;
14308 		const gchar* _tmp131_;
14309 		ValaCCodeExpression* _tmp132_;
14310 		ValaCCodeExpression* _tmp133_;
14311 		ValaCCodeMemberAccess* _tmp134_;
14312 		ValaCCodeMemberAccess* _tmp135_;
14313 		ValaCCodeConstant* _tmp136_;
14314 		ValaCCodeConstant* _tmp137_;
14315 		ValaCCodeConditionalExpression* _tmp138_;
14316 		ValaCCodeConditionalExpression* _tmp139_;
14317 		if (is_flags) {
14318 			_tmp77_ = "GFlagsValue*";
14319 		} else {
14320 			_tmp77_ = "GEnumValue*";
14321 		}
14322 		_tmp78_ = vala_ctype_new (_tmp77_, "NULL");
14323 		_tmp79_ = _tmp78_;
14324 		_tmp80_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, (ValaDataType*) _tmp79_, FALSE, (ValaCodeNode*) expr, FALSE);
14325 		_tmp81_ = _tmp80_;
14326 		_vala_code_node_unref0 (_tmp79_);
14327 		temp_var = _tmp81_;
14328 		_tmp82_ = temp_var;
14329 		vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp82_, FALSE);
14330 		_tmp83_ = vala_ccode_identifier_new ("g_type_class_ref");
14331 		_tmp84_ = _tmp83_;
14332 		_tmp85_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp84_);
14333 		_tmp86_ = _tmp85_;
14334 		_vala_ccode_node_unref0 (_tmp84_);
14335 		class_ref = _tmp86_;
14336 		_tmp87_ = class_ref;
14337 		_tmp88_ = ma;
14338 		_tmp89_ = vala_member_access_get_inner (_tmp88_);
14339 		_tmp90_ = _tmp89_;
14340 		_tmp91_ = vala_expression_get_value_type (_tmp90_);
14341 		_tmp92_ = _tmp91_;
14342 		_tmp93_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp92_);
14343 		_tmp94_ = _tmp93_;
14344 		_tmp95_ = vala_ccode_identifier_new (_tmp94_);
14345 		_tmp96_ = _tmp95_;
14346 		vala_ccode_function_call_add_argument (_tmp87_, (ValaCCodeExpression*) _tmp96_);
14347 		_vala_ccode_node_unref0 (_tmp96_);
14348 		_g_free0 (_tmp94_);
14349 		if (is_flags) {
14350 			_tmp97_ = "g_flags_get_first_value";
14351 		} else {
14352 			_tmp97_ = "g_enum_get_value";
14353 		}
14354 		_tmp98_ = vala_ccode_identifier_new (_tmp97_);
14355 		_tmp99_ = _tmp98_;
14356 		_tmp100_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp99_);
14357 		_tmp101_ = _tmp100_;
14358 		_vala_ccode_node_unref0 (_tmp99_);
14359 		get_value = _tmp101_;
14360 		_tmp102_ = get_value;
14361 		_tmp103_ = class_ref;
14362 		vala_ccode_function_call_add_argument (_tmp102_, (ValaCCodeExpression*) _tmp103_);
14363 		_tmp104_ = get_value;
14364 		_tmp105_ = vala_method_call_get_call (expr);
14365 		_tmp106_ = _tmp105_;
14366 		_tmp107_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp106_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
14367 		_tmp108_ = _tmp107_;
14368 		_tmp109_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp108_);
14369 		_tmp110_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp109_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
14370 		vala_ccode_function_call_add_argument (_tmp104_, _tmp110_);
14371 		_vala_ccode_node_unref0 (_tmp110_);
14372 		_tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
14373 		_tmp112_ = _tmp111_;
14374 		_tmp113_ = temp_var;
14375 		_tmp114_ = vala_symbol_get_name ((ValaSymbol*) _tmp113_);
14376 		_tmp115_ = _tmp114_;
14377 		_tmp116_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp115_);
14378 		_tmp117_ = _tmp116_;
14379 		_tmp118_ = get_value;
14380 		vala_ccode_function_add_assignment (_tmp112_, _tmp117_, (ValaCCodeExpression*) _tmp118_);
14381 		_vala_ccode_node_unref0 (_tmp117_);
14382 		_tmp119_ = temp_var;
14383 		_tmp120_ = vala_symbol_get_name ((ValaSymbol*) _tmp119_);
14384 		_tmp121_ = _tmp120_;
14385 		_tmp122_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp121_);
14386 		_tmp123_ = _tmp122_;
14387 		_tmp124_ = vala_ccode_constant_new ("NULL");
14388 		_tmp125_ = _tmp124_;
14389 		_tmp126_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp123_, (ValaCCodeExpression*) _tmp125_);
14390 		_tmp127_ = _tmp126_;
14391 		_vala_ccode_node_unref0 (_tmp125_);
14392 		_vala_ccode_node_unref0 (_tmp123_);
14393 		is_null_value = _tmp127_;
14394 		_tmp128_ = is_null_value;
14395 		_tmp129_ = temp_var;
14396 		_tmp130_ = vala_symbol_get_name ((ValaSymbol*) _tmp129_);
14397 		_tmp131_ = _tmp130_;
14398 		_tmp132_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp131_);
14399 		_tmp133_ = _tmp132_;
14400 		_tmp134_ = vala_ccode_member_access_new_pointer (_tmp133_, "value_name");
14401 		_tmp135_ = _tmp134_;
14402 		_tmp136_ = vala_ccode_constant_new ("NULL");
14403 		_tmp137_ = _tmp136_;
14404 		_tmp138_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp128_, (ValaCCodeExpression*) _tmp135_, (ValaCCodeExpression*) _tmp137_);
14405 		_tmp139_ = _tmp138_;
14406 		vala_set_cvalue ((ValaExpression*) expr, (ValaCCodeExpression*) _tmp139_);
14407 		_vala_ccode_node_unref0 (_tmp139_);
14408 		_vala_ccode_node_unref0 (_tmp137_);
14409 		_vala_ccode_node_unref0 (_tmp135_);
14410 		_vala_ccode_node_unref0 (_tmp133_);
14411 		_vala_ccode_node_unref0 (is_null_value);
14412 		_vala_ccode_node_unref0 (get_value);
14413 		_vala_ccode_node_unref0 (class_ref);
14414 		_vala_code_node_unref0 (temp_var);
14415 	}
14416 	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
14417 	_vala_code_node_unref0 (mtype);
14418 	_vala_code_node_unref0 (ma);
14419 }
14420 
14421 static void
vala_gtype_module_real_visit_property(ValaCodeVisitor * base,ValaProperty * prop)14422 vala_gtype_module_real_visit_property (ValaCodeVisitor* base,
14423                                        ValaProperty* prop)
14424 {
14425 	ValaGTypeModule * self;
14426 	ValaClass* cl = NULL;
14427 	ValaTypeSymbol* _tmp0_;
14428 	ValaTypeSymbol* _tmp1_;
14429 	ValaClass* _tmp2_;
14430 	ValaStruct* st = NULL;
14431 	ValaTypeSymbol* _tmp3_;
14432 	ValaTypeSymbol* _tmp4_;
14433 	ValaStruct* _tmp5_;
14434 	ValaProperty* base_prop = NULL;
14435 	ValaProperty* _tmp6_;
14436 	ValaProperty* _tmp7_;
14437 	ValaProperty* _tmp8_;
14438 	gboolean _tmp17_ = FALSE;
14439 	gboolean _tmp18_ = FALSE;
14440 	ValaClass* _tmp19_;
14441 	gboolean _tmp32_ = FALSE;
14442 	gboolean _tmp33_ = FALSE;
14443 	ValaProperty* _tmp34_;
14444 	ValaAttribute* _tmp35_;
14445 	self = (ValaGTypeModule*) base;
14446 	g_return_if_fail (prop != NULL);
14447 	_tmp0_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
14448 	_tmp1_ = _tmp0_;
14449 	_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp1_) : NULL);
14450 	cl = _tmp2_;
14451 	_tmp3_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
14452 	_tmp4_ = _tmp3_;
14453 	_tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp4_) : NULL);
14454 	st = _tmp5_;
14455 	_tmp6_ = _vala_code_node_ref0 (prop);
14456 	base_prop = _tmp6_;
14457 	_tmp7_ = vala_property_get_base_property (prop);
14458 	_tmp8_ = _tmp7_;
14459 	if (_tmp8_ != NULL) {
14460 		ValaProperty* _tmp9_;
14461 		ValaProperty* _tmp10_;
14462 		ValaProperty* _tmp11_;
14463 		_tmp9_ = vala_property_get_base_property (prop);
14464 		_tmp10_ = _tmp9_;
14465 		_tmp11_ = _vala_code_node_ref0 (_tmp10_);
14466 		_vala_code_node_unref0 (base_prop);
14467 		base_prop = _tmp11_;
14468 	} else {
14469 		ValaProperty* _tmp12_;
14470 		ValaProperty* _tmp13_;
14471 		_tmp12_ = vala_property_get_base_interface_property (prop);
14472 		_tmp13_ = _tmp12_;
14473 		if (_tmp13_ != NULL) {
14474 			ValaProperty* _tmp14_;
14475 			ValaProperty* _tmp15_;
14476 			ValaProperty* _tmp16_;
14477 			_tmp14_ = vala_property_get_base_interface_property (prop);
14478 			_tmp15_ = _tmp14_;
14479 			_tmp16_ = _vala_code_node_ref0 (_tmp15_);
14480 			_vala_code_node_unref0 (base_prop);
14481 			base_prop = _tmp16_;
14482 		}
14483 	}
14484 	_tmp19_ = cl;
14485 	if (_tmp19_ != NULL) {
14486 		ValaClass* _tmp20_;
14487 		gboolean _tmp21_;
14488 		gboolean _tmp22_;
14489 		_tmp20_ = cl;
14490 		_tmp21_ = vala_class_get_is_compact (_tmp20_);
14491 		_tmp22_ = _tmp21_;
14492 		_tmp18_ = _tmp22_;
14493 	} else {
14494 		_tmp18_ = FALSE;
14495 	}
14496 	if (_tmp18_) {
14497 		gboolean _tmp23_ = FALSE;
14498 		ValaPropertyAccessor* _tmp24_;
14499 		ValaPropertyAccessor* _tmp25_;
14500 		_tmp24_ = vala_property_get_get_accessor (prop);
14501 		_tmp25_ = _tmp24_;
14502 		if (_tmp25_ == NULL) {
14503 			_tmp23_ = TRUE;
14504 		} else {
14505 			ValaPropertyAccessor* _tmp26_;
14506 			ValaPropertyAccessor* _tmp27_;
14507 			gboolean _tmp28_;
14508 			gboolean _tmp29_;
14509 			_tmp26_ = vala_property_get_get_accessor (prop);
14510 			_tmp27_ = _tmp26_;
14511 			_tmp28_ = vala_property_accessor_get_automatic_body (_tmp27_);
14512 			_tmp29_ = _tmp28_;
14513 			_tmp23_ = _tmp29_;
14514 		}
14515 		_tmp17_ = _tmp23_;
14516 	} else {
14517 		_tmp17_ = FALSE;
14518 	}
14519 	if (_tmp17_) {
14520 		ValaSourceReference* _tmp30_;
14521 		ValaSourceReference* _tmp31_;
14522 		_tmp30_ = vala_code_node_get_source_reference ((ValaCodeNode*) prop);
14523 		_tmp31_ = _tmp30_;
14524 		vala_report_error (_tmp31_, "Properties without accessor bodies are not supported in compact classe" \
14525 "s");
14526 		_vala_code_node_unref0 (base_prop);
14527 		_vala_code_node_unref0 (st);
14528 		_vala_code_node_unref0 (cl);
14529 		return;
14530 	}
14531 	_tmp34_ = base_prop;
14532 	_tmp35_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp34_, "NoAccessorMethod");
14533 	if (_tmp35_ == NULL) {
14534 		const gchar* _tmp36_;
14535 		const gchar* _tmp37_;
14536 		_tmp36_ = vala_symbol_get_name ((ValaSymbol*) prop);
14537 		_tmp37_ = _tmp36_;
14538 		_tmp33_ = g_strcmp0 (_tmp37_, "type") == 0;
14539 	} else {
14540 		_tmp33_ = FALSE;
14541 	}
14542 	if (_tmp33_) {
14543 		gboolean _tmp38_ = FALSE;
14544 		gboolean _tmp39_ = FALSE;
14545 		ValaClass* _tmp40_;
14546 		_tmp40_ = cl;
14547 		if (_tmp40_ != NULL) {
14548 			ValaClass* _tmp41_;
14549 			gboolean _tmp42_;
14550 			gboolean _tmp43_;
14551 			_tmp41_ = cl;
14552 			_tmp42_ = vala_class_get_is_compact (_tmp41_);
14553 			_tmp43_ = _tmp42_;
14554 			_tmp39_ = !_tmp43_;
14555 		} else {
14556 			_tmp39_ = FALSE;
14557 		}
14558 		if (_tmp39_) {
14559 			_tmp38_ = TRUE;
14560 		} else {
14561 			gboolean _tmp44_ = FALSE;
14562 			ValaStruct* _tmp45_;
14563 			_tmp45_ = st;
14564 			if (_tmp45_ != NULL) {
14565 				ValaStruct* _tmp46_;
14566 				_tmp46_ = st;
14567 				_tmp44_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp46_);
14568 			} else {
14569 				_tmp44_ = FALSE;
14570 			}
14571 			_tmp38_ = _tmp44_;
14572 		}
14573 		_tmp32_ = _tmp38_;
14574 	} else {
14575 		_tmp32_ = FALSE;
14576 	}
14577 	if (_tmp32_) {
14578 		ValaSourceReference* _tmp47_;
14579 		ValaSourceReference* _tmp48_;
14580 		_tmp47_ = vala_code_node_get_source_reference ((ValaCodeNode*) prop);
14581 		_tmp48_ = _tmp47_;
14582 		vala_report_error (_tmp48_, "Property 'type' not allowed");
14583 		_vala_code_node_unref0 (base_prop);
14584 		_vala_code_node_unref0 (st);
14585 		_vala_code_node_unref0 (cl);
14586 		return;
14587 	}
14588 	VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_property ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), prop);
14589 	_vala_code_node_unref0 (base_prop);
14590 	_vala_code_node_unref0 (st);
14591 	_vala_code_node_unref0 (cl);
14592 }
14593 
14594 static void
vala_gtype_module_real_create_type_check_statement(ValaCCodeBaseModule * base,ValaCodeNode * method_node,ValaDataType * ret_type,ValaTypeSymbol * t,gboolean non_null,const gchar * var_name)14595 vala_gtype_module_real_create_type_check_statement (ValaCCodeBaseModule* base,
14596                                                     ValaCodeNode* method_node,
14597                                                     ValaDataType* ret_type,
14598                                                     ValaTypeSymbol* t,
14599                                                     gboolean non_null,
14600                                                     const gchar* var_name)
14601 {
14602 	ValaGTypeModule * self;
14603 	ValaCCodeFunctionCall* ccheck = NULL;
14604 	ValaCCodeFunctionCall* _tmp0_;
14605 	ValaCodeContext* _tmp1_;
14606 	ValaCodeContext* _tmp2_;
14607 	gboolean _tmp3_;
14608 	gboolean _tmp4_;
14609 	ValaCCodeFile* _tmp61_;
14610 	ValaCreationMethod* cm = NULL;
14611 	ValaCreationMethod* _tmp62_;
14612 	gboolean _tmp63_ = FALSE;
14613 	ValaCreationMethod* _tmp64_;
14614 	ValaCCodeFunction* _tmp92_;
14615 	ValaCCodeFunction* _tmp93_;
14616 	ValaCCodeFunctionCall* _tmp94_;
14617 	self = (ValaGTypeModule*) base;
14618 	g_return_if_fail (method_node != NULL);
14619 	g_return_if_fail (ret_type != NULL);
14620 	g_return_if_fail (t != NULL);
14621 	g_return_if_fail (var_name != NULL);
14622 	_tmp0_ = vala_ccode_function_call_new (NULL);
14623 	ccheck = _tmp0_;
14624 	_tmp1_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
14625 	_tmp2_ = _tmp1_;
14626 	_tmp3_ = vala_code_context_get_assert (_tmp2_);
14627 	_tmp4_ = _tmp3_;
14628 	if (!_tmp4_) {
14629 		_vala_ccode_node_unref0 (ccheck);
14630 		return;
14631 	} else {
14632 		gboolean _tmp5_ = FALSE;
14633 		ValaCodeContext* _tmp6_;
14634 		ValaCodeContext* _tmp7_;
14635 		gboolean _tmp8_;
14636 		gboolean _tmp9_;
14637 		_tmp6_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
14638 		_tmp7_ = _tmp6_;
14639 		_tmp8_ = vala_code_context_get_checking (_tmp7_);
14640 		_tmp9_ = _tmp8_;
14641 		if (_tmp9_) {
14642 			gboolean _tmp10_ = FALSE;
14643 			gboolean _tmp11_ = FALSE;
14644 			if (G_TYPE_CHECK_INSTANCE_TYPE (t, VALA_TYPE_CLASS)) {
14645 				gboolean _tmp12_;
14646 				gboolean _tmp13_;
14647 				_tmp12_ = vala_class_get_is_compact (G_TYPE_CHECK_INSTANCE_CAST (t, VALA_TYPE_CLASS, ValaClass));
14648 				_tmp13_ = _tmp12_;
14649 				_tmp11_ = !_tmp13_;
14650 			} else {
14651 				_tmp11_ = FALSE;
14652 			}
14653 			if (_tmp11_) {
14654 				_tmp10_ = TRUE;
14655 			} else {
14656 				_tmp10_ = G_TYPE_CHECK_INSTANCE_TYPE (t, VALA_TYPE_INTERFACE);
14657 			}
14658 			_tmp5_ = _tmp10_;
14659 		} else {
14660 			_tmp5_ = FALSE;
14661 		}
14662 		if (_tmp5_) {
14663 			ValaCCodeFunctionCall* ctype_check = NULL;
14664 			gboolean _tmp14_;
14665 			gboolean _tmp15_;
14666 			ValaCCodeExpression* cexpr = NULL;
14667 			ValaCCodeFunctionCall* _tmp35_;
14668 			ValaCCodeExpression* _tmp36_;
14669 			ValaCCodeFunctionCall* _tmp46_;
14670 			ValaCCodeExpression* _tmp47_;
14671 			if (!vala_get_ccode_has_type_id (t)) {
14672 				_vala_ccode_node_unref0 (ccheck);
14673 				return;
14674 			}
14675 			_tmp14_ = vala_symbol_get_external_package ((ValaSymbol*) t);
14676 			_tmp15_ = _tmp14_;
14677 			if (_tmp15_) {
14678 				ValaCCodeIdentifier* _tmp16_;
14679 				ValaCCodeIdentifier* _tmp17_;
14680 				ValaCCodeFunctionCall* _tmp18_;
14681 				ValaCCodeFunctionCall* _tmp19_;
14682 				ValaCCodeIdentifier* _tmp20_;
14683 				ValaCCodeIdentifier* _tmp21_;
14684 				ValaCCodeFunctionCall* _tmp22_;
14685 				gchar* _tmp23_;
14686 				gchar* _tmp24_;
14687 				ValaCCodeIdentifier* _tmp25_;
14688 				ValaCCodeIdentifier* _tmp26_;
14689 				_tmp16_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
14690 				_tmp17_ = _tmp16_;
14691 				_tmp18_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp17_);
14692 				_vala_ccode_node_unref0 (ctype_check);
14693 				ctype_check = _tmp18_;
14694 				_vala_ccode_node_unref0 (_tmp17_);
14695 				_tmp19_ = ctype_check;
14696 				_tmp20_ = vala_ccode_identifier_new (var_name);
14697 				_tmp21_ = _tmp20_;
14698 				vala_ccode_function_call_add_argument (_tmp19_, (ValaCCodeExpression*) _tmp21_);
14699 				_vala_ccode_node_unref0 (_tmp21_);
14700 				_tmp22_ = ctype_check;
14701 				_tmp23_ = vala_get_ccode_type_id ((ValaCodeNode*) t);
14702 				_tmp24_ = _tmp23_;
14703 				_tmp25_ = vala_ccode_identifier_new (_tmp24_);
14704 				_tmp26_ = _tmp25_;
14705 				vala_ccode_function_call_add_argument (_tmp22_, (ValaCCodeExpression*) _tmp26_);
14706 				_vala_ccode_node_unref0 (_tmp26_);
14707 				_g_free0 (_tmp24_);
14708 			} else {
14709 				gchar* _tmp27_;
14710 				gchar* _tmp28_;
14711 				ValaCCodeIdentifier* _tmp29_;
14712 				ValaCCodeIdentifier* _tmp30_;
14713 				ValaCCodeFunctionCall* _tmp31_;
14714 				ValaCCodeFunctionCall* _tmp32_;
14715 				ValaCCodeIdentifier* _tmp33_;
14716 				ValaCCodeIdentifier* _tmp34_;
14717 				_tmp27_ = vala_get_ccode_type_check_function (t);
14718 				_tmp28_ = _tmp27_;
14719 				_tmp29_ = vala_ccode_identifier_new (_tmp28_);
14720 				_tmp30_ = _tmp29_;
14721 				_tmp31_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp30_);
14722 				_vala_ccode_node_unref0 (ctype_check);
14723 				ctype_check = _tmp31_;
14724 				_vala_ccode_node_unref0 (_tmp30_);
14725 				_g_free0 (_tmp28_);
14726 				_tmp32_ = ctype_check;
14727 				_tmp33_ = vala_ccode_identifier_new (var_name);
14728 				_tmp34_ = _tmp33_;
14729 				vala_ccode_function_call_add_argument (_tmp32_, (ValaCCodeExpression*) _tmp34_);
14730 				_vala_ccode_node_unref0 (_tmp34_);
14731 			}
14732 			_tmp35_ = ctype_check;
14733 			_tmp36_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp35_);
14734 			cexpr = _tmp36_;
14735 			if (!non_null) {
14736 				ValaCCodeBinaryExpression* cnull = NULL;
14737 				ValaCCodeIdentifier* _tmp37_;
14738 				ValaCCodeIdentifier* _tmp38_;
14739 				ValaCCodeConstant* _tmp39_;
14740 				ValaCCodeConstant* _tmp40_;
14741 				ValaCCodeBinaryExpression* _tmp41_;
14742 				ValaCCodeBinaryExpression* _tmp42_;
14743 				ValaCCodeBinaryExpression* _tmp43_;
14744 				ValaCCodeFunctionCall* _tmp44_;
14745 				ValaCCodeBinaryExpression* _tmp45_;
14746 				_tmp37_ = vala_ccode_identifier_new (var_name);
14747 				_tmp38_ = _tmp37_;
14748 				_tmp39_ = vala_ccode_constant_new ("NULL");
14749 				_tmp40_ = _tmp39_;
14750 				_tmp41_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp38_, (ValaCCodeExpression*) _tmp40_);
14751 				_tmp42_ = _tmp41_;
14752 				_vala_ccode_node_unref0 (_tmp40_);
14753 				_vala_ccode_node_unref0 (_tmp38_);
14754 				cnull = _tmp42_;
14755 				_tmp43_ = cnull;
14756 				_tmp44_ = ctype_check;
14757 				_tmp45_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_OR, (ValaCCodeExpression*) _tmp43_, (ValaCCodeExpression*) _tmp44_);
14758 				_vala_ccode_node_unref0 (cexpr);
14759 				cexpr = (ValaCCodeExpression*) _tmp45_;
14760 				_vala_ccode_node_unref0 (cnull);
14761 			}
14762 			_tmp46_ = ccheck;
14763 			_tmp47_ = cexpr;
14764 			vala_ccode_function_call_add_argument (_tmp46_, _tmp47_);
14765 			_vala_ccode_node_unref0 (cexpr);
14766 			_vala_ccode_node_unref0 (ctype_check);
14767 		} else {
14768 			gboolean _tmp48_ = FALSE;
14769 			if (!non_null) {
14770 				_tmp48_ = TRUE;
14771 			} else {
14772 				gboolean _tmp49_ = FALSE;
14773 				if (G_TYPE_CHECK_INSTANCE_TYPE (t, VALA_TYPE_STRUCT)) {
14774 					_tmp49_ = vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (t, VALA_TYPE_STRUCT, ValaStruct));
14775 				} else {
14776 					_tmp49_ = FALSE;
14777 				}
14778 				_tmp48_ = _tmp49_;
14779 			}
14780 			if (_tmp48_) {
14781 				_vala_ccode_node_unref0 (ccheck);
14782 				return;
14783 			} else {
14784 				gboolean _tmp50_ = FALSE;
14785 				ValaClass* _tmp51_;
14786 				_tmp51_ = ((ValaCCodeBaseModule*) self)->glist_type;
14787 				if (t == G_TYPE_CHECK_INSTANCE_CAST (_tmp51_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
14788 					_tmp50_ = TRUE;
14789 				} else {
14790 					ValaClass* _tmp52_;
14791 					_tmp52_ = ((ValaCCodeBaseModule*) self)->gslist_type;
14792 					_tmp50_ = t == G_TYPE_CHECK_INSTANCE_CAST (_tmp52_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
14793 				}
14794 				if (_tmp50_) {
14795 					_vala_ccode_node_unref0 (ccheck);
14796 					return;
14797 				} else {
14798 					ValaCCodeBinaryExpression* cnonnull = NULL;
14799 					ValaCCodeIdentifier* _tmp53_;
14800 					ValaCCodeIdentifier* _tmp54_;
14801 					ValaCCodeConstant* _tmp55_;
14802 					ValaCCodeConstant* _tmp56_;
14803 					ValaCCodeBinaryExpression* _tmp57_;
14804 					ValaCCodeBinaryExpression* _tmp58_;
14805 					ValaCCodeFunctionCall* _tmp59_;
14806 					ValaCCodeBinaryExpression* _tmp60_;
14807 					_tmp53_ = vala_ccode_identifier_new (var_name);
14808 					_tmp54_ = _tmp53_;
14809 					_tmp55_ = vala_ccode_constant_new ("NULL");
14810 					_tmp56_ = _tmp55_;
14811 					_tmp57_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, (ValaCCodeExpression*) _tmp54_, (ValaCCodeExpression*) _tmp56_);
14812 					_tmp58_ = _tmp57_;
14813 					_vala_ccode_node_unref0 (_tmp56_);
14814 					_vala_ccode_node_unref0 (_tmp54_);
14815 					cnonnull = _tmp58_;
14816 					_tmp59_ = ccheck;
14817 					_tmp60_ = cnonnull;
14818 					vala_ccode_function_call_add_argument (_tmp59_, (ValaCCodeExpression*) _tmp60_);
14819 					_vala_ccode_node_unref0 (cnonnull);
14820 				}
14821 			}
14822 		}
14823 	}
14824 	_tmp61_ = ((ValaCCodeBaseModule*) self)->cfile;
14825 	vala_ccode_file_add_include (_tmp61_, "glib.h", FALSE);
14826 	_tmp62_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (method_node, VALA_TYPE_CREATION_METHOD) ? ((ValaCreationMethod*) method_node) : NULL);
14827 	cm = _tmp62_;
14828 	_tmp64_ = cm;
14829 	if (_tmp64_ != NULL) {
14830 		ValaCreationMethod* _tmp65_;
14831 		ValaSymbol* _tmp66_;
14832 		ValaSymbol* _tmp67_;
14833 		_tmp65_ = cm;
14834 		_tmp66_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp65_);
14835 		_tmp67_ = _tmp66_;
14836 		_tmp63_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp67_, VALA_TYPE_OBJECT_TYPE_SYMBOL);
14837 	} else {
14838 		_tmp63_ = FALSE;
14839 	}
14840 	if (_tmp63_) {
14841 		ValaCCodeFunctionCall* _tmp68_;
14842 		ValaCCodeIdentifier* _tmp69_;
14843 		ValaCCodeIdentifier* _tmp70_;
14844 		ValaCCodeFunctionCall* _tmp71_;
14845 		ValaCCodeConstant* _tmp72_;
14846 		ValaCCodeConstant* _tmp73_;
14847 		_tmp68_ = ccheck;
14848 		_tmp69_ = vala_ccode_identifier_new ("g_return_val_if_fail");
14849 		_tmp70_ = _tmp69_;
14850 		vala_ccode_function_call_set_call (_tmp68_, (ValaCCodeExpression*) _tmp70_);
14851 		_vala_ccode_node_unref0 (_tmp70_);
14852 		_tmp71_ = ccheck;
14853 		_tmp72_ = vala_ccode_constant_new ("NULL");
14854 		_tmp73_ = _tmp72_;
14855 		vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
14856 		_vala_ccode_node_unref0 (_tmp73_);
14857 	} else {
14858 		if (G_TYPE_CHECK_INSTANCE_TYPE (ret_type, VALA_TYPE_VOID_TYPE)) {
14859 			ValaCCodeFunctionCall* _tmp74_;
14860 			ValaCCodeIdentifier* _tmp75_;
14861 			ValaCCodeIdentifier* _tmp76_;
14862 			_tmp74_ = ccheck;
14863 			_tmp75_ = vala_ccode_identifier_new ("g_return_if_fail");
14864 			_tmp76_ = _tmp75_;
14865 			vala_ccode_function_call_set_call (_tmp74_, (ValaCCodeExpression*) _tmp76_);
14866 			_vala_ccode_node_unref0 (_tmp76_);
14867 		} else {
14868 			ValaCCodeFunctionCall* _tmp77_;
14869 			ValaCCodeIdentifier* _tmp78_;
14870 			ValaCCodeIdentifier* _tmp79_;
14871 			ValaCCodeExpression* cdefault = NULL;
14872 			ValaCCodeExpression* _tmp80_;
14873 			ValaCCodeExpression* _tmp81_;
14874 			_tmp77_ = ccheck;
14875 			_tmp78_ = vala_ccode_identifier_new ("g_return_val_if_fail");
14876 			_tmp79_ = _tmp78_;
14877 			vala_ccode_function_call_set_call (_tmp77_, (ValaCCodeExpression*) _tmp79_);
14878 			_vala_ccode_node_unref0 (_tmp79_);
14879 			_tmp80_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, ret_type, FALSE, FALSE);
14880 			cdefault = _tmp80_;
14881 			_tmp81_ = cdefault;
14882 			if (_tmp81_ != NULL) {
14883 				ValaCCodeFunctionCall* _tmp82_;
14884 				ValaCCodeExpression* _tmp83_;
14885 				_tmp82_ = ccheck;
14886 				_tmp83_ = cdefault;
14887 				vala_ccode_function_call_add_argument (_tmp82_, _tmp83_);
14888 			} else {
14889 				gboolean _tmp84_ = FALSE;
14890 				ValaTypeSymbol* _tmp85_;
14891 				ValaTypeSymbol* _tmp86_;
14892 				_tmp85_ = vala_data_type_get_type_symbol (ret_type);
14893 				_tmp86_ = _tmp85_;
14894 				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp86_, VALA_TYPE_STRUCT)) {
14895 					ValaTypeSymbol* _tmp87_;
14896 					ValaTypeSymbol* _tmp88_;
14897 					_tmp87_ = vala_data_type_get_type_symbol (ret_type);
14898 					_tmp88_ = _tmp87_;
14899 					_tmp84_ = !vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp88_, VALA_TYPE_STRUCT, ValaStruct));
14900 				} else {
14901 					_tmp84_ = FALSE;
14902 				}
14903 				if (_tmp84_) {
14904 					ValaCCodeFunctionCall* _tmp89_;
14905 					ValaCCodeIdentifier* _tmp90_;
14906 					ValaCCodeIdentifier* _tmp91_;
14907 					_tmp89_ = ccheck;
14908 					_tmp90_ = vala_ccode_identifier_new ("result");
14909 					_tmp91_ = _tmp90_;
14910 					vala_ccode_function_call_add_argument (_tmp89_, (ValaCCodeExpression*) _tmp91_);
14911 					_vala_ccode_node_unref0 (_tmp91_);
14912 				} else {
14913 					_vala_ccode_node_unref0 (cdefault);
14914 					_vala_code_node_unref0 (cm);
14915 					_vala_ccode_node_unref0 (ccheck);
14916 					return;
14917 				}
14918 			}
14919 			_vala_ccode_node_unref0 (cdefault);
14920 		}
14921 	}
14922 	_tmp92_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
14923 	_tmp93_ = _tmp92_;
14924 	_tmp94_ = ccheck;
14925 	vala_ccode_function_add_expression (_tmp93_, (ValaCCodeExpression*) _tmp94_);
14926 	_vala_code_node_unref0 (cm);
14927 	_vala_ccode_node_unref0 (ccheck);
14928 }
14929 
14930 static gpointer
_vala_target_value_ref0(gpointer self)14931 _vala_target_value_ref0 (gpointer self)
14932 {
14933 	return self ? vala_target_value_ref (self) : NULL;
14934 }
14935 
14936 static void
vala_gtype_module_real_visit_cast_expression(ValaCodeVisitor * base,ValaCastExpression * expr)14937 vala_gtype_module_real_visit_cast_expression (ValaCodeVisitor* base,
14938                                               ValaCastExpression* expr)
14939 {
14940 	ValaGTypeModule * self;
14941 	ValaObjectTypeSymbol* type_symbol = NULL;
14942 	ValaDataType* _tmp0_;
14943 	ValaDataType* _tmp1_;
14944 	ValaTypeSymbol* _tmp2_;
14945 	ValaTypeSymbol* _tmp3_;
14946 	gboolean _tmp4_ = FALSE;
14947 	ValaObjectTypeSymbol* _tmp5_;
14948 	ValaDataType* _tmp11_;
14949 	ValaDataType* _tmp12_;
14950 	ValaCCodeFile* _tmp13_;
14951 	gboolean _tmp14_;
14952 	gboolean _tmp15_;
14953 	self = (ValaGTypeModule*) base;
14954 	g_return_if_fail (expr != NULL);
14955 	_tmp0_ = vala_cast_expression_get_type_reference (expr);
14956 	_tmp1_ = _tmp0_;
14957 	_tmp2_ = vala_data_type_get_type_symbol (_tmp1_);
14958 	_tmp3_ = _tmp2_;
14959 	type_symbol = G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_OBJECT_TYPE_SYMBOL) ? ((ValaObjectTypeSymbol*) _tmp3_) : NULL;
14960 	_tmp5_ = type_symbol;
14961 	if (_tmp5_ == NULL) {
14962 		_tmp4_ = TRUE;
14963 	} else {
14964 		gboolean _tmp6_ = FALSE;
14965 		ValaObjectTypeSymbol* _tmp7_;
14966 		_tmp7_ = type_symbol;
14967 		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_CLASS)) {
14968 			ValaObjectTypeSymbol* _tmp8_;
14969 			gboolean _tmp9_;
14970 			gboolean _tmp10_;
14971 			_tmp8_ = type_symbol;
14972 			_tmp9_ = vala_class_get_is_compact (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_CLASS, ValaClass));
14973 			_tmp10_ = _tmp9_;
14974 			_tmp6_ = _tmp10_;
14975 		} else {
14976 			_tmp6_ = FALSE;
14977 		}
14978 		_tmp4_ = _tmp6_;
14979 	}
14980 	if (_tmp4_) {
14981 		VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_cast_expression ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), expr);
14982 		return;
14983 	}
14984 	_tmp11_ = vala_cast_expression_get_type_reference (expr);
14985 	_tmp12_ = _tmp11_;
14986 	_tmp13_ = ((ValaCCodeBaseModule*) self)->cfile;
14987 	vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp12_, _tmp13_);
14988 	_tmp14_ = vala_cast_expression_get_is_silent_cast (expr);
14989 	_tmp15_ = _tmp14_;
14990 	if (_tmp15_) {
14991 		ValaTargetValue* to_cast = NULL;
14992 		ValaExpression* _tmp16_;
14993 		ValaExpression* _tmp17_;
14994 		ValaTargetValue* _tmp18_;
14995 		ValaTargetValue* _tmp19_;
14996 		ValaTargetValue* _tmp20_;
14997 		ValaCCodeExpression* cexpr = NULL;
14998 		ValaTargetValue* _tmp21_;
14999 		ValaTargetValue* _tmp24_;
15000 		ValaCCodeExpression* _tmp25_;
15001 		ValaCCodeExpression* _tmp26_;
15002 		ValaCCodeExpression* ccheck = NULL;
15003 		ValaCCodeExpression* _tmp27_;
15004 		ValaDataType* _tmp28_;
15005 		ValaDataType* _tmp29_;
15006 		ValaCCodeExpression* _tmp30_;
15007 		ValaCCodeCastExpression* ccast = NULL;
15008 		ValaCCodeExpression* _tmp31_;
15009 		ValaDataType* _tmp32_;
15010 		ValaDataType* _tmp33_;
15011 		gchar* _tmp34_;
15012 		gchar* _tmp35_;
15013 		ValaCCodeCastExpression* _tmp36_;
15014 		ValaCCodeCastExpression* _tmp37_;
15015 		ValaCCodeConstant* cnull = NULL;
15016 		ValaCCodeConstant* _tmp38_;
15017 		ValaGLibValue* cast_value = NULL;
15018 		ValaDataType* _tmp39_;
15019 		ValaDataType* _tmp40_;
15020 		ValaCCodeExpression* _tmp41_;
15021 		ValaCCodeCastExpression* _tmp42_;
15022 		ValaCCodeConstant* _tmp43_;
15023 		ValaCCodeConditionalExpression* _tmp44_;
15024 		ValaCCodeConditionalExpression* _tmp45_;
15025 		ValaGLibValue* _tmp46_;
15026 		ValaGLibValue* _tmp47_;
15027 		ValaExpression* _tmp48_;
15028 		ValaExpression* _tmp49_;
15029 		ValaDataType* _tmp50_;
15030 		ValaDataType* _tmp51_;
15031 		_tmp16_ = vala_cast_expression_get_inner (expr);
15032 		_tmp17_ = _tmp16_;
15033 		_tmp18_ = vala_expression_get_target_value (_tmp17_);
15034 		_tmp19_ = _tmp18_;
15035 		_tmp20_ = _vala_target_value_ref0 (_tmp19_);
15036 		to_cast = _tmp20_;
15037 		_tmp21_ = to_cast;
15038 		if (!vala_get_lvalue (_tmp21_)) {
15039 			ValaTargetValue* _tmp22_;
15040 			ValaTargetValue* _tmp23_;
15041 			_tmp22_ = to_cast;
15042 			_tmp23_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, _tmp22_, (ValaCodeNode*) expr, NULL);
15043 			_vala_target_value_unref0 (to_cast);
15044 			to_cast = _tmp23_;
15045 		}
15046 		_tmp24_ = to_cast;
15047 		_tmp25_ = vala_get_cvalue_ (_tmp24_);
15048 		_tmp26_ = _vala_ccode_node_ref0 (_tmp25_);
15049 		_vala_ccode_node_unref0 (cexpr);
15050 		cexpr = _tmp26_;
15051 		_tmp27_ = cexpr;
15052 		_tmp28_ = vala_cast_expression_get_type_reference (expr);
15053 		_tmp29_ = _tmp28_;
15054 		_tmp30_ = vala_ccode_base_module_create_type_check ((ValaCCodeBaseModule*) self, (ValaCCodeNode*) _tmp27_, _tmp29_);
15055 		ccheck = _tmp30_;
15056 		_tmp31_ = cexpr;
15057 		_tmp32_ = vala_cast_expression_get_type_reference (expr);
15058 		_tmp33_ = _tmp32_;
15059 		_tmp34_ = vala_get_ccode_name ((ValaCodeNode*) _tmp33_);
15060 		_tmp35_ = _tmp34_;
15061 		_tmp36_ = vala_ccode_cast_expression_new (_tmp31_, _tmp35_);
15062 		_tmp37_ = _tmp36_;
15063 		_g_free0 (_tmp35_);
15064 		ccast = _tmp37_;
15065 		_tmp38_ = vala_ccode_constant_new ("NULL");
15066 		cnull = _tmp38_;
15067 		_tmp39_ = vala_expression_get_value_type ((ValaExpression*) expr);
15068 		_tmp40_ = _tmp39_;
15069 		_tmp41_ = ccheck;
15070 		_tmp42_ = ccast;
15071 		_tmp43_ = cnull;
15072 		_tmp44_ = vala_ccode_conditional_expression_new (_tmp41_, (ValaCCodeExpression*) _tmp42_, (ValaCCodeExpression*) _tmp43_);
15073 		_tmp45_ = _tmp44_;
15074 		_tmp46_ = vala_glib_value_new (_tmp40_, (ValaCCodeExpression*) _tmp45_, FALSE);
15075 		_tmp47_ = _tmp46_;
15076 		_vala_ccode_node_unref0 (_tmp45_);
15077 		cast_value = _tmp47_;
15078 		_tmp48_ = vala_cast_expression_get_inner (expr);
15079 		_tmp49_ = _tmp48_;
15080 		_tmp50_ = vala_expression_get_value_type (_tmp49_);
15081 		_tmp51_ = _tmp50_;
15082 		if (vala_ccode_base_module_requires_destroy (_tmp51_)) {
15083 			ValaTargetValue* casted = NULL;
15084 			ValaGLibValue* _tmp52_;
15085 			ValaTargetValue* _tmp53_;
15086 			ValaCCodeFunction* _tmp54_;
15087 			ValaCCodeFunction* _tmp55_;
15088 			ValaTargetValue* _tmp56_;
15089 			ValaCCodeExpression* _tmp57_;
15090 			ValaCCodeConstant* _tmp58_;
15091 			ValaCCodeConstant* _tmp59_;
15092 			ValaCCodeBinaryExpression* _tmp60_;
15093 			ValaCCodeBinaryExpression* _tmp61_;
15094 			ValaCCodeFunction* _tmp62_;
15095 			ValaCCodeFunction* _tmp63_;
15096 			ValaTargetValue* _tmp64_;
15097 			ValaCCodeExpression* _tmp65_;
15098 			ValaCCodeExpression* _tmp66_;
15099 			ValaCCodeFunction* _tmp67_;
15100 			ValaCCodeFunction* _tmp68_;
15101 			ValaTargetValue* _tmp69_;
15102 			ValaGLibValue* _tmp70_;
15103 			ValaGLibValue* _tmp71_;
15104 			_tmp52_ = cast_value;
15105 			_tmp53_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp52_, (ValaCodeNode*) expr, NULL);
15106 			casted = _tmp53_;
15107 			_tmp54_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
15108 			_tmp55_ = _tmp54_;
15109 			_tmp56_ = casted;
15110 			_tmp57_ = vala_get_cvalue_ (_tmp56_);
15111 			_tmp58_ = vala_ccode_constant_new ("NULL");
15112 			_tmp59_ = _tmp58_;
15113 			_tmp60_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, _tmp57_, (ValaCCodeExpression*) _tmp59_);
15114 			_tmp61_ = _tmp60_;
15115 			vala_ccode_function_open_if (_tmp55_, (ValaCCodeExpression*) _tmp61_);
15116 			_vala_ccode_node_unref0 (_tmp61_);
15117 			_vala_ccode_node_unref0 (_tmp59_);
15118 			_tmp62_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
15119 			_tmp63_ = _tmp62_;
15120 			_tmp64_ = to_cast;
15121 			_tmp65_ = vala_ccode_base_module_destroy_value ((ValaCCodeBaseModule*) self, _tmp64_, FALSE);
15122 			_tmp66_ = _tmp65_;
15123 			vala_ccode_function_add_expression (_tmp63_, _tmp66_);
15124 			_vala_ccode_node_unref0 (_tmp66_);
15125 			_tmp67_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
15126 			_tmp68_ = _tmp67_;
15127 			vala_ccode_function_close (_tmp68_);
15128 			_tmp69_ = casted;
15129 			_tmp70_ = vala_glib_value_copy (G_TYPE_CHECK_INSTANCE_CAST (_tmp69_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
15130 			_tmp71_ = _tmp70_;
15131 			vala_expression_set_target_value ((ValaExpression*) expr, (ValaTargetValue*) _tmp71_);
15132 			_vala_target_value_unref0 (_tmp71_);
15133 			_vala_target_value_unref0 (casted);
15134 		} else {
15135 			ValaGLibValue* _tmp72_;
15136 			_tmp72_ = cast_value;
15137 			vala_expression_set_target_value ((ValaExpression*) expr, (ValaTargetValue*) _tmp72_);
15138 		}
15139 		_vala_target_value_unref0 (cast_value);
15140 		_vala_ccode_node_unref0 (cnull);
15141 		_vala_ccode_node_unref0 (ccast);
15142 		_vala_ccode_node_unref0 (ccheck);
15143 		_vala_ccode_node_unref0 (cexpr);
15144 		_vala_target_value_unref0 (to_cast);
15145 	} else {
15146 		ValaExpression* _tmp73_;
15147 		ValaExpression* _tmp74_;
15148 		ValaCCodeExpression* _tmp75_;
15149 		ValaDataType* _tmp76_;
15150 		ValaDataType* _tmp77_;
15151 		ValaTypeSymbol* _tmp78_;
15152 		ValaTypeSymbol* _tmp79_;
15153 		ValaCCodeFunctionCall* _tmp80_;
15154 		ValaCCodeFunctionCall* _tmp81_;
15155 		_tmp73_ = vala_cast_expression_get_inner (expr);
15156 		_tmp74_ = _tmp73_;
15157 		_tmp75_ = vala_get_cvalue (_tmp74_);
15158 		_tmp76_ = vala_cast_expression_get_type_reference (expr);
15159 		_tmp77_ = _tmp76_;
15160 		_tmp78_ = vala_data_type_get_type_symbol (_tmp77_);
15161 		_tmp79_ = _tmp78_;
15162 		_tmp80_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, _tmp75_, _tmp79_);
15163 		_tmp81_ = _tmp80_;
15164 		vala_set_cvalue ((ValaExpression*) expr, (ValaCCodeExpression*) _tmp81_);
15165 		_vala_ccode_node_unref0 (_tmp81_);
15166 	}
15167 }
15168 
15169 ValaGTypeModule*
vala_gtype_module_construct(GType object_type)15170 vala_gtype_module_construct (GType object_type)
15171 {
15172 	ValaGTypeModule* self = NULL;
15173 	self = (ValaGTypeModule*) vala_gerror_module_construct (object_type);
15174 	return self;
15175 }
15176 
15177 ValaGTypeModule*
vala_gtype_module_new(void)15178 vala_gtype_module_new (void)
15179 {
15180 	return vala_gtype_module_construct (VALA_TYPE_GTYPE_MODULE);
15181 }
15182 
15183 static void
vala_gtype_module_class_init(ValaGTypeModuleClass * klass,gpointer klass_data)15184 vala_gtype_module_class_init (ValaGTypeModuleClass * klass,
15185                               gpointer klass_data)
15186 {
15187 	vala_gtype_module_parent_class = g_type_class_peek_parent (klass);
15188 	((ValaCCodeMethodModuleClass *) klass)->generate_parameter = (ValaCCodeParameter* (*) (ValaCCodeMethodModule*, ValaParameter*, ValaCCodeFile*, ValaMap*, ValaMap*)) vala_gtype_module_real_generate_parameter;
15189 	((ValaCCodeBaseModuleClass *) klass)->generate_class_declaration = (void (*) (ValaCCodeBaseModule*, ValaClass*, ValaCCodeFile*)) vala_gtype_module_real_generate_class_declaration;
15190 	((ValaCCodeBaseModuleClass *) klass)->generate_class_struct_declaration = (void (*) (ValaCCodeBaseModule*, ValaClass*, ValaCCodeFile*)) vala_gtype_module_real_generate_class_struct_declaration;
15191 	((ValaCCodeBaseModuleClass *) klass)->generate_method_declaration = (gboolean (*) (ValaCCodeBaseModule*, ValaMethod*, ValaCCodeFile*)) vala_gtype_module_real_generate_method_declaration;
15192 	((ValaGTypeModuleClass *) klass)->generate_virtual_method_declaration = (void (*) (ValaGTypeModule*, ValaMethod*, ValaCCodeFile*, ValaCCodeStruct*)) vala_gtype_module_real_generate_virtual_method_declaration;
15193 	((ValaCodeVisitorClass *) klass)->visit_class = (void (*) (ValaCodeVisitor*, ValaClass*)) vala_gtype_module_real_visit_class;
15194 	((ValaGTypeModuleClass *) klass)->generate_class_init = (void (*) (ValaGTypeModule*, ValaClass*)) vala_gtype_module_real_generate_class_init;
15195 	((ValaGTypeModuleClass *) klass)->end_instance_init = (void (*) (ValaGTypeModule*, ValaClass*)) vala_gtype_module_real_end_instance_init;
15196 	((ValaCCodeBaseModuleClass *) klass)->get_param_spec_cexpression = (ValaCCodeExpression* (*) (ValaCCodeBaseModule*, ValaProperty*)) vala_gtype_module_real_get_param_spec_cexpression;
15197 	((ValaCCodeBaseModuleClass *) klass)->get_param_spec = (ValaCCodeExpression* (*) (ValaCCodeBaseModule*, ValaProperty*)) vala_gtype_module_real_get_param_spec;
15198 	((ValaCCodeBaseModuleClass *) klass)->generate_interface_declaration = (void (*) (ValaCCodeBaseModule*, ValaInterface*, ValaCCodeFile*)) vala_gtype_module_real_generate_interface_declaration;
15199 	((ValaCodeVisitorClass *) klass)->visit_interface = (void (*) (ValaCodeVisitor*, ValaInterface*)) vala_gtype_module_real_visit_interface;
15200 	((ValaCodeVisitorClass *) klass)->visit_struct = (void (*) (ValaCodeVisitor*, ValaStruct*)) vala_gtype_module_real_visit_struct;
15201 	((ValaCodeVisitorClass *) klass)->visit_enum = (void (*) (ValaCodeVisitor*, ValaEnum*)) vala_gtype_module_real_visit_enum;
15202 	((ValaCodeVisitorClass *) klass)->visit_method_call = (void (*) (ValaCodeVisitor*, ValaMethodCall*)) vala_gtype_module_real_visit_method_call;
15203 	((ValaCodeVisitorClass *) klass)->visit_property = (void (*) (ValaCodeVisitor*, ValaProperty*)) vala_gtype_module_real_visit_property;
15204 	((ValaCCodeBaseModuleClass *) klass)->create_type_check_statement = (void (*) (ValaCCodeBaseModule*, ValaCodeNode*, ValaDataType*, ValaTypeSymbol*, gboolean, const gchar*)) vala_gtype_module_real_create_type_check_statement;
15205 	((ValaCodeVisitorClass *) klass)->visit_cast_expression = (void (*) (ValaCodeVisitor*, ValaCastExpression*)) vala_gtype_module_real_visit_cast_expression;
15206 }
15207 
15208 static void
vala_gtype_module_instance_init(ValaGTypeModule * self,gpointer klass)15209 vala_gtype_module_instance_init (ValaGTypeModule * self,
15210                                  gpointer klass)
15211 {
15212 }
15213 
15214 static GType
vala_gtype_module_get_type_once(void)15215 vala_gtype_module_get_type_once (void)
15216 {
15217 	static const GTypeInfo g_define_type_info = { sizeof (ValaGTypeModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gtype_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGTypeModule), 0, (GInstanceInitFunc) vala_gtype_module_instance_init, NULL };
15218 	GType vala_gtype_module_type_id;
15219 	vala_gtype_module_type_id = g_type_register_static (VALA_TYPE_GERROR_MODULE, "ValaGTypeModule", &g_define_type_info, 0);
15220 	return vala_gtype_module_type_id;
15221 }
15222 
15223 GType
vala_gtype_module_get_type(void)15224 vala_gtype_module_get_type (void)
15225 {
15226 	static volatile gsize vala_gtype_module_type_id__volatile = 0;
15227 	if (g_once_init_enter (&vala_gtype_module_type_id__volatile)) {
15228 		GType vala_gtype_module_type_id;
15229 		vala_gtype_module_type_id = vala_gtype_module_get_type_once ();
15230 		g_once_init_leave (&vala_gtype_module_type_id__volatile, vala_gtype_module_type_id);
15231 	}
15232 	return vala_gtype_module_type_id__volatile;
15233 }
15234 
15235