1 /* valagobjectmodule.c generated by valac, the Vala compiler
2  * generated from valagobjectmodule.vala, do not modify */
3 
4 /* valagobjectmodule.vala
5  *
6  * Copyright (C) 2006-2011  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 <glib.h>
30 #include <vala.h>
31 #include <stdlib.h>
32 #include <string.h>
33 #include <valaccode.h>
34 #include <valagee.h>
35 #include <glib-object.h>
36 
37 #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
38 #define _g_free0(var) (var = (g_free (var), NULL))
39 #define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_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_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_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 
45 struct _ValaGObjectModulePrivate {
46 	gint dynamic_property_id;
47 	gint signal_wrapper_id;
48 };
49 
50 static gint ValaGObjectModule_private_offset;
51 static gpointer vala_gobject_module_parent_class = NULL;
52 
53 static void vala_gobject_module_real_visit_class (ValaCodeVisitor* base,
54                                            ValaClass* cl);
55 static gboolean vala_gobject_module_class_has_readable_properties (ValaGObjectModule* self,
56                                                             ValaClass* cl);
57 static void vala_gobject_module_add_get_property_function (ValaGObjectModule* self,
58                                                     ValaClass* cl);
59 static gboolean vala_gobject_module_class_has_writable_properties (ValaGObjectModule* self,
60                                                             ValaClass* cl);
61 static void vala_gobject_module_add_set_property_function (ValaGObjectModule* self,
62                                                     ValaClass* cl);
63 static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
64                                                    ValaClass* cl);
65 static void vala_gobject_module_add_guarded_expression (ValaGObjectModule* self,
66                                                  ValaSymbol* sym,
67                                                  ValaCCodeExpression* expression);
68 static void vala_gobject_module_emit_invalid_property_id_warn (ValaGObjectModule* self);
69 static void vala_gobject_module_real_visit_constructor (ValaCodeVisitor* base,
70                                                  ValaConstructor* c);
71 static gchar* vala_gobject_module_real_get_dynamic_property_getter_cname (ValaCCodeBaseModule* base,
72                                                                    ValaDynamicProperty* prop);
73 static gchar* vala_gobject_module_real_get_dynamic_property_setter_cname (ValaCCodeBaseModule* base,
74                                                                    ValaDynamicProperty* prop);
75 static gchar* vala_gobject_module_real_get_dynamic_signal_cname (ValaCCodeBaseModule* base,
76                                                           ValaDynamicSignal* node);
77 static gchar* vala_gobject_module_real_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* base,
78                                                                          ValaDynamicSignal* sig);
79 static void vala_gobject_module_generate_gobject_connect_wrapper (ValaGObjectModule* self,
80                                                            ValaDynamicSignal* sig,
81                                                            gboolean after);
82 static gchar* vala_gobject_module_real_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* base,
83                                                                                ValaDynamicSignal* sig);
84 static void vala_gobject_module_real_visit_property (ValaCodeVisitor* base,
85                                               ValaProperty* prop);
86 static void vala_gobject_module_real_visit_method_call (ValaCodeVisitor* base,
87                                                  ValaMethodCall* expr);
88 static void vala_gobject_module_finalize (ValaCodeVisitor * obj);
89 static GType vala_gobject_module_get_type_once (void);
90 
91 static inline gpointer
vala_gobject_module_get_instance_private(ValaGObjectModule * self)92 vala_gobject_module_get_instance_private (ValaGObjectModule* self)
93 {
94 	return G_STRUCT_MEMBER_P (self, ValaGObjectModule_private_offset);
95 }
96 
97 static void
vala_gobject_module_real_visit_class(ValaCodeVisitor * base,ValaClass * cl)98 vala_gobject_module_real_visit_class (ValaCodeVisitor* base,
99                                       ValaClass* cl)
100 {
101 	ValaGObjectModule * self;
102 	ValaTypeSymbol* _tmp0_;
103 	ValaSourceReference* _tmp1_;
104 	ValaSourceReference* _tmp2_;
105 	gboolean _tmp3_ = FALSE;
106 	gboolean _tmp4_ = FALSE;
107 	self = (ValaGObjectModule*) base;
108 	g_return_if_fail (cl != NULL);
109 	VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_class ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), cl);
110 	_tmp0_ = ((ValaCCodeBaseModule*) self)->gobject_type;
111 	if (!vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, _tmp0_)) {
112 		return;
113 	}
114 	_tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) cl);
115 	_tmp2_ = _tmp1_;
116 	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp2_);
117 	if (vala_gobject_module_class_has_readable_properties (self, cl)) {
118 		_tmp3_ = TRUE;
119 	} else {
120 		_tmp3_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
121 	}
122 	if (_tmp3_) {
123 		vala_gobject_module_add_get_property_function (self, cl);
124 	}
125 	if (vala_gobject_module_class_has_writable_properties (self, cl)) {
126 		_tmp4_ = TRUE;
127 	} else {
128 		_tmp4_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
129 	}
130 	if (_tmp4_) {
131 		vala_gobject_module_add_set_property_function (self, cl);
132 	}
133 	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
134 }
135 
136 static gpointer
_vala_iterable_ref0(gpointer self)137 _vala_iterable_ref0 (gpointer self)
138 {
139 	return self ? vala_iterable_ref (self) : NULL;
140 }
141 
142 static gchar*
string_replace(const gchar * self,const gchar * old,const gchar * replacement)143 string_replace (const gchar* self,
144                 const gchar* old,
145                 const gchar* replacement)
146 {
147 	gboolean _tmp0_ = FALSE;
148 	gboolean _tmp1_ = FALSE;
149 	GError* _inner_error0_ = NULL;
150 	gchar* result = NULL;
151 	g_return_val_if_fail (self != NULL, NULL);
152 	g_return_val_if_fail (old != NULL, NULL);
153 	g_return_val_if_fail (replacement != NULL, NULL);
154 	if ((*((gchar*) self)) == '\0') {
155 		_tmp1_ = TRUE;
156 	} else {
157 		_tmp1_ = (*((gchar*) old)) == '\0';
158 	}
159 	if (_tmp1_) {
160 		_tmp0_ = TRUE;
161 	} else {
162 		_tmp0_ = g_strcmp0 (old, replacement) == 0;
163 	}
164 	if (_tmp0_) {
165 		gchar* _tmp2_;
166 		_tmp2_ = g_strdup (self);
167 		result = _tmp2_;
168 		return result;
169 	}
170 	{
171 		GRegex* regex = NULL;
172 		gchar* _tmp3_;
173 		gchar* _tmp4_;
174 		GRegex* _tmp5_;
175 		GRegex* _tmp6_;
176 		gchar* _tmp7_ = NULL;
177 		GRegex* _tmp8_;
178 		gchar* _tmp9_;
179 		gchar* _tmp10_;
180 		_tmp3_ = g_regex_escape_string (old, -1);
181 		_tmp4_ = _tmp3_;
182 		_tmp5_ = g_regex_new (_tmp4_, 0, 0, &_inner_error0_);
183 		_tmp6_ = _tmp5_;
184 		_g_free0 (_tmp4_);
185 		regex = _tmp6_;
186 		if (G_UNLIKELY (_inner_error0_ != NULL)) {
187 			_g_free0 (_tmp7_);
188 			_g_regex_unref0 (regex);
189 			if (_inner_error0_->domain == G_REGEX_ERROR) {
190 				goto __catch0_g_regex_error;
191 			}
192 			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
193 			g_clear_error (&_inner_error0_);
194 			return NULL;
195 		}
196 		_tmp8_ = regex;
197 		_tmp9_ = g_regex_replace_literal (_tmp8_, self, (gssize) -1, 0, replacement, 0, &_inner_error0_);
198 		_tmp7_ = _tmp9_;
199 		if (G_UNLIKELY (_inner_error0_ != NULL)) {
200 			_g_free0 (_tmp7_);
201 			_g_regex_unref0 (regex);
202 			if (_inner_error0_->domain == G_REGEX_ERROR) {
203 				goto __catch0_g_regex_error;
204 			}
205 			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
206 			g_clear_error (&_inner_error0_);
207 			return NULL;
208 		}
209 		_tmp10_ = _tmp7_;
210 		_tmp7_ = NULL;
211 		result = _tmp10_;
212 		_g_free0 (_tmp7_);
213 		_g_regex_unref0 (regex);
214 		return result;
215 	}
216 	goto __finally0;
217 	__catch0_g_regex_error:
218 	{
219 		g_clear_error (&_inner_error0_);
220 		g_assert_not_reached ();
221 	}
222 	__finally0:
223 	g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
224 	g_clear_error (&_inner_error0_);
225 	return NULL;
226 }
227 
228 static void
vala_gobject_module_real_generate_class_init(ValaGTypeModule * base,ValaClass * cl)229 vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
230                                               ValaClass* cl)
231 {
232 	ValaGObjectModule * self;
233 	ValaTypeSymbol* _tmp0_;
234 	ValaCCodeFunctionCall* ccall = NULL;
235 	ValaCCodeIdentifier* _tmp1_;
236 	ValaCCodeIdentifier* _tmp2_;
237 	ValaCCodeFunctionCall* _tmp3_;
238 	ValaCCodeFunctionCall* _tmp4_;
239 	ValaCCodeFunctionCall* _tmp5_;
240 	ValaCCodeIdentifier* _tmp6_;
241 	ValaCCodeIdentifier* _tmp7_;
242 	gboolean _tmp8_ = FALSE;
243 	gboolean _tmp20_ = FALSE;
244 	ValaConstructor* _tmp32_;
245 	ValaConstructor* _tmp33_;
246 	gboolean _tmp52_ = FALSE;
247 	ValaList* _tmp53_;
248 	gint _tmp54_;
249 	gint _tmp55_;
250 	ValaList* props = NULL;
251 	ValaList* _tmp226_;
252 	ValaList* _tmp227_;
253 	self = (ValaGObjectModule*) base;
254 	g_return_if_fail (cl != NULL);
255 	_tmp0_ = ((ValaCCodeBaseModule*) self)->gobject_type;
256 	if (!vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, _tmp0_)) {
257 		return;
258 	}
259 	_tmp1_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
260 	_tmp2_ = _tmp1_;
261 	_tmp3_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp2_);
262 	_tmp4_ = _tmp3_;
263 	_vala_ccode_node_unref0 (_tmp2_);
264 	ccall = _tmp4_;
265 	_tmp5_ = ccall;
266 	_tmp6_ = vala_ccode_identifier_new ("klass");
267 	_tmp7_ = _tmp6_;
268 	vala_ccode_function_call_add_argument (_tmp5_, (ValaCCodeExpression*) _tmp7_);
269 	_vala_ccode_node_unref0 (_tmp7_);
270 	if (vala_gobject_module_class_has_readable_properties (self, cl)) {
271 		_tmp8_ = TRUE;
272 	} else {
273 		_tmp8_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
274 	}
275 	if (_tmp8_) {
276 		ValaCCodeFunction* _tmp9_;
277 		ValaCCodeFunction* _tmp10_;
278 		ValaCCodeFunctionCall* _tmp11_;
279 		ValaCCodeMemberAccess* _tmp12_;
280 		ValaCCodeMemberAccess* _tmp13_;
281 		gchar* _tmp14_;
282 		gchar* _tmp15_;
283 		gchar* _tmp16_;
284 		gchar* _tmp17_;
285 		ValaCCodeIdentifier* _tmp18_;
286 		ValaCCodeIdentifier* _tmp19_;
287 		_tmp9_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
288 		_tmp10_ = _tmp9_;
289 		_tmp11_ = ccall;
290 		_tmp12_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp11_, "get_property");
291 		_tmp13_ = _tmp12_;
292 		_tmp14_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
293 		_tmp15_ = _tmp14_;
294 		_tmp16_ = g_strdup_printf ("_vala_%s_get_property", _tmp15_);
295 		_tmp17_ = _tmp16_;
296 		_tmp18_ = vala_ccode_identifier_new (_tmp17_);
297 		_tmp19_ = _tmp18_;
298 		vala_ccode_function_add_assignment (_tmp10_, (ValaCCodeExpression*) _tmp13_, (ValaCCodeExpression*) _tmp19_);
299 		_vala_ccode_node_unref0 (_tmp19_);
300 		_g_free0 (_tmp17_);
301 		_g_free0 (_tmp15_);
302 		_vala_ccode_node_unref0 (_tmp13_);
303 	}
304 	if (vala_gobject_module_class_has_writable_properties (self, cl)) {
305 		_tmp20_ = TRUE;
306 	} else {
307 		_tmp20_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
308 	}
309 	if (_tmp20_) {
310 		ValaCCodeFunction* _tmp21_;
311 		ValaCCodeFunction* _tmp22_;
312 		ValaCCodeFunctionCall* _tmp23_;
313 		ValaCCodeMemberAccess* _tmp24_;
314 		ValaCCodeMemberAccess* _tmp25_;
315 		gchar* _tmp26_;
316 		gchar* _tmp27_;
317 		gchar* _tmp28_;
318 		gchar* _tmp29_;
319 		ValaCCodeIdentifier* _tmp30_;
320 		ValaCCodeIdentifier* _tmp31_;
321 		_tmp21_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
322 		_tmp22_ = _tmp21_;
323 		_tmp23_ = ccall;
324 		_tmp24_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp23_, "set_property");
325 		_tmp25_ = _tmp24_;
326 		_tmp26_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
327 		_tmp27_ = _tmp26_;
328 		_tmp28_ = g_strdup_printf ("_vala_%s_set_property", _tmp27_);
329 		_tmp29_ = _tmp28_;
330 		_tmp30_ = vala_ccode_identifier_new (_tmp29_);
331 		_tmp31_ = _tmp30_;
332 		vala_ccode_function_add_assignment (_tmp22_, (ValaCCodeExpression*) _tmp25_, (ValaCCodeExpression*) _tmp31_);
333 		_vala_ccode_node_unref0 (_tmp31_);
334 		_g_free0 (_tmp29_);
335 		_g_free0 (_tmp27_);
336 		_vala_ccode_node_unref0 (_tmp25_);
337 	}
338 	_tmp32_ = vala_class_get_constructor (cl);
339 	_tmp33_ = _tmp32_;
340 	if (_tmp33_ != NULL) {
341 		ValaCCodeFunctionCall* ccast = NULL;
342 		ValaCCodeIdentifier* _tmp34_;
343 		ValaCCodeIdentifier* _tmp35_;
344 		ValaCCodeFunctionCall* _tmp36_;
345 		ValaCCodeFunctionCall* _tmp37_;
346 		ValaCCodeFunctionCall* _tmp38_;
347 		ValaCCodeIdentifier* _tmp39_;
348 		ValaCCodeIdentifier* _tmp40_;
349 		ValaCCodeFunction* _tmp41_;
350 		ValaCCodeFunction* _tmp42_;
351 		ValaCCodeFunctionCall* _tmp43_;
352 		ValaCCodeMemberAccess* _tmp44_;
353 		ValaCCodeMemberAccess* _tmp45_;
354 		gchar* _tmp46_;
355 		gchar* _tmp47_;
356 		gchar* _tmp48_;
357 		gchar* _tmp49_;
358 		ValaCCodeIdentifier* _tmp50_;
359 		ValaCCodeIdentifier* _tmp51_;
360 		_tmp34_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
361 		_tmp35_ = _tmp34_;
362 		_tmp36_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp35_);
363 		_tmp37_ = _tmp36_;
364 		_vala_ccode_node_unref0 (_tmp35_);
365 		ccast = _tmp37_;
366 		_tmp38_ = ccast;
367 		_tmp39_ = vala_ccode_identifier_new ("klass");
368 		_tmp40_ = _tmp39_;
369 		vala_ccode_function_call_add_argument (_tmp38_, (ValaCCodeExpression*) _tmp40_);
370 		_vala_ccode_node_unref0 (_tmp40_);
371 		_tmp41_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
372 		_tmp42_ = _tmp41_;
373 		_tmp43_ = ccast;
374 		_tmp44_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp43_, "constructor");
375 		_tmp45_ = _tmp44_;
376 		_tmp46_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) cl);
377 		_tmp47_ = _tmp46_;
378 		_tmp48_ = g_strdup_printf ("%sconstructor", _tmp47_);
379 		_tmp49_ = _tmp48_;
380 		_tmp50_ = vala_ccode_identifier_new (_tmp49_);
381 		_tmp51_ = _tmp50_;
382 		vala_ccode_function_add_assignment (_tmp42_, (ValaCCodeExpression*) _tmp45_, (ValaCCodeExpression*) _tmp51_);
383 		_vala_ccode_node_unref0 (_tmp51_);
384 		_g_free0 (_tmp49_);
385 		_g_free0 (_tmp47_);
386 		_vala_ccode_node_unref0 (_tmp45_);
387 		_vala_ccode_node_unref0 (ccast);
388 	}
389 	_tmp53_ = vala_object_type_symbol_get_fields ((ValaObjectTypeSymbol*) cl);
390 	_tmp54_ = vala_collection_get_size ((ValaCollection*) _tmp53_);
391 	_tmp55_ = _tmp54_;
392 	if (_tmp55_ > 0) {
393 		_tmp52_ = TRUE;
394 	} else {
395 		ValaDestructor* _tmp56_;
396 		ValaDestructor* _tmp57_;
397 		_tmp56_ = vala_class_get_destructor (cl);
398 		_tmp57_ = _tmp56_;
399 		_tmp52_ = _tmp57_ != NULL;
400 	}
401 	if (_tmp52_) {
402 		ValaCCodeFunctionCall* ccast = NULL;
403 		ValaCCodeIdentifier* _tmp58_;
404 		ValaCCodeIdentifier* _tmp59_;
405 		ValaCCodeFunctionCall* _tmp60_;
406 		ValaCCodeFunctionCall* _tmp61_;
407 		ValaCCodeFunctionCall* _tmp62_;
408 		ValaCCodeIdentifier* _tmp63_;
409 		ValaCCodeIdentifier* _tmp64_;
410 		ValaCCodeFunction* _tmp65_;
411 		ValaCCodeFunction* _tmp66_;
412 		ValaCCodeFunctionCall* _tmp67_;
413 		ValaCCodeMemberAccess* _tmp68_;
414 		ValaCCodeMemberAccess* _tmp69_;
415 		gchar* _tmp70_;
416 		gchar* _tmp71_;
417 		gchar* _tmp72_;
418 		gchar* _tmp73_;
419 		ValaCCodeIdentifier* _tmp74_;
420 		ValaCCodeIdentifier* _tmp75_;
421 		_tmp58_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
422 		_tmp59_ = _tmp58_;
423 		_tmp60_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp59_);
424 		_tmp61_ = _tmp60_;
425 		_vala_ccode_node_unref0 (_tmp59_);
426 		ccast = _tmp61_;
427 		_tmp62_ = ccast;
428 		_tmp63_ = vala_ccode_identifier_new ("klass");
429 		_tmp64_ = _tmp63_;
430 		vala_ccode_function_call_add_argument (_tmp62_, (ValaCCodeExpression*) _tmp64_);
431 		_vala_ccode_node_unref0 (_tmp64_);
432 		_tmp65_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
433 		_tmp66_ = _tmp65_;
434 		_tmp67_ = ccast;
435 		_tmp68_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp67_, "finalize");
436 		_tmp69_ = _tmp68_;
437 		_tmp70_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) cl);
438 		_tmp71_ = _tmp70_;
439 		_tmp72_ = g_strdup_printf ("%sfinalize", _tmp71_);
440 		_tmp73_ = _tmp72_;
441 		_tmp74_ = vala_ccode_identifier_new (_tmp73_);
442 		_tmp75_ = _tmp74_;
443 		vala_ccode_function_add_assignment (_tmp66_, (ValaCCodeExpression*) _tmp69_, (ValaCCodeExpression*) _tmp75_);
444 		_vala_ccode_node_unref0 (_tmp75_);
445 		_g_free0 (_tmp73_);
446 		_g_free0 (_tmp71_);
447 		_vala_ccode_node_unref0 (_tmp69_);
448 		_vala_ccode_node_unref0 (ccast);
449 	}
450 	{
451 		ValaList* _type_param_list = NULL;
452 		ValaList* _tmp76_;
453 		ValaList* _tmp77_;
454 		gint _type_param_size = 0;
455 		ValaList* _tmp78_;
456 		gint _tmp79_;
457 		gint _tmp80_;
458 		gint _type_param_index = 0;
459 		_tmp76_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
460 		_tmp77_ = _vala_iterable_ref0 (_tmp76_);
461 		_type_param_list = _tmp77_;
462 		_tmp78_ = _type_param_list;
463 		_tmp79_ = vala_collection_get_size ((ValaCollection*) _tmp78_);
464 		_tmp80_ = _tmp79_;
465 		_type_param_size = _tmp80_;
466 		_type_param_index = -1;
467 		while (TRUE) {
468 			gint _tmp81_;
469 			gint _tmp82_;
470 			ValaTypeParameter* type_param = NULL;
471 			ValaList* _tmp83_;
472 			gpointer _tmp84_;
473 			gchar* func_name = NULL;
474 			gchar* enum_value = NULL;
475 			ValaCCodeConstant* func_name_constant = NULL;
476 			ValaCCodeFunctionCall* cinst = NULL;
477 			ValaCCodeFunctionCall* cspec = NULL;
478 			gchar* name_prefix = NULL;
479 			ValaTypeParameter* _tmp85_;
480 			const gchar* _tmp86_;
481 			const gchar* _tmp87_;
482 			gchar* _tmp88_;
483 			gchar* canonical_prefix = NULL;
484 			const gchar* _tmp89_;
485 			gchar* _tmp90_;
486 			const gchar* _tmp91_;
487 			gchar* _tmp92_;
488 			const gchar* _tmp93_;
489 			gchar* _tmp94_;
490 			gchar* _tmp95_;
491 			ValaCCodeConstant* _tmp96_;
492 			gchar* _tmp97_;
493 			gchar* _tmp98_;
494 			const gchar* _tmp99_;
495 			gchar* _tmp100_;
496 			gchar* _tmp101_;
497 			gchar* _tmp102_;
498 			ValaCCodeIdentifier* _tmp103_;
499 			ValaCCodeIdentifier* _tmp104_;
500 			ValaCCodeFunctionCall* _tmp105_;
501 			ValaCCodeFunctionCall* _tmp106_;
502 			ValaCCodeFunctionCall* _tmp107_;
503 			ValaCCodeFunctionCall* _tmp108_;
504 			const gchar* _tmp109_;
505 			ValaCCodeConstant* _tmp110_;
506 			ValaCCodeConstant* _tmp111_;
507 			ValaCCodeIdentifier* _tmp112_;
508 			ValaCCodeIdentifier* _tmp113_;
509 			ValaCCodeFunctionCall* _tmp114_;
510 			ValaCCodeFunctionCall* _tmp115_;
511 			ValaCCodeConstant* _tmp116_;
512 			ValaCCodeFunctionCall* _tmp117_;
513 			ValaCCodeConstant* _tmp118_;
514 			ValaCCodeConstant* _tmp119_;
515 			ValaCCodeFunctionCall* _tmp120_;
516 			ValaCCodeConstant* _tmp121_;
517 			ValaCCodeConstant* _tmp122_;
518 			ValaCCodeFunctionCall* _tmp123_;
519 			ValaCCodeIdentifier* _tmp124_;
520 			ValaCCodeIdentifier* _tmp125_;
521 			ValaCCodeFunctionCall* _tmp126_;
522 			ValaCCodeConstant* _tmp127_;
523 			ValaCCodeConstant* _tmp128_;
524 			ValaCCodeFunctionCall* _tmp129_;
525 			ValaCCodeFunctionCall* _tmp130_;
526 			ValaCCodeFunction* _tmp131_;
527 			ValaCCodeFunction* _tmp132_;
528 			ValaCCodeFunctionCall* _tmp133_;
529 			ValaCCodeEnum* _tmp134_;
530 			const gchar* _tmp135_;
531 			ValaCCodeEnumValue* _tmp136_;
532 			ValaCCodeEnumValue* _tmp137_;
533 			const gchar* _tmp138_;
534 			gchar* _tmp139_;
535 			const gchar* _tmp140_;
536 			gchar* _tmp141_;
537 			gchar* _tmp142_;
538 			ValaCCodeConstant* _tmp143_;
539 			gchar* _tmp144_;
540 			gchar* _tmp145_;
541 			const gchar* _tmp146_;
542 			gchar* _tmp147_;
543 			gchar* _tmp148_;
544 			gchar* _tmp149_;
545 			ValaCCodeIdentifier* _tmp150_;
546 			ValaCCodeIdentifier* _tmp151_;
547 			ValaCCodeFunctionCall* _tmp152_;
548 			ValaCCodeFunctionCall* _tmp153_;
549 			ValaCCodeFunctionCall* _tmp154_;
550 			ValaCCodeFunctionCall* _tmp155_;
551 			const gchar* _tmp156_;
552 			ValaCCodeConstant* _tmp157_;
553 			ValaCCodeConstant* _tmp158_;
554 			ValaCCodeIdentifier* _tmp159_;
555 			ValaCCodeIdentifier* _tmp160_;
556 			ValaCCodeFunctionCall* _tmp161_;
557 			ValaCCodeFunctionCall* _tmp162_;
558 			ValaCCodeConstant* _tmp163_;
559 			ValaCCodeFunctionCall* _tmp164_;
560 			ValaCCodeConstant* _tmp165_;
561 			ValaCCodeConstant* _tmp166_;
562 			ValaCCodeFunctionCall* _tmp167_;
563 			ValaCCodeConstant* _tmp168_;
564 			ValaCCodeConstant* _tmp169_;
565 			ValaCCodeFunctionCall* _tmp170_;
566 			ValaCCodeConstant* _tmp171_;
567 			ValaCCodeConstant* _tmp172_;
568 			ValaCCodeFunctionCall* _tmp173_;
569 			ValaCCodeFunctionCall* _tmp174_;
570 			ValaCCodeFunction* _tmp175_;
571 			ValaCCodeFunction* _tmp176_;
572 			ValaCCodeFunctionCall* _tmp177_;
573 			ValaCCodeEnum* _tmp178_;
574 			const gchar* _tmp179_;
575 			ValaCCodeEnumValue* _tmp180_;
576 			ValaCCodeEnumValue* _tmp181_;
577 			const gchar* _tmp182_;
578 			gchar* _tmp183_;
579 			const gchar* _tmp184_;
580 			gchar* _tmp185_;
581 			gchar* _tmp186_;
582 			ValaCCodeConstant* _tmp187_;
583 			gchar* _tmp188_;
584 			gchar* _tmp189_;
585 			const gchar* _tmp190_;
586 			gchar* _tmp191_;
587 			gchar* _tmp192_;
588 			gchar* _tmp193_;
589 			ValaCCodeIdentifier* _tmp194_;
590 			ValaCCodeIdentifier* _tmp195_;
591 			ValaCCodeFunctionCall* _tmp196_;
592 			ValaCCodeFunctionCall* _tmp197_;
593 			ValaCCodeFunctionCall* _tmp198_;
594 			ValaCCodeFunctionCall* _tmp199_;
595 			const gchar* _tmp200_;
596 			ValaCCodeConstant* _tmp201_;
597 			ValaCCodeConstant* _tmp202_;
598 			ValaCCodeIdentifier* _tmp203_;
599 			ValaCCodeIdentifier* _tmp204_;
600 			ValaCCodeFunctionCall* _tmp205_;
601 			ValaCCodeFunctionCall* _tmp206_;
602 			ValaCCodeConstant* _tmp207_;
603 			ValaCCodeFunctionCall* _tmp208_;
604 			ValaCCodeConstant* _tmp209_;
605 			ValaCCodeConstant* _tmp210_;
606 			ValaCCodeFunctionCall* _tmp211_;
607 			ValaCCodeConstant* _tmp212_;
608 			ValaCCodeConstant* _tmp213_;
609 			ValaCCodeFunctionCall* _tmp214_;
610 			ValaCCodeConstant* _tmp215_;
611 			ValaCCodeConstant* _tmp216_;
612 			ValaCCodeFunctionCall* _tmp217_;
613 			ValaCCodeFunctionCall* _tmp218_;
614 			ValaCCodeFunction* _tmp219_;
615 			ValaCCodeFunction* _tmp220_;
616 			ValaCCodeFunctionCall* _tmp221_;
617 			ValaCCodeEnum* _tmp222_;
618 			const gchar* _tmp223_;
619 			ValaCCodeEnumValue* _tmp224_;
620 			ValaCCodeEnumValue* _tmp225_;
621 			_type_param_index = _type_param_index + 1;
622 			_tmp81_ = _type_param_index;
623 			_tmp82_ = _type_param_size;
624 			if (!(_tmp81_ < _tmp82_)) {
625 				break;
626 			}
627 			_tmp83_ = _type_param_list;
628 			_tmp84_ = vala_list_get (_tmp83_, _type_param_index);
629 			type_param = (ValaTypeParameter*) _tmp84_;
630 			_tmp85_ = type_param;
631 			_tmp86_ = vala_symbol_get_name ((ValaSymbol*) _tmp85_);
632 			_tmp87_ = _tmp86_;
633 			_tmp88_ = g_ascii_strdown (_tmp87_, (gssize) -1);
634 			name_prefix = _tmp88_;
635 			_tmp89_ = name_prefix;
636 			_tmp90_ = string_replace (_tmp89_, "_", "-");
637 			canonical_prefix = _tmp90_;
638 			_tmp91_ = name_prefix;
639 			_tmp92_ = g_strdup_printf ("%s_type", _tmp91_);
640 			_g_free0 (func_name);
641 			func_name = _tmp92_;
642 			_tmp93_ = canonical_prefix;
643 			_tmp94_ = g_strdup_printf ("\"%s-type\"", _tmp93_);
644 			_tmp95_ = _tmp94_;
645 			_tmp96_ = vala_ccode_constant_new (_tmp95_);
646 			_vala_ccode_node_unref0 (func_name_constant);
647 			func_name_constant = _tmp96_;
648 			_g_free0 (_tmp95_);
649 			_tmp97_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
650 			_tmp98_ = _tmp97_;
651 			_tmp99_ = func_name;
652 			_tmp100_ = g_strdup_printf ("%s_%s", _tmp98_, _tmp99_);
653 			_tmp101_ = _tmp100_;
654 			_tmp102_ = g_ascii_strup (_tmp101_, (gssize) -1);
655 			_g_free0 (enum_value);
656 			enum_value = _tmp102_;
657 			_g_free0 (_tmp101_);
658 			_g_free0 (_tmp98_);
659 			_tmp103_ = vala_ccode_identifier_new ("g_object_class_install_property");
660 			_tmp104_ = _tmp103_;
661 			_tmp105_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp104_);
662 			_vala_ccode_node_unref0 (cinst);
663 			cinst = _tmp105_;
664 			_vala_ccode_node_unref0 (_tmp104_);
665 			_tmp106_ = cinst;
666 			_tmp107_ = ccall;
667 			vala_ccode_function_call_add_argument (_tmp106_, (ValaCCodeExpression*) _tmp107_);
668 			_tmp108_ = cinst;
669 			_tmp109_ = enum_value;
670 			_tmp110_ = vala_ccode_constant_new (_tmp109_);
671 			_tmp111_ = _tmp110_;
672 			vala_ccode_function_call_add_argument (_tmp108_, (ValaCCodeExpression*) _tmp111_);
673 			_vala_ccode_node_unref0 (_tmp111_);
674 			_tmp112_ = vala_ccode_identifier_new ("g_param_spec_gtype");
675 			_tmp113_ = _tmp112_;
676 			_tmp114_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp113_);
677 			_vala_ccode_node_unref0 (cspec);
678 			cspec = _tmp114_;
679 			_vala_ccode_node_unref0 (_tmp113_);
680 			_tmp115_ = cspec;
681 			_tmp116_ = func_name_constant;
682 			vala_ccode_function_call_add_argument (_tmp115_, (ValaCCodeExpression*) _tmp116_);
683 			_tmp117_ = cspec;
684 			_tmp118_ = vala_ccode_constant_new ("\"type\"");
685 			_tmp119_ = _tmp118_;
686 			vala_ccode_function_call_add_argument (_tmp117_, (ValaCCodeExpression*) _tmp119_);
687 			_vala_ccode_node_unref0 (_tmp119_);
688 			_tmp120_ = cspec;
689 			_tmp121_ = vala_ccode_constant_new ("\"type\"");
690 			_tmp122_ = _tmp121_;
691 			vala_ccode_function_call_add_argument (_tmp120_, (ValaCCodeExpression*) _tmp122_);
692 			_vala_ccode_node_unref0 (_tmp122_);
693 			_tmp123_ = cspec;
694 			_tmp124_ = vala_ccode_identifier_new ("G_TYPE_NONE");
695 			_tmp125_ = _tmp124_;
696 			vala_ccode_function_call_add_argument (_tmp123_, (ValaCCodeExpression*) _tmp125_);
697 			_vala_ccode_node_unref0 (_tmp125_);
698 			_tmp126_ = cspec;
699 			_tmp127_ = vala_ccode_constant_new ("G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY");
700 			_tmp128_ = _tmp127_;
701 			vala_ccode_function_call_add_argument (_tmp126_, (ValaCCodeExpression*) _tmp128_);
702 			_vala_ccode_node_unref0 (_tmp128_);
703 			_tmp129_ = cinst;
704 			_tmp130_ = cspec;
705 			vala_ccode_function_call_add_argument (_tmp129_, (ValaCCodeExpression*) _tmp130_);
706 			_tmp131_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
707 			_tmp132_ = _tmp131_;
708 			_tmp133_ = cinst;
709 			vala_ccode_function_add_expression (_tmp132_, (ValaCCodeExpression*) _tmp133_);
710 			_tmp134_ = ((ValaCCodeBaseModule*) self)->prop_enum;
711 			_tmp135_ = enum_value;
712 			_tmp136_ = vala_ccode_enum_value_new (_tmp135_, NULL);
713 			_tmp137_ = _tmp136_;
714 			vala_ccode_enum_add_value (_tmp134_, _tmp137_);
715 			_vala_ccode_node_unref0 (_tmp137_);
716 			_tmp138_ = name_prefix;
717 			_tmp139_ = g_strdup_printf ("%s_dup_func", _tmp138_);
718 			_g_free0 (func_name);
719 			func_name = _tmp139_;
720 			_tmp140_ = canonical_prefix;
721 			_tmp141_ = g_strdup_printf ("\"%s-dup-func\"", _tmp140_);
722 			_tmp142_ = _tmp141_;
723 			_tmp143_ = vala_ccode_constant_new (_tmp142_);
724 			_vala_ccode_node_unref0 (func_name_constant);
725 			func_name_constant = _tmp143_;
726 			_g_free0 (_tmp142_);
727 			_tmp144_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
728 			_tmp145_ = _tmp144_;
729 			_tmp146_ = func_name;
730 			_tmp147_ = g_strdup_printf ("%s_%s", _tmp145_, _tmp146_);
731 			_tmp148_ = _tmp147_;
732 			_tmp149_ = g_ascii_strup (_tmp148_, (gssize) -1);
733 			_g_free0 (enum_value);
734 			enum_value = _tmp149_;
735 			_g_free0 (_tmp148_);
736 			_g_free0 (_tmp145_);
737 			_tmp150_ = vala_ccode_identifier_new ("g_object_class_install_property");
738 			_tmp151_ = _tmp150_;
739 			_tmp152_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp151_);
740 			_vala_ccode_node_unref0 (cinst);
741 			cinst = _tmp152_;
742 			_vala_ccode_node_unref0 (_tmp151_);
743 			_tmp153_ = cinst;
744 			_tmp154_ = ccall;
745 			vala_ccode_function_call_add_argument (_tmp153_, (ValaCCodeExpression*) _tmp154_);
746 			_tmp155_ = cinst;
747 			_tmp156_ = enum_value;
748 			_tmp157_ = vala_ccode_constant_new (_tmp156_);
749 			_tmp158_ = _tmp157_;
750 			vala_ccode_function_call_add_argument (_tmp155_, (ValaCCodeExpression*) _tmp158_);
751 			_vala_ccode_node_unref0 (_tmp158_);
752 			_tmp159_ = vala_ccode_identifier_new ("g_param_spec_pointer");
753 			_tmp160_ = _tmp159_;
754 			_tmp161_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp160_);
755 			_vala_ccode_node_unref0 (cspec);
756 			cspec = _tmp161_;
757 			_vala_ccode_node_unref0 (_tmp160_);
758 			_tmp162_ = cspec;
759 			_tmp163_ = func_name_constant;
760 			vala_ccode_function_call_add_argument (_tmp162_, (ValaCCodeExpression*) _tmp163_);
761 			_tmp164_ = cspec;
762 			_tmp165_ = vala_ccode_constant_new ("\"dup func\"");
763 			_tmp166_ = _tmp165_;
764 			vala_ccode_function_call_add_argument (_tmp164_, (ValaCCodeExpression*) _tmp166_);
765 			_vala_ccode_node_unref0 (_tmp166_);
766 			_tmp167_ = cspec;
767 			_tmp168_ = vala_ccode_constant_new ("\"dup func\"");
768 			_tmp169_ = _tmp168_;
769 			vala_ccode_function_call_add_argument (_tmp167_, (ValaCCodeExpression*) _tmp169_);
770 			_vala_ccode_node_unref0 (_tmp169_);
771 			_tmp170_ = cspec;
772 			_tmp171_ = vala_ccode_constant_new ("G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY");
773 			_tmp172_ = _tmp171_;
774 			vala_ccode_function_call_add_argument (_tmp170_, (ValaCCodeExpression*) _tmp172_);
775 			_vala_ccode_node_unref0 (_tmp172_);
776 			_tmp173_ = cinst;
777 			_tmp174_ = cspec;
778 			vala_ccode_function_call_add_argument (_tmp173_, (ValaCCodeExpression*) _tmp174_);
779 			_tmp175_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
780 			_tmp176_ = _tmp175_;
781 			_tmp177_ = cinst;
782 			vala_ccode_function_add_expression (_tmp176_, (ValaCCodeExpression*) _tmp177_);
783 			_tmp178_ = ((ValaCCodeBaseModule*) self)->prop_enum;
784 			_tmp179_ = enum_value;
785 			_tmp180_ = vala_ccode_enum_value_new (_tmp179_, NULL);
786 			_tmp181_ = _tmp180_;
787 			vala_ccode_enum_add_value (_tmp178_, _tmp181_);
788 			_vala_ccode_node_unref0 (_tmp181_);
789 			_tmp182_ = name_prefix;
790 			_tmp183_ = g_strdup_printf ("%s_destroy_func", _tmp182_);
791 			_g_free0 (func_name);
792 			func_name = _tmp183_;
793 			_tmp184_ = canonical_prefix;
794 			_tmp185_ = g_strdup_printf ("\"%s-destroy-func\"", _tmp184_);
795 			_tmp186_ = _tmp185_;
796 			_tmp187_ = vala_ccode_constant_new (_tmp186_);
797 			_vala_ccode_node_unref0 (func_name_constant);
798 			func_name_constant = _tmp187_;
799 			_g_free0 (_tmp186_);
800 			_tmp188_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
801 			_tmp189_ = _tmp188_;
802 			_tmp190_ = func_name;
803 			_tmp191_ = g_strdup_printf ("%s_%s", _tmp189_, _tmp190_);
804 			_tmp192_ = _tmp191_;
805 			_tmp193_ = g_ascii_strup (_tmp192_, (gssize) -1);
806 			_g_free0 (enum_value);
807 			enum_value = _tmp193_;
808 			_g_free0 (_tmp192_);
809 			_g_free0 (_tmp189_);
810 			_tmp194_ = vala_ccode_identifier_new ("g_object_class_install_property");
811 			_tmp195_ = _tmp194_;
812 			_tmp196_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp195_);
813 			_vala_ccode_node_unref0 (cinst);
814 			cinst = _tmp196_;
815 			_vala_ccode_node_unref0 (_tmp195_);
816 			_tmp197_ = cinst;
817 			_tmp198_ = ccall;
818 			vala_ccode_function_call_add_argument (_tmp197_, (ValaCCodeExpression*) _tmp198_);
819 			_tmp199_ = cinst;
820 			_tmp200_ = enum_value;
821 			_tmp201_ = vala_ccode_constant_new (_tmp200_);
822 			_tmp202_ = _tmp201_;
823 			vala_ccode_function_call_add_argument (_tmp199_, (ValaCCodeExpression*) _tmp202_);
824 			_vala_ccode_node_unref0 (_tmp202_);
825 			_tmp203_ = vala_ccode_identifier_new ("g_param_spec_pointer");
826 			_tmp204_ = _tmp203_;
827 			_tmp205_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp204_);
828 			_vala_ccode_node_unref0 (cspec);
829 			cspec = _tmp205_;
830 			_vala_ccode_node_unref0 (_tmp204_);
831 			_tmp206_ = cspec;
832 			_tmp207_ = func_name_constant;
833 			vala_ccode_function_call_add_argument (_tmp206_, (ValaCCodeExpression*) _tmp207_);
834 			_tmp208_ = cspec;
835 			_tmp209_ = vala_ccode_constant_new ("\"destroy func\"");
836 			_tmp210_ = _tmp209_;
837 			vala_ccode_function_call_add_argument (_tmp208_, (ValaCCodeExpression*) _tmp210_);
838 			_vala_ccode_node_unref0 (_tmp210_);
839 			_tmp211_ = cspec;
840 			_tmp212_ = vala_ccode_constant_new ("\"destroy func\"");
841 			_tmp213_ = _tmp212_;
842 			vala_ccode_function_call_add_argument (_tmp211_, (ValaCCodeExpression*) _tmp213_);
843 			_vala_ccode_node_unref0 (_tmp213_);
844 			_tmp214_ = cspec;
845 			_tmp215_ = vala_ccode_constant_new ("G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY");
846 			_tmp216_ = _tmp215_;
847 			vala_ccode_function_call_add_argument (_tmp214_, (ValaCCodeExpression*) _tmp216_);
848 			_vala_ccode_node_unref0 (_tmp216_);
849 			_tmp217_ = cinst;
850 			_tmp218_ = cspec;
851 			vala_ccode_function_call_add_argument (_tmp217_, (ValaCCodeExpression*) _tmp218_);
852 			_tmp219_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
853 			_tmp220_ = _tmp219_;
854 			_tmp221_ = cinst;
855 			vala_ccode_function_add_expression (_tmp220_, (ValaCCodeExpression*) _tmp221_);
856 			_tmp222_ = ((ValaCCodeBaseModule*) self)->prop_enum;
857 			_tmp223_ = enum_value;
858 			_tmp224_ = vala_ccode_enum_value_new (_tmp223_, NULL);
859 			_tmp225_ = _tmp224_;
860 			vala_ccode_enum_add_value (_tmp222_, _tmp225_);
861 			_vala_ccode_node_unref0 (_tmp225_);
862 			_g_free0 (canonical_prefix);
863 			_g_free0 (name_prefix);
864 			_vala_ccode_node_unref0 (cspec);
865 			_vala_ccode_node_unref0 (cinst);
866 			_vala_ccode_node_unref0 (func_name_constant);
867 			_g_free0 (enum_value);
868 			_g_free0 (func_name);
869 			_vala_code_node_unref0 (type_param);
870 		}
871 		_vala_iterable_unref0 (_type_param_list);
872 	}
873 	_tmp226_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
874 	_tmp227_ = _vala_iterable_ref0 (_tmp226_);
875 	props = _tmp227_;
876 	{
877 		ValaList* _prop_list = NULL;
878 		ValaList* _tmp228_;
879 		ValaList* _tmp229_;
880 		gint _prop_size = 0;
881 		ValaList* _tmp230_;
882 		gint _tmp231_;
883 		gint _tmp232_;
884 		gint _prop_index = 0;
885 		_tmp228_ = props;
886 		_tmp229_ = _vala_iterable_ref0 (_tmp228_);
887 		_prop_list = _tmp229_;
888 		_tmp230_ = _prop_list;
889 		_tmp231_ = vala_collection_get_size ((ValaCollection*) _tmp230_);
890 		_tmp232_ = _tmp231_;
891 		_prop_size = _tmp232_;
892 		_prop_index = -1;
893 		while (TRUE) {
894 			gint _tmp233_;
895 			gint _tmp234_;
896 			ValaProperty* prop = NULL;
897 			ValaList* _tmp235_;
898 			gpointer _tmp236_;
899 			ValaCodeContext* _tmp237_;
900 			ValaCodeContext* _tmp238_;
901 			ValaSemanticAnalyzer* _tmp239_;
902 			ValaSemanticAnalyzer* _tmp240_;
903 			ValaProperty* _tmp241_;
904 			ValaProperty* _tmp259_;
905 			ValaComment* _tmp260_;
906 			ValaComment* _tmp261_;
907 			ValaCCodeFunctionCall* cinst = NULL;
908 			ValaCCodeIdentifier* _tmp271_;
909 			ValaCCodeIdentifier* _tmp272_;
910 			ValaCCodeFunctionCall* _tmp273_;
911 			ValaCCodeFunctionCall* _tmp274_;
912 			ValaCCodeFunctionCall* _tmp275_;
913 			ValaCCodeFunctionCall* _tmp276_;
914 			ValaCCodeFunctionCall* _tmp277_;
915 			ValaProperty* _tmp278_;
916 			gchar* _tmp279_;
917 			gchar* _tmp280_;
918 			gchar* _tmp281_;
919 			gchar* _tmp282_;
920 			ValaCCodeConstant* _tmp283_;
921 			ValaCCodeConstant* _tmp284_;
922 			ValaCCodeFunctionCall* _tmp285_;
923 			ValaProperty* _tmp286_;
924 			ValaCCodeExpression* _tmp287_;
925 			ValaCCodeExpression* _tmp288_;
926 			ValaCCodeFunction* _tmp289_;
927 			ValaCCodeFunction* _tmp290_;
928 			ValaCCodeFunctionCall* _tmp291_;
929 			_prop_index = _prop_index + 1;
930 			_tmp233_ = _prop_index;
931 			_tmp234_ = _prop_size;
932 			if (!(_tmp233_ < _tmp234_)) {
933 				break;
934 			}
935 			_tmp235_ = _prop_list;
936 			_tmp236_ = vala_list_get (_tmp235_, _prop_index);
937 			prop = (ValaProperty*) _tmp236_;
938 			_tmp237_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
939 			_tmp238_ = _tmp237_;
940 			_tmp239_ = vala_code_context_get_analyzer (_tmp238_);
941 			_tmp240_ = _tmp239_;
942 			_tmp241_ = prop;
943 			if (!vala_semantic_analyzer_is_gobject_property (_tmp240_, _tmp241_)) {
944 				ValaCodeContext* _tmp242_;
945 				ValaCodeContext* _tmp243_;
946 				ValaSemanticAnalyzer* _tmp244_;
947 				ValaSemanticAnalyzer* _tmp245_;
948 				ValaProperty* _tmp246_;
949 				ValaDataType* _tmp247_;
950 				ValaDataType* _tmp248_;
951 				_tmp242_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
952 				_tmp243_ = _tmp242_;
953 				_tmp244_ = vala_code_context_get_analyzer (_tmp243_);
954 				_tmp245_ = _tmp244_;
955 				_tmp246_ = prop;
956 				_tmp247_ = vala_property_get_property_type (_tmp246_);
957 				_tmp248_ = _tmp247_;
958 				if (!vala_semantic_analyzer_is_gobject_property_type (_tmp245_, _tmp248_)) {
959 					ValaProperty* _tmp249_;
960 					ValaSourceReference* _tmp250_;
961 					ValaSourceReference* _tmp251_;
962 					ValaProperty* _tmp252_;
963 					ValaDataType* _tmp253_;
964 					ValaDataType* _tmp254_;
965 					gchar* _tmp255_;
966 					gchar* _tmp256_;
967 					gchar* _tmp257_;
968 					gchar* _tmp258_;
969 					_tmp249_ = prop;
970 					_tmp250_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp249_);
971 					_tmp251_ = _tmp250_;
972 					_tmp252_ = prop;
973 					_tmp253_ = vala_property_get_property_type (_tmp252_);
974 					_tmp254_ = _tmp253_;
975 					_tmp255_ = vala_data_type_to_qualified_string (_tmp254_, NULL);
976 					_tmp256_ = _tmp255_;
977 					_tmp257_ = g_strdup_printf ("Type `%s' can not be used for a GLib.Object property", _tmp256_);
978 					_tmp258_ = _tmp257_;
979 					vala_report_warning (_tmp251_, _tmp258_);
980 					_g_free0 (_tmp258_);
981 					_g_free0 (_tmp256_);
982 				}
983 				_vala_code_node_unref0 (prop);
984 				continue;
985 			}
986 			_tmp259_ = prop;
987 			_tmp260_ = vala_symbol_get_comment ((ValaSymbol*) _tmp259_);
988 			_tmp261_ = _tmp260_;
989 			if (_tmp261_ != NULL) {
990 				ValaCCodeFunction* _tmp262_;
991 				ValaCCodeFunction* _tmp263_;
992 				ValaProperty* _tmp264_;
993 				ValaComment* _tmp265_;
994 				ValaComment* _tmp266_;
995 				const gchar* _tmp267_;
996 				const gchar* _tmp268_;
997 				ValaCCodeComment* _tmp269_;
998 				ValaCCodeComment* _tmp270_;
999 				_tmp262_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1000 				_tmp263_ = _tmp262_;
1001 				_tmp264_ = prop;
1002 				_tmp265_ = vala_symbol_get_comment ((ValaSymbol*) _tmp264_);
1003 				_tmp266_ = _tmp265_;
1004 				_tmp267_ = vala_comment_get_content (_tmp266_);
1005 				_tmp268_ = _tmp267_;
1006 				_tmp269_ = vala_ccode_comment_new (_tmp268_);
1007 				_tmp270_ = _tmp269_;
1008 				vala_ccode_function_add_statement (_tmp263_, (ValaCCodeNode*) _tmp270_);
1009 				_vala_ccode_node_unref0 (_tmp270_);
1010 			}
1011 			_tmp271_ = vala_ccode_identifier_new ("g_object_class_install_property");
1012 			_tmp272_ = _tmp271_;
1013 			_tmp273_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp272_);
1014 			_tmp274_ = _tmp273_;
1015 			_vala_ccode_node_unref0 (_tmp272_);
1016 			cinst = _tmp274_;
1017 			_tmp275_ = cinst;
1018 			_tmp276_ = ccall;
1019 			vala_ccode_function_call_add_argument (_tmp275_, (ValaCCodeExpression*) _tmp276_);
1020 			_tmp277_ = cinst;
1021 			_tmp278_ = prop;
1022 			_tmp279_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp278_, NULL);
1023 			_tmp280_ = _tmp279_;
1024 			_tmp281_ = g_strdup_printf ("%s_PROPERTY", _tmp280_);
1025 			_tmp282_ = _tmp281_;
1026 			_tmp283_ = vala_ccode_constant_new (_tmp282_);
1027 			_tmp284_ = _tmp283_;
1028 			vala_ccode_function_call_add_argument (_tmp277_, (ValaCCodeExpression*) _tmp284_);
1029 			_vala_ccode_node_unref0 (_tmp284_);
1030 			_g_free0 (_tmp282_);
1031 			_g_free0 (_tmp280_);
1032 			_tmp285_ = cinst;
1033 			_tmp286_ = prop;
1034 			_tmp287_ = vala_ccode_base_module_get_param_spec ((ValaCCodeBaseModule*) self, _tmp286_);
1035 			_tmp288_ = _tmp287_;
1036 			vala_ccode_function_call_add_argument (_tmp285_, _tmp288_);
1037 			_vala_ccode_node_unref0 (_tmp288_);
1038 			_tmp289_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1039 			_tmp290_ = _tmp289_;
1040 			_tmp291_ = cinst;
1041 			vala_ccode_function_add_expression (_tmp290_, (ValaCCodeExpression*) _tmp291_);
1042 			_vala_ccode_node_unref0 (cinst);
1043 			_vala_code_node_unref0 (prop);
1044 		}
1045 		_vala_iterable_unref0 (_prop_list);
1046 	}
1047 	_vala_iterable_unref0 (props);
1048 	_vala_ccode_node_unref0 (ccall);
1049 }
1050 
1051 static gboolean
vala_gobject_module_class_has_readable_properties(ValaGObjectModule * self,ValaClass * cl)1052 vala_gobject_module_class_has_readable_properties (ValaGObjectModule* self,
1053                                                    ValaClass* cl)
1054 {
1055 	gboolean result = FALSE;
1056 	g_return_val_if_fail (self != NULL, FALSE);
1057 	g_return_val_if_fail (cl != NULL, FALSE);
1058 	{
1059 		ValaList* _prop_list = NULL;
1060 		ValaList* _tmp0_;
1061 		ValaList* _tmp1_;
1062 		gint _prop_size = 0;
1063 		ValaList* _tmp2_;
1064 		gint _tmp3_;
1065 		gint _tmp4_;
1066 		gint _prop_index = 0;
1067 		_tmp0_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
1068 		_tmp1_ = _vala_iterable_ref0 (_tmp0_);
1069 		_prop_list = _tmp1_;
1070 		_tmp2_ = _prop_list;
1071 		_tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
1072 		_tmp4_ = _tmp3_;
1073 		_prop_size = _tmp4_;
1074 		_prop_index = -1;
1075 		while (TRUE) {
1076 			gint _tmp5_;
1077 			gint _tmp6_;
1078 			ValaProperty* prop = NULL;
1079 			ValaList* _tmp7_;
1080 			gpointer _tmp8_;
1081 			ValaProperty* _tmp9_;
1082 			ValaPropertyAccessor* _tmp10_;
1083 			ValaPropertyAccessor* _tmp11_;
1084 			_prop_index = _prop_index + 1;
1085 			_tmp5_ = _prop_index;
1086 			_tmp6_ = _prop_size;
1087 			if (!(_tmp5_ < _tmp6_)) {
1088 				break;
1089 			}
1090 			_tmp7_ = _prop_list;
1091 			_tmp8_ = vala_list_get (_tmp7_, _prop_index);
1092 			prop = (ValaProperty*) _tmp8_;
1093 			_tmp9_ = prop;
1094 			_tmp10_ = vala_property_get_get_accessor (_tmp9_);
1095 			_tmp11_ = _tmp10_;
1096 			if (_tmp11_ != NULL) {
1097 				result = TRUE;
1098 				_vala_code_node_unref0 (prop);
1099 				_vala_iterable_unref0 (_prop_list);
1100 				return result;
1101 			}
1102 			_vala_code_node_unref0 (prop);
1103 		}
1104 		_vala_iterable_unref0 (_prop_list);
1105 	}
1106 	result = FALSE;
1107 	return result;
1108 }
1109 
1110 static gboolean
vala_gobject_module_class_has_writable_properties(ValaGObjectModule * self,ValaClass * cl)1111 vala_gobject_module_class_has_writable_properties (ValaGObjectModule* self,
1112                                                    ValaClass* cl)
1113 {
1114 	gboolean result = FALSE;
1115 	g_return_val_if_fail (self != NULL, FALSE);
1116 	g_return_val_if_fail (cl != NULL, FALSE);
1117 	{
1118 		ValaList* _prop_list = NULL;
1119 		ValaList* _tmp0_;
1120 		ValaList* _tmp1_;
1121 		gint _prop_size = 0;
1122 		ValaList* _tmp2_;
1123 		gint _tmp3_;
1124 		gint _tmp4_;
1125 		gint _prop_index = 0;
1126 		_tmp0_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
1127 		_tmp1_ = _vala_iterable_ref0 (_tmp0_);
1128 		_prop_list = _tmp1_;
1129 		_tmp2_ = _prop_list;
1130 		_tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
1131 		_tmp4_ = _tmp3_;
1132 		_prop_size = _tmp4_;
1133 		_prop_index = -1;
1134 		while (TRUE) {
1135 			gint _tmp5_;
1136 			gint _tmp6_;
1137 			ValaProperty* prop = NULL;
1138 			ValaList* _tmp7_;
1139 			gpointer _tmp8_;
1140 			ValaProperty* _tmp9_;
1141 			ValaPropertyAccessor* _tmp10_;
1142 			ValaPropertyAccessor* _tmp11_;
1143 			_prop_index = _prop_index + 1;
1144 			_tmp5_ = _prop_index;
1145 			_tmp6_ = _prop_size;
1146 			if (!(_tmp5_ < _tmp6_)) {
1147 				break;
1148 			}
1149 			_tmp7_ = _prop_list;
1150 			_tmp8_ = vala_list_get (_tmp7_, _prop_index);
1151 			prop = (ValaProperty*) _tmp8_;
1152 			_tmp9_ = prop;
1153 			_tmp10_ = vala_property_get_set_accessor (_tmp9_);
1154 			_tmp11_ = _tmp10_;
1155 			if (_tmp11_ != NULL) {
1156 				result = TRUE;
1157 				_vala_code_node_unref0 (prop);
1158 				_vala_iterable_unref0 (_prop_list);
1159 				return result;
1160 			}
1161 			_vala_code_node_unref0 (prop);
1162 		}
1163 		_vala_iterable_unref0 (_prop_list);
1164 	}
1165 	result = FALSE;
1166 	return result;
1167 }
1168 
1169 static void
vala_gobject_module_add_guarded_expression(ValaGObjectModule * self,ValaSymbol * sym,ValaCCodeExpression * expression)1170 vala_gobject_module_add_guarded_expression (ValaGObjectModule* self,
1171                                             ValaSymbol* sym,
1172                                             ValaCCodeExpression* expression)
1173 {
1174 	ValaVersionAttribute* _tmp0_;
1175 	ValaVersionAttribute* _tmp1_;
1176 	gboolean _tmp2_;
1177 	gboolean _tmp3_;
1178 	g_return_if_fail (self != NULL);
1179 	g_return_if_fail (sym != NULL);
1180 	g_return_if_fail (expression != NULL);
1181 	_tmp0_ = vala_symbol_get_version (sym);
1182 	_tmp1_ = _tmp0_;
1183 	_tmp2_ = vala_version_attribute_get_deprecated (_tmp1_);
1184 	_tmp3_ = _tmp2_;
1185 	if (_tmp3_) {
1186 		ValaCCodeGGnucSection* guard = NULL;
1187 		ValaCCodeGGnucSection* _tmp4_;
1188 		ValaCCodeFunction* _tmp5_;
1189 		ValaCCodeFunction* _tmp6_;
1190 		ValaCCodeGGnucSection* _tmp7_;
1191 		ValaCCodeGGnucSection* _tmp8_;
1192 		ValaCCodeExpressionStatement* _tmp9_;
1193 		ValaCCodeExpressionStatement* _tmp10_;
1194 		_tmp4_ = vala_ccode_ggnuc_section_new (VALA_GGNUC_SECTION_TYPE_IGNORE_DEPRECATIONS);
1195 		guard = _tmp4_;
1196 		_tmp5_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1197 		_tmp6_ = _tmp5_;
1198 		_tmp7_ = guard;
1199 		vala_ccode_function_add_statement (_tmp6_, (ValaCCodeNode*) _tmp7_);
1200 		_tmp8_ = guard;
1201 		_tmp9_ = vala_ccode_expression_statement_new (expression);
1202 		_tmp10_ = _tmp9_;
1203 		vala_ccode_fragment_append ((ValaCCodeFragment*) _tmp8_, (ValaCCodeNode*) _tmp10_);
1204 		_vala_ccode_node_unref0 (_tmp10_);
1205 		_vala_ccode_node_unref0 (guard);
1206 	} else {
1207 		ValaCCodeFunction* _tmp11_;
1208 		ValaCCodeFunction* _tmp12_;
1209 		_tmp11_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1210 		_tmp12_ = _tmp11_;
1211 		vala_ccode_function_add_expression (_tmp12_, expression);
1212 	}
1213 }
1214 
1215 static gpointer
_vala_code_node_ref0(gpointer self)1216 _vala_code_node_ref0 (gpointer self)
1217 {
1218 	return self ? vala_code_node_ref (self) : NULL;
1219 }
1220 
1221 static gpointer
_vala_ccode_node_ref0(gpointer self)1222 _vala_ccode_node_ref0 (gpointer self)
1223 {
1224 	return self ? vala_ccode_node_ref (self) : NULL;
1225 }
1226 
1227 static void
vala_gobject_module_add_get_property_function(ValaGObjectModule * self,ValaClass * cl)1228 vala_gobject_module_add_get_property_function (ValaGObjectModule* self,
1229                                                ValaClass* cl)
1230 {
1231 	ValaCCodeFunction* get_prop = NULL;
1232 	gchar* _tmp0_;
1233 	gchar* _tmp1_;
1234 	gchar* _tmp2_;
1235 	gchar* _tmp3_;
1236 	ValaCCodeFunction* _tmp4_;
1237 	ValaCCodeFunction* _tmp5_;
1238 	ValaCCodeFunction* _tmp6_;
1239 	ValaCCodeFunction* _tmp7_;
1240 	ValaCCodeParameter* _tmp8_;
1241 	ValaCCodeParameter* _tmp9_;
1242 	ValaCCodeFunction* _tmp10_;
1243 	ValaCCodeParameter* _tmp11_;
1244 	ValaCCodeParameter* _tmp12_;
1245 	ValaCCodeFunction* _tmp13_;
1246 	ValaCCodeParameter* _tmp14_;
1247 	ValaCCodeParameter* _tmp15_;
1248 	ValaCCodeFunction* _tmp16_;
1249 	ValaCCodeParameter* _tmp17_;
1250 	ValaCCodeParameter* _tmp18_;
1251 	ValaCCodeFunction* _tmp19_;
1252 	ValaCCodeFunctionCall* ccall = NULL;
1253 	ValaCCodeIdentifier* _tmp20_;
1254 	ValaCCodeIdentifier* _tmp21_;
1255 	ValaCCodeFunctionCall* _tmp22_;
1256 	ValaCCodeFunctionCall* _tmp23_;
1257 	ValaCCodeFunction* _tmp24_;
1258 	ValaCCodeFunction* _tmp25_;
1259 	gchar* _tmp26_;
1260 	gchar* _tmp27_;
1261 	gchar* _tmp28_;
1262 	gchar* _tmp29_;
1263 	ValaCCodeFunctionCall* _tmp30_;
1264 	ValaCCodeVariableDeclarator* _tmp31_;
1265 	ValaCCodeVariableDeclarator* _tmp32_;
1266 	ValaCCodeFunction* _tmp33_;
1267 	ValaCCodeFunction* _tmp34_;
1268 	ValaCCodeIdentifier* _tmp35_;
1269 	ValaCCodeIdentifier* _tmp36_;
1270 	ValaList* props = NULL;
1271 	ValaList* _tmp37_;
1272 	ValaList* _tmp38_;
1273 	ValaCCodeFunction* _tmp423_;
1274 	ValaCCodeFunction* _tmp424_;
1275 	ValaCCodeFunction* _tmp425_;
1276 	ValaCCodeFunction* _tmp426_;
1277 	ValaCCodeFunction* _tmp427_;
1278 	ValaCCodeFunction* _tmp428_;
1279 	ValaCCodeFile* _tmp429_;
1280 	ValaCCodeFunction* _tmp430_;
1281 	ValaCCodeFile* _tmp431_;
1282 	ValaCCodeFunction* _tmp432_;
1283 	g_return_if_fail (self != NULL);
1284 	g_return_if_fail (cl != NULL);
1285 	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
1286 	_tmp1_ = _tmp0_;
1287 	_tmp2_ = g_strdup_printf ("_vala_%s_get_property", _tmp1_);
1288 	_tmp3_ = _tmp2_;
1289 	_tmp4_ = vala_ccode_function_new (_tmp3_, "void");
1290 	_tmp5_ = _tmp4_;
1291 	_g_free0 (_tmp3_);
1292 	_g_free0 (_tmp1_);
1293 	get_prop = _tmp5_;
1294 	_tmp6_ = get_prop;
1295 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp6_, VALA_CCODE_MODIFIERS_STATIC);
1296 	_tmp7_ = get_prop;
1297 	_tmp8_ = vala_ccode_parameter_new ("object", "GObject *");
1298 	_tmp9_ = _tmp8_;
1299 	vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
1300 	_vala_ccode_node_unref0 (_tmp9_);
1301 	_tmp10_ = get_prop;
1302 	_tmp11_ = vala_ccode_parameter_new ("property_id", "guint");
1303 	_tmp12_ = _tmp11_;
1304 	vala_ccode_function_add_parameter (_tmp10_, _tmp12_);
1305 	_vala_ccode_node_unref0 (_tmp12_);
1306 	_tmp13_ = get_prop;
1307 	_tmp14_ = vala_ccode_parameter_new ("value", "GValue *");
1308 	_tmp15_ = _tmp14_;
1309 	vala_ccode_function_add_parameter (_tmp13_, _tmp15_);
1310 	_vala_ccode_node_unref0 (_tmp15_);
1311 	_tmp16_ = get_prop;
1312 	_tmp17_ = vala_ccode_parameter_new ("pspec", "GParamSpec *");
1313 	_tmp18_ = _tmp17_;
1314 	vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
1315 	_vala_ccode_node_unref0 (_tmp18_);
1316 	_tmp19_ = get_prop;
1317 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
1318 	_tmp20_ = vala_ccode_identifier_new ("object");
1319 	_tmp21_ = _tmp20_;
1320 	_tmp22_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp21_, (ValaTypeSymbol*) cl);
1321 	_tmp23_ = _tmp22_;
1322 	_vala_ccode_node_unref0 (_tmp21_);
1323 	ccall = _tmp23_;
1324 	_tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1325 	_tmp25_ = _tmp24_;
1326 	_tmp26_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1327 	_tmp27_ = _tmp26_;
1328 	_tmp28_ = g_strdup_printf ("%s *", _tmp27_);
1329 	_tmp29_ = _tmp28_;
1330 	_tmp30_ = ccall;
1331 	_tmp31_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp30_, NULL);
1332 	_tmp32_ = _tmp31_;
1333 	vala_ccode_function_add_declaration (_tmp25_, _tmp29_, (ValaCCodeDeclarator*) _tmp32_, 0);
1334 	_vala_ccode_node_unref0 (_tmp32_);
1335 	_g_free0 (_tmp29_);
1336 	_g_free0 (_tmp27_);
1337 	_tmp33_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1338 	_tmp34_ = _tmp33_;
1339 	_tmp35_ = vala_ccode_identifier_new ("property_id");
1340 	_tmp36_ = _tmp35_;
1341 	vala_ccode_function_open_switch (_tmp34_, (ValaCCodeExpression*) _tmp36_);
1342 	_vala_ccode_node_unref0 (_tmp36_);
1343 	_tmp37_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
1344 	_tmp38_ = _vala_iterable_ref0 (_tmp37_);
1345 	props = _tmp38_;
1346 	{
1347 		ValaList* _prop_list = NULL;
1348 		ValaList* _tmp39_;
1349 		ValaList* _tmp40_;
1350 		gint _prop_size = 0;
1351 		ValaList* _tmp41_;
1352 		gint _tmp42_;
1353 		gint _tmp43_;
1354 		gint _prop_index = 0;
1355 		_tmp39_ = props;
1356 		_tmp40_ = _vala_iterable_ref0 (_tmp39_);
1357 		_prop_list = _tmp40_;
1358 		_tmp41_ = _prop_list;
1359 		_tmp42_ = vala_collection_get_size ((ValaCollection*) _tmp41_);
1360 		_tmp43_ = _tmp42_;
1361 		_prop_size = _tmp43_;
1362 		_prop_index = -1;
1363 		while (TRUE) {
1364 			gint _tmp44_;
1365 			gint _tmp45_;
1366 			ValaProperty* prop = NULL;
1367 			ValaList* _tmp46_;
1368 			gpointer _tmp47_;
1369 			gboolean _tmp48_ = FALSE;
1370 			ValaProperty* _tmp49_;
1371 			ValaPropertyAccessor* _tmp50_;
1372 			ValaPropertyAccessor* _tmp51_;
1373 			ValaCodeContext* _tmp55_;
1374 			ValaCodeContext* _tmp56_;
1375 			ValaSemanticAnalyzer* _tmp57_;
1376 			ValaSemanticAnalyzer* _tmp58_;
1377 			ValaProperty* _tmp59_;
1378 			ValaProperty* base_prop = NULL;
1379 			ValaProperty* _tmp60_;
1380 			ValaProperty* _tmp61_;
1381 			ValaCCodeExpression* cself = NULL;
1382 			ValaCCodeIdentifier* _tmp62_;
1383 			ValaProperty* _tmp63_;
1384 			ValaProperty* _tmp64_;
1385 			ValaProperty* _tmp65_;
1386 			ValaCCodeExpression* cfunc = NULL;
1387 			gboolean _tmp127_ = FALSE;
1388 			ValaProperty* _tmp128_;
1389 			ValaCCodeFunction* _tmp142_;
1390 			ValaCCodeFunction* _tmp143_;
1391 			ValaProperty* _tmp144_;
1392 			gchar* _tmp145_;
1393 			gchar* _tmp146_;
1394 			gchar* _tmp147_;
1395 			gchar* _tmp148_;
1396 			ValaCCodeIdentifier* _tmp149_;
1397 			ValaCCodeIdentifier* _tmp150_;
1398 			ValaProperty* _tmp151_;
1399 			ValaDataType* _tmp152_;
1400 			ValaDataType* _tmp153_;
1401 			ValaCCodeFunction* _tmp304_;
1402 			ValaCCodeFunction* _tmp305_;
1403 			_prop_index = _prop_index + 1;
1404 			_tmp44_ = _prop_index;
1405 			_tmp45_ = _prop_size;
1406 			if (!(_tmp44_ < _tmp45_)) {
1407 				break;
1408 			}
1409 			_tmp46_ = _prop_list;
1410 			_tmp47_ = vala_list_get (_tmp46_, _prop_index);
1411 			prop = (ValaProperty*) _tmp47_;
1412 			_tmp49_ = prop;
1413 			_tmp50_ = vala_property_get_get_accessor (_tmp49_);
1414 			_tmp51_ = _tmp50_;
1415 			if (_tmp51_ == NULL) {
1416 				_tmp48_ = TRUE;
1417 			} else {
1418 				ValaProperty* _tmp52_;
1419 				gboolean _tmp53_;
1420 				gboolean _tmp54_;
1421 				_tmp52_ = prop;
1422 				_tmp53_ = vala_property_get_is_abstract (_tmp52_);
1423 				_tmp54_ = _tmp53_;
1424 				_tmp48_ = _tmp54_;
1425 			}
1426 			if (_tmp48_) {
1427 				_vala_code_node_unref0 (prop);
1428 				continue;
1429 			}
1430 			_tmp55_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
1431 			_tmp56_ = _tmp55_;
1432 			_tmp57_ = vala_code_context_get_analyzer (_tmp56_);
1433 			_tmp58_ = _tmp57_;
1434 			_tmp59_ = prop;
1435 			if (!vala_semantic_analyzer_is_gobject_property (_tmp58_, _tmp59_)) {
1436 				_vala_code_node_unref0 (prop);
1437 				continue;
1438 			}
1439 			_tmp60_ = prop;
1440 			_tmp61_ = _vala_code_node_ref0 (_tmp60_);
1441 			base_prop = _tmp61_;
1442 			_tmp62_ = vala_ccode_identifier_new ("self");
1443 			cself = (ValaCCodeExpression*) _tmp62_;
1444 			_tmp63_ = prop;
1445 			_tmp64_ = vala_property_get_base_property (_tmp63_);
1446 			_tmp65_ = _tmp64_;
1447 			if (_tmp65_ != NULL) {
1448 				ValaClass* base_type = NULL;
1449 				ValaProperty* _tmp66_;
1450 				ValaProperty* _tmp67_;
1451 				ValaProperty* _tmp68_;
1452 				ValaSymbol* _tmp69_;
1453 				ValaSymbol* _tmp70_;
1454 				ValaClass* _tmp71_;
1455 				ValaProperty* _tmp72_;
1456 				ValaProperty* _tmp73_;
1457 				ValaProperty* _tmp74_;
1458 				ValaProperty* _tmp75_;
1459 				ValaObjectType* _tmp76_;
1460 				ValaObjectType* _tmp77_;
1461 				ValaCCodeExpression* _tmp78_;
1462 				ValaGLibValue* _tmp79_;
1463 				ValaGLibValue* _tmp80_;
1464 				ValaClass* _tmp81_;
1465 				ValaObjectType* _tmp82_;
1466 				ValaObjectType* _tmp83_;
1467 				ValaProperty* _tmp84_;
1468 				ValaTargetValue* _tmp85_;
1469 				ValaTargetValue* _tmp86_;
1470 				ValaCCodeExpression* _tmp87_;
1471 				ValaCCodeExpression* _tmp88_;
1472 				ValaProperty* _tmp89_;
1473 				ValaProperty* _tmp90_;
1474 				ValaProperty* _tmp91_;
1475 				ValaPropertyAccessor* _tmp92_;
1476 				ValaPropertyAccessor* _tmp93_;
1477 				ValaCCodeFile* _tmp94_;
1478 				_tmp66_ = prop;
1479 				_tmp67_ = vala_property_get_base_property (_tmp66_);
1480 				_tmp68_ = _tmp67_;
1481 				_tmp69_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp68_);
1482 				_tmp70_ = _tmp69_;
1483 				_tmp71_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp70_, VALA_TYPE_CLASS, ValaClass));
1484 				base_type = _tmp71_;
1485 				_tmp72_ = prop;
1486 				_tmp73_ = vala_property_get_base_property (_tmp72_);
1487 				_tmp74_ = _tmp73_;
1488 				_tmp75_ = _vala_code_node_ref0 (_tmp74_);
1489 				_vala_code_node_unref0 (base_prop);
1490 				base_prop = _tmp75_;
1491 				_tmp76_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl);
1492 				_tmp77_ = _tmp76_;
1493 				_tmp78_ = cself;
1494 				_tmp79_ = vala_glib_value_new ((ValaDataType*) _tmp77_, _tmp78_, TRUE);
1495 				_tmp80_ = _tmp79_;
1496 				_tmp81_ = base_type;
1497 				_tmp82_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp81_);
1498 				_tmp83_ = _tmp82_;
1499 				_tmp84_ = prop;
1500 				_tmp85_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp80_, (ValaDataType*) _tmp83_, (ValaCodeNode*) _tmp84_);
1501 				_tmp86_ = _tmp85_;
1502 				_tmp87_ = vala_get_cvalue_ (_tmp86_);
1503 				_tmp88_ = _vala_ccode_node_ref0 (_tmp87_);
1504 				_vala_ccode_node_unref0 (cself);
1505 				cself = _tmp88_;
1506 				_vala_target_value_unref0 (_tmp86_);
1507 				_vala_code_node_unref0 (_tmp83_);
1508 				_vala_target_value_unref0 (_tmp80_);
1509 				_vala_code_node_unref0 (_tmp77_);
1510 				_tmp89_ = prop;
1511 				_tmp90_ = vala_property_get_base_property (_tmp89_);
1512 				_tmp91_ = _tmp90_;
1513 				_tmp92_ = vala_property_get_get_accessor (_tmp91_);
1514 				_tmp93_ = _tmp92_;
1515 				_tmp94_ = ((ValaCCodeBaseModule*) self)->cfile;
1516 				vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp93_, _tmp94_);
1517 				_vala_code_node_unref0 (base_type);
1518 			} else {
1519 				ValaProperty* _tmp95_;
1520 				ValaProperty* _tmp96_;
1521 				ValaProperty* _tmp97_;
1522 				_tmp95_ = prop;
1523 				_tmp96_ = vala_property_get_base_interface_property (_tmp95_);
1524 				_tmp97_ = _tmp96_;
1525 				if (_tmp97_ != NULL) {
1526 					ValaInterface* base_type = NULL;
1527 					ValaProperty* _tmp98_;
1528 					ValaProperty* _tmp99_;
1529 					ValaProperty* _tmp100_;
1530 					ValaSymbol* _tmp101_;
1531 					ValaSymbol* _tmp102_;
1532 					ValaInterface* _tmp103_;
1533 					ValaProperty* _tmp104_;
1534 					ValaProperty* _tmp105_;
1535 					ValaProperty* _tmp106_;
1536 					ValaProperty* _tmp107_;
1537 					ValaObjectType* _tmp108_;
1538 					ValaObjectType* _tmp109_;
1539 					ValaCCodeExpression* _tmp110_;
1540 					ValaGLibValue* _tmp111_;
1541 					ValaGLibValue* _tmp112_;
1542 					ValaInterface* _tmp113_;
1543 					ValaObjectType* _tmp114_;
1544 					ValaObjectType* _tmp115_;
1545 					ValaProperty* _tmp116_;
1546 					ValaTargetValue* _tmp117_;
1547 					ValaTargetValue* _tmp118_;
1548 					ValaCCodeExpression* _tmp119_;
1549 					ValaCCodeExpression* _tmp120_;
1550 					ValaProperty* _tmp121_;
1551 					ValaProperty* _tmp122_;
1552 					ValaProperty* _tmp123_;
1553 					ValaPropertyAccessor* _tmp124_;
1554 					ValaPropertyAccessor* _tmp125_;
1555 					ValaCCodeFile* _tmp126_;
1556 					_tmp98_ = prop;
1557 					_tmp99_ = vala_property_get_base_interface_property (_tmp98_);
1558 					_tmp100_ = _tmp99_;
1559 					_tmp101_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp100_);
1560 					_tmp102_ = _tmp101_;
1561 					_tmp103_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp102_, VALA_TYPE_INTERFACE, ValaInterface));
1562 					base_type = _tmp103_;
1563 					_tmp104_ = prop;
1564 					_tmp105_ = vala_property_get_base_interface_property (_tmp104_);
1565 					_tmp106_ = _tmp105_;
1566 					_tmp107_ = _vala_code_node_ref0 (_tmp106_);
1567 					_vala_code_node_unref0 (base_prop);
1568 					base_prop = _tmp107_;
1569 					_tmp108_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl);
1570 					_tmp109_ = _tmp108_;
1571 					_tmp110_ = cself;
1572 					_tmp111_ = vala_glib_value_new ((ValaDataType*) _tmp109_, _tmp110_, TRUE);
1573 					_tmp112_ = _tmp111_;
1574 					_tmp113_ = base_type;
1575 					_tmp114_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp113_);
1576 					_tmp115_ = _tmp114_;
1577 					_tmp116_ = prop;
1578 					_tmp117_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp112_, (ValaDataType*) _tmp115_, (ValaCodeNode*) _tmp116_);
1579 					_tmp118_ = _tmp117_;
1580 					_tmp119_ = vala_get_cvalue_ (_tmp118_);
1581 					_tmp120_ = _vala_ccode_node_ref0 (_tmp119_);
1582 					_vala_ccode_node_unref0 (cself);
1583 					cself = _tmp120_;
1584 					_vala_target_value_unref0 (_tmp118_);
1585 					_vala_code_node_unref0 (_tmp115_);
1586 					_vala_target_value_unref0 (_tmp112_);
1587 					_vala_code_node_unref0 (_tmp109_);
1588 					_tmp121_ = prop;
1589 					_tmp122_ = vala_property_get_base_interface_property (_tmp121_);
1590 					_tmp123_ = _tmp122_;
1591 					_tmp124_ = vala_property_get_get_accessor (_tmp123_);
1592 					_tmp125_ = _tmp124_;
1593 					_tmp126_ = ((ValaCCodeBaseModule*) self)->cfile;
1594 					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp125_, _tmp126_);
1595 					_vala_code_node_unref0 (base_type);
1596 				}
1597 			}
1598 			_tmp128_ = base_prop;
1599 			if (!vala_get_ccode_no_accessor_method (_tmp128_)) {
1600 				ValaProperty* _tmp129_;
1601 				_tmp129_ = base_prop;
1602 				_tmp127_ = !vala_get_ccode_concrete_accessor (_tmp129_);
1603 			} else {
1604 				_tmp127_ = FALSE;
1605 			}
1606 			if (_tmp127_) {
1607 				ValaProperty* _tmp130_;
1608 				ValaPropertyAccessor* _tmp131_;
1609 				ValaPropertyAccessor* _tmp132_;
1610 				gchar* _tmp133_;
1611 				gchar* _tmp134_;
1612 				ValaCCodeIdentifier* _tmp135_;
1613 				_tmp130_ = base_prop;
1614 				_tmp131_ = vala_property_get_get_accessor (_tmp130_);
1615 				_tmp132_ = _tmp131_;
1616 				_tmp133_ = vala_get_ccode_name ((ValaCodeNode*) _tmp132_);
1617 				_tmp134_ = _tmp133_;
1618 				_tmp135_ = vala_ccode_identifier_new (_tmp134_);
1619 				_vala_ccode_node_unref0 (cfunc);
1620 				cfunc = (ValaCCodeExpression*) _tmp135_;
1621 				_g_free0 (_tmp134_);
1622 			} else {
1623 				ValaProperty* _tmp136_;
1624 				ValaPropertyAccessor* _tmp137_;
1625 				ValaPropertyAccessor* _tmp138_;
1626 				gchar* _tmp139_;
1627 				gchar* _tmp140_;
1628 				ValaCCodeIdentifier* _tmp141_;
1629 				_tmp136_ = prop;
1630 				_tmp137_ = vala_property_get_get_accessor (_tmp136_);
1631 				_tmp138_ = _tmp137_;
1632 				_tmp139_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp138_);
1633 				_tmp140_ = _tmp139_;
1634 				_tmp141_ = vala_ccode_identifier_new (_tmp140_);
1635 				_vala_ccode_node_unref0 (cfunc);
1636 				cfunc = (ValaCCodeExpression*) _tmp141_;
1637 				_g_free0 (_tmp140_);
1638 			}
1639 			_tmp142_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1640 			_tmp143_ = _tmp142_;
1641 			_tmp144_ = prop;
1642 			_tmp145_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp144_, NULL);
1643 			_tmp146_ = _tmp145_;
1644 			_tmp147_ = g_strdup_printf ("%s_PROPERTY", _tmp146_);
1645 			_tmp148_ = _tmp147_;
1646 			_tmp149_ = vala_ccode_identifier_new (_tmp148_);
1647 			_tmp150_ = _tmp149_;
1648 			vala_ccode_function_add_case (_tmp143_, (ValaCCodeExpression*) _tmp150_);
1649 			_vala_ccode_node_unref0 (_tmp150_);
1650 			_g_free0 (_tmp148_);
1651 			_g_free0 (_tmp146_);
1652 			_tmp151_ = prop;
1653 			_tmp152_ = vala_property_get_property_type (_tmp151_);
1654 			_tmp153_ = _tmp152_;
1655 			if (vala_data_type_is_real_struct_type (_tmp153_)) {
1656 				ValaCCodeFunction* _tmp154_;
1657 				ValaCCodeFunction* _tmp155_;
1658 				ValaCCodeFunction* _tmp156_;
1659 				ValaCCodeFunction* _tmp157_;
1660 				ValaProperty* _tmp158_;
1661 				ValaDataType* _tmp159_;
1662 				ValaDataType* _tmp160_;
1663 				gchar* _tmp161_;
1664 				gchar* _tmp162_;
1665 				ValaCCodeVariableDeclarator* _tmp163_;
1666 				ValaCCodeVariableDeclarator* _tmp164_;
1667 				ValaCCodeExpression* _tmp165_;
1668 				ValaCCodeFunctionCall* _tmp166_;
1669 				ValaCCodeFunctionCall* _tmp167_;
1670 				ValaCCodeExpression* _tmp168_;
1671 				ValaProperty* _tmp169_;
1672 				ValaDataType* _tmp170_;
1673 				ValaDataType* _tmp171_;
1674 				gboolean _tmp172_;
1675 				gboolean _tmp173_;
1676 				ValaCCodeFunctionCall* csetcall = NULL;
1677 				ValaCCodeFunctionCall* _tmp187_;
1678 				ValaCCodeFunctionCall* _tmp188_;
1679 				ValaProperty* _tmp189_;
1680 				ValaDataType* _tmp190_;
1681 				ValaDataType* _tmp191_;
1682 				ValaCCodeExpression* _tmp192_;
1683 				ValaCCodeExpression* _tmp193_;
1684 				ValaCCodeFunctionCall* _tmp194_;
1685 				ValaCCodeIdentifier* _tmp195_;
1686 				ValaCCodeIdentifier* _tmp196_;
1687 				ValaProperty* _tmp197_;
1688 				ValaDataType* _tmp198_;
1689 				ValaDataType* _tmp199_;
1690 				gboolean _tmp200_;
1691 				gboolean _tmp201_;
1692 				ValaProperty* _tmp210_;
1693 				ValaCCodeFunctionCall* _tmp211_;
1694 				ValaProperty* _tmp212_;
1695 				ValaPropertyAccessor* _tmp213_;
1696 				ValaPropertyAccessor* _tmp214_;
1697 				ValaDataType* _tmp215_;
1698 				ValaDataType* _tmp216_;
1699 				ValaCCodeFunction* _tmp230_;
1700 				ValaCCodeFunction* _tmp231_;
1701 				_tmp154_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1702 				_tmp155_ = _tmp154_;
1703 				vala_ccode_function_open_block (_tmp155_);
1704 				_tmp156_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1705 				_tmp157_ = _tmp156_;
1706 				_tmp158_ = prop;
1707 				_tmp159_ = vala_property_get_property_type (_tmp158_);
1708 				_tmp160_ = _tmp159_;
1709 				_tmp161_ = vala_get_ccode_name ((ValaCodeNode*) _tmp160_);
1710 				_tmp162_ = _tmp161_;
1711 				_tmp163_ = vala_ccode_variable_declarator_new ("boxed", NULL, NULL);
1712 				_tmp164_ = _tmp163_;
1713 				vala_ccode_function_add_declaration (_tmp157_, _tmp162_, (ValaCCodeDeclarator*) _tmp164_, 0);
1714 				_vala_ccode_node_unref0 (_tmp164_);
1715 				_g_free0 (_tmp162_);
1716 				_tmp165_ = cfunc;
1717 				_tmp166_ = vala_ccode_function_call_new (_tmp165_);
1718 				_vala_ccode_node_unref0 (ccall);
1719 				ccall = _tmp166_;
1720 				_tmp167_ = ccall;
1721 				_tmp168_ = cself;
1722 				vala_ccode_function_call_add_argument (_tmp167_, _tmp168_);
1723 				_tmp169_ = prop;
1724 				_tmp170_ = vala_property_get_property_type (_tmp169_);
1725 				_tmp171_ = _tmp170_;
1726 				_tmp172_ = vala_data_type_get_nullable (_tmp171_);
1727 				_tmp173_ = _tmp172_;
1728 				if (_tmp173_) {
1729 					ValaCCodeFunction* _tmp174_;
1730 					ValaCCodeFunction* _tmp175_;
1731 					ValaCCodeIdentifier* _tmp176_;
1732 					ValaCCodeIdentifier* _tmp177_;
1733 					ValaCCodeFunctionCall* _tmp178_;
1734 					_tmp174_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1735 					_tmp175_ = _tmp174_;
1736 					_tmp176_ = vala_ccode_identifier_new ("boxed");
1737 					_tmp177_ = _tmp176_;
1738 					_tmp178_ = ccall;
1739 					vala_ccode_function_add_assignment (_tmp175_, (ValaCCodeExpression*) _tmp177_, (ValaCCodeExpression*) _tmp178_);
1740 					_vala_ccode_node_unref0 (_tmp177_);
1741 				} else {
1742 					ValaCCodeFunctionCall* _tmp179_;
1743 					ValaCCodeIdentifier* _tmp180_;
1744 					ValaCCodeIdentifier* _tmp181_;
1745 					ValaCCodeUnaryExpression* _tmp182_;
1746 					ValaCCodeUnaryExpression* _tmp183_;
1747 					ValaCCodeFunction* _tmp184_;
1748 					ValaCCodeFunction* _tmp185_;
1749 					ValaCCodeFunctionCall* _tmp186_;
1750 					_tmp179_ = ccall;
1751 					_tmp180_ = vala_ccode_identifier_new ("boxed");
1752 					_tmp181_ = _tmp180_;
1753 					_tmp182_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp181_);
1754 					_tmp183_ = _tmp182_;
1755 					vala_ccode_function_call_add_argument (_tmp179_, (ValaCCodeExpression*) _tmp183_);
1756 					_vala_ccode_node_unref0 (_tmp183_);
1757 					_vala_ccode_node_unref0 (_tmp181_);
1758 					_tmp184_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1759 					_tmp185_ = _tmp184_;
1760 					_tmp186_ = ccall;
1761 					vala_ccode_function_add_expression (_tmp185_, (ValaCCodeExpression*) _tmp186_);
1762 				}
1763 				_tmp187_ = vala_ccode_function_call_new (NULL);
1764 				csetcall = _tmp187_;
1765 				_tmp188_ = csetcall;
1766 				_tmp189_ = prop;
1767 				_tmp190_ = vala_property_get_property_type (_tmp189_);
1768 				_tmp191_ = _tmp190_;
1769 				_tmp192_ = vala_ccode_base_module_get_value_setter_function ((ValaCCodeBaseModule*) self, _tmp191_);
1770 				_tmp193_ = _tmp192_;
1771 				vala_ccode_function_call_set_call (_tmp188_, _tmp193_);
1772 				_vala_ccode_node_unref0 (_tmp193_);
1773 				_tmp194_ = csetcall;
1774 				_tmp195_ = vala_ccode_identifier_new ("value");
1775 				_tmp196_ = _tmp195_;
1776 				vala_ccode_function_call_add_argument (_tmp194_, (ValaCCodeExpression*) _tmp196_);
1777 				_vala_ccode_node_unref0 (_tmp196_);
1778 				_tmp197_ = prop;
1779 				_tmp198_ = vala_property_get_property_type (_tmp197_);
1780 				_tmp199_ = _tmp198_;
1781 				_tmp200_ = vala_data_type_get_nullable (_tmp199_);
1782 				_tmp201_ = _tmp200_;
1783 				if (_tmp201_) {
1784 					ValaCCodeFunctionCall* _tmp202_;
1785 					ValaCCodeIdentifier* _tmp203_;
1786 					ValaCCodeIdentifier* _tmp204_;
1787 					_tmp202_ = csetcall;
1788 					_tmp203_ = vala_ccode_identifier_new ("boxed");
1789 					_tmp204_ = _tmp203_;
1790 					vala_ccode_function_call_add_argument (_tmp202_, (ValaCCodeExpression*) _tmp204_);
1791 					_vala_ccode_node_unref0 (_tmp204_);
1792 				} else {
1793 					ValaCCodeFunctionCall* _tmp205_;
1794 					ValaCCodeIdentifier* _tmp206_;
1795 					ValaCCodeIdentifier* _tmp207_;
1796 					ValaCCodeUnaryExpression* _tmp208_;
1797 					ValaCCodeUnaryExpression* _tmp209_;
1798 					_tmp205_ = csetcall;
1799 					_tmp206_ = vala_ccode_identifier_new ("boxed");
1800 					_tmp207_ = _tmp206_;
1801 					_tmp208_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp207_);
1802 					_tmp209_ = _tmp208_;
1803 					vala_ccode_function_call_add_argument (_tmp205_, (ValaCCodeExpression*) _tmp209_);
1804 					_vala_ccode_node_unref0 (_tmp209_);
1805 					_vala_ccode_node_unref0 (_tmp207_);
1806 				}
1807 				_tmp210_ = prop;
1808 				_tmp211_ = csetcall;
1809 				vala_gobject_module_add_guarded_expression (self, (ValaSymbol*) _tmp210_, (ValaCCodeExpression*) _tmp211_);
1810 				_tmp212_ = prop;
1811 				_tmp213_ = vala_property_get_get_accessor (_tmp212_);
1812 				_tmp214_ = _tmp213_;
1813 				_tmp215_ = vala_property_accessor_get_value_type (_tmp214_);
1814 				_tmp216_ = _tmp215_;
1815 				if (vala_ccode_base_module_requires_destroy (_tmp216_)) {
1816 					ValaCCodeFunction* _tmp217_;
1817 					ValaCCodeFunction* _tmp218_;
1818 					ValaProperty* _tmp219_;
1819 					ValaPropertyAccessor* _tmp220_;
1820 					ValaPropertyAccessor* _tmp221_;
1821 					ValaDataType* _tmp222_;
1822 					ValaDataType* _tmp223_;
1823 					ValaCCodeIdentifier* _tmp224_;
1824 					ValaCCodeIdentifier* _tmp225_;
1825 					ValaGLibValue* _tmp226_;
1826 					ValaGLibValue* _tmp227_;
1827 					ValaCCodeExpression* _tmp228_;
1828 					ValaCCodeExpression* _tmp229_;
1829 					_tmp217_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1830 					_tmp218_ = _tmp217_;
1831 					_tmp219_ = prop;
1832 					_tmp220_ = vala_property_get_get_accessor (_tmp219_);
1833 					_tmp221_ = _tmp220_;
1834 					_tmp222_ = vala_property_accessor_get_value_type (_tmp221_);
1835 					_tmp223_ = _tmp222_;
1836 					_tmp224_ = vala_ccode_identifier_new ("boxed");
1837 					_tmp225_ = _tmp224_;
1838 					_tmp226_ = vala_glib_value_new (_tmp223_, (ValaCCodeExpression*) _tmp225_, TRUE);
1839 					_tmp227_ = _tmp226_;
1840 					_tmp228_ = vala_ccode_base_module_destroy_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp227_, FALSE);
1841 					_tmp229_ = _tmp228_;
1842 					vala_ccode_function_add_expression (_tmp218_, _tmp229_);
1843 					_vala_ccode_node_unref0 (_tmp229_);
1844 					_vala_target_value_unref0 (_tmp227_);
1845 					_vala_ccode_node_unref0 (_tmp225_);
1846 				}
1847 				_tmp230_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1848 				_tmp231_ = _tmp230_;
1849 				vala_ccode_function_close (_tmp231_);
1850 				_vala_ccode_node_unref0 (csetcall);
1851 			} else {
1852 				ValaCCodeExpression* _tmp232_;
1853 				ValaCCodeFunctionCall* _tmp233_;
1854 				ValaCCodeFunctionCall* _tmp234_;
1855 				ValaCCodeExpression* _tmp235_;
1856 				ValaArrayType* array_type = NULL;
1857 				ValaProperty* _tmp236_;
1858 				ValaDataType* _tmp237_;
1859 				ValaDataType* _tmp238_;
1860 				ValaArrayType* _tmp239_;
1861 				gboolean _tmp240_ = FALSE;
1862 				gboolean _tmp241_ = FALSE;
1863 				ValaArrayType* _tmp242_;
1864 				ValaCCodeFunctionCall* csetcall = NULL;
1865 				ValaCCodeFunctionCall* _tmp263_;
1866 				ValaProperty* _tmp264_;
1867 				ValaPropertyAccessor* _tmp265_;
1868 				ValaPropertyAccessor* _tmp266_;
1869 				ValaDataType* _tmp267_;
1870 				ValaDataType* _tmp268_;
1871 				gboolean _tmp269_;
1872 				gboolean _tmp270_;
1873 				ValaCCodeFunctionCall* _tmp283_;
1874 				ValaCCodeIdentifier* _tmp284_;
1875 				ValaCCodeIdentifier* _tmp285_;
1876 				ValaCCodeFunctionCall* _tmp286_;
1877 				ValaCCodeFunctionCall* _tmp287_;
1878 				ValaProperty* _tmp288_;
1879 				ValaCCodeFunctionCall* _tmp289_;
1880 				gboolean _tmp290_ = FALSE;
1881 				gboolean _tmp291_ = FALSE;
1882 				ValaArrayType* _tmp292_;
1883 				_tmp232_ = cfunc;
1884 				_tmp233_ = vala_ccode_function_call_new (_tmp232_);
1885 				_vala_ccode_node_unref0 (ccall);
1886 				ccall = _tmp233_;
1887 				_tmp234_ = ccall;
1888 				_tmp235_ = cself;
1889 				vala_ccode_function_call_add_argument (_tmp234_, _tmp235_);
1890 				_tmp236_ = prop;
1891 				_tmp237_ = vala_property_get_property_type (_tmp236_);
1892 				_tmp238_ = _tmp237_;
1893 				_tmp239_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp238_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp238_) : NULL);
1894 				array_type = _tmp239_;
1895 				_tmp242_ = array_type;
1896 				if (_tmp242_ != NULL) {
1897 					ValaProperty* _tmp243_;
1898 					_tmp243_ = prop;
1899 					_tmp241_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp243_);
1900 				} else {
1901 					_tmp241_ = FALSE;
1902 				}
1903 				if (_tmp241_) {
1904 					ValaArrayType* _tmp244_;
1905 					ValaDataType* _tmp245_;
1906 					ValaDataType* _tmp246_;
1907 					ValaTypeSymbol* _tmp247_;
1908 					ValaTypeSymbol* _tmp248_;
1909 					ValaDataType* _tmp249_;
1910 					ValaTypeSymbol* _tmp250_;
1911 					ValaTypeSymbol* _tmp251_;
1912 					_tmp244_ = array_type;
1913 					_tmp245_ = vala_array_type_get_element_type (_tmp244_);
1914 					_tmp246_ = _tmp245_;
1915 					_tmp247_ = vala_data_type_get_type_symbol (_tmp246_);
1916 					_tmp248_ = _tmp247_;
1917 					_tmp249_ = ((ValaCCodeBaseModule*) self)->string_type;
1918 					_tmp250_ = vala_data_type_get_type_symbol (_tmp249_);
1919 					_tmp251_ = _tmp250_;
1920 					_tmp240_ = _tmp248_ == _tmp251_;
1921 				} else {
1922 					_tmp240_ = FALSE;
1923 				}
1924 				if (_tmp240_) {
1925 					ValaCCodeFunction* _tmp252_;
1926 					ValaCCodeFunction* _tmp253_;
1927 					ValaCCodeFunction* _tmp254_;
1928 					ValaCCodeFunction* _tmp255_;
1929 					ValaCCodeVariableDeclarator* _tmp256_;
1930 					ValaCCodeVariableDeclarator* _tmp257_;
1931 					ValaCCodeFunctionCall* _tmp258_;
1932 					ValaCCodeIdentifier* _tmp259_;
1933 					ValaCCodeIdentifier* _tmp260_;
1934 					ValaCCodeUnaryExpression* _tmp261_;
1935 					ValaCCodeUnaryExpression* _tmp262_;
1936 					_tmp252_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1937 					_tmp253_ = _tmp252_;
1938 					vala_ccode_function_open_block (_tmp253_);
1939 					_tmp254_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1940 					_tmp255_ = _tmp254_;
1941 					_tmp256_ = vala_ccode_variable_declarator_new ("length", NULL, NULL);
1942 					_tmp257_ = _tmp256_;
1943 					vala_ccode_function_add_declaration (_tmp255_, "int", (ValaCCodeDeclarator*) _tmp257_, 0);
1944 					_vala_ccode_node_unref0 (_tmp257_);
1945 					_tmp258_ = ccall;
1946 					_tmp259_ = vala_ccode_identifier_new ("length");
1947 					_tmp260_ = _tmp259_;
1948 					_tmp261_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp260_);
1949 					_tmp262_ = _tmp261_;
1950 					vala_ccode_function_call_add_argument (_tmp258_, (ValaCCodeExpression*) _tmp262_);
1951 					_vala_ccode_node_unref0 (_tmp262_);
1952 					_vala_ccode_node_unref0 (_tmp260_);
1953 				}
1954 				_tmp263_ = vala_ccode_function_call_new (NULL);
1955 				csetcall = _tmp263_;
1956 				_tmp264_ = prop;
1957 				_tmp265_ = vala_property_get_get_accessor (_tmp264_);
1958 				_tmp266_ = _tmp265_;
1959 				_tmp267_ = vala_property_accessor_get_value_type (_tmp266_);
1960 				_tmp268_ = _tmp267_;
1961 				_tmp269_ = vala_data_type_get_value_owned (_tmp268_);
1962 				_tmp270_ = _tmp269_;
1963 				if (_tmp270_) {
1964 					ValaCCodeFunctionCall* _tmp271_;
1965 					ValaProperty* _tmp272_;
1966 					ValaDataType* _tmp273_;
1967 					ValaDataType* _tmp274_;
1968 					ValaCCodeExpression* _tmp275_;
1969 					ValaCCodeExpression* _tmp276_;
1970 					_tmp271_ = csetcall;
1971 					_tmp272_ = prop;
1972 					_tmp273_ = vala_property_get_property_type (_tmp272_);
1973 					_tmp274_ = _tmp273_;
1974 					_tmp275_ = vala_ccode_base_module_get_value_taker_function ((ValaCCodeBaseModule*) self, _tmp274_);
1975 					_tmp276_ = _tmp275_;
1976 					vala_ccode_function_call_set_call (_tmp271_, _tmp276_);
1977 					_vala_ccode_node_unref0 (_tmp276_);
1978 				} else {
1979 					ValaCCodeFunctionCall* _tmp277_;
1980 					ValaProperty* _tmp278_;
1981 					ValaDataType* _tmp279_;
1982 					ValaDataType* _tmp280_;
1983 					ValaCCodeExpression* _tmp281_;
1984 					ValaCCodeExpression* _tmp282_;
1985 					_tmp277_ = csetcall;
1986 					_tmp278_ = prop;
1987 					_tmp279_ = vala_property_get_property_type (_tmp278_);
1988 					_tmp280_ = _tmp279_;
1989 					_tmp281_ = vala_ccode_base_module_get_value_setter_function ((ValaCCodeBaseModule*) self, _tmp280_);
1990 					_tmp282_ = _tmp281_;
1991 					vala_ccode_function_call_set_call (_tmp277_, _tmp282_);
1992 					_vala_ccode_node_unref0 (_tmp282_);
1993 				}
1994 				_tmp283_ = csetcall;
1995 				_tmp284_ = vala_ccode_identifier_new ("value");
1996 				_tmp285_ = _tmp284_;
1997 				vala_ccode_function_call_add_argument (_tmp283_, (ValaCCodeExpression*) _tmp285_);
1998 				_vala_ccode_node_unref0 (_tmp285_);
1999 				_tmp286_ = csetcall;
2000 				_tmp287_ = ccall;
2001 				vala_ccode_function_call_add_argument (_tmp286_, (ValaCCodeExpression*) _tmp287_);
2002 				_tmp288_ = prop;
2003 				_tmp289_ = csetcall;
2004 				vala_gobject_module_add_guarded_expression (self, (ValaSymbol*) _tmp288_, (ValaCCodeExpression*) _tmp289_);
2005 				_tmp292_ = array_type;
2006 				if (_tmp292_ != NULL) {
2007 					ValaProperty* _tmp293_;
2008 					_tmp293_ = prop;
2009 					_tmp291_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp293_);
2010 				} else {
2011 					_tmp291_ = FALSE;
2012 				}
2013 				if (_tmp291_) {
2014 					ValaArrayType* _tmp294_;
2015 					ValaDataType* _tmp295_;
2016 					ValaDataType* _tmp296_;
2017 					ValaTypeSymbol* _tmp297_;
2018 					ValaTypeSymbol* _tmp298_;
2019 					ValaDataType* _tmp299_;
2020 					ValaTypeSymbol* _tmp300_;
2021 					ValaTypeSymbol* _tmp301_;
2022 					_tmp294_ = array_type;
2023 					_tmp295_ = vala_array_type_get_element_type (_tmp294_);
2024 					_tmp296_ = _tmp295_;
2025 					_tmp297_ = vala_data_type_get_type_symbol (_tmp296_);
2026 					_tmp298_ = _tmp297_;
2027 					_tmp299_ = ((ValaCCodeBaseModule*) self)->string_type;
2028 					_tmp300_ = vala_data_type_get_type_symbol (_tmp299_);
2029 					_tmp301_ = _tmp300_;
2030 					_tmp290_ = _tmp298_ == _tmp301_;
2031 				} else {
2032 					_tmp290_ = FALSE;
2033 				}
2034 				if (_tmp290_) {
2035 					ValaCCodeFunction* _tmp302_;
2036 					ValaCCodeFunction* _tmp303_;
2037 					_tmp302_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2038 					_tmp303_ = _tmp302_;
2039 					vala_ccode_function_close (_tmp303_);
2040 				}
2041 				_vala_ccode_node_unref0 (csetcall);
2042 				_vala_code_node_unref0 (array_type);
2043 			}
2044 			_tmp304_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2045 			_tmp305_ = _tmp304_;
2046 			vala_ccode_function_add_break (_tmp305_);
2047 			_vala_ccode_node_unref0 (cfunc);
2048 			_vala_ccode_node_unref0 (cself);
2049 			_vala_code_node_unref0 (base_prop);
2050 			_vala_code_node_unref0 (prop);
2051 		}
2052 		_vala_iterable_unref0 (_prop_list);
2053 	}
2054 	{
2055 		ValaList* _type_param_list = NULL;
2056 		ValaList* _tmp306_;
2057 		ValaList* _tmp307_;
2058 		gint _type_param_size = 0;
2059 		ValaList* _tmp308_;
2060 		gint _tmp309_;
2061 		gint _tmp310_;
2062 		gint _type_param_index = 0;
2063 		_tmp306_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
2064 		_tmp307_ = _vala_iterable_ref0 (_tmp306_);
2065 		_type_param_list = _tmp307_;
2066 		_tmp308_ = _type_param_list;
2067 		_tmp309_ = vala_collection_get_size ((ValaCollection*) _tmp308_);
2068 		_tmp310_ = _tmp309_;
2069 		_type_param_size = _tmp310_;
2070 		_type_param_index = -1;
2071 		while (TRUE) {
2072 			gint _tmp311_;
2073 			gint _tmp312_;
2074 			ValaTypeParameter* type_param = NULL;
2075 			ValaList* _tmp313_;
2076 			gpointer _tmp314_;
2077 			gchar* func_name = NULL;
2078 			gchar* enum_value = NULL;
2079 			ValaCCodeMemberAccess* cfield = NULL;
2080 			ValaCCodeFunctionCall* csetcall = NULL;
2081 			ValaTypeParameter* _tmp315_;
2082 			const gchar* _tmp316_;
2083 			const gchar* _tmp317_;
2084 			gchar* _tmp318_;
2085 			gchar* _tmp319_;
2086 			gchar* _tmp320_;
2087 			gchar* _tmp321_;
2088 			gchar* _tmp322_;
2089 			const gchar* _tmp323_;
2090 			gchar* _tmp324_;
2091 			gchar* _tmp325_;
2092 			gchar* _tmp326_;
2093 			ValaCCodeFunction* _tmp327_;
2094 			ValaCCodeFunction* _tmp328_;
2095 			const gchar* _tmp329_;
2096 			ValaCCodeIdentifier* _tmp330_;
2097 			ValaCCodeIdentifier* _tmp331_;
2098 			ValaCCodeIdentifier* _tmp332_;
2099 			ValaCCodeIdentifier* _tmp333_;
2100 			ValaCCodeMemberAccess* _tmp334_;
2101 			ValaCCodeMemberAccess* _tmp335_;
2102 			const gchar* _tmp336_;
2103 			ValaCCodeMemberAccess* _tmp337_;
2104 			ValaCCodeIdentifier* _tmp338_;
2105 			ValaCCodeIdentifier* _tmp339_;
2106 			ValaCCodeFunctionCall* _tmp340_;
2107 			ValaCCodeFunctionCall* _tmp341_;
2108 			ValaCCodeIdentifier* _tmp342_;
2109 			ValaCCodeIdentifier* _tmp343_;
2110 			ValaCCodeFunctionCall* _tmp344_;
2111 			ValaCCodeMemberAccess* _tmp345_;
2112 			ValaCCodeFunction* _tmp346_;
2113 			ValaCCodeFunction* _tmp347_;
2114 			ValaCCodeFunctionCall* _tmp348_;
2115 			ValaCCodeFunction* _tmp349_;
2116 			ValaCCodeFunction* _tmp350_;
2117 			ValaTypeParameter* _tmp351_;
2118 			const gchar* _tmp352_;
2119 			const gchar* _tmp353_;
2120 			gchar* _tmp354_;
2121 			gchar* _tmp355_;
2122 			gchar* _tmp356_;
2123 			gchar* _tmp357_;
2124 			gchar* _tmp358_;
2125 			const gchar* _tmp359_;
2126 			gchar* _tmp360_;
2127 			gchar* _tmp361_;
2128 			gchar* _tmp362_;
2129 			ValaCCodeFunction* _tmp363_;
2130 			ValaCCodeFunction* _tmp364_;
2131 			const gchar* _tmp365_;
2132 			ValaCCodeIdentifier* _tmp366_;
2133 			ValaCCodeIdentifier* _tmp367_;
2134 			ValaCCodeIdentifier* _tmp368_;
2135 			ValaCCodeIdentifier* _tmp369_;
2136 			ValaCCodeMemberAccess* _tmp370_;
2137 			ValaCCodeMemberAccess* _tmp371_;
2138 			const gchar* _tmp372_;
2139 			ValaCCodeMemberAccess* _tmp373_;
2140 			ValaCCodeIdentifier* _tmp374_;
2141 			ValaCCodeIdentifier* _tmp375_;
2142 			ValaCCodeFunctionCall* _tmp376_;
2143 			ValaCCodeFunctionCall* _tmp377_;
2144 			ValaCCodeIdentifier* _tmp378_;
2145 			ValaCCodeIdentifier* _tmp379_;
2146 			ValaCCodeFunctionCall* _tmp380_;
2147 			ValaCCodeMemberAccess* _tmp381_;
2148 			ValaCCodeFunction* _tmp382_;
2149 			ValaCCodeFunction* _tmp383_;
2150 			ValaCCodeFunctionCall* _tmp384_;
2151 			ValaCCodeFunction* _tmp385_;
2152 			ValaCCodeFunction* _tmp386_;
2153 			ValaTypeParameter* _tmp387_;
2154 			const gchar* _tmp388_;
2155 			const gchar* _tmp389_;
2156 			gchar* _tmp390_;
2157 			gchar* _tmp391_;
2158 			gchar* _tmp392_;
2159 			gchar* _tmp393_;
2160 			gchar* _tmp394_;
2161 			const gchar* _tmp395_;
2162 			gchar* _tmp396_;
2163 			gchar* _tmp397_;
2164 			gchar* _tmp398_;
2165 			ValaCCodeFunction* _tmp399_;
2166 			ValaCCodeFunction* _tmp400_;
2167 			const gchar* _tmp401_;
2168 			ValaCCodeIdentifier* _tmp402_;
2169 			ValaCCodeIdentifier* _tmp403_;
2170 			ValaCCodeIdentifier* _tmp404_;
2171 			ValaCCodeIdentifier* _tmp405_;
2172 			ValaCCodeMemberAccess* _tmp406_;
2173 			ValaCCodeMemberAccess* _tmp407_;
2174 			const gchar* _tmp408_;
2175 			ValaCCodeMemberAccess* _tmp409_;
2176 			ValaCCodeIdentifier* _tmp410_;
2177 			ValaCCodeIdentifier* _tmp411_;
2178 			ValaCCodeFunctionCall* _tmp412_;
2179 			ValaCCodeFunctionCall* _tmp413_;
2180 			ValaCCodeIdentifier* _tmp414_;
2181 			ValaCCodeIdentifier* _tmp415_;
2182 			ValaCCodeFunctionCall* _tmp416_;
2183 			ValaCCodeMemberAccess* _tmp417_;
2184 			ValaCCodeFunction* _tmp418_;
2185 			ValaCCodeFunction* _tmp419_;
2186 			ValaCCodeFunctionCall* _tmp420_;
2187 			ValaCCodeFunction* _tmp421_;
2188 			ValaCCodeFunction* _tmp422_;
2189 			_type_param_index = _type_param_index + 1;
2190 			_tmp311_ = _type_param_index;
2191 			_tmp312_ = _type_param_size;
2192 			if (!(_tmp311_ < _tmp312_)) {
2193 				break;
2194 			}
2195 			_tmp313_ = _type_param_list;
2196 			_tmp314_ = vala_list_get (_tmp313_, _type_param_index);
2197 			type_param = (ValaTypeParameter*) _tmp314_;
2198 			_tmp315_ = type_param;
2199 			_tmp316_ = vala_symbol_get_name ((ValaSymbol*) _tmp315_);
2200 			_tmp317_ = _tmp316_;
2201 			_tmp318_ = g_ascii_strdown (_tmp317_, (gssize) -1);
2202 			_tmp319_ = _tmp318_;
2203 			_tmp320_ = g_strdup_printf ("%s_type", _tmp319_);
2204 			_g_free0 (func_name);
2205 			func_name = _tmp320_;
2206 			_g_free0 (_tmp319_);
2207 			_tmp321_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
2208 			_tmp322_ = _tmp321_;
2209 			_tmp323_ = func_name;
2210 			_tmp324_ = g_strdup_printf ("%s_%s", _tmp322_, _tmp323_);
2211 			_tmp325_ = _tmp324_;
2212 			_tmp326_ = g_ascii_strup (_tmp325_, (gssize) -1);
2213 			_g_free0 (enum_value);
2214 			enum_value = _tmp326_;
2215 			_g_free0 (_tmp325_);
2216 			_g_free0 (_tmp322_);
2217 			_tmp327_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2218 			_tmp328_ = _tmp327_;
2219 			_tmp329_ = enum_value;
2220 			_tmp330_ = vala_ccode_identifier_new (_tmp329_);
2221 			_tmp331_ = _tmp330_;
2222 			vala_ccode_function_add_case (_tmp328_, (ValaCCodeExpression*) _tmp331_);
2223 			_vala_ccode_node_unref0 (_tmp331_);
2224 			_tmp332_ = vala_ccode_identifier_new ("self");
2225 			_tmp333_ = _tmp332_;
2226 			_tmp334_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp333_, "priv");
2227 			_tmp335_ = _tmp334_;
2228 			_tmp336_ = func_name;
2229 			_tmp337_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp335_, _tmp336_);
2230 			_vala_ccode_node_unref0 (cfield);
2231 			cfield = _tmp337_;
2232 			_vala_ccode_node_unref0 (_tmp335_);
2233 			_vala_ccode_node_unref0 (_tmp333_);
2234 			_tmp338_ = vala_ccode_identifier_new ("g_value_set_gtype");
2235 			_tmp339_ = _tmp338_;
2236 			_tmp340_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp339_);
2237 			_vala_ccode_node_unref0 (csetcall);
2238 			csetcall = _tmp340_;
2239 			_vala_ccode_node_unref0 (_tmp339_);
2240 			_tmp341_ = csetcall;
2241 			_tmp342_ = vala_ccode_identifier_new ("value");
2242 			_tmp343_ = _tmp342_;
2243 			vala_ccode_function_call_add_argument (_tmp341_, (ValaCCodeExpression*) _tmp343_);
2244 			_vala_ccode_node_unref0 (_tmp343_);
2245 			_tmp344_ = csetcall;
2246 			_tmp345_ = cfield;
2247 			vala_ccode_function_call_add_argument (_tmp344_, (ValaCCodeExpression*) _tmp345_);
2248 			_tmp346_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2249 			_tmp347_ = _tmp346_;
2250 			_tmp348_ = csetcall;
2251 			vala_ccode_function_add_expression (_tmp347_, (ValaCCodeExpression*) _tmp348_);
2252 			_tmp349_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2253 			_tmp350_ = _tmp349_;
2254 			vala_ccode_function_add_break (_tmp350_);
2255 			_tmp351_ = type_param;
2256 			_tmp352_ = vala_symbol_get_name ((ValaSymbol*) _tmp351_);
2257 			_tmp353_ = _tmp352_;
2258 			_tmp354_ = g_ascii_strdown (_tmp353_, (gssize) -1);
2259 			_tmp355_ = _tmp354_;
2260 			_tmp356_ = g_strdup_printf ("%s_dup_func", _tmp355_);
2261 			_g_free0 (func_name);
2262 			func_name = _tmp356_;
2263 			_g_free0 (_tmp355_);
2264 			_tmp357_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
2265 			_tmp358_ = _tmp357_;
2266 			_tmp359_ = func_name;
2267 			_tmp360_ = g_strdup_printf ("%s_%s", _tmp358_, _tmp359_);
2268 			_tmp361_ = _tmp360_;
2269 			_tmp362_ = g_ascii_strup (_tmp361_, (gssize) -1);
2270 			_g_free0 (enum_value);
2271 			enum_value = _tmp362_;
2272 			_g_free0 (_tmp361_);
2273 			_g_free0 (_tmp358_);
2274 			_tmp363_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2275 			_tmp364_ = _tmp363_;
2276 			_tmp365_ = enum_value;
2277 			_tmp366_ = vala_ccode_identifier_new (_tmp365_);
2278 			_tmp367_ = _tmp366_;
2279 			vala_ccode_function_add_case (_tmp364_, (ValaCCodeExpression*) _tmp367_);
2280 			_vala_ccode_node_unref0 (_tmp367_);
2281 			_tmp368_ = vala_ccode_identifier_new ("self");
2282 			_tmp369_ = _tmp368_;
2283 			_tmp370_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp369_, "priv");
2284 			_tmp371_ = _tmp370_;
2285 			_tmp372_ = func_name;
2286 			_tmp373_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp371_, _tmp372_);
2287 			_vala_ccode_node_unref0 (cfield);
2288 			cfield = _tmp373_;
2289 			_vala_ccode_node_unref0 (_tmp371_);
2290 			_vala_ccode_node_unref0 (_tmp369_);
2291 			_tmp374_ = vala_ccode_identifier_new ("g_value_set_pointer");
2292 			_tmp375_ = _tmp374_;
2293 			_tmp376_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp375_);
2294 			_vala_ccode_node_unref0 (csetcall);
2295 			csetcall = _tmp376_;
2296 			_vala_ccode_node_unref0 (_tmp375_);
2297 			_tmp377_ = csetcall;
2298 			_tmp378_ = vala_ccode_identifier_new ("value");
2299 			_tmp379_ = _tmp378_;
2300 			vala_ccode_function_call_add_argument (_tmp377_, (ValaCCodeExpression*) _tmp379_);
2301 			_vala_ccode_node_unref0 (_tmp379_);
2302 			_tmp380_ = csetcall;
2303 			_tmp381_ = cfield;
2304 			vala_ccode_function_call_add_argument (_tmp380_, (ValaCCodeExpression*) _tmp381_);
2305 			_tmp382_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2306 			_tmp383_ = _tmp382_;
2307 			_tmp384_ = csetcall;
2308 			vala_ccode_function_add_expression (_tmp383_, (ValaCCodeExpression*) _tmp384_);
2309 			_tmp385_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2310 			_tmp386_ = _tmp385_;
2311 			vala_ccode_function_add_break (_tmp386_);
2312 			_tmp387_ = type_param;
2313 			_tmp388_ = vala_symbol_get_name ((ValaSymbol*) _tmp387_);
2314 			_tmp389_ = _tmp388_;
2315 			_tmp390_ = g_ascii_strdown (_tmp389_, (gssize) -1);
2316 			_tmp391_ = _tmp390_;
2317 			_tmp392_ = g_strdup_printf ("%s_destroy_func", _tmp391_);
2318 			_g_free0 (func_name);
2319 			func_name = _tmp392_;
2320 			_g_free0 (_tmp391_);
2321 			_tmp393_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
2322 			_tmp394_ = _tmp393_;
2323 			_tmp395_ = func_name;
2324 			_tmp396_ = g_strdup_printf ("%s_%s", _tmp394_, _tmp395_);
2325 			_tmp397_ = _tmp396_;
2326 			_tmp398_ = g_ascii_strup (_tmp397_, (gssize) -1);
2327 			_g_free0 (enum_value);
2328 			enum_value = _tmp398_;
2329 			_g_free0 (_tmp397_);
2330 			_g_free0 (_tmp394_);
2331 			_tmp399_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2332 			_tmp400_ = _tmp399_;
2333 			_tmp401_ = enum_value;
2334 			_tmp402_ = vala_ccode_identifier_new (_tmp401_);
2335 			_tmp403_ = _tmp402_;
2336 			vala_ccode_function_add_case (_tmp400_, (ValaCCodeExpression*) _tmp403_);
2337 			_vala_ccode_node_unref0 (_tmp403_);
2338 			_tmp404_ = vala_ccode_identifier_new ("self");
2339 			_tmp405_ = _tmp404_;
2340 			_tmp406_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp405_, "priv");
2341 			_tmp407_ = _tmp406_;
2342 			_tmp408_ = func_name;
2343 			_tmp409_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp407_, _tmp408_);
2344 			_vala_ccode_node_unref0 (cfield);
2345 			cfield = _tmp409_;
2346 			_vala_ccode_node_unref0 (_tmp407_);
2347 			_vala_ccode_node_unref0 (_tmp405_);
2348 			_tmp410_ = vala_ccode_identifier_new ("g_value_set_pointer");
2349 			_tmp411_ = _tmp410_;
2350 			_tmp412_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp411_);
2351 			_vala_ccode_node_unref0 (csetcall);
2352 			csetcall = _tmp412_;
2353 			_vala_ccode_node_unref0 (_tmp411_);
2354 			_tmp413_ = csetcall;
2355 			_tmp414_ = vala_ccode_identifier_new ("value");
2356 			_tmp415_ = _tmp414_;
2357 			vala_ccode_function_call_add_argument (_tmp413_, (ValaCCodeExpression*) _tmp415_);
2358 			_vala_ccode_node_unref0 (_tmp415_);
2359 			_tmp416_ = csetcall;
2360 			_tmp417_ = cfield;
2361 			vala_ccode_function_call_add_argument (_tmp416_, (ValaCCodeExpression*) _tmp417_);
2362 			_tmp418_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2363 			_tmp419_ = _tmp418_;
2364 			_tmp420_ = csetcall;
2365 			vala_ccode_function_add_expression (_tmp419_, (ValaCCodeExpression*) _tmp420_);
2366 			_tmp421_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2367 			_tmp422_ = _tmp421_;
2368 			vala_ccode_function_add_break (_tmp422_);
2369 			_vala_ccode_node_unref0 (csetcall);
2370 			_vala_ccode_node_unref0 (cfield);
2371 			_g_free0 (enum_value);
2372 			_g_free0 (func_name);
2373 			_vala_code_node_unref0 (type_param);
2374 		}
2375 		_vala_iterable_unref0 (_type_param_list);
2376 	}
2377 	_tmp423_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2378 	_tmp424_ = _tmp423_;
2379 	vala_ccode_function_add_default (_tmp424_);
2380 	vala_gobject_module_emit_invalid_property_id_warn (self);
2381 	_tmp425_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2382 	_tmp426_ = _tmp425_;
2383 	vala_ccode_function_add_break (_tmp426_);
2384 	_tmp427_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2385 	_tmp428_ = _tmp427_;
2386 	vala_ccode_function_close (_tmp428_);
2387 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
2388 	_tmp429_ = ((ValaCCodeBaseModule*) self)->cfile;
2389 	_tmp430_ = get_prop;
2390 	vala_ccode_file_add_function_declaration (_tmp429_, _tmp430_);
2391 	_tmp431_ = ((ValaCCodeBaseModule*) self)->cfile;
2392 	_tmp432_ = get_prop;
2393 	vala_ccode_file_add_function (_tmp431_, _tmp432_);
2394 	_vala_iterable_unref0 (props);
2395 	_vala_ccode_node_unref0 (ccall);
2396 	_vala_ccode_node_unref0 (get_prop);
2397 }
2398 
2399 static void
vala_gobject_module_add_set_property_function(ValaGObjectModule * self,ValaClass * cl)2400 vala_gobject_module_add_set_property_function (ValaGObjectModule* self,
2401                                                ValaClass* cl)
2402 {
2403 	ValaCCodeFunction* set_prop = NULL;
2404 	gchar* _tmp0_;
2405 	gchar* _tmp1_;
2406 	gchar* _tmp2_;
2407 	gchar* _tmp3_;
2408 	ValaCCodeFunction* _tmp4_;
2409 	ValaCCodeFunction* _tmp5_;
2410 	ValaCCodeFunction* _tmp6_;
2411 	ValaCCodeFunction* _tmp7_;
2412 	ValaCCodeParameter* _tmp8_;
2413 	ValaCCodeParameter* _tmp9_;
2414 	ValaCCodeFunction* _tmp10_;
2415 	ValaCCodeParameter* _tmp11_;
2416 	ValaCCodeParameter* _tmp12_;
2417 	ValaCCodeFunction* _tmp13_;
2418 	ValaCCodeParameter* _tmp14_;
2419 	ValaCCodeParameter* _tmp15_;
2420 	ValaCCodeFunction* _tmp16_;
2421 	ValaCCodeParameter* _tmp17_;
2422 	ValaCCodeParameter* _tmp18_;
2423 	ValaCCodeFunction* _tmp19_;
2424 	ValaCCodeFunctionCall* ccall = NULL;
2425 	ValaCCodeIdentifier* _tmp20_;
2426 	ValaCCodeIdentifier* _tmp21_;
2427 	ValaCCodeFunctionCall* _tmp22_;
2428 	ValaCCodeFunctionCall* _tmp23_;
2429 	ValaCCodeFunction* _tmp24_;
2430 	ValaCCodeFunction* _tmp25_;
2431 	gchar* _tmp26_;
2432 	gchar* _tmp27_;
2433 	gchar* _tmp28_;
2434 	gchar* _tmp29_;
2435 	ValaCCodeFunctionCall* _tmp30_;
2436 	ValaCCodeVariableDeclarator* _tmp31_;
2437 	ValaCCodeVariableDeclarator* _tmp32_;
2438 	ValaCCodeFunction* _tmp33_;
2439 	ValaCCodeFunction* _tmp34_;
2440 	ValaCCodeIdentifier* _tmp35_;
2441 	ValaCCodeIdentifier* _tmp36_;
2442 	ValaList* props = NULL;
2443 	ValaList* _tmp37_;
2444 	ValaList* _tmp38_;
2445 	ValaCCodeFunction* _tmp358_;
2446 	ValaCCodeFunction* _tmp359_;
2447 	ValaCCodeFunction* _tmp360_;
2448 	ValaCCodeFunction* _tmp361_;
2449 	ValaCCodeFunction* _tmp362_;
2450 	ValaCCodeFunction* _tmp363_;
2451 	ValaCCodeFile* _tmp364_;
2452 	ValaCCodeFunction* _tmp365_;
2453 	ValaCCodeFile* _tmp366_;
2454 	ValaCCodeFunction* _tmp367_;
2455 	g_return_if_fail (self != NULL);
2456 	g_return_if_fail (cl != NULL);
2457 	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
2458 	_tmp1_ = _tmp0_;
2459 	_tmp2_ = g_strdup_printf ("_vala_%s_set_property", _tmp1_);
2460 	_tmp3_ = _tmp2_;
2461 	_tmp4_ = vala_ccode_function_new (_tmp3_, "void");
2462 	_tmp5_ = _tmp4_;
2463 	_g_free0 (_tmp3_);
2464 	_g_free0 (_tmp1_);
2465 	set_prop = _tmp5_;
2466 	_tmp6_ = set_prop;
2467 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp6_, VALA_CCODE_MODIFIERS_STATIC);
2468 	_tmp7_ = set_prop;
2469 	_tmp8_ = vala_ccode_parameter_new ("object", "GObject *");
2470 	_tmp9_ = _tmp8_;
2471 	vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
2472 	_vala_ccode_node_unref0 (_tmp9_);
2473 	_tmp10_ = set_prop;
2474 	_tmp11_ = vala_ccode_parameter_new ("property_id", "guint");
2475 	_tmp12_ = _tmp11_;
2476 	vala_ccode_function_add_parameter (_tmp10_, _tmp12_);
2477 	_vala_ccode_node_unref0 (_tmp12_);
2478 	_tmp13_ = set_prop;
2479 	_tmp14_ = vala_ccode_parameter_new ("value", "const GValue *");
2480 	_tmp15_ = _tmp14_;
2481 	vala_ccode_function_add_parameter (_tmp13_, _tmp15_);
2482 	_vala_ccode_node_unref0 (_tmp15_);
2483 	_tmp16_ = set_prop;
2484 	_tmp17_ = vala_ccode_parameter_new ("pspec", "GParamSpec *");
2485 	_tmp18_ = _tmp17_;
2486 	vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
2487 	_vala_ccode_node_unref0 (_tmp18_);
2488 	_tmp19_ = set_prop;
2489 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
2490 	_tmp20_ = vala_ccode_identifier_new ("object");
2491 	_tmp21_ = _tmp20_;
2492 	_tmp22_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp21_, (ValaTypeSymbol*) cl);
2493 	_tmp23_ = _tmp22_;
2494 	_vala_ccode_node_unref0 (_tmp21_);
2495 	ccall = _tmp23_;
2496 	_tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2497 	_tmp25_ = _tmp24_;
2498 	_tmp26_ = vala_get_ccode_name ((ValaCodeNode*) cl);
2499 	_tmp27_ = _tmp26_;
2500 	_tmp28_ = g_strdup_printf ("%s *", _tmp27_);
2501 	_tmp29_ = _tmp28_;
2502 	_tmp30_ = ccall;
2503 	_tmp31_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp30_, NULL);
2504 	_tmp32_ = _tmp31_;
2505 	vala_ccode_function_add_declaration (_tmp25_, _tmp29_, (ValaCCodeDeclarator*) _tmp32_, 0);
2506 	_vala_ccode_node_unref0 (_tmp32_);
2507 	_g_free0 (_tmp29_);
2508 	_g_free0 (_tmp27_);
2509 	_tmp33_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2510 	_tmp34_ = _tmp33_;
2511 	_tmp35_ = vala_ccode_identifier_new ("property_id");
2512 	_tmp36_ = _tmp35_;
2513 	vala_ccode_function_open_switch (_tmp34_, (ValaCCodeExpression*) _tmp36_);
2514 	_vala_ccode_node_unref0 (_tmp36_);
2515 	_tmp37_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
2516 	_tmp38_ = _vala_iterable_ref0 (_tmp37_);
2517 	props = _tmp38_;
2518 	{
2519 		ValaList* _prop_list = NULL;
2520 		ValaList* _tmp39_;
2521 		ValaList* _tmp40_;
2522 		gint _prop_size = 0;
2523 		ValaList* _tmp41_;
2524 		gint _tmp42_;
2525 		gint _tmp43_;
2526 		gint _prop_index = 0;
2527 		_tmp39_ = props;
2528 		_tmp40_ = _vala_iterable_ref0 (_tmp39_);
2529 		_prop_list = _tmp40_;
2530 		_tmp41_ = _prop_list;
2531 		_tmp42_ = vala_collection_get_size ((ValaCollection*) _tmp41_);
2532 		_tmp43_ = _tmp42_;
2533 		_prop_size = _tmp43_;
2534 		_prop_index = -1;
2535 		while (TRUE) {
2536 			gint _tmp44_;
2537 			gint _tmp45_;
2538 			ValaProperty* prop = NULL;
2539 			ValaList* _tmp46_;
2540 			gpointer _tmp47_;
2541 			gboolean _tmp48_ = FALSE;
2542 			ValaProperty* _tmp49_;
2543 			ValaPropertyAccessor* _tmp50_;
2544 			ValaPropertyAccessor* _tmp51_;
2545 			ValaCodeContext* _tmp55_;
2546 			ValaCodeContext* _tmp56_;
2547 			ValaSemanticAnalyzer* _tmp57_;
2548 			ValaSemanticAnalyzer* _tmp58_;
2549 			ValaProperty* _tmp59_;
2550 			ValaProperty* base_prop = NULL;
2551 			ValaProperty* _tmp60_;
2552 			ValaProperty* _tmp61_;
2553 			ValaCCodeExpression* cself = NULL;
2554 			ValaCCodeIdentifier* _tmp62_;
2555 			ValaProperty* _tmp63_;
2556 			ValaProperty* _tmp64_;
2557 			ValaProperty* _tmp65_;
2558 			ValaCCodeExpression* cfunc = NULL;
2559 			gboolean _tmp127_ = FALSE;
2560 			ValaProperty* _tmp128_;
2561 			ValaCCodeFunction* _tmp142_;
2562 			ValaCCodeFunction* _tmp143_;
2563 			ValaProperty* _tmp144_;
2564 			gchar* _tmp145_;
2565 			gchar* _tmp146_;
2566 			gchar* _tmp147_;
2567 			gchar* _tmp148_;
2568 			ValaCCodeIdentifier* _tmp149_;
2569 			ValaCCodeIdentifier* _tmp150_;
2570 			ValaCCodeExpression* _tmp151_;
2571 			ValaCCodeFunctionCall* _tmp152_;
2572 			ValaCCodeFunctionCall* _tmp153_;
2573 			ValaCCodeExpression* _tmp154_;
2574 			gboolean _tmp155_ = FALSE;
2575 			ValaProperty* _tmp156_;
2576 			ValaDataType* _tmp157_;
2577 			ValaDataType* _tmp158_;
2578 			ValaCCodeFunction* _tmp242_;
2579 			ValaCCodeFunction* _tmp243_;
2580 			_prop_index = _prop_index + 1;
2581 			_tmp44_ = _prop_index;
2582 			_tmp45_ = _prop_size;
2583 			if (!(_tmp44_ < _tmp45_)) {
2584 				break;
2585 			}
2586 			_tmp46_ = _prop_list;
2587 			_tmp47_ = vala_list_get (_tmp46_, _prop_index);
2588 			prop = (ValaProperty*) _tmp47_;
2589 			_tmp49_ = prop;
2590 			_tmp50_ = vala_property_get_set_accessor (_tmp49_);
2591 			_tmp51_ = _tmp50_;
2592 			if (_tmp51_ == NULL) {
2593 				_tmp48_ = TRUE;
2594 			} else {
2595 				ValaProperty* _tmp52_;
2596 				gboolean _tmp53_;
2597 				gboolean _tmp54_;
2598 				_tmp52_ = prop;
2599 				_tmp53_ = vala_property_get_is_abstract (_tmp52_);
2600 				_tmp54_ = _tmp53_;
2601 				_tmp48_ = _tmp54_;
2602 			}
2603 			if (_tmp48_) {
2604 				_vala_code_node_unref0 (prop);
2605 				continue;
2606 			}
2607 			_tmp55_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
2608 			_tmp56_ = _tmp55_;
2609 			_tmp57_ = vala_code_context_get_analyzer (_tmp56_);
2610 			_tmp58_ = _tmp57_;
2611 			_tmp59_ = prop;
2612 			if (!vala_semantic_analyzer_is_gobject_property (_tmp58_, _tmp59_)) {
2613 				_vala_code_node_unref0 (prop);
2614 				continue;
2615 			}
2616 			_tmp60_ = prop;
2617 			_tmp61_ = _vala_code_node_ref0 (_tmp60_);
2618 			base_prop = _tmp61_;
2619 			_tmp62_ = vala_ccode_identifier_new ("self");
2620 			cself = (ValaCCodeExpression*) _tmp62_;
2621 			_tmp63_ = prop;
2622 			_tmp64_ = vala_property_get_base_property (_tmp63_);
2623 			_tmp65_ = _tmp64_;
2624 			if (_tmp65_ != NULL) {
2625 				ValaClass* base_type = NULL;
2626 				ValaProperty* _tmp66_;
2627 				ValaProperty* _tmp67_;
2628 				ValaProperty* _tmp68_;
2629 				ValaSymbol* _tmp69_;
2630 				ValaSymbol* _tmp70_;
2631 				ValaClass* _tmp71_;
2632 				ValaProperty* _tmp72_;
2633 				ValaProperty* _tmp73_;
2634 				ValaProperty* _tmp74_;
2635 				ValaProperty* _tmp75_;
2636 				ValaObjectType* _tmp76_;
2637 				ValaObjectType* _tmp77_;
2638 				ValaCCodeExpression* _tmp78_;
2639 				ValaGLibValue* _tmp79_;
2640 				ValaGLibValue* _tmp80_;
2641 				ValaClass* _tmp81_;
2642 				ValaObjectType* _tmp82_;
2643 				ValaObjectType* _tmp83_;
2644 				ValaProperty* _tmp84_;
2645 				ValaTargetValue* _tmp85_;
2646 				ValaTargetValue* _tmp86_;
2647 				ValaCCodeExpression* _tmp87_;
2648 				ValaCCodeExpression* _tmp88_;
2649 				ValaProperty* _tmp89_;
2650 				ValaProperty* _tmp90_;
2651 				ValaProperty* _tmp91_;
2652 				ValaPropertyAccessor* _tmp92_;
2653 				ValaPropertyAccessor* _tmp93_;
2654 				ValaCCodeFile* _tmp94_;
2655 				_tmp66_ = prop;
2656 				_tmp67_ = vala_property_get_base_property (_tmp66_);
2657 				_tmp68_ = _tmp67_;
2658 				_tmp69_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp68_);
2659 				_tmp70_ = _tmp69_;
2660 				_tmp71_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp70_, VALA_TYPE_CLASS, ValaClass));
2661 				base_type = _tmp71_;
2662 				_tmp72_ = prop;
2663 				_tmp73_ = vala_property_get_base_property (_tmp72_);
2664 				_tmp74_ = _tmp73_;
2665 				_tmp75_ = _vala_code_node_ref0 (_tmp74_);
2666 				_vala_code_node_unref0 (base_prop);
2667 				base_prop = _tmp75_;
2668 				_tmp76_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl);
2669 				_tmp77_ = _tmp76_;
2670 				_tmp78_ = cself;
2671 				_tmp79_ = vala_glib_value_new ((ValaDataType*) _tmp77_, _tmp78_, TRUE);
2672 				_tmp80_ = _tmp79_;
2673 				_tmp81_ = base_type;
2674 				_tmp82_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp81_);
2675 				_tmp83_ = _tmp82_;
2676 				_tmp84_ = prop;
2677 				_tmp85_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp80_, (ValaDataType*) _tmp83_, (ValaCodeNode*) _tmp84_);
2678 				_tmp86_ = _tmp85_;
2679 				_tmp87_ = vala_get_cvalue_ (_tmp86_);
2680 				_tmp88_ = _vala_ccode_node_ref0 (_tmp87_);
2681 				_vala_ccode_node_unref0 (cself);
2682 				cself = _tmp88_;
2683 				_vala_target_value_unref0 (_tmp86_);
2684 				_vala_code_node_unref0 (_tmp83_);
2685 				_vala_target_value_unref0 (_tmp80_);
2686 				_vala_code_node_unref0 (_tmp77_);
2687 				_tmp89_ = prop;
2688 				_tmp90_ = vala_property_get_base_property (_tmp89_);
2689 				_tmp91_ = _tmp90_;
2690 				_tmp92_ = vala_property_get_set_accessor (_tmp91_);
2691 				_tmp93_ = _tmp92_;
2692 				_tmp94_ = ((ValaCCodeBaseModule*) self)->cfile;
2693 				vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp93_, _tmp94_);
2694 				_vala_code_node_unref0 (base_type);
2695 			} else {
2696 				ValaProperty* _tmp95_;
2697 				ValaProperty* _tmp96_;
2698 				ValaProperty* _tmp97_;
2699 				_tmp95_ = prop;
2700 				_tmp96_ = vala_property_get_base_interface_property (_tmp95_);
2701 				_tmp97_ = _tmp96_;
2702 				if (_tmp97_ != NULL) {
2703 					ValaInterface* base_type = NULL;
2704 					ValaProperty* _tmp98_;
2705 					ValaProperty* _tmp99_;
2706 					ValaProperty* _tmp100_;
2707 					ValaSymbol* _tmp101_;
2708 					ValaSymbol* _tmp102_;
2709 					ValaInterface* _tmp103_;
2710 					ValaProperty* _tmp104_;
2711 					ValaProperty* _tmp105_;
2712 					ValaProperty* _tmp106_;
2713 					ValaProperty* _tmp107_;
2714 					ValaObjectType* _tmp108_;
2715 					ValaObjectType* _tmp109_;
2716 					ValaCCodeExpression* _tmp110_;
2717 					ValaGLibValue* _tmp111_;
2718 					ValaGLibValue* _tmp112_;
2719 					ValaInterface* _tmp113_;
2720 					ValaObjectType* _tmp114_;
2721 					ValaObjectType* _tmp115_;
2722 					ValaProperty* _tmp116_;
2723 					ValaTargetValue* _tmp117_;
2724 					ValaTargetValue* _tmp118_;
2725 					ValaCCodeExpression* _tmp119_;
2726 					ValaCCodeExpression* _tmp120_;
2727 					ValaProperty* _tmp121_;
2728 					ValaProperty* _tmp122_;
2729 					ValaProperty* _tmp123_;
2730 					ValaPropertyAccessor* _tmp124_;
2731 					ValaPropertyAccessor* _tmp125_;
2732 					ValaCCodeFile* _tmp126_;
2733 					_tmp98_ = prop;
2734 					_tmp99_ = vala_property_get_base_interface_property (_tmp98_);
2735 					_tmp100_ = _tmp99_;
2736 					_tmp101_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp100_);
2737 					_tmp102_ = _tmp101_;
2738 					_tmp103_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp102_, VALA_TYPE_INTERFACE, ValaInterface));
2739 					base_type = _tmp103_;
2740 					_tmp104_ = prop;
2741 					_tmp105_ = vala_property_get_base_interface_property (_tmp104_);
2742 					_tmp106_ = _tmp105_;
2743 					_tmp107_ = _vala_code_node_ref0 (_tmp106_);
2744 					_vala_code_node_unref0 (base_prop);
2745 					base_prop = _tmp107_;
2746 					_tmp108_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl);
2747 					_tmp109_ = _tmp108_;
2748 					_tmp110_ = cself;
2749 					_tmp111_ = vala_glib_value_new ((ValaDataType*) _tmp109_, _tmp110_, TRUE);
2750 					_tmp112_ = _tmp111_;
2751 					_tmp113_ = base_type;
2752 					_tmp114_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp113_);
2753 					_tmp115_ = _tmp114_;
2754 					_tmp116_ = prop;
2755 					_tmp117_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp112_, (ValaDataType*) _tmp115_, (ValaCodeNode*) _tmp116_);
2756 					_tmp118_ = _tmp117_;
2757 					_tmp119_ = vala_get_cvalue_ (_tmp118_);
2758 					_tmp120_ = _vala_ccode_node_ref0 (_tmp119_);
2759 					_vala_ccode_node_unref0 (cself);
2760 					cself = _tmp120_;
2761 					_vala_target_value_unref0 (_tmp118_);
2762 					_vala_code_node_unref0 (_tmp115_);
2763 					_vala_target_value_unref0 (_tmp112_);
2764 					_vala_code_node_unref0 (_tmp109_);
2765 					_tmp121_ = prop;
2766 					_tmp122_ = vala_property_get_base_interface_property (_tmp121_);
2767 					_tmp123_ = _tmp122_;
2768 					_tmp124_ = vala_property_get_set_accessor (_tmp123_);
2769 					_tmp125_ = _tmp124_;
2770 					_tmp126_ = ((ValaCCodeBaseModule*) self)->cfile;
2771 					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp125_, _tmp126_);
2772 					_vala_code_node_unref0 (base_type);
2773 				}
2774 			}
2775 			_tmp128_ = base_prop;
2776 			if (!vala_get_ccode_no_accessor_method (_tmp128_)) {
2777 				ValaProperty* _tmp129_;
2778 				_tmp129_ = base_prop;
2779 				_tmp127_ = !vala_get_ccode_concrete_accessor (_tmp129_);
2780 			} else {
2781 				_tmp127_ = FALSE;
2782 			}
2783 			if (_tmp127_) {
2784 				ValaProperty* _tmp130_;
2785 				ValaPropertyAccessor* _tmp131_;
2786 				ValaPropertyAccessor* _tmp132_;
2787 				gchar* _tmp133_;
2788 				gchar* _tmp134_;
2789 				ValaCCodeIdentifier* _tmp135_;
2790 				_tmp130_ = base_prop;
2791 				_tmp131_ = vala_property_get_set_accessor (_tmp130_);
2792 				_tmp132_ = _tmp131_;
2793 				_tmp133_ = vala_get_ccode_name ((ValaCodeNode*) _tmp132_);
2794 				_tmp134_ = _tmp133_;
2795 				_tmp135_ = vala_ccode_identifier_new (_tmp134_);
2796 				_vala_ccode_node_unref0 (cfunc);
2797 				cfunc = (ValaCCodeExpression*) _tmp135_;
2798 				_g_free0 (_tmp134_);
2799 			} else {
2800 				ValaProperty* _tmp136_;
2801 				ValaPropertyAccessor* _tmp137_;
2802 				ValaPropertyAccessor* _tmp138_;
2803 				gchar* _tmp139_;
2804 				gchar* _tmp140_;
2805 				ValaCCodeIdentifier* _tmp141_;
2806 				_tmp136_ = prop;
2807 				_tmp137_ = vala_property_get_set_accessor (_tmp136_);
2808 				_tmp138_ = _tmp137_;
2809 				_tmp139_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp138_);
2810 				_tmp140_ = _tmp139_;
2811 				_tmp141_ = vala_ccode_identifier_new (_tmp140_);
2812 				_vala_ccode_node_unref0 (cfunc);
2813 				cfunc = (ValaCCodeExpression*) _tmp141_;
2814 				_g_free0 (_tmp140_);
2815 			}
2816 			_tmp142_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2817 			_tmp143_ = _tmp142_;
2818 			_tmp144_ = prop;
2819 			_tmp145_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp144_, NULL);
2820 			_tmp146_ = _tmp145_;
2821 			_tmp147_ = g_strdup_printf ("%s_PROPERTY", _tmp146_);
2822 			_tmp148_ = _tmp147_;
2823 			_tmp149_ = vala_ccode_identifier_new (_tmp148_);
2824 			_tmp150_ = _tmp149_;
2825 			vala_ccode_function_add_case (_tmp143_, (ValaCCodeExpression*) _tmp150_);
2826 			_vala_ccode_node_unref0 (_tmp150_);
2827 			_g_free0 (_tmp148_);
2828 			_g_free0 (_tmp146_);
2829 			_tmp151_ = cfunc;
2830 			_tmp152_ = vala_ccode_function_call_new (_tmp151_);
2831 			_vala_ccode_node_unref0 (ccall);
2832 			ccall = _tmp152_;
2833 			_tmp153_ = ccall;
2834 			_tmp154_ = cself;
2835 			vala_ccode_function_call_add_argument (_tmp153_, _tmp154_);
2836 			_tmp156_ = prop;
2837 			_tmp157_ = vala_property_get_property_type (_tmp156_);
2838 			_tmp158_ = _tmp157_;
2839 			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp158_, VALA_TYPE_ARRAY_TYPE)) {
2840 				ValaProperty* _tmp159_;
2841 				ValaDataType* _tmp160_;
2842 				ValaDataType* _tmp161_;
2843 				ValaDataType* _tmp162_;
2844 				ValaDataType* _tmp163_;
2845 				ValaTypeSymbol* _tmp164_;
2846 				ValaTypeSymbol* _tmp165_;
2847 				ValaDataType* _tmp166_;
2848 				ValaTypeSymbol* _tmp167_;
2849 				ValaTypeSymbol* _tmp168_;
2850 				_tmp159_ = prop;
2851 				_tmp160_ = vala_property_get_property_type (_tmp159_);
2852 				_tmp161_ = _tmp160_;
2853 				_tmp162_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp161_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
2854 				_tmp163_ = _tmp162_;
2855 				_tmp164_ = vala_data_type_get_type_symbol (_tmp163_);
2856 				_tmp165_ = _tmp164_;
2857 				_tmp166_ = ((ValaCCodeBaseModule*) self)->string_type;
2858 				_tmp167_ = vala_data_type_get_type_symbol (_tmp166_);
2859 				_tmp168_ = _tmp167_;
2860 				_tmp155_ = _tmp165_ == _tmp168_;
2861 			} else {
2862 				_tmp155_ = FALSE;
2863 			}
2864 			if (_tmp155_) {
2865 				ValaCCodeFunction* _tmp169_;
2866 				ValaCCodeFunction* _tmp170_;
2867 				ValaCCodeFunction* _tmp171_;
2868 				ValaCCodeFunction* _tmp172_;
2869 				ValaCCodeVariableDeclarator* _tmp173_;
2870 				ValaCCodeVariableDeclarator* _tmp174_;
2871 				ValaCCodeFunctionCall* cgetcall = NULL;
2872 				ValaCCodeIdentifier* _tmp175_;
2873 				ValaCCodeIdentifier* _tmp176_;
2874 				ValaCCodeFunctionCall* _tmp177_;
2875 				ValaCCodeFunctionCall* _tmp178_;
2876 				ValaCCodeFunctionCall* _tmp179_;
2877 				ValaCCodeIdentifier* _tmp180_;
2878 				ValaCCodeIdentifier* _tmp181_;
2879 				ValaCCodeFunction* _tmp182_;
2880 				ValaCCodeFunction* _tmp183_;
2881 				ValaCCodeIdentifier* _tmp184_;
2882 				ValaCCodeIdentifier* _tmp185_;
2883 				ValaCCodeFunctionCall* _tmp186_;
2884 				ValaCCodeFunctionCall* _tmp187_;
2885 				ValaCCodeIdentifier* _tmp188_;
2886 				ValaCCodeIdentifier* _tmp189_;
2887 				ValaProperty* _tmp190_;
2888 				ValaProperty* _tmp212_;
2889 				ValaCCodeFunctionCall* _tmp213_;
2890 				ValaCCodeFunction* _tmp214_;
2891 				ValaCCodeFunction* _tmp215_;
2892 				_tmp169_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2893 				_tmp170_ = _tmp169_;
2894 				vala_ccode_function_open_block (_tmp170_);
2895 				_tmp171_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2896 				_tmp172_ = _tmp171_;
2897 				_tmp173_ = vala_ccode_variable_declarator_new ("boxed", NULL, NULL);
2898 				_tmp174_ = _tmp173_;
2899 				vala_ccode_function_add_declaration (_tmp172_, "gpointer", (ValaCCodeDeclarator*) _tmp174_, 0);
2900 				_vala_ccode_node_unref0 (_tmp174_);
2901 				_tmp175_ = vala_ccode_identifier_new ("g_value_get_boxed");
2902 				_tmp176_ = _tmp175_;
2903 				_tmp177_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp176_);
2904 				_tmp178_ = _tmp177_;
2905 				_vala_ccode_node_unref0 (_tmp176_);
2906 				cgetcall = _tmp178_;
2907 				_tmp179_ = cgetcall;
2908 				_tmp180_ = vala_ccode_identifier_new ("value");
2909 				_tmp181_ = _tmp180_;
2910 				vala_ccode_function_call_add_argument (_tmp179_, (ValaCCodeExpression*) _tmp181_);
2911 				_vala_ccode_node_unref0 (_tmp181_);
2912 				_tmp182_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2913 				_tmp183_ = _tmp182_;
2914 				_tmp184_ = vala_ccode_identifier_new ("boxed");
2915 				_tmp185_ = _tmp184_;
2916 				_tmp186_ = cgetcall;
2917 				vala_ccode_function_add_assignment (_tmp183_, (ValaCCodeExpression*) _tmp185_, (ValaCCodeExpression*) _tmp186_);
2918 				_vala_ccode_node_unref0 (_tmp185_);
2919 				_tmp187_ = ccall;
2920 				_tmp188_ = vala_ccode_identifier_new ("boxed");
2921 				_tmp189_ = _tmp188_;
2922 				vala_ccode_function_call_add_argument (_tmp187_, (ValaCCodeExpression*) _tmp189_);
2923 				_vala_ccode_node_unref0 (_tmp189_);
2924 				_tmp190_ = prop;
2925 				if (vala_get_ccode_array_length ((ValaCodeNode*) _tmp190_)) {
2926 					ValaCCodeBinaryExpression* cisnull = NULL;
2927 					ValaCCodeIdentifier* _tmp191_;
2928 					ValaCCodeIdentifier* _tmp192_;
2929 					ValaCCodeConstant* _tmp193_;
2930 					ValaCCodeConstant* _tmp194_;
2931 					ValaCCodeBinaryExpression* _tmp195_;
2932 					ValaCCodeBinaryExpression* _tmp196_;
2933 					ValaCCodeFunctionCall* cstrvlen = NULL;
2934 					ValaCCodeIdentifier* _tmp197_;
2935 					ValaCCodeIdentifier* _tmp198_;
2936 					ValaCCodeFunctionCall* _tmp199_;
2937 					ValaCCodeFunctionCall* _tmp200_;
2938 					ValaCCodeFunctionCall* _tmp201_;
2939 					ValaCCodeIdentifier* _tmp202_;
2940 					ValaCCodeIdentifier* _tmp203_;
2941 					ValaCCodeConditionalExpression* ccond = NULL;
2942 					ValaCCodeBinaryExpression* _tmp204_;
2943 					ValaCCodeConstant* _tmp205_;
2944 					ValaCCodeConstant* _tmp206_;
2945 					ValaCCodeFunctionCall* _tmp207_;
2946 					ValaCCodeConditionalExpression* _tmp208_;
2947 					ValaCCodeConditionalExpression* _tmp209_;
2948 					ValaCCodeFunctionCall* _tmp210_;
2949 					ValaCCodeConditionalExpression* _tmp211_;
2950 					_tmp191_ = vala_ccode_identifier_new ("boxed");
2951 					_tmp192_ = _tmp191_;
2952 					_tmp193_ = vala_ccode_constant_new ("NULL");
2953 					_tmp194_ = _tmp193_;
2954 					_tmp195_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp192_, (ValaCCodeExpression*) _tmp194_);
2955 					_tmp196_ = _tmp195_;
2956 					_vala_ccode_node_unref0 (_tmp194_);
2957 					_vala_ccode_node_unref0 (_tmp192_);
2958 					cisnull = _tmp196_;
2959 					_tmp197_ = vala_ccode_identifier_new ("g_strv_length");
2960 					_tmp198_ = _tmp197_;
2961 					_tmp199_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp198_);
2962 					_tmp200_ = _tmp199_;
2963 					_vala_ccode_node_unref0 (_tmp198_);
2964 					cstrvlen = _tmp200_;
2965 					_tmp201_ = cstrvlen;
2966 					_tmp202_ = vala_ccode_identifier_new ("boxed");
2967 					_tmp203_ = _tmp202_;
2968 					vala_ccode_function_call_add_argument (_tmp201_, (ValaCCodeExpression*) _tmp203_);
2969 					_vala_ccode_node_unref0 (_tmp203_);
2970 					_tmp204_ = cisnull;
2971 					_tmp205_ = vala_ccode_constant_new ("0");
2972 					_tmp206_ = _tmp205_;
2973 					_tmp207_ = cstrvlen;
2974 					_tmp208_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp204_, (ValaCCodeExpression*) _tmp206_, (ValaCCodeExpression*) _tmp207_);
2975 					_tmp209_ = _tmp208_;
2976 					_vala_ccode_node_unref0 (_tmp206_);
2977 					ccond = _tmp209_;
2978 					_tmp210_ = ccall;
2979 					_tmp211_ = ccond;
2980 					vala_ccode_function_call_add_argument (_tmp210_, (ValaCCodeExpression*) _tmp211_);
2981 					_vala_ccode_node_unref0 (ccond);
2982 					_vala_ccode_node_unref0 (cstrvlen);
2983 					_vala_ccode_node_unref0 (cisnull);
2984 				}
2985 				_tmp212_ = prop;
2986 				_tmp213_ = ccall;
2987 				vala_gobject_module_add_guarded_expression (self, (ValaSymbol*) _tmp212_, (ValaCCodeExpression*) _tmp213_);
2988 				_tmp214_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2989 				_tmp215_ = _tmp214_;
2990 				vala_ccode_function_close (_tmp215_);
2991 				_vala_ccode_node_unref0 (cgetcall);
2992 			} else {
2993 				ValaCCodeFunctionCall* cgetcall = NULL;
2994 				ValaCCodeFunctionCall* _tmp216_;
2995 				ValaProperty* _tmp217_;
2996 				ValaDataType* _tmp218_;
2997 				ValaDataType* _tmp219_;
2998 				ValaTypeSymbol* _tmp220_;
2999 				ValaTypeSymbol* _tmp221_;
3000 				ValaCCodeFunctionCall* _tmp235_;
3001 				ValaCCodeIdentifier* _tmp236_;
3002 				ValaCCodeIdentifier* _tmp237_;
3003 				ValaCCodeFunctionCall* _tmp238_;
3004 				ValaCCodeFunctionCall* _tmp239_;
3005 				ValaProperty* _tmp240_;
3006 				ValaCCodeFunctionCall* _tmp241_;
3007 				_tmp216_ = vala_ccode_function_call_new (NULL);
3008 				cgetcall = _tmp216_;
3009 				_tmp217_ = prop;
3010 				_tmp218_ = vala_property_get_property_type (_tmp217_);
3011 				_tmp219_ = _tmp218_;
3012 				_tmp220_ = vala_data_type_get_type_symbol (_tmp219_);
3013 				_tmp221_ = _tmp220_;
3014 				if (_tmp221_ != NULL) {
3015 					ValaCCodeFunctionCall* _tmp222_;
3016 					ValaProperty* _tmp223_;
3017 					ValaDataType* _tmp224_;
3018 					ValaDataType* _tmp225_;
3019 					ValaTypeSymbol* _tmp226_;
3020 					ValaTypeSymbol* _tmp227_;
3021 					gchar* _tmp228_;
3022 					gchar* _tmp229_;
3023 					ValaCCodeIdentifier* _tmp230_;
3024 					ValaCCodeIdentifier* _tmp231_;
3025 					_tmp222_ = cgetcall;
3026 					_tmp223_ = prop;
3027 					_tmp224_ = vala_property_get_property_type (_tmp223_);
3028 					_tmp225_ = _tmp224_;
3029 					_tmp226_ = vala_data_type_get_type_symbol (_tmp225_);
3030 					_tmp227_ = _tmp226_;
3031 					_tmp228_ = vala_get_ccode_get_value_function ((ValaCodeNode*) _tmp227_);
3032 					_tmp229_ = _tmp228_;
3033 					_tmp230_ = vala_ccode_identifier_new (_tmp229_);
3034 					_tmp231_ = _tmp230_;
3035 					vala_ccode_function_call_set_call (_tmp222_, (ValaCCodeExpression*) _tmp231_);
3036 					_vala_ccode_node_unref0 (_tmp231_);
3037 					_g_free0 (_tmp229_);
3038 				} else {
3039 					ValaCCodeFunctionCall* _tmp232_;
3040 					ValaCCodeIdentifier* _tmp233_;
3041 					ValaCCodeIdentifier* _tmp234_;
3042 					_tmp232_ = cgetcall;
3043 					_tmp233_ = vala_ccode_identifier_new ("g_value_get_pointer");
3044 					_tmp234_ = _tmp233_;
3045 					vala_ccode_function_call_set_call (_tmp232_, (ValaCCodeExpression*) _tmp234_);
3046 					_vala_ccode_node_unref0 (_tmp234_);
3047 				}
3048 				_tmp235_ = cgetcall;
3049 				_tmp236_ = vala_ccode_identifier_new ("value");
3050 				_tmp237_ = _tmp236_;
3051 				vala_ccode_function_call_add_argument (_tmp235_, (ValaCCodeExpression*) _tmp237_);
3052 				_vala_ccode_node_unref0 (_tmp237_);
3053 				_tmp238_ = ccall;
3054 				_tmp239_ = cgetcall;
3055 				vala_ccode_function_call_add_argument (_tmp238_, (ValaCCodeExpression*) _tmp239_);
3056 				_tmp240_ = prop;
3057 				_tmp241_ = ccall;
3058 				vala_gobject_module_add_guarded_expression (self, (ValaSymbol*) _tmp240_, (ValaCCodeExpression*) _tmp241_);
3059 				_vala_ccode_node_unref0 (cgetcall);
3060 			}
3061 			_tmp242_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3062 			_tmp243_ = _tmp242_;
3063 			vala_ccode_function_add_break (_tmp243_);
3064 			_vala_ccode_node_unref0 (cfunc);
3065 			_vala_ccode_node_unref0 (cself);
3066 			_vala_code_node_unref0 (base_prop);
3067 			_vala_code_node_unref0 (prop);
3068 		}
3069 		_vala_iterable_unref0 (_prop_list);
3070 	}
3071 	{
3072 		ValaList* _type_param_list = NULL;
3073 		ValaList* _tmp244_;
3074 		ValaList* _tmp245_;
3075 		gint _type_param_size = 0;
3076 		ValaList* _tmp246_;
3077 		gint _tmp247_;
3078 		gint _tmp248_;
3079 		gint _type_param_index = 0;
3080 		_tmp244_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
3081 		_tmp245_ = _vala_iterable_ref0 (_tmp244_);
3082 		_type_param_list = _tmp245_;
3083 		_tmp246_ = _type_param_list;
3084 		_tmp247_ = vala_collection_get_size ((ValaCollection*) _tmp246_);
3085 		_tmp248_ = _tmp247_;
3086 		_type_param_size = _tmp248_;
3087 		_type_param_index = -1;
3088 		while (TRUE) {
3089 			gint _tmp249_;
3090 			gint _tmp250_;
3091 			ValaTypeParameter* type_param = NULL;
3092 			ValaList* _tmp251_;
3093 			gpointer _tmp252_;
3094 			gchar* func_name = NULL;
3095 			gchar* enum_value = NULL;
3096 			ValaCCodeMemberAccess* cfield = NULL;
3097 			ValaCCodeFunctionCall* cgetcall = NULL;
3098 			ValaTypeParameter* _tmp253_;
3099 			const gchar* _tmp254_;
3100 			const gchar* _tmp255_;
3101 			gchar* _tmp256_;
3102 			gchar* _tmp257_;
3103 			gchar* _tmp258_;
3104 			gchar* _tmp259_;
3105 			gchar* _tmp260_;
3106 			const gchar* _tmp261_;
3107 			gchar* _tmp262_;
3108 			gchar* _tmp263_;
3109 			gchar* _tmp264_;
3110 			ValaCCodeFunction* _tmp265_;
3111 			ValaCCodeFunction* _tmp266_;
3112 			const gchar* _tmp267_;
3113 			ValaCCodeIdentifier* _tmp268_;
3114 			ValaCCodeIdentifier* _tmp269_;
3115 			ValaCCodeIdentifier* _tmp270_;
3116 			ValaCCodeIdentifier* _tmp271_;
3117 			ValaCCodeMemberAccess* _tmp272_;
3118 			ValaCCodeMemberAccess* _tmp273_;
3119 			const gchar* _tmp274_;
3120 			ValaCCodeMemberAccess* _tmp275_;
3121 			ValaCCodeIdentifier* _tmp276_;
3122 			ValaCCodeIdentifier* _tmp277_;
3123 			ValaCCodeFunctionCall* _tmp278_;
3124 			ValaCCodeFunctionCall* _tmp279_;
3125 			ValaCCodeIdentifier* _tmp280_;
3126 			ValaCCodeIdentifier* _tmp281_;
3127 			ValaCCodeFunction* _tmp282_;
3128 			ValaCCodeFunction* _tmp283_;
3129 			ValaCCodeMemberAccess* _tmp284_;
3130 			ValaCCodeFunctionCall* _tmp285_;
3131 			ValaCCodeFunction* _tmp286_;
3132 			ValaCCodeFunction* _tmp287_;
3133 			ValaTypeParameter* _tmp288_;
3134 			const gchar* _tmp289_;
3135 			const gchar* _tmp290_;
3136 			gchar* _tmp291_;
3137 			gchar* _tmp292_;
3138 			gchar* _tmp293_;
3139 			gchar* _tmp294_;
3140 			gchar* _tmp295_;
3141 			const gchar* _tmp296_;
3142 			gchar* _tmp297_;
3143 			gchar* _tmp298_;
3144 			gchar* _tmp299_;
3145 			ValaCCodeFunction* _tmp300_;
3146 			ValaCCodeFunction* _tmp301_;
3147 			const gchar* _tmp302_;
3148 			ValaCCodeIdentifier* _tmp303_;
3149 			ValaCCodeIdentifier* _tmp304_;
3150 			ValaCCodeIdentifier* _tmp305_;
3151 			ValaCCodeIdentifier* _tmp306_;
3152 			ValaCCodeMemberAccess* _tmp307_;
3153 			ValaCCodeMemberAccess* _tmp308_;
3154 			const gchar* _tmp309_;
3155 			ValaCCodeMemberAccess* _tmp310_;
3156 			ValaCCodeIdentifier* _tmp311_;
3157 			ValaCCodeIdentifier* _tmp312_;
3158 			ValaCCodeFunctionCall* _tmp313_;
3159 			ValaCCodeFunctionCall* _tmp314_;
3160 			ValaCCodeIdentifier* _tmp315_;
3161 			ValaCCodeIdentifier* _tmp316_;
3162 			ValaCCodeFunction* _tmp317_;
3163 			ValaCCodeFunction* _tmp318_;
3164 			ValaCCodeMemberAccess* _tmp319_;
3165 			ValaCCodeFunctionCall* _tmp320_;
3166 			ValaCCodeFunction* _tmp321_;
3167 			ValaCCodeFunction* _tmp322_;
3168 			ValaTypeParameter* _tmp323_;
3169 			const gchar* _tmp324_;
3170 			const gchar* _tmp325_;
3171 			gchar* _tmp326_;
3172 			gchar* _tmp327_;
3173 			gchar* _tmp328_;
3174 			gchar* _tmp329_;
3175 			gchar* _tmp330_;
3176 			const gchar* _tmp331_;
3177 			gchar* _tmp332_;
3178 			gchar* _tmp333_;
3179 			gchar* _tmp334_;
3180 			ValaCCodeFunction* _tmp335_;
3181 			ValaCCodeFunction* _tmp336_;
3182 			const gchar* _tmp337_;
3183 			ValaCCodeIdentifier* _tmp338_;
3184 			ValaCCodeIdentifier* _tmp339_;
3185 			ValaCCodeIdentifier* _tmp340_;
3186 			ValaCCodeIdentifier* _tmp341_;
3187 			ValaCCodeMemberAccess* _tmp342_;
3188 			ValaCCodeMemberAccess* _tmp343_;
3189 			const gchar* _tmp344_;
3190 			ValaCCodeMemberAccess* _tmp345_;
3191 			ValaCCodeIdentifier* _tmp346_;
3192 			ValaCCodeIdentifier* _tmp347_;
3193 			ValaCCodeFunctionCall* _tmp348_;
3194 			ValaCCodeFunctionCall* _tmp349_;
3195 			ValaCCodeIdentifier* _tmp350_;
3196 			ValaCCodeIdentifier* _tmp351_;
3197 			ValaCCodeFunction* _tmp352_;
3198 			ValaCCodeFunction* _tmp353_;
3199 			ValaCCodeMemberAccess* _tmp354_;
3200 			ValaCCodeFunctionCall* _tmp355_;
3201 			ValaCCodeFunction* _tmp356_;
3202 			ValaCCodeFunction* _tmp357_;
3203 			_type_param_index = _type_param_index + 1;
3204 			_tmp249_ = _type_param_index;
3205 			_tmp250_ = _type_param_size;
3206 			if (!(_tmp249_ < _tmp250_)) {
3207 				break;
3208 			}
3209 			_tmp251_ = _type_param_list;
3210 			_tmp252_ = vala_list_get (_tmp251_, _type_param_index);
3211 			type_param = (ValaTypeParameter*) _tmp252_;
3212 			_tmp253_ = type_param;
3213 			_tmp254_ = vala_symbol_get_name ((ValaSymbol*) _tmp253_);
3214 			_tmp255_ = _tmp254_;
3215 			_tmp256_ = g_ascii_strdown (_tmp255_, (gssize) -1);
3216 			_tmp257_ = _tmp256_;
3217 			_tmp258_ = g_strdup_printf ("%s_type", _tmp257_);
3218 			_g_free0 (func_name);
3219 			func_name = _tmp258_;
3220 			_g_free0 (_tmp257_);
3221 			_tmp259_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
3222 			_tmp260_ = _tmp259_;
3223 			_tmp261_ = func_name;
3224 			_tmp262_ = g_strdup_printf ("%s_%s", _tmp260_, _tmp261_);
3225 			_tmp263_ = _tmp262_;
3226 			_tmp264_ = g_ascii_strup (_tmp263_, (gssize) -1);
3227 			_g_free0 (enum_value);
3228 			enum_value = _tmp264_;
3229 			_g_free0 (_tmp263_);
3230 			_g_free0 (_tmp260_);
3231 			_tmp265_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3232 			_tmp266_ = _tmp265_;
3233 			_tmp267_ = enum_value;
3234 			_tmp268_ = vala_ccode_identifier_new (_tmp267_);
3235 			_tmp269_ = _tmp268_;
3236 			vala_ccode_function_add_case (_tmp266_, (ValaCCodeExpression*) _tmp269_);
3237 			_vala_ccode_node_unref0 (_tmp269_);
3238 			_tmp270_ = vala_ccode_identifier_new ("self");
3239 			_tmp271_ = _tmp270_;
3240 			_tmp272_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp271_, "priv");
3241 			_tmp273_ = _tmp272_;
3242 			_tmp274_ = func_name;
3243 			_tmp275_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp273_, _tmp274_);
3244 			_vala_ccode_node_unref0 (cfield);
3245 			cfield = _tmp275_;
3246 			_vala_ccode_node_unref0 (_tmp273_);
3247 			_vala_ccode_node_unref0 (_tmp271_);
3248 			_tmp276_ = vala_ccode_identifier_new ("g_value_get_gtype");
3249 			_tmp277_ = _tmp276_;
3250 			_tmp278_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp277_);
3251 			_vala_ccode_node_unref0 (cgetcall);
3252 			cgetcall = _tmp278_;
3253 			_vala_ccode_node_unref0 (_tmp277_);
3254 			_tmp279_ = cgetcall;
3255 			_tmp280_ = vala_ccode_identifier_new ("value");
3256 			_tmp281_ = _tmp280_;
3257 			vala_ccode_function_call_add_argument (_tmp279_, (ValaCCodeExpression*) _tmp281_);
3258 			_vala_ccode_node_unref0 (_tmp281_);
3259 			_tmp282_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3260 			_tmp283_ = _tmp282_;
3261 			_tmp284_ = cfield;
3262 			_tmp285_ = cgetcall;
3263 			vala_ccode_function_add_assignment (_tmp283_, (ValaCCodeExpression*) _tmp284_, (ValaCCodeExpression*) _tmp285_);
3264 			_tmp286_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3265 			_tmp287_ = _tmp286_;
3266 			vala_ccode_function_add_break (_tmp287_);
3267 			_tmp288_ = type_param;
3268 			_tmp289_ = vala_symbol_get_name ((ValaSymbol*) _tmp288_);
3269 			_tmp290_ = _tmp289_;
3270 			_tmp291_ = g_ascii_strdown (_tmp290_, (gssize) -1);
3271 			_tmp292_ = _tmp291_;
3272 			_tmp293_ = g_strdup_printf ("%s_dup_func", _tmp292_);
3273 			_g_free0 (func_name);
3274 			func_name = _tmp293_;
3275 			_g_free0 (_tmp292_);
3276 			_tmp294_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
3277 			_tmp295_ = _tmp294_;
3278 			_tmp296_ = func_name;
3279 			_tmp297_ = g_strdup_printf ("%s_%s", _tmp295_, _tmp296_);
3280 			_tmp298_ = _tmp297_;
3281 			_tmp299_ = g_ascii_strup (_tmp298_, (gssize) -1);
3282 			_g_free0 (enum_value);
3283 			enum_value = _tmp299_;
3284 			_g_free0 (_tmp298_);
3285 			_g_free0 (_tmp295_);
3286 			_tmp300_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3287 			_tmp301_ = _tmp300_;
3288 			_tmp302_ = enum_value;
3289 			_tmp303_ = vala_ccode_identifier_new (_tmp302_);
3290 			_tmp304_ = _tmp303_;
3291 			vala_ccode_function_add_case (_tmp301_, (ValaCCodeExpression*) _tmp304_);
3292 			_vala_ccode_node_unref0 (_tmp304_);
3293 			_tmp305_ = vala_ccode_identifier_new ("self");
3294 			_tmp306_ = _tmp305_;
3295 			_tmp307_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp306_, "priv");
3296 			_tmp308_ = _tmp307_;
3297 			_tmp309_ = func_name;
3298 			_tmp310_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp308_, _tmp309_);
3299 			_vala_ccode_node_unref0 (cfield);
3300 			cfield = _tmp310_;
3301 			_vala_ccode_node_unref0 (_tmp308_);
3302 			_vala_ccode_node_unref0 (_tmp306_);
3303 			_tmp311_ = vala_ccode_identifier_new ("g_value_get_pointer");
3304 			_tmp312_ = _tmp311_;
3305 			_tmp313_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp312_);
3306 			_vala_ccode_node_unref0 (cgetcall);
3307 			cgetcall = _tmp313_;
3308 			_vala_ccode_node_unref0 (_tmp312_);
3309 			_tmp314_ = cgetcall;
3310 			_tmp315_ = vala_ccode_identifier_new ("value");
3311 			_tmp316_ = _tmp315_;
3312 			vala_ccode_function_call_add_argument (_tmp314_, (ValaCCodeExpression*) _tmp316_);
3313 			_vala_ccode_node_unref0 (_tmp316_);
3314 			_tmp317_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3315 			_tmp318_ = _tmp317_;
3316 			_tmp319_ = cfield;
3317 			_tmp320_ = cgetcall;
3318 			vala_ccode_function_add_assignment (_tmp318_, (ValaCCodeExpression*) _tmp319_, (ValaCCodeExpression*) _tmp320_);
3319 			_tmp321_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3320 			_tmp322_ = _tmp321_;
3321 			vala_ccode_function_add_break (_tmp322_);
3322 			_tmp323_ = type_param;
3323 			_tmp324_ = vala_symbol_get_name ((ValaSymbol*) _tmp323_);
3324 			_tmp325_ = _tmp324_;
3325 			_tmp326_ = g_ascii_strdown (_tmp325_, (gssize) -1);
3326 			_tmp327_ = _tmp326_;
3327 			_tmp328_ = g_strdup_printf ("%s_destroy_func", _tmp327_);
3328 			_g_free0 (func_name);
3329 			func_name = _tmp328_;
3330 			_g_free0 (_tmp327_);
3331 			_tmp329_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
3332 			_tmp330_ = _tmp329_;
3333 			_tmp331_ = func_name;
3334 			_tmp332_ = g_strdup_printf ("%s_%s", _tmp330_, _tmp331_);
3335 			_tmp333_ = _tmp332_;
3336 			_tmp334_ = g_ascii_strup (_tmp333_, (gssize) -1);
3337 			_g_free0 (enum_value);
3338 			enum_value = _tmp334_;
3339 			_g_free0 (_tmp333_);
3340 			_g_free0 (_tmp330_);
3341 			_tmp335_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3342 			_tmp336_ = _tmp335_;
3343 			_tmp337_ = enum_value;
3344 			_tmp338_ = vala_ccode_identifier_new (_tmp337_);
3345 			_tmp339_ = _tmp338_;
3346 			vala_ccode_function_add_case (_tmp336_, (ValaCCodeExpression*) _tmp339_);
3347 			_vala_ccode_node_unref0 (_tmp339_);
3348 			_tmp340_ = vala_ccode_identifier_new ("self");
3349 			_tmp341_ = _tmp340_;
3350 			_tmp342_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp341_, "priv");
3351 			_tmp343_ = _tmp342_;
3352 			_tmp344_ = func_name;
3353 			_tmp345_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp343_, _tmp344_);
3354 			_vala_ccode_node_unref0 (cfield);
3355 			cfield = _tmp345_;
3356 			_vala_ccode_node_unref0 (_tmp343_);
3357 			_vala_ccode_node_unref0 (_tmp341_);
3358 			_tmp346_ = vala_ccode_identifier_new ("g_value_get_pointer");
3359 			_tmp347_ = _tmp346_;
3360 			_tmp348_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp347_);
3361 			_vala_ccode_node_unref0 (cgetcall);
3362 			cgetcall = _tmp348_;
3363 			_vala_ccode_node_unref0 (_tmp347_);
3364 			_tmp349_ = cgetcall;
3365 			_tmp350_ = vala_ccode_identifier_new ("value");
3366 			_tmp351_ = _tmp350_;
3367 			vala_ccode_function_call_add_argument (_tmp349_, (ValaCCodeExpression*) _tmp351_);
3368 			_vala_ccode_node_unref0 (_tmp351_);
3369 			_tmp352_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3370 			_tmp353_ = _tmp352_;
3371 			_tmp354_ = cfield;
3372 			_tmp355_ = cgetcall;
3373 			vala_ccode_function_add_assignment (_tmp353_, (ValaCCodeExpression*) _tmp354_, (ValaCCodeExpression*) _tmp355_);
3374 			_tmp356_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3375 			_tmp357_ = _tmp356_;
3376 			vala_ccode_function_add_break (_tmp357_);
3377 			_vala_ccode_node_unref0 (cgetcall);
3378 			_vala_ccode_node_unref0 (cfield);
3379 			_g_free0 (enum_value);
3380 			_g_free0 (func_name);
3381 			_vala_code_node_unref0 (type_param);
3382 		}
3383 		_vala_iterable_unref0 (_type_param_list);
3384 	}
3385 	_tmp358_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3386 	_tmp359_ = _tmp358_;
3387 	vala_ccode_function_add_default (_tmp359_);
3388 	vala_gobject_module_emit_invalid_property_id_warn (self);
3389 	_tmp360_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3390 	_tmp361_ = _tmp360_;
3391 	vala_ccode_function_add_break (_tmp361_);
3392 	_tmp362_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3393 	_tmp363_ = _tmp362_;
3394 	vala_ccode_function_close (_tmp363_);
3395 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
3396 	_tmp364_ = ((ValaCCodeBaseModule*) self)->cfile;
3397 	_tmp365_ = set_prop;
3398 	vala_ccode_file_add_function_declaration (_tmp364_, _tmp365_);
3399 	_tmp366_ = ((ValaCCodeBaseModule*) self)->cfile;
3400 	_tmp367_ = set_prop;
3401 	vala_ccode_file_add_function (_tmp366_, _tmp367_);
3402 	_vala_iterable_unref0 (props);
3403 	_vala_ccode_node_unref0 (ccall);
3404 	_vala_ccode_node_unref0 (set_prop);
3405 }
3406 
3407 static void
vala_gobject_module_emit_invalid_property_id_warn(ValaGObjectModule * self)3408 vala_gobject_module_emit_invalid_property_id_warn (ValaGObjectModule* self)
3409 {
3410 	ValaCCodeFunctionCall* cwarn = NULL;
3411 	ValaCCodeIdentifier* _tmp0_;
3412 	ValaCCodeIdentifier* _tmp1_;
3413 	ValaCCodeFunctionCall* _tmp2_;
3414 	ValaCCodeFunctionCall* _tmp3_;
3415 	ValaCCodeIdentifier* _tmp4_;
3416 	ValaCCodeIdentifier* _tmp5_;
3417 	ValaCCodeIdentifier* _tmp6_;
3418 	ValaCCodeIdentifier* _tmp7_;
3419 	ValaCCodeIdentifier* _tmp8_;
3420 	ValaCCodeIdentifier* _tmp9_;
3421 	ValaCCodeFunction* _tmp10_;
3422 	ValaCCodeFunction* _tmp11_;
3423 	g_return_if_fail (self != NULL);
3424 	_tmp0_ = vala_ccode_identifier_new ("G_OBJECT_WARN_INVALID_PROPERTY_ID");
3425 	_tmp1_ = _tmp0_;
3426 	_tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_);
3427 	_tmp3_ = _tmp2_;
3428 	_vala_ccode_node_unref0 (_tmp1_);
3429 	cwarn = _tmp3_;
3430 	_tmp4_ = vala_ccode_identifier_new ("object");
3431 	_tmp5_ = _tmp4_;
3432 	vala_ccode_function_call_add_argument (cwarn, (ValaCCodeExpression*) _tmp5_);
3433 	_vala_ccode_node_unref0 (_tmp5_);
3434 	_tmp6_ = vala_ccode_identifier_new ("property_id");
3435 	_tmp7_ = _tmp6_;
3436 	vala_ccode_function_call_add_argument (cwarn, (ValaCCodeExpression*) _tmp7_);
3437 	_vala_ccode_node_unref0 (_tmp7_);
3438 	_tmp8_ = vala_ccode_identifier_new ("pspec");
3439 	_tmp9_ = _tmp8_;
3440 	vala_ccode_function_call_add_argument (cwarn, (ValaCCodeExpression*) _tmp9_);
3441 	_vala_ccode_node_unref0 (_tmp9_);
3442 	_tmp10_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3443 	_tmp11_ = _tmp10_;
3444 	vala_ccode_function_add_expression (_tmp11_, (ValaCCodeExpression*) cwarn);
3445 	_vala_ccode_node_unref0 (cwarn);
3446 }
3447 
3448 static void
vala_gobject_module_real_visit_constructor(ValaCodeVisitor * base,ValaConstructor * c)3449 vala_gobject_module_real_visit_constructor (ValaCodeVisitor* base,
3450                                             ValaConstructor* c)
3451 {
3452 	ValaGObjectModule * self;
3453 	ValaSourceReference* _tmp0_;
3454 	ValaSourceReference* _tmp1_;
3455 	ValaClass* cl = NULL;
3456 	ValaSymbol* _tmp2_;
3457 	ValaSymbol* _tmp3_;
3458 	ValaClass* _tmp4_;
3459 	ValaMemberBinding _tmp5_;
3460 	ValaMemberBinding _tmp6_;
3461 	self = (ValaGObjectModule*) base;
3462 	g_return_if_fail (c != NULL);
3463 	_tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
3464 	_tmp1_ = _tmp0_;
3465 	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp1_);
3466 	_tmp2_ = vala_symbol_get_parent_symbol ((ValaSymbol*) c);
3467 	_tmp3_ = _tmp2_;
3468 	_tmp4_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, VALA_TYPE_CLASS, ValaClass));
3469 	cl = _tmp4_;
3470 	_tmp5_ = vala_constructor_get_binding (c);
3471 	_tmp6_ = _tmp5_;
3472 	if (_tmp6_ == VALA_MEMBER_BINDING_INSTANCE) {
3473 		ValaClass* _tmp7_;
3474 		ValaTypeSymbol* _tmp8_;
3475 		ValaCCodeBaseModuleEmitContext* _tmp11_;
3476 		ValaCCodeBaseModuleEmitContext* _tmp12_;
3477 		ValaCCodeFunction* function = NULL;
3478 		ValaClass* _tmp13_;
3479 		gchar* _tmp14_;
3480 		gchar* _tmp15_;
3481 		gchar* _tmp16_;
3482 		gchar* _tmp17_;
3483 		ValaCCodeFunction* _tmp18_;
3484 		ValaCCodeFunction* _tmp19_;
3485 		ValaCCodeFunction* _tmp20_;
3486 		ValaCCodeFunction* _tmp21_;
3487 		ValaCCodeParameter* _tmp22_;
3488 		ValaCCodeParameter* _tmp23_;
3489 		ValaCCodeFunction* _tmp24_;
3490 		ValaCCodeParameter* _tmp25_;
3491 		ValaCCodeParameter* _tmp26_;
3492 		ValaCCodeFunction* _tmp27_;
3493 		ValaCCodeParameter* _tmp28_;
3494 		ValaCCodeParameter* _tmp29_;
3495 		ValaCCodeFile* _tmp30_;
3496 		ValaCCodeFunction* _tmp31_;
3497 		ValaCCodeFunction* _tmp32_;
3498 		ValaCCodeFunction* _tmp33_;
3499 		ValaCCodeFunction* _tmp34_;
3500 		ValaCCodeVariableDeclarator* _tmp35_;
3501 		ValaCCodeVariableDeclarator* _tmp36_;
3502 		ValaCCodeFunction* _tmp37_;
3503 		ValaCCodeFunction* _tmp38_;
3504 		ValaCCodeVariableDeclarator* _tmp39_;
3505 		ValaCCodeVariableDeclarator* _tmp40_;
3506 		ValaClass* _tmp41_;
3507 		gboolean _tmp42_;
3508 		gboolean _tmp43_;
3509 		ValaCCodeFunctionCall* ccast = NULL;
3510 		ValaCCodeIdentifier* _tmp199_;
3511 		ValaCCodeIdentifier* _tmp200_;
3512 		ValaCCodeFunctionCall* _tmp201_;
3513 		ValaCCodeFunctionCall* _tmp202_;
3514 		ValaCCodeFunctionCall* _tmp203_;
3515 		ValaClass* _tmp204_;
3516 		gchar* _tmp205_;
3517 		gchar* _tmp206_;
3518 		gchar* _tmp207_;
3519 		gchar* _tmp208_;
3520 		ValaCCodeIdentifier* _tmp209_;
3521 		ValaCCodeIdentifier* _tmp210_;
3522 		ValaCCodeFunction* _tmp211_;
3523 		ValaCCodeFunction* _tmp212_;
3524 		ValaCCodeIdentifier* _tmp213_;
3525 		ValaCCodeIdentifier* _tmp214_;
3526 		ValaCCodeFunctionCall* _tmp215_;
3527 		ValaCCodeFunctionCall* ccall = NULL;
3528 		ValaCCodeIdentifier* _tmp216_;
3529 		ValaCCodeIdentifier* _tmp217_;
3530 		ValaCCodeMemberAccess* _tmp218_;
3531 		ValaCCodeMemberAccess* _tmp219_;
3532 		ValaCCodeFunctionCall* _tmp220_;
3533 		ValaCCodeFunctionCall* _tmp221_;
3534 		ValaCCodeFunctionCall* _tmp222_;
3535 		ValaCCodeIdentifier* _tmp223_;
3536 		ValaCCodeIdentifier* _tmp224_;
3537 		ValaCCodeFunctionCall* _tmp225_;
3538 		ValaCCodeIdentifier* _tmp226_;
3539 		ValaCCodeIdentifier* _tmp227_;
3540 		ValaCCodeFunctionCall* _tmp228_;
3541 		ValaCCodeIdentifier* _tmp229_;
3542 		ValaCCodeIdentifier* _tmp230_;
3543 		ValaCCodeFunction* _tmp231_;
3544 		ValaCCodeFunction* _tmp232_;
3545 		ValaCCodeIdentifier* _tmp233_;
3546 		ValaCCodeIdentifier* _tmp234_;
3547 		ValaCCodeFunctionCall* _tmp235_;
3548 		ValaCCodeIdentifier* _tmp236_;
3549 		ValaCCodeIdentifier* _tmp237_;
3550 		ValaClass* _tmp238_;
3551 		ValaCCodeFunctionCall* _tmp239_;
3552 		ValaCCodeFunction* _tmp240_;
3553 		ValaCCodeFunction* _tmp241_;
3554 		ValaClass* _tmp242_;
3555 		gchar* _tmp243_;
3556 		gchar* _tmp244_;
3557 		gchar* _tmp245_;
3558 		gchar* _tmp246_;
3559 		ValaCCodeVariableDeclarator* _tmp247_;
3560 		ValaCCodeVariableDeclarator* _tmp248_;
3561 		ValaCCodeFunction* _tmp249_;
3562 		ValaCCodeFunction* _tmp250_;
3563 		ValaCCodeIdentifier* _tmp251_;
3564 		ValaCCodeIdentifier* _tmp252_;
3565 		ValaCCodeFunctionCall* _tmp253_;
3566 		ValaBlock* _tmp254_;
3567 		ValaBlock* _tmp255_;
3568 		gboolean _tmp256_;
3569 		gboolean _tmp257_;
3570 		ValaClass* _tmp268_;
3571 		gboolean _tmp269_;
3572 		gboolean _tmp270_;
3573 		ValaCCodeFunction* _tmp324_;
3574 		ValaCCodeFunction* _tmp325_;
3575 		ValaCCodeIdentifier* _tmp326_;
3576 		ValaCCodeIdentifier* _tmp327_;
3577 		ValaCCodeFile* _tmp328_;
3578 		ValaCCodeFunction* _tmp329_;
3579 		_tmp7_ = cl;
3580 		_tmp8_ = ((ValaCCodeBaseModule*) self)->gobject_type;
3581 		if (!vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp7_, _tmp8_)) {
3582 			ValaSourceReference* _tmp9_;
3583 			ValaSourceReference* _tmp10_;
3584 			_tmp9_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
3585 			_tmp10_ = _tmp9_;
3586 			vala_report_error (_tmp10_, "construct blocks require GLib.Object");
3587 			vala_code_node_set_error ((ValaCodeNode*) c, TRUE);
3588 			_vala_code_node_unref0 (cl);
3589 			return;
3590 		}
3591 		_tmp11_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) c);
3592 		_tmp12_ = _tmp11_;
3593 		vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp12_);
3594 		_vala_ccode_base_module_emit_context_unref0 (_tmp12_);
3595 		_tmp13_ = cl;
3596 		_tmp14_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp13_);
3597 		_tmp15_ = _tmp14_;
3598 		_tmp16_ = g_strdup_printf ("%sconstructor", _tmp15_);
3599 		_tmp17_ = _tmp16_;
3600 		_tmp18_ = vala_ccode_function_new (_tmp17_, "GObject *");
3601 		_tmp19_ = _tmp18_;
3602 		_g_free0 (_tmp17_);
3603 		_g_free0 (_tmp15_);
3604 		function = _tmp19_;
3605 		_tmp20_ = function;
3606 		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp20_, VALA_CCODE_MODIFIERS_STATIC);
3607 		_tmp21_ = function;
3608 		_tmp22_ = vala_ccode_parameter_new ("type", "GType");
3609 		_tmp23_ = _tmp22_;
3610 		vala_ccode_function_add_parameter (_tmp21_, _tmp23_);
3611 		_vala_ccode_node_unref0 (_tmp23_);
3612 		_tmp24_ = function;
3613 		_tmp25_ = vala_ccode_parameter_new ("n_construct_properties", "guint");
3614 		_tmp26_ = _tmp25_;
3615 		vala_ccode_function_add_parameter (_tmp24_, _tmp26_);
3616 		_vala_ccode_node_unref0 (_tmp26_);
3617 		_tmp27_ = function;
3618 		_tmp28_ = vala_ccode_parameter_new ("construct_properties", "GObjectConstructParam *");
3619 		_tmp29_ = _tmp28_;
3620 		vala_ccode_function_add_parameter (_tmp27_, _tmp29_);
3621 		_vala_ccode_node_unref0 (_tmp29_);
3622 		_tmp30_ = ((ValaCCodeBaseModule*) self)->cfile;
3623 		_tmp31_ = function;
3624 		vala_ccode_file_add_function_declaration (_tmp30_, _tmp31_);
3625 		_tmp32_ = function;
3626 		vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp32_);
3627 		_tmp33_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3628 		_tmp34_ = _tmp33_;
3629 		_tmp35_ = vala_ccode_variable_declarator_new ("obj", NULL, NULL);
3630 		_tmp36_ = _tmp35_;
3631 		vala_ccode_function_add_declaration (_tmp34_, "GObject *", (ValaCCodeDeclarator*) _tmp36_, 0);
3632 		_vala_ccode_node_unref0 (_tmp36_);
3633 		_tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3634 		_tmp38_ = _tmp37_;
3635 		_tmp39_ = vala_ccode_variable_declarator_new ("parent_class", NULL, NULL);
3636 		_tmp40_ = _tmp39_;
3637 		vala_ccode_function_add_declaration (_tmp38_, "GObjectClass *", (ValaCCodeDeclarator*) _tmp40_, 0);
3638 		_vala_ccode_node_unref0 (_tmp40_);
3639 		_tmp41_ = cl;
3640 		_tmp42_ = vala_class_get_is_singleton (_tmp41_);
3641 		_tmp43_ = _tmp42_;
3642 		if (_tmp43_) {
3643 			gchar* singleton_ref_name = NULL;
3644 			ValaClass* _tmp44_;
3645 			gchar* _tmp45_;
3646 			gchar* _tmp46_;
3647 			gchar* _tmp47_;
3648 			gchar* _tmp48_;
3649 			gchar* singleton_lock_name = NULL;
3650 			ValaClass* _tmp49_;
3651 			gchar* _tmp50_;
3652 			gchar* _tmp51_;
3653 			gchar* _tmp52_;
3654 			gchar* _tmp53_;
3655 			gchar* singleton_once_name = NULL;
3656 			ValaClass* _tmp54_;
3657 			gchar* _tmp55_;
3658 			gchar* _tmp56_;
3659 			gchar* _tmp57_;
3660 			gchar* _tmp58_;
3661 			ValaCCodeDeclaration* singleton_ref = NULL;
3662 			ValaCCodeDeclaration* _tmp59_;
3663 			ValaCCodeDeclaration* _tmp60_;
3664 			const gchar* _tmp61_;
3665 			ValaCCodeConstant* _tmp62_;
3666 			ValaCCodeConstant* _tmp63_;
3667 			ValaCCodeVariableDeclarator* _tmp64_;
3668 			ValaCCodeVariableDeclarator* _tmp65_;
3669 			ValaCCodeDeclaration* _tmp66_;
3670 			ValaCCodeFunction* _tmp67_;
3671 			ValaCCodeFunction* _tmp68_;
3672 			ValaCCodeDeclaration* _tmp69_;
3673 			ValaCCodeDeclaration* mutex_lock = NULL;
3674 			ValaCCodeDeclaration* _tmp70_;
3675 			ValaCCodeDeclaration* _tmp71_;
3676 			const gchar* _tmp72_;
3677 			ValaCCodeVariableDeclarator* _tmp73_;
3678 			ValaCCodeVariableDeclarator* _tmp74_;
3679 			ValaCCodeDeclaration* _tmp75_;
3680 			ValaCCodeFunction* _tmp76_;
3681 			ValaCCodeFunction* _tmp77_;
3682 			ValaCCodeDeclaration* _tmp78_;
3683 			ValaCCodeDeclaration* once_lock = NULL;
3684 			ValaCCodeDeclaration* _tmp79_;
3685 			ValaCCodeDeclaration* _tmp80_;
3686 			const gchar* _tmp81_;
3687 			ValaCCodeConstant* _tmp82_;
3688 			ValaCCodeConstant* _tmp83_;
3689 			ValaCCodeVariableDeclarator* _tmp84_;
3690 			ValaCCodeVariableDeclarator* _tmp85_;
3691 			ValaCCodeDeclaration* _tmp86_;
3692 			ValaCCodeFunction* _tmp87_;
3693 			ValaCCodeFunction* _tmp88_;
3694 			ValaCCodeDeclaration* _tmp89_;
3695 			ValaCCodeFunctionCall* once_init = NULL;
3696 			ValaCCodeIdentifier* _tmp90_;
3697 			ValaCCodeIdentifier* _tmp91_;
3698 			ValaCCodeFunctionCall* _tmp92_;
3699 			ValaCCodeFunctionCall* _tmp93_;
3700 			ValaCCodeFunctionCall* _tmp94_;
3701 			const gchar* _tmp95_;
3702 			ValaCCodeIdentifier* _tmp96_;
3703 			ValaCCodeIdentifier* _tmp97_;
3704 			ValaCCodeUnaryExpression* _tmp98_;
3705 			ValaCCodeUnaryExpression* _tmp99_;
3706 			ValaCCodeBlock* once_block = NULL;
3707 			ValaCCodeBlock* _tmp100_;
3708 			ValaCCodeFunctionCall* singleton_mutex_init = NULL;
3709 			ValaCCodeIdentifier* _tmp101_;
3710 			ValaCCodeIdentifier* _tmp102_;
3711 			ValaCCodeFunctionCall* _tmp103_;
3712 			ValaCCodeFunctionCall* _tmp104_;
3713 			ValaCCodeFunctionCall* _tmp105_;
3714 			const gchar* _tmp106_;
3715 			ValaCCodeIdentifier* _tmp107_;
3716 			ValaCCodeIdentifier* _tmp108_;
3717 			ValaCCodeUnaryExpression* _tmp109_;
3718 			ValaCCodeUnaryExpression* _tmp110_;
3719 			ValaCCodeBlock* _tmp111_;
3720 			ValaCCodeFunctionCall* _tmp112_;
3721 			ValaCCodeExpressionStatement* _tmp113_;
3722 			ValaCCodeExpressionStatement* _tmp114_;
3723 			ValaCCodeFunctionCall* once_leave = NULL;
3724 			ValaCCodeIdentifier* _tmp115_;
3725 			ValaCCodeIdentifier* _tmp116_;
3726 			ValaCCodeFunctionCall* _tmp117_;
3727 			ValaCCodeFunctionCall* _tmp118_;
3728 			ValaCCodeFunctionCall* _tmp119_;
3729 			const gchar* _tmp120_;
3730 			ValaCCodeIdentifier* _tmp121_;
3731 			ValaCCodeIdentifier* _tmp122_;
3732 			ValaCCodeUnaryExpression* _tmp123_;
3733 			ValaCCodeUnaryExpression* _tmp124_;
3734 			ValaCCodeFunctionCall* _tmp125_;
3735 			ValaCCodeConstant* _tmp126_;
3736 			ValaCCodeConstant* _tmp127_;
3737 			ValaCCodeBlock* _tmp128_;
3738 			ValaCCodeFunctionCall* _tmp129_;
3739 			ValaCCodeExpressionStatement* _tmp130_;
3740 			ValaCCodeExpressionStatement* _tmp131_;
3741 			ValaCCodeIfStatement* if_once = NULL;
3742 			ValaCCodeFunctionCall* _tmp132_;
3743 			ValaCCodeBlock* _tmp133_;
3744 			ValaCCodeIfStatement* _tmp134_;
3745 			ValaCCodeFunction* _tmp135_;
3746 			ValaCCodeFunction* _tmp136_;
3747 			ValaCCodeIfStatement* _tmp137_;
3748 			ValaCCodeFunctionCall* singleton_mutex_lock = NULL;
3749 			ValaCCodeIdentifier* _tmp138_;
3750 			ValaCCodeIdentifier* _tmp139_;
3751 			ValaCCodeFunctionCall* _tmp140_;
3752 			ValaCCodeFunctionCall* _tmp141_;
3753 			ValaCCodeFunctionCall* _tmp142_;
3754 			const gchar* _tmp143_;
3755 			ValaCCodeIdentifier* _tmp144_;
3756 			ValaCCodeIdentifier* _tmp145_;
3757 			ValaCCodeUnaryExpression* _tmp146_;
3758 			ValaCCodeUnaryExpression* _tmp147_;
3759 			ValaCCodeFunction* _tmp148_;
3760 			ValaCCodeFunction* _tmp149_;
3761 			ValaCCodeFunctionCall* _tmp150_;
3762 			ValaCCodeExpressionStatement* _tmp151_;
3763 			ValaCCodeExpressionStatement* _tmp152_;
3764 			ValaCCodeBinaryExpression* check_existance = NULL;
3765 			const gchar* _tmp153_;
3766 			ValaCCodeIdentifier* _tmp154_;
3767 			ValaCCodeIdentifier* _tmp155_;
3768 			ValaCCodeConstant* _tmp156_;
3769 			ValaCCodeConstant* _tmp157_;
3770 			ValaCCodeBinaryExpression* _tmp158_;
3771 			ValaCCodeBinaryExpression* _tmp159_;
3772 			ValaCCodeBlock* return_singleton = NULL;
3773 			ValaCCodeBlock* _tmp160_;
3774 			ValaCCodeFunctionCall* ref_object = NULL;
3775 			ValaCCodeIdentifier* _tmp161_;
3776 			ValaCCodeIdentifier* _tmp162_;
3777 			ValaCCodeFunctionCall* _tmp163_;
3778 			ValaCCodeFunctionCall* _tmp164_;
3779 			ValaCCodeFunctionCall* _tmp165_;
3780 			const gchar* _tmp166_;
3781 			ValaCCodeIdentifier* _tmp167_;
3782 			ValaCCodeIdentifier* _tmp168_;
3783 			ValaCCodeBlock* _tmp169_;
3784 			ValaCCodeFunctionCall* _tmp170_;
3785 			ValaCCodeExpressionStatement* _tmp171_;
3786 			ValaCCodeExpressionStatement* _tmp172_;
3787 			ValaCCodeFunctionCall* singleton_mutex_unlock = NULL;
3788 			ValaCCodeIdentifier* _tmp173_;
3789 			ValaCCodeIdentifier* _tmp174_;
3790 			ValaCCodeFunctionCall* _tmp175_;
3791 			ValaCCodeFunctionCall* _tmp176_;
3792 			ValaCCodeFunctionCall* _tmp177_;
3793 			const gchar* _tmp178_;
3794 			ValaCCodeIdentifier* _tmp179_;
3795 			ValaCCodeIdentifier* _tmp180_;
3796 			ValaCCodeUnaryExpression* _tmp181_;
3797 			ValaCCodeUnaryExpression* _tmp182_;
3798 			ValaCCodeBlock* _tmp183_;
3799 			ValaCCodeFunctionCall* _tmp184_;
3800 			ValaCCodeExpressionStatement* _tmp185_;
3801 			ValaCCodeExpressionStatement* _tmp186_;
3802 			ValaCCodeBlock* _tmp187_;
3803 			const gchar* _tmp188_;
3804 			ValaCCodeIdentifier* _tmp189_;
3805 			ValaCCodeIdentifier* _tmp190_;
3806 			ValaCCodeReturnStatement* _tmp191_;
3807 			ValaCCodeReturnStatement* _tmp192_;
3808 			ValaCCodeIfStatement* if_singleton_alive = NULL;
3809 			ValaCCodeBinaryExpression* _tmp193_;
3810 			ValaCCodeBlock* _tmp194_;
3811 			ValaCCodeIfStatement* _tmp195_;
3812 			ValaCCodeFunction* _tmp196_;
3813 			ValaCCodeFunction* _tmp197_;
3814 			ValaCCodeIfStatement* _tmp198_;
3815 			_tmp44_ = cl;
3816 			_tmp45_ = vala_get_ccode_name ((ValaCodeNode*) _tmp44_);
3817 			_tmp46_ = _tmp45_;
3818 			_tmp47_ = g_strdup_printf ("%s_singleton__ref", _tmp46_);
3819 			_tmp48_ = _tmp47_;
3820 			_g_free0 (_tmp46_);
3821 			singleton_ref_name = _tmp48_;
3822 			_tmp49_ = cl;
3823 			_tmp50_ = vala_get_ccode_name ((ValaCodeNode*) _tmp49_);
3824 			_tmp51_ = _tmp50_;
3825 			_tmp52_ = g_strdup_printf ("%s_singleton__lock", _tmp51_);
3826 			_tmp53_ = _tmp52_;
3827 			_g_free0 (_tmp51_);
3828 			singleton_lock_name = _tmp53_;
3829 			_tmp54_ = cl;
3830 			_tmp55_ = vala_get_ccode_name ((ValaCodeNode*) _tmp54_);
3831 			_tmp56_ = _tmp55_;
3832 			_tmp57_ = g_strdup_printf ("%s_singleton__volatile", _tmp56_);
3833 			_tmp58_ = _tmp57_;
3834 			_g_free0 (_tmp56_);
3835 			singleton_once_name = _tmp58_;
3836 			_tmp59_ = vala_ccode_declaration_new ("GObject *");
3837 			singleton_ref = _tmp59_;
3838 			_tmp60_ = singleton_ref;
3839 			_tmp61_ = singleton_ref_name;
3840 			_tmp62_ = vala_ccode_constant_new ("NULL");
3841 			_tmp63_ = _tmp62_;
3842 			_tmp64_ = vala_ccode_variable_declarator_new (_tmp61_, (ValaCCodeExpression*) _tmp63_, NULL);
3843 			_tmp65_ = _tmp64_;
3844 			vala_ccode_declaration_add_declarator (_tmp60_, (ValaCCodeDeclarator*) _tmp65_);
3845 			_vala_ccode_node_unref0 (_tmp65_);
3846 			_vala_ccode_node_unref0 (_tmp63_);
3847 			_tmp66_ = singleton_ref;
3848 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp66_, VALA_CCODE_MODIFIERS_STATIC);
3849 			_tmp67_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3850 			_tmp68_ = _tmp67_;
3851 			_tmp69_ = singleton_ref;
3852 			vala_ccode_function_add_statement (_tmp68_, (ValaCCodeNode*) _tmp69_);
3853 			_tmp70_ = vala_ccode_declaration_new ("GMutex");
3854 			mutex_lock = _tmp70_;
3855 			_tmp71_ = mutex_lock;
3856 			_tmp72_ = singleton_lock_name;
3857 			_tmp73_ = vala_ccode_variable_declarator_new (_tmp72_, NULL, NULL);
3858 			_tmp74_ = _tmp73_;
3859 			vala_ccode_declaration_add_declarator (_tmp71_, (ValaCCodeDeclarator*) _tmp74_);
3860 			_vala_ccode_node_unref0 (_tmp74_);
3861 			_tmp75_ = mutex_lock;
3862 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp75_, VALA_CCODE_MODIFIERS_STATIC);
3863 			_tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3864 			_tmp77_ = _tmp76_;
3865 			_tmp78_ = mutex_lock;
3866 			vala_ccode_function_add_statement (_tmp77_, (ValaCCodeNode*) _tmp78_);
3867 			_tmp79_ = vala_ccode_declaration_new ("gsize");
3868 			once_lock = _tmp79_;
3869 			_tmp80_ = once_lock;
3870 			_tmp81_ = singleton_once_name;
3871 			_tmp82_ = vala_ccode_constant_new ("0");
3872 			_tmp83_ = _tmp82_;
3873 			_tmp84_ = vala_ccode_variable_declarator_new (_tmp81_, (ValaCCodeExpression*) _tmp83_, NULL);
3874 			_tmp85_ = _tmp84_;
3875 			vala_ccode_declaration_add_declarator (_tmp80_, (ValaCCodeDeclarator*) _tmp85_);
3876 			_vala_ccode_node_unref0 (_tmp85_);
3877 			_vala_ccode_node_unref0 (_tmp83_);
3878 			_tmp86_ = once_lock;
3879 			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp86_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_VOLATILE);
3880 			_tmp87_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3881 			_tmp88_ = _tmp87_;
3882 			_tmp89_ = once_lock;
3883 			vala_ccode_function_add_statement (_tmp88_, (ValaCCodeNode*) _tmp89_);
3884 			_tmp90_ = vala_ccode_identifier_new ("g_once_init_enter");
3885 			_tmp91_ = _tmp90_;
3886 			_tmp92_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp91_);
3887 			_tmp93_ = _tmp92_;
3888 			_vala_ccode_node_unref0 (_tmp91_);
3889 			once_init = _tmp93_;
3890 			_tmp94_ = once_init;
3891 			_tmp95_ = singleton_once_name;
3892 			_tmp96_ = vala_ccode_identifier_new (_tmp95_);
3893 			_tmp97_ = _tmp96_;
3894 			_tmp98_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp97_);
3895 			_tmp99_ = _tmp98_;
3896 			vala_ccode_function_call_add_argument (_tmp94_, (ValaCCodeExpression*) _tmp99_);
3897 			_vala_ccode_node_unref0 (_tmp99_);
3898 			_vala_ccode_node_unref0 (_tmp97_);
3899 			_tmp100_ = vala_ccode_block_new ();
3900 			once_block = _tmp100_;
3901 			_tmp101_ = vala_ccode_identifier_new ("g_mutex_init");
3902 			_tmp102_ = _tmp101_;
3903 			_tmp103_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp102_);
3904 			_tmp104_ = _tmp103_;
3905 			_vala_ccode_node_unref0 (_tmp102_);
3906 			singleton_mutex_init = _tmp104_;
3907 			_tmp105_ = singleton_mutex_init;
3908 			_tmp106_ = singleton_lock_name;
3909 			_tmp107_ = vala_ccode_identifier_new (_tmp106_);
3910 			_tmp108_ = _tmp107_;
3911 			_tmp109_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp108_);
3912 			_tmp110_ = _tmp109_;
3913 			vala_ccode_function_call_add_argument (_tmp105_, (ValaCCodeExpression*) _tmp110_);
3914 			_vala_ccode_node_unref0 (_tmp110_);
3915 			_vala_ccode_node_unref0 (_tmp108_);
3916 			_tmp111_ = once_block;
3917 			_tmp112_ = singleton_mutex_init;
3918 			_tmp113_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp112_);
3919 			_tmp114_ = _tmp113_;
3920 			vala_ccode_block_add_statement (_tmp111_, (ValaCCodeNode*) _tmp114_);
3921 			_vala_ccode_node_unref0 (_tmp114_);
3922 			_tmp115_ = vala_ccode_identifier_new ("g_once_init_leave");
3923 			_tmp116_ = _tmp115_;
3924 			_tmp117_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp116_);
3925 			_tmp118_ = _tmp117_;
3926 			_vala_ccode_node_unref0 (_tmp116_);
3927 			once_leave = _tmp118_;
3928 			_tmp119_ = once_leave;
3929 			_tmp120_ = singleton_once_name;
3930 			_tmp121_ = vala_ccode_identifier_new (_tmp120_);
3931 			_tmp122_ = _tmp121_;
3932 			_tmp123_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp122_);
3933 			_tmp124_ = _tmp123_;
3934 			vala_ccode_function_call_add_argument (_tmp119_, (ValaCCodeExpression*) _tmp124_);
3935 			_vala_ccode_node_unref0 (_tmp124_);
3936 			_vala_ccode_node_unref0 (_tmp122_);
3937 			_tmp125_ = once_leave;
3938 			_tmp126_ = vala_ccode_constant_new ("42");
3939 			_tmp127_ = _tmp126_;
3940 			vala_ccode_function_call_add_argument (_tmp125_, (ValaCCodeExpression*) _tmp127_);
3941 			_vala_ccode_node_unref0 (_tmp127_);
3942 			_tmp128_ = once_block;
3943 			_tmp129_ = once_leave;
3944 			_tmp130_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp129_);
3945 			_tmp131_ = _tmp130_;
3946 			vala_ccode_block_add_statement (_tmp128_, (ValaCCodeNode*) _tmp131_);
3947 			_vala_ccode_node_unref0 (_tmp131_);
3948 			_tmp132_ = once_init;
3949 			_tmp133_ = once_block;
3950 			_tmp134_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp132_, (ValaCCodeStatement*) _tmp133_, NULL);
3951 			if_once = _tmp134_;
3952 			_tmp135_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3953 			_tmp136_ = _tmp135_;
3954 			_tmp137_ = if_once;
3955 			vala_ccode_function_add_statement (_tmp136_, (ValaCCodeNode*) _tmp137_);
3956 			_tmp138_ = vala_ccode_identifier_new ("g_mutex_lock");
3957 			_tmp139_ = _tmp138_;
3958 			_tmp140_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp139_);
3959 			_tmp141_ = _tmp140_;
3960 			_vala_ccode_node_unref0 (_tmp139_);
3961 			singleton_mutex_lock = _tmp141_;
3962 			_tmp142_ = singleton_mutex_lock;
3963 			_tmp143_ = singleton_lock_name;
3964 			_tmp144_ = vala_ccode_identifier_new (_tmp143_);
3965 			_tmp145_ = _tmp144_;
3966 			_tmp146_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp145_);
3967 			_tmp147_ = _tmp146_;
3968 			vala_ccode_function_call_add_argument (_tmp142_, (ValaCCodeExpression*) _tmp147_);
3969 			_vala_ccode_node_unref0 (_tmp147_);
3970 			_vala_ccode_node_unref0 (_tmp145_);
3971 			_tmp148_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3972 			_tmp149_ = _tmp148_;
3973 			_tmp150_ = singleton_mutex_lock;
3974 			_tmp151_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp150_);
3975 			_tmp152_ = _tmp151_;
3976 			vala_ccode_function_add_statement (_tmp149_, (ValaCCodeNode*) _tmp152_);
3977 			_vala_ccode_node_unref0 (_tmp152_);
3978 			_tmp153_ = singleton_ref_name;
3979 			_tmp154_ = vala_ccode_identifier_new (_tmp153_);
3980 			_tmp155_ = _tmp154_;
3981 			_tmp156_ = vala_ccode_constant_new ("NULL");
3982 			_tmp157_ = _tmp156_;
3983 			_tmp158_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, (ValaCCodeExpression*) _tmp155_, (ValaCCodeExpression*) _tmp157_);
3984 			_tmp159_ = _tmp158_;
3985 			_vala_ccode_node_unref0 (_tmp157_);
3986 			_vala_ccode_node_unref0 (_tmp155_);
3987 			check_existance = _tmp159_;
3988 			_tmp160_ = vala_ccode_block_new ();
3989 			return_singleton = _tmp160_;
3990 			_tmp161_ = vala_ccode_identifier_new ("g_object_ref");
3991 			_tmp162_ = _tmp161_;
3992 			_tmp163_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp162_);
3993 			_tmp164_ = _tmp163_;
3994 			_vala_ccode_node_unref0 (_tmp162_);
3995 			ref_object = _tmp164_;
3996 			_tmp165_ = ref_object;
3997 			_tmp166_ = singleton_ref_name;
3998 			_tmp167_ = vala_ccode_identifier_new (_tmp166_);
3999 			_tmp168_ = _tmp167_;
4000 			vala_ccode_function_call_add_argument (_tmp165_, (ValaCCodeExpression*) _tmp168_);
4001 			_vala_ccode_node_unref0 (_tmp168_);
4002 			_tmp169_ = return_singleton;
4003 			_tmp170_ = ref_object;
4004 			_tmp171_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp170_);
4005 			_tmp172_ = _tmp171_;
4006 			vala_ccode_block_add_statement (_tmp169_, (ValaCCodeNode*) _tmp172_);
4007 			_vala_ccode_node_unref0 (_tmp172_);
4008 			_tmp173_ = vala_ccode_identifier_new ("g_mutex_unlock");
4009 			_tmp174_ = _tmp173_;
4010 			_tmp175_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp174_);
4011 			_tmp176_ = _tmp175_;
4012 			_vala_ccode_node_unref0 (_tmp174_);
4013 			singleton_mutex_unlock = _tmp176_;
4014 			_tmp177_ = singleton_mutex_unlock;
4015 			_tmp178_ = singleton_lock_name;
4016 			_tmp179_ = vala_ccode_identifier_new (_tmp178_);
4017 			_tmp180_ = _tmp179_;
4018 			_tmp181_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp180_);
4019 			_tmp182_ = _tmp181_;
4020 			vala_ccode_function_call_add_argument (_tmp177_, (ValaCCodeExpression*) _tmp182_);
4021 			_vala_ccode_node_unref0 (_tmp182_);
4022 			_vala_ccode_node_unref0 (_tmp180_);
4023 			_tmp183_ = return_singleton;
4024 			_tmp184_ = singleton_mutex_unlock;
4025 			_tmp185_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp184_);
4026 			_tmp186_ = _tmp185_;
4027 			vala_ccode_block_add_statement (_tmp183_, (ValaCCodeNode*) _tmp186_);
4028 			_vala_ccode_node_unref0 (_tmp186_);
4029 			_tmp187_ = return_singleton;
4030 			_tmp188_ = singleton_ref_name;
4031 			_tmp189_ = vala_ccode_identifier_new (_tmp188_);
4032 			_tmp190_ = _tmp189_;
4033 			_tmp191_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp190_);
4034 			_tmp192_ = _tmp191_;
4035 			vala_ccode_block_add_statement (_tmp187_, (ValaCCodeNode*) _tmp192_);
4036 			_vala_ccode_node_unref0 (_tmp192_);
4037 			_vala_ccode_node_unref0 (_tmp190_);
4038 			_tmp193_ = check_existance;
4039 			_tmp194_ = return_singleton;
4040 			_tmp195_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp193_, (ValaCCodeStatement*) _tmp194_, NULL);
4041 			if_singleton_alive = _tmp195_;
4042 			_tmp196_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4043 			_tmp197_ = _tmp196_;
4044 			_tmp198_ = if_singleton_alive;
4045 			vala_ccode_function_add_statement (_tmp197_, (ValaCCodeNode*) _tmp198_);
4046 			_vala_ccode_node_unref0 (if_singleton_alive);
4047 			_vala_ccode_node_unref0 (singleton_mutex_unlock);
4048 			_vala_ccode_node_unref0 (ref_object);
4049 			_vala_ccode_node_unref0 (return_singleton);
4050 			_vala_ccode_node_unref0 (check_existance);
4051 			_vala_ccode_node_unref0 (singleton_mutex_lock);
4052 			_vala_ccode_node_unref0 (if_once);
4053 			_vala_ccode_node_unref0 (once_leave);
4054 			_vala_ccode_node_unref0 (singleton_mutex_init);
4055 			_vala_ccode_node_unref0 (once_block);
4056 			_vala_ccode_node_unref0 (once_init);
4057 			_vala_ccode_node_unref0 (once_lock);
4058 			_vala_ccode_node_unref0 (mutex_lock);
4059 			_vala_ccode_node_unref0 (singleton_ref);
4060 			_g_free0 (singleton_once_name);
4061 			_g_free0 (singleton_lock_name);
4062 			_g_free0 (singleton_ref_name);
4063 		}
4064 		_tmp199_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
4065 		_tmp200_ = _tmp199_;
4066 		_tmp201_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp200_);
4067 		_tmp202_ = _tmp201_;
4068 		_vala_ccode_node_unref0 (_tmp200_);
4069 		ccast = _tmp202_;
4070 		_tmp203_ = ccast;
4071 		_tmp204_ = cl;
4072 		_tmp205_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp204_, NULL);
4073 		_tmp206_ = _tmp205_;
4074 		_tmp207_ = g_strdup_printf ("%s_parent_class", _tmp206_);
4075 		_tmp208_ = _tmp207_;
4076 		_tmp209_ = vala_ccode_identifier_new (_tmp208_);
4077 		_tmp210_ = _tmp209_;
4078 		vala_ccode_function_call_add_argument (_tmp203_, (ValaCCodeExpression*) _tmp210_);
4079 		_vala_ccode_node_unref0 (_tmp210_);
4080 		_g_free0 (_tmp208_);
4081 		_g_free0 (_tmp206_);
4082 		_tmp211_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4083 		_tmp212_ = _tmp211_;
4084 		_tmp213_ = vala_ccode_identifier_new ("parent_class");
4085 		_tmp214_ = _tmp213_;
4086 		_tmp215_ = ccast;
4087 		vala_ccode_function_add_assignment (_tmp212_, (ValaCCodeExpression*) _tmp214_, (ValaCCodeExpression*) _tmp215_);
4088 		_vala_ccode_node_unref0 (_tmp214_);
4089 		_tmp216_ = vala_ccode_identifier_new ("parent_class");
4090 		_tmp217_ = _tmp216_;
4091 		_tmp218_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp217_, "constructor");
4092 		_tmp219_ = _tmp218_;
4093 		_tmp220_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp219_);
4094 		_tmp221_ = _tmp220_;
4095 		_vala_ccode_node_unref0 (_tmp219_);
4096 		_vala_ccode_node_unref0 (_tmp217_);
4097 		ccall = _tmp221_;
4098 		_tmp222_ = ccall;
4099 		_tmp223_ = vala_ccode_identifier_new ("type");
4100 		_tmp224_ = _tmp223_;
4101 		vala_ccode_function_call_add_argument (_tmp222_, (ValaCCodeExpression*) _tmp224_);
4102 		_vala_ccode_node_unref0 (_tmp224_);
4103 		_tmp225_ = ccall;
4104 		_tmp226_ = vala_ccode_identifier_new ("n_construct_properties");
4105 		_tmp227_ = _tmp226_;
4106 		vala_ccode_function_call_add_argument (_tmp225_, (ValaCCodeExpression*) _tmp227_);
4107 		_vala_ccode_node_unref0 (_tmp227_);
4108 		_tmp228_ = ccall;
4109 		_tmp229_ = vala_ccode_identifier_new ("construct_properties");
4110 		_tmp230_ = _tmp229_;
4111 		vala_ccode_function_call_add_argument (_tmp228_, (ValaCCodeExpression*) _tmp230_);
4112 		_vala_ccode_node_unref0 (_tmp230_);
4113 		_tmp231_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4114 		_tmp232_ = _tmp231_;
4115 		_tmp233_ = vala_ccode_identifier_new ("obj");
4116 		_tmp234_ = _tmp233_;
4117 		_tmp235_ = ccall;
4118 		vala_ccode_function_add_assignment (_tmp232_, (ValaCCodeExpression*) _tmp234_, (ValaCCodeExpression*) _tmp235_);
4119 		_vala_ccode_node_unref0 (_tmp234_);
4120 		_tmp236_ = vala_ccode_identifier_new ("obj");
4121 		_tmp237_ = _tmp236_;
4122 		_tmp238_ = cl;
4123 		_tmp239_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp237_, (ValaTypeSymbol*) _tmp238_);
4124 		_vala_ccode_node_unref0 (ccall);
4125 		ccall = _tmp239_;
4126 		_vala_ccode_node_unref0 (_tmp237_);
4127 		_tmp240_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4128 		_tmp241_ = _tmp240_;
4129 		_tmp242_ = cl;
4130 		_tmp243_ = vala_get_ccode_name ((ValaCodeNode*) _tmp242_);
4131 		_tmp244_ = _tmp243_;
4132 		_tmp245_ = g_strdup_printf ("%s *", _tmp244_);
4133 		_tmp246_ = _tmp245_;
4134 		_tmp247_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
4135 		_tmp248_ = _tmp247_;
4136 		vala_ccode_function_add_declaration (_tmp241_, _tmp246_, (ValaCCodeDeclarator*) _tmp248_, 0);
4137 		_vala_ccode_node_unref0 (_tmp248_);
4138 		_g_free0 (_tmp246_);
4139 		_g_free0 (_tmp244_);
4140 		_tmp249_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4141 		_tmp250_ = _tmp249_;
4142 		_tmp251_ = vala_ccode_identifier_new ("self");
4143 		_tmp252_ = _tmp251_;
4144 		_tmp253_ = ccall;
4145 		vala_ccode_function_add_assignment (_tmp250_, (ValaCCodeExpression*) _tmp252_, (ValaCCodeExpression*) _tmp253_);
4146 		_vala_ccode_node_unref0 (_tmp252_);
4147 		_tmp254_ = vala_subroutine_get_body ((ValaSubroutine*) c);
4148 		_tmp255_ = _tmp254_;
4149 		vala_code_node_emit ((ValaCodeNode*) _tmp255_, (ValaCodeGenerator*) self);
4150 		_tmp256_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
4151 		_tmp257_ = _tmp256_;
4152 		if (_tmp257_) {
4153 			ValaCCodeFunction* _tmp258_;
4154 			ValaCCodeFunction* _tmp259_;
4155 			gint _tmp260_;
4156 			gint _tmp261_;
4157 			gchar* _tmp262_;
4158 			gchar* _tmp263_;
4159 			ValaCCodeConstant* _tmp264_;
4160 			ValaCCodeConstant* _tmp265_;
4161 			ValaCCodeVariableDeclarator* _tmp266_;
4162 			ValaCCodeVariableDeclarator* _tmp267_;
4163 			_tmp258_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4164 			_tmp259_ = _tmp258_;
4165 			_tmp260_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
4166 			_tmp261_ = _tmp260_;
4167 			_tmp262_ = g_strdup_printf ("_inner_error%d_", _tmp261_);
4168 			_tmp263_ = _tmp262_;
4169 			_tmp264_ = vala_ccode_constant_new ("NULL");
4170 			_tmp265_ = _tmp264_;
4171 			_tmp266_ = vala_ccode_variable_declarator_new_zero (_tmp263_, (ValaCCodeExpression*) _tmp265_, NULL);
4172 			_tmp267_ = _tmp266_;
4173 			vala_ccode_function_add_declaration (_tmp259_, "GError*", (ValaCCodeDeclarator*) _tmp267_, 0);
4174 			_vala_ccode_node_unref0 (_tmp267_);
4175 			_vala_ccode_node_unref0 (_tmp265_);
4176 			_g_free0 (_tmp263_);
4177 		}
4178 		_tmp268_ = cl;
4179 		_tmp269_ = vala_class_get_is_singleton (_tmp268_);
4180 		_tmp270_ = _tmp269_;
4181 		if (_tmp270_) {
4182 			gchar* singleton_ref_name = NULL;
4183 			ValaClass* _tmp271_;
4184 			gchar* _tmp272_;
4185 			gchar* _tmp273_;
4186 			gchar* _tmp274_;
4187 			gchar* _tmp275_;
4188 			gchar* singleton_lock_name = NULL;
4189 			ValaClass* _tmp276_;
4190 			gchar* _tmp277_;
4191 			gchar* _tmp278_;
4192 			gchar* _tmp279_;
4193 			gchar* _tmp280_;
4194 			ValaCCodeFunction* _tmp281_;
4195 			ValaCCodeFunction* _tmp282_;
4196 			const gchar* _tmp283_;
4197 			ValaCCodeIdentifier* _tmp284_;
4198 			ValaCCodeIdentifier* _tmp285_;
4199 			ValaCCodeIdentifier* _tmp286_;
4200 			ValaCCodeIdentifier* _tmp287_;
4201 			ValaCCodeFunctionCall* set_weak_ref_to_volatile = NULL;
4202 			ValaCCodeIdentifier* _tmp288_;
4203 			ValaCCodeIdentifier* _tmp289_;
4204 			ValaCCodeFunctionCall* _tmp290_;
4205 			ValaCCodeFunctionCall* _tmp291_;
4206 			ValaCCodeFunctionCall* _tmp292_;
4207 			const gchar* _tmp293_;
4208 			ValaCCodeIdentifier* _tmp294_;
4209 			ValaCCodeIdentifier* _tmp295_;
4210 			ValaCCodeFunctionCall* _tmp296_;
4211 			const gchar* _tmp297_;
4212 			ValaCCodeIdentifier* _tmp298_;
4213 			ValaCCodeIdentifier* _tmp299_;
4214 			ValaCCodeUnaryExpression* _tmp300_;
4215 			ValaCCodeUnaryExpression* _tmp301_;
4216 			ValaCCodeCastExpression* _tmp302_;
4217 			ValaCCodeCastExpression* _tmp303_;
4218 			ValaCCodeFunction* _tmp304_;
4219 			ValaCCodeFunction* _tmp305_;
4220 			ValaCCodeFunctionCall* _tmp306_;
4221 			ValaCCodeExpressionStatement* _tmp307_;
4222 			ValaCCodeExpressionStatement* _tmp308_;
4223 			ValaCCodeFunctionCall* final_singleton_mutex_unlock = NULL;
4224 			ValaCCodeIdentifier* _tmp309_;
4225 			ValaCCodeIdentifier* _tmp310_;
4226 			ValaCCodeFunctionCall* _tmp311_;
4227 			ValaCCodeFunctionCall* _tmp312_;
4228 			ValaCCodeFunctionCall* _tmp313_;
4229 			const gchar* _tmp314_;
4230 			ValaCCodeIdentifier* _tmp315_;
4231 			ValaCCodeIdentifier* _tmp316_;
4232 			ValaCCodeUnaryExpression* _tmp317_;
4233 			ValaCCodeUnaryExpression* _tmp318_;
4234 			ValaCCodeFunction* _tmp319_;
4235 			ValaCCodeFunction* _tmp320_;
4236 			ValaCCodeFunctionCall* _tmp321_;
4237 			ValaCCodeExpressionStatement* _tmp322_;
4238 			ValaCCodeExpressionStatement* _tmp323_;
4239 			_tmp271_ = cl;
4240 			_tmp272_ = vala_get_ccode_name ((ValaCodeNode*) _tmp271_);
4241 			_tmp273_ = _tmp272_;
4242 			_tmp274_ = g_strdup_printf ("%s_singleton__ref", _tmp273_);
4243 			_tmp275_ = _tmp274_;
4244 			_g_free0 (_tmp273_);
4245 			singleton_ref_name = _tmp275_;
4246 			_tmp276_ = cl;
4247 			_tmp277_ = vala_get_ccode_name ((ValaCodeNode*) _tmp276_);
4248 			_tmp278_ = _tmp277_;
4249 			_tmp279_ = g_strdup_printf ("%s_singleton__lock", _tmp278_);
4250 			_tmp280_ = _tmp279_;
4251 			_g_free0 (_tmp278_);
4252 			singleton_lock_name = _tmp280_;
4253 			_tmp281_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4254 			_tmp282_ = _tmp281_;
4255 			_tmp283_ = singleton_ref_name;
4256 			_tmp284_ = vala_ccode_identifier_new (_tmp283_);
4257 			_tmp285_ = _tmp284_;
4258 			_tmp286_ = vala_ccode_identifier_new ("obj");
4259 			_tmp287_ = _tmp286_;
4260 			vala_ccode_function_add_assignment (_tmp282_, (ValaCCodeExpression*) _tmp285_, (ValaCCodeExpression*) _tmp287_);
4261 			_vala_ccode_node_unref0 (_tmp287_);
4262 			_vala_ccode_node_unref0 (_tmp285_);
4263 			_tmp288_ = vala_ccode_identifier_new ("g_object_add_weak_pointer");
4264 			_tmp289_ = _tmp288_;
4265 			_tmp290_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp289_);
4266 			_tmp291_ = _tmp290_;
4267 			_vala_ccode_node_unref0 (_tmp289_);
4268 			set_weak_ref_to_volatile = _tmp291_;
4269 			_tmp292_ = set_weak_ref_to_volatile;
4270 			_tmp293_ = singleton_ref_name;
4271 			_tmp294_ = vala_ccode_identifier_new (_tmp293_);
4272 			_tmp295_ = _tmp294_;
4273 			vala_ccode_function_call_add_argument (_tmp292_, (ValaCCodeExpression*) _tmp295_);
4274 			_vala_ccode_node_unref0 (_tmp295_);
4275 			_tmp296_ = set_weak_ref_to_volatile;
4276 			_tmp297_ = singleton_ref_name;
4277 			_tmp298_ = vala_ccode_identifier_new (_tmp297_);
4278 			_tmp299_ = _tmp298_;
4279 			_tmp300_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp299_);
4280 			_tmp301_ = _tmp300_;
4281 			_tmp302_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp301_, "gpointer");
4282 			_tmp303_ = _tmp302_;
4283 			vala_ccode_function_call_add_argument (_tmp296_, (ValaCCodeExpression*) _tmp303_);
4284 			_vala_ccode_node_unref0 (_tmp303_);
4285 			_vala_ccode_node_unref0 (_tmp301_);
4286 			_vala_ccode_node_unref0 (_tmp299_);
4287 			_tmp304_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4288 			_tmp305_ = _tmp304_;
4289 			_tmp306_ = set_weak_ref_to_volatile;
4290 			_tmp307_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp306_);
4291 			_tmp308_ = _tmp307_;
4292 			vala_ccode_function_add_statement (_tmp305_, (ValaCCodeNode*) _tmp308_);
4293 			_vala_ccode_node_unref0 (_tmp308_);
4294 			_tmp309_ = vala_ccode_identifier_new ("g_mutex_unlock");
4295 			_tmp310_ = _tmp309_;
4296 			_tmp311_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp310_);
4297 			_tmp312_ = _tmp311_;
4298 			_vala_ccode_node_unref0 (_tmp310_);
4299 			final_singleton_mutex_unlock = _tmp312_;
4300 			_tmp313_ = final_singleton_mutex_unlock;
4301 			_tmp314_ = singleton_lock_name;
4302 			_tmp315_ = vala_ccode_identifier_new (_tmp314_);
4303 			_tmp316_ = _tmp315_;
4304 			_tmp317_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp316_);
4305 			_tmp318_ = _tmp317_;
4306 			vala_ccode_function_call_add_argument (_tmp313_, (ValaCCodeExpression*) _tmp318_);
4307 			_vala_ccode_node_unref0 (_tmp318_);
4308 			_vala_ccode_node_unref0 (_tmp316_);
4309 			_tmp319_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4310 			_tmp320_ = _tmp319_;
4311 			_tmp321_ = final_singleton_mutex_unlock;
4312 			_tmp322_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp321_);
4313 			_tmp323_ = _tmp322_;
4314 			vala_ccode_function_add_statement (_tmp320_, (ValaCCodeNode*) _tmp323_);
4315 			_vala_ccode_node_unref0 (_tmp323_);
4316 			_vala_ccode_node_unref0 (final_singleton_mutex_unlock);
4317 			_vala_ccode_node_unref0 (set_weak_ref_to_volatile);
4318 			_g_free0 (singleton_lock_name);
4319 			_g_free0 (singleton_ref_name);
4320 		}
4321 		_tmp324_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4322 		_tmp325_ = _tmp324_;
4323 		_tmp326_ = vala_ccode_identifier_new ("obj");
4324 		_tmp327_ = _tmp326_;
4325 		vala_ccode_function_add_return (_tmp325_, (ValaCCodeExpression*) _tmp327_);
4326 		_vala_ccode_node_unref0 (_tmp327_);
4327 		vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4328 		_tmp328_ = ((ValaCCodeBaseModule*) self)->cfile;
4329 		_tmp329_ = function;
4330 		vala_ccode_file_add_function (_tmp328_, _tmp329_);
4331 		vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
4332 		_vala_ccode_node_unref0 (ccall);
4333 		_vala_ccode_node_unref0 (ccast);
4334 		_vala_ccode_node_unref0 (function);
4335 	} else {
4336 		ValaMemberBinding _tmp330_;
4337 		ValaMemberBinding _tmp331_;
4338 		_tmp330_ = vala_constructor_get_binding (c);
4339 		_tmp331_ = _tmp330_;
4340 		if (_tmp331_ == VALA_MEMBER_BINDING_CLASS) {
4341 			ValaClass* _tmp332_;
4342 			gboolean _tmp333_;
4343 			gboolean _tmp334_;
4344 			ValaCCodeBaseModuleEmitContext* _tmp337_;
4345 			ValaBlock* _tmp338_;
4346 			ValaBlock* _tmp339_;
4347 			gboolean _tmp340_;
4348 			gboolean _tmp341_;
4349 			_tmp332_ = cl;
4350 			_tmp333_ = vala_class_get_is_compact (_tmp332_);
4351 			_tmp334_ = _tmp333_;
4352 			if (_tmp334_) {
4353 				ValaSourceReference* _tmp335_;
4354 				ValaSourceReference* _tmp336_;
4355 				_tmp335_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
4356 				_tmp336_ = _tmp335_;
4357 				vala_report_error (_tmp336_, "class constructors are not supported in compact classes");
4358 				vala_code_node_set_error ((ValaCodeNode*) c, TRUE);
4359 				_vala_code_node_unref0 (cl);
4360 				return;
4361 			}
4362 			_tmp337_ = ((ValaCCodeBaseModule*) self)->base_init_context;
4363 			vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp337_);
4364 			_tmp338_ = vala_subroutine_get_body ((ValaSubroutine*) c);
4365 			_tmp339_ = _tmp338_;
4366 			vala_code_node_emit ((ValaCodeNode*) _tmp339_, (ValaCodeGenerator*) self);
4367 			_tmp340_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
4368 			_tmp341_ = _tmp340_;
4369 			if (_tmp341_) {
4370 				ValaCCodeFunction* _tmp342_;
4371 				ValaCCodeFunction* _tmp343_;
4372 				gint _tmp344_;
4373 				gint _tmp345_;
4374 				gchar* _tmp346_;
4375 				gchar* _tmp347_;
4376 				ValaCCodeConstant* _tmp348_;
4377 				ValaCCodeConstant* _tmp349_;
4378 				ValaCCodeVariableDeclarator* _tmp350_;
4379 				ValaCCodeVariableDeclarator* _tmp351_;
4380 				_tmp342_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4381 				_tmp343_ = _tmp342_;
4382 				_tmp344_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
4383 				_tmp345_ = _tmp344_;
4384 				_tmp346_ = g_strdup_printf ("_inner_error%d_", _tmp345_);
4385 				_tmp347_ = _tmp346_;
4386 				_tmp348_ = vala_ccode_constant_new ("NULL");
4387 				_tmp349_ = _tmp348_;
4388 				_tmp350_ = vala_ccode_variable_declarator_new_zero (_tmp347_, (ValaCCodeExpression*) _tmp349_, NULL);
4389 				_tmp351_ = _tmp350_;
4390 				vala_ccode_function_add_declaration (_tmp343_, "GError*", (ValaCCodeDeclarator*) _tmp351_, 0);
4391 				_vala_ccode_node_unref0 (_tmp351_);
4392 				_vala_ccode_node_unref0 (_tmp349_);
4393 				_g_free0 (_tmp347_);
4394 			}
4395 			vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
4396 		} else {
4397 			ValaMemberBinding _tmp352_;
4398 			ValaMemberBinding _tmp353_;
4399 			_tmp352_ = vala_constructor_get_binding (c);
4400 			_tmp353_ = _tmp352_;
4401 			if (_tmp353_ == VALA_MEMBER_BINDING_STATIC) {
4402 				ValaClass* _tmp354_;
4403 				gboolean _tmp355_;
4404 				gboolean _tmp356_;
4405 				ValaCCodeBaseModuleEmitContext* _tmp359_;
4406 				ValaBlock* _tmp360_;
4407 				ValaBlock* _tmp361_;
4408 				gboolean _tmp362_;
4409 				gboolean _tmp363_;
4410 				_tmp354_ = cl;
4411 				_tmp355_ = vala_class_get_is_compact (_tmp354_);
4412 				_tmp356_ = _tmp355_;
4413 				if (_tmp356_) {
4414 					ValaSourceReference* _tmp357_;
4415 					ValaSourceReference* _tmp358_;
4416 					_tmp357_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
4417 					_tmp358_ = _tmp357_;
4418 					vala_report_error (_tmp358_, "static constructors are not supported in compact classes");
4419 					vala_code_node_set_error ((ValaCodeNode*) c, TRUE);
4420 					_vala_code_node_unref0 (cl);
4421 					return;
4422 				}
4423 				_tmp359_ = ((ValaCCodeBaseModule*) self)->class_init_context;
4424 				vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp359_);
4425 				_tmp360_ = vala_subroutine_get_body ((ValaSubroutine*) c);
4426 				_tmp361_ = _tmp360_;
4427 				vala_code_node_emit ((ValaCodeNode*) _tmp361_, (ValaCodeGenerator*) self);
4428 				_tmp362_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
4429 				_tmp363_ = _tmp362_;
4430 				if (_tmp363_) {
4431 					ValaCCodeFunction* _tmp364_;
4432 					ValaCCodeFunction* _tmp365_;
4433 					gint _tmp366_;
4434 					gint _tmp367_;
4435 					gchar* _tmp368_;
4436 					gchar* _tmp369_;
4437 					ValaCCodeConstant* _tmp370_;
4438 					ValaCCodeConstant* _tmp371_;
4439 					ValaCCodeVariableDeclarator* _tmp372_;
4440 					ValaCCodeVariableDeclarator* _tmp373_;
4441 					_tmp364_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4442 					_tmp365_ = _tmp364_;
4443 					_tmp366_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
4444 					_tmp367_ = _tmp366_;
4445 					_tmp368_ = g_strdup_printf ("_inner_error%d_", _tmp367_);
4446 					_tmp369_ = _tmp368_;
4447 					_tmp370_ = vala_ccode_constant_new ("NULL");
4448 					_tmp371_ = _tmp370_;
4449 					_tmp372_ = vala_ccode_variable_declarator_new_zero (_tmp369_, (ValaCCodeExpression*) _tmp371_, NULL);
4450 					_tmp373_ = _tmp372_;
4451 					vala_ccode_function_add_declaration (_tmp365_, "GError*", (ValaCCodeDeclarator*) _tmp373_, 0);
4452 					_vala_ccode_node_unref0 (_tmp373_);
4453 					_vala_ccode_node_unref0 (_tmp371_);
4454 					_g_free0 (_tmp369_);
4455 				}
4456 				vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
4457 			} else {
4458 				ValaSourceReference* _tmp374_;
4459 				ValaSourceReference* _tmp375_;
4460 				_tmp374_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
4461 				_tmp375_ = _tmp374_;
4462 				vala_report_error (_tmp375_, "internal error: constructors must have instance, class, or static bind" \
4463 "ing");
4464 			}
4465 		}
4466 	}
4467 	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
4468 	_vala_code_node_unref0 (cl);
4469 }
4470 
4471 static gchar*
vala_gobject_module_real_get_dynamic_property_getter_cname(ValaCCodeBaseModule * base,ValaDynamicProperty * prop)4472 vala_gobject_module_real_get_dynamic_property_getter_cname (ValaCCodeBaseModule* base,
4473                                                             ValaDynamicProperty* prop)
4474 {
4475 	ValaGObjectModule * self;
4476 	gboolean _tmp0_ = FALSE;
4477 	ValaDataType* _tmp1_;
4478 	ValaDataType* _tmp2_;
4479 	ValaTypeSymbol* _tmp3_;
4480 	ValaTypeSymbol* _tmp4_;
4481 	gchar* getter_cname = NULL;
4482 	const gchar* _tmp11_;
4483 	const gchar* _tmp12_;
4484 	gint _tmp13_;
4485 	gchar* _tmp14_;
4486 	ValaCCodeFunction* func = NULL;
4487 	const gchar* _tmp15_;
4488 	ValaDataType* _tmp16_;
4489 	ValaDataType* _tmp17_;
4490 	gchar* _tmp18_;
4491 	gchar* _tmp19_;
4492 	ValaCCodeFunction* _tmp20_;
4493 	ValaCCodeFunction* _tmp21_;
4494 	ValaCCodeFunction* _tmp22_;
4495 	ValaCCodeFunction* _tmp23_;
4496 	ValaCCodeModifiers _tmp24_;
4497 	ValaCCodeModifiers _tmp25_;
4498 	ValaCCodeFunction* _tmp26_;
4499 	ValaDataType* _tmp27_;
4500 	ValaDataType* _tmp28_;
4501 	gchar* _tmp29_;
4502 	gchar* _tmp30_;
4503 	ValaCCodeParameter* _tmp31_;
4504 	ValaCCodeParameter* _tmp32_;
4505 	ValaCCodeFunction* _tmp33_;
4506 	ValaCCodeFunction* _tmp34_;
4507 	ValaCCodeFunction* _tmp35_;
4508 	ValaDataType* _tmp36_;
4509 	ValaDataType* _tmp37_;
4510 	gchar* _tmp38_;
4511 	gchar* _tmp39_;
4512 	ValaCCodeVariableDeclarator* _tmp40_;
4513 	ValaCCodeVariableDeclarator* _tmp41_;
4514 	ValaCCodeFunctionCall* call = NULL;
4515 	ValaCCodeIdentifier* _tmp42_;
4516 	ValaCCodeIdentifier* _tmp43_;
4517 	ValaCCodeFunctionCall* _tmp44_;
4518 	ValaCCodeFunctionCall* _tmp45_;
4519 	ValaCCodeFunctionCall* _tmp46_;
4520 	ValaCCodeIdentifier* _tmp47_;
4521 	ValaCCodeIdentifier* _tmp48_;
4522 	ValaCCodeFunctionCall* _tmp49_;
4523 	ValaCCodeConstant* _tmp50_;
4524 	ValaCCodeConstant* _tmp51_;
4525 	ValaCCodeFunctionCall* _tmp52_;
4526 	ValaCCodeIdentifier* _tmp53_;
4527 	ValaCCodeIdentifier* _tmp54_;
4528 	ValaCCodeUnaryExpression* _tmp55_;
4529 	ValaCCodeUnaryExpression* _tmp56_;
4530 	ValaCCodeFunctionCall* _tmp57_;
4531 	ValaCCodeConstant* _tmp58_;
4532 	ValaCCodeConstant* _tmp59_;
4533 	ValaCCodeFunction* _tmp60_;
4534 	ValaCCodeFunction* _tmp61_;
4535 	ValaCCodeFunctionCall* _tmp62_;
4536 	ValaCCodeFunction* _tmp63_;
4537 	ValaCCodeFunction* _tmp64_;
4538 	ValaCCodeIdentifier* _tmp65_;
4539 	ValaCCodeIdentifier* _tmp66_;
4540 	ValaCCodeFile* _tmp67_;
4541 	ValaCCodeFunction* _tmp68_;
4542 	ValaCCodeFile* _tmp69_;
4543 	ValaCCodeFunction* _tmp70_;
4544 	gchar* result = NULL;
4545 	self = (ValaGObjectModule*) base;
4546 	g_return_val_if_fail (prop != NULL, NULL);
4547 	_tmp1_ = vala_dynamic_property_get_dynamic_type (prop);
4548 	_tmp2_ = _tmp1_;
4549 	_tmp3_ = vala_data_type_get_type_symbol (_tmp2_);
4550 	_tmp4_ = _tmp3_;
4551 	if (_tmp4_ == NULL) {
4552 		_tmp0_ = TRUE;
4553 	} else {
4554 		ValaDataType* _tmp5_;
4555 		ValaDataType* _tmp6_;
4556 		ValaTypeSymbol* _tmp7_;
4557 		ValaTypeSymbol* _tmp8_;
4558 		ValaTypeSymbol* _tmp9_;
4559 		_tmp5_ = vala_dynamic_property_get_dynamic_type (prop);
4560 		_tmp6_ = _tmp5_;
4561 		_tmp7_ = vala_data_type_get_type_symbol (_tmp6_);
4562 		_tmp8_ = _tmp7_;
4563 		_tmp9_ = ((ValaCCodeBaseModule*) self)->gobject_type;
4564 		_tmp0_ = !vala_typesymbol_is_subtype_of (_tmp8_, _tmp9_);
4565 	}
4566 	if (_tmp0_) {
4567 		gchar* _tmp10_;
4568 		_tmp10_ = VALA_CCODE_BASE_MODULE_CLASS (vala_gobject_module_parent_class)->get_dynamic_property_getter_cname ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), prop);
4569 		result = _tmp10_;
4570 		return result;
4571 	}
4572 	_tmp11_ = vala_symbol_get_name ((ValaSymbol*) prop);
4573 	_tmp12_ = _tmp11_;
4574 	_tmp13_ = self->priv->dynamic_property_id;
4575 	self->priv->dynamic_property_id = _tmp13_ + 1;
4576 	_tmp14_ = g_strdup_printf ("_dynamic_get_%s%d", _tmp12_, _tmp13_);
4577 	getter_cname = _tmp14_;
4578 	_tmp15_ = getter_cname;
4579 	_tmp16_ = vala_property_get_property_type ((ValaProperty*) prop);
4580 	_tmp17_ = _tmp16_;
4581 	_tmp18_ = vala_get_ccode_name ((ValaCodeNode*) _tmp17_);
4582 	_tmp19_ = _tmp18_;
4583 	_tmp20_ = vala_ccode_function_new (_tmp15_, _tmp19_);
4584 	_tmp21_ = _tmp20_;
4585 	_g_free0 (_tmp19_);
4586 	func = _tmp21_;
4587 	_tmp22_ = func;
4588 	_tmp23_ = func;
4589 	_tmp24_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp23_);
4590 	_tmp25_ = _tmp24_;
4591 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp23_, _tmp25_ | (VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_INLINE));
4592 	_tmp26_ = func;
4593 	_tmp27_ = vala_dynamic_property_get_dynamic_type (prop);
4594 	_tmp28_ = _tmp27_;
4595 	_tmp29_ = vala_get_ccode_name ((ValaCodeNode*) _tmp28_);
4596 	_tmp30_ = _tmp29_;
4597 	_tmp31_ = vala_ccode_parameter_new ("obj", _tmp30_);
4598 	_tmp32_ = _tmp31_;
4599 	vala_ccode_function_add_parameter (_tmp26_, _tmp32_);
4600 	_vala_ccode_node_unref0 (_tmp32_);
4601 	_g_free0 (_tmp30_);
4602 	_tmp33_ = func;
4603 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp33_);
4604 	_tmp34_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4605 	_tmp35_ = _tmp34_;
4606 	_tmp36_ = vala_property_get_property_type ((ValaProperty*) prop);
4607 	_tmp37_ = _tmp36_;
4608 	_tmp38_ = vala_get_ccode_name ((ValaCodeNode*) _tmp37_);
4609 	_tmp39_ = _tmp38_;
4610 	_tmp40_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
4611 	_tmp41_ = _tmp40_;
4612 	vala_ccode_function_add_declaration (_tmp35_, _tmp39_, (ValaCCodeDeclarator*) _tmp41_, 0);
4613 	_vala_ccode_node_unref0 (_tmp41_);
4614 	_g_free0 (_tmp39_);
4615 	_tmp42_ = vala_ccode_identifier_new ("g_object_get");
4616 	_tmp43_ = _tmp42_;
4617 	_tmp44_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp43_);
4618 	_tmp45_ = _tmp44_;
4619 	_vala_ccode_node_unref0 (_tmp43_);
4620 	call = _tmp45_;
4621 	_tmp46_ = call;
4622 	_tmp47_ = vala_ccode_identifier_new ("obj");
4623 	_tmp48_ = _tmp47_;
4624 	vala_ccode_function_call_add_argument (_tmp46_, (ValaCCodeExpression*) _tmp48_);
4625 	_vala_ccode_node_unref0 (_tmp48_);
4626 	_tmp49_ = call;
4627 	_tmp50_ = vala_ccode_base_module_get_property_canonical_cconstant ((ValaCCodeBaseModule*) self, (ValaProperty*) prop);
4628 	_tmp51_ = _tmp50_;
4629 	vala_ccode_function_call_add_argument (_tmp49_, (ValaCCodeExpression*) _tmp51_);
4630 	_vala_ccode_node_unref0 (_tmp51_);
4631 	_tmp52_ = call;
4632 	_tmp53_ = vala_ccode_identifier_new ("result");
4633 	_tmp54_ = _tmp53_;
4634 	_tmp55_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp54_);
4635 	_tmp56_ = _tmp55_;
4636 	vala_ccode_function_call_add_argument (_tmp52_, (ValaCCodeExpression*) _tmp56_);
4637 	_vala_ccode_node_unref0 (_tmp56_);
4638 	_vala_ccode_node_unref0 (_tmp54_);
4639 	_tmp57_ = call;
4640 	_tmp58_ = vala_ccode_constant_new ("NULL");
4641 	_tmp59_ = _tmp58_;
4642 	vala_ccode_function_call_add_argument (_tmp57_, (ValaCCodeExpression*) _tmp59_);
4643 	_vala_ccode_node_unref0 (_tmp59_);
4644 	_tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4645 	_tmp61_ = _tmp60_;
4646 	_tmp62_ = call;
4647 	vala_ccode_function_add_expression (_tmp61_, (ValaCCodeExpression*) _tmp62_);
4648 	_tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4649 	_tmp64_ = _tmp63_;
4650 	_tmp65_ = vala_ccode_identifier_new ("result");
4651 	_tmp66_ = _tmp65_;
4652 	vala_ccode_function_add_return (_tmp64_, (ValaCCodeExpression*) _tmp66_);
4653 	_vala_ccode_node_unref0 (_tmp66_);
4654 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4655 	_tmp67_ = ((ValaCCodeBaseModule*) self)->cfile;
4656 	_tmp68_ = func;
4657 	vala_ccode_file_add_function_declaration (_tmp67_, _tmp68_);
4658 	_tmp69_ = ((ValaCCodeBaseModule*) self)->cfile;
4659 	_tmp70_ = func;
4660 	vala_ccode_file_add_function (_tmp69_, _tmp70_);
4661 	result = getter_cname;
4662 	_vala_ccode_node_unref0 (call);
4663 	_vala_ccode_node_unref0 (func);
4664 	return result;
4665 }
4666 
4667 static gchar*
vala_gobject_module_real_get_dynamic_property_setter_cname(ValaCCodeBaseModule * base,ValaDynamicProperty * prop)4668 vala_gobject_module_real_get_dynamic_property_setter_cname (ValaCCodeBaseModule* base,
4669                                                             ValaDynamicProperty* prop)
4670 {
4671 	ValaGObjectModule * self;
4672 	gboolean _tmp0_ = FALSE;
4673 	ValaDataType* _tmp1_;
4674 	ValaDataType* _tmp2_;
4675 	ValaTypeSymbol* _tmp3_;
4676 	ValaTypeSymbol* _tmp4_;
4677 	gchar* setter_cname = NULL;
4678 	const gchar* _tmp11_;
4679 	const gchar* _tmp12_;
4680 	gint _tmp13_;
4681 	gchar* _tmp14_;
4682 	ValaCCodeFunction* func = NULL;
4683 	const gchar* _tmp15_;
4684 	ValaCCodeFunction* _tmp16_;
4685 	ValaCCodeFunction* _tmp17_;
4686 	ValaCCodeFunction* _tmp18_;
4687 	ValaCCodeModifiers _tmp19_;
4688 	ValaCCodeModifiers _tmp20_;
4689 	ValaCCodeFunction* _tmp21_;
4690 	ValaDataType* _tmp22_;
4691 	ValaDataType* _tmp23_;
4692 	gchar* _tmp24_;
4693 	gchar* _tmp25_;
4694 	ValaCCodeParameter* _tmp26_;
4695 	ValaCCodeParameter* _tmp27_;
4696 	ValaCCodeFunction* _tmp28_;
4697 	ValaDataType* _tmp29_;
4698 	ValaDataType* _tmp30_;
4699 	gchar* _tmp31_;
4700 	gchar* _tmp32_;
4701 	ValaCCodeParameter* _tmp33_;
4702 	ValaCCodeParameter* _tmp34_;
4703 	ValaCCodeFunction* _tmp35_;
4704 	ValaCCodeFunctionCall* call = NULL;
4705 	ValaCCodeIdentifier* _tmp36_;
4706 	ValaCCodeIdentifier* _tmp37_;
4707 	ValaCCodeFunctionCall* _tmp38_;
4708 	ValaCCodeFunctionCall* _tmp39_;
4709 	ValaCCodeFunctionCall* _tmp40_;
4710 	ValaCCodeIdentifier* _tmp41_;
4711 	ValaCCodeIdentifier* _tmp42_;
4712 	ValaCCodeFunctionCall* _tmp43_;
4713 	ValaCCodeConstant* _tmp44_;
4714 	ValaCCodeConstant* _tmp45_;
4715 	ValaCCodeFunctionCall* _tmp46_;
4716 	ValaCCodeIdentifier* _tmp47_;
4717 	ValaCCodeIdentifier* _tmp48_;
4718 	ValaCCodeFunctionCall* _tmp49_;
4719 	ValaCCodeConstant* _tmp50_;
4720 	ValaCCodeConstant* _tmp51_;
4721 	ValaCCodeFunction* _tmp52_;
4722 	ValaCCodeFunction* _tmp53_;
4723 	ValaCCodeFunctionCall* _tmp54_;
4724 	ValaCCodeFile* _tmp55_;
4725 	ValaCCodeFunction* _tmp56_;
4726 	ValaCCodeFile* _tmp57_;
4727 	ValaCCodeFunction* _tmp58_;
4728 	gchar* result = NULL;
4729 	self = (ValaGObjectModule*) base;
4730 	g_return_val_if_fail (prop != NULL, NULL);
4731 	_tmp1_ = vala_dynamic_property_get_dynamic_type (prop);
4732 	_tmp2_ = _tmp1_;
4733 	_tmp3_ = vala_data_type_get_type_symbol (_tmp2_);
4734 	_tmp4_ = _tmp3_;
4735 	if (_tmp4_ == NULL) {
4736 		_tmp0_ = TRUE;
4737 	} else {
4738 		ValaDataType* _tmp5_;
4739 		ValaDataType* _tmp6_;
4740 		ValaTypeSymbol* _tmp7_;
4741 		ValaTypeSymbol* _tmp8_;
4742 		ValaTypeSymbol* _tmp9_;
4743 		_tmp5_ = vala_dynamic_property_get_dynamic_type (prop);
4744 		_tmp6_ = _tmp5_;
4745 		_tmp7_ = vala_data_type_get_type_symbol (_tmp6_);
4746 		_tmp8_ = _tmp7_;
4747 		_tmp9_ = ((ValaCCodeBaseModule*) self)->gobject_type;
4748 		_tmp0_ = !vala_typesymbol_is_subtype_of (_tmp8_, _tmp9_);
4749 	}
4750 	if (_tmp0_) {
4751 		gchar* _tmp10_;
4752 		_tmp10_ = VALA_CCODE_BASE_MODULE_CLASS (vala_gobject_module_parent_class)->get_dynamic_property_setter_cname ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), prop);
4753 		result = _tmp10_;
4754 		return result;
4755 	}
4756 	_tmp11_ = vala_symbol_get_name ((ValaSymbol*) prop);
4757 	_tmp12_ = _tmp11_;
4758 	_tmp13_ = self->priv->dynamic_property_id;
4759 	self->priv->dynamic_property_id = _tmp13_ + 1;
4760 	_tmp14_ = g_strdup_printf ("_dynamic_set_%s%d", _tmp12_, _tmp13_);
4761 	setter_cname = _tmp14_;
4762 	_tmp15_ = setter_cname;
4763 	_tmp16_ = vala_ccode_function_new (_tmp15_, "void");
4764 	func = _tmp16_;
4765 	_tmp17_ = func;
4766 	_tmp18_ = func;
4767 	_tmp19_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp18_);
4768 	_tmp20_ = _tmp19_;
4769 	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp18_, _tmp20_ | (VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_INLINE));
4770 	_tmp21_ = func;
4771 	_tmp22_ = vala_dynamic_property_get_dynamic_type (prop);
4772 	_tmp23_ = _tmp22_;
4773 	_tmp24_ = vala_get_ccode_name ((ValaCodeNode*) _tmp23_);
4774 	_tmp25_ = _tmp24_;
4775 	_tmp26_ = vala_ccode_parameter_new ("obj", _tmp25_);
4776 	_tmp27_ = _tmp26_;
4777 	vala_ccode_function_add_parameter (_tmp21_, _tmp27_);
4778 	_vala_ccode_node_unref0 (_tmp27_);
4779 	_g_free0 (_tmp25_);
4780 	_tmp28_ = func;
4781 	_tmp29_ = vala_property_get_property_type ((ValaProperty*) prop);
4782 	_tmp30_ = _tmp29_;
4783 	_tmp31_ = vala_get_ccode_name ((ValaCodeNode*) _tmp30_);
4784 	_tmp32_ = _tmp31_;
4785 	_tmp33_ = vala_ccode_parameter_new ("value", _tmp32_);
4786 	_tmp34_ = _tmp33_;
4787 	vala_ccode_function_add_parameter (_tmp28_, _tmp34_);
4788 	_vala_ccode_node_unref0 (_tmp34_);
4789 	_g_free0 (_tmp32_);
4790 	_tmp35_ = func;
4791 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp35_);
4792 	_tmp36_ = vala_ccode_identifier_new ("g_object_set");
4793 	_tmp37_ = _tmp36_;
4794 	_tmp38_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp37_);
4795 	_tmp39_ = _tmp38_;
4796 	_vala_ccode_node_unref0 (_tmp37_);
4797 	call = _tmp39_;
4798 	_tmp40_ = call;
4799 	_tmp41_ = vala_ccode_identifier_new ("obj");
4800 	_tmp42_ = _tmp41_;
4801 	vala_ccode_function_call_add_argument (_tmp40_, (ValaCCodeExpression*) _tmp42_);
4802 	_vala_ccode_node_unref0 (_tmp42_);
4803 	_tmp43_ = call;
4804 	_tmp44_ = vala_ccode_base_module_get_property_canonical_cconstant ((ValaCCodeBaseModule*) self, (ValaProperty*) prop);
4805 	_tmp45_ = _tmp44_;
4806 	vala_ccode_function_call_add_argument (_tmp43_, (ValaCCodeExpression*) _tmp45_);
4807 	_vala_ccode_node_unref0 (_tmp45_);
4808 	_tmp46_ = call;
4809 	_tmp47_ = vala_ccode_identifier_new ("value");
4810 	_tmp48_ = _tmp47_;
4811 	vala_ccode_function_call_add_argument (_tmp46_, (ValaCCodeExpression*) _tmp48_);
4812 	_vala_ccode_node_unref0 (_tmp48_);
4813 	_tmp49_ = call;
4814 	_tmp50_ = vala_ccode_constant_new ("NULL");
4815 	_tmp51_ = _tmp50_;
4816 	vala_ccode_function_call_add_argument (_tmp49_, (ValaCCodeExpression*) _tmp51_);
4817 	_vala_ccode_node_unref0 (_tmp51_);
4818 	_tmp52_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4819 	_tmp53_ = _tmp52_;
4820 	_tmp54_ = call;
4821 	vala_ccode_function_add_expression (_tmp53_, (ValaCCodeExpression*) _tmp54_);
4822 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4823 	_tmp55_ = ((ValaCCodeBaseModule*) self)->cfile;
4824 	_tmp56_ = func;
4825 	vala_ccode_file_add_function_declaration (_tmp55_, _tmp56_);
4826 	_tmp57_ = ((ValaCCodeBaseModule*) self)->cfile;
4827 	_tmp58_ = func;
4828 	vala_ccode_file_add_function (_tmp57_, _tmp58_);
4829 	result = setter_cname;
4830 	_vala_ccode_node_unref0 (call);
4831 	_vala_ccode_node_unref0 (func);
4832 	return result;
4833 }
4834 
4835 static gchar*
vala_gobject_module_real_get_dynamic_signal_cname(ValaCCodeBaseModule * base,ValaDynamicSignal * node)4836 vala_gobject_module_real_get_dynamic_signal_cname (ValaCCodeBaseModule* base,
4837                                                    ValaDynamicSignal* node)
4838 {
4839 	ValaGObjectModule * self;
4840 	const gchar* _tmp0_;
4841 	const gchar* _tmp1_;
4842 	gint _tmp2_;
4843 	gchar* _tmp3_;
4844 	gchar* result = NULL;
4845 	self = (ValaGObjectModule*) base;
4846 	g_return_val_if_fail (node != NULL, NULL);
4847 	_tmp0_ = vala_symbol_get_name ((ValaSymbol*) node);
4848 	_tmp1_ = _tmp0_;
4849 	_tmp2_ = self->priv->signal_wrapper_id;
4850 	self->priv->signal_wrapper_id = _tmp2_ + 1;
4851 	_tmp3_ = g_strdup_printf ("dynamic_%s%d_", _tmp1_, _tmp2_);
4852 	result = _tmp3_;
4853 	return result;
4854 }
4855 
4856 static gchar*
vala_gobject_module_real_get_dynamic_signal_connect_wrapper_name(ValaCCodeBaseModule * base,ValaDynamicSignal * sig)4857 vala_gobject_module_real_get_dynamic_signal_connect_wrapper_name (ValaCCodeBaseModule* base,
4858                                                                   ValaDynamicSignal* sig)
4859 {
4860 	ValaGObjectModule * self;
4861 	gboolean _tmp0_ = FALSE;
4862 	ValaDataType* _tmp1_;
4863 	ValaDataType* _tmp2_;
4864 	ValaTypeSymbol* _tmp3_;
4865 	ValaTypeSymbol* _tmp4_;
4866 	gchar* connect_wrapper_name = NULL;
4867 	gchar* _tmp11_;
4868 	gchar* _tmp12_;
4869 	gchar* _tmp13_;
4870 	gchar* _tmp14_;
4871 	ValaCCodeFunction* func = NULL;
4872 	const gchar* _tmp15_;
4873 	ValaCCodeFunction* _tmp16_;
4874 	ValaCCodeFunction* _tmp17_;
4875 	ValaCCodeParameter* _tmp18_;
4876 	ValaCCodeParameter* _tmp19_;
4877 	ValaCCodeFunction* _tmp20_;
4878 	ValaCCodeParameter* _tmp21_;
4879 	ValaCCodeParameter* _tmp22_;
4880 	ValaCCodeFunction* _tmp23_;
4881 	ValaCCodeParameter* _tmp24_;
4882 	ValaCCodeParameter* _tmp25_;
4883 	ValaCCodeFunction* _tmp26_;
4884 	ValaCCodeParameter* _tmp27_;
4885 	ValaCCodeParameter* _tmp28_;
4886 	ValaCCodeFunction* _tmp29_;
4887 	ValaCCodeFile* _tmp30_;
4888 	ValaCCodeFunction* _tmp31_;
4889 	ValaCCodeFile* _tmp32_;
4890 	ValaCCodeFunction* _tmp33_;
4891 	gchar* result = NULL;
4892 	self = (ValaGObjectModule*) base;
4893 	g_return_val_if_fail (sig != NULL, NULL);
4894 	_tmp1_ = vala_dynamic_signal_get_dynamic_type (sig);
4895 	_tmp2_ = _tmp1_;
4896 	_tmp3_ = vala_data_type_get_type_symbol (_tmp2_);
4897 	_tmp4_ = _tmp3_;
4898 	if (_tmp4_ == NULL) {
4899 		_tmp0_ = TRUE;
4900 	} else {
4901 		ValaDataType* _tmp5_;
4902 		ValaDataType* _tmp6_;
4903 		ValaTypeSymbol* _tmp7_;
4904 		ValaTypeSymbol* _tmp8_;
4905 		ValaTypeSymbol* _tmp9_;
4906 		_tmp5_ = vala_dynamic_signal_get_dynamic_type (sig);
4907 		_tmp6_ = _tmp5_;
4908 		_tmp7_ = vala_data_type_get_type_symbol (_tmp6_);
4909 		_tmp8_ = _tmp7_;
4910 		_tmp9_ = ((ValaCCodeBaseModule*) self)->gobject_type;
4911 		_tmp0_ = !vala_typesymbol_is_subtype_of (_tmp8_, _tmp9_);
4912 	}
4913 	if (_tmp0_) {
4914 		gchar* _tmp10_;
4915 		_tmp10_ = VALA_CCODE_BASE_MODULE_CLASS (vala_gobject_module_parent_class)->get_dynamic_signal_connect_wrapper_name ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), sig);
4916 		result = _tmp10_;
4917 		return result;
4918 	}
4919 	_tmp11_ = vala_ccode_base_module_get_dynamic_signal_cname ((ValaCCodeBaseModule*) self, sig);
4920 	_tmp12_ = _tmp11_;
4921 	_tmp13_ = g_strdup_printf ("_%sconnect", _tmp12_);
4922 	_tmp14_ = _tmp13_;
4923 	_g_free0 (_tmp12_);
4924 	connect_wrapper_name = _tmp14_;
4925 	_tmp15_ = connect_wrapper_name;
4926 	_tmp16_ = vala_ccode_function_new (_tmp15_, "gulong");
4927 	func = _tmp16_;
4928 	_tmp17_ = func;
4929 	_tmp18_ = vala_ccode_parameter_new ("obj", "gpointer");
4930 	_tmp19_ = _tmp18_;
4931 	vala_ccode_function_add_parameter (_tmp17_, _tmp19_);
4932 	_vala_ccode_node_unref0 (_tmp19_);
4933 	_tmp20_ = func;
4934 	_tmp21_ = vala_ccode_parameter_new ("signal_name", "const char *");
4935 	_tmp22_ = _tmp21_;
4936 	vala_ccode_function_add_parameter (_tmp20_, _tmp22_);
4937 	_vala_ccode_node_unref0 (_tmp22_);
4938 	_tmp23_ = func;
4939 	_tmp24_ = vala_ccode_parameter_new ("handler", "GCallback");
4940 	_tmp25_ = _tmp24_;
4941 	vala_ccode_function_add_parameter (_tmp23_, _tmp25_);
4942 	_vala_ccode_node_unref0 (_tmp25_);
4943 	_tmp26_ = func;
4944 	_tmp27_ = vala_ccode_parameter_new ("data", "gpointer");
4945 	_tmp28_ = _tmp27_;
4946 	vala_ccode_function_add_parameter (_tmp26_, _tmp28_);
4947 	_vala_ccode_node_unref0 (_tmp28_);
4948 	_tmp29_ = func;
4949 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp29_);
4950 	vala_gobject_module_generate_gobject_connect_wrapper (self, sig, FALSE);
4951 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4952 	_tmp30_ = ((ValaCCodeBaseModule*) self)->cfile;
4953 	_tmp31_ = func;
4954 	vala_ccode_file_add_function_declaration (_tmp30_, _tmp31_);
4955 	_tmp32_ = ((ValaCCodeBaseModule*) self)->cfile;
4956 	_tmp33_ = func;
4957 	vala_ccode_file_add_function (_tmp32_, _tmp33_);
4958 	result = connect_wrapper_name;
4959 	_vala_ccode_node_unref0 (func);
4960 	return result;
4961 }
4962 
4963 static gchar*
vala_gobject_module_real_get_dynamic_signal_connect_after_wrapper_name(ValaCCodeBaseModule * base,ValaDynamicSignal * sig)4964 vala_gobject_module_real_get_dynamic_signal_connect_after_wrapper_name (ValaCCodeBaseModule* base,
4965                                                                         ValaDynamicSignal* sig)
4966 {
4967 	ValaGObjectModule * self;
4968 	gboolean _tmp0_ = FALSE;
4969 	ValaDataType* _tmp1_;
4970 	ValaDataType* _tmp2_;
4971 	ValaTypeSymbol* _tmp3_;
4972 	ValaTypeSymbol* _tmp4_;
4973 	gchar* connect_wrapper_name = NULL;
4974 	gchar* _tmp11_;
4975 	gchar* _tmp12_;
4976 	gchar* _tmp13_;
4977 	gchar* _tmp14_;
4978 	ValaCCodeFunction* func = NULL;
4979 	const gchar* _tmp15_;
4980 	ValaCCodeFunction* _tmp16_;
4981 	ValaCCodeFunction* _tmp17_;
4982 	ValaCCodeParameter* _tmp18_;
4983 	ValaCCodeParameter* _tmp19_;
4984 	ValaCCodeFunction* _tmp20_;
4985 	ValaCCodeParameter* _tmp21_;
4986 	ValaCCodeParameter* _tmp22_;
4987 	ValaCCodeFunction* _tmp23_;
4988 	ValaCCodeParameter* _tmp24_;
4989 	ValaCCodeParameter* _tmp25_;
4990 	ValaCCodeFunction* _tmp26_;
4991 	ValaCCodeParameter* _tmp27_;
4992 	ValaCCodeParameter* _tmp28_;
4993 	ValaCCodeFunction* _tmp29_;
4994 	ValaCCodeFile* _tmp30_;
4995 	ValaCCodeFunction* _tmp31_;
4996 	ValaCCodeFile* _tmp32_;
4997 	ValaCCodeFunction* _tmp33_;
4998 	gchar* result = NULL;
4999 	self = (ValaGObjectModule*) base;
5000 	g_return_val_if_fail (sig != NULL, NULL);
5001 	_tmp1_ = vala_dynamic_signal_get_dynamic_type (sig);
5002 	_tmp2_ = _tmp1_;
5003 	_tmp3_ = vala_data_type_get_type_symbol (_tmp2_);
5004 	_tmp4_ = _tmp3_;
5005 	if (_tmp4_ == NULL) {
5006 		_tmp0_ = TRUE;
5007 	} else {
5008 		ValaDataType* _tmp5_;
5009 		ValaDataType* _tmp6_;
5010 		ValaTypeSymbol* _tmp7_;
5011 		ValaTypeSymbol* _tmp8_;
5012 		ValaTypeSymbol* _tmp9_;
5013 		_tmp5_ = vala_dynamic_signal_get_dynamic_type (sig);
5014 		_tmp6_ = _tmp5_;
5015 		_tmp7_ = vala_data_type_get_type_symbol (_tmp6_);
5016 		_tmp8_ = _tmp7_;
5017 		_tmp9_ = ((ValaCCodeBaseModule*) self)->gobject_type;
5018 		_tmp0_ = !vala_typesymbol_is_subtype_of (_tmp8_, _tmp9_);
5019 	}
5020 	if (_tmp0_) {
5021 		gchar* _tmp10_;
5022 		_tmp10_ = VALA_CCODE_BASE_MODULE_CLASS (vala_gobject_module_parent_class)->get_dynamic_signal_connect_wrapper_name ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), sig);
5023 		result = _tmp10_;
5024 		return result;
5025 	}
5026 	_tmp11_ = vala_ccode_base_module_get_dynamic_signal_cname ((ValaCCodeBaseModule*) self, sig);
5027 	_tmp12_ = _tmp11_;
5028 	_tmp13_ = g_strdup_printf ("_%sconnect_after", _tmp12_);
5029 	_tmp14_ = _tmp13_;
5030 	_g_free0 (_tmp12_);
5031 	connect_wrapper_name = _tmp14_;
5032 	_tmp15_ = connect_wrapper_name;
5033 	_tmp16_ = vala_ccode_function_new (_tmp15_, "gulong");
5034 	func = _tmp16_;
5035 	_tmp17_ = func;
5036 	_tmp18_ = vala_ccode_parameter_new ("obj", "gpointer");
5037 	_tmp19_ = _tmp18_;
5038 	vala_ccode_function_add_parameter (_tmp17_, _tmp19_);
5039 	_vala_ccode_node_unref0 (_tmp19_);
5040 	_tmp20_ = func;
5041 	_tmp21_ = vala_ccode_parameter_new ("signal_name", "const char *");
5042 	_tmp22_ = _tmp21_;
5043 	vala_ccode_function_add_parameter (_tmp20_, _tmp22_);
5044 	_vala_ccode_node_unref0 (_tmp22_);
5045 	_tmp23_ = func;
5046 	_tmp24_ = vala_ccode_parameter_new ("handler", "GCallback");
5047 	_tmp25_ = _tmp24_;
5048 	vala_ccode_function_add_parameter (_tmp23_, _tmp25_);
5049 	_vala_ccode_node_unref0 (_tmp25_);
5050 	_tmp26_ = func;
5051 	_tmp27_ = vala_ccode_parameter_new ("data", "gpointer");
5052 	_tmp28_ = _tmp27_;
5053 	vala_ccode_function_add_parameter (_tmp26_, _tmp28_);
5054 	_vala_ccode_node_unref0 (_tmp28_);
5055 	_tmp29_ = func;
5056 	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp29_);
5057 	vala_gobject_module_generate_gobject_connect_wrapper (self, sig, TRUE);
5058 	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
5059 	_tmp30_ = ((ValaCCodeBaseModule*) self)->cfile;
5060 	_tmp31_ = func;
5061 	vala_ccode_file_add_function_declaration (_tmp30_, _tmp31_);
5062 	_tmp32_ = ((ValaCCodeBaseModule*) self)->cfile;
5063 	_tmp33_ = func;
5064 	vala_ccode_file_add_function (_tmp32_, _tmp33_);
5065 	result = connect_wrapper_name;
5066 	_vala_ccode_node_unref0 (func);
5067 	return result;
5068 }
5069 
5070 static void
vala_gobject_module_generate_gobject_connect_wrapper(ValaGObjectModule * self,ValaDynamicSignal * sig,gboolean after)5071 vala_gobject_module_generate_gobject_connect_wrapper (ValaGObjectModule* self,
5072                                                       ValaDynamicSignal* sig,
5073                                                       gboolean after)
5074 {
5075 	ValaMethod* m = NULL;
5076 	ValaExpression* _tmp0_;
5077 	ValaExpression* _tmp1_;
5078 	ValaSymbol* _tmp2_;
5079 	ValaSymbol* _tmp3_;
5080 	ValaMethod* _tmp4_;
5081 	gchar* connect_func = NULL;
5082 	gchar* _tmp5_;
5083 	ValaMethod* _tmp6_;
5084 	ValaMemberBinding _tmp7_;
5085 	ValaMemberBinding _tmp8_;
5086 	ValaCCodeFunctionCall* call = NULL;
5087 	const gchar* _tmp11_;
5088 	ValaCCodeIdentifier* _tmp12_;
5089 	ValaCCodeIdentifier* _tmp13_;
5090 	ValaCCodeFunctionCall* _tmp14_;
5091 	ValaCCodeFunctionCall* _tmp15_;
5092 	ValaCCodeFunctionCall* _tmp16_;
5093 	ValaCCodeIdentifier* _tmp17_;
5094 	ValaCCodeIdentifier* _tmp18_;
5095 	ValaCCodeFunctionCall* _tmp19_;
5096 	ValaCCodeIdentifier* _tmp20_;
5097 	ValaCCodeIdentifier* _tmp21_;
5098 	ValaCCodeFunctionCall* _tmp22_;
5099 	ValaCCodeIdentifier* _tmp23_;
5100 	ValaCCodeIdentifier* _tmp24_;
5101 	ValaCCodeFunctionCall* _tmp25_;
5102 	ValaCCodeIdentifier* _tmp26_;
5103 	ValaCCodeIdentifier* _tmp27_;
5104 	ValaMethod* _tmp28_;
5105 	ValaMemberBinding _tmp29_;
5106 	ValaMemberBinding _tmp30_;
5107 	ValaCCodeFunction* _tmp37_;
5108 	ValaCCodeFunction* _tmp38_;
5109 	ValaCCodeFunctionCall* _tmp39_;
5110 	g_return_if_fail (self != NULL);
5111 	g_return_if_fail (sig != NULL);
5112 	_tmp0_ = vala_dynamic_signal_get_handler (sig);
5113 	_tmp1_ = _tmp0_;
5114 	_tmp2_ = vala_expression_get_symbol_reference (_tmp1_);
5115 	_tmp3_ = _tmp2_;
5116 	_tmp4_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, VALA_TYPE_METHOD, ValaMethod));
5117 	m = _tmp4_;
5118 	vala_code_node_accept ((ValaCodeNode*) sig, (ValaCodeVisitor*) self);
5119 	_tmp5_ = g_strdup ("g_signal_connect_object");
5120 	connect_func = _tmp5_;
5121 	_tmp6_ = m;
5122 	_tmp7_ = vala_method_get_binding (_tmp6_);
5123 	_tmp8_ = _tmp7_;
5124 	if (_tmp8_ != VALA_MEMBER_BINDING_INSTANCE) {
5125 		if (!after) {
5126 			gchar* _tmp9_;
5127 			_tmp9_ = g_strdup ("g_signal_connect");
5128 			_g_free0 (connect_func);
5129 			connect_func = _tmp9_;
5130 		} else {
5131 			gchar* _tmp10_;
5132 			_tmp10_ = g_strdup ("g_signal_connect_after");
5133 			_g_free0 (connect_func);
5134 			connect_func = _tmp10_;
5135 		}
5136 	}
5137 	_tmp11_ = connect_func;
5138 	_tmp12_ = vala_ccode_identifier_new (_tmp11_);
5139 	_tmp13_ = _tmp12_;
5140 	_tmp14_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp13_);
5141 	_tmp15_ = _tmp14_;
5142 	_vala_ccode_node_unref0 (_tmp13_);
5143 	call = _tmp15_;
5144 	_tmp16_ = call;
5145 	_tmp17_ = vala_ccode_identifier_new ("obj");
5146 	_tmp18_ = _tmp17_;
5147 	vala_ccode_function_call_add_argument (_tmp16_, (ValaCCodeExpression*) _tmp18_);
5148 	_vala_ccode_node_unref0 (_tmp18_);
5149 	_tmp19_ = call;
5150 	_tmp20_ = vala_ccode_identifier_new ("signal_name");
5151 	_tmp21_ = _tmp20_;
5152 	vala_ccode_function_call_add_argument (_tmp19_, (ValaCCodeExpression*) _tmp21_);
5153 	_vala_ccode_node_unref0 (_tmp21_);
5154 	_tmp22_ = call;
5155 	_tmp23_ = vala_ccode_identifier_new ("handler");
5156 	_tmp24_ = _tmp23_;
5157 	vala_ccode_function_call_add_argument (_tmp22_, (ValaCCodeExpression*) _tmp24_);
5158 	_vala_ccode_node_unref0 (_tmp24_);
5159 	_tmp25_ = call;
5160 	_tmp26_ = vala_ccode_identifier_new ("data");
5161 	_tmp27_ = _tmp26_;
5162 	vala_ccode_function_call_add_argument (_tmp25_, (ValaCCodeExpression*) _tmp27_);
5163 	_vala_ccode_node_unref0 (_tmp27_);
5164 	_tmp28_ = m;
5165 	_tmp29_ = vala_method_get_binding (_tmp28_);
5166 	_tmp30_ = _tmp29_;
5167 	if (_tmp30_ == VALA_MEMBER_BINDING_INSTANCE) {
5168 		if (!after) {
5169 			ValaCCodeFunctionCall* _tmp31_;
5170 			ValaCCodeConstant* _tmp32_;
5171 			ValaCCodeConstant* _tmp33_;
5172 			_tmp31_ = call;
5173 			_tmp32_ = vala_ccode_constant_new ("0");
5174 			_tmp33_ = _tmp32_;
5175 			vala_ccode_function_call_add_argument (_tmp31_, (ValaCCodeExpression*) _tmp33_);
5176 			_vala_ccode_node_unref0 (_tmp33_);
5177 		} else {
5178 			ValaCCodeFunctionCall* _tmp34_;
5179 			ValaCCodeConstant* _tmp35_;
5180 			ValaCCodeConstant* _tmp36_;
5181 			_tmp34_ = call;
5182 			_tmp35_ = vala_ccode_constant_new ("G_CONNECT_AFTER");
5183 			_tmp36_ = _tmp35_;
5184 			vala_ccode_function_call_add_argument (_tmp34_, (ValaCCodeExpression*) _tmp36_);
5185 			_vala_ccode_node_unref0 (_tmp36_);
5186 		}
5187 	}
5188 	_tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5189 	_tmp38_ = _tmp37_;
5190 	_tmp39_ = call;
5191 	vala_ccode_function_add_return (_tmp38_, (ValaCCodeExpression*) _tmp39_);
5192 	_vala_ccode_node_unref0 (call);
5193 	_g_free0 (connect_func);
5194 	_vala_code_node_unref0 (m);
5195 }
5196 
5197 static void
vala_gobject_module_real_visit_property(ValaCodeVisitor * base,ValaProperty * prop)5198 vala_gobject_module_real_visit_property (ValaCodeVisitor* base,
5199                                          ValaProperty* prop)
5200 {
5201 	ValaGObjectModule * self;
5202 	gboolean _tmp0_ = FALSE;
5203 	ValaCodeContext* _tmp1_;
5204 	ValaCodeContext* _tmp2_;
5205 	ValaSemanticAnalyzer* _tmp3_;
5206 	ValaSemanticAnalyzer* _tmp4_;
5207 	self = (ValaGObjectModule*) base;
5208 	g_return_if_fail (prop != NULL);
5209 	VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_property ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), prop);
5210 	_tmp1_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
5211 	_tmp2_ = _tmp1_;
5212 	_tmp3_ = vala_code_context_get_analyzer (_tmp2_);
5213 	_tmp4_ = _tmp3_;
5214 	if (vala_semantic_analyzer_is_gobject_property (_tmp4_, prop)) {
5215 		ValaSymbol* _tmp5_;
5216 		ValaSymbol* _tmp6_;
5217 		_tmp5_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
5218 		_tmp6_ = _tmp5_;
5219 		_tmp0_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_CLASS);
5220 	} else {
5221 		_tmp0_ = FALSE;
5222 	}
5223 	if (_tmp0_) {
5224 		ValaCCodeEnum* _tmp7_;
5225 		gchar* _tmp8_;
5226 		gchar* _tmp9_;
5227 		gchar* _tmp10_;
5228 		gchar* _tmp11_;
5229 		ValaCCodeEnumValue* _tmp12_;
5230 		ValaCCodeEnumValue* _tmp13_;
5231 		_tmp7_ = ((ValaCCodeBaseModule*) self)->prop_enum;
5232 		_tmp8_ = vala_get_ccode_upper_case_name ((ValaSymbol*) prop, NULL);
5233 		_tmp9_ = _tmp8_;
5234 		_tmp10_ = g_strdup_printf ("%s_PROPERTY", _tmp9_);
5235 		_tmp11_ = _tmp10_;
5236 		_tmp12_ = vala_ccode_enum_value_new (_tmp11_, NULL);
5237 		_tmp13_ = _tmp12_;
5238 		vala_ccode_enum_add_value (_tmp7_, _tmp13_);
5239 		_vala_ccode_node_unref0 (_tmp13_);
5240 		_g_free0 (_tmp11_);
5241 		_g_free0 (_tmp9_);
5242 	}
5243 }
5244 
5245 static void
vala_gobject_module_real_visit_method_call(ValaCodeVisitor * base,ValaMethodCall * expr)5246 vala_gobject_module_real_visit_method_call (ValaCodeVisitor* base,
5247                                             ValaMethodCall* expr)
5248 {
5249 	ValaGObjectModule * self;
5250 	ValaExpression* _tmp0_;
5251 	ValaExpression* _tmp1_;
5252 	self = (ValaGObjectModule*) base;
5253 	g_return_if_fail (expr != NULL);
5254 	_tmp0_ = vala_method_call_get_call (expr);
5255 	_tmp1_ = _tmp0_;
5256 	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_MEMBER_ACCESS)) {
5257 		ValaSourceReference* _tmp2_;
5258 		ValaSourceReference* _tmp3_;
5259 		ValaMemberAccess* ma = NULL;
5260 		ValaExpression* _tmp4_;
5261 		ValaExpression* _tmp5_;
5262 		ValaMemberAccess* _tmp6_;
5263 		gboolean _tmp7_ = FALSE;
5264 		gboolean _tmp8_ = FALSE;
5265 		ValaMemberAccess* _tmp9_;
5266 		ValaExpression* _tmp10_;
5267 		ValaExpression* _tmp11_;
5268 		_tmp2_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
5269 		_tmp3_ = _tmp2_;
5270 		vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp3_);
5271 		_tmp4_ = vala_method_call_get_call (expr);
5272 		_tmp5_ = _tmp4_;
5273 		_tmp6_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp5_) : NULL);
5274 		ma = _tmp6_;
5275 		_tmp9_ = ma;
5276 		_tmp10_ = vala_member_access_get_inner (_tmp9_);
5277 		_tmp11_ = _tmp10_;
5278 		if (_tmp11_ != NULL) {
5279 			ValaMemberAccess* _tmp12_;
5280 			ValaExpression* _tmp13_;
5281 			ValaExpression* _tmp14_;
5282 			ValaSymbol* _tmp15_;
5283 			ValaSymbol* _tmp16_;
5284 			ValaTypeSymbol* _tmp17_;
5285 			_tmp12_ = ma;
5286 			_tmp13_ = vala_member_access_get_inner (_tmp12_);
5287 			_tmp14_ = _tmp13_;
5288 			_tmp15_ = vala_expression_get_symbol_reference (_tmp14_);
5289 			_tmp16_ = _tmp15_;
5290 			_tmp17_ = ((ValaCCodeBaseModule*) self)->gobject_type;
5291 			_tmp8_ = _tmp16_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, VALA_TYPE_SYMBOL, ValaSymbol);
5292 		} else {
5293 			_tmp8_ = FALSE;
5294 		}
5295 		if (_tmp8_) {
5296 			gboolean _tmp18_ = FALSE;
5297 			gboolean _tmp19_ = FALSE;
5298 			gboolean _tmp20_ = FALSE;
5299 			ValaMemberAccess* _tmp21_;
5300 			const gchar* _tmp22_;
5301 			const gchar* _tmp23_;
5302 			_tmp21_ = ma;
5303 			_tmp22_ = vala_member_access_get_member_name (_tmp21_);
5304 			_tmp23_ = _tmp22_;
5305 			if (g_strcmp0 (_tmp23_, "new") == 0) {
5306 				_tmp20_ = TRUE;
5307 			} else {
5308 				ValaMemberAccess* _tmp24_;
5309 				const gchar* _tmp25_;
5310 				const gchar* _tmp26_;
5311 				_tmp24_ = ma;
5312 				_tmp25_ = vala_member_access_get_member_name (_tmp24_);
5313 				_tmp26_ = _tmp25_;
5314 				_tmp20_ = g_strcmp0 (_tmp26_, "newv") == 0;
5315 			}
5316 			if (_tmp20_) {
5317 				_tmp19_ = TRUE;
5318 			} else {
5319 				ValaMemberAccess* _tmp27_;
5320 				const gchar* _tmp28_;
5321 				const gchar* _tmp29_;
5322 				_tmp27_ = ma;
5323 				_tmp28_ = vala_member_access_get_member_name (_tmp27_);
5324 				_tmp29_ = _tmp28_;
5325 				_tmp19_ = g_strcmp0 (_tmp29_, "new_valist") == 0;
5326 			}
5327 			if (_tmp19_) {
5328 				_tmp18_ = TRUE;
5329 			} else {
5330 				ValaMemberAccess* _tmp30_;
5331 				const gchar* _tmp31_;
5332 				const gchar* _tmp32_;
5333 				_tmp30_ = ma;
5334 				_tmp31_ = vala_member_access_get_member_name (_tmp30_);
5335 				_tmp32_ = _tmp31_;
5336 				_tmp18_ = g_strcmp0 (_tmp32_, "new_with_properties") == 0;
5337 			}
5338 			_tmp7_ = _tmp18_;
5339 		} else {
5340 			_tmp7_ = FALSE;
5341 		}
5342 		if (_tmp7_) {
5343 			ValaCCodeFunctionCall* initiallyunowned_ccall = NULL;
5344 			ValaCCodeIdentifier* _tmp33_;
5345 			ValaCCodeIdentifier* _tmp34_;
5346 			ValaCCodeFunctionCall* _tmp35_;
5347 			ValaCCodeFunctionCall* _tmp36_;
5348 			ValaCCodeFunctionCall* _tmp37_;
5349 			ValaCCodeExpression* _tmp38_;
5350 			ValaCCodeFunctionCall* sink_ref_ccall = NULL;
5351 			ValaCCodeIdentifier* _tmp39_;
5352 			ValaCCodeIdentifier* _tmp40_;
5353 			ValaCCodeFunctionCall* _tmp41_;
5354 			ValaCCodeFunctionCall* _tmp42_;
5355 			ValaCCodeFunctionCall* _tmp43_;
5356 			ValaCCodeExpression* _tmp44_;
5357 			ValaCCodeConditionalExpression* cexpr = NULL;
5358 			ValaCCodeFunctionCall* _tmp45_;
5359 			ValaCCodeFunctionCall* _tmp46_;
5360 			ValaCCodeExpression* _tmp47_;
5361 			ValaCCodeConditionalExpression* _tmp48_;
5362 			ValaDataType* _tmp49_;
5363 			ValaDataType* _tmp50_;
5364 			ValaCCodeConditionalExpression* _tmp51_;
5365 			ValaGLibValue* _tmp52_;
5366 			ValaGLibValue* _tmp53_;
5367 			ValaTargetValue* _tmp54_;
5368 			ValaTargetValue* _tmp55_;
5369 			VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), expr);
5370 			_tmp33_ = vala_ccode_identifier_new ("G_IS_INITIALLY_UNOWNED");
5371 			_tmp34_ = _tmp33_;
5372 			_tmp35_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp34_);
5373 			_tmp36_ = _tmp35_;
5374 			_vala_ccode_node_unref0 (_tmp34_);
5375 			initiallyunowned_ccall = _tmp36_;
5376 			_tmp37_ = initiallyunowned_ccall;
5377 			_tmp38_ = vala_get_cvalue ((ValaExpression*) expr);
5378 			vala_ccode_function_call_add_argument (_tmp37_, _tmp38_);
5379 			_tmp39_ = vala_ccode_identifier_new ("g_object_ref_sink");
5380 			_tmp40_ = _tmp39_;
5381 			_tmp41_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp40_);
5382 			_tmp42_ = _tmp41_;
5383 			_vala_ccode_node_unref0 (_tmp40_);
5384 			sink_ref_ccall = _tmp42_;
5385 			_tmp43_ = sink_ref_ccall;
5386 			_tmp44_ = vala_get_cvalue ((ValaExpression*) expr);
5387 			vala_ccode_function_call_add_argument (_tmp43_, _tmp44_);
5388 			_tmp45_ = initiallyunowned_ccall;
5389 			_tmp46_ = sink_ref_ccall;
5390 			_tmp47_ = vala_get_cvalue ((ValaExpression*) expr);
5391 			_tmp48_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp45_, (ValaCCodeExpression*) _tmp46_, _tmp47_);
5392 			cexpr = _tmp48_;
5393 			_tmp49_ = vala_expression_get_value_type ((ValaExpression*) expr);
5394 			_tmp50_ = _tmp49_;
5395 			_tmp51_ = cexpr;
5396 			_tmp52_ = vala_glib_value_new (_tmp50_, (ValaCCodeExpression*) _tmp51_, FALSE);
5397 			_tmp53_ = _tmp52_;
5398 			_tmp54_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp53_, (ValaCodeNode*) expr, NULL);
5399 			_tmp55_ = _tmp54_;
5400 			vala_expression_set_target_value ((ValaExpression*) expr, _tmp55_);
5401 			_vala_target_value_unref0 (_tmp55_);
5402 			_vala_target_value_unref0 (_tmp53_);
5403 			_vala_ccode_node_unref0 (cexpr);
5404 			_vala_ccode_node_unref0 (sink_ref_ccall);
5405 			_vala_ccode_node_unref0 (initiallyunowned_ccall);
5406 			_vala_code_node_unref0 (ma);
5407 			return;
5408 		} else {
5409 			ValaMemberAccess* _tmp56_;
5410 			ValaSymbol* _tmp57_;
5411 			ValaSymbol* _tmp58_;
5412 			ValaTypeSymbol* _tmp59_;
5413 			_tmp56_ = ma;
5414 			_tmp57_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp56_);
5415 			_tmp58_ = _tmp57_;
5416 			_tmp59_ = ((ValaCCodeBaseModule*) self)->gobject_type;
5417 			if (_tmp58_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp59_, VALA_TYPE_SYMBOL, ValaSymbol)) {
5418 				{
5419 					ValaList* _arg_list = NULL;
5420 					ValaList* _tmp60_;
5421 					ValaList* _tmp61_;
5422 					gint _arg_size = 0;
5423 					ValaList* _tmp62_;
5424 					gint _tmp63_;
5425 					gint _tmp64_;
5426 					gint _arg_index = 0;
5427 					_tmp60_ = vala_method_call_get_argument_list (expr);
5428 					_tmp61_ = _vala_iterable_ref0 (_tmp60_);
5429 					_arg_list = _tmp61_;
5430 					_tmp62_ = _arg_list;
5431 					_tmp63_ = vala_collection_get_size ((ValaCollection*) _tmp62_);
5432 					_tmp64_ = _tmp63_;
5433 					_arg_size = _tmp64_;
5434 					_arg_index = -1;
5435 					while (TRUE) {
5436 						gint _tmp65_;
5437 						gint _tmp66_;
5438 						ValaExpression* arg = NULL;
5439 						ValaList* _tmp67_;
5440 						gpointer _tmp68_;
5441 						ValaNamedArgument* named_argument = NULL;
5442 						ValaExpression* _tmp69_;
5443 						ValaNamedArgument* _tmp70_;
5444 						ValaNamedArgument* _tmp71_;
5445 						ValaProperty* prop = NULL;
5446 						ValaClass* _tmp75_;
5447 						ValaClass* _tmp76_;
5448 						ValaNamedArgument* _tmp77_;
5449 						const gchar* _tmp78_;
5450 						const gchar* _tmp79_;
5451 						ValaSymbol* _tmp80_;
5452 						ValaProperty* _tmp81_;
5453 						ValaProperty* _tmp82_;
5454 						ValaCodeContext* _tmp95_;
5455 						ValaCodeContext* _tmp96_;
5456 						ValaSemanticAnalyzer* _tmp97_;
5457 						ValaSemanticAnalyzer* _tmp98_;
5458 						ValaProperty* _tmp99_;
5459 						ValaExpression* _tmp108_;
5460 						ValaDataType* _tmp109_;
5461 						ValaDataType* _tmp110_;
5462 						ValaProperty* _tmp111_;
5463 						ValaDataType* _tmp112_;
5464 						ValaDataType* _tmp113_;
5465 						_arg_index = _arg_index + 1;
5466 						_tmp65_ = _arg_index;
5467 						_tmp66_ = _arg_size;
5468 						if (!(_tmp65_ < _tmp66_)) {
5469 							break;
5470 						}
5471 						_tmp67_ = _arg_list;
5472 						_tmp68_ = vala_list_get (_tmp67_, _arg_index);
5473 						arg = (ValaExpression*) _tmp68_;
5474 						_tmp69_ = arg;
5475 						_tmp70_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp69_, VALA_TYPE_NAMED_ARGUMENT) ? ((ValaNamedArgument*) _tmp69_) : NULL);
5476 						named_argument = _tmp70_;
5477 						_tmp71_ = named_argument;
5478 						if (_tmp71_ == NULL) {
5479 							ValaExpression* _tmp72_;
5480 							ValaSourceReference* _tmp73_;
5481 							ValaSourceReference* _tmp74_;
5482 							_tmp72_ = arg;
5483 							_tmp73_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp72_);
5484 							_tmp74_ = _tmp73_;
5485 							vala_report_error (_tmp74_, "Named argument expected");
5486 							_vala_code_node_unref0 (named_argument);
5487 							_vala_code_node_unref0 (arg);
5488 							break;
5489 						}
5490 						_tmp75_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
5491 						_tmp76_ = _tmp75_;
5492 						_tmp77_ = named_argument;
5493 						_tmp78_ = vala_named_argument_get_name (_tmp77_);
5494 						_tmp79_ = _tmp78_;
5495 						_tmp80_ = vala_semantic_analyzer_symbol_lookup_inherited ((ValaSymbol*) _tmp76_, _tmp79_);
5496 						_tmp81_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp80_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp80_) : NULL;
5497 						if (_tmp81_ == NULL) {
5498 							_vala_code_node_unref0 (_tmp80_);
5499 						}
5500 						prop = _tmp81_;
5501 						_tmp82_ = prop;
5502 						if (_tmp82_ == NULL) {
5503 							ValaExpression* _tmp83_;
5504 							ValaSourceReference* _tmp84_;
5505 							ValaSourceReference* _tmp85_;
5506 							ValaNamedArgument* _tmp86_;
5507 							const gchar* _tmp87_;
5508 							const gchar* _tmp88_;
5509 							ValaClass* _tmp89_;
5510 							ValaClass* _tmp90_;
5511 							gchar* _tmp91_;
5512 							gchar* _tmp92_;
5513 							gchar* _tmp93_;
5514 							gchar* _tmp94_;
5515 							_tmp83_ = arg;
5516 							_tmp84_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp83_);
5517 							_tmp85_ = _tmp84_;
5518 							_tmp86_ = named_argument;
5519 							_tmp87_ = vala_named_argument_get_name (_tmp86_);
5520 							_tmp88_ = _tmp87_;
5521 							_tmp89_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
5522 							_tmp90_ = _tmp89_;
5523 							_tmp91_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp90_);
5524 							_tmp92_ = _tmp91_;
5525 							_tmp93_ = g_strdup_printf ("Property `%s' not found in `%s'", _tmp88_, _tmp92_);
5526 							_tmp94_ = _tmp93_;
5527 							vala_report_error (_tmp85_, _tmp94_);
5528 							_g_free0 (_tmp94_);
5529 							_g_free0 (_tmp92_);
5530 							_vala_code_node_unref0 (prop);
5531 							_vala_code_node_unref0 (named_argument);
5532 							_vala_code_node_unref0 (arg);
5533 							break;
5534 						}
5535 						_tmp95_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
5536 						_tmp96_ = _tmp95_;
5537 						_tmp97_ = vala_code_context_get_analyzer (_tmp96_);
5538 						_tmp98_ = _tmp97_;
5539 						_tmp99_ = prop;
5540 						if (!vala_semantic_analyzer_is_gobject_property (_tmp98_, _tmp99_)) {
5541 							ValaExpression* _tmp100_;
5542 							ValaSourceReference* _tmp101_;
5543 							ValaSourceReference* _tmp102_;
5544 							ValaNamedArgument* _tmp103_;
5545 							const gchar* _tmp104_;
5546 							const gchar* _tmp105_;
5547 							gchar* _tmp106_;
5548 							gchar* _tmp107_;
5549 							_tmp100_ = arg;
5550 							_tmp101_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp100_);
5551 							_tmp102_ = _tmp101_;
5552 							_tmp103_ = named_argument;
5553 							_tmp104_ = vala_named_argument_get_name (_tmp103_);
5554 							_tmp105_ = _tmp104_;
5555 							_tmp106_ = g_strdup_printf ("Property `%s' not supported in Object (property: value) constructor ch" \
5556 "ain up", _tmp105_);
5557 							_tmp107_ = _tmp106_;
5558 							vala_report_error (_tmp102_, _tmp107_);
5559 							_g_free0 (_tmp107_);
5560 							_vala_code_node_unref0 (prop);
5561 							_vala_code_node_unref0 (named_argument);
5562 							_vala_code_node_unref0 (arg);
5563 							break;
5564 						}
5565 						_tmp108_ = arg;
5566 						_tmp109_ = vala_expression_get_value_type (_tmp108_);
5567 						_tmp110_ = _tmp109_;
5568 						_tmp111_ = prop;
5569 						_tmp112_ = vala_property_get_property_type (_tmp111_);
5570 						_tmp113_ = _tmp112_;
5571 						if (!vala_data_type_compatible (_tmp110_, _tmp113_)) {
5572 							ValaExpression* _tmp114_;
5573 							ValaSourceReference* _tmp115_;
5574 							ValaSourceReference* _tmp116_;
5575 							ValaExpression* _tmp117_;
5576 							ValaDataType* _tmp118_;
5577 							ValaDataType* _tmp119_;
5578 							gchar* _tmp120_;
5579 							gchar* _tmp121_;
5580 							ValaProperty* _tmp122_;
5581 							ValaDataType* _tmp123_;
5582 							ValaDataType* _tmp124_;
5583 							gchar* _tmp125_;
5584 							gchar* _tmp126_;
5585 							gchar* _tmp127_;
5586 							gchar* _tmp128_;
5587 							_tmp114_ = arg;
5588 							_tmp115_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp114_);
5589 							_tmp116_ = _tmp115_;
5590 							_tmp117_ = arg;
5591 							_tmp118_ = vala_expression_get_value_type (_tmp117_);
5592 							_tmp119_ = _tmp118_;
5593 							_tmp120_ = vala_code_node_to_string ((ValaCodeNode*) _tmp119_);
5594 							_tmp121_ = _tmp120_;
5595 							_tmp122_ = prop;
5596 							_tmp123_ = vala_property_get_property_type (_tmp122_);
5597 							_tmp124_ = _tmp123_;
5598 							_tmp125_ = vala_code_node_to_string ((ValaCodeNode*) _tmp124_);
5599 							_tmp126_ = _tmp125_;
5600 							_tmp127_ = g_strdup_printf ("Cannot convert from `%s' to `%s'", _tmp121_, _tmp126_);
5601 							_tmp128_ = _tmp127_;
5602 							vala_report_error (_tmp116_, _tmp128_);
5603 							_g_free0 (_tmp128_);
5604 							_g_free0 (_tmp126_);
5605 							_g_free0 (_tmp121_);
5606 							_vala_code_node_unref0 (prop);
5607 							_vala_code_node_unref0 (named_argument);
5608 							_vala_code_node_unref0 (arg);
5609 							break;
5610 						}
5611 						_vala_code_node_unref0 (prop);
5612 						_vala_code_node_unref0 (named_argument);
5613 						_vala_code_node_unref0 (arg);
5614 					}
5615 					_vala_iterable_unref0 (_arg_list);
5616 				}
5617 			}
5618 		}
5619 		vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
5620 		_vala_code_node_unref0 (ma);
5621 	}
5622 	VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), expr);
5623 }
5624 
5625 ValaGObjectModule*
vala_gobject_module_construct(GType object_type)5626 vala_gobject_module_construct (GType object_type)
5627 {
5628 	ValaGObjectModule* self = NULL;
5629 	self = (ValaGObjectModule*) vala_gtype_module_construct (object_type);
5630 	return self;
5631 }
5632 
5633 ValaGObjectModule*
vala_gobject_module_new(void)5634 vala_gobject_module_new (void)
5635 {
5636 	return vala_gobject_module_construct (VALA_TYPE_GOBJECT_MODULE);
5637 }
5638 
5639 static void
vala_gobject_module_class_init(ValaGObjectModuleClass * klass,gpointer klass_data)5640 vala_gobject_module_class_init (ValaGObjectModuleClass * klass,
5641                                 gpointer klass_data)
5642 {
5643 	vala_gobject_module_parent_class = g_type_class_peek_parent (klass);
5644 	((ValaCodeVisitorClass *) klass)->finalize = vala_gobject_module_finalize;
5645 	g_type_class_adjust_private_offset (klass, &ValaGObjectModule_private_offset);
5646 	((ValaCodeVisitorClass *) klass)->visit_class = (void (*) (ValaCodeVisitor*, ValaClass*)) vala_gobject_module_real_visit_class;
5647 	((ValaGTypeModuleClass *) klass)->generate_class_init = (void (*) (ValaGTypeModule*, ValaClass*)) vala_gobject_module_real_generate_class_init;
5648 	((ValaCodeVisitorClass *) klass)->visit_constructor = (void (*) (ValaCodeVisitor*, ValaConstructor*)) vala_gobject_module_real_visit_constructor;
5649 	((ValaCCodeBaseModuleClass *) klass)->get_dynamic_property_getter_cname = (gchar* (*) (ValaCCodeBaseModule*, ValaDynamicProperty*)) vala_gobject_module_real_get_dynamic_property_getter_cname;
5650 	((ValaCCodeBaseModuleClass *) klass)->get_dynamic_property_setter_cname = (gchar* (*) (ValaCCodeBaseModule*, ValaDynamicProperty*)) vala_gobject_module_real_get_dynamic_property_setter_cname;
5651 	((ValaCCodeBaseModuleClass *) klass)->get_dynamic_signal_cname = (gchar* (*) (ValaCCodeBaseModule*, ValaDynamicSignal*)) vala_gobject_module_real_get_dynamic_signal_cname;
5652 	((ValaCCodeBaseModuleClass *) klass)->get_dynamic_signal_connect_wrapper_name = (gchar* (*) (ValaCCodeBaseModule*, ValaDynamicSignal*)) vala_gobject_module_real_get_dynamic_signal_connect_wrapper_name;
5653 	((ValaCCodeBaseModuleClass *) klass)->get_dynamic_signal_connect_after_wrapper_name = (gchar* (*) (ValaCCodeBaseModule*, ValaDynamicSignal*)) vala_gobject_module_real_get_dynamic_signal_connect_after_wrapper_name;
5654 	((ValaCodeVisitorClass *) klass)->visit_property = (void (*) (ValaCodeVisitor*, ValaProperty*)) vala_gobject_module_real_visit_property;
5655 	((ValaCodeVisitorClass *) klass)->visit_method_call = (void (*) (ValaCodeVisitor*, ValaMethodCall*)) vala_gobject_module_real_visit_method_call;
5656 }
5657 
5658 static void
vala_gobject_module_instance_init(ValaGObjectModule * self,gpointer klass)5659 vala_gobject_module_instance_init (ValaGObjectModule * self,
5660                                    gpointer klass)
5661 {
5662 	self->priv = vala_gobject_module_get_instance_private (self);
5663 }
5664 
5665 static void
vala_gobject_module_finalize(ValaCodeVisitor * obj)5666 vala_gobject_module_finalize (ValaCodeVisitor * obj)
5667 {
5668 	ValaGObjectModule * self;
5669 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_GOBJECT_MODULE, ValaGObjectModule);
5670 	VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->finalize (obj);
5671 }
5672 
5673 static GType
vala_gobject_module_get_type_once(void)5674 vala_gobject_module_get_type_once (void)
5675 {
5676 	static const GTypeInfo g_define_type_info = { sizeof (ValaGObjectModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gobject_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGObjectModule), 0, (GInstanceInitFunc) vala_gobject_module_instance_init, NULL };
5677 	GType vala_gobject_module_type_id;
5678 	vala_gobject_module_type_id = g_type_register_static (VALA_TYPE_GTYPE_MODULE, "ValaGObjectModule", &g_define_type_info, 0);
5679 	ValaGObjectModule_private_offset = g_type_add_instance_private (vala_gobject_module_type_id, sizeof (ValaGObjectModulePrivate));
5680 	return vala_gobject_module_type_id;
5681 }
5682 
5683 GType
vala_gobject_module_get_type(void)5684 vala_gobject_module_get_type (void)
5685 {
5686 	static volatile gsize vala_gobject_module_type_id__volatile = 0;
5687 	if (g_once_init_enter (&vala_gobject_module_type_id__volatile)) {
5688 		GType vala_gobject_module_type_id;
5689 		vala_gobject_module_type_id = vala_gobject_module_get_type_once ();
5690 		g_once_init_leave (&vala_gobject_module_type_id__volatile, vala_gobject_module_type_id);
5691 	}
5692 	return vala_gobject_module_type_id__volatile;
5693 }
5694 
5695