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