1 /* valagtypemodule.c generated by valac, the Vala compiler
2 * generated from valagtypemodule.vala, do not modify */
3
4 /* valagtypemodule.vala
5 *
6 * Copyright (C) 2006-2010 Jürg Billeter
7 * Copyright (C) 2006-2008 Raffaele Sandrini
8 *
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
13
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
18
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 *
23 * Author:
24 * Jürg Billeter <j@bitron.ch>
25 * Raffaele Sandrini <raffaele@sandrini.ch>
26 */
27
28 #include "valacodegen.h"
29 #include <vala.h>
30 #include <valaccode.h>
31 #include <valagee.h>
32 #include <glib-object.h>
33 #include <glib.h>
34 #include <stdlib.h>
35 #include <string.h>
36
37 #define _g_free0(var) (var = (g_free (var), NULL))
38 #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
39 #define _vala_typeregister_function_unref0(var) ((var == NULL) ? NULL : (var = (vala_typeregister_function_unref (var), NULL)))
40 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
41 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
42 #define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
43 #define _vala_ccode_base_module_emit_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_base_module_emit_context_unref (var), NULL)))
44 #define _vala_ccode_declarator_suffix_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_declarator_suffix_unref (var), NULL)))
45 #define _vala_map_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_iterator_unref (var), NULL)))
46 #define _vala_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL)))
47 #define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL)))
48
49 static gpointer vala_gtype_module_parent_class = NULL;
50
51 static ValaCCodeParameter* vala_gtype_module_real_generate_parameter (ValaCCodeMethodModule* base,
52 ValaParameter* param,
53 ValaCCodeFile* decl_space,
54 ValaMap* cparam_map,
55 ValaMap* carg_map);
56 static void vala_gtype_module_real_generate_class_declaration (ValaCCodeBaseModule* base,
57 ValaClass* cl,
58 ValaCCodeFile* decl_space);
59 static void vala_gtype_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* base,
60 ValaClass* cl,
61 ValaCCodeFile* decl_space);
62 static void vala_gtype_module_generate_struct_method_declaration (ValaGTypeModule* self,
63 ValaObjectTypeSymbol* type_sym,
64 ValaMethod* m,
65 ValaCCodeStruct* instance_struct,
66 ValaCCodeStruct* type_struct,
67 ValaCCodeFile* decl_space,
68 gboolean* has_struct_member);
69 static void vala_gtype_module_generate_struct_property_declaration (ValaGTypeModule* self,
70 ValaObjectTypeSymbol* type_sym,
71 ValaProperty* prop,
72 ValaCCodeStruct* instance_struct,
73 ValaCCodeStruct* type_struct,
74 ValaCCodeFile* decl_space,
75 gboolean* has_struct_member);
76 static void vala_gtype_module_generate_struct_field_declaration (ValaGTypeModule* self,
77 ValaField* f,
78 ValaCCodeStruct* instance_struct,
79 ValaCCodeStruct* type_struct,
80 ValaCCodeFile* decl_space,
81 gboolean* has_struct_member);
82 static gboolean vala_gtype_module_real_generate_method_declaration (ValaCCodeBaseModule* base,
83 ValaMethod* m,
84 ValaCCodeFile* decl_space);
85 static void vala_gtype_module_real_generate_virtual_method_declaration (ValaGTypeModule* self,
86 ValaMethod* m,
87 ValaCCodeFile* decl_space,
88 ValaCCodeStruct* type_struct);
89 static void vala_gtype_module_generate_class_private_declaration (ValaGTypeModule* self,
90 ValaClass* cl,
91 ValaCCodeFile* decl_space);
92 static void vala_gtype_module_real_visit_class (ValaCodeVisitor* base,
93 ValaClass* cl);
94 static void vala_gtype_module_begin_base_init_function (ValaGTypeModule* self,
95 ValaClass* cl);
96 static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self,
97 ValaClass* cl);
98 static void vala_gtype_module_begin_instance_init_function (ValaGTypeModule* self,
99 ValaClass* cl);
100 static void vala_gtype_module_begin_base_finalize_function (ValaGTypeModule* self,
101 ValaClass* cl);
102 static void vala_gtype_module_begin_class_finalize_function (ValaGTypeModule* self,
103 ValaClass* cl);
104 static void vala_gtype_module_begin_finalize_function (ValaGTypeModule* self,
105 ValaClass* cl);
106 static void vala_gtype_module_add_type_value_table_init_function (ValaGTypeModule* self,
107 ValaClass* cl);
108 static void vala_gtype_module_add_type_value_table_free_function (ValaGTypeModule* self,
109 ValaClass* cl);
110 static void vala_gtype_module_add_type_value_table_copy_function (ValaGTypeModule* self,
111 ValaClass* cl);
112 static void vala_gtype_module_add_type_value_table_peek_pointer_function (ValaGTypeModule* self,
113 ValaClass* cl);
114 static void vala_gtype_module_add_type_value_table_collect_value_function (ValaGTypeModule* self,
115 ValaClass* cl);
116 static void vala_gtype_module_add_type_value_table_lcopy_value_function (ValaGTypeModule* self,
117 ValaClass* cl);
118 static void vala_gtype_module_add_g_param_spec_type_function (ValaGTypeModule* self,
119 ValaClass* cl);
120 static void vala_gtype_module_add_g_value_get_function (ValaGTypeModule* self,
121 ValaClass* cl);
122 static void vala_gtype_module_add_g_value_set_function (ValaGTypeModule* self,
123 ValaClass* cl);
124 static void vala_gtype_module_add_g_value_take_function (ValaGTypeModule* self,
125 ValaClass* cl);
126 static void vala_gtype_module_add_base_init_function (ValaGTypeModule* self,
127 ValaClass* cl);
128 static void vala_gtype_module_add_class_init_function (ValaGTypeModule* self,
129 ValaClass* cl);
130 static void vala_gtype_module_add_base_finalize_function (ValaGTypeModule* self,
131 ValaClass* cl);
132 static void vala_gtype_module_add_class_finalize_function (ValaGTypeModule* self,
133 ValaClass* cl);
134 static void vala_gtype_module_add_interface_init_function (ValaGTypeModule* self,
135 ValaClass* cl,
136 ValaInterface* iface);
137 static void vala_gtype_module_add_instance_init_function (ValaGTypeModule* self,
138 ValaClass* cl);
139 static void vala_gtype_module_add_finalize_function (ValaGTypeModule* self,
140 ValaClass* cl);
141 static void vala_gtype_module_real_generate_class_init (ValaGTypeModule* self,
142 ValaClass* cl);
143 static void vala_gtype_module_real_end_instance_init (ValaGTypeModule* self,
144 ValaClass* cl);
145 static ValaCCodeExpression* vala_gtype_module_cast_method_pointer (ValaGTypeModule* self,
146 ValaMethod* m,
147 ValaCCodeExpression* cfunc,
148 ValaObjectTypeSymbol* base_type,
149 gint direction);
150 static void vala_gtype_module_add_generic_accessor_function (ValaGTypeModule* self,
151 const gchar* base_name,
152 const gchar* return_type,
153 ValaCCodeExpression* expression,
154 ValaTypeParameter* p,
155 ValaClass* cl,
156 ValaInterface* iface);
157 static ValaCCodeExpression* vala_gtype_module_cast_property_accessor_pointer (ValaGTypeModule* self,
158 ValaPropertyAccessor* acc,
159 ValaCCodeExpression* cfunc,
160 ValaObjectTypeSymbol* base_type);
161 static ValaCCodeExpression* vala_gtype_module_real_get_param_spec_cexpression (ValaCCodeBaseModule* base,
162 ValaProperty* prop);
163 static ValaCCodeExpression* vala_gtype_module_real_get_param_spec (ValaCCodeBaseModule* base,
164 ValaProperty* prop);
165 static void vala_gtype_module_real_generate_interface_declaration (ValaCCodeBaseModule* base,
166 ValaInterface* iface,
167 ValaCCodeFile* decl_space);
168 static void vala_gtype_module_real_visit_interface (ValaCodeVisitor* base,
169 ValaInterface* iface);
170 static void vala_gtype_module_add_interface_default_init_function (ValaGTypeModule* self,
171 ValaInterface* iface);
172 static void vala_gtype_module_real_visit_struct (ValaCodeVisitor* base,
173 ValaStruct* st);
174 static void vala_gtype_module_real_visit_enum (ValaCodeVisitor* base,
175 ValaEnum* en);
176 static void vala_gtype_module_real_visit_method_call (ValaCodeVisitor* base,
177 ValaMethodCall* expr);
178 static void vala_gtype_module_real_visit_property (ValaCodeVisitor* base,
179 ValaProperty* prop);
180 static void vala_gtype_module_real_create_type_check_statement (ValaCCodeBaseModule* base,
181 ValaCodeNode* method_node,
182 ValaDataType* ret_type,
183 ValaTypeSymbol* t,
184 gboolean non_null,
185 const gchar* var_name);
186 static void vala_gtype_module_real_visit_cast_expression (ValaCodeVisitor* base,
187 ValaCastExpression* expr);
188 static GType vala_gtype_module_get_type_once (void);
189
190 static ValaCCodeParameter*
vala_gtype_module_real_generate_parameter(ValaCCodeMethodModule * base,ValaParameter * param,ValaCCodeFile * decl_space,ValaMap * cparam_map,ValaMap * carg_map)191 vala_gtype_module_real_generate_parameter (ValaCCodeMethodModule* base,
192 ValaParameter* param,
193 ValaCCodeFile* decl_space,
194 ValaMap* cparam_map,
195 ValaMap* carg_map)
196 {
197 ValaGTypeModule * self;
198 ValaDataType* _tmp0_;
199 ValaDataType* _tmp1_;
200 ValaDataType* _tmp3_;
201 ValaDataType* _tmp4_;
202 gchar* ctypename = NULL;
203 ValaDataType* _tmp5_;
204 ValaDataType* _tmp6_;
205 gchar* _tmp7_;
206 ValaParameterDirection _tmp8_;
207 ValaParameterDirection _tmp9_;
208 ValaCCodeParameter* cparam = NULL;
209 gchar* _tmp12_;
210 gchar* _tmp13_;
211 const gchar* _tmp14_;
212 ValaCCodeParameter* _tmp15_;
213 ValaCCodeParameter* _tmp16_;
214 gboolean _tmp17_;
215 gboolean _tmp18_;
216 ValaCCodeParameter* _tmp20_;
217 ValaCCodeParameter* result = NULL;
218 self = (ValaGTypeModule*) base;
219 g_return_val_if_fail (param != NULL, NULL);
220 g_return_val_if_fail (decl_space != NULL, NULL);
221 g_return_val_if_fail (cparam_map != NULL, NULL);
222 _tmp0_ = vala_variable_get_variable_type ((ValaVariable*) param);
223 _tmp1_ = _tmp0_;
224 if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_OBJECT_TYPE)) {
225 ValaCCodeParameter* _tmp2_;
226 _tmp2_ = VALA_CCODE_METHOD_MODULE_CLASS (vala_gtype_module_parent_class)->generate_parameter ((ValaCCodeMethodModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), param, decl_space, cparam_map, carg_map);
227 result = _tmp2_;
228 return result;
229 }
230 _tmp3_ = vala_variable_get_variable_type ((ValaVariable*) param);
231 _tmp4_ = _tmp3_;
232 vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp4_, decl_space);
233 _tmp5_ = vala_variable_get_variable_type ((ValaVariable*) param);
234 _tmp6_ = _tmp5_;
235 _tmp7_ = vala_get_ccode_name ((ValaCodeNode*) _tmp6_);
236 ctypename = _tmp7_;
237 _tmp8_ = vala_parameter_get_direction (param);
238 _tmp9_ = _tmp8_;
239 if (_tmp9_ != VALA_PARAMETER_DIRECTION_IN) {
240 const gchar* _tmp10_;
241 gchar* _tmp11_;
242 _tmp10_ = ctypename;
243 _tmp11_ = g_strdup_printf ("%s *", _tmp10_);
244 _g_free0 (ctypename);
245 ctypename = _tmp11_;
246 }
247 _tmp12_ = vala_get_ccode_name ((ValaCodeNode*) param);
248 _tmp13_ = _tmp12_;
249 _tmp14_ = ctypename;
250 _tmp15_ = vala_ccode_parameter_new (_tmp13_, _tmp14_);
251 _tmp16_ = _tmp15_;
252 _g_free0 (_tmp13_);
253 cparam = _tmp16_;
254 _tmp17_ = vala_parameter_get_format_arg (param);
255 _tmp18_ = _tmp17_;
256 if (_tmp18_) {
257 ValaCCodeParameter* _tmp19_;
258 _tmp19_ = cparam;
259 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp19_, VALA_CCODE_MODIFIERS_FORMAT_ARG);
260 }
261 _tmp20_ = cparam;
262 vala_map_set (cparam_map, (gpointer) ((gintptr) vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, vala_get_ccode_pos (param), FALSE)), _tmp20_);
263 if (carg_map != NULL) {
264 ValaCCodeExpression* _tmp21_;
265 ValaCCodeExpression* _tmp22_;
266 _tmp21_ = vala_ccode_base_module_get_parameter_cexpression ((ValaCCodeBaseModule*) self, param);
267 _tmp22_ = _tmp21_;
268 vala_map_set (carg_map, (gpointer) ((gintptr) vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, vala_get_ccode_pos (param), FALSE)), _tmp22_);
269 _vala_ccode_node_unref0 (_tmp22_);
270 }
271 result = cparam;
272 _g_free0 (ctypename);
273 return result;
274 }
275
276 static gpointer
_vala_code_node_ref0(gpointer self)277 _vala_code_node_ref0 (gpointer self)
278 {
279 return self ? vala_code_node_ref (self) : NULL;
280 }
281
282 static void
vala_gtype_module_real_generate_class_declaration(ValaCCodeBaseModule * base,ValaClass * cl,ValaCCodeFile * decl_space)283 vala_gtype_module_real_generate_class_declaration (ValaCCodeBaseModule* base,
284 ValaClass* cl,
285 ValaCCodeFile* decl_space)
286 {
287 ValaGTypeModule * self;
288 gchar* _tmp0_;
289 gchar* _tmp1_;
290 gboolean _tmp2_;
291 ValaClass* _tmp3_;
292 ValaClass* _tmp4_;
293 gboolean is_gtypeinstance = FALSE;
294 gboolean _tmp7_;
295 gboolean _tmp8_;
296 gboolean _tmp9_ = FALSE;
297 gboolean is_fundamental = FALSE;
298 gboolean is_gsource = FALSE;
299 ValaClass* _tmp12_;
300 gboolean _tmp82_ = FALSE;
301 gboolean _tmp83_;
302 gboolean _tmp84_;
303 ValaClass* base_class = NULL;
304 ValaClass* _tmp246_;
305 gboolean _tmp254_ = FALSE;
306 gboolean _tmp255_ = FALSE;
307 ValaClass* _tmp256_;
308 gboolean _tmp257_;
309 gboolean _tmp258_;
310 self = (ValaGTypeModule*) base;
311 g_return_if_fail (cl != NULL);
312 g_return_if_fail (decl_space != NULL);
313 _tmp0_ = vala_get_ccode_name ((ValaCodeNode*) cl);
314 _tmp1_ = _tmp0_;
315 _tmp2_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) cl, _tmp1_);
316 _g_free0 (_tmp1_);
317 if (_tmp2_) {
318 return;
319 }
320 _tmp3_ = vala_class_get_base_class (cl);
321 _tmp4_ = _tmp3_;
322 if (_tmp4_ != NULL) {
323 ValaClass* _tmp5_;
324 ValaClass* _tmp6_;
325 _tmp5_ = vala_class_get_base_class (cl);
326 _tmp6_ = _tmp5_;
327 vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, _tmp6_, decl_space);
328 }
329 _tmp7_ = vala_class_get_is_compact (cl);
330 _tmp8_ = _tmp7_;
331 is_gtypeinstance = !_tmp8_;
332 if (is_gtypeinstance) {
333 ValaClass* _tmp10_;
334 ValaClass* _tmp11_;
335 _tmp10_ = vala_class_get_base_class (cl);
336 _tmp11_ = _tmp10_;
337 _tmp9_ = _tmp11_ == NULL;
338 } else {
339 _tmp9_ = FALSE;
340 }
341 is_fundamental = _tmp9_;
342 _tmp12_ = ((ValaCCodeBaseModule*) self)->gsource_type;
343 is_gsource = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp12_);
344 if (is_gtypeinstance) {
345 ValaCCodeNewline* _tmp13_;
346 ValaCCodeNewline* _tmp14_;
347 gchar* macro = NULL;
348 gchar* _tmp15_;
349 gchar* _tmp16_;
350 gchar* _tmp17_;
351 gchar* _tmp18_;
352 gchar* _tmp19_;
353 gchar* _tmp20_;
354 const gchar* _tmp21_;
355 ValaCCodeMacroReplacement* _tmp22_;
356 ValaCCodeMacroReplacement* _tmp23_;
357 gchar* _tmp24_;
358 gchar* _tmp25_;
359 gchar* _tmp26_;
360 gchar* _tmp27_;
361 gchar* _tmp28_;
362 gchar* _tmp29_;
363 gchar* _tmp30_;
364 gchar* _tmp31_;
365 gchar* _tmp32_;
366 const gchar* _tmp33_;
367 ValaCCodeMacroReplacement* _tmp34_;
368 ValaCCodeMacroReplacement* _tmp35_;
369 gchar* _tmp36_;
370 gchar* _tmp37_;
371 gchar* _tmp38_;
372 gchar* _tmp39_;
373 gchar* _tmp40_;
374 gchar* _tmp41_;
375 gchar* _tmp42_;
376 gchar* _tmp43_;
377 gchar* _tmp44_;
378 const gchar* _tmp45_;
379 ValaCCodeMacroReplacement* _tmp46_;
380 ValaCCodeMacroReplacement* _tmp47_;
381 gchar* _tmp48_;
382 gchar* _tmp49_;
383 gchar* _tmp50_;
384 gchar* _tmp51_;
385 gchar* _tmp52_;
386 gchar* _tmp53_;
387 gchar* _tmp54_;
388 const gchar* _tmp55_;
389 ValaCCodeMacroReplacement* _tmp56_;
390 ValaCCodeMacroReplacement* _tmp57_;
391 gchar* _tmp58_;
392 gchar* _tmp59_;
393 gchar* _tmp60_;
394 gchar* _tmp61_;
395 gchar* _tmp62_;
396 gchar* _tmp63_;
397 gchar* _tmp64_;
398 const gchar* _tmp65_;
399 ValaCCodeMacroReplacement* _tmp66_;
400 ValaCCodeMacroReplacement* _tmp67_;
401 gchar* _tmp68_;
402 gchar* _tmp69_;
403 gchar* _tmp70_;
404 gchar* _tmp71_;
405 gchar* _tmp72_;
406 gchar* _tmp73_;
407 gchar* _tmp74_;
408 gchar* _tmp75_;
409 gchar* _tmp76_;
410 const gchar* _tmp77_;
411 ValaCCodeMacroReplacement* _tmp78_;
412 ValaCCodeMacroReplacement* _tmp79_;
413 ValaCCodeNewline* _tmp80_;
414 ValaCCodeNewline* _tmp81_;
415 vala_ccode_file_add_include (decl_space, "glib-object.h", FALSE);
416 _tmp13_ = vala_ccode_newline_new ();
417 _tmp14_ = _tmp13_;
418 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp14_);
419 _vala_ccode_node_unref0 (_tmp14_);
420 _tmp15_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
421 _tmp16_ = _tmp15_;
422 _tmp17_ = g_strdup_printf ("(%s_get_type ())", _tmp16_);
423 _tmp18_ = _tmp17_;
424 _g_free0 (_tmp16_);
425 macro = _tmp18_;
426 _tmp19_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
427 _tmp20_ = _tmp19_;
428 _tmp21_ = macro;
429 _tmp22_ = vala_ccode_macro_replacement_new (_tmp20_, _tmp21_);
430 _tmp23_ = _tmp22_;
431 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp23_);
432 _vala_ccode_node_unref0 (_tmp23_);
433 _g_free0 (_tmp20_);
434 _tmp24_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
435 _tmp25_ = _tmp24_;
436 _tmp26_ = vala_get_ccode_name ((ValaCodeNode*) cl);
437 _tmp27_ = _tmp26_;
438 _tmp28_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_CAST ((obj), %s, %s))", _tmp25_, _tmp27_);
439 _g_free0 (macro);
440 macro = _tmp28_;
441 _g_free0 (_tmp27_);
442 _g_free0 (_tmp25_);
443 _tmp29_ = vala_get_ccode_type_cast_function ((ValaObjectTypeSymbol*) cl);
444 _tmp30_ = _tmp29_;
445 _tmp31_ = g_strdup_printf ("%s(obj)", _tmp30_);
446 _tmp32_ = _tmp31_;
447 _tmp33_ = macro;
448 _tmp34_ = vala_ccode_macro_replacement_new (_tmp32_, _tmp33_);
449 _tmp35_ = _tmp34_;
450 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp35_);
451 _vala_ccode_node_unref0 (_tmp35_);
452 _g_free0 (_tmp32_);
453 _g_free0 (_tmp30_);
454 _tmp36_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
455 _tmp37_ = _tmp36_;
456 _tmp38_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
457 _tmp39_ = _tmp38_;
458 _tmp40_ = g_strdup_printf ("(G_TYPE_CHECK_CLASS_CAST ((klass), %s, %s))", _tmp37_, _tmp39_);
459 _g_free0 (macro);
460 macro = _tmp40_;
461 _g_free0 (_tmp39_);
462 _g_free0 (_tmp37_);
463 _tmp41_ = vala_get_ccode_class_type_function (cl);
464 _tmp42_ = _tmp41_;
465 _tmp43_ = g_strdup_printf ("%s(klass)", _tmp42_);
466 _tmp44_ = _tmp43_;
467 _tmp45_ = macro;
468 _tmp46_ = vala_ccode_macro_replacement_new (_tmp44_, _tmp45_);
469 _tmp47_ = _tmp46_;
470 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp47_);
471 _vala_ccode_node_unref0 (_tmp47_);
472 _g_free0 (_tmp44_);
473 _g_free0 (_tmp42_);
474 _tmp48_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
475 _tmp49_ = _tmp48_;
476 _tmp50_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))", _tmp49_);
477 _g_free0 (macro);
478 macro = _tmp50_;
479 _g_free0 (_tmp49_);
480 _tmp51_ = vala_get_ccode_type_check_function ((ValaTypeSymbol*) cl);
481 _tmp52_ = _tmp51_;
482 _tmp53_ = g_strdup_printf ("%s(obj)", _tmp52_);
483 _tmp54_ = _tmp53_;
484 _tmp55_ = macro;
485 _tmp56_ = vala_ccode_macro_replacement_new (_tmp54_, _tmp55_);
486 _tmp57_ = _tmp56_;
487 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp57_);
488 _vala_ccode_node_unref0 (_tmp57_);
489 _g_free0 (_tmp54_);
490 _g_free0 (_tmp52_);
491 _tmp58_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
492 _tmp59_ = _tmp58_;
493 _tmp60_ = g_strdup_printf ("(G_TYPE_CHECK_CLASS_TYPE ((klass), %s))", _tmp59_);
494 _g_free0 (macro);
495 macro = _tmp60_;
496 _g_free0 (_tmp59_);
497 _tmp61_ = vala_get_ccode_class_type_check_function (cl);
498 _tmp62_ = _tmp61_;
499 _tmp63_ = g_strdup_printf ("%s(klass)", _tmp62_);
500 _tmp64_ = _tmp63_;
501 _tmp65_ = macro;
502 _tmp66_ = vala_ccode_macro_replacement_new (_tmp64_, _tmp65_);
503 _tmp67_ = _tmp66_;
504 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp67_);
505 _vala_ccode_node_unref0 (_tmp67_);
506 _g_free0 (_tmp64_);
507 _g_free0 (_tmp62_);
508 _tmp68_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
509 _tmp69_ = _tmp68_;
510 _tmp70_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
511 _tmp71_ = _tmp70_;
512 _tmp72_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_CLASS ((obj), %s, %s))", _tmp69_, _tmp71_);
513 _g_free0 (macro);
514 macro = _tmp72_;
515 _g_free0 (_tmp71_);
516 _g_free0 (_tmp69_);
517 _tmp73_ = vala_get_ccode_type_get_function ((ValaObjectTypeSymbol*) cl);
518 _tmp74_ = _tmp73_;
519 _tmp75_ = g_strdup_printf ("%s(obj)", _tmp74_);
520 _tmp76_ = _tmp75_;
521 _tmp77_ = macro;
522 _tmp78_ = vala_ccode_macro_replacement_new (_tmp76_, _tmp77_);
523 _tmp79_ = _tmp78_;
524 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp79_);
525 _vala_ccode_node_unref0 (_tmp79_);
526 _g_free0 (_tmp76_);
527 _g_free0 (_tmp74_);
528 _tmp80_ = vala_ccode_newline_new ();
529 _tmp81_ = _tmp80_;
530 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp81_);
531 _vala_ccode_node_unref0 (_tmp81_);
532 _g_free0 (macro);
533 }
534 _tmp83_ = vala_class_get_is_compact (cl);
535 _tmp84_ = _tmp83_;
536 if (_tmp84_) {
537 ValaClass* _tmp85_;
538 ValaClass* _tmp86_;
539 _tmp85_ = vala_class_get_base_class (cl);
540 _tmp86_ = _tmp85_;
541 _tmp82_ = _tmp86_ != NULL;
542 } else {
543 _tmp82_ = FALSE;
544 }
545 if (_tmp82_) {
546 ValaClass* _tmp87_;
547 ValaClass* _tmp88_;
548 gchar* _tmp89_;
549 gchar* _tmp90_;
550 gchar* _tmp91_;
551 gchar* _tmp92_;
552 ValaCCodeVariableDeclarator* _tmp93_;
553 ValaCCodeVariableDeclarator* _tmp94_;
554 ValaCCodeTypeDefinition* _tmp95_;
555 ValaCCodeTypeDefinition* _tmp96_;
556 _tmp87_ = vala_class_get_base_class (cl);
557 _tmp88_ = _tmp87_;
558 _tmp89_ = vala_get_ccode_name ((ValaCodeNode*) _tmp88_);
559 _tmp90_ = _tmp89_;
560 _tmp91_ = vala_get_ccode_name ((ValaCodeNode*) cl);
561 _tmp92_ = _tmp91_;
562 _tmp93_ = vala_ccode_variable_declarator_new (_tmp92_, NULL, NULL);
563 _tmp94_ = _tmp93_;
564 _tmp95_ = vala_ccode_type_definition_new (_tmp90_, (ValaCCodeDeclarator*) _tmp94_);
565 _tmp96_ = _tmp95_;
566 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp96_);
567 _vala_ccode_node_unref0 (_tmp96_);
568 _vala_ccode_node_unref0 (_tmp94_);
569 _g_free0 (_tmp92_);
570 _g_free0 (_tmp90_);
571 } else {
572 gchar* _tmp97_;
573 gchar* _tmp98_;
574 gchar* _tmp99_;
575 gchar* _tmp100_;
576 gchar* _tmp101_;
577 gchar* _tmp102_;
578 ValaCCodeVariableDeclarator* _tmp103_;
579 ValaCCodeVariableDeclarator* _tmp104_;
580 ValaCCodeTypeDefinition* _tmp105_;
581 ValaCCodeTypeDefinition* _tmp106_;
582 _tmp97_ = vala_get_ccode_name ((ValaCodeNode*) cl);
583 _tmp98_ = _tmp97_;
584 _tmp99_ = g_strdup_printf ("struct _%s", _tmp98_);
585 _tmp100_ = _tmp99_;
586 _tmp101_ = vala_get_ccode_name ((ValaCodeNode*) cl);
587 _tmp102_ = _tmp101_;
588 _tmp103_ = vala_ccode_variable_declarator_new (_tmp102_, NULL, NULL);
589 _tmp104_ = _tmp103_;
590 _tmp105_ = vala_ccode_type_definition_new (_tmp100_, (ValaCCodeDeclarator*) _tmp104_);
591 _tmp106_ = _tmp105_;
592 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp106_);
593 _vala_ccode_node_unref0 (_tmp106_);
594 _vala_ccode_node_unref0 (_tmp104_);
595 _g_free0 (_tmp102_);
596 _g_free0 (_tmp100_);
597 _g_free0 (_tmp98_);
598 }
599 if (is_fundamental) {
600 ValaCCodeFunction* ref_fun = NULL;
601 gchar* _tmp107_;
602 gchar* _tmp108_;
603 ValaCCodeFunction* _tmp109_;
604 ValaCCodeFunction* _tmp110_;
605 ValaCCodeFunction* unref_fun = NULL;
606 gchar* _tmp111_;
607 gchar* _tmp112_;
608 ValaCCodeFunction* _tmp113_;
609 ValaCCodeFunction* _tmp114_;
610 ValaCCodeFunction* _tmp124_;
611 ValaCCodeParameter* _tmp125_;
612 ValaCCodeParameter* _tmp126_;
613 ValaCCodeFunction* _tmp127_;
614 ValaCCodeParameter* _tmp128_;
615 ValaCCodeParameter* _tmp129_;
616 ValaCCodeFunction* _tmp130_;
617 ValaCCodeFunction* _tmp131_;
618 ValaCCodeFunction* function = NULL;
619 gchar* _tmp132_;
620 gchar* _tmp133_;
621 ValaCCodeFunction* _tmp134_;
622 ValaCCodeFunction* _tmp135_;
623 ValaCCodeFunction* _tmp136_;
624 ValaCCodeParameter* _tmp137_;
625 ValaCCodeParameter* _tmp138_;
626 ValaCCodeFunction* _tmp139_;
627 ValaCCodeParameter* _tmp140_;
628 ValaCCodeParameter* _tmp141_;
629 ValaCCodeFunction* _tmp142_;
630 ValaCCodeParameter* _tmp143_;
631 ValaCCodeParameter* _tmp144_;
632 ValaCCodeFunction* _tmp145_;
633 ValaCCodeParameter* _tmp146_;
634 ValaCCodeParameter* _tmp147_;
635 ValaCCodeFunction* _tmp148_;
636 ValaCCodeParameter* _tmp149_;
637 ValaCCodeParameter* _tmp150_;
638 ValaCCodeFunction* _tmp158_;
639 gchar* _tmp159_;
640 gchar* _tmp160_;
641 ValaCCodeFunction* _tmp161_;
642 ValaCCodeFunction* _tmp162_;
643 ValaCCodeParameter* _tmp163_;
644 ValaCCodeParameter* _tmp164_;
645 ValaCCodeFunction* _tmp165_;
646 ValaCCodeParameter* _tmp166_;
647 ValaCCodeParameter* _tmp167_;
648 ValaCCodeFunction* _tmp175_;
649 gchar* _tmp176_;
650 gchar* _tmp177_;
651 ValaCCodeFunction* _tmp178_;
652 ValaCCodeFunction* _tmp179_;
653 ValaCCodeParameter* _tmp180_;
654 ValaCCodeParameter* _tmp181_;
655 ValaCCodeFunction* _tmp182_;
656 ValaCCodeParameter* _tmp183_;
657 ValaCCodeParameter* _tmp184_;
658 ValaCCodeFunction* _tmp192_;
659 gchar* _tmp193_;
660 gchar* _tmp194_;
661 ValaCCodeFunction* _tmp195_;
662 ValaCCodeFunction* _tmp196_;
663 ValaCCodeParameter* _tmp197_;
664 ValaCCodeParameter* _tmp198_;
665 ValaCCodeFunction* _tmp206_;
666 _tmp107_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
667 _tmp108_ = _tmp107_;
668 _tmp109_ = vala_ccode_function_new (_tmp108_, "gpointer");
669 _tmp110_ = _tmp109_;
670 _g_free0 (_tmp108_);
671 ref_fun = _tmp110_;
672 _tmp111_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) cl);
673 _tmp112_ = _tmp111_;
674 _tmp113_ = vala_ccode_function_new (_tmp112_, "void");
675 _tmp114_ = _tmp113_;
676 _g_free0 (_tmp112_);
677 unref_fun = _tmp114_;
678 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
679 ValaCCodeFunction* _tmp115_;
680 ValaCCodeFunction* _tmp116_;
681 _tmp115_ = ref_fun;
682 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp115_, VALA_CCODE_MODIFIERS_STATIC);
683 _tmp116_ = unref_fun;
684 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp116_, VALA_CCODE_MODIFIERS_STATIC);
685 } else {
686 gboolean _tmp117_ = FALSE;
687 ValaCodeContext* _tmp118_;
688 ValaCodeContext* _tmp119_;
689 gboolean _tmp120_;
690 gboolean _tmp121_;
691 _tmp118_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
692 _tmp119_ = _tmp118_;
693 _tmp120_ = vala_code_context_get_hide_internal (_tmp119_);
694 _tmp121_ = _tmp120_;
695 if (_tmp121_) {
696 _tmp117_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
697 } else {
698 _tmp117_ = FALSE;
699 }
700 if (_tmp117_) {
701 ValaCCodeFunction* _tmp122_;
702 ValaCCodeFunction* _tmp123_;
703 _tmp122_ = ref_fun;
704 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp122_, VALA_CCODE_MODIFIERS_INTERNAL);
705 _tmp123_ = unref_fun;
706 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp123_, VALA_CCODE_MODIFIERS_INTERNAL);
707 }
708 }
709 _tmp124_ = ref_fun;
710 _tmp125_ = vala_ccode_parameter_new ("instance", "gpointer");
711 _tmp126_ = _tmp125_;
712 vala_ccode_function_add_parameter (_tmp124_, _tmp126_);
713 _vala_ccode_node_unref0 (_tmp126_);
714 _tmp127_ = unref_fun;
715 _tmp128_ = vala_ccode_parameter_new ("instance", "gpointer");
716 _tmp129_ = _tmp128_;
717 vala_ccode_function_add_parameter (_tmp127_, _tmp129_);
718 _vala_ccode_node_unref0 (_tmp129_);
719 _tmp130_ = ref_fun;
720 vala_ccode_file_add_function_declaration (decl_space, _tmp130_);
721 _tmp131_ = unref_fun;
722 vala_ccode_file_add_function_declaration (decl_space, _tmp131_);
723 _tmp132_ = vala_get_ccode_param_spec_function ((ValaCodeNode*) cl);
724 _tmp133_ = _tmp132_;
725 _tmp134_ = vala_ccode_function_new (_tmp133_, "GParamSpec*");
726 _tmp135_ = _tmp134_;
727 _g_free0 (_tmp133_);
728 function = _tmp135_;
729 _tmp136_ = function;
730 _tmp137_ = vala_ccode_parameter_new ("name", "const gchar*");
731 _tmp138_ = _tmp137_;
732 vala_ccode_function_add_parameter (_tmp136_, _tmp138_);
733 _vala_ccode_node_unref0 (_tmp138_);
734 _tmp139_ = function;
735 _tmp140_ = vala_ccode_parameter_new ("nick", "const gchar*");
736 _tmp141_ = _tmp140_;
737 vala_ccode_function_add_parameter (_tmp139_, _tmp141_);
738 _vala_ccode_node_unref0 (_tmp141_);
739 _tmp142_ = function;
740 _tmp143_ = vala_ccode_parameter_new ("blurb", "const gchar*");
741 _tmp144_ = _tmp143_;
742 vala_ccode_function_add_parameter (_tmp142_, _tmp144_);
743 _vala_ccode_node_unref0 (_tmp144_);
744 _tmp145_ = function;
745 _tmp146_ = vala_ccode_parameter_new ("object_type", "GType");
746 _tmp147_ = _tmp146_;
747 vala_ccode_function_add_parameter (_tmp145_, _tmp147_);
748 _vala_ccode_node_unref0 (_tmp147_);
749 _tmp148_ = function;
750 _tmp149_ = vala_ccode_parameter_new ("flags", "GParamFlags");
751 _tmp150_ = _tmp149_;
752 vala_ccode_function_add_parameter (_tmp148_, _tmp150_);
753 _vala_ccode_node_unref0 (_tmp150_);
754 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
755 ValaCCodeFunction* _tmp151_;
756 _tmp151_ = function;
757 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp151_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
758 } else {
759 gboolean _tmp152_ = FALSE;
760 ValaCodeContext* _tmp153_;
761 ValaCodeContext* _tmp154_;
762 gboolean _tmp155_;
763 gboolean _tmp156_;
764 _tmp153_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
765 _tmp154_ = _tmp153_;
766 _tmp155_ = vala_code_context_get_hide_internal (_tmp154_);
767 _tmp156_ = _tmp155_;
768 if (_tmp156_) {
769 _tmp152_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
770 } else {
771 _tmp152_ = FALSE;
772 }
773 if (_tmp152_) {
774 ValaCCodeFunction* _tmp157_;
775 _tmp157_ = function;
776 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp157_, VALA_CCODE_MODIFIERS_INTERNAL);
777 }
778 }
779 _tmp158_ = function;
780 vala_ccode_file_add_function_declaration (decl_space, _tmp158_);
781 _tmp159_ = vala_get_ccode_set_value_function ((ValaCodeNode*) cl);
782 _tmp160_ = _tmp159_;
783 _tmp161_ = vala_ccode_function_new (_tmp160_, "void");
784 _vala_ccode_node_unref0 (function);
785 function = _tmp161_;
786 _g_free0 (_tmp160_);
787 _tmp162_ = function;
788 _tmp163_ = vala_ccode_parameter_new ("value", "GValue*");
789 _tmp164_ = _tmp163_;
790 vala_ccode_function_add_parameter (_tmp162_, _tmp164_);
791 _vala_ccode_node_unref0 (_tmp164_);
792 _tmp165_ = function;
793 _tmp166_ = vala_ccode_parameter_new ("v_object", "gpointer");
794 _tmp167_ = _tmp166_;
795 vala_ccode_function_add_parameter (_tmp165_, _tmp167_);
796 _vala_ccode_node_unref0 (_tmp167_);
797 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
798 ValaCCodeFunction* _tmp168_;
799 _tmp168_ = function;
800 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp168_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
801 } else {
802 gboolean _tmp169_ = FALSE;
803 ValaCodeContext* _tmp170_;
804 ValaCodeContext* _tmp171_;
805 gboolean _tmp172_;
806 gboolean _tmp173_;
807 _tmp170_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
808 _tmp171_ = _tmp170_;
809 _tmp172_ = vala_code_context_get_hide_internal (_tmp171_);
810 _tmp173_ = _tmp172_;
811 if (_tmp173_) {
812 _tmp169_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
813 } else {
814 _tmp169_ = FALSE;
815 }
816 if (_tmp169_) {
817 ValaCCodeFunction* _tmp174_;
818 _tmp174_ = function;
819 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp174_, VALA_CCODE_MODIFIERS_INTERNAL | VALA_CCODE_MODIFIERS_UNUSED);
820 }
821 }
822 _tmp175_ = function;
823 vala_ccode_file_add_function_declaration (decl_space, _tmp175_);
824 _tmp176_ = vala_get_ccode_take_value_function ((ValaCodeNode*) cl);
825 _tmp177_ = _tmp176_;
826 _tmp178_ = vala_ccode_function_new (_tmp177_, "void");
827 _vala_ccode_node_unref0 (function);
828 function = _tmp178_;
829 _g_free0 (_tmp177_);
830 _tmp179_ = function;
831 _tmp180_ = vala_ccode_parameter_new ("value", "GValue*");
832 _tmp181_ = _tmp180_;
833 vala_ccode_function_add_parameter (_tmp179_, _tmp181_);
834 _vala_ccode_node_unref0 (_tmp181_);
835 _tmp182_ = function;
836 _tmp183_ = vala_ccode_parameter_new ("v_object", "gpointer");
837 _tmp184_ = _tmp183_;
838 vala_ccode_function_add_parameter (_tmp182_, _tmp184_);
839 _vala_ccode_node_unref0 (_tmp184_);
840 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
841 ValaCCodeFunction* _tmp185_;
842 _tmp185_ = function;
843 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp185_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
844 } else {
845 gboolean _tmp186_ = FALSE;
846 ValaCodeContext* _tmp187_;
847 ValaCodeContext* _tmp188_;
848 gboolean _tmp189_;
849 gboolean _tmp190_;
850 _tmp187_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
851 _tmp188_ = _tmp187_;
852 _tmp189_ = vala_code_context_get_hide_internal (_tmp188_);
853 _tmp190_ = _tmp189_;
854 if (_tmp190_) {
855 _tmp186_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
856 } else {
857 _tmp186_ = FALSE;
858 }
859 if (_tmp186_) {
860 ValaCCodeFunction* _tmp191_;
861 _tmp191_ = function;
862 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp191_, VALA_CCODE_MODIFIERS_INTERNAL);
863 }
864 }
865 _tmp192_ = function;
866 vala_ccode_file_add_function_declaration (decl_space, _tmp192_);
867 _tmp193_ = vala_get_ccode_get_value_function ((ValaCodeNode*) cl);
868 _tmp194_ = _tmp193_;
869 _tmp195_ = vala_ccode_function_new (_tmp194_, "gpointer");
870 _vala_ccode_node_unref0 (function);
871 function = _tmp195_;
872 _g_free0 (_tmp194_);
873 _tmp196_ = function;
874 _tmp197_ = vala_ccode_parameter_new ("value", "const GValue*");
875 _tmp198_ = _tmp197_;
876 vala_ccode_function_add_parameter (_tmp196_, _tmp198_);
877 _vala_ccode_node_unref0 (_tmp198_);
878 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
879 ValaCCodeFunction* _tmp199_;
880 _tmp199_ = function;
881 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp199_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
882 } else {
883 gboolean _tmp200_ = FALSE;
884 ValaCodeContext* _tmp201_;
885 ValaCodeContext* _tmp202_;
886 gboolean _tmp203_;
887 gboolean _tmp204_;
888 _tmp201_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
889 _tmp202_ = _tmp201_;
890 _tmp203_ = vala_code_context_get_hide_internal (_tmp202_);
891 _tmp204_ = _tmp203_;
892 if (_tmp204_) {
893 _tmp200_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
894 } else {
895 _tmp200_ = FALSE;
896 }
897 if (_tmp200_) {
898 ValaCCodeFunction* _tmp205_;
899 _tmp205_ = function;
900 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp205_, VALA_CCODE_MODIFIERS_INTERNAL | VALA_CCODE_MODIFIERS_UNUSED);
901 }
902 }
903 _tmp206_ = function;
904 vala_ccode_file_add_function_declaration (decl_space, _tmp206_);
905 _vala_ccode_node_unref0 (function);
906 _vala_ccode_node_unref0 (unref_fun);
907 _vala_ccode_node_unref0 (ref_fun);
908 } else {
909 gboolean _tmp207_ = FALSE;
910 if (!is_gtypeinstance) {
911 _tmp207_ = !is_gsource;
912 } else {
913 _tmp207_ = FALSE;
914 }
915 if (_tmp207_) {
916 ValaClass* _tmp208_;
917 ValaClass* _tmp209_;
918 _tmp208_ = vala_class_get_base_class (cl);
919 _tmp209_ = _tmp208_;
920 if (_tmp209_ == NULL) {
921 ValaCCodeFunction* function = NULL;
922 gchar* _tmp210_;
923 gchar* _tmp211_;
924 ValaCCodeFunction* _tmp212_;
925 ValaCCodeFunction* _tmp213_;
926 ValaCCodeFunction* _tmp221_;
927 gchar* _tmp222_;
928 gchar* _tmp223_;
929 gchar* _tmp224_;
930 gchar* _tmp225_;
931 ValaCCodeParameter* _tmp226_;
932 ValaCCodeParameter* _tmp227_;
933 ValaCCodeFunction* _tmp228_;
934 _tmp210_ = vala_get_ccode_free_function ((ValaTypeSymbol*) cl);
935 _tmp211_ = _tmp210_;
936 _tmp212_ = vala_ccode_function_new (_tmp211_, "void");
937 _tmp213_ = _tmp212_;
938 _g_free0 (_tmp211_);
939 function = _tmp213_;
940 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
941 ValaCCodeFunction* _tmp214_;
942 _tmp214_ = function;
943 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp214_, VALA_CCODE_MODIFIERS_STATIC);
944 } else {
945 gboolean _tmp215_ = FALSE;
946 ValaCodeContext* _tmp216_;
947 ValaCodeContext* _tmp217_;
948 gboolean _tmp218_;
949 gboolean _tmp219_;
950 _tmp216_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
951 _tmp217_ = _tmp216_;
952 _tmp218_ = vala_code_context_get_hide_internal (_tmp217_);
953 _tmp219_ = _tmp218_;
954 if (_tmp219_) {
955 _tmp215_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
956 } else {
957 _tmp215_ = FALSE;
958 }
959 if (_tmp215_) {
960 ValaCCodeFunction* _tmp220_;
961 _tmp220_ = function;
962 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp220_, VALA_CCODE_MODIFIERS_INTERNAL);
963 }
964 }
965 _tmp221_ = function;
966 _tmp222_ = vala_get_ccode_name ((ValaCodeNode*) cl);
967 _tmp223_ = _tmp222_;
968 _tmp224_ = g_strdup_printf ("%s *", _tmp223_);
969 _tmp225_ = _tmp224_;
970 _tmp226_ = vala_ccode_parameter_new ("self", _tmp225_);
971 _tmp227_ = _tmp226_;
972 vala_ccode_function_add_parameter (_tmp221_, _tmp227_);
973 _vala_ccode_node_unref0 (_tmp227_);
974 _g_free0 (_tmp225_);
975 _g_free0 (_tmp223_);
976 _tmp228_ = function;
977 vala_ccode_file_add_function_declaration (decl_space, _tmp228_);
978 _vala_ccode_node_unref0 (function);
979 }
980 }
981 }
982 if (is_gtypeinstance) {
983 gchar* _tmp229_;
984 gchar* _tmp230_;
985 gchar* _tmp231_;
986 gchar* _tmp232_;
987 gchar* _tmp233_;
988 gchar* _tmp234_;
989 ValaCCodeVariableDeclarator* _tmp235_;
990 ValaCCodeVariableDeclarator* _tmp236_;
991 ValaCCodeTypeDefinition* _tmp237_;
992 ValaCCodeTypeDefinition* _tmp238_;
993 ValaClassRegisterFunction* type_fun = NULL;
994 ValaClassRegisterFunction* _tmp239_;
995 ValaClassRegisterFunction* _tmp240_;
996 ValaCodeContext* _tmp241_;
997 ValaCodeContext* _tmp242_;
998 ValaClassRegisterFunction* _tmp243_;
999 ValaCCodeFragment* _tmp244_;
1000 ValaCCodeFragment* _tmp245_;
1001 _tmp229_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
1002 _tmp230_ = _tmp229_;
1003 _tmp231_ = g_strdup_printf ("struct _%s", _tmp230_);
1004 _tmp232_ = _tmp231_;
1005 _tmp233_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
1006 _tmp234_ = _tmp233_;
1007 _tmp235_ = vala_ccode_variable_declarator_new (_tmp234_, NULL, NULL);
1008 _tmp236_ = _tmp235_;
1009 _tmp237_ = vala_ccode_type_definition_new (_tmp232_, (ValaCCodeDeclarator*) _tmp236_);
1010 _tmp238_ = _tmp237_;
1011 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp238_);
1012 _vala_ccode_node_unref0 (_tmp238_);
1013 _vala_ccode_node_unref0 (_tmp236_);
1014 _g_free0 (_tmp234_);
1015 _g_free0 (_tmp232_);
1016 _g_free0 (_tmp230_);
1017 _tmp239_ = vala_class_register_function_new (cl);
1018 type_fun = _tmp239_;
1019 _tmp240_ = type_fun;
1020 _tmp241_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
1021 _tmp242_ = _tmp241_;
1022 vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp240_, _tmp242_, ((ValaCCodeBaseModule*) self)->in_plugin, TRUE);
1023 _tmp243_ = type_fun;
1024 _tmp244_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) _tmp243_);
1025 _tmp245_ = _tmp244_;
1026 vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp245_);
1027 _vala_ccode_node_unref0 (_tmp245_);
1028 _vala_typeregister_function_unref0 (type_fun);
1029 }
1030 _tmp246_ = _vala_code_node_ref0 (cl);
1031 base_class = _tmp246_;
1032 while (TRUE) {
1033 ValaClass* _tmp247_;
1034 ValaClass* _tmp248_;
1035 ValaClass* _tmp249_;
1036 ValaClass* _tmp250_;
1037 ValaClass* _tmp251_;
1038 ValaClass* _tmp252_;
1039 ValaClass* _tmp253_;
1040 _tmp247_ = base_class;
1041 _tmp248_ = vala_class_get_base_class (_tmp247_);
1042 _tmp249_ = _tmp248_;
1043 if (!(_tmp249_ != NULL)) {
1044 break;
1045 }
1046 _tmp250_ = base_class;
1047 _tmp251_ = vala_class_get_base_class (_tmp250_);
1048 _tmp252_ = _tmp251_;
1049 _tmp253_ = _vala_code_node_ref0 (_tmp252_);
1050 _vala_code_node_unref0 (base_class);
1051 base_class = _tmp253_;
1052 }
1053 _tmp256_ = base_class;
1054 _tmp257_ = vala_class_get_is_compact (_tmp256_);
1055 _tmp258_ = _tmp257_;
1056 if (_tmp258_) {
1057 ValaClass* _tmp259_;
1058 _tmp259_ = base_class;
1059 _tmp255_ = vala_is_reference_counting ((ValaTypeSymbol*) _tmp259_);
1060 } else {
1061 _tmp255_ = FALSE;
1062 }
1063 if (!_tmp255_) {
1064 gboolean _tmp260_ = FALSE;
1065 ValaCodeContext* _tmp261_;
1066 ValaCodeContext* _tmp262_;
1067 gboolean _tmp263_;
1068 gboolean _tmp264_;
1069 _tmp261_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
1070 _tmp262_ = _tmp261_;
1071 _tmp263_ = vala_code_context_get_use_header (_tmp262_);
1072 _tmp264_ = _tmp263_;
1073 if (!_tmp264_) {
1074 _tmp260_ = TRUE;
1075 } else {
1076 gboolean _tmp265_;
1077 gboolean _tmp266_;
1078 _tmp265_ = vala_ccode_file_get_is_header (decl_space);
1079 _tmp266_ = _tmp265_;
1080 _tmp260_ = _tmp266_;
1081 }
1082 _tmp254_ = _tmp260_;
1083 } else {
1084 _tmp254_ = FALSE;
1085 }
1086 if (_tmp254_) {
1087 gchar* autoptr_cleanup_func = NULL;
1088 ValaClass* _tmp267_;
1089 gboolean _tmp272_ = FALSE;
1090 const gchar* _tmp273_;
1091 gchar* _tmp277_;
1092 gchar* _tmp278_;
1093 const gchar* _tmp279_;
1094 gchar* _tmp280_;
1095 gchar* _tmp281_;
1096 ValaCCodeIdentifier* _tmp282_;
1097 ValaCCodeIdentifier* _tmp283_;
1098 ValaCCodeNewline* _tmp284_;
1099 ValaCCodeNewline* _tmp285_;
1100 _tmp267_ = base_class;
1101 if (vala_is_reference_counting ((ValaTypeSymbol*) _tmp267_)) {
1102 ValaClass* _tmp268_;
1103 gchar* _tmp269_;
1104 _tmp268_ = base_class;
1105 _tmp269_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp268_);
1106 _g_free0 (autoptr_cleanup_func);
1107 autoptr_cleanup_func = _tmp269_;
1108 } else {
1109 ValaClass* _tmp270_;
1110 gchar* _tmp271_;
1111 _tmp270_ = base_class;
1112 _tmp271_ = vala_get_ccode_free_function ((ValaTypeSymbol*) _tmp270_);
1113 _g_free0 (autoptr_cleanup_func);
1114 autoptr_cleanup_func = _tmp271_;
1115 }
1116 _tmp273_ = autoptr_cleanup_func;
1117 if (_tmp273_ == NULL) {
1118 _tmp272_ = TRUE;
1119 } else {
1120 const gchar* _tmp274_;
1121 _tmp274_ = autoptr_cleanup_func;
1122 _tmp272_ = g_strcmp0 (_tmp274_, "") == 0;
1123 }
1124 if (_tmp272_) {
1125 ValaSourceReference* _tmp275_;
1126 ValaSourceReference* _tmp276_;
1127 _tmp275_ = vala_code_node_get_source_reference ((ValaCodeNode*) cl);
1128 _tmp276_ = _tmp275_;
1129 vala_report_error (_tmp276_, "internal error: autoptr_cleanup_func not available");
1130 }
1131 _tmp277_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1132 _tmp278_ = _tmp277_;
1133 _tmp279_ = autoptr_cleanup_func;
1134 _tmp280_ = g_strdup_printf ("G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, %s)", _tmp278_, _tmp279_);
1135 _tmp281_ = _tmp280_;
1136 _tmp282_ = vala_ccode_identifier_new (_tmp281_);
1137 _tmp283_ = _tmp282_;
1138 vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp283_);
1139 _vala_ccode_node_unref0 (_tmp283_);
1140 _g_free0 (_tmp281_);
1141 _g_free0 (_tmp278_);
1142 _tmp284_ = vala_ccode_newline_new ();
1143 _tmp285_ = _tmp284_;
1144 vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp285_);
1145 _vala_ccode_node_unref0 (_tmp285_);
1146 _g_free0 (autoptr_cleanup_func);
1147 }
1148 _vala_code_node_unref0 (base_class);
1149 }
1150
1151 static gpointer
_vala_iterable_ref0(gpointer self)1152 _vala_iterable_ref0 (gpointer self)
1153 {
1154 return self ? vala_iterable_ref (self) : NULL;
1155 }
1156
1157 static void
vala_gtype_module_real_generate_class_struct_declaration(ValaCCodeBaseModule * base,ValaClass * cl,ValaCCodeFile * decl_space)1158 vala_gtype_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* base,
1159 ValaClass* cl,
1160 ValaCCodeFile* decl_space)
1161 {
1162 ValaGTypeModule * self;
1163 gchar* _tmp0_;
1164 gchar* _tmp1_;
1165 gchar* _tmp2_;
1166 gchar* _tmp3_;
1167 gboolean _tmp4_;
1168 ValaClass* _tmp5_;
1169 ValaClass* _tmp6_;
1170 gboolean is_gtypeinstance = FALSE;
1171 gboolean _tmp23_;
1172 gboolean _tmp24_;
1173 gboolean _tmp25_ = FALSE;
1174 gboolean is_fundamental = FALSE;
1175 ValaCCodeStruct* instance_struct = NULL;
1176 gchar* _tmp28_;
1177 gchar* _tmp29_;
1178 gchar* _tmp30_;
1179 gchar* _tmp31_;
1180 ValaCCodeStruct* _tmp32_;
1181 ValaCCodeStruct* _tmp33_;
1182 ValaCCodeStruct* type_struct = NULL;
1183 gchar* _tmp34_;
1184 gchar* _tmp35_;
1185 gchar* _tmp36_;
1186 gchar* _tmp37_;
1187 ValaCCodeStruct* _tmp38_;
1188 ValaCCodeStruct* _tmp39_;
1189 ValaClass* _tmp40_;
1190 ValaClass* _tmp41_;
1191 gboolean has_struct_member = FALSE;
1192 ValaCodeContext* _tmp82_;
1193 ValaCodeContext* _tmp83_;
1194 gboolean _tmp84_;
1195 gboolean _tmp85_;
1196 gboolean _tmp182_ = FALSE;
1197 gboolean _tmp183_ = FALSE;
1198 gboolean _tmp184_;
1199 gboolean _tmp185_;
1200 gboolean _tmp189_ = FALSE;
1201 gboolean _tmp190_;
1202 gboolean _tmp191_;
1203 self = (ValaGTypeModule*) base;
1204 g_return_if_fail (cl != NULL);
1205 g_return_if_fail (decl_space != NULL);
1206 _tmp0_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1207 _tmp1_ = _tmp0_;
1208 _tmp2_ = g_strdup_printf ("struct _%s", _tmp1_);
1209 _tmp3_ = _tmp2_;
1210 _tmp4_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) cl, _tmp3_);
1211 _g_free0 (_tmp3_);
1212 _g_free0 (_tmp1_);
1213 if (_tmp4_) {
1214 return;
1215 }
1216 _tmp5_ = vala_class_get_base_class (cl);
1217 _tmp6_ = _tmp5_;
1218 if (_tmp6_ != NULL) {
1219 ValaClass* _tmp7_;
1220 ValaClass* _tmp8_;
1221 _tmp7_ = vala_class_get_base_class (cl);
1222 _tmp8_ = _tmp7_;
1223 vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp8_, decl_space);
1224 }
1225 {
1226 ValaList* _base_type_list = NULL;
1227 ValaList* _tmp9_;
1228 ValaList* _tmp10_;
1229 gint _base_type_size = 0;
1230 ValaList* _tmp11_;
1231 gint _tmp12_;
1232 gint _tmp13_;
1233 gint _base_type_index = 0;
1234 _tmp9_ = vala_class_get_base_types (cl);
1235 _tmp10_ = _vala_iterable_ref0 (_tmp9_);
1236 _base_type_list = _tmp10_;
1237 _tmp11_ = _base_type_list;
1238 _tmp12_ = vala_collection_get_size ((ValaCollection*) _tmp11_);
1239 _tmp13_ = _tmp12_;
1240 _base_type_size = _tmp13_;
1241 _base_type_index = -1;
1242 while (TRUE) {
1243 gint _tmp14_;
1244 gint _tmp15_;
1245 ValaDataType* base_type = NULL;
1246 ValaList* _tmp16_;
1247 gpointer _tmp17_;
1248 ValaInterface* iface = NULL;
1249 ValaDataType* _tmp18_;
1250 ValaTypeSymbol* _tmp19_;
1251 ValaTypeSymbol* _tmp20_;
1252 ValaInterface* _tmp21_;
1253 _base_type_index = _base_type_index + 1;
1254 _tmp14_ = _base_type_index;
1255 _tmp15_ = _base_type_size;
1256 if (!(_tmp14_ < _tmp15_)) {
1257 break;
1258 }
1259 _tmp16_ = _base_type_list;
1260 _tmp17_ = vala_list_get (_tmp16_, _base_type_index);
1261 base_type = (ValaDataType*) _tmp17_;
1262 _tmp18_ = base_type;
1263 _tmp19_ = vala_data_type_get_type_symbol (_tmp18_);
1264 _tmp20_ = _tmp19_;
1265 iface = G_TYPE_CHECK_INSTANCE_TYPE (_tmp20_, VALA_TYPE_INTERFACE) ? ((ValaInterface*) _tmp20_) : NULL;
1266 _tmp21_ = iface;
1267 if (_tmp21_ != NULL) {
1268 ValaInterface* _tmp22_;
1269 _tmp22_ = iface;
1270 vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp22_, decl_space);
1271 }
1272 _vala_code_node_unref0 (base_type);
1273 }
1274 _vala_iterable_unref0 (_base_type_list);
1275 }
1276 vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, cl, decl_space);
1277 _tmp23_ = vala_class_get_is_compact (cl);
1278 _tmp24_ = _tmp23_;
1279 is_gtypeinstance = !_tmp24_;
1280 if (is_gtypeinstance) {
1281 ValaClass* _tmp26_;
1282 ValaClass* _tmp27_;
1283 _tmp26_ = vala_class_get_base_class (cl);
1284 _tmp27_ = _tmp26_;
1285 _tmp25_ = _tmp27_ == NULL;
1286 } else {
1287 _tmp25_ = FALSE;
1288 }
1289 is_fundamental = _tmp25_;
1290 _tmp28_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1291 _tmp29_ = _tmp28_;
1292 _tmp30_ = g_strdup_printf ("_%s", _tmp29_);
1293 _tmp31_ = _tmp30_;
1294 _tmp32_ = vala_ccode_struct_new (_tmp31_);
1295 _tmp33_ = _tmp32_;
1296 _g_free0 (_tmp31_);
1297 _g_free0 (_tmp29_);
1298 instance_struct = _tmp33_;
1299 _tmp34_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
1300 _tmp35_ = _tmp34_;
1301 _tmp36_ = g_strdup_printf ("_%s", _tmp35_);
1302 _tmp37_ = _tmp36_;
1303 _tmp38_ = vala_ccode_struct_new (_tmp37_);
1304 _tmp39_ = _tmp38_;
1305 _g_free0 (_tmp37_);
1306 _g_free0 (_tmp35_);
1307 type_struct = _tmp39_;
1308 _tmp40_ = vala_class_get_base_class (cl);
1309 _tmp41_ = _tmp40_;
1310 if (_tmp41_ != NULL) {
1311 ValaCCodeStruct* _tmp42_;
1312 ValaClass* _tmp43_;
1313 ValaClass* _tmp44_;
1314 gchar* _tmp45_;
1315 gchar* _tmp46_;
1316 _tmp42_ = instance_struct;
1317 _tmp43_ = vala_class_get_base_class (cl);
1318 _tmp44_ = _tmp43_;
1319 _tmp45_ = vala_get_ccode_name ((ValaCodeNode*) _tmp44_);
1320 _tmp46_ = _tmp45_;
1321 vala_ccode_struct_add_field (_tmp42_, _tmp46_, "parent_instance", 0, NULL);
1322 _g_free0 (_tmp46_);
1323 } else {
1324 if (is_fundamental) {
1325 ValaCCodeStruct* _tmp47_;
1326 ValaCCodeStruct* _tmp48_;
1327 _tmp47_ = instance_struct;
1328 vala_ccode_struct_add_field (_tmp47_, "GTypeInstance", "parent_instance", 0, NULL);
1329 _tmp48_ = instance_struct;
1330 vala_ccode_struct_add_field (_tmp48_, "volatile int", "ref_count", 0, NULL);
1331 }
1332 }
1333 if (is_gtypeinstance) {
1334 ValaCCodeStruct* _tmp49_;
1335 const gchar* _tmp50_;
1336 const gchar* _tmp51_;
1337 gchar* _tmp52_;
1338 gchar* _tmp53_;
1339 gchar* _tmp54_;
1340 gchar* _tmp55_;
1341 gchar* _tmp56_;
1342 gchar* _tmp57_;
1343 ValaCCodeVariableDeclarator* _tmp58_;
1344 ValaCCodeVariableDeclarator* _tmp59_;
1345 ValaCCodeTypeDefinition* _tmp60_;
1346 ValaCCodeTypeDefinition* _tmp61_;
1347 ValaCodeContext* _tmp62_;
1348 ValaCodeContext* _tmp63_;
1349 gboolean _tmp64_;
1350 gboolean _tmp65_;
1351 _tmp49_ = instance_struct;
1352 _tmp50_ = vala_ccode_struct_get_name (_tmp49_);
1353 _tmp51_ = _tmp50_;
1354 _tmp52_ = g_strdup_printf ("struct %sPrivate", _tmp51_);
1355 _tmp53_ = _tmp52_;
1356 _tmp54_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1357 _tmp55_ = _tmp54_;
1358 _tmp56_ = g_strdup_printf ("%sPrivate", _tmp55_);
1359 _tmp57_ = _tmp56_;
1360 _tmp58_ = vala_ccode_variable_declarator_new (_tmp57_, NULL, NULL);
1361 _tmp59_ = _tmp58_;
1362 _tmp60_ = vala_ccode_type_definition_new (_tmp53_, (ValaCCodeDeclarator*) _tmp59_);
1363 _tmp61_ = _tmp60_;
1364 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp61_);
1365 _vala_ccode_node_unref0 (_tmp61_);
1366 _vala_ccode_node_unref0 (_tmp59_);
1367 _g_free0 (_tmp57_);
1368 _g_free0 (_tmp55_);
1369 _g_free0 (_tmp53_);
1370 _tmp62_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
1371 _tmp63_ = _tmp62_;
1372 _tmp64_ = vala_code_context_get_abi_stability (_tmp63_);
1373 _tmp65_ = _tmp64_;
1374 if (!_tmp65_) {
1375 ValaCCodeStruct* _tmp66_;
1376 gchar* _tmp67_;
1377 gchar* _tmp68_;
1378 gchar* _tmp69_;
1379 gchar* _tmp70_;
1380 _tmp66_ = instance_struct;
1381 _tmp67_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1382 _tmp68_ = _tmp67_;
1383 _tmp69_ = g_strdup_printf ("%sPrivate *", _tmp68_);
1384 _tmp70_ = _tmp69_;
1385 vala_ccode_struct_add_field (_tmp66_, _tmp70_, "priv", 0, NULL);
1386 _g_free0 (_tmp70_);
1387 _g_free0 (_tmp68_);
1388 }
1389 if (is_fundamental) {
1390 ValaCCodeStruct* _tmp71_;
1391 _tmp71_ = type_struct;
1392 vala_ccode_struct_add_field (_tmp71_, "GTypeClass", "parent_class", 0, NULL);
1393 } else {
1394 ValaCCodeStruct* _tmp72_;
1395 ValaClass* _tmp73_;
1396 ValaClass* _tmp74_;
1397 gchar* _tmp75_;
1398 gchar* _tmp76_;
1399 _tmp72_ = type_struct;
1400 _tmp73_ = vala_class_get_base_class (cl);
1401 _tmp74_ = _tmp73_;
1402 _tmp75_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) _tmp74_);
1403 _tmp76_ = _tmp75_;
1404 vala_ccode_struct_add_field (_tmp72_, _tmp76_, "parent_class", 0, NULL);
1405 _g_free0 (_tmp76_);
1406 }
1407 if (is_fundamental) {
1408 ValaCCodeStruct* _tmp77_;
1409 gchar* _tmp78_;
1410 gchar* _tmp79_;
1411 gchar* _tmp80_;
1412 gchar* _tmp81_;
1413 _tmp77_ = type_struct;
1414 _tmp78_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1415 _tmp79_ = _tmp78_;
1416 _tmp80_ = g_strdup_printf ("(*finalize) (%s *self)", _tmp79_);
1417 _tmp81_ = _tmp80_;
1418 vala_ccode_struct_add_field (_tmp77_, "void", _tmp81_, 0, NULL);
1419 _g_free0 (_tmp81_);
1420 _g_free0 (_tmp79_);
1421 }
1422 }
1423 has_struct_member = FALSE;
1424 _tmp82_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
1425 _tmp83_ = _tmp82_;
1426 _tmp84_ = vala_code_context_get_abi_stability (_tmp83_);
1427 _tmp85_ = _tmp84_;
1428 if (_tmp85_) {
1429 {
1430 ValaList* _s_list = NULL;
1431 ValaList* _tmp86_;
1432 ValaList* _tmp87_;
1433 gint _s_size = 0;
1434 ValaList* _tmp88_;
1435 gint _tmp89_;
1436 gint _tmp90_;
1437 gint _s_index = 0;
1438 _tmp86_ = vala_object_type_symbol_get_members ((ValaObjectTypeSymbol*) cl);
1439 _tmp87_ = _vala_iterable_ref0 (_tmp86_);
1440 _s_list = _tmp87_;
1441 _tmp88_ = _s_list;
1442 _tmp89_ = vala_collection_get_size ((ValaCollection*) _tmp88_);
1443 _tmp90_ = _tmp89_;
1444 _s_size = _tmp90_;
1445 _s_index = -1;
1446 while (TRUE) {
1447 gint _tmp91_;
1448 gint _tmp92_;
1449 ValaSymbol* s = NULL;
1450 ValaList* _tmp93_;
1451 gpointer _tmp94_;
1452 ValaSymbol* _tmp95_;
1453 _s_index = _s_index + 1;
1454 _tmp91_ = _s_index;
1455 _tmp92_ = _s_size;
1456 if (!(_tmp91_ < _tmp92_)) {
1457 break;
1458 }
1459 _tmp93_ = _s_list;
1460 _tmp94_ = vala_list_get (_tmp93_, _s_index);
1461 s = (ValaSymbol*) _tmp94_;
1462 _tmp95_ = s;
1463 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp95_, VALA_TYPE_METHOD)) {
1464 ValaMethod* m = NULL;
1465 ValaSymbol* _tmp96_;
1466 ValaMethod* _tmp97_;
1467 ValaMethod* _tmp98_;
1468 ValaCCodeStruct* _tmp99_;
1469 ValaCCodeStruct* _tmp100_;
1470 _tmp96_ = s;
1471 _tmp97_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp96_, VALA_TYPE_METHOD, ValaMethod));
1472 m = _tmp97_;
1473 _tmp98_ = m;
1474 _tmp99_ = instance_struct;
1475 _tmp100_ = type_struct;
1476 vala_gtype_module_generate_struct_method_declaration (self, (ValaObjectTypeSymbol*) cl, _tmp98_, _tmp99_, _tmp100_, decl_space, &has_struct_member);
1477 _vala_code_node_unref0 (m);
1478 } else {
1479 ValaSymbol* _tmp101_;
1480 _tmp101_ = s;
1481 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp101_, VALA_TYPE_SIGNAL)) {
1482 ValaSignal* sig = NULL;
1483 ValaSymbol* _tmp102_;
1484 ValaSignal* _tmp103_;
1485 ValaSignal* _tmp104_;
1486 ValaMethod* _tmp105_;
1487 ValaMethod* _tmp106_;
1488 _tmp102_ = s;
1489 _tmp103_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp102_, VALA_TYPE_SIGNAL, ValaSignal));
1490 sig = _tmp103_;
1491 _tmp104_ = sig;
1492 _tmp105_ = vala_signal_get_default_handler (_tmp104_);
1493 _tmp106_ = _tmp105_;
1494 if (_tmp106_ != NULL) {
1495 ValaSignal* _tmp107_;
1496 ValaMethod* _tmp108_;
1497 ValaMethod* _tmp109_;
1498 ValaCCodeStruct* _tmp110_;
1499 _tmp107_ = sig;
1500 _tmp108_ = vala_signal_get_default_handler (_tmp107_);
1501 _tmp109_ = _tmp108_;
1502 _tmp110_ = type_struct;
1503 vala_gtype_module_generate_virtual_method_declaration (self, _tmp109_, decl_space, _tmp110_);
1504 }
1505 _vala_code_node_unref0 (sig);
1506 } else {
1507 ValaSymbol* _tmp111_;
1508 _tmp111_ = s;
1509 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp111_, VALA_TYPE_PROPERTY)) {
1510 ValaProperty* prop = NULL;
1511 ValaSymbol* _tmp112_;
1512 ValaProperty* _tmp113_;
1513 ValaProperty* _tmp114_;
1514 ValaCCodeStruct* _tmp115_;
1515 ValaCCodeStruct* _tmp116_;
1516 _tmp112_ = s;
1517 _tmp113_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp112_, VALA_TYPE_PROPERTY, ValaProperty));
1518 prop = _tmp113_;
1519 _tmp114_ = prop;
1520 _tmp115_ = instance_struct;
1521 _tmp116_ = type_struct;
1522 vala_gtype_module_generate_struct_property_declaration (self, (ValaObjectTypeSymbol*) cl, _tmp114_, _tmp115_, _tmp116_, decl_space, &has_struct_member);
1523 _vala_code_node_unref0 (prop);
1524 } else {
1525 ValaSymbol* _tmp117_;
1526 _tmp117_ = s;
1527 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp117_, VALA_TYPE_FIELD)) {
1528 ValaSymbol* _tmp118_;
1529 ValaSymbolAccessibility _tmp119_;
1530 ValaSymbolAccessibility _tmp120_;
1531 _tmp118_ = s;
1532 _tmp119_ = vala_symbol_get_access (_tmp118_);
1533 _tmp120_ = _tmp119_;
1534 if (_tmp120_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
1535 ValaSymbol* _tmp121_;
1536 ValaCCodeStruct* _tmp122_;
1537 ValaCCodeStruct* _tmp123_;
1538 _tmp121_ = s;
1539 _tmp122_ = instance_struct;
1540 _tmp123_ = type_struct;
1541 vala_gtype_module_generate_struct_field_declaration (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp121_, VALA_TYPE_FIELD, ValaField), _tmp122_, _tmp123_, decl_space, &has_struct_member);
1542 }
1543 } else {
1544 ValaSymbol* _tmp124_;
1545 ValaSourceReference* _tmp125_;
1546 ValaSourceReference* _tmp126_;
1547 _tmp124_ = s;
1548 _tmp125_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp124_);
1549 _tmp126_ = _tmp125_;
1550 vala_report_error (_tmp126_, "internal: Unsupported symbol");
1551 }
1552 }
1553 }
1554 }
1555 _vala_code_node_unref0 (s);
1556 }
1557 _vala_iterable_unref0 (_s_list);
1558 }
1559 } else {
1560 {
1561 ValaList* _m_list = NULL;
1562 ValaList* _tmp127_;
1563 ValaList* _tmp128_;
1564 gint _m_size = 0;
1565 ValaList* _tmp129_;
1566 gint _tmp130_;
1567 gint _tmp131_;
1568 gint _m_index = 0;
1569 _tmp127_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) cl);
1570 _tmp128_ = _vala_iterable_ref0 (_tmp127_);
1571 _m_list = _tmp128_;
1572 _tmp129_ = _m_list;
1573 _tmp130_ = vala_collection_get_size ((ValaCollection*) _tmp129_);
1574 _tmp131_ = _tmp130_;
1575 _m_size = _tmp131_;
1576 _m_index = -1;
1577 while (TRUE) {
1578 gint _tmp132_;
1579 gint _tmp133_;
1580 ValaMethod* m = NULL;
1581 ValaList* _tmp134_;
1582 gpointer _tmp135_;
1583 ValaMethod* _tmp136_;
1584 ValaCCodeStruct* _tmp137_;
1585 ValaCCodeStruct* _tmp138_;
1586 _m_index = _m_index + 1;
1587 _tmp132_ = _m_index;
1588 _tmp133_ = _m_size;
1589 if (!(_tmp132_ < _tmp133_)) {
1590 break;
1591 }
1592 _tmp134_ = _m_list;
1593 _tmp135_ = vala_list_get (_tmp134_, _m_index);
1594 m = (ValaMethod*) _tmp135_;
1595 _tmp136_ = m;
1596 _tmp137_ = instance_struct;
1597 _tmp138_ = type_struct;
1598 vala_gtype_module_generate_struct_method_declaration (self, (ValaObjectTypeSymbol*) cl, _tmp136_, _tmp137_, _tmp138_, decl_space, &has_struct_member);
1599 _vala_code_node_unref0 (m);
1600 }
1601 _vala_iterable_unref0 (_m_list);
1602 }
1603 {
1604 ValaList* _sig_list = NULL;
1605 ValaList* _tmp139_;
1606 ValaList* _tmp140_;
1607 gint _sig_size = 0;
1608 ValaList* _tmp141_;
1609 gint _tmp142_;
1610 gint _tmp143_;
1611 gint _sig_index = 0;
1612 _tmp139_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) cl);
1613 _tmp140_ = _vala_iterable_ref0 (_tmp139_);
1614 _sig_list = _tmp140_;
1615 _tmp141_ = _sig_list;
1616 _tmp142_ = vala_collection_get_size ((ValaCollection*) _tmp141_);
1617 _tmp143_ = _tmp142_;
1618 _sig_size = _tmp143_;
1619 _sig_index = -1;
1620 while (TRUE) {
1621 gint _tmp144_;
1622 gint _tmp145_;
1623 ValaSignal* sig = NULL;
1624 ValaList* _tmp146_;
1625 gpointer _tmp147_;
1626 ValaSignal* _tmp148_;
1627 ValaMethod* _tmp149_;
1628 ValaMethod* _tmp150_;
1629 _sig_index = _sig_index + 1;
1630 _tmp144_ = _sig_index;
1631 _tmp145_ = _sig_size;
1632 if (!(_tmp144_ < _tmp145_)) {
1633 break;
1634 }
1635 _tmp146_ = _sig_list;
1636 _tmp147_ = vala_list_get (_tmp146_, _sig_index);
1637 sig = (ValaSignal*) _tmp147_;
1638 _tmp148_ = sig;
1639 _tmp149_ = vala_signal_get_default_handler (_tmp148_);
1640 _tmp150_ = _tmp149_;
1641 if (_tmp150_ != NULL) {
1642 ValaSignal* _tmp151_;
1643 ValaMethod* _tmp152_;
1644 ValaMethod* _tmp153_;
1645 ValaCCodeStruct* _tmp154_;
1646 _tmp151_ = sig;
1647 _tmp152_ = vala_signal_get_default_handler (_tmp151_);
1648 _tmp153_ = _tmp152_;
1649 _tmp154_ = type_struct;
1650 vala_gtype_module_generate_virtual_method_declaration (self, _tmp153_, decl_space, _tmp154_);
1651 }
1652 _vala_code_node_unref0 (sig);
1653 }
1654 _vala_iterable_unref0 (_sig_list);
1655 }
1656 {
1657 ValaList* _prop_list = NULL;
1658 ValaList* _tmp155_;
1659 ValaList* _tmp156_;
1660 gint _prop_size = 0;
1661 ValaList* _tmp157_;
1662 gint _tmp158_;
1663 gint _tmp159_;
1664 gint _prop_index = 0;
1665 _tmp155_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
1666 _tmp156_ = _vala_iterable_ref0 (_tmp155_);
1667 _prop_list = _tmp156_;
1668 _tmp157_ = _prop_list;
1669 _tmp158_ = vala_collection_get_size ((ValaCollection*) _tmp157_);
1670 _tmp159_ = _tmp158_;
1671 _prop_size = _tmp159_;
1672 _prop_index = -1;
1673 while (TRUE) {
1674 gint _tmp160_;
1675 gint _tmp161_;
1676 ValaProperty* prop = NULL;
1677 ValaList* _tmp162_;
1678 gpointer _tmp163_;
1679 ValaProperty* _tmp164_;
1680 ValaCCodeStruct* _tmp165_;
1681 ValaCCodeStruct* _tmp166_;
1682 _prop_index = _prop_index + 1;
1683 _tmp160_ = _prop_index;
1684 _tmp161_ = _prop_size;
1685 if (!(_tmp160_ < _tmp161_)) {
1686 break;
1687 }
1688 _tmp162_ = _prop_list;
1689 _tmp163_ = vala_list_get (_tmp162_, _prop_index);
1690 prop = (ValaProperty*) _tmp163_;
1691 _tmp164_ = prop;
1692 _tmp165_ = instance_struct;
1693 _tmp166_ = type_struct;
1694 vala_gtype_module_generate_struct_property_declaration (self, (ValaObjectTypeSymbol*) cl, _tmp164_, _tmp165_, _tmp166_, decl_space, &has_struct_member);
1695 _vala_code_node_unref0 (prop);
1696 }
1697 _vala_iterable_unref0 (_prop_list);
1698 }
1699 {
1700 ValaList* _f_list = NULL;
1701 ValaList* _tmp167_;
1702 ValaList* _tmp168_;
1703 gint _f_size = 0;
1704 ValaList* _tmp169_;
1705 gint _tmp170_;
1706 gint _tmp171_;
1707 gint _f_index = 0;
1708 _tmp167_ = vala_object_type_symbol_get_fields ((ValaObjectTypeSymbol*) cl);
1709 _tmp168_ = _vala_iterable_ref0 (_tmp167_);
1710 _f_list = _tmp168_;
1711 _tmp169_ = _f_list;
1712 _tmp170_ = vala_collection_get_size ((ValaCollection*) _tmp169_);
1713 _tmp171_ = _tmp170_;
1714 _f_size = _tmp171_;
1715 _f_index = -1;
1716 while (TRUE) {
1717 gint _tmp172_;
1718 gint _tmp173_;
1719 ValaField* f = NULL;
1720 ValaList* _tmp174_;
1721 gpointer _tmp175_;
1722 ValaField* _tmp176_;
1723 ValaSymbolAccessibility _tmp177_;
1724 ValaSymbolAccessibility _tmp178_;
1725 _f_index = _f_index + 1;
1726 _tmp172_ = _f_index;
1727 _tmp173_ = _f_size;
1728 if (!(_tmp172_ < _tmp173_)) {
1729 break;
1730 }
1731 _tmp174_ = _f_list;
1732 _tmp175_ = vala_list_get (_tmp174_, _f_index);
1733 f = (ValaField*) _tmp175_;
1734 _tmp176_ = f;
1735 _tmp177_ = vala_symbol_get_access ((ValaSymbol*) _tmp176_);
1736 _tmp178_ = _tmp177_;
1737 if (_tmp178_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
1738 ValaField* _tmp179_;
1739 ValaCCodeStruct* _tmp180_;
1740 ValaCCodeStruct* _tmp181_;
1741 _tmp179_ = f;
1742 _tmp180_ = instance_struct;
1743 _tmp181_ = type_struct;
1744 vala_gtype_module_generate_struct_field_declaration (self, _tmp179_, _tmp180_, _tmp181_, decl_space, &has_struct_member);
1745 }
1746 _vala_code_node_unref0 (f);
1747 }
1748 _vala_iterable_unref0 (_f_list);
1749 }
1750 }
1751 _tmp184_ = vala_class_get_is_compact (cl);
1752 _tmp185_ = _tmp184_;
1753 if (_tmp185_) {
1754 ValaClass* _tmp186_;
1755 ValaClass* _tmp187_;
1756 _tmp186_ = vala_class_get_base_class (cl);
1757 _tmp187_ = _tmp186_;
1758 _tmp183_ = _tmp187_ == NULL;
1759 } else {
1760 _tmp183_ = FALSE;
1761 }
1762 if (_tmp183_) {
1763 _tmp182_ = !has_struct_member;
1764 } else {
1765 _tmp182_ = FALSE;
1766 }
1767 if (_tmp182_) {
1768 ValaCCodeStruct* _tmp188_;
1769 _tmp188_ = instance_struct;
1770 vala_ccode_struct_add_field (_tmp188_, "int", "dummy", 0, NULL);
1771 }
1772 _tmp190_ = vala_class_get_is_compact (cl);
1773 _tmp191_ = _tmp190_;
1774 if (!_tmp191_) {
1775 _tmp189_ = TRUE;
1776 } else {
1777 ValaClass* _tmp192_;
1778 ValaClass* _tmp193_;
1779 _tmp192_ = vala_class_get_base_class (cl);
1780 _tmp193_ = _tmp192_;
1781 _tmp189_ = _tmp193_ == NULL;
1782 }
1783 if (_tmp189_) {
1784 ValaCCodeStruct* _tmp194_;
1785 _tmp194_ = instance_struct;
1786 vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) _tmp194_);
1787 }
1788 if (is_gtypeinstance) {
1789 ValaCodeContext* _tmp195_;
1790 ValaCodeContext* _tmp196_;
1791 gboolean _tmp197_;
1792 gboolean _tmp198_;
1793 ValaCCodeStruct* _tmp204_;
1794 _tmp195_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
1795 _tmp196_ = _tmp195_;
1796 _tmp197_ = vala_code_context_get_abi_stability (_tmp196_);
1797 _tmp198_ = _tmp197_;
1798 if (_tmp198_) {
1799 ValaCCodeStruct* _tmp199_;
1800 gchar* _tmp200_;
1801 gchar* _tmp201_;
1802 gchar* _tmp202_;
1803 gchar* _tmp203_;
1804 _tmp199_ = instance_struct;
1805 _tmp200_ = vala_get_ccode_name ((ValaCodeNode*) cl);
1806 _tmp201_ = _tmp200_;
1807 _tmp202_ = g_strdup_printf ("%sPrivate *", _tmp201_);
1808 _tmp203_ = _tmp202_;
1809 vala_ccode_struct_add_field (_tmp199_, _tmp203_, "priv", 0, NULL);
1810 _g_free0 (_tmp203_);
1811 _g_free0 (_tmp201_);
1812 }
1813 _tmp204_ = type_struct;
1814 vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) _tmp204_);
1815 }
1816 _vala_ccode_node_unref0 (type_struct);
1817 _vala_ccode_node_unref0 (instance_struct);
1818 }
1819
1820 static void
vala_gtype_module_generate_struct_method_declaration(ValaGTypeModule * self,ValaObjectTypeSymbol * type_sym,ValaMethod * m,ValaCCodeStruct * instance_struct,ValaCCodeStruct * type_struct,ValaCCodeFile * decl_space,gboolean * has_struct_member)1821 vala_gtype_module_generate_struct_method_declaration (ValaGTypeModule* self,
1822 ValaObjectTypeSymbol* type_sym,
1823 ValaMethod* m,
1824 ValaCCodeStruct* instance_struct,
1825 ValaCCodeStruct* type_struct,
1826 ValaCCodeFile* decl_space,
1827 gboolean* has_struct_member)
1828 {
1829 ValaClass* cl = NULL;
1830 gboolean _tmp0_ = FALSE;
1831 g_return_if_fail (self != NULL);
1832 g_return_if_fail (type_sym != NULL);
1833 g_return_if_fail (m != NULL);
1834 g_return_if_fail (instance_struct != NULL);
1835 g_return_if_fail (type_struct != NULL);
1836 g_return_if_fail (decl_space != NULL);
1837 cl = G_TYPE_CHECK_INSTANCE_TYPE (type_sym, VALA_TYPE_CLASS) ? ((ValaClass*) type_sym) : NULL;
1838 if (G_TYPE_CHECK_INSTANCE_TYPE (type_sym, VALA_TYPE_INTERFACE)) {
1839 _tmp0_ = TRUE;
1840 } else {
1841 gboolean _tmp1_ = FALSE;
1842 ValaClass* _tmp2_;
1843 _tmp2_ = cl;
1844 if (_tmp2_ != NULL) {
1845 ValaClass* _tmp3_;
1846 gboolean _tmp4_;
1847 gboolean _tmp5_;
1848 _tmp3_ = cl;
1849 _tmp4_ = vala_class_get_is_compact (_tmp3_);
1850 _tmp5_ = _tmp4_;
1851 _tmp1_ = !_tmp5_;
1852 } else {
1853 _tmp1_ = FALSE;
1854 }
1855 _tmp0_ = _tmp1_;
1856 }
1857 if (_tmp0_) {
1858 vala_gtype_module_generate_virtual_method_declaration (self, m, decl_space, type_struct);
1859 } else {
1860 gboolean _tmp6_ = FALSE;
1861 gboolean _tmp7_ = FALSE;
1862 ValaClass* _tmp8_;
1863 _tmp8_ = cl;
1864 if (_tmp8_ != NULL) {
1865 ValaClass* _tmp9_;
1866 gboolean _tmp10_;
1867 gboolean _tmp11_;
1868 _tmp9_ = cl;
1869 _tmp10_ = vala_class_get_is_compact (_tmp9_);
1870 _tmp11_ = _tmp10_;
1871 _tmp7_ = _tmp11_;
1872 } else {
1873 _tmp7_ = FALSE;
1874 }
1875 if (_tmp7_) {
1876 ValaClass* _tmp12_;
1877 ValaClass* _tmp13_;
1878 ValaClass* _tmp14_;
1879 _tmp12_ = cl;
1880 _tmp13_ = vala_class_get_base_class (_tmp12_);
1881 _tmp14_ = _tmp13_;
1882 _tmp6_ = _tmp14_ == NULL;
1883 } else {
1884 _tmp6_ = FALSE;
1885 }
1886 if (_tmp6_) {
1887 gboolean _tmp15_ = FALSE;
1888 gboolean _tmp16_;
1889 gboolean _tmp17_;
1890 vala_gtype_module_generate_virtual_method_declaration (self, m, decl_space, instance_struct);
1891 _tmp16_ = vala_method_get_is_abstract (m);
1892 _tmp17_ = _tmp16_;
1893 if (_tmp17_) {
1894 _tmp15_ = TRUE;
1895 } else {
1896 gboolean _tmp18_;
1897 gboolean _tmp19_;
1898 _tmp18_ = vala_method_get_is_virtual (m);
1899 _tmp19_ = _tmp18_;
1900 _tmp15_ = _tmp19_;
1901 }
1902 *has_struct_member = (*has_struct_member) | _tmp15_;
1903 }
1904 }
1905 }
1906
1907 static void
vala_gtype_module_generate_struct_property_declaration(ValaGTypeModule * self,ValaObjectTypeSymbol * type_sym,ValaProperty * prop,ValaCCodeStruct * instance_struct,ValaCCodeStruct * type_struct,ValaCCodeFile * decl_space,gboolean * has_struct_member)1908 vala_gtype_module_generate_struct_property_declaration (ValaGTypeModule* self,
1909 ValaObjectTypeSymbol* type_sym,
1910 ValaProperty* prop,
1911 ValaCCodeStruct* instance_struct,
1912 ValaCCodeStruct* type_struct,
1913 ValaCCodeFile* decl_space,
1914 gboolean* has_struct_member)
1915 {
1916 gboolean _tmp0_ = FALSE;
1917 gboolean _tmp1_;
1918 gboolean _tmp2_;
1919 ValaDataType* _tmp5_;
1920 ValaDataType* _tmp6_;
1921 ValaObjectTypeSymbol* t = NULL;
1922 ValaSymbol* _tmp7_;
1923 ValaSymbol* _tmp8_;
1924 ValaClass* cl = NULL;
1925 ValaObjectType* this_type = NULL;
1926 ValaObjectTypeSymbol* _tmp9_;
1927 ValaObjectType* _tmp10_;
1928 ValaCCodeParameter* cselfparam = NULL;
1929 ValaObjectType* _tmp11_;
1930 gchar* _tmp12_;
1931 gchar* _tmp13_;
1932 ValaCCodeParameter* _tmp14_;
1933 ValaCCodeParameter* _tmp15_;
1934 ValaPropertyAccessor* _tmp16_;
1935 ValaPropertyAccessor* _tmp17_;
1936 ValaPropertyAccessor* _tmp99_;
1937 ValaPropertyAccessor* _tmp100_;
1938 g_return_if_fail (self != NULL);
1939 g_return_if_fail (type_sym != NULL);
1940 g_return_if_fail (prop != NULL);
1941 g_return_if_fail (instance_struct != NULL);
1942 g_return_if_fail (type_struct != NULL);
1943 g_return_if_fail (decl_space != NULL);
1944 _tmp1_ = vala_property_get_is_abstract (prop);
1945 _tmp2_ = _tmp1_;
1946 if (!_tmp2_) {
1947 gboolean _tmp3_;
1948 gboolean _tmp4_;
1949 _tmp3_ = vala_property_get_is_virtual (prop);
1950 _tmp4_ = _tmp3_;
1951 _tmp0_ = !_tmp4_;
1952 } else {
1953 _tmp0_ = FALSE;
1954 }
1955 if (_tmp0_) {
1956 return;
1957 }
1958 _tmp5_ = vala_property_get_property_type (prop);
1959 _tmp6_ = _tmp5_;
1960 vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp6_, decl_space);
1961 _tmp7_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
1962 _tmp8_ = _tmp7_;
1963 t = G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol);
1964 cl = G_TYPE_CHECK_INSTANCE_TYPE (type_sym, VALA_TYPE_CLASS) ? ((ValaClass*) type_sym) : NULL;
1965 _tmp9_ = t;
1966 _tmp10_ = vala_object_type_new (_tmp9_);
1967 this_type = _tmp10_;
1968 _tmp11_ = this_type;
1969 _tmp12_ = vala_get_ccode_name ((ValaCodeNode*) _tmp11_);
1970 _tmp13_ = _tmp12_;
1971 _tmp14_ = vala_ccode_parameter_new ("self", _tmp13_);
1972 _tmp15_ = _tmp14_;
1973 _g_free0 (_tmp13_);
1974 cselfparam = _tmp15_;
1975 _tmp16_ = vala_property_get_get_accessor (prop);
1976 _tmp17_ = _tmp16_;
1977 if (_tmp17_ != NULL) {
1978 ValaCCodeFunctionDeclarator* vdeclarator = NULL;
1979 const gchar* _tmp18_;
1980 const gchar* _tmp19_;
1981 gchar* _tmp20_;
1982 gchar* _tmp21_;
1983 ValaCCodeFunctionDeclarator* _tmp22_;
1984 ValaCCodeFunctionDeclarator* _tmp23_;
1985 ValaCCodeFunctionDeclarator* _tmp24_;
1986 ValaCCodeParameter* _tmp25_;
1987 ValaDataType* creturn_type = NULL;
1988 ValaPropertyAccessor* _tmp26_;
1989 ValaPropertyAccessor* _tmp27_;
1990 ValaMethod* _tmp28_;
1991 ValaMethod* _tmp29_;
1992 ValaDataType* _tmp30_;
1993 ValaDataType* _tmp31_;
1994 ValaDataType* _tmp32_;
1995 ValaDataType* _tmp33_;
1996 ValaArrayType* array_type = NULL;
1997 ValaDataType* _tmp46_;
1998 ValaDataType* _tmp47_;
1999 ValaArrayType* _tmp48_;
2000 gboolean _tmp49_ = FALSE;
2001 ValaArrayType* _tmp50_;
2002 ValaCCodeDeclaration* vdecl = NULL;
2003 ValaDataType* _tmp81_;
2004 gchar* _tmp82_;
2005 gchar* _tmp83_;
2006 ValaCCodeDeclaration* _tmp84_;
2007 ValaCCodeDeclaration* _tmp85_;
2008 ValaCCodeDeclaration* _tmp86_;
2009 ValaCCodeFunctionDeclarator* _tmp87_;
2010 ValaCCodeDeclaration* _tmp88_;
2011 gboolean _tmp89_ = FALSE;
2012 gboolean _tmp90_ = FALSE;
2013 ValaClass* _tmp91_;
2014 _tmp18_ = vala_symbol_get_name ((ValaSymbol*) prop);
2015 _tmp19_ = _tmp18_;
2016 _tmp20_ = g_strdup_printf ("get_%s", _tmp19_);
2017 _tmp21_ = _tmp20_;
2018 _tmp22_ = vala_ccode_function_declarator_new (_tmp21_);
2019 _tmp23_ = _tmp22_;
2020 _g_free0 (_tmp21_);
2021 vdeclarator = _tmp23_;
2022 _tmp24_ = vdeclarator;
2023 _tmp25_ = cselfparam;
2024 vala_ccode_function_declarator_add_parameter (_tmp24_, _tmp25_);
2025 _tmp26_ = vala_property_get_get_accessor (prop);
2026 _tmp27_ = _tmp26_;
2027 _tmp28_ = vala_property_accessor_get_method (_tmp27_);
2028 _tmp29_ = _tmp28_;
2029 _tmp30_ = vala_ccode_base_module_get_callable_creturn_type ((ValaCallable*) _tmp29_);
2030 _tmp31_ = _tmp30_;
2031 _vala_code_node_unref0 (_tmp29_);
2032 creturn_type = _tmp31_;
2033 _tmp32_ = vala_property_get_property_type (prop);
2034 _tmp33_ = _tmp32_;
2035 if (vala_data_type_is_real_non_null_struct_type (_tmp33_)) {
2036 ValaCCodeParameter* cvalueparam = NULL;
2037 ValaPropertyAccessor* _tmp34_;
2038 ValaPropertyAccessor* _tmp35_;
2039 ValaDataType* _tmp36_;
2040 ValaDataType* _tmp37_;
2041 gchar* _tmp38_;
2042 gchar* _tmp39_;
2043 gchar* _tmp40_;
2044 gchar* _tmp41_;
2045 ValaCCodeParameter* _tmp42_;
2046 ValaCCodeParameter* _tmp43_;
2047 ValaCCodeFunctionDeclarator* _tmp44_;
2048 ValaCCodeParameter* _tmp45_;
2049 _tmp34_ = vala_property_get_get_accessor (prop);
2050 _tmp35_ = _tmp34_;
2051 _tmp36_ = vala_property_accessor_get_value_type (_tmp35_);
2052 _tmp37_ = _tmp36_;
2053 _tmp38_ = vala_get_ccode_name ((ValaCodeNode*) _tmp37_);
2054 _tmp39_ = _tmp38_;
2055 _tmp40_ = g_strdup_printf ("%s *", _tmp39_);
2056 _tmp41_ = _tmp40_;
2057 _tmp42_ = vala_ccode_parameter_new ("result", _tmp41_);
2058 _tmp43_ = _tmp42_;
2059 _g_free0 (_tmp41_);
2060 _g_free0 (_tmp39_);
2061 cvalueparam = _tmp43_;
2062 _tmp44_ = vdeclarator;
2063 _tmp45_ = cvalueparam;
2064 vala_ccode_function_declarator_add_parameter (_tmp44_, _tmp45_);
2065 _vala_ccode_node_unref0 (cvalueparam);
2066 }
2067 _tmp46_ = vala_property_get_property_type (prop);
2068 _tmp47_ = _tmp46_;
2069 _tmp48_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp47_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp47_) : NULL);
2070 array_type = _tmp48_;
2071 _tmp50_ = array_type;
2072 if (_tmp50_ != NULL) {
2073 _tmp49_ = vala_get_ccode_array_length ((ValaCodeNode*) prop);
2074 } else {
2075 _tmp49_ = FALSE;
2076 }
2077 if (_tmp49_) {
2078 gchar* length_ctype = NULL;
2079 gchar* _tmp51_;
2080 gchar* _tmp52_;
2081 gchar* _tmp53_;
2082 gchar* _tmp54_;
2083 _tmp51_ = vala_get_ccode_array_length_type ((ValaCodeNode*) prop);
2084 _tmp52_ = _tmp51_;
2085 _tmp53_ = g_strconcat (_tmp52_, "*", NULL);
2086 _tmp54_ = _tmp53_;
2087 _g_free0 (_tmp52_);
2088 length_ctype = _tmp54_;
2089 {
2090 gint dim = 0;
2091 dim = 1;
2092 {
2093 gboolean _tmp55_ = FALSE;
2094 _tmp55_ = TRUE;
2095 while (TRUE) {
2096 ValaArrayType* _tmp57_;
2097 gint _tmp58_;
2098 gint _tmp59_;
2099 ValaCCodeFunctionDeclarator* _tmp60_;
2100 gchar* _tmp61_;
2101 gchar* _tmp62_;
2102 const gchar* _tmp63_;
2103 ValaCCodeParameter* _tmp64_;
2104 ValaCCodeParameter* _tmp65_;
2105 if (!_tmp55_) {
2106 gint _tmp56_;
2107 _tmp56_ = dim;
2108 dim = _tmp56_ + 1;
2109 }
2110 _tmp55_ = FALSE;
2111 _tmp57_ = array_type;
2112 _tmp58_ = vala_array_type_get_rank (_tmp57_);
2113 _tmp59_ = _tmp58_;
2114 if (!(dim <= _tmp59_)) {
2115 break;
2116 }
2117 _tmp60_ = vdeclarator;
2118 _tmp61_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
2119 _tmp62_ = _tmp61_;
2120 _tmp63_ = length_ctype;
2121 _tmp64_ = vala_ccode_parameter_new (_tmp62_, _tmp63_);
2122 _tmp65_ = _tmp64_;
2123 vala_ccode_function_declarator_add_parameter (_tmp60_, _tmp65_);
2124 _vala_ccode_node_unref0 (_tmp65_);
2125 _g_free0 (_tmp62_);
2126 }
2127 }
2128 }
2129 _g_free0 (length_ctype);
2130 } else {
2131 gboolean _tmp66_ = FALSE;
2132 gboolean _tmp67_ = FALSE;
2133 ValaDataType* _tmp68_;
2134 ValaDataType* _tmp69_;
2135 _tmp68_ = vala_property_get_property_type (prop);
2136 _tmp69_ = _tmp68_;
2137 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp69_, VALA_TYPE_DELEGATE_TYPE)) {
2138 _tmp67_ = vala_get_ccode_delegate_target ((ValaCodeNode*) prop);
2139 } else {
2140 _tmp67_ = FALSE;
2141 }
2142 if (_tmp67_) {
2143 ValaDataType* _tmp70_;
2144 ValaDataType* _tmp71_;
2145 ValaDelegate* _tmp72_;
2146 ValaDelegate* _tmp73_;
2147 gboolean _tmp74_;
2148 gboolean _tmp75_;
2149 _tmp70_ = vala_property_get_property_type (prop);
2150 _tmp71_ = _tmp70_;
2151 _tmp72_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp71_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
2152 _tmp73_ = _tmp72_;
2153 _tmp74_ = vala_delegate_get_has_target (_tmp73_);
2154 _tmp75_ = _tmp74_;
2155 _tmp66_ = _tmp75_;
2156 } else {
2157 _tmp66_ = FALSE;
2158 }
2159 if (_tmp66_) {
2160 ValaCCodeFunctionDeclarator* _tmp76_;
2161 gchar* _tmp77_;
2162 gchar* _tmp78_;
2163 ValaCCodeParameter* _tmp79_;
2164 ValaCCodeParameter* _tmp80_;
2165 _tmp76_ = vdeclarator;
2166 _tmp77_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
2167 _tmp78_ = _tmp77_;
2168 _tmp79_ = vala_ccode_parameter_new (_tmp78_, "gpointer*");
2169 _tmp80_ = _tmp79_;
2170 vala_ccode_function_declarator_add_parameter (_tmp76_, _tmp80_);
2171 _vala_ccode_node_unref0 (_tmp80_);
2172 _g_free0 (_tmp78_);
2173 }
2174 }
2175 _tmp81_ = creturn_type;
2176 _tmp82_ = vala_get_ccode_name ((ValaCodeNode*) _tmp81_);
2177 _tmp83_ = _tmp82_;
2178 _tmp84_ = vala_ccode_declaration_new (_tmp83_);
2179 _tmp85_ = _tmp84_;
2180 _g_free0 (_tmp83_);
2181 vdecl = _tmp85_;
2182 _tmp86_ = vdecl;
2183 _tmp87_ = vdeclarator;
2184 vala_ccode_declaration_add_declarator (_tmp86_, (ValaCCodeDeclarator*) _tmp87_);
2185 _tmp88_ = vdecl;
2186 vala_ccode_struct_add_declaration (type_struct, _tmp88_);
2187 _tmp91_ = cl;
2188 if (_tmp91_ != NULL) {
2189 ValaClass* _tmp92_;
2190 gboolean _tmp93_;
2191 gboolean _tmp94_;
2192 _tmp92_ = cl;
2193 _tmp93_ = vala_class_get_is_compact (_tmp92_);
2194 _tmp94_ = _tmp93_;
2195 _tmp90_ = _tmp94_;
2196 } else {
2197 _tmp90_ = FALSE;
2198 }
2199 if (_tmp90_) {
2200 ValaClass* _tmp95_;
2201 ValaClass* _tmp96_;
2202 ValaClass* _tmp97_;
2203 _tmp95_ = cl;
2204 _tmp96_ = vala_class_get_base_class (_tmp95_);
2205 _tmp97_ = _tmp96_;
2206 _tmp89_ = _tmp97_ == NULL;
2207 } else {
2208 _tmp89_ = FALSE;
2209 }
2210 if (_tmp89_) {
2211 ValaCCodeDeclaration* _tmp98_;
2212 _tmp98_ = vdecl;
2213 vala_ccode_struct_add_declaration (instance_struct, _tmp98_);
2214 *has_struct_member = TRUE;
2215 }
2216 _vala_ccode_node_unref0 (vdecl);
2217 _vala_code_node_unref0 (array_type);
2218 _vala_code_node_unref0 (creturn_type);
2219 _vala_ccode_node_unref0 (vdeclarator);
2220 }
2221 _tmp99_ = vala_property_get_set_accessor (prop);
2222 _tmp100_ = _tmp99_;
2223 if (_tmp100_ != NULL) {
2224 ValaCCodeParameter* cvalueparam = NULL;
2225 ValaDataType* _tmp101_;
2226 ValaDataType* _tmp102_;
2227 ValaCCodeFunctionDeclarator* vdeclarator = NULL;
2228 const gchar* _tmp119_;
2229 const gchar* _tmp120_;
2230 gchar* _tmp121_;
2231 gchar* _tmp122_;
2232 ValaCCodeFunctionDeclarator* _tmp123_;
2233 ValaCCodeFunctionDeclarator* _tmp124_;
2234 ValaCCodeFunctionDeclarator* _tmp125_;
2235 ValaCCodeParameter* _tmp126_;
2236 ValaCCodeFunctionDeclarator* _tmp127_;
2237 ValaCCodeParameter* _tmp128_;
2238 ValaArrayType* array_type = NULL;
2239 ValaDataType* _tmp129_;
2240 ValaDataType* _tmp130_;
2241 ValaArrayType* _tmp131_;
2242 gboolean _tmp132_ = FALSE;
2243 ValaArrayType* _tmp133_;
2244 ValaCCodeDeclaration* vdecl = NULL;
2245 ValaCCodeDeclaration* _tmp175_;
2246 ValaCCodeDeclaration* _tmp176_;
2247 ValaCCodeFunctionDeclarator* _tmp177_;
2248 ValaCCodeDeclaration* _tmp178_;
2249 gboolean _tmp179_ = FALSE;
2250 gboolean _tmp180_ = FALSE;
2251 ValaClass* _tmp181_;
2252 _tmp101_ = vala_property_get_property_type (prop);
2253 _tmp102_ = _tmp101_;
2254 if (vala_data_type_is_real_non_null_struct_type (_tmp102_)) {
2255 ValaPropertyAccessor* _tmp103_;
2256 ValaPropertyAccessor* _tmp104_;
2257 ValaDataType* _tmp105_;
2258 ValaDataType* _tmp106_;
2259 gchar* _tmp107_;
2260 gchar* _tmp108_;
2261 gchar* _tmp109_;
2262 gchar* _tmp110_;
2263 ValaCCodeParameter* _tmp111_;
2264 _tmp103_ = vala_property_get_set_accessor (prop);
2265 _tmp104_ = _tmp103_;
2266 _tmp105_ = vala_property_accessor_get_value_type (_tmp104_);
2267 _tmp106_ = _tmp105_;
2268 _tmp107_ = vala_get_ccode_name ((ValaCodeNode*) _tmp106_);
2269 _tmp108_ = _tmp107_;
2270 _tmp109_ = g_strdup_printf ("%s *", _tmp108_);
2271 _tmp110_ = _tmp109_;
2272 _tmp111_ = vala_ccode_parameter_new ("value", _tmp110_);
2273 _vala_ccode_node_unref0 (cvalueparam);
2274 cvalueparam = _tmp111_;
2275 _g_free0 (_tmp110_);
2276 _g_free0 (_tmp108_);
2277 } else {
2278 ValaPropertyAccessor* _tmp112_;
2279 ValaPropertyAccessor* _tmp113_;
2280 ValaDataType* _tmp114_;
2281 ValaDataType* _tmp115_;
2282 gchar* _tmp116_;
2283 gchar* _tmp117_;
2284 ValaCCodeParameter* _tmp118_;
2285 _tmp112_ = vala_property_get_set_accessor (prop);
2286 _tmp113_ = _tmp112_;
2287 _tmp114_ = vala_property_accessor_get_value_type (_tmp113_);
2288 _tmp115_ = _tmp114_;
2289 _tmp116_ = vala_get_ccode_name ((ValaCodeNode*) _tmp115_);
2290 _tmp117_ = _tmp116_;
2291 _tmp118_ = vala_ccode_parameter_new ("value", _tmp117_);
2292 _vala_ccode_node_unref0 (cvalueparam);
2293 cvalueparam = _tmp118_;
2294 _g_free0 (_tmp117_);
2295 }
2296 _tmp119_ = vala_symbol_get_name ((ValaSymbol*) prop);
2297 _tmp120_ = _tmp119_;
2298 _tmp121_ = g_strdup_printf ("set_%s", _tmp120_);
2299 _tmp122_ = _tmp121_;
2300 _tmp123_ = vala_ccode_function_declarator_new (_tmp122_);
2301 _tmp124_ = _tmp123_;
2302 _g_free0 (_tmp122_);
2303 vdeclarator = _tmp124_;
2304 _tmp125_ = vdeclarator;
2305 _tmp126_ = cselfparam;
2306 vala_ccode_function_declarator_add_parameter (_tmp125_, _tmp126_);
2307 _tmp127_ = vdeclarator;
2308 _tmp128_ = cvalueparam;
2309 vala_ccode_function_declarator_add_parameter (_tmp127_, _tmp128_);
2310 _tmp129_ = vala_property_get_property_type (prop);
2311 _tmp130_ = _tmp129_;
2312 _tmp131_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp130_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp130_) : NULL);
2313 array_type = _tmp131_;
2314 _tmp133_ = array_type;
2315 if (_tmp133_ != NULL) {
2316 _tmp132_ = vala_get_ccode_array_length ((ValaCodeNode*) prop);
2317 } else {
2318 _tmp132_ = FALSE;
2319 }
2320 if (_tmp132_) {
2321 gchar* length_ctype = NULL;
2322 gchar* _tmp134_;
2323 _tmp134_ = vala_get_ccode_array_length_type ((ValaCodeNode*) prop);
2324 length_ctype = _tmp134_;
2325 {
2326 gint dim = 0;
2327 dim = 1;
2328 {
2329 gboolean _tmp135_ = FALSE;
2330 _tmp135_ = TRUE;
2331 while (TRUE) {
2332 ValaArrayType* _tmp137_;
2333 gint _tmp138_;
2334 gint _tmp139_;
2335 ValaCCodeFunctionDeclarator* _tmp140_;
2336 gchar* _tmp141_;
2337 gchar* _tmp142_;
2338 const gchar* _tmp143_;
2339 ValaCCodeParameter* _tmp144_;
2340 ValaCCodeParameter* _tmp145_;
2341 if (!_tmp135_) {
2342 gint _tmp136_;
2343 _tmp136_ = dim;
2344 dim = _tmp136_ + 1;
2345 }
2346 _tmp135_ = FALSE;
2347 _tmp137_ = array_type;
2348 _tmp138_ = vala_array_type_get_rank (_tmp137_);
2349 _tmp139_ = _tmp138_;
2350 if (!(dim <= _tmp139_)) {
2351 break;
2352 }
2353 _tmp140_ = vdeclarator;
2354 _tmp141_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", dim);
2355 _tmp142_ = _tmp141_;
2356 _tmp143_ = length_ctype;
2357 _tmp144_ = vala_ccode_parameter_new (_tmp142_, _tmp143_);
2358 _tmp145_ = _tmp144_;
2359 vala_ccode_function_declarator_add_parameter (_tmp140_, _tmp145_);
2360 _vala_ccode_node_unref0 (_tmp145_);
2361 _g_free0 (_tmp142_);
2362 }
2363 }
2364 }
2365 _g_free0 (length_ctype);
2366 } else {
2367 gboolean _tmp146_ = FALSE;
2368 gboolean _tmp147_ = FALSE;
2369 ValaDataType* _tmp148_;
2370 ValaDataType* _tmp149_;
2371 _tmp148_ = vala_property_get_property_type (prop);
2372 _tmp149_ = _tmp148_;
2373 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp149_, VALA_TYPE_DELEGATE_TYPE)) {
2374 _tmp147_ = vala_get_ccode_delegate_target ((ValaCodeNode*) prop);
2375 } else {
2376 _tmp147_ = FALSE;
2377 }
2378 if (_tmp147_) {
2379 ValaDataType* _tmp150_;
2380 ValaDataType* _tmp151_;
2381 ValaDelegate* _tmp152_;
2382 ValaDelegate* _tmp153_;
2383 gboolean _tmp154_;
2384 gboolean _tmp155_;
2385 _tmp150_ = vala_property_get_property_type (prop);
2386 _tmp151_ = _tmp150_;
2387 _tmp152_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp151_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
2388 _tmp153_ = _tmp152_;
2389 _tmp154_ = vala_delegate_get_has_target (_tmp153_);
2390 _tmp155_ = _tmp154_;
2391 _tmp146_ = _tmp155_;
2392 } else {
2393 _tmp146_ = FALSE;
2394 }
2395 if (_tmp146_) {
2396 ValaCCodeFunctionDeclarator* _tmp156_;
2397 gchar* _tmp157_;
2398 gchar* _tmp158_;
2399 ValaCCodeParameter* _tmp159_;
2400 ValaCCodeParameter* _tmp160_;
2401 ValaPropertyAccessor* _tmp161_;
2402 ValaPropertyAccessor* _tmp162_;
2403 ValaDataType* _tmp163_;
2404 ValaDataType* _tmp164_;
2405 gboolean _tmp165_;
2406 gboolean _tmp166_;
2407 _tmp156_ = vdeclarator;
2408 _tmp157_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "value");
2409 _tmp158_ = _tmp157_;
2410 _tmp159_ = vala_ccode_parameter_new (_tmp158_, "gpointer");
2411 _tmp160_ = _tmp159_;
2412 vala_ccode_function_declarator_add_parameter (_tmp156_, _tmp160_);
2413 _vala_ccode_node_unref0 (_tmp160_);
2414 _g_free0 (_tmp158_);
2415 _tmp161_ = vala_property_get_set_accessor (prop);
2416 _tmp162_ = _tmp161_;
2417 _tmp163_ = vala_property_accessor_get_value_type (_tmp162_);
2418 _tmp164_ = _tmp163_;
2419 _tmp165_ = vala_data_type_get_value_owned (_tmp164_);
2420 _tmp166_ = _tmp165_;
2421 if (_tmp166_) {
2422 ValaCCodeFunctionDeclarator* _tmp167_;
2423 gchar* _tmp168_;
2424 gchar* _tmp169_;
2425 ValaDelegateType* _tmp170_;
2426 gchar* _tmp171_;
2427 gchar* _tmp172_;
2428 ValaCCodeParameter* _tmp173_;
2429 ValaCCodeParameter* _tmp174_;
2430 _tmp167_ = vdeclarator;
2431 _tmp168_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, "value");
2432 _tmp169_ = _tmp168_;
2433 _tmp170_ = ((ValaCCodeBaseModule*) self)->delegate_target_destroy_type;
2434 _tmp171_ = vala_get_ccode_name ((ValaCodeNode*) _tmp170_);
2435 _tmp172_ = _tmp171_;
2436 _tmp173_ = vala_ccode_parameter_new (_tmp169_, _tmp172_);
2437 _tmp174_ = _tmp173_;
2438 vala_ccode_function_declarator_add_parameter (_tmp167_, _tmp174_);
2439 _vala_ccode_node_unref0 (_tmp174_);
2440 _g_free0 (_tmp172_);
2441 _g_free0 (_tmp169_);
2442 }
2443 }
2444 }
2445 _tmp175_ = vala_ccode_declaration_new ("void");
2446 vdecl = _tmp175_;
2447 _tmp176_ = vdecl;
2448 _tmp177_ = vdeclarator;
2449 vala_ccode_declaration_add_declarator (_tmp176_, (ValaCCodeDeclarator*) _tmp177_);
2450 _tmp178_ = vdecl;
2451 vala_ccode_struct_add_declaration (type_struct, _tmp178_);
2452 _tmp181_ = cl;
2453 if (_tmp181_ != NULL) {
2454 ValaClass* _tmp182_;
2455 gboolean _tmp183_;
2456 gboolean _tmp184_;
2457 _tmp182_ = cl;
2458 _tmp183_ = vala_class_get_is_compact (_tmp182_);
2459 _tmp184_ = _tmp183_;
2460 _tmp180_ = _tmp184_;
2461 } else {
2462 _tmp180_ = FALSE;
2463 }
2464 if (_tmp180_) {
2465 ValaClass* _tmp185_;
2466 ValaClass* _tmp186_;
2467 ValaClass* _tmp187_;
2468 _tmp185_ = cl;
2469 _tmp186_ = vala_class_get_base_class (_tmp185_);
2470 _tmp187_ = _tmp186_;
2471 _tmp179_ = _tmp187_ == NULL;
2472 } else {
2473 _tmp179_ = FALSE;
2474 }
2475 if (_tmp179_) {
2476 ValaCCodeDeclaration* _tmp188_;
2477 _tmp188_ = vdecl;
2478 vala_ccode_struct_add_declaration (instance_struct, _tmp188_);
2479 *has_struct_member = TRUE;
2480 }
2481 _vala_ccode_node_unref0 (vdecl);
2482 _vala_code_node_unref0 (array_type);
2483 _vala_ccode_node_unref0 (vdeclarator);
2484 _vala_ccode_node_unref0 (cvalueparam);
2485 }
2486 _vala_ccode_node_unref0 (cselfparam);
2487 _vala_code_node_unref0 (this_type);
2488 }
2489
2490 static void
vala_gtype_module_generate_struct_field_declaration(ValaGTypeModule * self,ValaField * f,ValaCCodeStruct * instance_struct,ValaCCodeStruct * type_struct,ValaCCodeFile * decl_space,gboolean * has_struct_member)2491 vala_gtype_module_generate_struct_field_declaration (ValaGTypeModule* self,
2492 ValaField* f,
2493 ValaCCodeStruct* instance_struct,
2494 ValaCCodeStruct* type_struct,
2495 ValaCCodeFile* decl_space,
2496 gboolean* has_struct_member)
2497 {
2498 ValaCCodeModifiers _tmp0_ = 0U;
2499 gboolean _tmp1_;
2500 gboolean _tmp2_;
2501 ValaCCodeModifiers _tmp3_ = 0U;
2502 ValaVersionAttribute* _tmp4_;
2503 ValaVersionAttribute* _tmp5_;
2504 gboolean _tmp6_;
2505 gboolean _tmp7_;
2506 ValaCCodeModifiers modifiers = 0U;
2507 ValaMemberBinding _tmp8_;
2508 ValaMemberBinding _tmp9_;
2509 g_return_if_fail (self != NULL);
2510 g_return_if_fail (f != NULL);
2511 g_return_if_fail (instance_struct != NULL);
2512 g_return_if_fail (type_struct != NULL);
2513 g_return_if_fail (decl_space != NULL);
2514 _tmp1_ = vala_field_get_is_volatile (f);
2515 _tmp2_ = _tmp1_;
2516 if (_tmp2_) {
2517 _tmp0_ = VALA_CCODE_MODIFIERS_VOLATILE;
2518 } else {
2519 _tmp0_ = 0;
2520 }
2521 _tmp4_ = vala_symbol_get_version ((ValaSymbol*) f);
2522 _tmp5_ = _tmp4_;
2523 _tmp6_ = vala_version_attribute_get_deprecated (_tmp5_);
2524 _tmp7_ = _tmp6_;
2525 if (_tmp7_) {
2526 _tmp3_ = VALA_CCODE_MODIFIERS_DEPRECATED;
2527 } else {
2528 _tmp3_ = 0;
2529 }
2530 modifiers = _tmp0_ | _tmp3_;
2531 _tmp8_ = vala_field_get_binding (f);
2532 _tmp9_ = _tmp8_;
2533 if (_tmp9_ == VALA_MEMBER_BINDING_INSTANCE) {
2534 vala_ccode_base_module_append_field ((ValaCCodeBaseModule*) self, instance_struct, f, decl_space);
2535 *has_struct_member = TRUE;
2536 } else {
2537 ValaMemberBinding _tmp10_;
2538 ValaMemberBinding _tmp11_;
2539 _tmp10_ = vala_field_get_binding (f);
2540 _tmp11_ = _tmp10_;
2541 if (_tmp11_ == VALA_MEMBER_BINDING_CLASS) {
2542 ValaDataType* _tmp12_;
2543 ValaDataType* _tmp13_;
2544 gchar* _tmp14_;
2545 gchar* _tmp15_;
2546 gchar* _tmp16_;
2547 gchar* _tmp17_;
2548 ValaCCodeModifiers _tmp18_;
2549 _tmp12_ = vala_variable_get_variable_type ((ValaVariable*) f);
2550 _tmp13_ = _tmp12_;
2551 _tmp14_ = vala_get_ccode_name ((ValaCodeNode*) _tmp13_);
2552 _tmp15_ = _tmp14_;
2553 _tmp16_ = vala_get_ccode_name ((ValaCodeNode*) f);
2554 _tmp17_ = _tmp16_;
2555 _tmp18_ = modifiers;
2556 vala_ccode_struct_add_field (type_struct, _tmp15_, _tmp17_, _tmp18_, NULL);
2557 _g_free0 (_tmp17_);
2558 _g_free0 (_tmp15_);
2559 }
2560 }
2561 }
2562
2563 static gboolean
vala_gtype_module_real_generate_method_declaration(ValaCCodeBaseModule * base,ValaMethod * m,ValaCCodeFile * decl_space)2564 vala_gtype_module_real_generate_method_declaration (ValaCCodeBaseModule* base,
2565 ValaMethod* m,
2566 ValaCCodeFile* decl_space)
2567 {
2568 ValaGTypeModule * self;
2569 gboolean result = FALSE;
2570 self = (ValaGTypeModule*) base;
2571 g_return_val_if_fail (m != NULL, FALSE);
2572 g_return_val_if_fail (decl_space != NULL, FALSE);
2573 if (VALA_CCODE_BASE_MODULE_CLASS (vala_gtype_module_parent_class)->generate_method_declaration ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), m, decl_space)) {
2574 ValaClass* cl = NULL;
2575 ValaSymbol* _tmp0_;
2576 ValaSymbol* _tmp1_;
2577 gboolean _tmp2_ = FALSE;
2578 gboolean _tmp3_ = FALSE;
2579 gboolean _tmp4_ = FALSE;
2580 ValaClass* _tmp5_;
2581 _tmp0_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
2582 _tmp1_ = _tmp0_;
2583 cl = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp1_) : NULL;
2584 _tmp5_ = cl;
2585 if (_tmp5_ != NULL) {
2586 ValaClass* _tmp6_;
2587 gboolean _tmp7_;
2588 gboolean _tmp8_;
2589 _tmp6_ = cl;
2590 _tmp7_ = vala_class_get_is_compact (_tmp6_);
2591 _tmp8_ = _tmp7_;
2592 _tmp4_ = _tmp8_;
2593 } else {
2594 _tmp4_ = FALSE;
2595 }
2596 if (_tmp4_) {
2597 ValaClass* _tmp9_;
2598 gchar* _tmp10_;
2599 gchar* _tmp11_;
2600 gchar* _tmp12_;
2601 gchar* _tmp13_;
2602 _tmp9_ = cl;
2603 _tmp10_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp9_);
2604 _tmp11_ = _tmp10_;
2605 _tmp12_ = vala_get_ccode_name ((ValaCodeNode*) m);
2606 _tmp13_ = _tmp12_;
2607 _tmp3_ = g_strcmp0 (_tmp11_, _tmp13_) == 0;
2608 _g_free0 (_tmp13_);
2609 _g_free0 (_tmp11_);
2610 } else {
2611 _tmp3_ = FALSE;
2612 }
2613 if (_tmp3_) {
2614 gboolean _tmp14_ = FALSE;
2615 ValaCodeContext* _tmp15_;
2616 ValaCodeContext* _tmp16_;
2617 gboolean _tmp17_;
2618 gboolean _tmp18_;
2619 _tmp15_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
2620 _tmp16_ = _tmp15_;
2621 _tmp17_ = vala_code_context_get_use_header (_tmp16_);
2622 _tmp18_ = _tmp17_;
2623 if (!_tmp18_) {
2624 _tmp14_ = TRUE;
2625 } else {
2626 gboolean _tmp19_;
2627 gboolean _tmp20_;
2628 _tmp19_ = vala_ccode_file_get_is_header (decl_space);
2629 _tmp20_ = _tmp19_;
2630 _tmp14_ = _tmp20_;
2631 }
2632 _tmp2_ = _tmp14_;
2633 } else {
2634 _tmp2_ = FALSE;
2635 }
2636 if (_tmp2_) {
2637 ValaClass* _tmp21_;
2638 gchar* _tmp22_;
2639 gchar* _tmp23_;
2640 gchar* _tmp24_;
2641 gchar* _tmp25_;
2642 gchar* _tmp26_;
2643 gchar* _tmp27_;
2644 ValaCCodeIdentifier* _tmp28_;
2645 ValaCCodeIdentifier* _tmp29_;
2646 ValaCCodeNewline* _tmp30_;
2647 ValaCCodeNewline* _tmp31_;
2648 _tmp21_ = cl;
2649 _tmp22_ = vala_get_ccode_name ((ValaCodeNode*) _tmp21_);
2650 _tmp23_ = _tmp22_;
2651 _tmp24_ = vala_get_ccode_name ((ValaCodeNode*) m);
2652 _tmp25_ = _tmp24_;
2653 _tmp26_ = g_strdup_printf ("G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, %s)", _tmp23_, _tmp25_);
2654 _tmp27_ = _tmp26_;
2655 _tmp28_ = vala_ccode_identifier_new (_tmp27_);
2656 _tmp29_ = _tmp28_;
2657 vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp29_);
2658 _vala_ccode_node_unref0 (_tmp29_);
2659 _g_free0 (_tmp27_);
2660 _g_free0 (_tmp25_);
2661 _g_free0 (_tmp23_);
2662 _tmp30_ = vala_ccode_newline_new ();
2663 _tmp31_ = _tmp30_;
2664 vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp31_);
2665 _vala_ccode_node_unref0 (_tmp31_);
2666 }
2667 result = TRUE;
2668 return result;
2669 }
2670 result = FALSE;
2671 return result;
2672 }
2673
2674 static void
vala_gtype_module_real_generate_virtual_method_declaration(ValaGTypeModule * self,ValaMethod * m,ValaCCodeFile * decl_space,ValaCCodeStruct * type_struct)2675 vala_gtype_module_real_generate_virtual_method_declaration (ValaGTypeModule* self,
2676 ValaMethod* m,
2677 ValaCCodeFile* decl_space,
2678 ValaCCodeStruct* type_struct)
2679 {
2680 gboolean _tmp0_ = FALSE;
2681 gboolean _tmp1_;
2682 gboolean _tmp2_;
2683 ValaDataType* creturn_type = NULL;
2684 ValaDataType* _tmp5_;
2685 ValaCCodeFunctionDeclarator* vdeclarator = NULL;
2686 gchar* _tmp6_;
2687 gchar* _tmp7_;
2688 ValaCCodeFunctionDeclarator* _tmp8_;
2689 ValaCCodeFunctionDeclarator* _tmp9_;
2690 ValaHashMap* cparam_map = NULL;
2691 GHashFunc _tmp10_;
2692 GEqualFunc _tmp11_;
2693 GEqualFunc _tmp12_;
2694 ValaHashMap* _tmp13_;
2695 gboolean _tmp14_;
2696 gboolean _tmp15_;
2697 ValaVersionAttribute* _tmp26_;
2698 ValaVersionAttribute* _tmp27_;
2699 gboolean _tmp28_;
2700 gboolean _tmp29_;
2701 ValaHashMap* _tmp34_;
2702 ValaCCodeFunction* _tmp35_;
2703 ValaCCodeFunction* _tmp36_;
2704 ValaCCodeFunctionDeclarator* _tmp37_;
2705 ValaCCodeDeclaration* vdecl = NULL;
2706 ValaDataType* _tmp38_;
2707 gchar* _tmp39_;
2708 gchar* _tmp40_;
2709 ValaCCodeDeclaration* _tmp41_;
2710 ValaCCodeDeclaration* _tmp42_;
2711 ValaCCodeDeclaration* _tmp43_;
2712 ValaCCodeFunctionDeclarator* _tmp44_;
2713 ValaCCodeDeclaration* _tmp45_;
2714 g_return_if_fail (m != NULL);
2715 g_return_if_fail (decl_space != NULL);
2716 g_return_if_fail (type_struct != NULL);
2717 _tmp1_ = vala_method_get_is_abstract (m);
2718 _tmp2_ = _tmp1_;
2719 if (!_tmp2_) {
2720 gboolean _tmp3_;
2721 gboolean _tmp4_;
2722 _tmp3_ = vala_method_get_is_virtual (m);
2723 _tmp4_ = _tmp3_;
2724 _tmp0_ = !_tmp4_;
2725 } else {
2726 _tmp0_ = FALSE;
2727 }
2728 if (_tmp0_) {
2729 return;
2730 }
2731 _tmp5_ = vala_ccode_base_module_get_callable_creturn_type ((ValaCallable*) m);
2732 creturn_type = _tmp5_;
2733 _tmp6_ = vala_get_ccode_vfunc_name (m);
2734 _tmp7_ = _tmp6_;
2735 _tmp8_ = vala_ccode_function_declarator_new (_tmp7_);
2736 _tmp9_ = _tmp8_;
2737 _g_free0 (_tmp7_);
2738 vdeclarator = _tmp9_;
2739 _tmp10_ = g_direct_hash;
2740 _tmp11_ = g_direct_equal;
2741 _tmp12_ = g_direct_equal;
2742 _tmp13_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp10_, _tmp11_, _tmp12_);
2743 cparam_map = _tmp13_;
2744 _tmp14_ = vala_method_get_printf_format (m);
2745 _tmp15_ = _tmp14_;
2746 if (_tmp15_) {
2747 ValaCCodeFunctionDeclarator* _tmp16_;
2748 ValaCCodeFunctionDeclarator* _tmp17_;
2749 ValaCCodeModifiers _tmp18_;
2750 ValaCCodeModifiers _tmp19_;
2751 _tmp16_ = vdeclarator;
2752 _tmp17_ = vdeclarator;
2753 _tmp18_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp17_);
2754 _tmp19_ = _tmp18_;
2755 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp17_, _tmp19_ | VALA_CCODE_MODIFIERS_PRINTF);
2756 } else {
2757 gboolean _tmp20_;
2758 gboolean _tmp21_;
2759 _tmp20_ = vala_method_get_scanf_format (m);
2760 _tmp21_ = _tmp20_;
2761 if (_tmp21_) {
2762 ValaCCodeFunctionDeclarator* _tmp22_;
2763 ValaCCodeFunctionDeclarator* _tmp23_;
2764 ValaCCodeModifiers _tmp24_;
2765 ValaCCodeModifiers _tmp25_;
2766 _tmp22_ = vdeclarator;
2767 _tmp23_ = vdeclarator;
2768 _tmp24_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp23_);
2769 _tmp25_ = _tmp24_;
2770 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp23_, _tmp25_ | VALA_CCODE_MODIFIERS_SCANF);
2771 }
2772 }
2773 _tmp26_ = vala_symbol_get_version ((ValaSymbol*) m);
2774 _tmp27_ = _tmp26_;
2775 _tmp28_ = vala_version_attribute_get_deprecated (_tmp27_);
2776 _tmp29_ = _tmp28_;
2777 if (_tmp29_) {
2778 ValaCCodeFunctionDeclarator* _tmp30_;
2779 ValaCCodeFunctionDeclarator* _tmp31_;
2780 ValaCCodeModifiers _tmp32_;
2781 ValaCCodeModifiers _tmp33_;
2782 _tmp30_ = vdeclarator;
2783 _tmp31_ = vdeclarator;
2784 _tmp32_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp31_);
2785 _tmp33_ = _tmp32_;
2786 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp31_, _tmp33_ | VALA_CCODE_MODIFIERS_DEPRECATED);
2787 }
2788 _tmp34_ = cparam_map;
2789 _tmp35_ = vala_ccode_function_new ("fake", "void");
2790 _tmp36_ = _tmp35_;
2791 _tmp37_ = vdeclarator;
2792 vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, decl_space, (ValaMap*) _tmp34_, _tmp36_, _tmp37_, NULL, NULL, 3);
2793 _vala_ccode_node_unref0 (_tmp36_);
2794 _tmp38_ = creturn_type;
2795 _tmp39_ = vala_get_ccode_name ((ValaCodeNode*) _tmp38_);
2796 _tmp40_ = _tmp39_;
2797 _tmp41_ = vala_ccode_declaration_new (_tmp40_);
2798 _tmp42_ = _tmp41_;
2799 _g_free0 (_tmp40_);
2800 vdecl = _tmp42_;
2801 _tmp43_ = vdecl;
2802 _tmp44_ = vdeclarator;
2803 vala_ccode_declaration_add_declarator (_tmp43_, (ValaCCodeDeclarator*) _tmp44_);
2804 _tmp45_ = vdecl;
2805 vala_ccode_struct_add_declaration (type_struct, _tmp45_);
2806 _vala_ccode_node_unref0 (vdecl);
2807 _vala_map_unref0 (cparam_map);
2808 _vala_ccode_node_unref0 (vdeclarator);
2809 _vala_code_node_unref0 (creturn_type);
2810 }
2811
2812 void
vala_gtype_module_generate_virtual_method_declaration(ValaGTypeModule * self,ValaMethod * m,ValaCCodeFile * decl_space,ValaCCodeStruct * type_struct)2813 vala_gtype_module_generate_virtual_method_declaration (ValaGTypeModule* self,
2814 ValaMethod* m,
2815 ValaCCodeFile* decl_space,
2816 ValaCCodeStruct* type_struct)
2817 {
2818 g_return_if_fail (self != NULL);
2819 VALA_GTYPE_MODULE_GET_CLASS (self)->generate_virtual_method_declaration (self, m, decl_space, type_struct);
2820 }
2821
2822 static void
vala_gtype_module_generate_class_private_declaration(ValaGTypeModule * self,ValaClass * cl,ValaCCodeFile * decl_space)2823 vala_gtype_module_generate_class_private_declaration (ValaGTypeModule* self,
2824 ValaClass* cl,
2825 ValaCCodeFile* decl_space)
2826 {
2827 gchar* _tmp0_;
2828 gchar* _tmp1_;
2829 gchar* _tmp2_;
2830 gchar* _tmp3_;
2831 gboolean _tmp4_;
2832 gboolean is_gtypeinstance = FALSE;
2833 gboolean _tmp5_;
2834 gboolean _tmp6_;
2835 gboolean has_class_locks = FALSE;
2836 ValaCCodeStruct* instance_priv_struct = NULL;
2837 gchar* _tmp7_;
2838 gchar* _tmp8_;
2839 gchar* _tmp9_;
2840 gchar* _tmp10_;
2841 ValaCCodeStruct* _tmp11_;
2842 ValaCCodeStruct* _tmp12_;
2843 ValaCCodeStruct* type_priv_struct = NULL;
2844 gchar* _tmp13_;
2845 gchar* _tmp14_;
2846 gchar* _tmp15_;
2847 gchar* _tmp16_;
2848 ValaCCodeStruct* _tmp17_;
2849 ValaCCodeStruct* _tmp18_;
2850 gboolean has_struct_member = FALSE;
2851 g_return_if_fail (self != NULL);
2852 g_return_if_fail (cl != NULL);
2853 g_return_if_fail (decl_space != NULL);
2854 _tmp0_ = vala_get_ccode_name ((ValaCodeNode*) cl);
2855 _tmp1_ = _tmp0_;
2856 _tmp2_ = g_strdup_printf ("%sPrivate", _tmp1_);
2857 _tmp3_ = _tmp2_;
2858 _tmp4_ = vala_ccode_file_add_declaration (decl_space, _tmp3_);
2859 _g_free0 (_tmp3_);
2860 _g_free0 (_tmp1_);
2861 if (_tmp4_) {
2862 return;
2863 }
2864 _tmp5_ = vala_class_get_is_compact (cl);
2865 _tmp6_ = _tmp5_;
2866 is_gtypeinstance = !_tmp6_;
2867 has_class_locks = FALSE;
2868 _tmp7_ = vala_get_ccode_name ((ValaCodeNode*) cl);
2869 _tmp8_ = _tmp7_;
2870 _tmp9_ = g_strdup_printf ("_%sPrivate", _tmp8_);
2871 _tmp10_ = _tmp9_;
2872 _tmp11_ = vala_ccode_struct_new (_tmp10_);
2873 _tmp12_ = _tmp11_;
2874 _g_free0 (_tmp10_);
2875 _g_free0 (_tmp8_);
2876 instance_priv_struct = _tmp12_;
2877 _tmp13_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
2878 _tmp14_ = _tmp13_;
2879 _tmp15_ = g_strdup_printf ("_%sPrivate", _tmp14_);
2880 _tmp16_ = _tmp15_;
2881 _tmp17_ = vala_ccode_struct_new (_tmp16_);
2882 _tmp18_ = _tmp17_;
2883 _g_free0 (_tmp16_);
2884 _g_free0 (_tmp14_);
2885 type_priv_struct = _tmp18_;
2886 if (is_gtypeinstance) {
2887 {
2888 ValaList* _type_param_list = NULL;
2889 ValaList* _tmp19_;
2890 ValaList* _tmp20_;
2891 gint _type_param_size = 0;
2892 ValaList* _tmp21_;
2893 gint _tmp22_;
2894 gint _tmp23_;
2895 gint _type_param_index = 0;
2896 _tmp19_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
2897 _tmp20_ = _vala_iterable_ref0 (_tmp19_);
2898 _type_param_list = _tmp20_;
2899 _tmp21_ = _type_param_list;
2900 _tmp22_ = vala_collection_get_size ((ValaCollection*) _tmp21_);
2901 _tmp23_ = _tmp22_;
2902 _type_param_size = _tmp23_;
2903 _type_param_index = -1;
2904 while (TRUE) {
2905 gint _tmp24_;
2906 gint _tmp25_;
2907 ValaTypeParameter* type_param = NULL;
2908 ValaList* _tmp26_;
2909 gpointer _tmp27_;
2910 gchar* func_name = NULL;
2911 ValaTypeParameter* _tmp28_;
2912 const gchar* _tmp29_;
2913 const gchar* _tmp30_;
2914 gchar* _tmp31_;
2915 gchar* _tmp32_;
2916 gchar* _tmp33_;
2917 ValaCCodeStruct* _tmp34_;
2918 const gchar* _tmp35_;
2919 ValaTypeParameter* _tmp36_;
2920 const gchar* _tmp37_;
2921 const gchar* _tmp38_;
2922 gchar* _tmp39_;
2923 gchar* _tmp40_;
2924 gchar* _tmp41_;
2925 ValaCCodeStruct* _tmp42_;
2926 const gchar* _tmp43_;
2927 ValaTypeParameter* _tmp44_;
2928 const gchar* _tmp45_;
2929 const gchar* _tmp46_;
2930 gchar* _tmp47_;
2931 gchar* _tmp48_;
2932 gchar* _tmp49_;
2933 ValaCCodeStruct* _tmp50_;
2934 const gchar* _tmp51_;
2935 _type_param_index = _type_param_index + 1;
2936 _tmp24_ = _type_param_index;
2937 _tmp25_ = _type_param_size;
2938 if (!(_tmp24_ < _tmp25_)) {
2939 break;
2940 }
2941 _tmp26_ = _type_param_list;
2942 _tmp27_ = vala_list_get (_tmp26_, _type_param_index);
2943 type_param = (ValaTypeParameter*) _tmp27_;
2944 _tmp28_ = type_param;
2945 _tmp29_ = vala_symbol_get_name ((ValaSymbol*) _tmp28_);
2946 _tmp30_ = _tmp29_;
2947 _tmp31_ = g_ascii_strdown (_tmp30_, (gssize) -1);
2948 _tmp32_ = _tmp31_;
2949 _tmp33_ = g_strdup_printf ("%s_type", _tmp32_);
2950 _g_free0 (func_name);
2951 func_name = _tmp33_;
2952 _g_free0 (_tmp32_);
2953 _tmp34_ = instance_priv_struct;
2954 _tmp35_ = func_name;
2955 vala_ccode_struct_add_field (_tmp34_, "GType", _tmp35_, 0, NULL);
2956 _tmp36_ = type_param;
2957 _tmp37_ = vala_symbol_get_name ((ValaSymbol*) _tmp36_);
2958 _tmp38_ = _tmp37_;
2959 _tmp39_ = g_ascii_strdown (_tmp38_, (gssize) -1);
2960 _tmp40_ = _tmp39_;
2961 _tmp41_ = g_strdup_printf ("%s_dup_func", _tmp40_);
2962 _g_free0 (func_name);
2963 func_name = _tmp41_;
2964 _g_free0 (_tmp40_);
2965 _tmp42_ = instance_priv_struct;
2966 _tmp43_ = func_name;
2967 vala_ccode_struct_add_field (_tmp42_, "GBoxedCopyFunc", _tmp43_, 0, NULL);
2968 _tmp44_ = type_param;
2969 _tmp45_ = vala_symbol_get_name ((ValaSymbol*) _tmp44_);
2970 _tmp46_ = _tmp45_;
2971 _tmp47_ = g_ascii_strdown (_tmp46_, (gssize) -1);
2972 _tmp48_ = _tmp47_;
2973 _tmp49_ = g_strdup_printf ("%s_destroy_func", _tmp48_);
2974 _g_free0 (func_name);
2975 func_name = _tmp49_;
2976 _g_free0 (_tmp48_);
2977 _tmp50_ = instance_priv_struct;
2978 _tmp51_ = func_name;
2979 vala_ccode_struct_add_field (_tmp50_, "GDestroyNotify", _tmp51_, 0, NULL);
2980 _g_free0 (func_name);
2981 _vala_code_node_unref0 (type_param);
2982 }
2983 _vala_iterable_unref0 (_type_param_list);
2984 }
2985 }
2986 has_struct_member = FALSE;
2987 {
2988 ValaList* _f_list = NULL;
2989 ValaList* _tmp52_;
2990 ValaList* _tmp53_;
2991 gint _f_size = 0;
2992 ValaList* _tmp54_;
2993 gint _tmp55_;
2994 gint _tmp56_;
2995 gint _f_index = 0;
2996 _tmp52_ = vala_object_type_symbol_get_fields ((ValaObjectTypeSymbol*) cl);
2997 _tmp53_ = _vala_iterable_ref0 (_tmp52_);
2998 _f_list = _tmp53_;
2999 _tmp54_ = _f_list;
3000 _tmp55_ = vala_collection_get_size ((ValaCollection*) _tmp54_);
3001 _tmp56_ = _tmp55_;
3002 _f_size = _tmp56_;
3003 _f_index = -1;
3004 while (TRUE) {
3005 gint _tmp57_;
3006 gint _tmp58_;
3007 ValaField* f = NULL;
3008 ValaList* _tmp59_;
3009 gpointer _tmp60_;
3010 ValaField* _tmp61_;
3011 ValaSymbolAccessibility _tmp62_;
3012 ValaSymbolAccessibility _tmp63_;
3013 ValaField* _tmp67_;
3014 gboolean _tmp68_;
3015 gboolean _tmp69_;
3016 _f_index = _f_index + 1;
3017 _tmp57_ = _f_index;
3018 _tmp58_ = _f_size;
3019 if (!(_tmp57_ < _tmp58_)) {
3020 break;
3021 }
3022 _tmp59_ = _f_list;
3023 _tmp60_ = vala_list_get (_tmp59_, _f_index);
3024 f = (ValaField*) _tmp60_;
3025 _tmp61_ = f;
3026 _tmp62_ = vala_symbol_get_access ((ValaSymbol*) _tmp61_);
3027 _tmp63_ = _tmp62_;
3028 if (_tmp63_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
3029 ValaField* _tmp64_;
3030 ValaCCodeStruct* _tmp65_;
3031 ValaCCodeStruct* _tmp66_;
3032 _tmp64_ = f;
3033 _tmp65_ = instance_priv_struct;
3034 _tmp66_ = type_priv_struct;
3035 vala_gtype_module_generate_struct_field_declaration (self, _tmp64_, _tmp65_, _tmp66_, decl_space, &has_struct_member);
3036 }
3037 _tmp67_ = f;
3038 _tmp68_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp67_);
3039 _tmp69_ = _tmp68_;
3040 if (_tmp69_) {
3041 ValaField* _tmp70_;
3042 ValaMemberBinding _tmp71_;
3043 ValaMemberBinding _tmp72_;
3044 _tmp70_ = f;
3045 _tmp71_ = vala_field_get_binding (_tmp70_);
3046 _tmp72_ = _tmp71_;
3047 if (_tmp72_ == VALA_MEMBER_BINDING_INSTANCE) {
3048 ValaCCodeStruct* _tmp73_;
3049 ValaStruct* _tmp74_;
3050 gchar* _tmp75_;
3051 gchar* _tmp76_;
3052 ValaField* _tmp77_;
3053 gchar* _tmp78_;
3054 gchar* _tmp79_;
3055 gchar* _tmp80_;
3056 gchar* _tmp81_;
3057 vala_class_set_has_private_fields (cl, TRUE);
3058 _tmp73_ = instance_priv_struct;
3059 _tmp74_ = ((ValaCCodeBaseModule*) self)->mutex_type;
3060 _tmp75_ = vala_get_ccode_name ((ValaCodeNode*) _tmp74_);
3061 _tmp76_ = _tmp75_;
3062 _tmp77_ = f;
3063 _tmp78_ = vala_get_ccode_name ((ValaCodeNode*) _tmp77_);
3064 _tmp79_ = _tmp78_;
3065 _tmp80_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp79_);
3066 _tmp81_ = _tmp80_;
3067 vala_ccode_struct_add_field (_tmp73_, _tmp76_, _tmp81_, 0, NULL);
3068 _g_free0 (_tmp81_);
3069 _g_free0 (_tmp79_);
3070 _g_free0 (_tmp76_);
3071 } else {
3072 ValaField* _tmp82_;
3073 ValaMemberBinding _tmp83_;
3074 ValaMemberBinding _tmp84_;
3075 _tmp82_ = f;
3076 _tmp83_ = vala_field_get_binding (_tmp82_);
3077 _tmp84_ = _tmp83_;
3078 if (_tmp84_ == VALA_MEMBER_BINDING_CLASS) {
3079 ValaCCodeStruct* _tmp85_;
3080 ValaStruct* _tmp86_;
3081 gchar* _tmp87_;
3082 gchar* _tmp88_;
3083 ValaField* _tmp89_;
3084 gchar* _tmp90_;
3085 gchar* _tmp91_;
3086 gchar* _tmp92_;
3087 gchar* _tmp93_;
3088 has_class_locks = TRUE;
3089 _tmp85_ = type_priv_struct;
3090 _tmp86_ = ((ValaCCodeBaseModule*) self)->mutex_type;
3091 _tmp87_ = vala_get_ccode_name ((ValaCodeNode*) _tmp86_);
3092 _tmp88_ = _tmp87_;
3093 _tmp89_ = f;
3094 _tmp90_ = vala_get_ccode_name ((ValaCodeNode*) _tmp89_);
3095 _tmp91_ = _tmp90_;
3096 _tmp92_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp91_);
3097 _tmp93_ = _tmp92_;
3098 vala_ccode_struct_add_field (_tmp85_, _tmp88_, _tmp93_, 0, NULL);
3099 _g_free0 (_tmp93_);
3100 _g_free0 (_tmp91_);
3101 _g_free0 (_tmp88_);
3102 }
3103 }
3104 }
3105 _vala_code_node_unref0 (f);
3106 }
3107 _vala_iterable_unref0 (_f_list);
3108 }
3109 {
3110 ValaList* _prop_list = NULL;
3111 ValaList* _tmp94_;
3112 ValaList* _tmp95_;
3113 gint _prop_size = 0;
3114 ValaList* _tmp96_;
3115 gint _tmp97_;
3116 gint _tmp98_;
3117 gint _prop_index = 0;
3118 _tmp94_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
3119 _tmp95_ = _vala_iterable_ref0 (_tmp94_);
3120 _prop_list = _tmp95_;
3121 _tmp96_ = _prop_list;
3122 _tmp97_ = vala_collection_get_size ((ValaCollection*) _tmp96_);
3123 _tmp98_ = _tmp97_;
3124 _prop_size = _tmp98_;
3125 _prop_index = -1;
3126 while (TRUE) {
3127 gint _tmp99_;
3128 gint _tmp100_;
3129 ValaProperty* prop = NULL;
3130 ValaList* _tmp101_;
3131 gpointer _tmp102_;
3132 ValaProperty* _tmp103_;
3133 ValaMemberBinding _tmp104_;
3134 ValaMemberBinding _tmp105_;
3135 _prop_index = _prop_index + 1;
3136 _tmp99_ = _prop_index;
3137 _tmp100_ = _prop_size;
3138 if (!(_tmp99_ < _tmp100_)) {
3139 break;
3140 }
3141 _tmp101_ = _prop_list;
3142 _tmp102_ = vala_list_get (_tmp101_, _prop_index);
3143 prop = (ValaProperty*) _tmp102_;
3144 _tmp103_ = prop;
3145 _tmp104_ = vala_property_get_binding (_tmp103_);
3146 _tmp105_ = _tmp104_;
3147 if (_tmp105_ == VALA_MEMBER_BINDING_INSTANCE) {
3148 ValaProperty* _tmp106_;
3149 gboolean _tmp107_;
3150 gboolean _tmp108_;
3151 _tmp106_ = prop;
3152 _tmp107_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp106_);
3153 _tmp108_ = _tmp107_;
3154 if (_tmp108_) {
3155 ValaCCodeStruct* _tmp109_;
3156 ValaStruct* _tmp110_;
3157 gchar* _tmp111_;
3158 gchar* _tmp112_;
3159 ValaProperty* _tmp113_;
3160 gchar* _tmp114_;
3161 gchar* _tmp115_;
3162 gchar* _tmp116_;
3163 gchar* _tmp117_;
3164 vala_class_set_has_private_fields (cl, TRUE);
3165 _tmp109_ = instance_priv_struct;
3166 _tmp110_ = ((ValaCCodeBaseModule*) self)->mutex_type;
3167 _tmp111_ = vala_get_ccode_name ((ValaCodeNode*) _tmp110_);
3168 _tmp112_ = _tmp111_;
3169 _tmp113_ = prop;
3170 _tmp114_ = vala_get_ccode_name ((ValaCodeNode*) _tmp113_);
3171 _tmp115_ = _tmp114_;
3172 _tmp116_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp115_);
3173 _tmp117_ = _tmp116_;
3174 vala_ccode_struct_add_field (_tmp109_, _tmp112_, _tmp117_, 0, NULL);
3175 _g_free0 (_tmp117_);
3176 _g_free0 (_tmp115_);
3177 _g_free0 (_tmp112_);
3178 }
3179 } else {
3180 ValaProperty* _tmp118_;
3181 ValaMemberBinding _tmp119_;
3182 ValaMemberBinding _tmp120_;
3183 _tmp118_ = prop;
3184 _tmp119_ = vala_property_get_binding (_tmp118_);
3185 _tmp120_ = _tmp119_;
3186 if (_tmp120_ == VALA_MEMBER_BINDING_CLASS) {
3187 ValaProperty* _tmp121_;
3188 gboolean _tmp122_;
3189 gboolean _tmp123_;
3190 _tmp121_ = prop;
3191 _tmp122_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp121_);
3192 _tmp123_ = _tmp122_;
3193 if (_tmp123_) {
3194 ValaCCodeStruct* _tmp124_;
3195 ValaStruct* _tmp125_;
3196 gchar* _tmp126_;
3197 gchar* _tmp127_;
3198 ValaProperty* _tmp128_;
3199 gchar* _tmp129_;
3200 gchar* _tmp130_;
3201 gchar* _tmp131_;
3202 gchar* _tmp132_;
3203 has_class_locks = TRUE;
3204 _tmp124_ = type_priv_struct;
3205 _tmp125_ = ((ValaCCodeBaseModule*) self)->mutex_type;
3206 _tmp126_ = vala_get_ccode_name ((ValaCodeNode*) _tmp125_);
3207 _tmp127_ = _tmp126_;
3208 _tmp128_ = prop;
3209 _tmp129_ = vala_get_ccode_name ((ValaCodeNode*) _tmp128_);
3210 _tmp130_ = _tmp129_;
3211 _tmp131_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp130_);
3212 _tmp132_ = _tmp131_;
3213 vala_ccode_struct_add_field (_tmp124_, _tmp127_, _tmp132_, 0, NULL);
3214 _g_free0 (_tmp132_);
3215 _g_free0 (_tmp130_);
3216 _g_free0 (_tmp127_);
3217 }
3218 }
3219 }
3220 _vala_code_node_unref0 (prop);
3221 }
3222 _vala_iterable_unref0 (_prop_list);
3223 }
3224 if (is_gtypeinstance) {
3225 gboolean _tmp133_ = FALSE;
3226 gboolean _tmp134_;
3227 gboolean _tmp135_;
3228 gboolean _tmp149_ = FALSE;
3229 gboolean _tmp150_;
3230 gboolean _tmp151_;
3231 gboolean _tmp205_ = FALSE;
3232 gboolean _tmp206_;
3233 gboolean _tmp207_;
3234 _tmp134_ = vala_class_get_has_class_private_fields (cl);
3235 _tmp135_ = _tmp134_;
3236 if (_tmp135_) {
3237 _tmp133_ = TRUE;
3238 } else {
3239 _tmp133_ = has_class_locks;
3240 }
3241 if (_tmp133_) {
3242 ValaCCodeStruct* _tmp136_;
3243 const gchar* _tmp137_;
3244 const gchar* _tmp138_;
3245 gchar* _tmp139_;
3246 gchar* _tmp140_;
3247 gchar* _tmp141_;
3248 gchar* _tmp142_;
3249 gchar* _tmp143_;
3250 gchar* _tmp144_;
3251 ValaCCodeVariableDeclarator* _tmp145_;
3252 ValaCCodeVariableDeclarator* _tmp146_;
3253 ValaCCodeTypeDefinition* _tmp147_;
3254 ValaCCodeTypeDefinition* _tmp148_;
3255 _tmp136_ = type_priv_struct;
3256 _tmp137_ = vala_ccode_struct_get_name (_tmp136_);
3257 _tmp138_ = _tmp137_;
3258 _tmp139_ = g_strdup_printf ("struct %s", _tmp138_);
3259 _tmp140_ = _tmp139_;
3260 _tmp141_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
3261 _tmp142_ = _tmp141_;
3262 _tmp143_ = g_strdup_printf ("%sPrivate", _tmp142_);
3263 _tmp144_ = _tmp143_;
3264 _tmp145_ = vala_ccode_variable_declarator_new (_tmp144_, NULL, NULL);
3265 _tmp146_ = _tmp145_;
3266 _tmp147_ = vala_ccode_type_definition_new (_tmp140_, (ValaCCodeDeclarator*) _tmp146_);
3267 _tmp148_ = _tmp147_;
3268 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp148_);
3269 _vala_ccode_node_unref0 (_tmp148_);
3270 _vala_ccode_node_unref0 (_tmp146_);
3271 _g_free0 (_tmp144_);
3272 _g_free0 (_tmp142_);
3273 _g_free0 (_tmp140_);
3274 }
3275 _tmp150_ = vala_class_get_has_private_fields (cl);
3276 _tmp151_ = _tmp150_;
3277 if (_tmp151_) {
3278 _tmp149_ = TRUE;
3279 } else {
3280 _tmp149_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
3281 }
3282 if (_tmp149_) {
3283 ValaCCodeStruct* _tmp152_;
3284 ValaCCodeDeclaration* parent_decl = NULL;
3285 ValaCCodeDeclaration* _tmp153_;
3286 ValaCCodeVariableDeclarator* parent_var_decl = NULL;
3287 gchar* _tmp154_;
3288 gchar* _tmp155_;
3289 gchar* _tmp156_;
3290 gchar* _tmp157_;
3291 ValaCCodeVariableDeclarator* _tmp158_;
3292 ValaCCodeVariableDeclarator* _tmp159_;
3293 ValaCCodeDeclaration* _tmp160_;
3294 ValaCCodeVariableDeclarator* _tmp161_;
3295 ValaCCodeDeclaration* _tmp162_;
3296 ValaCCodeFile* _tmp163_;
3297 ValaCCodeDeclaration* _tmp164_;
3298 ValaCCodeFunction* function = NULL;
3299 gchar* _tmp165_;
3300 gchar* _tmp166_;
3301 gchar* _tmp167_;
3302 gchar* _tmp168_;
3303 ValaCCodeFunction* _tmp169_;
3304 ValaCCodeFunction* _tmp170_;
3305 ValaCCodeFunction* _tmp171_;
3306 ValaCCodeFunction* _tmp172_;
3307 gchar* _tmp173_;
3308 gchar* _tmp174_;
3309 gchar* _tmp175_;
3310 gchar* _tmp176_;
3311 ValaCCodeParameter* _tmp177_;
3312 ValaCCodeParameter* _tmp178_;
3313 ValaCCodeFunction* _tmp179_;
3314 ValaCCodeFunction* _tmp180_;
3315 ValaCCodeBlock* _tmp181_;
3316 ValaCCodeBlock* _tmp182_;
3317 ValaCCodeFunctionCall* ccall = NULL;
3318 ValaCCodeIdentifier* _tmp183_;
3319 ValaCCodeIdentifier* _tmp184_;
3320 ValaCCodeFunctionCall* _tmp185_;
3321 ValaCCodeFunctionCall* _tmp186_;
3322 ValaCCodeFunctionCall* _tmp187_;
3323 ValaCCodeIdentifier* _tmp188_;
3324 ValaCCodeIdentifier* _tmp189_;
3325 ValaCCodeFunctionCall* _tmp190_;
3326 gchar* _tmp191_;
3327 gchar* _tmp192_;
3328 gchar* _tmp193_;
3329 gchar* _tmp194_;
3330 ValaCCodeIdentifier* _tmp195_;
3331 ValaCCodeIdentifier* _tmp196_;
3332 ValaCCodeFunction* _tmp197_;
3333 ValaCCodeBlock* _tmp198_;
3334 ValaCCodeBlock* _tmp199_;
3335 ValaCCodeFunctionCall* _tmp200_;
3336 ValaCCodeReturnStatement* _tmp201_;
3337 ValaCCodeReturnStatement* _tmp202_;
3338 ValaCCodeFile* _tmp203_;
3339 ValaCCodeFunction* _tmp204_;
3340 _tmp152_ = instance_priv_struct;
3341 vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) _tmp152_);
3342 _tmp153_ = vala_ccode_declaration_new ("gint");
3343 parent_decl = _tmp153_;
3344 _tmp154_ = vala_get_ccode_name ((ValaCodeNode*) cl);
3345 _tmp155_ = _tmp154_;
3346 _tmp156_ = g_strdup_printf ("%s_private_offset", _tmp155_);
3347 _tmp157_ = _tmp156_;
3348 _tmp158_ = vala_ccode_variable_declarator_new (_tmp157_, NULL, NULL);
3349 _tmp159_ = _tmp158_;
3350 _g_free0 (_tmp157_);
3351 _g_free0 (_tmp155_);
3352 parent_var_decl = _tmp159_;
3353 _tmp160_ = parent_decl;
3354 _tmp161_ = parent_var_decl;
3355 vala_ccode_declaration_add_declarator (_tmp160_, (ValaCCodeDeclarator*) _tmp161_);
3356 _tmp162_ = parent_decl;
3357 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp162_, VALA_CCODE_MODIFIERS_STATIC);
3358 _tmp163_ = ((ValaCCodeBaseModule*) self)->cfile;
3359 _tmp164_ = parent_decl;
3360 vala_ccode_file_add_type_member_declaration (_tmp163_, (ValaCCodeNode*) _tmp164_);
3361 _tmp165_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
3362 _tmp166_ = _tmp165_;
3363 _tmp167_ = g_strdup_printf ("%s_get_instance_private", _tmp166_);
3364 _tmp168_ = _tmp167_;
3365 _tmp169_ = vala_ccode_function_new (_tmp168_, "gpointer");
3366 _tmp170_ = _tmp169_;
3367 _g_free0 (_tmp168_);
3368 _g_free0 (_tmp166_);
3369 function = _tmp170_;
3370 _tmp171_ = function;
3371 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp171_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_INLINE);
3372 _tmp172_ = function;
3373 _tmp173_ = vala_get_ccode_name ((ValaCodeNode*) cl);
3374 _tmp174_ = _tmp173_;
3375 _tmp175_ = g_strdup_printf ("%s*", _tmp174_);
3376 _tmp176_ = _tmp175_;
3377 _tmp177_ = vala_ccode_parameter_new ("self", _tmp176_);
3378 _tmp178_ = _tmp177_;
3379 vala_ccode_function_add_parameter (_tmp172_, _tmp178_);
3380 _vala_ccode_node_unref0 (_tmp178_);
3381 _g_free0 (_tmp176_);
3382 _g_free0 (_tmp174_);
3383 _tmp179_ = function;
3384 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp179_);
3385 _tmp180_ = function;
3386 _tmp181_ = vala_ccode_block_new ();
3387 _tmp182_ = _tmp181_;
3388 vala_ccode_function_set_block (_tmp180_, _tmp182_);
3389 _vala_ccode_node_unref0 (_tmp182_);
3390 _tmp183_ = vala_ccode_identifier_new ("G_STRUCT_MEMBER_P");
3391 _tmp184_ = _tmp183_;
3392 _tmp185_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp184_);
3393 _tmp186_ = _tmp185_;
3394 _vala_ccode_node_unref0 (_tmp184_);
3395 ccall = _tmp186_;
3396 _tmp187_ = ccall;
3397 _tmp188_ = vala_ccode_identifier_new ("self");
3398 _tmp189_ = _tmp188_;
3399 vala_ccode_function_call_add_argument (_tmp187_, (ValaCCodeExpression*) _tmp189_);
3400 _vala_ccode_node_unref0 (_tmp189_);
3401 _tmp190_ = ccall;
3402 _tmp191_ = vala_get_ccode_name ((ValaCodeNode*) cl);
3403 _tmp192_ = _tmp191_;
3404 _tmp193_ = g_strdup_printf ("%s_private_offset", _tmp192_);
3405 _tmp194_ = _tmp193_;
3406 _tmp195_ = vala_ccode_identifier_new (_tmp194_);
3407 _tmp196_ = _tmp195_;
3408 vala_ccode_function_call_add_argument (_tmp190_, (ValaCCodeExpression*) _tmp196_);
3409 _vala_ccode_node_unref0 (_tmp196_);
3410 _g_free0 (_tmp194_);
3411 _g_free0 (_tmp192_);
3412 _tmp197_ = function;
3413 _tmp198_ = vala_ccode_function_get_block (_tmp197_);
3414 _tmp199_ = _tmp198_;
3415 _tmp200_ = ccall;
3416 _tmp201_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp200_);
3417 _tmp202_ = _tmp201_;
3418 vala_ccode_block_add_statement (_tmp199_, (ValaCCodeNode*) _tmp202_);
3419 _vala_ccode_node_unref0 (_tmp202_);
3420 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
3421 _tmp203_ = ((ValaCCodeBaseModule*) self)->cfile;
3422 _tmp204_ = function;
3423 vala_ccode_file_add_function (_tmp203_, _tmp204_);
3424 _vala_ccode_node_unref0 (ccall);
3425 _vala_ccode_node_unref0 (function);
3426 _vala_ccode_node_unref0 (parent_var_decl);
3427 _vala_ccode_node_unref0 (parent_decl);
3428 }
3429 _tmp206_ = vala_class_get_has_class_private_fields (cl);
3430 _tmp207_ = _tmp206_;
3431 if (_tmp207_) {
3432 _tmp205_ = TRUE;
3433 } else {
3434 _tmp205_ = has_class_locks;
3435 }
3436 if (_tmp205_) {
3437 ValaCCodeStruct* _tmp208_;
3438 gchar* macro = NULL;
3439 gchar* _tmp209_;
3440 gchar* _tmp210_;
3441 gchar* _tmp211_;
3442 gchar* _tmp212_;
3443 gchar* _tmp213_;
3444 gchar* _tmp214_;
3445 gchar* _tmp215_;
3446 gchar* _tmp216_;
3447 gchar* _tmp217_;
3448 gchar* _tmp218_;
3449 const gchar* _tmp219_;
3450 ValaCCodeMacroReplacement* _tmp220_;
3451 ValaCCodeMacroReplacement* _tmp221_;
3452 _tmp208_ = type_priv_struct;
3453 vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) _tmp208_);
3454 _tmp209_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
3455 _tmp210_ = _tmp209_;
3456 _tmp211_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
3457 _tmp212_ = _tmp211_;
3458 _tmp213_ = g_strdup_printf ("(G_TYPE_CLASS_GET_PRIVATE (klass, %s, %sPrivate))", _tmp210_, _tmp212_);
3459 _tmp214_ = _tmp213_;
3460 _g_free0 (_tmp212_);
3461 _g_free0 (_tmp210_);
3462 macro = _tmp214_;
3463 _tmp215_ = vala_get_ccode_class_get_private_function (cl);
3464 _tmp216_ = _tmp215_;
3465 _tmp217_ = g_strdup_printf ("%s(klass)", _tmp216_);
3466 _tmp218_ = _tmp217_;
3467 _tmp219_ = macro;
3468 _tmp220_ = vala_ccode_macro_replacement_new (_tmp218_, _tmp219_);
3469 _tmp221_ = _tmp220_;
3470 vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp221_);
3471 _vala_ccode_node_unref0 (_tmp221_);
3472 _g_free0 (_tmp218_);
3473 _g_free0 (_tmp216_);
3474 _g_free0 (macro);
3475 }
3476 }
3477 _vala_ccode_node_unref0 (type_priv_struct);
3478 _vala_ccode_node_unref0 (instance_priv_struct);
3479 }
3480
3481 static gpointer
_vala_ccode_node_ref0(gpointer self)3482 _vala_ccode_node_ref0 (gpointer self)
3483 {
3484 return self ? vala_ccode_node_ref (self) : NULL;
3485 }
3486
3487 static gpointer
_vala_ccode_base_module_emit_context_ref0(gpointer self)3488 _vala_ccode_base_module_emit_context_ref0 (gpointer self)
3489 {
3490 return self ? vala_ccode_base_module_emit_context_ref (self) : NULL;
3491 }
3492
3493 static void
vala_gtype_module_real_visit_class(ValaCodeVisitor * base,ValaClass * cl)3494 vala_gtype_module_real_visit_class (ValaCodeVisitor* base,
3495 ValaClass* cl)
3496 {
3497 ValaGTypeModule * self;
3498 ValaCCodeBaseModuleEmitContext* _tmp0_;
3499 ValaCCodeBaseModuleEmitContext* _tmp1_;
3500 ValaSourceReference* _tmp2_;
3501 ValaSourceReference* _tmp3_;
3502 ValaCCodeStruct* old_param_spec_struct = NULL;
3503 ValaCCodeStruct* _tmp4_;
3504 ValaCCodeStruct* _tmp5_;
3505 ValaCCodeEnum* old_prop_enum = NULL;
3506 ValaCCodeEnum* _tmp6_;
3507 ValaCCodeEnum* _tmp7_;
3508 ValaCCodeEnum* old_signal_enum = NULL;
3509 ValaCCodeEnum* _tmp8_;
3510 ValaCCodeEnum* _tmp9_;
3511 ValaCCodeBaseModuleEmitContext* old_class_init_context = NULL;
3512 ValaCCodeBaseModuleEmitContext* _tmp10_;
3513 ValaCCodeBaseModuleEmitContext* _tmp11_;
3514 ValaCCodeBaseModuleEmitContext* old_base_init_context = NULL;
3515 ValaCCodeBaseModuleEmitContext* _tmp12_;
3516 ValaCCodeBaseModuleEmitContext* _tmp13_;
3517 ValaCCodeBaseModuleEmitContext* old_class_finalize_context = NULL;
3518 ValaCCodeBaseModuleEmitContext* _tmp14_;
3519 ValaCCodeBaseModuleEmitContext* _tmp15_;
3520 ValaCCodeBaseModuleEmitContext* old_base_finalize_context = NULL;
3521 ValaCCodeBaseModuleEmitContext* _tmp16_;
3522 ValaCCodeBaseModuleEmitContext* _tmp17_;
3523 ValaCCodeBaseModuleEmitContext* old_instance_init_context = NULL;
3524 ValaCCodeBaseModuleEmitContext* _tmp18_;
3525 ValaCCodeBaseModuleEmitContext* _tmp19_;
3526 ValaCCodeBaseModuleEmitContext* old_instance_finalize_context = NULL;
3527 ValaCCodeBaseModuleEmitContext* _tmp20_;
3528 ValaCCodeBaseModuleEmitContext* _tmp21_;
3529 gboolean is_gtypeinstance = FALSE;
3530 gboolean _tmp22_;
3531 gboolean _tmp23_;
3532 gboolean _tmp24_ = FALSE;
3533 gboolean is_gobject = FALSE;
3534 gboolean _tmp26_ = FALSE;
3535 gboolean is_fundamental = FALSE;
3536 gchar* _tmp29_;
3537 gchar* _tmp30_;
3538 gint _tmp31_;
3539 gint _tmp32_;
3540 gboolean _tmp33_;
3541 ValaCCodeEnum* _tmp40_;
3542 ValaCCodeEnum* _tmp41_;
3543 gchar* _tmp42_;
3544 gchar* _tmp43_;
3545 gchar* _tmp44_;
3546 gchar* _tmp45_;
3547 ValaCCodeEnumValue* _tmp46_;
3548 ValaCCodeEnumValue* _tmp47_;
3549 ValaCCodeEnum* _tmp48_;
3550 ValaCCodeBaseModuleEmitContext* _tmp49_;
3551 ValaCCodeBaseModuleEmitContext* _tmp50_;
3552 ValaCCodeBaseModuleEmitContext* _tmp51_;
3553 ValaCCodeBaseModuleEmitContext* _tmp52_;
3554 ValaCCodeBaseModuleEmitContext* _tmp53_;
3555 ValaCCodeBaseModuleEmitContext* _tmp54_;
3556 ValaCCodeFile* _tmp55_;
3557 ValaCCodeFile* _tmp56_;
3558 gchar* last_prop = NULL;
3559 gchar* _tmp57_;
3560 gchar* _tmp58_;
3561 gchar* _tmp59_;
3562 gchar* _tmp60_;
3563 ValaCCodeStruct* _tmp355_;
3564 ValaCCodeStruct* _tmp356_;
3565 ValaCCodeEnum* _tmp357_;
3566 ValaCCodeEnum* _tmp358_;
3567 ValaCCodeEnum* _tmp359_;
3568 ValaCCodeEnum* _tmp360_;
3569 ValaCCodeBaseModuleEmitContext* _tmp361_;
3570 ValaCCodeBaseModuleEmitContext* _tmp362_;
3571 ValaCCodeBaseModuleEmitContext* _tmp363_;
3572 ValaCCodeBaseModuleEmitContext* _tmp364_;
3573 ValaCCodeBaseModuleEmitContext* _tmp365_;
3574 ValaCCodeBaseModuleEmitContext* _tmp366_;
3575 ValaCCodeBaseModuleEmitContext* _tmp367_;
3576 ValaCCodeBaseModuleEmitContext* _tmp368_;
3577 ValaCCodeBaseModuleEmitContext* _tmp369_;
3578 ValaCCodeBaseModuleEmitContext* _tmp370_;
3579 ValaCCodeBaseModuleEmitContext* _tmp371_;
3580 ValaCCodeBaseModuleEmitContext* _tmp372_;
3581 self = (ValaGTypeModule*) base;
3582 g_return_if_fail (cl != NULL);
3583 _tmp0_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3584 _tmp1_ = _tmp0_;
3585 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp1_);
3586 _vala_ccode_base_module_emit_context_unref0 (_tmp1_);
3587 _tmp2_ = vala_code_node_get_source_reference ((ValaCodeNode*) cl);
3588 _tmp3_ = _tmp2_;
3589 vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp3_);
3590 _tmp4_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
3591 _tmp5_ = _vala_ccode_node_ref0 (_tmp4_);
3592 old_param_spec_struct = _tmp5_;
3593 _tmp6_ = ((ValaCCodeBaseModule*) self)->prop_enum;
3594 _tmp7_ = _vala_ccode_node_ref0 (_tmp6_);
3595 old_prop_enum = _tmp7_;
3596 _tmp8_ = ((ValaCCodeBaseModule*) self)->signal_enum;
3597 _tmp9_ = _vala_ccode_node_ref0 (_tmp8_);
3598 old_signal_enum = _tmp9_;
3599 _tmp10_ = ((ValaCCodeBaseModule*) self)->class_init_context;
3600 _tmp11_ = _vala_ccode_base_module_emit_context_ref0 (_tmp10_);
3601 old_class_init_context = _tmp11_;
3602 _tmp12_ = ((ValaCCodeBaseModule*) self)->base_init_context;
3603 _tmp13_ = _vala_ccode_base_module_emit_context_ref0 (_tmp12_);
3604 old_base_init_context = _tmp13_;
3605 _tmp14_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
3606 _tmp15_ = _vala_ccode_base_module_emit_context_ref0 (_tmp14_);
3607 old_class_finalize_context = _tmp15_;
3608 _tmp16_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
3609 _tmp17_ = _vala_ccode_base_module_emit_context_ref0 (_tmp16_);
3610 old_base_finalize_context = _tmp17_;
3611 _tmp18_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
3612 _tmp19_ = _vala_ccode_base_module_emit_context_ref0 (_tmp18_);
3613 old_instance_init_context = _tmp19_;
3614 _tmp20_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
3615 _tmp21_ = _vala_ccode_base_module_emit_context_ref0 (_tmp20_);
3616 old_instance_finalize_context = _tmp21_;
3617 _tmp22_ = vala_class_get_is_compact (cl);
3618 _tmp23_ = _tmp22_;
3619 is_gtypeinstance = !_tmp23_;
3620 if (is_gtypeinstance) {
3621 ValaTypeSymbol* _tmp25_;
3622 _tmp25_ = ((ValaCCodeBaseModule*) self)->gobject_type;
3623 _tmp24_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, _tmp25_);
3624 } else {
3625 _tmp24_ = FALSE;
3626 }
3627 is_gobject = _tmp24_;
3628 if (is_gtypeinstance) {
3629 ValaClass* _tmp27_;
3630 ValaClass* _tmp28_;
3631 _tmp27_ = vala_class_get_base_class (cl);
3632 _tmp28_ = _tmp27_;
3633 _tmp26_ = _tmp28_ == NULL;
3634 } else {
3635 _tmp26_ = FALSE;
3636 }
3637 is_fundamental = _tmp26_;
3638 _tmp29_ = vala_get_ccode_name ((ValaCodeNode*) cl);
3639 _tmp30_ = _tmp29_;
3640 _tmp31_ = strlen (_tmp30_);
3641 _tmp32_ = _tmp31_;
3642 _tmp33_ = _tmp32_ < 3;
3643 _g_free0 (_tmp30_);
3644 if (_tmp33_) {
3645 ValaSourceReference* _tmp34_;
3646 ValaSourceReference* _tmp35_;
3647 gchar* _tmp36_;
3648 gchar* _tmp37_;
3649 gchar* _tmp38_;
3650 gchar* _tmp39_;
3651 vala_code_node_set_error ((ValaCodeNode*) cl, TRUE);
3652 _tmp34_ = vala_code_node_get_source_reference ((ValaCodeNode*) cl);
3653 _tmp35_ = _tmp34_;
3654 _tmp36_ = vala_get_ccode_name ((ValaCodeNode*) cl);
3655 _tmp37_ = _tmp36_;
3656 _tmp38_ = g_strdup_printf ("Class name `%s' is too short", _tmp37_);
3657 _tmp39_ = _tmp38_;
3658 vala_report_error (_tmp35_, _tmp39_);
3659 _g_free0 (_tmp39_);
3660 _g_free0 (_tmp37_);
3661 _vala_ccode_base_module_emit_context_unref0 (old_instance_finalize_context);
3662 _vala_ccode_base_module_emit_context_unref0 (old_instance_init_context);
3663 _vala_ccode_base_module_emit_context_unref0 (old_base_finalize_context);
3664 _vala_ccode_base_module_emit_context_unref0 (old_class_finalize_context);
3665 _vala_ccode_base_module_emit_context_unref0 (old_base_init_context);
3666 _vala_ccode_base_module_emit_context_unref0 (old_class_init_context);
3667 _vala_ccode_node_unref0 (old_signal_enum);
3668 _vala_ccode_node_unref0 (old_prop_enum);
3669 _vala_ccode_node_unref0 (old_param_spec_struct);
3670 return;
3671 }
3672 _tmp40_ = vala_ccode_enum_new (NULL);
3673 _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->prop_enum);
3674 ((ValaCCodeBaseModule*) self)->prop_enum = _tmp40_;
3675 _tmp41_ = ((ValaCCodeBaseModule*) self)->prop_enum;
3676 _tmp42_ = vala_get_ccode_upper_case_name ((ValaSymbol*) cl, NULL);
3677 _tmp43_ = _tmp42_;
3678 _tmp44_ = g_strdup_printf ("%s_0_PROPERTY", _tmp43_);
3679 _tmp45_ = _tmp44_;
3680 _tmp46_ = vala_ccode_enum_value_new (_tmp45_, NULL);
3681 _tmp47_ = _tmp46_;
3682 vala_ccode_enum_add_value (_tmp41_, _tmp47_);
3683 _vala_ccode_node_unref0 (_tmp47_);
3684 _g_free0 (_tmp45_);
3685 _g_free0 (_tmp43_);
3686 _tmp48_ = vala_ccode_enum_new (NULL);
3687 _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
3688 ((ValaCCodeBaseModule*) self)->signal_enum = _tmp48_;
3689 _tmp49_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3690 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_init_context);
3691 ((ValaCCodeBaseModule*) self)->class_init_context = _tmp49_;
3692 _tmp50_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3693 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_init_context);
3694 ((ValaCCodeBaseModule*) self)->base_init_context = _tmp50_;
3695 _tmp51_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3696 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
3697 ((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp51_;
3698 _tmp52_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3699 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
3700 ((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp52_;
3701 _tmp53_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3702 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
3703 ((ValaCCodeBaseModule*) self)->instance_init_context = _tmp53_;
3704 _tmp54_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) cl);
3705 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
3706 ((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp54_;
3707 _tmp55_ = ((ValaCCodeBaseModule*) self)->cfile;
3708 vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, cl, _tmp55_);
3709 _tmp56_ = ((ValaCCodeBaseModule*) self)->cfile;
3710 vala_gtype_module_generate_class_private_declaration (self, cl, _tmp56_);
3711 _tmp57_ = vala_get_ccode_upper_case_name ((ValaSymbol*) cl, NULL);
3712 _tmp58_ = _tmp57_;
3713 _tmp59_ = g_strdup_printf ("%s_NUM_PROPERTIES", _tmp58_);
3714 _tmp60_ = _tmp59_;
3715 _g_free0 (_tmp58_);
3716 last_prop = _tmp60_;
3717 if (is_gobject) {
3718 ValaCCodeFile* _tmp61_;
3719 ValaCCodeEnum* _tmp62_;
3720 ValaCCodeDeclaration* prop_array_decl = NULL;
3721 ValaCCodeDeclaration* _tmp63_;
3722 ValaCCodeDeclaration* _tmp64_;
3723 ValaCCodeDeclaration* _tmp65_;
3724 ValaCCodeModifiers _tmp66_;
3725 ValaCCodeModifiers _tmp67_;
3726 ValaCCodeDeclaration* _tmp68_;
3727 gchar* _tmp69_;
3728 gchar* _tmp70_;
3729 gchar* _tmp71_;
3730 gchar* _tmp72_;
3731 const gchar* _tmp73_;
3732 ValaCCodeIdentifier* _tmp74_;
3733 ValaCCodeIdentifier* _tmp75_;
3734 ValaCCodeDeclaratorSuffix* _tmp76_;
3735 ValaCCodeDeclaratorSuffix* _tmp77_;
3736 ValaCCodeVariableDeclarator* _tmp78_;
3737 ValaCCodeVariableDeclarator* _tmp79_;
3738 ValaCCodeFile* _tmp80_;
3739 ValaCCodeDeclaration* _tmp81_;
3740 _tmp61_ = ((ValaCCodeBaseModule*) self)->cfile;
3741 _tmp62_ = ((ValaCCodeBaseModule*) self)->prop_enum;
3742 vala_ccode_file_add_type_declaration (_tmp61_, (ValaCCodeNode*) _tmp62_);
3743 _tmp63_ = vala_ccode_declaration_new ("GParamSpec*");
3744 prop_array_decl = _tmp63_;
3745 _tmp64_ = prop_array_decl;
3746 _tmp65_ = prop_array_decl;
3747 _tmp66_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp65_);
3748 _tmp67_ = _tmp66_;
3749 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp65_, _tmp67_ | VALA_CCODE_MODIFIERS_STATIC);
3750 _tmp68_ = prop_array_decl;
3751 _tmp69_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
3752 _tmp70_ = _tmp69_;
3753 _tmp71_ = g_strdup_printf ("%s_properties", _tmp70_);
3754 _tmp72_ = _tmp71_;
3755 _tmp73_ = last_prop;
3756 _tmp74_ = vala_ccode_identifier_new (_tmp73_);
3757 _tmp75_ = _tmp74_;
3758 _tmp76_ = vala_ccode_declarator_suffix_new_with_array ((ValaCCodeExpression*) _tmp75_);
3759 _tmp77_ = _tmp76_;
3760 _tmp78_ = vala_ccode_variable_declarator_new (_tmp72_, NULL, _tmp77_);
3761 _tmp79_ = _tmp78_;
3762 vala_ccode_declaration_add_declarator (_tmp68_, (ValaCCodeDeclarator*) _tmp79_);
3763 _vala_ccode_node_unref0 (_tmp79_);
3764 _vala_ccode_declarator_suffix_unref0 (_tmp77_);
3765 _vala_ccode_node_unref0 (_tmp75_);
3766 _g_free0 (_tmp72_);
3767 _g_free0 (_tmp70_);
3768 _tmp80_ = ((ValaCCodeBaseModule*) self)->cfile;
3769 _tmp81_ = prop_array_decl;
3770 vala_ccode_file_add_type_declaration (_tmp80_, (ValaCCodeNode*) _tmp81_);
3771 _vala_ccode_node_unref0 (prop_array_decl);
3772 }
3773 if (!vala_symbol_is_internal_symbol ((ValaSymbol*) cl)) {
3774 ValaCCodeFile* _tmp82_;
3775 _tmp82_ = ((ValaCCodeBaseModule*) self)->header_file;
3776 vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, cl, _tmp82_);
3777 }
3778 if (!vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
3779 ValaCCodeFile* _tmp83_;
3780 _tmp83_ = ((ValaCCodeBaseModule*) self)->internal_header_file;
3781 vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, cl, _tmp83_);
3782 }
3783 if (is_gtypeinstance) {
3784 vala_gtype_module_begin_base_init_function (self, cl);
3785 vala_gtype_module_begin_class_init_function (self, cl);
3786 vala_gtype_module_begin_instance_init_function (self, cl);
3787 vala_gtype_module_begin_base_finalize_function (self, cl);
3788 vala_gtype_module_begin_class_finalize_function (self, cl);
3789 vala_gtype_module_begin_finalize_function (self, cl);
3790 } else {
3791 gboolean _tmp84_ = FALSE;
3792 gboolean _tmp85_ = FALSE;
3793 gboolean _tmp86_;
3794 gboolean _tmp87_;
3795 _tmp86_ = vala_class_get_is_compact (cl);
3796 _tmp87_ = _tmp86_;
3797 if (_tmp87_) {
3798 _tmp85_ = TRUE;
3799 } else {
3800 ValaClass* _tmp88_;
3801 ValaClass* _tmp89_;
3802 _tmp88_ = vala_class_get_base_class (cl);
3803 _tmp89_ = _tmp88_;
3804 _tmp85_ = _tmp89_ == NULL;
3805 }
3806 if (_tmp85_) {
3807 _tmp84_ = TRUE;
3808 } else {
3809 ValaClass* _tmp90_;
3810 _tmp90_ = ((ValaCCodeBaseModule*) self)->gsource_type;
3811 _tmp84_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp90_);
3812 }
3813 if (_tmp84_) {
3814 vala_gtype_module_begin_instance_init_function (self, cl);
3815 vala_gtype_module_begin_finalize_function (self, cl);
3816 }
3817 }
3818 vala_code_node_accept_children ((ValaCodeNode*) cl, (ValaCodeVisitor*) self);
3819 if (is_gtypeinstance) {
3820 ValaList* _tmp137_;
3821 gint _tmp138_;
3822 gint _tmp139_;
3823 ValaConstructor* _tmp171_;
3824 ValaConstructor* _tmp172_;
3825 ValaDestructor* _tmp173_;
3826 ValaDestructor* _tmp174_;
3827 ValaDestructor* _tmp175_;
3828 ValaDestructor* _tmp176_;
3829 gboolean _tmp192_ = FALSE;
3830 gboolean _tmp193_;
3831 gboolean _tmp194_;
3832 ValaComment* _tmp202_;
3833 ValaComment* _tmp203_;
3834 ValaClassRegisterFunction* type_fun = NULL;
3835 ValaClassRegisterFunction* _tmp211_;
3836 ValaClassRegisterFunction* _tmp212_;
3837 ValaCodeContext* _tmp213_;
3838 ValaCodeContext* _tmp214_;
3839 ValaCCodeFile* _tmp215_;
3840 ValaClassRegisterFunction* _tmp216_;
3841 ValaCCodeFragment* _tmp217_;
3842 ValaCCodeFragment* _tmp218_;
3843 ValaCCodeFile* _tmp219_;
3844 ValaClassRegisterFunction* _tmp220_;
3845 ValaCCodeFragment* _tmp221_;
3846 ValaCCodeFragment* _tmp222_;
3847 if (is_fundamental) {
3848 ValaSymbol* _tmp91_;
3849 ValaSymbol* _tmp92_;
3850 gchar* _tmp93_;
3851 gchar* _tmp94_;
3852 const gchar* _tmp95_;
3853 const gchar* _tmp96_;
3854 gchar* _tmp97_;
3855 gchar* _tmp98_;
3856 ValaCCodeStruct* _tmp99_;
3857 ValaCCodeStruct* _tmp100_;
3858 ValaCCodeFile* _tmp101_;
3859 ValaCCodeStruct* _tmp102_;
3860 ValaCCodeFile* _tmp103_;
3861 ValaCCodeStruct* _tmp104_;
3862 const gchar* _tmp105_;
3863 const gchar* _tmp106_;
3864 gchar* _tmp107_;
3865 gchar* _tmp108_;
3866 ValaSymbol* _tmp109_;
3867 ValaSymbol* _tmp110_;
3868 gchar* _tmp111_;
3869 gchar* _tmp112_;
3870 const gchar* _tmp113_;
3871 const gchar* _tmp114_;
3872 gchar* _tmp115_;
3873 gchar* _tmp116_;
3874 ValaCCodeVariableDeclarator* _tmp117_;
3875 ValaCCodeVariableDeclarator* _tmp118_;
3876 ValaCCodeTypeDefinition* _tmp119_;
3877 ValaCCodeTypeDefinition* _tmp120_;
3878 ValaCCodeAssignment* ref_count = NULL;
3879 ValaCCodeIdentifier* _tmp121_;
3880 ValaCCodeIdentifier* _tmp122_;
3881 ValaCCodeMemberAccess* _tmp123_;
3882 ValaCCodeMemberAccess* _tmp124_;
3883 ValaCCodeConstant* _tmp125_;
3884 ValaCCodeConstant* _tmp126_;
3885 ValaCCodeAssignment* _tmp127_;
3886 ValaCCodeAssignment* _tmp128_;
3887 ValaCCodeBaseModuleEmitContext* _tmp129_;
3888 ValaCCodeFunction* _tmp130_;
3889 ValaCCodeFunction* _tmp131_;
3890 ValaCCodeAssignment* _tmp132_;
3891 _tmp91_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cl);
3892 _tmp92_ = _tmp91_;
3893 _tmp93_ = vala_get_ccode_prefix (_tmp92_);
3894 _tmp94_ = _tmp93_;
3895 _tmp95_ = vala_symbol_get_name ((ValaSymbol*) cl);
3896 _tmp96_ = _tmp95_;
3897 _tmp97_ = g_strdup_printf ("_%sParamSpec%s", _tmp94_, _tmp96_);
3898 _tmp98_ = _tmp97_;
3899 _tmp99_ = vala_ccode_struct_new (_tmp98_);
3900 _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
3901 ((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp99_;
3902 _g_free0 (_tmp98_);
3903 _g_free0 (_tmp94_);
3904 _tmp100_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
3905 vala_ccode_struct_add_field (_tmp100_, "GParamSpec", "parent_instance", 0, NULL);
3906 _tmp101_ = ((ValaCCodeBaseModule*) self)->cfile;
3907 _tmp102_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
3908 vala_ccode_file_add_type_definition (_tmp101_, (ValaCCodeNode*) _tmp102_);
3909 _tmp103_ = ((ValaCCodeBaseModule*) self)->cfile;
3910 _tmp104_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
3911 _tmp105_ = vala_ccode_struct_get_name (_tmp104_);
3912 _tmp106_ = _tmp105_;
3913 _tmp107_ = g_strdup_printf ("struct %s", _tmp106_);
3914 _tmp108_ = _tmp107_;
3915 _tmp109_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cl);
3916 _tmp110_ = _tmp109_;
3917 _tmp111_ = vala_get_ccode_prefix (_tmp110_);
3918 _tmp112_ = _tmp111_;
3919 _tmp113_ = vala_symbol_get_name ((ValaSymbol*) cl);
3920 _tmp114_ = _tmp113_;
3921 _tmp115_ = g_strdup_printf ("%sParamSpec%s", _tmp112_, _tmp114_);
3922 _tmp116_ = _tmp115_;
3923 _tmp117_ = vala_ccode_variable_declarator_new (_tmp116_, NULL, NULL);
3924 _tmp118_ = _tmp117_;
3925 _tmp119_ = vala_ccode_type_definition_new (_tmp108_, (ValaCCodeDeclarator*) _tmp118_);
3926 _tmp120_ = _tmp119_;
3927 vala_ccode_file_add_type_declaration (_tmp103_, (ValaCCodeNode*) _tmp120_);
3928 _vala_ccode_node_unref0 (_tmp120_);
3929 _vala_ccode_node_unref0 (_tmp118_);
3930 _g_free0 (_tmp116_);
3931 _g_free0 (_tmp112_);
3932 _g_free0 (_tmp108_);
3933 vala_gtype_module_add_type_value_table_init_function (self, cl);
3934 vala_gtype_module_add_type_value_table_free_function (self, cl);
3935 vala_gtype_module_add_type_value_table_copy_function (self, cl);
3936 vala_gtype_module_add_type_value_table_peek_pointer_function (self, cl);
3937 vala_gtype_module_add_type_value_table_collect_value_function (self, cl);
3938 vala_gtype_module_add_type_value_table_lcopy_value_function (self, cl);
3939 vala_gtype_module_add_g_param_spec_type_function (self, cl);
3940 vala_gtype_module_add_g_value_get_function (self, cl);
3941 vala_gtype_module_add_g_value_set_function (self, cl);
3942 vala_gtype_module_add_g_value_take_function (self, cl);
3943 _tmp121_ = vala_ccode_identifier_new ("self");
3944 _tmp122_ = _tmp121_;
3945 _tmp123_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp122_, "ref_count");
3946 _tmp124_ = _tmp123_;
3947 _tmp125_ = vala_ccode_constant_new ("1");
3948 _tmp126_ = _tmp125_;
3949 _tmp127_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp124_, (ValaCCodeExpression*) _tmp126_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
3950 _tmp128_ = _tmp127_;
3951 _vala_ccode_node_unref0 (_tmp126_);
3952 _vala_ccode_node_unref0 (_tmp124_);
3953 _vala_ccode_node_unref0 (_tmp122_);
3954 ref_count = _tmp128_;
3955 _tmp129_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
3956 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp129_);
3957 _tmp130_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3958 _tmp131_ = _tmp130_;
3959 _tmp132_ = ref_count;
3960 vala_ccode_function_add_expression (_tmp131_, (ValaCCodeExpression*) _tmp132_);
3961 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
3962 _vala_ccode_node_unref0 (ref_count);
3963 }
3964 if (is_gobject) {
3965 ValaCCodeEnum* _tmp133_;
3966 const gchar* _tmp134_;
3967 ValaCCodeEnumValue* _tmp135_;
3968 ValaCCodeEnumValue* _tmp136_;
3969 _tmp133_ = ((ValaCCodeBaseModule*) self)->prop_enum;
3970 _tmp134_ = last_prop;
3971 _tmp135_ = vala_ccode_enum_value_new (_tmp134_, NULL);
3972 _tmp136_ = _tmp135_;
3973 vala_ccode_enum_add_value (_tmp133_, _tmp136_);
3974 _vala_ccode_node_unref0 (_tmp136_);
3975 }
3976 _tmp137_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) cl);
3977 _tmp138_ = vala_collection_get_size ((ValaCollection*) _tmp137_);
3978 _tmp139_ = _tmp138_;
3979 if (_tmp139_ > 0) {
3980 gchar* last_signal = NULL;
3981 gchar* _tmp140_;
3982 gchar* _tmp141_;
3983 gchar* _tmp142_;
3984 gchar* _tmp143_;
3985 ValaCCodeEnum* _tmp144_;
3986 const gchar* _tmp145_;
3987 ValaCCodeEnumValue* _tmp146_;
3988 ValaCCodeEnumValue* _tmp147_;
3989 ValaCCodeFile* _tmp148_;
3990 ValaCCodeEnum* _tmp149_;
3991 ValaCCodeDeclaration* signal_array_decl = NULL;
3992 ValaCCodeDeclaration* _tmp150_;
3993 ValaCCodeDeclaration* _tmp151_;
3994 ValaCCodeDeclaration* _tmp152_;
3995 ValaCCodeModifiers _tmp153_;
3996 ValaCCodeModifiers _tmp154_;
3997 ValaCCodeDeclaration* _tmp155_;
3998 gchar* _tmp156_;
3999 gchar* _tmp157_;
4000 gchar* _tmp158_;
4001 gchar* _tmp159_;
4002 ValaCCodeConstant* _tmp160_;
4003 ValaCCodeConstant* _tmp161_;
4004 const gchar* _tmp162_;
4005 ValaCCodeIdentifier* _tmp163_;
4006 ValaCCodeIdentifier* _tmp164_;
4007 ValaCCodeDeclaratorSuffix* _tmp165_;
4008 ValaCCodeDeclaratorSuffix* _tmp166_;
4009 ValaCCodeVariableDeclarator* _tmp167_;
4010 ValaCCodeVariableDeclarator* _tmp168_;
4011 ValaCCodeFile* _tmp169_;
4012 ValaCCodeDeclaration* _tmp170_;
4013 _tmp140_ = vala_get_ccode_upper_case_name ((ValaSymbol*) cl, NULL);
4014 _tmp141_ = _tmp140_;
4015 _tmp142_ = g_strdup_printf ("%s_NUM_SIGNALS", _tmp141_);
4016 _tmp143_ = _tmp142_;
4017 _g_free0 (_tmp141_);
4018 last_signal = _tmp143_;
4019 _tmp144_ = ((ValaCCodeBaseModule*) self)->signal_enum;
4020 _tmp145_ = last_signal;
4021 _tmp146_ = vala_ccode_enum_value_new (_tmp145_, NULL);
4022 _tmp147_ = _tmp146_;
4023 vala_ccode_enum_add_value (_tmp144_, _tmp147_);
4024 _vala_ccode_node_unref0 (_tmp147_);
4025 _tmp148_ = ((ValaCCodeBaseModule*) self)->cfile;
4026 _tmp149_ = ((ValaCCodeBaseModule*) self)->signal_enum;
4027 vala_ccode_file_add_type_declaration (_tmp148_, (ValaCCodeNode*) _tmp149_);
4028 _tmp150_ = vala_ccode_declaration_new ("guint");
4029 signal_array_decl = _tmp150_;
4030 _tmp151_ = signal_array_decl;
4031 _tmp152_ = signal_array_decl;
4032 _tmp153_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp152_);
4033 _tmp154_ = _tmp153_;
4034 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp152_, _tmp154_ | VALA_CCODE_MODIFIERS_STATIC);
4035 _tmp155_ = signal_array_decl;
4036 _tmp156_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
4037 _tmp157_ = _tmp156_;
4038 _tmp158_ = g_strdup_printf ("%s_signals", _tmp157_);
4039 _tmp159_ = _tmp158_;
4040 _tmp160_ = vala_ccode_constant_new ("{0}");
4041 _tmp161_ = _tmp160_;
4042 _tmp162_ = last_signal;
4043 _tmp163_ = vala_ccode_identifier_new (_tmp162_);
4044 _tmp164_ = _tmp163_;
4045 _tmp165_ = vala_ccode_declarator_suffix_new_with_array ((ValaCCodeExpression*) _tmp164_);
4046 _tmp166_ = _tmp165_;
4047 _tmp167_ = vala_ccode_variable_declarator_new (_tmp159_, (ValaCCodeExpression*) _tmp161_, _tmp166_);
4048 _tmp168_ = _tmp167_;
4049 vala_ccode_declaration_add_declarator (_tmp155_, (ValaCCodeDeclarator*) _tmp168_);
4050 _vala_ccode_node_unref0 (_tmp168_);
4051 _vala_ccode_declarator_suffix_unref0 (_tmp166_);
4052 _vala_ccode_node_unref0 (_tmp164_);
4053 _vala_ccode_node_unref0 (_tmp161_);
4054 _g_free0 (_tmp159_);
4055 _g_free0 (_tmp157_);
4056 _tmp169_ = ((ValaCCodeBaseModule*) self)->cfile;
4057 _tmp170_ = signal_array_decl;
4058 vala_ccode_file_add_type_declaration (_tmp169_, (ValaCCodeNode*) _tmp170_);
4059 _vala_ccode_node_unref0 (signal_array_decl);
4060 _g_free0 (last_signal);
4061 }
4062 _tmp171_ = vala_class_get_class_constructor (cl);
4063 _tmp172_ = _tmp171_;
4064 if (_tmp172_ != NULL) {
4065 vala_gtype_module_add_base_init_function (self, cl);
4066 }
4067 vala_gtype_module_add_class_init_function (self, cl);
4068 _tmp173_ = vala_class_get_class_destructor (cl);
4069 _tmp174_ = _tmp173_;
4070 if (_tmp174_ != NULL) {
4071 vala_gtype_module_add_base_finalize_function (self, cl);
4072 }
4073 _tmp175_ = vala_class_get_static_destructor (cl);
4074 _tmp176_ = _tmp175_;
4075 if (_tmp176_ != NULL) {
4076 vala_gtype_module_add_class_finalize_function (self, cl);
4077 }
4078 {
4079 ValaList* _base_type_list = NULL;
4080 ValaList* _tmp177_;
4081 ValaList* _tmp178_;
4082 gint _base_type_size = 0;
4083 ValaList* _tmp179_;
4084 gint _tmp180_;
4085 gint _tmp181_;
4086 gint _base_type_index = 0;
4087 _tmp177_ = vala_class_get_base_types (cl);
4088 _tmp178_ = _vala_iterable_ref0 (_tmp177_);
4089 _base_type_list = _tmp178_;
4090 _tmp179_ = _base_type_list;
4091 _tmp180_ = vala_collection_get_size ((ValaCollection*) _tmp179_);
4092 _tmp181_ = _tmp180_;
4093 _base_type_size = _tmp181_;
4094 _base_type_index = -1;
4095 while (TRUE) {
4096 gint _tmp182_;
4097 gint _tmp183_;
4098 ValaDataType* base_type = NULL;
4099 ValaList* _tmp184_;
4100 gpointer _tmp185_;
4101 ValaDataType* _tmp186_;
4102 ValaTypeSymbol* _tmp187_;
4103 ValaTypeSymbol* _tmp188_;
4104 _base_type_index = _base_type_index + 1;
4105 _tmp182_ = _base_type_index;
4106 _tmp183_ = _base_type_size;
4107 if (!(_tmp182_ < _tmp183_)) {
4108 break;
4109 }
4110 _tmp184_ = _base_type_list;
4111 _tmp185_ = vala_list_get (_tmp184_, _base_type_index);
4112 base_type = (ValaDataType*) _tmp185_;
4113 _tmp186_ = base_type;
4114 _tmp187_ = vala_data_type_get_type_symbol (_tmp186_);
4115 _tmp188_ = _tmp187_;
4116 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp188_, VALA_TYPE_INTERFACE)) {
4117 ValaDataType* _tmp189_;
4118 ValaTypeSymbol* _tmp190_;
4119 ValaTypeSymbol* _tmp191_;
4120 _tmp189_ = base_type;
4121 _tmp190_ = vala_data_type_get_type_symbol (_tmp189_);
4122 _tmp191_ = _tmp190_;
4123 vala_gtype_module_add_interface_init_function (self, cl, G_TYPE_CHECK_INSTANCE_CAST (_tmp191_, VALA_TYPE_INTERFACE, ValaInterface));
4124 }
4125 _vala_code_node_unref0 (base_type);
4126 }
4127 _vala_iterable_unref0 (_base_type_list);
4128 }
4129 vala_gtype_module_add_instance_init_function (self, cl);
4130 _tmp193_ = vala_class_get_is_compact (cl);
4131 _tmp194_ = _tmp193_;
4132 if (!_tmp194_) {
4133 gboolean _tmp195_ = FALSE;
4134 gboolean _tmp196_ = FALSE;
4135 ValaList* _tmp197_;
4136 gint _tmp198_;
4137 gint _tmp199_;
4138 _tmp197_ = vala_object_type_symbol_get_fields ((ValaObjectTypeSymbol*) cl);
4139 _tmp198_ = vala_collection_get_size ((ValaCollection*) _tmp197_);
4140 _tmp199_ = _tmp198_;
4141 if (_tmp199_ > 0) {
4142 _tmp196_ = TRUE;
4143 } else {
4144 ValaDestructor* _tmp200_;
4145 ValaDestructor* _tmp201_;
4146 _tmp200_ = vala_class_get_destructor (cl);
4147 _tmp201_ = _tmp200_;
4148 _tmp196_ = _tmp201_ != NULL;
4149 }
4150 if (_tmp196_) {
4151 _tmp195_ = TRUE;
4152 } else {
4153 _tmp195_ = vala_class_is_fundamental (cl);
4154 }
4155 _tmp192_ = _tmp195_;
4156 } else {
4157 _tmp192_ = FALSE;
4158 }
4159 if (_tmp192_) {
4160 vala_gtype_module_add_finalize_function (self, cl);
4161 }
4162 _tmp202_ = vala_symbol_get_comment ((ValaSymbol*) cl);
4163 _tmp203_ = _tmp202_;
4164 if (_tmp203_ != NULL) {
4165 ValaCCodeFile* _tmp204_;
4166 ValaComment* _tmp205_;
4167 ValaComment* _tmp206_;
4168 const gchar* _tmp207_;
4169 const gchar* _tmp208_;
4170 ValaCCodeComment* _tmp209_;
4171 ValaCCodeComment* _tmp210_;
4172 _tmp204_ = ((ValaCCodeBaseModule*) self)->cfile;
4173 _tmp205_ = vala_symbol_get_comment ((ValaSymbol*) cl);
4174 _tmp206_ = _tmp205_;
4175 _tmp207_ = vala_comment_get_content (_tmp206_);
4176 _tmp208_ = _tmp207_;
4177 _tmp209_ = vala_ccode_comment_new (_tmp208_);
4178 _tmp210_ = _tmp209_;
4179 vala_ccode_file_add_type_member_definition (_tmp204_, (ValaCCodeNode*) _tmp210_);
4180 _vala_ccode_node_unref0 (_tmp210_);
4181 }
4182 _tmp211_ = vala_class_register_function_new (cl);
4183 type_fun = _tmp211_;
4184 _tmp212_ = type_fun;
4185 _tmp213_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
4186 _tmp214_ = _tmp213_;
4187 vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp212_, _tmp214_, ((ValaCCodeBaseModule*) self)->in_plugin, FALSE);
4188 _tmp215_ = ((ValaCCodeBaseModule*) self)->cfile;
4189 _tmp216_ = type_fun;
4190 _tmp217_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) _tmp216_);
4191 _tmp218_ = _tmp217_;
4192 vala_ccode_file_add_type_member_declaration (_tmp215_, (ValaCCodeNode*) _tmp218_);
4193 _vala_ccode_node_unref0 (_tmp218_);
4194 _tmp219_ = ((ValaCCodeBaseModule*) self)->cfile;
4195 _tmp220_ = type_fun;
4196 _tmp221_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp220_);
4197 _tmp222_ = _tmp221_;
4198 vala_ccode_file_add_type_member_definition (_tmp219_, (ValaCCodeNode*) _tmp222_);
4199 _vala_ccode_node_unref0 (_tmp222_);
4200 if (is_fundamental) {
4201 ValaCCodeMemberAccess* ref_count = NULL;
4202 ValaCCodeIdentifier* _tmp223_;
4203 ValaCCodeIdentifier* _tmp224_;
4204 ValaCCodeMemberAccess* _tmp225_;
4205 ValaCCodeMemberAccess* _tmp226_;
4206 ValaCCodeFunction* ref_fun = NULL;
4207 gchar* _tmp227_;
4208 gchar* _tmp228_;
4209 ValaCCodeFunction* _tmp229_;
4210 ValaCCodeFunction* _tmp230_;
4211 ValaCCodeFunction* _tmp231_;
4212 ValaCCodeParameter* _tmp232_;
4213 ValaCCodeParameter* _tmp233_;
4214 ValaCCodeFunction* _tmp241_;
4215 ValaCCodeFunction* _tmp242_;
4216 ValaCCodeFunction* _tmp243_;
4217 gchar* _tmp244_;
4218 gchar* _tmp245_;
4219 gchar* _tmp246_;
4220 gchar* _tmp247_;
4221 ValaCCodeIdentifier* _tmp248_;
4222 ValaCCodeIdentifier* _tmp249_;
4223 ValaCCodeVariableDeclarator* _tmp250_;
4224 ValaCCodeVariableDeclarator* _tmp251_;
4225 ValaCCodeFunctionCall* ccall = NULL;
4226 ValaCCodeIdentifier* _tmp252_;
4227 ValaCCodeIdentifier* _tmp253_;
4228 ValaCCodeFunctionCall* _tmp254_;
4229 ValaCCodeFunctionCall* _tmp255_;
4230 ValaCCodeFunctionCall* _tmp256_;
4231 ValaCCodeMemberAccess* _tmp257_;
4232 ValaCCodeUnaryExpression* _tmp258_;
4233 ValaCCodeUnaryExpression* _tmp259_;
4234 ValaCCodeFunction* _tmp260_;
4235 ValaCCodeFunction* _tmp261_;
4236 ValaCCodeFunctionCall* _tmp262_;
4237 ValaCCodeFunction* _tmp263_;
4238 ValaCCodeFunction* _tmp264_;
4239 ValaCCodeIdentifier* _tmp265_;
4240 ValaCCodeIdentifier* _tmp266_;
4241 ValaCCodeFile* _tmp267_;
4242 ValaCCodeFunction* _tmp268_;
4243 ValaCCodeFunction* unref_fun = NULL;
4244 gchar* _tmp269_;
4245 gchar* _tmp270_;
4246 ValaCCodeFunction* _tmp271_;
4247 ValaCCodeFunction* _tmp272_;
4248 ValaCCodeFunction* _tmp273_;
4249 ValaCCodeParameter* _tmp274_;
4250 ValaCCodeParameter* _tmp275_;
4251 ValaCCodeFunction* _tmp283_;
4252 ValaCCodeFunction* _tmp284_;
4253 ValaCCodeFunction* _tmp285_;
4254 gchar* _tmp286_;
4255 gchar* _tmp287_;
4256 gchar* _tmp288_;
4257 gchar* _tmp289_;
4258 ValaCCodeIdentifier* _tmp290_;
4259 ValaCCodeIdentifier* _tmp291_;
4260 ValaCCodeVariableDeclarator* _tmp292_;
4261 ValaCCodeVariableDeclarator* _tmp293_;
4262 ValaCCodeIdentifier* _tmp294_;
4263 ValaCCodeIdentifier* _tmp295_;
4264 ValaCCodeFunctionCall* _tmp296_;
4265 ValaCCodeFunctionCall* _tmp297_;
4266 ValaCCodeMemberAccess* _tmp298_;
4267 ValaCCodeUnaryExpression* _tmp299_;
4268 ValaCCodeUnaryExpression* _tmp300_;
4269 ValaCCodeFunction* _tmp301_;
4270 ValaCCodeFunction* _tmp302_;
4271 ValaCCodeFunctionCall* _tmp303_;
4272 ValaCCodeFunctionCall* get_class = NULL;
4273 gchar* _tmp304_;
4274 gchar* _tmp305_;
4275 ValaCCodeIdentifier* _tmp306_;
4276 ValaCCodeIdentifier* _tmp307_;
4277 ValaCCodeFunctionCall* _tmp308_;
4278 ValaCCodeFunctionCall* _tmp309_;
4279 ValaCCodeFunctionCall* _tmp310_;
4280 ValaCCodeIdentifier* _tmp311_;
4281 ValaCCodeIdentifier* _tmp312_;
4282 ValaCCodeFunctionCall* ccast = NULL;
4283 gchar* _tmp313_;
4284 gchar* _tmp314_;
4285 ValaCCodeIdentifier* _tmp315_;
4286 ValaCCodeIdentifier* _tmp316_;
4287 ValaCCodeFunctionCall* _tmp317_;
4288 ValaCCodeFunctionCall* _tmp318_;
4289 ValaCCodeFunctionCall* _tmp319_;
4290 ValaCCodeIdentifier* _tmp320_;
4291 ValaCCodeIdentifier* _tmp321_;
4292 ValaCCodeFunctionCall* _tmp322_;
4293 ValaCCodeMemberAccess* _tmp323_;
4294 ValaCCodeMemberAccess* _tmp324_;
4295 ValaCCodeFunctionCall* _tmp325_;
4296 ValaCCodeFunctionCall* _tmp326_;
4297 ValaCCodeIdentifier* _tmp327_;
4298 ValaCCodeIdentifier* _tmp328_;
4299 ValaCCodeFunction* _tmp329_;
4300 ValaCCodeFunction* _tmp330_;
4301 ValaCCodeFunctionCall* _tmp331_;
4302 ValaCCodeFunctionCall* free = NULL;
4303 ValaCCodeIdentifier* _tmp332_;
4304 ValaCCodeIdentifier* _tmp333_;
4305 ValaCCodeFunctionCall* _tmp334_;
4306 ValaCCodeFunctionCall* _tmp335_;
4307 ValaCCodeFunctionCall* _tmp336_;
4308 ValaCCodeIdentifier* _tmp337_;
4309 ValaCCodeIdentifier* _tmp338_;
4310 ValaCCodeCastExpression* _tmp339_;
4311 ValaCCodeCastExpression* _tmp340_;
4312 ValaCCodeFunction* _tmp341_;
4313 ValaCCodeFunction* _tmp342_;
4314 ValaCCodeFunctionCall* _tmp343_;
4315 ValaCCodeFunction* _tmp344_;
4316 ValaCCodeFunction* _tmp345_;
4317 ValaCCodeFile* _tmp346_;
4318 ValaCCodeFunction* _tmp347_;
4319 _tmp223_ = vala_ccode_identifier_new ("self");
4320 _tmp224_ = _tmp223_;
4321 _tmp225_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp224_, "ref_count");
4322 _tmp226_ = _tmp225_;
4323 _vala_ccode_node_unref0 (_tmp224_);
4324 ref_count = _tmp226_;
4325 _tmp227_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
4326 _tmp228_ = _tmp227_;
4327 _tmp229_ = vala_ccode_function_new (_tmp228_, "gpointer");
4328 _tmp230_ = _tmp229_;
4329 _g_free0 (_tmp228_);
4330 ref_fun = _tmp230_;
4331 _tmp231_ = ref_fun;
4332 _tmp232_ = vala_ccode_parameter_new ("instance", "gpointer");
4333 _tmp233_ = _tmp232_;
4334 vala_ccode_function_add_parameter (_tmp231_, _tmp233_);
4335 _vala_ccode_node_unref0 (_tmp233_);
4336 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
4337 ValaCCodeFunction* _tmp234_;
4338 _tmp234_ = ref_fun;
4339 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp234_, VALA_CCODE_MODIFIERS_STATIC);
4340 } else {
4341 gboolean _tmp235_ = FALSE;
4342 ValaCodeContext* _tmp236_;
4343 ValaCodeContext* _tmp237_;
4344 gboolean _tmp238_;
4345 gboolean _tmp239_;
4346 _tmp236_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
4347 _tmp237_ = _tmp236_;
4348 _tmp238_ = vala_code_context_get_hide_internal (_tmp237_);
4349 _tmp239_ = _tmp238_;
4350 if (_tmp239_) {
4351 _tmp235_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
4352 } else {
4353 _tmp235_ = FALSE;
4354 }
4355 if (_tmp235_) {
4356 ValaCCodeFunction* _tmp240_;
4357 _tmp240_ = ref_fun;
4358 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp240_, VALA_CCODE_MODIFIERS_INTERNAL);
4359 }
4360 }
4361 _tmp241_ = ref_fun;
4362 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp241_);
4363 _tmp242_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4364 _tmp243_ = _tmp242_;
4365 _tmp244_ = vala_get_ccode_name ((ValaCodeNode*) cl);
4366 _tmp245_ = _tmp244_;
4367 _tmp246_ = g_strdup_printf ("%s *", _tmp245_);
4368 _tmp247_ = _tmp246_;
4369 _tmp248_ = vala_ccode_identifier_new ("instance");
4370 _tmp249_ = _tmp248_;
4371 _tmp250_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp249_, NULL);
4372 _tmp251_ = _tmp250_;
4373 vala_ccode_function_add_declaration (_tmp243_, _tmp247_, (ValaCCodeDeclarator*) _tmp251_, 0);
4374 _vala_ccode_node_unref0 (_tmp251_);
4375 _vala_ccode_node_unref0 (_tmp249_);
4376 _g_free0 (_tmp247_);
4377 _g_free0 (_tmp245_);
4378 _tmp252_ = vala_ccode_identifier_new ("g_atomic_int_inc");
4379 _tmp253_ = _tmp252_;
4380 _tmp254_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp253_);
4381 _tmp255_ = _tmp254_;
4382 _vala_ccode_node_unref0 (_tmp253_);
4383 ccall = _tmp255_;
4384 _tmp256_ = ccall;
4385 _tmp257_ = ref_count;
4386 _tmp258_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp257_);
4387 _tmp259_ = _tmp258_;
4388 vala_ccode_function_call_add_argument (_tmp256_, (ValaCCodeExpression*) _tmp259_);
4389 _vala_ccode_node_unref0 (_tmp259_);
4390 _tmp260_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4391 _tmp261_ = _tmp260_;
4392 _tmp262_ = ccall;
4393 vala_ccode_function_add_expression (_tmp261_, (ValaCCodeExpression*) _tmp262_);
4394 _tmp263_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4395 _tmp264_ = _tmp263_;
4396 _tmp265_ = vala_ccode_identifier_new ("instance");
4397 _tmp266_ = _tmp265_;
4398 vala_ccode_function_add_return (_tmp264_, (ValaCCodeExpression*) _tmp266_);
4399 _vala_ccode_node_unref0 (_tmp266_);
4400 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4401 _tmp267_ = ((ValaCCodeBaseModule*) self)->cfile;
4402 _tmp268_ = ref_fun;
4403 vala_ccode_file_add_function (_tmp267_, _tmp268_);
4404 _tmp269_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) cl);
4405 _tmp270_ = _tmp269_;
4406 _tmp271_ = vala_ccode_function_new (_tmp270_, "void");
4407 _tmp272_ = _tmp271_;
4408 _g_free0 (_tmp270_);
4409 unref_fun = _tmp272_;
4410 _tmp273_ = unref_fun;
4411 _tmp274_ = vala_ccode_parameter_new ("instance", "gpointer");
4412 _tmp275_ = _tmp274_;
4413 vala_ccode_function_add_parameter (_tmp273_, _tmp275_);
4414 _vala_ccode_node_unref0 (_tmp275_);
4415 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
4416 ValaCCodeFunction* _tmp276_;
4417 _tmp276_ = unref_fun;
4418 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp276_, VALA_CCODE_MODIFIERS_STATIC);
4419 } else {
4420 gboolean _tmp277_ = FALSE;
4421 ValaCodeContext* _tmp278_;
4422 ValaCodeContext* _tmp279_;
4423 gboolean _tmp280_;
4424 gboolean _tmp281_;
4425 _tmp278_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
4426 _tmp279_ = _tmp278_;
4427 _tmp280_ = vala_code_context_get_hide_internal (_tmp279_);
4428 _tmp281_ = _tmp280_;
4429 if (_tmp281_) {
4430 _tmp277_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
4431 } else {
4432 _tmp277_ = FALSE;
4433 }
4434 if (_tmp277_) {
4435 ValaCCodeFunction* _tmp282_;
4436 _tmp282_ = unref_fun;
4437 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp282_, VALA_CCODE_MODIFIERS_INTERNAL);
4438 }
4439 }
4440 _tmp283_ = unref_fun;
4441 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp283_);
4442 _tmp284_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4443 _tmp285_ = _tmp284_;
4444 _tmp286_ = vala_get_ccode_name ((ValaCodeNode*) cl);
4445 _tmp287_ = _tmp286_;
4446 _tmp288_ = g_strdup_printf ("%s *", _tmp287_);
4447 _tmp289_ = _tmp288_;
4448 _tmp290_ = vala_ccode_identifier_new ("instance");
4449 _tmp291_ = _tmp290_;
4450 _tmp292_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp291_, NULL);
4451 _tmp293_ = _tmp292_;
4452 vala_ccode_function_add_declaration (_tmp285_, _tmp289_, (ValaCCodeDeclarator*) _tmp293_, 0);
4453 _vala_ccode_node_unref0 (_tmp293_);
4454 _vala_ccode_node_unref0 (_tmp291_);
4455 _g_free0 (_tmp289_);
4456 _g_free0 (_tmp287_);
4457 _tmp294_ = vala_ccode_identifier_new ("g_atomic_int_dec_and_test");
4458 _tmp295_ = _tmp294_;
4459 _tmp296_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp295_);
4460 _vala_ccode_node_unref0 (ccall);
4461 ccall = _tmp296_;
4462 _vala_ccode_node_unref0 (_tmp295_);
4463 _tmp297_ = ccall;
4464 _tmp298_ = ref_count;
4465 _tmp299_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp298_);
4466 _tmp300_ = _tmp299_;
4467 vala_ccode_function_call_add_argument (_tmp297_, (ValaCCodeExpression*) _tmp300_);
4468 _vala_ccode_node_unref0 (_tmp300_);
4469 _tmp301_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4470 _tmp302_ = _tmp301_;
4471 _tmp303_ = ccall;
4472 vala_ccode_function_open_if (_tmp302_, (ValaCCodeExpression*) _tmp303_);
4473 _tmp304_ = vala_get_ccode_type_get_function ((ValaObjectTypeSymbol*) cl);
4474 _tmp305_ = _tmp304_;
4475 _tmp306_ = vala_ccode_identifier_new (_tmp305_);
4476 _tmp307_ = _tmp306_;
4477 _tmp308_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp307_);
4478 _tmp309_ = _tmp308_;
4479 _vala_ccode_node_unref0 (_tmp307_);
4480 _g_free0 (_tmp305_);
4481 get_class = _tmp309_;
4482 _tmp310_ = get_class;
4483 _tmp311_ = vala_ccode_identifier_new ("self");
4484 _tmp312_ = _tmp311_;
4485 vala_ccode_function_call_add_argument (_tmp310_, (ValaCCodeExpression*) _tmp312_);
4486 _vala_ccode_node_unref0 (_tmp312_);
4487 _tmp313_ = vala_get_ccode_type_get_function ((ValaObjectTypeSymbol*) cl);
4488 _tmp314_ = _tmp313_;
4489 _tmp315_ = vala_ccode_identifier_new (_tmp314_);
4490 _tmp316_ = _tmp315_;
4491 _tmp317_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp316_);
4492 _tmp318_ = _tmp317_;
4493 _vala_ccode_node_unref0 (_tmp316_);
4494 _g_free0 (_tmp314_);
4495 ccast = _tmp318_;
4496 _tmp319_ = ccast;
4497 _tmp320_ = vala_ccode_identifier_new ("self");
4498 _tmp321_ = _tmp320_;
4499 vala_ccode_function_call_add_argument (_tmp319_, (ValaCCodeExpression*) _tmp321_);
4500 _vala_ccode_node_unref0 (_tmp321_);
4501 _tmp322_ = ccast;
4502 _tmp323_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp322_, "finalize");
4503 _tmp324_ = _tmp323_;
4504 _tmp325_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp324_);
4505 _vala_ccode_node_unref0 (ccall);
4506 ccall = _tmp325_;
4507 _vala_ccode_node_unref0 (_tmp324_);
4508 _tmp326_ = ccall;
4509 _tmp327_ = vala_ccode_identifier_new ("self");
4510 _tmp328_ = _tmp327_;
4511 vala_ccode_function_call_add_argument (_tmp326_, (ValaCCodeExpression*) _tmp328_);
4512 _vala_ccode_node_unref0 (_tmp328_);
4513 _tmp329_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4514 _tmp330_ = _tmp329_;
4515 _tmp331_ = ccall;
4516 vala_ccode_function_add_expression (_tmp330_, (ValaCCodeExpression*) _tmp331_);
4517 _tmp332_ = vala_ccode_identifier_new ("g_type_free_instance");
4518 _tmp333_ = _tmp332_;
4519 _tmp334_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp333_);
4520 _tmp335_ = _tmp334_;
4521 _vala_ccode_node_unref0 (_tmp333_);
4522 free = _tmp335_;
4523 _tmp336_ = free;
4524 _tmp337_ = vala_ccode_identifier_new ("self");
4525 _tmp338_ = _tmp337_;
4526 _tmp339_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp338_, "GTypeInstance *");
4527 _tmp340_ = _tmp339_;
4528 vala_ccode_function_call_add_argument (_tmp336_, (ValaCCodeExpression*) _tmp340_);
4529 _vala_ccode_node_unref0 (_tmp340_);
4530 _vala_ccode_node_unref0 (_tmp338_);
4531 _tmp341_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4532 _tmp342_ = _tmp341_;
4533 _tmp343_ = free;
4534 vala_ccode_function_add_expression (_tmp342_, (ValaCCodeExpression*) _tmp343_);
4535 _tmp344_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4536 _tmp345_ = _tmp344_;
4537 vala_ccode_function_close (_tmp345_);
4538 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4539 _tmp346_ = ((ValaCCodeBaseModule*) self)->cfile;
4540 _tmp347_ = unref_fun;
4541 vala_ccode_file_add_function (_tmp346_, _tmp347_);
4542 _vala_ccode_node_unref0 (free);
4543 _vala_ccode_node_unref0 (ccast);
4544 _vala_ccode_node_unref0 (get_class);
4545 _vala_ccode_node_unref0 (unref_fun);
4546 _vala_ccode_node_unref0 (ccall);
4547 _vala_ccode_node_unref0 (ref_fun);
4548 _vala_ccode_node_unref0 (ref_count);
4549 }
4550 _vala_typeregister_function_unref0 (type_fun);
4551 } else {
4552 gboolean _tmp348_ = FALSE;
4553 gboolean _tmp349_ = FALSE;
4554 gboolean _tmp350_;
4555 gboolean _tmp351_;
4556 _tmp350_ = vala_class_get_is_compact (cl);
4557 _tmp351_ = _tmp350_;
4558 if (_tmp351_) {
4559 _tmp349_ = TRUE;
4560 } else {
4561 ValaClass* _tmp352_;
4562 ValaClass* _tmp353_;
4563 _tmp352_ = vala_class_get_base_class (cl);
4564 _tmp353_ = _tmp352_;
4565 _tmp349_ = _tmp353_ == NULL;
4566 }
4567 if (_tmp349_) {
4568 _tmp348_ = TRUE;
4569 } else {
4570 ValaClass* _tmp354_;
4571 _tmp354_ = ((ValaCCodeBaseModule*) self)->gsource_type;
4572 _tmp348_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp354_);
4573 }
4574 if (_tmp348_) {
4575 vala_gtype_module_add_instance_init_function (self, cl);
4576 vala_gtype_module_add_finalize_function (self, cl);
4577 }
4578 }
4579 _tmp355_ = old_param_spec_struct;
4580 _tmp356_ = _vala_ccode_node_ref0 (_tmp355_);
4581 _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
4582 ((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp356_;
4583 _tmp357_ = old_prop_enum;
4584 _tmp358_ = _vala_ccode_node_ref0 (_tmp357_);
4585 _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->prop_enum);
4586 ((ValaCCodeBaseModule*) self)->prop_enum = _tmp358_;
4587 _tmp359_ = old_signal_enum;
4588 _tmp360_ = _vala_ccode_node_ref0 (_tmp359_);
4589 _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
4590 ((ValaCCodeBaseModule*) self)->signal_enum = _tmp360_;
4591 _tmp361_ = old_class_init_context;
4592 _tmp362_ = _vala_ccode_base_module_emit_context_ref0 (_tmp361_);
4593 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_init_context);
4594 ((ValaCCodeBaseModule*) self)->class_init_context = _tmp362_;
4595 _tmp363_ = old_base_init_context;
4596 _tmp364_ = _vala_ccode_base_module_emit_context_ref0 (_tmp363_);
4597 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_init_context);
4598 ((ValaCCodeBaseModule*) self)->base_init_context = _tmp364_;
4599 _tmp365_ = old_class_finalize_context;
4600 _tmp366_ = _vala_ccode_base_module_emit_context_ref0 (_tmp365_);
4601 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
4602 ((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp366_;
4603 _tmp367_ = old_base_finalize_context;
4604 _tmp368_ = _vala_ccode_base_module_emit_context_ref0 (_tmp367_);
4605 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
4606 ((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp368_;
4607 _tmp369_ = old_instance_init_context;
4608 _tmp370_ = _vala_ccode_base_module_emit_context_ref0 (_tmp369_);
4609 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
4610 ((ValaCCodeBaseModule*) self)->instance_init_context = _tmp370_;
4611 _tmp371_ = old_instance_finalize_context;
4612 _tmp372_ = _vala_ccode_base_module_emit_context_ref0 (_tmp371_);
4613 _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
4614 ((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp372_;
4615 vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
4616 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
4617 _g_free0 (last_prop);
4618 _vala_ccode_base_module_emit_context_unref0 (old_instance_finalize_context);
4619 _vala_ccode_base_module_emit_context_unref0 (old_instance_init_context);
4620 _vala_ccode_base_module_emit_context_unref0 (old_base_finalize_context);
4621 _vala_ccode_base_module_emit_context_unref0 (old_class_finalize_context);
4622 _vala_ccode_base_module_emit_context_unref0 (old_base_init_context);
4623 _vala_ccode_base_module_emit_context_unref0 (old_class_init_context);
4624 _vala_ccode_node_unref0 (old_signal_enum);
4625 _vala_ccode_node_unref0 (old_prop_enum);
4626 _vala_ccode_node_unref0 (old_param_spec_struct);
4627 }
4628
4629 static void
vala_gtype_module_add_type_value_table_init_function(ValaGTypeModule * self,ValaClass * cl)4630 vala_gtype_module_add_type_value_table_init_function (ValaGTypeModule* self,
4631 ValaClass* cl)
4632 {
4633 ValaCCodeFunction* function = NULL;
4634 gchar* _tmp0_;
4635 gchar* _tmp1_;
4636 gchar* _tmp2_;
4637 gchar* _tmp3_;
4638 ValaCCodeFunction* _tmp4_;
4639 ValaCCodeFunction* _tmp5_;
4640 ValaCCodeParameter* _tmp6_;
4641 ValaCCodeParameter* _tmp7_;
4642 ValaCCodeFunction* _tmp8_;
4643 ValaCCodeFunction* _tmp9_;
4644 ValaCCodeIdentifier* _tmp10_;
4645 ValaCCodeIdentifier* _tmp11_;
4646 ValaCCodeMemberAccess* _tmp12_;
4647 ValaCCodeMemberAccess* _tmp13_;
4648 ValaCCodeMemberAccess* _tmp14_;
4649 ValaCCodeMemberAccess* _tmp15_;
4650 ValaCCodeConstant* _tmp16_;
4651 ValaCCodeConstant* _tmp17_;
4652 ValaCCodeFile* _tmp18_;
4653 g_return_if_fail (self != NULL);
4654 g_return_if_fail (cl != NULL);
4655 _tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
4656 _tmp1_ = _tmp0_;
4657 _tmp2_ = g_strdup_printf ("%s_init", _tmp1_);
4658 _tmp3_ = _tmp2_;
4659 _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
4660 _tmp5_ = _tmp4_;
4661 _g_free0 (_tmp3_);
4662 _g_free0 (_tmp1_);
4663 function = _tmp5_;
4664 _tmp6_ = vala_ccode_parameter_new ("value", "GValue*");
4665 _tmp7_ = _tmp6_;
4666 vala_ccode_function_add_parameter (function, _tmp7_);
4667 _vala_ccode_node_unref0 (_tmp7_);
4668 vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
4669 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
4670 _tmp8_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4671 _tmp9_ = _tmp8_;
4672 _tmp10_ = vala_ccode_identifier_new ("value");
4673 _tmp11_ = _tmp10_;
4674 _tmp12_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp11_, "data[0]");
4675 _tmp13_ = _tmp12_;
4676 _tmp14_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp13_, "v_pointer", FALSE);
4677 _tmp15_ = _tmp14_;
4678 _tmp16_ = vala_ccode_constant_new ("NULL");
4679 _tmp17_ = _tmp16_;
4680 vala_ccode_function_add_assignment (_tmp9_, (ValaCCodeExpression*) _tmp15_, (ValaCCodeExpression*) _tmp17_);
4681 _vala_ccode_node_unref0 (_tmp17_);
4682 _vala_ccode_node_unref0 (_tmp15_);
4683 _vala_ccode_node_unref0 (_tmp13_);
4684 _vala_ccode_node_unref0 (_tmp11_);
4685 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4686 _tmp18_ = ((ValaCCodeBaseModule*) self)->cfile;
4687 vala_ccode_file_add_function (_tmp18_, function);
4688 _vala_ccode_node_unref0 (function);
4689 }
4690
4691 static void
vala_gtype_module_add_type_value_table_free_function(ValaGTypeModule * self,ValaClass * cl)4692 vala_gtype_module_add_type_value_table_free_function (ValaGTypeModule* self,
4693 ValaClass* cl)
4694 {
4695 ValaCCodeFunction* function = NULL;
4696 gchar* _tmp0_;
4697 gchar* _tmp1_;
4698 gchar* _tmp2_;
4699 gchar* _tmp3_;
4700 ValaCCodeFunction* _tmp4_;
4701 ValaCCodeFunction* _tmp5_;
4702 ValaCCodeParameter* _tmp6_;
4703 ValaCCodeParameter* _tmp7_;
4704 ValaCCodeMemberAccess* vpointer = NULL;
4705 ValaCCodeIdentifier* _tmp8_;
4706 ValaCCodeIdentifier* _tmp9_;
4707 ValaCCodeMemberAccess* _tmp10_;
4708 ValaCCodeMemberAccess* _tmp11_;
4709 ValaCCodeMemberAccess* _tmp12_;
4710 ValaCCodeMemberAccess* _tmp13_;
4711 ValaCCodeFunctionCall* ccall = NULL;
4712 gchar* _tmp14_;
4713 gchar* _tmp15_;
4714 ValaCCodeIdentifier* _tmp16_;
4715 ValaCCodeIdentifier* _tmp17_;
4716 ValaCCodeFunctionCall* _tmp18_;
4717 ValaCCodeFunctionCall* _tmp19_;
4718 ValaCCodeFunction* _tmp20_;
4719 ValaCCodeFunction* _tmp21_;
4720 ValaCCodeFunction* _tmp22_;
4721 ValaCCodeFunction* _tmp23_;
4722 ValaCCodeFunction* _tmp24_;
4723 ValaCCodeFunction* _tmp25_;
4724 ValaCCodeFile* _tmp26_;
4725 g_return_if_fail (self != NULL);
4726 g_return_if_fail (cl != NULL);
4727 _tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
4728 _tmp1_ = _tmp0_;
4729 _tmp2_ = g_strdup_printf ("%s_free_value", _tmp1_);
4730 _tmp3_ = _tmp2_;
4731 _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
4732 _tmp5_ = _tmp4_;
4733 _g_free0 (_tmp3_);
4734 _g_free0 (_tmp1_);
4735 function = _tmp5_;
4736 _tmp6_ = vala_ccode_parameter_new ("value", "GValue*");
4737 _tmp7_ = _tmp6_;
4738 vala_ccode_function_add_parameter (function, _tmp7_);
4739 _vala_ccode_node_unref0 (_tmp7_);
4740 vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
4741 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
4742 _tmp8_ = vala_ccode_identifier_new ("value");
4743 _tmp9_ = _tmp8_;
4744 _tmp10_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp9_, "data[0]");
4745 _tmp11_ = _tmp10_;
4746 _tmp12_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp11_, "v_pointer", FALSE);
4747 _tmp13_ = _tmp12_;
4748 _vala_ccode_node_unref0 (_tmp11_);
4749 _vala_ccode_node_unref0 (_tmp9_);
4750 vpointer = _tmp13_;
4751 _tmp14_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) cl);
4752 _tmp15_ = _tmp14_;
4753 _tmp16_ = vala_ccode_identifier_new (_tmp15_);
4754 _tmp17_ = _tmp16_;
4755 _tmp18_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp17_);
4756 _tmp19_ = _tmp18_;
4757 _vala_ccode_node_unref0 (_tmp17_);
4758 _g_free0 (_tmp15_);
4759 ccall = _tmp19_;
4760 vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) vpointer);
4761 _tmp20_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4762 _tmp21_ = _tmp20_;
4763 vala_ccode_function_open_if (_tmp21_, (ValaCCodeExpression*) vpointer);
4764 _tmp22_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4765 _tmp23_ = _tmp22_;
4766 vala_ccode_function_add_expression (_tmp23_, (ValaCCodeExpression*) ccall);
4767 _tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4768 _tmp25_ = _tmp24_;
4769 vala_ccode_function_close (_tmp25_);
4770 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4771 _tmp26_ = ((ValaCCodeBaseModule*) self)->cfile;
4772 vala_ccode_file_add_function (_tmp26_, function);
4773 _vala_ccode_node_unref0 (ccall);
4774 _vala_ccode_node_unref0 (vpointer);
4775 _vala_ccode_node_unref0 (function);
4776 }
4777
4778 static void
vala_gtype_module_add_type_value_table_copy_function(ValaGTypeModule * self,ValaClass * cl)4779 vala_gtype_module_add_type_value_table_copy_function (ValaGTypeModule* self,
4780 ValaClass* cl)
4781 {
4782 ValaCCodeFunction* function = NULL;
4783 gchar* _tmp0_;
4784 gchar* _tmp1_;
4785 gchar* _tmp2_;
4786 gchar* _tmp3_;
4787 ValaCCodeFunction* _tmp4_;
4788 ValaCCodeFunction* _tmp5_;
4789 ValaCCodeParameter* _tmp6_;
4790 ValaCCodeParameter* _tmp7_;
4791 ValaCCodeParameter* _tmp8_;
4792 ValaCCodeParameter* _tmp9_;
4793 ValaCCodeMemberAccess* dest_vpointer = NULL;
4794 ValaCCodeIdentifier* _tmp10_;
4795 ValaCCodeIdentifier* _tmp11_;
4796 ValaCCodeMemberAccess* _tmp12_;
4797 ValaCCodeMemberAccess* _tmp13_;
4798 ValaCCodeMemberAccess* _tmp14_;
4799 ValaCCodeMemberAccess* _tmp15_;
4800 ValaCCodeMemberAccess* src_vpointer = NULL;
4801 ValaCCodeIdentifier* _tmp16_;
4802 ValaCCodeIdentifier* _tmp17_;
4803 ValaCCodeMemberAccess* _tmp18_;
4804 ValaCCodeMemberAccess* _tmp19_;
4805 ValaCCodeMemberAccess* _tmp20_;
4806 ValaCCodeMemberAccess* _tmp21_;
4807 ValaCCodeFunctionCall* ref_ccall = NULL;
4808 gchar* _tmp22_;
4809 gchar* _tmp23_;
4810 ValaCCodeIdentifier* _tmp24_;
4811 ValaCCodeIdentifier* _tmp25_;
4812 ValaCCodeFunctionCall* _tmp26_;
4813 ValaCCodeFunctionCall* _tmp27_;
4814 ValaCCodeFunction* _tmp28_;
4815 ValaCCodeFunction* _tmp29_;
4816 ValaCCodeFunction* _tmp30_;
4817 ValaCCodeFunction* _tmp31_;
4818 ValaCCodeFunction* _tmp32_;
4819 ValaCCodeFunction* _tmp33_;
4820 ValaCCodeFunction* _tmp34_;
4821 ValaCCodeFunction* _tmp35_;
4822 ValaCCodeConstant* _tmp36_;
4823 ValaCCodeConstant* _tmp37_;
4824 ValaCCodeFunction* _tmp38_;
4825 ValaCCodeFunction* _tmp39_;
4826 ValaCCodeFile* _tmp40_;
4827 g_return_if_fail (self != NULL);
4828 g_return_if_fail (cl != NULL);
4829 _tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
4830 _tmp1_ = _tmp0_;
4831 _tmp2_ = g_strdup_printf ("%s_copy_value", _tmp1_);
4832 _tmp3_ = _tmp2_;
4833 _tmp4_ = vala_ccode_function_new (_tmp3_, "void");
4834 _tmp5_ = _tmp4_;
4835 _g_free0 (_tmp3_);
4836 _g_free0 (_tmp1_);
4837 function = _tmp5_;
4838 _tmp6_ = vala_ccode_parameter_new ("src_value", "const GValue*");
4839 _tmp7_ = _tmp6_;
4840 vala_ccode_function_add_parameter (function, _tmp7_);
4841 _vala_ccode_node_unref0 (_tmp7_);
4842 _tmp8_ = vala_ccode_parameter_new ("dest_value", "GValue*");
4843 _tmp9_ = _tmp8_;
4844 vala_ccode_function_add_parameter (function, _tmp9_);
4845 _vala_ccode_node_unref0 (_tmp9_);
4846 vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
4847 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
4848 _tmp10_ = vala_ccode_identifier_new ("dest_value");
4849 _tmp11_ = _tmp10_;
4850 _tmp12_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp11_, "data[0]");
4851 _tmp13_ = _tmp12_;
4852 _tmp14_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp13_, "v_pointer", FALSE);
4853 _tmp15_ = _tmp14_;
4854 _vala_ccode_node_unref0 (_tmp13_);
4855 _vala_ccode_node_unref0 (_tmp11_);
4856 dest_vpointer = _tmp15_;
4857 _tmp16_ = vala_ccode_identifier_new ("src_value");
4858 _tmp17_ = _tmp16_;
4859 _tmp18_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp17_, "data[0]");
4860 _tmp19_ = _tmp18_;
4861 _tmp20_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp19_, "v_pointer", FALSE);
4862 _tmp21_ = _tmp20_;
4863 _vala_ccode_node_unref0 (_tmp19_);
4864 _vala_ccode_node_unref0 (_tmp17_);
4865 src_vpointer = _tmp21_;
4866 _tmp22_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
4867 _tmp23_ = _tmp22_;
4868 _tmp24_ = vala_ccode_identifier_new (_tmp23_);
4869 _tmp25_ = _tmp24_;
4870 _tmp26_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp25_);
4871 _tmp27_ = _tmp26_;
4872 _vala_ccode_node_unref0 (_tmp25_);
4873 _g_free0 (_tmp23_);
4874 ref_ccall = _tmp27_;
4875 vala_ccode_function_call_add_argument (ref_ccall, (ValaCCodeExpression*) src_vpointer);
4876 _tmp28_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4877 _tmp29_ = _tmp28_;
4878 vala_ccode_function_open_if (_tmp29_, (ValaCCodeExpression*) src_vpointer);
4879 _tmp30_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4880 _tmp31_ = _tmp30_;
4881 vala_ccode_function_add_assignment (_tmp31_, (ValaCCodeExpression*) dest_vpointer, (ValaCCodeExpression*) ref_ccall);
4882 _tmp32_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4883 _tmp33_ = _tmp32_;
4884 vala_ccode_function_add_else (_tmp33_);
4885 _tmp34_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4886 _tmp35_ = _tmp34_;
4887 _tmp36_ = vala_ccode_constant_new ("NULL");
4888 _tmp37_ = _tmp36_;
4889 vala_ccode_function_add_assignment (_tmp35_, (ValaCCodeExpression*) dest_vpointer, (ValaCCodeExpression*) _tmp37_);
4890 _vala_ccode_node_unref0 (_tmp37_);
4891 _tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4892 _tmp39_ = _tmp38_;
4893 vala_ccode_function_close (_tmp39_);
4894 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4895 _tmp40_ = ((ValaCCodeBaseModule*) self)->cfile;
4896 vala_ccode_file_add_function (_tmp40_, function);
4897 _vala_ccode_node_unref0 (ref_ccall);
4898 _vala_ccode_node_unref0 (src_vpointer);
4899 _vala_ccode_node_unref0 (dest_vpointer);
4900 _vala_ccode_node_unref0 (function);
4901 }
4902
4903 static void
vala_gtype_module_add_type_value_table_peek_pointer_function(ValaGTypeModule * self,ValaClass * cl)4904 vala_gtype_module_add_type_value_table_peek_pointer_function (ValaGTypeModule* self,
4905 ValaClass* cl)
4906 {
4907 ValaCCodeFunction* function = NULL;
4908 gchar* _tmp0_;
4909 gchar* _tmp1_;
4910 gchar* _tmp2_;
4911 gchar* _tmp3_;
4912 ValaCCodeFunction* _tmp4_;
4913 ValaCCodeFunction* _tmp5_;
4914 ValaCCodeParameter* _tmp6_;
4915 ValaCCodeParameter* _tmp7_;
4916 ValaCCodeMemberAccess* vpointer = NULL;
4917 ValaCCodeIdentifier* _tmp8_;
4918 ValaCCodeIdentifier* _tmp9_;
4919 ValaCCodeMemberAccess* _tmp10_;
4920 ValaCCodeMemberAccess* _tmp11_;
4921 ValaCCodeMemberAccess* _tmp12_;
4922 ValaCCodeMemberAccess* _tmp13_;
4923 ValaCCodeFunction* _tmp14_;
4924 ValaCCodeFunction* _tmp15_;
4925 ValaCCodeFile* _tmp16_;
4926 g_return_if_fail (self != NULL);
4927 g_return_if_fail (cl != NULL);
4928 _tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
4929 _tmp1_ = _tmp0_;
4930 _tmp2_ = g_strdup_printf ("%s_peek_pointer", _tmp1_);
4931 _tmp3_ = _tmp2_;
4932 _tmp4_ = vala_ccode_function_new (_tmp3_, "gpointer");
4933 _tmp5_ = _tmp4_;
4934 _g_free0 (_tmp3_);
4935 _g_free0 (_tmp1_);
4936 function = _tmp5_;
4937 _tmp6_ = vala_ccode_parameter_new ("value", "const GValue*");
4938 _tmp7_ = _tmp6_;
4939 vala_ccode_function_add_parameter (function, _tmp7_);
4940 _vala_ccode_node_unref0 (_tmp7_);
4941 vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
4942 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
4943 _tmp8_ = vala_ccode_identifier_new ("value");
4944 _tmp9_ = _tmp8_;
4945 _tmp10_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp9_, "data[0]");
4946 _tmp11_ = _tmp10_;
4947 _tmp12_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp11_, "v_pointer", FALSE);
4948 _tmp13_ = _tmp12_;
4949 _vala_ccode_node_unref0 (_tmp11_);
4950 _vala_ccode_node_unref0 (_tmp9_);
4951 vpointer = _tmp13_;
4952 _tmp14_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4953 _tmp15_ = _tmp14_;
4954 vala_ccode_function_add_return (_tmp15_, (ValaCCodeExpression*) vpointer);
4955 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
4956 _tmp16_ = ((ValaCCodeBaseModule*) self)->cfile;
4957 vala_ccode_file_add_function (_tmp16_, function);
4958 _vala_ccode_node_unref0 (vpointer);
4959 _vala_ccode_node_unref0 (function);
4960 }
4961
4962 static void
vala_gtype_module_add_type_value_table_lcopy_value_function(ValaGTypeModule * self,ValaClass * cl)4963 vala_gtype_module_add_type_value_table_lcopy_value_function (ValaGTypeModule* self,
4964 ValaClass* cl)
4965 {
4966 ValaCCodeFile* _tmp0_;
4967 ValaCCodeFunction* function = NULL;
4968 gchar* _tmp1_;
4969 gchar* _tmp2_;
4970 gchar* _tmp3_;
4971 gchar* _tmp4_;
4972 ValaCCodeFunction* _tmp5_;
4973 ValaCCodeFunction* _tmp6_;
4974 ValaCCodeParameter* _tmp7_;
4975 ValaCCodeParameter* _tmp8_;
4976 ValaCCodeParameter* _tmp9_;
4977 ValaCCodeParameter* _tmp10_;
4978 ValaCCodeParameter* _tmp11_;
4979 ValaCCodeParameter* _tmp12_;
4980 ValaCCodeParameter* _tmp13_;
4981 ValaCCodeParameter* _tmp14_;
4982 ValaCCodeMemberAccess* vpointer = NULL;
4983 ValaCCodeIdentifier* _tmp15_;
4984 ValaCCodeIdentifier* _tmp16_;
4985 ValaCCodeMemberAccess* _tmp17_;
4986 ValaCCodeMemberAccess* _tmp18_;
4987 ValaCCodeMemberAccess* _tmp19_;
4988 ValaCCodeMemberAccess* _tmp20_;
4989 ValaCCodeIdentifier* object_p_ptr = NULL;
4990 ValaCCodeIdentifier* _tmp21_;
4991 ValaCCodeConstant* null_ = NULL;
4992 ValaCCodeConstant* _tmp22_;
4993 ValaCCodeFunction* _tmp23_;
4994 ValaCCodeFunction* _tmp24_;
4995 gchar* _tmp25_;
4996 gchar* _tmp26_;
4997 gchar* _tmp27_;
4998 gchar* _tmp28_;
4999 ValaCCodeIdentifier* _tmp29_;
5000 ValaCCodeIdentifier* _tmp30_;
5001 ValaCCodeMemberAccess* _tmp31_;
5002 ValaCCodeMemberAccess* _tmp32_;
5003 ValaCCodeVariableDeclarator* _tmp33_;
5004 ValaCCodeVariableDeclarator* _tmp34_;
5005 ValaCCodeFunctionCall* value_type_name_fct = NULL;
5006 ValaCCodeIdentifier* _tmp35_;
5007 ValaCCodeIdentifier* _tmp36_;
5008 ValaCCodeFunctionCall* _tmp37_;
5009 ValaCCodeFunctionCall* _tmp38_;
5010 ValaCCodeConstant* _tmp39_;
5011 ValaCCodeConstant* _tmp40_;
5012 ValaCCodeUnaryExpression* assert_condition = NULL;
5013 ValaCCodeIdentifier* _tmp41_;
5014 ValaCCodeIdentifier* _tmp42_;
5015 ValaCCodeUnaryExpression* _tmp43_;
5016 ValaCCodeUnaryExpression* _tmp44_;
5017 ValaCCodeFunction* _tmp45_;
5018 ValaCCodeFunction* _tmp46_;
5019 ValaCCodeFunctionCall* assert_printf = NULL;
5020 ValaCCodeIdentifier* _tmp47_;
5021 ValaCCodeIdentifier* _tmp48_;
5022 ValaCCodeFunctionCall* _tmp49_;
5023 ValaCCodeFunctionCall* _tmp50_;
5024 ValaCCodeConstant* _tmp51_;
5025 ValaCCodeConstant* _tmp52_;
5026 ValaCCodeFunction* _tmp53_;
5027 ValaCCodeFunction* _tmp54_;
5028 ValaCCodeFunction* _tmp55_;
5029 ValaCCodeFunction* _tmp56_;
5030 ValaCCodeUnaryExpression* main_condition = NULL;
5031 ValaCCodeUnaryExpression* _tmp57_;
5032 ValaCCodeBinaryExpression* main_else_if_condition = NULL;
5033 ValaCCodeIdentifier* _tmp58_;
5034 ValaCCodeIdentifier* _tmp59_;
5035 ValaCCodeIdentifier* _tmp60_;
5036 ValaCCodeIdentifier* _tmp61_;
5037 ValaCCodeBinaryExpression* _tmp62_;
5038 ValaCCodeBinaryExpression* _tmp63_;
5039 ValaCCodeFunctionCall* ref_fct = NULL;
5040 gchar* _tmp64_;
5041 gchar* _tmp65_;
5042 ValaCCodeIdentifier* _tmp66_;
5043 ValaCCodeIdentifier* _tmp67_;
5044 ValaCCodeFunctionCall* _tmp68_;
5045 ValaCCodeFunctionCall* _tmp69_;
5046 ValaCCodeFunction* _tmp70_;
5047 ValaCCodeFunction* _tmp71_;
5048 ValaCCodeFunction* _tmp72_;
5049 ValaCCodeFunction* _tmp73_;
5050 ValaCCodeFunction* _tmp74_;
5051 ValaCCodeFunction* _tmp75_;
5052 ValaCCodeFunction* _tmp76_;
5053 ValaCCodeFunction* _tmp77_;
5054 ValaCCodeFunction* _tmp78_;
5055 ValaCCodeFunction* _tmp79_;
5056 ValaCCodeFunction* _tmp80_;
5057 ValaCCodeFunction* _tmp81_;
5058 ValaCCodeFunction* _tmp82_;
5059 ValaCCodeFunction* _tmp83_;
5060 ValaCCodeFunction* _tmp84_;
5061 ValaCCodeFunction* _tmp85_;
5062 ValaCCodeFile* _tmp86_;
5063 g_return_if_fail (self != NULL);
5064 g_return_if_fail (cl != NULL);
5065 _tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
5066 vala_ccode_file_add_include (_tmp0_, "gobject/gvaluecollector.h", FALSE);
5067 _tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
5068 _tmp2_ = _tmp1_;
5069 _tmp3_ = g_strdup_printf ("%s_lcopy_value", _tmp2_);
5070 _tmp4_ = _tmp3_;
5071 _tmp5_ = vala_ccode_function_new (_tmp4_, "gchar*");
5072 _tmp6_ = _tmp5_;
5073 _g_free0 (_tmp4_);
5074 _g_free0 (_tmp2_);
5075 function = _tmp6_;
5076 _tmp7_ = vala_ccode_parameter_new ("value", "const GValue*");
5077 _tmp8_ = _tmp7_;
5078 vala_ccode_function_add_parameter (function, _tmp8_);
5079 _vala_ccode_node_unref0 (_tmp8_);
5080 _tmp9_ = vala_ccode_parameter_new ("n_collect_values", "guint");
5081 _tmp10_ = _tmp9_;
5082 vala_ccode_function_add_parameter (function, _tmp10_);
5083 _vala_ccode_node_unref0 (_tmp10_);
5084 _tmp11_ = vala_ccode_parameter_new ("collect_values", "GTypeCValue*");
5085 _tmp12_ = _tmp11_;
5086 vala_ccode_function_add_parameter (function, _tmp12_);
5087 _vala_ccode_node_unref0 (_tmp12_);
5088 _tmp13_ = vala_ccode_parameter_new ("collect_flags", "guint");
5089 _tmp14_ = _tmp13_;
5090 vala_ccode_function_add_parameter (function, _tmp14_);
5091 _vala_ccode_node_unref0 (_tmp14_);
5092 vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
5093 _tmp15_ = vala_ccode_identifier_new ("value");
5094 _tmp16_ = _tmp15_;
5095 _tmp17_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp16_, "data[0]");
5096 _tmp18_ = _tmp17_;
5097 _tmp19_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp18_, "v_pointer", FALSE);
5098 _tmp20_ = _tmp19_;
5099 _vala_ccode_node_unref0 (_tmp18_);
5100 _vala_ccode_node_unref0 (_tmp16_);
5101 vpointer = _tmp20_;
5102 _tmp21_ = vala_ccode_identifier_new ("*object_p");
5103 object_p_ptr = _tmp21_;
5104 _tmp22_ = vala_ccode_constant_new ("NULL");
5105 null_ = _tmp22_;
5106 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
5107 _tmp23_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5108 _tmp24_ = _tmp23_;
5109 _tmp25_ = vala_get_ccode_name ((ValaCodeNode*) cl);
5110 _tmp26_ = _tmp25_;
5111 _tmp27_ = g_strdup_printf ("%s **", _tmp26_);
5112 _tmp28_ = _tmp27_;
5113 _tmp29_ = vala_ccode_identifier_new ("collect_values[0]");
5114 _tmp30_ = _tmp29_;
5115 _tmp31_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp30_, "v_pointer", FALSE);
5116 _tmp32_ = _tmp31_;
5117 _tmp33_ = vala_ccode_variable_declarator_new ("object_p", (ValaCCodeExpression*) _tmp32_, NULL);
5118 _tmp34_ = _tmp33_;
5119 vala_ccode_function_add_declaration (_tmp24_, _tmp28_, (ValaCCodeDeclarator*) _tmp34_, 0);
5120 _vala_ccode_node_unref0 (_tmp34_);
5121 _vala_ccode_node_unref0 (_tmp32_);
5122 _vala_ccode_node_unref0 (_tmp30_);
5123 _g_free0 (_tmp28_);
5124 _g_free0 (_tmp26_);
5125 _tmp35_ = vala_ccode_identifier_new ("G_VALUE_TYPE_NAME");
5126 _tmp36_ = _tmp35_;
5127 _tmp37_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp36_);
5128 _tmp38_ = _tmp37_;
5129 _vala_ccode_node_unref0 (_tmp36_);
5130 value_type_name_fct = _tmp38_;
5131 _tmp39_ = vala_ccode_constant_new ("value");
5132 _tmp40_ = _tmp39_;
5133 vala_ccode_function_call_add_argument (value_type_name_fct, (ValaCCodeExpression*) _tmp40_);
5134 _vala_ccode_node_unref0 (_tmp40_);
5135 _tmp41_ = vala_ccode_identifier_new ("object_p");
5136 _tmp42_ = _tmp41_;
5137 _tmp43_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp42_);
5138 _tmp44_ = _tmp43_;
5139 _vala_ccode_node_unref0 (_tmp42_);
5140 assert_condition = _tmp44_;
5141 _tmp45_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5142 _tmp46_ = _tmp45_;
5143 vala_ccode_function_open_if (_tmp46_, (ValaCCodeExpression*) assert_condition);
5144 _tmp47_ = vala_ccode_identifier_new ("g_strdup_printf");
5145 _tmp48_ = _tmp47_;
5146 _tmp49_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp48_);
5147 _tmp50_ = _tmp49_;
5148 _vala_ccode_node_unref0 (_tmp48_);
5149 assert_printf = _tmp50_;
5150 _tmp51_ = vala_ccode_constant_new ("\"value location for `%s' passed as NULL\"");
5151 _tmp52_ = _tmp51_;
5152 vala_ccode_function_call_add_argument (assert_printf, (ValaCCodeExpression*) _tmp52_);
5153 _vala_ccode_node_unref0 (_tmp52_);
5154 vala_ccode_function_call_add_argument (assert_printf, (ValaCCodeExpression*) value_type_name_fct);
5155 _tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5156 _tmp54_ = _tmp53_;
5157 vala_ccode_function_add_return (_tmp54_, (ValaCCodeExpression*) assert_printf);
5158 _tmp55_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5159 _tmp56_ = _tmp55_;
5160 vala_ccode_function_close (_tmp56_);
5161 _tmp57_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) vpointer);
5162 main_condition = _tmp57_;
5163 _tmp58_ = vala_ccode_identifier_new ("collect_flags");
5164 _tmp59_ = _tmp58_;
5165 _tmp60_ = vala_ccode_identifier_new ("G_VALUE_NOCOPY_CONTENTS");
5166 _tmp61_ = _tmp60_;
5167 _tmp62_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_BITWISE_AND, (ValaCCodeExpression*) _tmp59_, (ValaCCodeExpression*) _tmp61_);
5168 _tmp63_ = _tmp62_;
5169 _vala_ccode_node_unref0 (_tmp61_);
5170 _vala_ccode_node_unref0 (_tmp59_);
5171 main_else_if_condition = _tmp63_;
5172 _tmp64_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
5173 _tmp65_ = _tmp64_;
5174 _tmp66_ = vala_ccode_identifier_new (_tmp65_);
5175 _tmp67_ = _tmp66_;
5176 _tmp68_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp67_);
5177 _tmp69_ = _tmp68_;
5178 _vala_ccode_node_unref0 (_tmp67_);
5179 _g_free0 (_tmp65_);
5180 ref_fct = _tmp69_;
5181 vala_ccode_function_call_add_argument (ref_fct, (ValaCCodeExpression*) vpointer);
5182 _tmp70_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5183 _tmp71_ = _tmp70_;
5184 vala_ccode_function_open_if (_tmp71_, (ValaCCodeExpression*) main_condition);
5185 _tmp72_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5186 _tmp73_ = _tmp72_;
5187 vala_ccode_function_add_assignment (_tmp73_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) null_);
5188 _tmp74_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5189 _tmp75_ = _tmp74_;
5190 vala_ccode_function_else_if (_tmp75_, (ValaCCodeExpression*) main_else_if_condition);
5191 _tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5192 _tmp77_ = _tmp76_;
5193 vala_ccode_function_add_assignment (_tmp77_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) vpointer);
5194 _tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5195 _tmp79_ = _tmp78_;
5196 vala_ccode_function_add_else (_tmp79_);
5197 _tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5198 _tmp81_ = _tmp80_;
5199 vala_ccode_function_add_assignment (_tmp81_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) ref_fct);
5200 _tmp82_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5201 _tmp83_ = _tmp82_;
5202 vala_ccode_function_close (_tmp83_);
5203 _tmp84_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5204 _tmp85_ = _tmp84_;
5205 vala_ccode_function_add_return (_tmp85_, (ValaCCodeExpression*) null_);
5206 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
5207 _tmp86_ = ((ValaCCodeBaseModule*) self)->cfile;
5208 vala_ccode_file_add_function (_tmp86_, function);
5209 _vala_ccode_node_unref0 (ref_fct);
5210 _vala_ccode_node_unref0 (main_else_if_condition);
5211 _vala_ccode_node_unref0 (main_condition);
5212 _vala_ccode_node_unref0 (assert_printf);
5213 _vala_ccode_node_unref0 (assert_condition);
5214 _vala_ccode_node_unref0 (value_type_name_fct);
5215 _vala_ccode_node_unref0 (null_);
5216 _vala_ccode_node_unref0 (object_p_ptr);
5217 _vala_ccode_node_unref0 (vpointer);
5218 _vala_ccode_node_unref0 (function);
5219 }
5220
5221 static void
vala_gtype_module_add_type_value_table_collect_value_function(ValaGTypeModule * self,ValaClass * cl)5222 vala_gtype_module_add_type_value_table_collect_value_function (ValaGTypeModule* self,
5223 ValaClass* cl)
5224 {
5225 ValaCCodeFile* _tmp0_;
5226 ValaCCodeFunction* function = NULL;
5227 gchar* _tmp1_;
5228 gchar* _tmp2_;
5229 gchar* _tmp3_;
5230 gchar* _tmp4_;
5231 ValaCCodeFunction* _tmp5_;
5232 ValaCCodeFunction* _tmp6_;
5233 ValaCCodeParameter* _tmp7_;
5234 ValaCCodeParameter* _tmp8_;
5235 ValaCCodeParameter* _tmp9_;
5236 ValaCCodeParameter* _tmp10_;
5237 ValaCCodeParameter* _tmp11_;
5238 ValaCCodeParameter* _tmp12_;
5239 ValaCCodeParameter* _tmp13_;
5240 ValaCCodeParameter* _tmp14_;
5241 ValaCCodeMemberAccess* vpointer = NULL;
5242 ValaCCodeIdentifier* _tmp15_;
5243 ValaCCodeIdentifier* _tmp16_;
5244 ValaCCodeMemberAccess* _tmp17_;
5245 ValaCCodeMemberAccess* _tmp18_;
5246 ValaCCodeMemberAccess* _tmp19_;
5247 ValaCCodeMemberAccess* _tmp20_;
5248 ValaCCodeMemberAccess* collect_vpointer = NULL;
5249 ValaCCodeIdentifier* _tmp21_;
5250 ValaCCodeIdentifier* _tmp22_;
5251 ValaCCodeMemberAccess* _tmp23_;
5252 ValaCCodeMemberAccess* _tmp24_;
5253 ValaCCodeFunction* _tmp25_;
5254 ValaCCodeFunction* _tmp26_;
5255 ValaCCodeFunction* _tmp27_;
5256 ValaCCodeFunction* _tmp28_;
5257 gchar* _tmp29_;
5258 gchar* _tmp30_;
5259 gchar* _tmp31_;
5260 gchar* _tmp32_;
5261 ValaCCodeVariableDeclarator* _tmp33_;
5262 ValaCCodeVariableDeclarator* _tmp34_;
5263 ValaCCodeIdentifier* obj_identifier = NULL;
5264 ValaCCodeIdentifier* _tmp35_;
5265 ValaCCodeMemberAccess* l_expression = NULL;
5266 ValaCCodeMemberAccess* _tmp36_;
5267 ValaCCodeMemberAccess* _tmp37_;
5268 ValaCCodeMemberAccess* _tmp38_;
5269 ValaCCodeMemberAccess* _tmp39_;
5270 ValaCCodeBinaryExpression* sub_condition = NULL;
5271 ValaCCodeConstant* _tmp40_;
5272 ValaCCodeConstant* _tmp41_;
5273 ValaCCodeBinaryExpression* _tmp42_;
5274 ValaCCodeBinaryExpression* _tmp43_;
5275 ValaCCodeFunctionCall* value_type_name_fct = NULL;
5276 ValaCCodeIdentifier* _tmp44_;
5277 ValaCCodeIdentifier* _tmp45_;
5278 ValaCCodeFunctionCall* _tmp46_;
5279 ValaCCodeFunctionCall* _tmp47_;
5280 ValaCCodeConstant* _tmp48_;
5281 ValaCCodeConstant* _tmp49_;
5282 ValaCCodeFunction* _tmp50_;
5283 ValaCCodeFunction* _tmp51_;
5284 ValaCCodeFunctionCall* true_return = NULL;
5285 ValaCCodeIdentifier* _tmp52_;
5286 ValaCCodeIdentifier* _tmp53_;
5287 ValaCCodeFunctionCall* _tmp54_;
5288 ValaCCodeFunctionCall* _tmp55_;
5289 ValaCCodeConstant* _tmp56_;
5290 ValaCCodeConstant* _tmp57_;
5291 ValaCCodeConstant* _tmp58_;
5292 ValaCCodeConstant* _tmp59_;
5293 ValaCCodeConstant* _tmp60_;
5294 ValaCCodeConstant* _tmp61_;
5295 ValaCCodeFunction* _tmp62_;
5296 ValaCCodeFunction* _tmp63_;
5297 ValaCCodeFunctionCall* reg_call = NULL;
5298 ValaCCodeIdentifier* _tmp64_;
5299 ValaCCodeIdentifier* _tmp65_;
5300 ValaCCodeFunctionCall* _tmp66_;
5301 ValaCCodeFunctionCall* _tmp67_;
5302 ValaCCodeFunctionCall* type_check = NULL;
5303 ValaCCodeIdentifier* _tmp68_;
5304 ValaCCodeIdentifier* _tmp69_;
5305 ValaCCodeFunctionCall* _tmp70_;
5306 ValaCCodeFunctionCall* _tmp71_;
5307 ValaCCodeIdentifier* _tmp72_;
5308 ValaCCodeIdentifier* _tmp73_;
5309 ValaCCodeFunctionCall* stored_type = NULL;
5310 ValaCCodeIdentifier* _tmp74_;
5311 ValaCCodeIdentifier* _tmp75_;
5312 ValaCCodeFunctionCall* _tmp76_;
5313 ValaCCodeFunctionCall* _tmp77_;
5314 ValaCCodeIdentifier* _tmp78_;
5315 ValaCCodeIdentifier* _tmp79_;
5316 ValaCCodeFunction* _tmp80_;
5317 ValaCCodeFunction* _tmp81_;
5318 ValaCCodeUnaryExpression* _tmp82_;
5319 ValaCCodeUnaryExpression* _tmp83_;
5320 ValaCCodeFunctionCall* false_return = NULL;
5321 ValaCCodeIdentifier* _tmp84_;
5322 ValaCCodeIdentifier* _tmp85_;
5323 ValaCCodeFunctionCall* _tmp86_;
5324 ValaCCodeFunctionCall* _tmp87_;
5325 ValaCCodeFunctionCall* type_name_fct = NULL;
5326 ValaCCodeIdentifier* _tmp88_;
5327 ValaCCodeIdentifier* _tmp89_;
5328 ValaCCodeFunctionCall* _tmp90_;
5329 ValaCCodeFunctionCall* _tmp91_;
5330 ValaCCodeConstant* _tmp92_;
5331 ValaCCodeConstant* _tmp93_;
5332 ValaCCodeConstant* _tmp94_;
5333 ValaCCodeConstant* _tmp95_;
5334 ValaCCodeConstant* _tmp96_;
5335 ValaCCodeConstant* _tmp97_;
5336 ValaCCodeConstant* _tmp98_;
5337 ValaCCodeConstant* _tmp99_;
5338 ValaCCodeFunction* _tmp100_;
5339 ValaCCodeFunction* _tmp101_;
5340 ValaCCodeFunction* _tmp102_;
5341 ValaCCodeFunction* _tmp103_;
5342 ValaCCodeFunctionCall* ref_call = NULL;
5343 gchar* _tmp104_;
5344 gchar* _tmp105_;
5345 ValaCCodeIdentifier* _tmp106_;
5346 ValaCCodeIdentifier* _tmp107_;
5347 ValaCCodeFunctionCall* _tmp108_;
5348 ValaCCodeFunctionCall* _tmp109_;
5349 ValaCCodeIdentifier* _tmp110_;
5350 ValaCCodeIdentifier* _tmp111_;
5351 ValaCCodeFunction* _tmp112_;
5352 ValaCCodeFunction* _tmp113_;
5353 ValaCCodeFunction* _tmp114_;
5354 ValaCCodeFunction* _tmp115_;
5355 ValaCCodeFunction* _tmp116_;
5356 ValaCCodeFunction* _tmp117_;
5357 ValaCCodeConstant* _tmp118_;
5358 ValaCCodeConstant* _tmp119_;
5359 ValaCCodeFunction* _tmp120_;
5360 ValaCCodeFunction* _tmp121_;
5361 ValaCCodeFunction* _tmp122_;
5362 ValaCCodeFunction* _tmp123_;
5363 ValaCCodeConstant* _tmp124_;
5364 ValaCCodeConstant* _tmp125_;
5365 ValaCCodeFile* _tmp126_;
5366 g_return_if_fail (self != NULL);
5367 g_return_if_fail (cl != NULL);
5368 _tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
5369 vala_ccode_file_add_include (_tmp0_, "gobject/gvaluecollector.h", FALSE);
5370 _tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, "value_");
5371 _tmp2_ = _tmp1_;
5372 _tmp3_ = g_strdup_printf ("%s_collect_value", _tmp2_);
5373 _tmp4_ = _tmp3_;
5374 _tmp5_ = vala_ccode_function_new (_tmp4_, "gchar*");
5375 _tmp6_ = _tmp5_;
5376 _g_free0 (_tmp4_);
5377 _g_free0 (_tmp2_);
5378 function = _tmp6_;
5379 _tmp7_ = vala_ccode_parameter_new ("value", "GValue*");
5380 _tmp8_ = _tmp7_;
5381 vala_ccode_function_add_parameter (function, _tmp8_);
5382 _vala_ccode_node_unref0 (_tmp8_);
5383 _tmp9_ = vala_ccode_parameter_new ("n_collect_values", "guint");
5384 _tmp10_ = _tmp9_;
5385 vala_ccode_function_add_parameter (function, _tmp10_);
5386 _vala_ccode_node_unref0 (_tmp10_);
5387 _tmp11_ = vala_ccode_parameter_new ("collect_values", "GTypeCValue*");
5388 _tmp12_ = _tmp11_;
5389 vala_ccode_function_add_parameter (function, _tmp12_);
5390 _vala_ccode_node_unref0 (_tmp12_);
5391 _tmp13_ = vala_ccode_parameter_new ("collect_flags", "guint");
5392 _tmp14_ = _tmp13_;
5393 vala_ccode_function_add_parameter (function, _tmp14_);
5394 _vala_ccode_node_unref0 (_tmp14_);
5395 vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
5396 _tmp15_ = vala_ccode_identifier_new ("value");
5397 _tmp16_ = _tmp15_;
5398 _tmp17_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp16_, "data[0]");
5399 _tmp18_ = _tmp17_;
5400 _tmp19_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp18_, "v_pointer", FALSE);
5401 _tmp20_ = _tmp19_;
5402 _vala_ccode_node_unref0 (_tmp18_);
5403 _vala_ccode_node_unref0 (_tmp16_);
5404 vpointer = _tmp20_;
5405 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
5406 _tmp21_ = vala_ccode_identifier_new ("collect_values[0]");
5407 _tmp22_ = _tmp21_;
5408 _tmp23_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp22_, "v_pointer", FALSE);
5409 _tmp24_ = _tmp23_;
5410 _vala_ccode_node_unref0 (_tmp22_);
5411 collect_vpointer = _tmp24_;
5412 _tmp25_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5413 _tmp26_ = _tmp25_;
5414 vala_ccode_function_open_if (_tmp26_, (ValaCCodeExpression*) collect_vpointer);
5415 _tmp27_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5416 _tmp28_ = _tmp27_;
5417 _tmp29_ = vala_get_ccode_name ((ValaCodeNode*) cl);
5418 _tmp30_ = _tmp29_;
5419 _tmp31_ = g_strdup_printf ("%s *", _tmp30_);
5420 _tmp32_ = _tmp31_;
5421 _tmp33_ = vala_ccode_variable_declarator_new ("object", (ValaCCodeExpression*) collect_vpointer, NULL);
5422 _tmp34_ = _tmp33_;
5423 vala_ccode_function_add_declaration (_tmp28_, _tmp32_, (ValaCCodeDeclarator*) _tmp34_, 0);
5424 _vala_ccode_node_unref0 (_tmp34_);
5425 _g_free0 (_tmp32_);
5426 _g_free0 (_tmp30_);
5427 _tmp35_ = vala_ccode_identifier_new ("object");
5428 obj_identifier = _tmp35_;
5429 _tmp36_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) obj_identifier, "parent_instance");
5430 _tmp37_ = _tmp36_;
5431 _tmp38_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp37_, "g_class", FALSE);
5432 _tmp39_ = _tmp38_;
5433 _vala_ccode_node_unref0 (_tmp37_);
5434 l_expression = _tmp39_;
5435 _tmp40_ = vala_ccode_constant_new ("NULL");
5436 _tmp41_ = _tmp40_;
5437 _tmp42_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) l_expression, (ValaCCodeExpression*) _tmp41_);
5438 _tmp43_ = _tmp42_;
5439 _vala_ccode_node_unref0 (_tmp41_);
5440 sub_condition = _tmp43_;
5441 _tmp44_ = vala_ccode_identifier_new ("G_VALUE_TYPE_NAME");
5442 _tmp45_ = _tmp44_;
5443 _tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
5444 _tmp47_ = _tmp46_;
5445 _vala_ccode_node_unref0 (_tmp45_);
5446 value_type_name_fct = _tmp47_;
5447 _tmp48_ = vala_ccode_constant_new ("value");
5448 _tmp49_ = _tmp48_;
5449 vala_ccode_function_call_add_argument (value_type_name_fct, (ValaCCodeExpression*) _tmp49_);
5450 _vala_ccode_node_unref0 (_tmp49_);
5451 _tmp50_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5452 _tmp51_ = _tmp50_;
5453 vala_ccode_function_open_if (_tmp51_, (ValaCCodeExpression*) sub_condition);
5454 _tmp52_ = vala_ccode_identifier_new ("g_strconcat");
5455 _tmp53_ = _tmp52_;
5456 _tmp54_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp53_);
5457 _tmp55_ = _tmp54_;
5458 _vala_ccode_node_unref0 (_tmp53_);
5459 true_return = _tmp55_;
5460 _tmp56_ = vala_ccode_constant_new ("\"invalid unclassed object pointer for value type `\"");
5461 _tmp57_ = _tmp56_;
5462 vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp57_);
5463 _vala_ccode_node_unref0 (_tmp57_);
5464 vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) value_type_name_fct);
5465 _tmp58_ = vala_ccode_constant_new ("\"'\"");
5466 _tmp59_ = _tmp58_;
5467 vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp59_);
5468 _vala_ccode_node_unref0 (_tmp59_);
5469 _tmp60_ = vala_ccode_constant_new ("NULL");
5470 _tmp61_ = _tmp60_;
5471 vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp61_);
5472 _vala_ccode_node_unref0 (_tmp61_);
5473 _tmp62_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5474 _tmp63_ = _tmp62_;
5475 vala_ccode_function_add_return (_tmp63_, (ValaCCodeExpression*) true_return);
5476 _tmp64_ = vala_ccode_identifier_new ("g_value_type_compatible");
5477 _tmp65_ = _tmp64_;
5478 _tmp66_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp65_);
5479 _tmp67_ = _tmp66_;
5480 _vala_ccode_node_unref0 (_tmp65_);
5481 reg_call = _tmp67_;
5482 _tmp68_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
5483 _tmp69_ = _tmp68_;
5484 _tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
5485 _tmp71_ = _tmp70_;
5486 _vala_ccode_node_unref0 (_tmp69_);
5487 type_check = _tmp71_;
5488 _tmp72_ = vala_ccode_identifier_new ("object");
5489 _tmp73_ = _tmp72_;
5490 vala_ccode_function_call_add_argument (type_check, (ValaCCodeExpression*) _tmp73_);
5491 _vala_ccode_node_unref0 (_tmp73_);
5492 vala_ccode_function_call_add_argument (reg_call, (ValaCCodeExpression*) type_check);
5493 _tmp74_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
5494 _tmp75_ = _tmp74_;
5495 _tmp76_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp75_);
5496 _tmp77_ = _tmp76_;
5497 _vala_ccode_node_unref0 (_tmp75_);
5498 stored_type = _tmp77_;
5499 _tmp78_ = vala_ccode_identifier_new ("value");
5500 _tmp79_ = _tmp78_;
5501 vala_ccode_function_call_add_argument (stored_type, (ValaCCodeExpression*) _tmp79_);
5502 _vala_ccode_node_unref0 (_tmp79_);
5503 vala_ccode_function_call_add_argument (reg_call, (ValaCCodeExpression*) stored_type);
5504 _tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5505 _tmp81_ = _tmp80_;
5506 _tmp82_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) reg_call);
5507 _tmp83_ = _tmp82_;
5508 vala_ccode_function_else_if (_tmp81_, (ValaCCodeExpression*) _tmp83_);
5509 _vala_ccode_node_unref0 (_tmp83_);
5510 _tmp84_ = vala_ccode_identifier_new ("g_strconcat");
5511 _tmp85_ = _tmp84_;
5512 _tmp86_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp85_);
5513 _tmp87_ = _tmp86_;
5514 _vala_ccode_node_unref0 (_tmp85_);
5515 false_return = _tmp87_;
5516 _tmp88_ = vala_ccode_identifier_new ("g_type_name");
5517 _tmp89_ = _tmp88_;
5518 _tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
5519 _tmp91_ = _tmp90_;
5520 _vala_ccode_node_unref0 (_tmp89_);
5521 type_name_fct = _tmp91_;
5522 vala_ccode_function_call_add_argument (type_name_fct, (ValaCCodeExpression*) type_check);
5523 _tmp92_ = vala_ccode_constant_new ("\"invalid object type `\"");
5524 _tmp93_ = _tmp92_;
5525 vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp93_);
5526 _vala_ccode_node_unref0 (_tmp93_);
5527 vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) type_name_fct);
5528 _tmp94_ = vala_ccode_constant_new ("\"' for value type `\"");
5529 _tmp95_ = _tmp94_;
5530 vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp95_);
5531 _vala_ccode_node_unref0 (_tmp95_);
5532 vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) value_type_name_fct);
5533 _tmp96_ = vala_ccode_constant_new ("\"'\"");
5534 _tmp97_ = _tmp96_;
5535 vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp97_);
5536 _vala_ccode_node_unref0 (_tmp97_);
5537 _tmp98_ = vala_ccode_constant_new ("NULL");
5538 _tmp99_ = _tmp98_;
5539 vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp99_);
5540 _vala_ccode_node_unref0 (_tmp99_);
5541 _tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5542 _tmp101_ = _tmp100_;
5543 vala_ccode_function_add_return (_tmp101_, (ValaCCodeExpression*) false_return);
5544 _tmp102_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5545 _tmp103_ = _tmp102_;
5546 vala_ccode_function_close (_tmp103_);
5547 _tmp104_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
5548 _tmp105_ = _tmp104_;
5549 _tmp106_ = vala_ccode_identifier_new (_tmp105_);
5550 _tmp107_ = _tmp106_;
5551 _tmp108_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp107_);
5552 _tmp109_ = _tmp108_;
5553 _vala_ccode_node_unref0 (_tmp107_);
5554 _g_free0 (_tmp105_);
5555 ref_call = _tmp109_;
5556 _tmp110_ = vala_ccode_identifier_new ("object");
5557 _tmp111_ = _tmp110_;
5558 vala_ccode_function_call_add_argument (ref_call, (ValaCCodeExpression*) _tmp111_);
5559 _vala_ccode_node_unref0 (_tmp111_);
5560 _tmp112_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5561 _tmp113_ = _tmp112_;
5562 vala_ccode_function_add_assignment (_tmp113_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) ref_call);
5563 _tmp114_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5564 _tmp115_ = _tmp114_;
5565 vala_ccode_function_add_else (_tmp115_);
5566 _tmp116_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5567 _tmp117_ = _tmp116_;
5568 _tmp118_ = vala_ccode_constant_new ("NULL");
5569 _tmp119_ = _tmp118_;
5570 vala_ccode_function_add_assignment (_tmp117_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp119_);
5571 _vala_ccode_node_unref0 (_tmp119_);
5572 _tmp120_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5573 _tmp121_ = _tmp120_;
5574 vala_ccode_function_close (_tmp121_);
5575 _tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5576 _tmp123_ = _tmp122_;
5577 _tmp124_ = vala_ccode_constant_new ("NULL");
5578 _tmp125_ = _tmp124_;
5579 vala_ccode_function_add_return (_tmp123_, (ValaCCodeExpression*) _tmp125_);
5580 _vala_ccode_node_unref0 (_tmp125_);
5581 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
5582 _tmp126_ = ((ValaCCodeBaseModule*) self)->cfile;
5583 vala_ccode_file_add_function (_tmp126_, function);
5584 _vala_ccode_node_unref0 (ref_call);
5585 _vala_ccode_node_unref0 (type_name_fct);
5586 _vala_ccode_node_unref0 (false_return);
5587 _vala_ccode_node_unref0 (stored_type);
5588 _vala_ccode_node_unref0 (type_check);
5589 _vala_ccode_node_unref0 (reg_call);
5590 _vala_ccode_node_unref0 (true_return);
5591 _vala_ccode_node_unref0 (value_type_name_fct);
5592 _vala_ccode_node_unref0 (sub_condition);
5593 _vala_ccode_node_unref0 (l_expression);
5594 _vala_ccode_node_unref0 (obj_identifier);
5595 _vala_ccode_node_unref0 (collect_vpointer);
5596 _vala_ccode_node_unref0 (vpointer);
5597 _vala_ccode_node_unref0 (function);
5598 }
5599
5600 static void
vala_gtype_module_add_g_param_spec_type_function(ValaGTypeModule * self,ValaClass * cl)5601 vala_gtype_module_add_g_param_spec_type_function (ValaGTypeModule* self,
5602 ValaClass* cl)
5603 {
5604 ValaCCodeFunction* function = NULL;
5605 gchar* _tmp0_;
5606 gchar* _tmp1_;
5607 ValaCCodeFunction* _tmp2_;
5608 ValaCCodeFunction* _tmp3_;
5609 ValaCCodeFunction* _tmp4_;
5610 ValaCCodeParameter* _tmp5_;
5611 ValaCCodeParameter* _tmp6_;
5612 ValaCCodeFunction* _tmp7_;
5613 ValaCCodeParameter* _tmp8_;
5614 ValaCCodeParameter* _tmp9_;
5615 ValaCCodeFunction* _tmp10_;
5616 ValaCCodeParameter* _tmp11_;
5617 ValaCCodeParameter* _tmp12_;
5618 ValaCCodeFunction* _tmp13_;
5619 ValaCCodeParameter* _tmp14_;
5620 ValaCCodeParameter* _tmp15_;
5621 ValaCCodeFunction* _tmp16_;
5622 ValaCCodeParameter* _tmp17_;
5623 ValaCCodeParameter* _tmp18_;
5624 ValaCCodeFunction* _tmp26_;
5625 ValaCCodeFunction* _tmp27_;
5626 ValaCCodeFunction* _tmp28_;
5627 ValaSymbol* _tmp29_;
5628 ValaSymbol* _tmp30_;
5629 gchar* _tmp31_;
5630 gchar* _tmp32_;
5631 const gchar* _tmp33_;
5632 const gchar* _tmp34_;
5633 gchar* _tmp35_;
5634 gchar* _tmp36_;
5635 ValaCCodeVariableDeclarator* _tmp37_;
5636 ValaCCodeVariableDeclarator* _tmp38_;
5637 ValaCCodeFunctionCall* subccall = NULL;
5638 ValaCCodeIdentifier* _tmp39_;
5639 ValaCCodeIdentifier* _tmp40_;
5640 ValaCCodeFunctionCall* _tmp41_;
5641 ValaCCodeFunctionCall* _tmp42_;
5642 ValaCCodeIdentifier* _tmp43_;
5643 ValaCCodeIdentifier* _tmp44_;
5644 gchar* _tmp45_;
5645 gchar* _tmp46_;
5646 ValaCCodeIdentifier* _tmp47_;
5647 ValaCCodeIdentifier* _tmp48_;
5648 ValaCCodeFunctionCall* ccall = NULL;
5649 ValaCCodeIdentifier* _tmp49_;
5650 ValaCCodeIdentifier* _tmp50_;
5651 ValaCCodeFunctionCall* _tmp51_;
5652 ValaCCodeFunctionCall* _tmp52_;
5653 ValaCCodeFunctionCall* _tmp53_;
5654 ValaCCodeFunctionCall* _tmp54_;
5655 ValaCCodeConstant* _tmp55_;
5656 ValaCCodeConstant* _tmp56_;
5657 ValaCCodeFunction* _tmp57_;
5658 ValaCCodeFunction* _tmp58_;
5659 ValaCCodeFunctionCall* _tmp59_;
5660 ValaCCodeIdentifier* _tmp60_;
5661 ValaCCodeIdentifier* _tmp61_;
5662 ValaCCodeFunctionCall* _tmp62_;
5663 ValaCCodeFunctionCall* _tmp63_;
5664 ValaCCodeIdentifier* _tmp64_;
5665 ValaCCodeIdentifier* _tmp65_;
5666 ValaCCodeFunctionCall* _tmp66_;
5667 ValaCCodeIdentifier* _tmp67_;
5668 ValaCCodeIdentifier* _tmp68_;
5669 ValaCCodeFunctionCall* _tmp69_;
5670 ValaCCodeIdentifier* _tmp70_;
5671 ValaCCodeIdentifier* _tmp71_;
5672 ValaCCodeFunctionCall* _tmp72_;
5673 ValaCCodeIdentifier* _tmp73_;
5674 ValaCCodeIdentifier* _tmp74_;
5675 ValaCCodeFunctionCall* _tmp75_;
5676 ValaCCodeIdentifier* _tmp76_;
5677 ValaCCodeIdentifier* _tmp77_;
5678 ValaCCodeFunction* _tmp78_;
5679 ValaCCodeFunction* _tmp79_;
5680 ValaCCodeIdentifier* _tmp80_;
5681 ValaCCodeIdentifier* _tmp81_;
5682 ValaCCodeFunctionCall* _tmp82_;
5683 ValaCCodeIdentifier* _tmp83_;
5684 ValaCCodeIdentifier* _tmp84_;
5685 ValaCCodeFunctionCall* _tmp85_;
5686 ValaCCodeFunctionCall* _tmp86_;
5687 ValaCCodeIdentifier* _tmp87_;
5688 ValaCCodeIdentifier* _tmp88_;
5689 ValaCCodeFunction* _tmp89_;
5690 ValaCCodeFunction* _tmp90_;
5691 ValaCCodeFunctionCall* _tmp91_;
5692 ValaCCodeMemberAccess* _tmp92_;
5693 ValaCCodeMemberAccess* _tmp93_;
5694 ValaCCodeIdentifier* _tmp94_;
5695 ValaCCodeIdentifier* _tmp95_;
5696 ValaCCodeFunction* _tmp96_;
5697 ValaCCodeFunction* _tmp97_;
5698 ValaCCodeFunctionCall* _tmp98_;
5699 ValaCCodeFile* _tmp99_;
5700 ValaCCodeFunction* _tmp100_;
5701 g_return_if_fail (self != NULL);
5702 g_return_if_fail (cl != NULL);
5703 _tmp0_ = vala_get_ccode_param_spec_function ((ValaCodeNode*) cl);
5704 _tmp1_ = _tmp0_;
5705 _tmp2_ = vala_ccode_function_new (_tmp1_, "GParamSpec*");
5706 _tmp3_ = _tmp2_;
5707 _g_free0 (_tmp1_);
5708 function = _tmp3_;
5709 _tmp4_ = function;
5710 _tmp5_ = vala_ccode_parameter_new ("name", "const gchar*");
5711 _tmp6_ = _tmp5_;
5712 vala_ccode_function_add_parameter (_tmp4_, _tmp6_);
5713 _vala_ccode_node_unref0 (_tmp6_);
5714 _tmp7_ = function;
5715 _tmp8_ = vala_ccode_parameter_new ("nick", "const gchar*");
5716 _tmp9_ = _tmp8_;
5717 vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
5718 _vala_ccode_node_unref0 (_tmp9_);
5719 _tmp10_ = function;
5720 _tmp11_ = vala_ccode_parameter_new ("blurb", "const gchar*");
5721 _tmp12_ = _tmp11_;
5722 vala_ccode_function_add_parameter (_tmp10_, _tmp12_);
5723 _vala_ccode_node_unref0 (_tmp12_);
5724 _tmp13_ = function;
5725 _tmp14_ = vala_ccode_parameter_new ("object_type", "GType");
5726 _tmp15_ = _tmp14_;
5727 vala_ccode_function_add_parameter (_tmp13_, _tmp15_);
5728 _vala_ccode_node_unref0 (_tmp15_);
5729 _tmp16_ = function;
5730 _tmp17_ = vala_ccode_parameter_new ("flags", "GParamFlags");
5731 _tmp18_ = _tmp17_;
5732 vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
5733 _vala_ccode_node_unref0 (_tmp18_);
5734 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
5735 ValaCCodeFunction* _tmp19_;
5736 _tmp19_ = function;
5737 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp19_, VALA_CCODE_MODIFIERS_STATIC);
5738 } else {
5739 gboolean _tmp20_ = FALSE;
5740 ValaCodeContext* _tmp21_;
5741 ValaCodeContext* _tmp22_;
5742 gboolean _tmp23_;
5743 gboolean _tmp24_;
5744 _tmp21_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
5745 _tmp22_ = _tmp21_;
5746 _tmp23_ = vala_code_context_get_hide_internal (_tmp22_);
5747 _tmp24_ = _tmp23_;
5748 if (_tmp24_) {
5749 _tmp20_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
5750 } else {
5751 _tmp20_ = FALSE;
5752 }
5753 if (_tmp20_) {
5754 ValaCCodeFunction* _tmp25_;
5755 _tmp25_ = function;
5756 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp25_, VALA_CCODE_MODIFIERS_INTERNAL);
5757 }
5758 }
5759 _tmp26_ = function;
5760 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp26_);
5761 _tmp27_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5762 _tmp28_ = _tmp27_;
5763 _tmp29_ = vala_symbol_get_parent_symbol ((ValaSymbol*) cl);
5764 _tmp30_ = _tmp29_;
5765 _tmp31_ = vala_get_ccode_prefix (_tmp30_);
5766 _tmp32_ = _tmp31_;
5767 _tmp33_ = vala_symbol_get_name ((ValaSymbol*) cl);
5768 _tmp34_ = _tmp33_;
5769 _tmp35_ = g_strdup_printf ("%sParamSpec%s*", _tmp32_, _tmp34_);
5770 _tmp36_ = _tmp35_;
5771 _tmp37_ = vala_ccode_variable_declarator_new ("spec", NULL, NULL);
5772 _tmp38_ = _tmp37_;
5773 vala_ccode_function_add_declaration (_tmp28_, _tmp36_, (ValaCCodeDeclarator*) _tmp38_, 0);
5774 _vala_ccode_node_unref0 (_tmp38_);
5775 _g_free0 (_tmp36_);
5776 _g_free0 (_tmp32_);
5777 _tmp39_ = vala_ccode_identifier_new ("g_type_is_a");
5778 _tmp40_ = _tmp39_;
5779 _tmp41_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp40_);
5780 _tmp42_ = _tmp41_;
5781 _vala_ccode_node_unref0 (_tmp40_);
5782 subccall = _tmp42_;
5783 _tmp43_ = vala_ccode_identifier_new ("object_type");
5784 _tmp44_ = _tmp43_;
5785 vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp44_);
5786 _vala_ccode_node_unref0 (_tmp44_);
5787 _tmp45_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
5788 _tmp46_ = _tmp45_;
5789 _tmp47_ = vala_ccode_identifier_new (_tmp46_);
5790 _tmp48_ = _tmp47_;
5791 vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp48_);
5792 _vala_ccode_node_unref0 (_tmp48_);
5793 _g_free0 (_tmp46_);
5794 _tmp49_ = vala_ccode_identifier_new ("g_return_val_if_fail");
5795 _tmp50_ = _tmp49_;
5796 _tmp51_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp50_);
5797 _tmp52_ = _tmp51_;
5798 _vala_ccode_node_unref0 (_tmp50_);
5799 ccall = _tmp52_;
5800 _tmp53_ = ccall;
5801 vala_ccode_function_call_add_argument (_tmp53_, (ValaCCodeExpression*) subccall);
5802 _tmp54_ = ccall;
5803 _tmp55_ = vala_ccode_constant_new ("NULL");
5804 _tmp56_ = _tmp55_;
5805 vala_ccode_function_call_add_argument (_tmp54_, (ValaCCodeExpression*) _tmp56_);
5806 _vala_ccode_node_unref0 (_tmp56_);
5807 _tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5808 _tmp58_ = _tmp57_;
5809 _tmp59_ = ccall;
5810 vala_ccode_function_add_expression (_tmp58_, (ValaCCodeExpression*) _tmp59_);
5811 _tmp60_ = vala_ccode_identifier_new ("g_param_spec_internal");
5812 _tmp61_ = _tmp60_;
5813 _tmp62_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp61_);
5814 _vala_ccode_node_unref0 (ccall);
5815 ccall = _tmp62_;
5816 _vala_ccode_node_unref0 (_tmp61_);
5817 _tmp63_ = ccall;
5818 _tmp64_ = vala_ccode_identifier_new ("G_TYPE_PARAM_OBJECT");
5819 _tmp65_ = _tmp64_;
5820 vala_ccode_function_call_add_argument (_tmp63_, (ValaCCodeExpression*) _tmp65_);
5821 _vala_ccode_node_unref0 (_tmp65_);
5822 _tmp66_ = ccall;
5823 _tmp67_ = vala_ccode_identifier_new ("name");
5824 _tmp68_ = _tmp67_;
5825 vala_ccode_function_call_add_argument (_tmp66_, (ValaCCodeExpression*) _tmp68_);
5826 _vala_ccode_node_unref0 (_tmp68_);
5827 _tmp69_ = ccall;
5828 _tmp70_ = vala_ccode_identifier_new ("nick");
5829 _tmp71_ = _tmp70_;
5830 vala_ccode_function_call_add_argument (_tmp69_, (ValaCCodeExpression*) _tmp71_);
5831 _vala_ccode_node_unref0 (_tmp71_);
5832 _tmp72_ = ccall;
5833 _tmp73_ = vala_ccode_identifier_new ("blurb");
5834 _tmp74_ = _tmp73_;
5835 vala_ccode_function_call_add_argument (_tmp72_, (ValaCCodeExpression*) _tmp74_);
5836 _vala_ccode_node_unref0 (_tmp74_);
5837 _tmp75_ = ccall;
5838 _tmp76_ = vala_ccode_identifier_new ("flags");
5839 _tmp77_ = _tmp76_;
5840 vala_ccode_function_call_add_argument (_tmp75_, (ValaCCodeExpression*) _tmp77_);
5841 _vala_ccode_node_unref0 (_tmp77_);
5842 _tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5843 _tmp79_ = _tmp78_;
5844 _tmp80_ = vala_ccode_identifier_new ("spec");
5845 _tmp81_ = _tmp80_;
5846 _tmp82_ = ccall;
5847 vala_ccode_function_add_assignment (_tmp79_, (ValaCCodeExpression*) _tmp81_, (ValaCCodeExpression*) _tmp82_);
5848 _vala_ccode_node_unref0 (_tmp81_);
5849 _tmp83_ = vala_ccode_identifier_new ("G_PARAM_SPEC");
5850 _tmp84_ = _tmp83_;
5851 _tmp85_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp84_);
5852 _vala_ccode_node_unref0 (ccall);
5853 ccall = _tmp85_;
5854 _vala_ccode_node_unref0 (_tmp84_);
5855 _tmp86_ = ccall;
5856 _tmp87_ = vala_ccode_identifier_new ("spec");
5857 _tmp88_ = _tmp87_;
5858 vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp88_);
5859 _vala_ccode_node_unref0 (_tmp88_);
5860 _tmp89_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5861 _tmp90_ = _tmp89_;
5862 _tmp91_ = ccall;
5863 _tmp92_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp91_, "value_type");
5864 _tmp93_ = _tmp92_;
5865 _tmp94_ = vala_ccode_identifier_new ("object_type");
5866 _tmp95_ = _tmp94_;
5867 vala_ccode_function_add_assignment (_tmp90_, (ValaCCodeExpression*) _tmp93_, (ValaCCodeExpression*) _tmp95_);
5868 _vala_ccode_node_unref0 (_tmp95_);
5869 _vala_ccode_node_unref0 (_tmp93_);
5870 _tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
5871 _tmp97_ = _tmp96_;
5872 _tmp98_ = ccall;
5873 vala_ccode_function_add_return (_tmp97_, (ValaCCodeExpression*) _tmp98_);
5874 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
5875 _tmp99_ = ((ValaCCodeBaseModule*) self)->cfile;
5876 _tmp100_ = function;
5877 vala_ccode_file_add_function (_tmp99_, _tmp100_);
5878 _vala_ccode_node_unref0 (ccall);
5879 _vala_ccode_node_unref0 (subccall);
5880 _vala_ccode_node_unref0 (function);
5881 }
5882
5883 static void
vala_gtype_module_add_g_value_set_function(ValaGTypeModule * self,ValaClass * cl)5884 vala_gtype_module_add_g_value_set_function (ValaGTypeModule* self,
5885 ValaClass* cl)
5886 {
5887 ValaCCodeFunction* function = NULL;
5888 gchar* _tmp0_;
5889 gchar* _tmp1_;
5890 ValaCCodeFunction* _tmp2_;
5891 ValaCCodeFunction* _tmp3_;
5892 ValaCCodeFunction* _tmp4_;
5893 ValaCCodeParameter* _tmp5_;
5894 ValaCCodeParameter* _tmp6_;
5895 ValaCCodeFunction* _tmp7_;
5896 ValaCCodeParameter* _tmp8_;
5897 ValaCCodeParameter* _tmp9_;
5898 ValaCCodeMemberAccess* vpointer = NULL;
5899 ValaCCodeIdentifier* _tmp17_;
5900 ValaCCodeIdentifier* _tmp18_;
5901 ValaCCodeMemberAccess* _tmp19_;
5902 ValaCCodeMemberAccess* _tmp20_;
5903 ValaCCodeMemberAccess* _tmp21_;
5904 ValaCCodeMemberAccess* _tmp22_;
5905 ValaCCodeFunction* _tmp23_;
5906 ValaCCodeFunction* _tmp24_;
5907 ValaCCodeFunction* _tmp25_;
5908 gchar* _tmp26_;
5909 gchar* _tmp27_;
5910 gchar* _tmp28_;
5911 gchar* _tmp29_;
5912 ValaCCodeVariableDeclarator* _tmp30_;
5913 ValaCCodeVariableDeclarator* _tmp31_;
5914 ValaCCodeFunctionCall* ccall_typecheck = NULL;
5915 ValaCCodeIdentifier* _tmp32_;
5916 ValaCCodeIdentifier* _tmp33_;
5917 ValaCCodeFunctionCall* _tmp34_;
5918 ValaCCodeFunctionCall* _tmp35_;
5919 ValaCCodeFunctionCall* _tmp36_;
5920 ValaCCodeIdentifier* _tmp37_;
5921 ValaCCodeIdentifier* _tmp38_;
5922 ValaCCodeFunctionCall* _tmp39_;
5923 gchar* _tmp40_;
5924 gchar* _tmp41_;
5925 ValaCCodeIdentifier* _tmp42_;
5926 ValaCCodeIdentifier* _tmp43_;
5927 ValaCCodeFunctionCall* ccall = NULL;
5928 ValaCCodeIdentifier* _tmp44_;
5929 ValaCCodeIdentifier* _tmp45_;
5930 ValaCCodeFunctionCall* _tmp46_;
5931 ValaCCodeFunctionCall* _tmp47_;
5932 ValaCCodeFunctionCall* _tmp48_;
5933 ValaCCodeFunctionCall* _tmp49_;
5934 ValaCCodeFunction* _tmp50_;
5935 ValaCCodeFunction* _tmp51_;
5936 ValaCCodeFunctionCall* _tmp52_;
5937 ValaCCodeFunction* _tmp53_;
5938 ValaCCodeFunction* _tmp54_;
5939 ValaCCodeConstant* _tmp55_;
5940 ValaCCodeConstant* _tmp56_;
5941 ValaCCodeFunction* _tmp57_;
5942 ValaCCodeFunction* _tmp58_;
5943 ValaCCodeIdentifier* _tmp59_;
5944 ValaCCodeIdentifier* _tmp60_;
5945 ValaCCodeIdentifier* _tmp61_;
5946 ValaCCodeIdentifier* _tmp62_;
5947 ValaCCodeFunctionCall* _tmp63_;
5948 ValaCCodeFunctionCall* _tmp64_;
5949 ValaCCodeIdentifier* _tmp65_;
5950 ValaCCodeIdentifier* _tmp66_;
5951 ValaCCodeFunctionCall* _tmp67_;
5952 gchar* _tmp68_;
5953 gchar* _tmp69_;
5954 ValaCCodeIdentifier* _tmp70_;
5955 ValaCCodeIdentifier* _tmp71_;
5956 ValaCCodeIdentifier* _tmp72_;
5957 ValaCCodeIdentifier* _tmp73_;
5958 ValaCCodeFunctionCall* _tmp74_;
5959 ValaCCodeFunctionCall* _tmp75_;
5960 ValaCCodeFunctionCall* _tmp76_;
5961 ValaCCodeFunction* _tmp77_;
5962 ValaCCodeFunction* _tmp78_;
5963 ValaCCodeFunctionCall* _tmp79_;
5964 ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
5965 ValaCCodeIdentifier* _tmp80_;
5966 ValaCCodeIdentifier* _tmp81_;
5967 ValaCCodeFunctionCall* _tmp82_;
5968 ValaCCodeFunctionCall* _tmp83_;
5969 ValaCCodeIdentifier* _tmp84_;
5970 ValaCCodeIdentifier* _tmp85_;
5971 ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
5972 ValaCCodeIdentifier* _tmp86_;
5973 ValaCCodeIdentifier* _tmp87_;
5974 ValaCCodeFunctionCall* _tmp88_;
5975 ValaCCodeFunctionCall* _tmp89_;
5976 ValaCCodeIdentifier* _tmp90_;
5977 ValaCCodeIdentifier* _tmp91_;
5978 ValaCCodeFunctionCall* ccall_typecompatible = NULL;
5979 ValaCCodeIdentifier* _tmp92_;
5980 ValaCCodeIdentifier* _tmp93_;
5981 ValaCCodeFunctionCall* _tmp94_;
5982 ValaCCodeFunctionCall* _tmp95_;
5983 ValaCCodeIdentifier* _tmp96_;
5984 ValaCCodeIdentifier* _tmp97_;
5985 ValaCCodeFunctionCall* _tmp98_;
5986 ValaCCodeFunctionCall* _tmp99_;
5987 ValaCCodeFunction* _tmp100_;
5988 ValaCCodeFunction* _tmp101_;
5989 ValaCCodeFunctionCall* _tmp102_;
5990 ValaCCodeFunction* _tmp103_;
5991 ValaCCodeFunction* _tmp104_;
5992 ValaCCodeConstant* _tmp105_;
5993 ValaCCodeConstant* _tmp106_;
5994 gchar* _tmp107_;
5995 gchar* _tmp108_;
5996 ValaCCodeIdentifier* _tmp109_;
5997 ValaCCodeIdentifier* _tmp110_;
5998 ValaCCodeFunctionCall* _tmp111_;
5999 ValaCCodeFunctionCall* _tmp112_;
6000 ValaCCodeFunction* _tmp113_;
6001 ValaCCodeFunction* _tmp114_;
6002 ValaCCodeFunctionCall* _tmp115_;
6003 ValaCCodeFunction* _tmp116_;
6004 ValaCCodeFunction* _tmp117_;
6005 ValaCCodeFunction* _tmp118_;
6006 ValaCCodeFunction* _tmp119_;
6007 ValaCCodeConstant* _tmp120_;
6008 ValaCCodeConstant* _tmp121_;
6009 ValaCCodeFunction* _tmp122_;
6010 ValaCCodeFunction* _tmp123_;
6011 ValaCCodeFunction* _tmp124_;
6012 ValaCCodeFunction* _tmp125_;
6013 ValaCCodeIdentifier* _tmp126_;
6014 ValaCCodeIdentifier* _tmp127_;
6015 gchar* _tmp128_;
6016 gchar* _tmp129_;
6017 ValaCCodeIdentifier* _tmp130_;
6018 ValaCCodeIdentifier* _tmp131_;
6019 ValaCCodeFunctionCall* _tmp132_;
6020 ValaCCodeFunctionCall* _tmp133_;
6021 ValaCCodeIdentifier* _tmp134_;
6022 ValaCCodeIdentifier* _tmp135_;
6023 ValaCCodeFunction* _tmp136_;
6024 ValaCCodeFunction* _tmp137_;
6025 ValaCCodeFunctionCall* _tmp138_;
6026 ValaCCodeFunction* _tmp139_;
6027 ValaCCodeFunction* _tmp140_;
6028 ValaCCodeFile* _tmp141_;
6029 ValaCCodeFunction* _tmp142_;
6030 g_return_if_fail (self != NULL);
6031 g_return_if_fail (cl != NULL);
6032 _tmp0_ = vala_get_ccode_set_value_function ((ValaCodeNode*) cl);
6033 _tmp1_ = _tmp0_;
6034 _tmp2_ = vala_ccode_function_new (_tmp1_, "void");
6035 _tmp3_ = _tmp2_;
6036 _g_free0 (_tmp1_);
6037 function = _tmp3_;
6038 _tmp4_ = function;
6039 _tmp5_ = vala_ccode_parameter_new ("value", "GValue*");
6040 _tmp6_ = _tmp5_;
6041 vala_ccode_function_add_parameter (_tmp4_, _tmp6_);
6042 _vala_ccode_node_unref0 (_tmp6_);
6043 _tmp7_ = function;
6044 _tmp8_ = vala_ccode_parameter_new ("v_object", "gpointer");
6045 _tmp9_ = _tmp8_;
6046 vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
6047 _vala_ccode_node_unref0 (_tmp9_);
6048 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
6049 ValaCCodeFunction* _tmp10_;
6050 _tmp10_ = function;
6051 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp10_, VALA_CCODE_MODIFIERS_STATIC);
6052 } else {
6053 gboolean _tmp11_ = FALSE;
6054 ValaCodeContext* _tmp12_;
6055 ValaCodeContext* _tmp13_;
6056 gboolean _tmp14_;
6057 gboolean _tmp15_;
6058 _tmp12_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
6059 _tmp13_ = _tmp12_;
6060 _tmp14_ = vala_code_context_get_hide_internal (_tmp13_);
6061 _tmp15_ = _tmp14_;
6062 if (_tmp15_) {
6063 _tmp11_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
6064 } else {
6065 _tmp11_ = FALSE;
6066 }
6067 if (_tmp11_) {
6068 ValaCCodeFunction* _tmp16_;
6069 _tmp16_ = function;
6070 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp16_, VALA_CCODE_MODIFIERS_INTERNAL);
6071 }
6072 }
6073 _tmp17_ = vala_ccode_identifier_new ("value");
6074 _tmp18_ = _tmp17_;
6075 _tmp19_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp18_, "data[0]");
6076 _tmp20_ = _tmp19_;
6077 _tmp21_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp20_, "v_pointer", FALSE);
6078 _tmp22_ = _tmp21_;
6079 _vala_ccode_node_unref0 (_tmp20_);
6080 _vala_ccode_node_unref0 (_tmp18_);
6081 vpointer = _tmp22_;
6082 _tmp23_ = function;
6083 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp23_);
6084 _tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6085 _tmp25_ = _tmp24_;
6086 _tmp26_ = vala_get_ccode_name ((ValaCodeNode*) cl);
6087 _tmp27_ = _tmp26_;
6088 _tmp28_ = g_strdup_printf ("%s *", _tmp27_);
6089 _tmp29_ = _tmp28_;
6090 _tmp30_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
6091 _tmp31_ = _tmp30_;
6092 vala_ccode_function_add_declaration (_tmp25_, _tmp29_, (ValaCCodeDeclarator*) _tmp31_, 0);
6093 _vala_ccode_node_unref0 (_tmp31_);
6094 _g_free0 (_tmp29_);
6095 _g_free0 (_tmp27_);
6096 _tmp32_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
6097 _tmp33_ = _tmp32_;
6098 _tmp34_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp33_);
6099 _tmp35_ = _tmp34_;
6100 _vala_ccode_node_unref0 (_tmp33_);
6101 ccall_typecheck = _tmp35_;
6102 _tmp36_ = ccall_typecheck;
6103 _tmp37_ = vala_ccode_identifier_new ("value");
6104 _tmp38_ = _tmp37_;
6105 vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp38_);
6106 _vala_ccode_node_unref0 (_tmp38_);
6107 _tmp39_ = ccall_typecheck;
6108 _tmp40_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
6109 _tmp41_ = _tmp40_;
6110 _tmp42_ = vala_ccode_identifier_new (_tmp41_);
6111 _tmp43_ = _tmp42_;
6112 vala_ccode_function_call_add_argument (_tmp39_, (ValaCCodeExpression*) _tmp43_);
6113 _vala_ccode_node_unref0 (_tmp43_);
6114 _g_free0 (_tmp41_);
6115 _tmp44_ = vala_ccode_identifier_new ("g_return_if_fail");
6116 _tmp45_ = _tmp44_;
6117 _tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
6118 _tmp47_ = _tmp46_;
6119 _vala_ccode_node_unref0 (_tmp45_);
6120 ccall = _tmp47_;
6121 _tmp48_ = ccall;
6122 _tmp49_ = ccall_typecheck;
6123 vala_ccode_function_call_add_argument (_tmp48_, (ValaCCodeExpression*) _tmp49_);
6124 _tmp50_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6125 _tmp51_ = _tmp50_;
6126 _tmp52_ = ccall;
6127 vala_ccode_function_add_expression (_tmp51_, (ValaCCodeExpression*) _tmp52_);
6128 _tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6129 _tmp54_ = _tmp53_;
6130 _tmp55_ = vala_ccode_constant_new ("old");
6131 _tmp56_ = _tmp55_;
6132 vala_ccode_function_add_assignment (_tmp54_, (ValaCCodeExpression*) _tmp56_, (ValaCCodeExpression*) vpointer);
6133 _vala_ccode_node_unref0 (_tmp56_);
6134 _tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6135 _tmp58_ = _tmp57_;
6136 _tmp59_ = vala_ccode_identifier_new ("v_object");
6137 _tmp60_ = _tmp59_;
6138 vala_ccode_function_open_if (_tmp58_, (ValaCCodeExpression*) _tmp60_);
6139 _vala_ccode_node_unref0 (_tmp60_);
6140 _tmp61_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
6141 _tmp62_ = _tmp61_;
6142 _tmp63_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp62_);
6143 _vala_ccode_node_unref0 (ccall_typecheck);
6144 ccall_typecheck = _tmp63_;
6145 _vala_ccode_node_unref0 (_tmp62_);
6146 _tmp64_ = ccall_typecheck;
6147 _tmp65_ = vala_ccode_identifier_new ("v_object");
6148 _tmp66_ = _tmp65_;
6149 vala_ccode_function_call_add_argument (_tmp64_, (ValaCCodeExpression*) _tmp66_);
6150 _vala_ccode_node_unref0 (_tmp66_);
6151 _tmp67_ = ccall_typecheck;
6152 _tmp68_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
6153 _tmp69_ = _tmp68_;
6154 _tmp70_ = vala_ccode_identifier_new (_tmp69_);
6155 _tmp71_ = _tmp70_;
6156 vala_ccode_function_call_add_argument (_tmp67_, (ValaCCodeExpression*) _tmp71_);
6157 _vala_ccode_node_unref0 (_tmp71_);
6158 _g_free0 (_tmp69_);
6159 _tmp72_ = vala_ccode_identifier_new ("g_return_if_fail");
6160 _tmp73_ = _tmp72_;
6161 _tmp74_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp73_);
6162 _vala_ccode_node_unref0 (ccall);
6163 ccall = _tmp74_;
6164 _vala_ccode_node_unref0 (_tmp73_);
6165 _tmp75_ = ccall;
6166 _tmp76_ = ccall_typecheck;
6167 vala_ccode_function_call_add_argument (_tmp75_, (ValaCCodeExpression*) _tmp76_);
6168 _tmp77_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6169 _tmp78_ = _tmp77_;
6170 _tmp79_ = ccall;
6171 vala_ccode_function_add_expression (_tmp78_, (ValaCCodeExpression*) _tmp79_);
6172 _tmp80_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
6173 _tmp81_ = _tmp80_;
6174 _tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
6175 _tmp83_ = _tmp82_;
6176 _vala_ccode_node_unref0 (_tmp81_);
6177 ccall_typefrominstance = _tmp83_;
6178 _tmp84_ = vala_ccode_identifier_new ("v_object");
6179 _tmp85_ = _tmp84_;
6180 vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp85_);
6181 _vala_ccode_node_unref0 (_tmp85_);
6182 _tmp86_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
6183 _tmp87_ = _tmp86_;
6184 _tmp88_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp87_);
6185 _tmp89_ = _tmp88_;
6186 _vala_ccode_node_unref0 (_tmp87_);
6187 ccall_gvaluetype = _tmp89_;
6188 _tmp90_ = vala_ccode_identifier_new ("value");
6189 _tmp91_ = _tmp90_;
6190 vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp91_);
6191 _vala_ccode_node_unref0 (_tmp91_);
6192 _tmp92_ = vala_ccode_identifier_new ("g_value_type_compatible");
6193 _tmp93_ = _tmp92_;
6194 _tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_);
6195 _tmp95_ = _tmp94_;
6196 _vala_ccode_node_unref0 (_tmp93_);
6197 ccall_typecompatible = _tmp95_;
6198 vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
6199 vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
6200 _tmp96_ = vala_ccode_identifier_new ("g_return_if_fail");
6201 _tmp97_ = _tmp96_;
6202 _tmp98_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp97_);
6203 _vala_ccode_node_unref0 (ccall);
6204 ccall = _tmp98_;
6205 _vala_ccode_node_unref0 (_tmp97_);
6206 _tmp99_ = ccall;
6207 vala_ccode_function_call_add_argument (_tmp99_, (ValaCCodeExpression*) ccall_typecompatible);
6208 _tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6209 _tmp101_ = _tmp100_;
6210 _tmp102_ = ccall;
6211 vala_ccode_function_add_expression (_tmp101_, (ValaCCodeExpression*) _tmp102_);
6212 _tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6213 _tmp104_ = _tmp103_;
6214 _tmp105_ = vala_ccode_constant_new ("v_object");
6215 _tmp106_ = _tmp105_;
6216 vala_ccode_function_add_assignment (_tmp104_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp106_);
6217 _vala_ccode_node_unref0 (_tmp106_);
6218 _tmp107_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) cl);
6219 _tmp108_ = _tmp107_;
6220 _tmp109_ = vala_ccode_identifier_new (_tmp108_);
6221 _tmp110_ = _tmp109_;
6222 _tmp111_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp110_);
6223 _vala_ccode_node_unref0 (ccall);
6224 ccall = _tmp111_;
6225 _vala_ccode_node_unref0 (_tmp110_);
6226 _g_free0 (_tmp108_);
6227 _tmp112_ = ccall;
6228 vala_ccode_function_call_add_argument (_tmp112_, (ValaCCodeExpression*) vpointer);
6229 _tmp113_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6230 _tmp114_ = _tmp113_;
6231 _tmp115_ = ccall;
6232 vala_ccode_function_add_expression (_tmp114_, (ValaCCodeExpression*) _tmp115_);
6233 _tmp116_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6234 _tmp117_ = _tmp116_;
6235 vala_ccode_function_add_else (_tmp117_);
6236 _tmp118_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6237 _tmp119_ = _tmp118_;
6238 _tmp120_ = vala_ccode_constant_new ("NULL");
6239 _tmp121_ = _tmp120_;
6240 vala_ccode_function_add_assignment (_tmp119_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp121_);
6241 _vala_ccode_node_unref0 (_tmp121_);
6242 _tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6243 _tmp123_ = _tmp122_;
6244 vala_ccode_function_close (_tmp123_);
6245 _tmp124_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6246 _tmp125_ = _tmp124_;
6247 _tmp126_ = vala_ccode_identifier_new ("old");
6248 _tmp127_ = _tmp126_;
6249 vala_ccode_function_open_if (_tmp125_, (ValaCCodeExpression*) _tmp127_);
6250 _vala_ccode_node_unref0 (_tmp127_);
6251 _tmp128_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) cl);
6252 _tmp129_ = _tmp128_;
6253 _tmp130_ = vala_ccode_identifier_new (_tmp129_);
6254 _tmp131_ = _tmp130_;
6255 _tmp132_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp131_);
6256 _vala_ccode_node_unref0 (ccall);
6257 ccall = _tmp132_;
6258 _vala_ccode_node_unref0 (_tmp131_);
6259 _g_free0 (_tmp129_);
6260 _tmp133_ = ccall;
6261 _tmp134_ = vala_ccode_identifier_new ("old");
6262 _tmp135_ = _tmp134_;
6263 vala_ccode_function_call_add_argument (_tmp133_, (ValaCCodeExpression*) _tmp135_);
6264 _vala_ccode_node_unref0 (_tmp135_);
6265 _tmp136_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6266 _tmp137_ = _tmp136_;
6267 _tmp138_ = ccall;
6268 vala_ccode_function_add_expression (_tmp137_, (ValaCCodeExpression*) _tmp138_);
6269 _tmp139_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6270 _tmp140_ = _tmp139_;
6271 vala_ccode_function_close (_tmp140_);
6272 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
6273 _tmp141_ = ((ValaCCodeBaseModule*) self)->cfile;
6274 _tmp142_ = function;
6275 vala_ccode_file_add_function (_tmp141_, _tmp142_);
6276 _vala_ccode_node_unref0 (ccall_typecompatible);
6277 _vala_ccode_node_unref0 (ccall_gvaluetype);
6278 _vala_ccode_node_unref0 (ccall_typefrominstance);
6279 _vala_ccode_node_unref0 (ccall);
6280 _vala_ccode_node_unref0 (ccall_typecheck);
6281 _vala_ccode_node_unref0 (vpointer);
6282 _vala_ccode_node_unref0 (function);
6283 }
6284
6285 static void
vala_gtype_module_add_g_value_take_function(ValaGTypeModule * self,ValaClass * cl)6286 vala_gtype_module_add_g_value_take_function (ValaGTypeModule* self,
6287 ValaClass* cl)
6288 {
6289 ValaCCodeFunction* function = NULL;
6290 gchar* _tmp0_;
6291 gchar* _tmp1_;
6292 ValaCCodeFunction* _tmp2_;
6293 ValaCCodeFunction* _tmp3_;
6294 ValaCCodeFunction* _tmp4_;
6295 ValaCCodeParameter* _tmp5_;
6296 ValaCCodeParameter* _tmp6_;
6297 ValaCCodeFunction* _tmp7_;
6298 ValaCCodeParameter* _tmp8_;
6299 ValaCCodeParameter* _tmp9_;
6300 ValaCCodeMemberAccess* vpointer = NULL;
6301 ValaCCodeIdentifier* _tmp17_;
6302 ValaCCodeIdentifier* _tmp18_;
6303 ValaCCodeMemberAccess* _tmp19_;
6304 ValaCCodeMemberAccess* _tmp20_;
6305 ValaCCodeMemberAccess* _tmp21_;
6306 ValaCCodeMemberAccess* _tmp22_;
6307 ValaCCodeFunction* _tmp23_;
6308 ValaCCodeFunction* _tmp24_;
6309 ValaCCodeFunction* _tmp25_;
6310 gchar* _tmp26_;
6311 gchar* _tmp27_;
6312 gchar* _tmp28_;
6313 gchar* _tmp29_;
6314 ValaCCodeVariableDeclarator* _tmp30_;
6315 ValaCCodeVariableDeclarator* _tmp31_;
6316 ValaCCodeFunctionCall* ccall_typecheck = NULL;
6317 ValaCCodeIdentifier* _tmp32_;
6318 ValaCCodeIdentifier* _tmp33_;
6319 ValaCCodeFunctionCall* _tmp34_;
6320 ValaCCodeFunctionCall* _tmp35_;
6321 ValaCCodeFunctionCall* _tmp36_;
6322 ValaCCodeIdentifier* _tmp37_;
6323 ValaCCodeIdentifier* _tmp38_;
6324 ValaCCodeFunctionCall* _tmp39_;
6325 gchar* _tmp40_;
6326 gchar* _tmp41_;
6327 ValaCCodeIdentifier* _tmp42_;
6328 ValaCCodeIdentifier* _tmp43_;
6329 ValaCCodeFunctionCall* ccall = NULL;
6330 ValaCCodeIdentifier* _tmp44_;
6331 ValaCCodeIdentifier* _tmp45_;
6332 ValaCCodeFunctionCall* _tmp46_;
6333 ValaCCodeFunctionCall* _tmp47_;
6334 ValaCCodeFunctionCall* _tmp48_;
6335 ValaCCodeFunctionCall* _tmp49_;
6336 ValaCCodeFunction* _tmp50_;
6337 ValaCCodeFunction* _tmp51_;
6338 ValaCCodeFunctionCall* _tmp52_;
6339 ValaCCodeFunction* _tmp53_;
6340 ValaCCodeFunction* _tmp54_;
6341 ValaCCodeConstant* _tmp55_;
6342 ValaCCodeConstant* _tmp56_;
6343 ValaCCodeFunction* _tmp57_;
6344 ValaCCodeFunction* _tmp58_;
6345 ValaCCodeIdentifier* _tmp59_;
6346 ValaCCodeIdentifier* _tmp60_;
6347 ValaCCodeIdentifier* _tmp61_;
6348 ValaCCodeIdentifier* _tmp62_;
6349 ValaCCodeFunctionCall* _tmp63_;
6350 ValaCCodeFunctionCall* _tmp64_;
6351 ValaCCodeIdentifier* _tmp65_;
6352 ValaCCodeIdentifier* _tmp66_;
6353 ValaCCodeFunctionCall* _tmp67_;
6354 gchar* _tmp68_;
6355 gchar* _tmp69_;
6356 ValaCCodeIdentifier* _tmp70_;
6357 ValaCCodeIdentifier* _tmp71_;
6358 ValaCCodeIdentifier* _tmp72_;
6359 ValaCCodeIdentifier* _tmp73_;
6360 ValaCCodeFunctionCall* _tmp74_;
6361 ValaCCodeFunctionCall* _tmp75_;
6362 ValaCCodeFunctionCall* _tmp76_;
6363 ValaCCodeFunction* _tmp77_;
6364 ValaCCodeFunction* _tmp78_;
6365 ValaCCodeFunctionCall* _tmp79_;
6366 ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
6367 ValaCCodeIdentifier* _tmp80_;
6368 ValaCCodeIdentifier* _tmp81_;
6369 ValaCCodeFunctionCall* _tmp82_;
6370 ValaCCodeFunctionCall* _tmp83_;
6371 ValaCCodeIdentifier* _tmp84_;
6372 ValaCCodeIdentifier* _tmp85_;
6373 ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
6374 ValaCCodeIdentifier* _tmp86_;
6375 ValaCCodeIdentifier* _tmp87_;
6376 ValaCCodeFunctionCall* _tmp88_;
6377 ValaCCodeFunctionCall* _tmp89_;
6378 ValaCCodeIdentifier* _tmp90_;
6379 ValaCCodeIdentifier* _tmp91_;
6380 ValaCCodeFunctionCall* ccall_typecompatible = NULL;
6381 ValaCCodeIdentifier* _tmp92_;
6382 ValaCCodeIdentifier* _tmp93_;
6383 ValaCCodeFunctionCall* _tmp94_;
6384 ValaCCodeFunctionCall* _tmp95_;
6385 ValaCCodeIdentifier* _tmp96_;
6386 ValaCCodeIdentifier* _tmp97_;
6387 ValaCCodeFunctionCall* _tmp98_;
6388 ValaCCodeFunctionCall* _tmp99_;
6389 ValaCCodeFunction* _tmp100_;
6390 ValaCCodeFunction* _tmp101_;
6391 ValaCCodeFunctionCall* _tmp102_;
6392 ValaCCodeFunction* _tmp103_;
6393 ValaCCodeFunction* _tmp104_;
6394 ValaCCodeConstant* _tmp105_;
6395 ValaCCodeConstant* _tmp106_;
6396 ValaCCodeFunction* _tmp107_;
6397 ValaCCodeFunction* _tmp108_;
6398 ValaCCodeFunction* _tmp109_;
6399 ValaCCodeFunction* _tmp110_;
6400 ValaCCodeConstant* _tmp111_;
6401 ValaCCodeConstant* _tmp112_;
6402 ValaCCodeFunction* _tmp113_;
6403 ValaCCodeFunction* _tmp114_;
6404 ValaCCodeFunction* _tmp115_;
6405 ValaCCodeFunction* _tmp116_;
6406 ValaCCodeIdentifier* _tmp117_;
6407 ValaCCodeIdentifier* _tmp118_;
6408 gchar* _tmp119_;
6409 gchar* _tmp120_;
6410 ValaCCodeIdentifier* _tmp121_;
6411 ValaCCodeIdentifier* _tmp122_;
6412 ValaCCodeFunctionCall* _tmp123_;
6413 ValaCCodeFunctionCall* _tmp124_;
6414 ValaCCodeIdentifier* _tmp125_;
6415 ValaCCodeIdentifier* _tmp126_;
6416 ValaCCodeFunction* _tmp127_;
6417 ValaCCodeFunction* _tmp128_;
6418 ValaCCodeFunctionCall* _tmp129_;
6419 ValaCCodeFunction* _tmp130_;
6420 ValaCCodeFunction* _tmp131_;
6421 ValaCCodeFile* _tmp132_;
6422 ValaCCodeFunction* _tmp133_;
6423 g_return_if_fail (self != NULL);
6424 g_return_if_fail (cl != NULL);
6425 _tmp0_ = vala_get_ccode_take_value_function ((ValaCodeNode*) cl);
6426 _tmp1_ = _tmp0_;
6427 _tmp2_ = vala_ccode_function_new (_tmp1_, "void");
6428 _tmp3_ = _tmp2_;
6429 _g_free0 (_tmp1_);
6430 function = _tmp3_;
6431 _tmp4_ = function;
6432 _tmp5_ = vala_ccode_parameter_new ("value", "GValue*");
6433 _tmp6_ = _tmp5_;
6434 vala_ccode_function_add_parameter (_tmp4_, _tmp6_);
6435 _vala_ccode_node_unref0 (_tmp6_);
6436 _tmp7_ = function;
6437 _tmp8_ = vala_ccode_parameter_new ("v_object", "gpointer");
6438 _tmp9_ = _tmp8_;
6439 vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
6440 _vala_ccode_node_unref0 (_tmp9_);
6441 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
6442 ValaCCodeFunction* _tmp10_;
6443 _tmp10_ = function;
6444 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp10_, VALA_CCODE_MODIFIERS_STATIC);
6445 } else {
6446 gboolean _tmp11_ = FALSE;
6447 ValaCodeContext* _tmp12_;
6448 ValaCodeContext* _tmp13_;
6449 gboolean _tmp14_;
6450 gboolean _tmp15_;
6451 _tmp12_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
6452 _tmp13_ = _tmp12_;
6453 _tmp14_ = vala_code_context_get_hide_internal (_tmp13_);
6454 _tmp15_ = _tmp14_;
6455 if (_tmp15_) {
6456 _tmp11_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
6457 } else {
6458 _tmp11_ = FALSE;
6459 }
6460 if (_tmp11_) {
6461 ValaCCodeFunction* _tmp16_;
6462 _tmp16_ = function;
6463 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp16_, VALA_CCODE_MODIFIERS_INTERNAL);
6464 }
6465 }
6466 _tmp17_ = vala_ccode_identifier_new ("value");
6467 _tmp18_ = _tmp17_;
6468 _tmp19_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp18_, "data[0]");
6469 _tmp20_ = _tmp19_;
6470 _tmp21_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp20_, "v_pointer", FALSE);
6471 _tmp22_ = _tmp21_;
6472 _vala_ccode_node_unref0 (_tmp20_);
6473 _vala_ccode_node_unref0 (_tmp18_);
6474 vpointer = _tmp22_;
6475 _tmp23_ = function;
6476 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp23_);
6477 _tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6478 _tmp25_ = _tmp24_;
6479 _tmp26_ = vala_get_ccode_name ((ValaCodeNode*) cl);
6480 _tmp27_ = _tmp26_;
6481 _tmp28_ = g_strdup_printf ("%s *", _tmp27_);
6482 _tmp29_ = _tmp28_;
6483 _tmp30_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
6484 _tmp31_ = _tmp30_;
6485 vala_ccode_function_add_declaration (_tmp25_, _tmp29_, (ValaCCodeDeclarator*) _tmp31_, 0);
6486 _vala_ccode_node_unref0 (_tmp31_);
6487 _g_free0 (_tmp29_);
6488 _g_free0 (_tmp27_);
6489 _tmp32_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
6490 _tmp33_ = _tmp32_;
6491 _tmp34_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp33_);
6492 _tmp35_ = _tmp34_;
6493 _vala_ccode_node_unref0 (_tmp33_);
6494 ccall_typecheck = _tmp35_;
6495 _tmp36_ = ccall_typecheck;
6496 _tmp37_ = vala_ccode_identifier_new ("value");
6497 _tmp38_ = _tmp37_;
6498 vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp38_);
6499 _vala_ccode_node_unref0 (_tmp38_);
6500 _tmp39_ = ccall_typecheck;
6501 _tmp40_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
6502 _tmp41_ = _tmp40_;
6503 _tmp42_ = vala_ccode_identifier_new (_tmp41_);
6504 _tmp43_ = _tmp42_;
6505 vala_ccode_function_call_add_argument (_tmp39_, (ValaCCodeExpression*) _tmp43_);
6506 _vala_ccode_node_unref0 (_tmp43_);
6507 _g_free0 (_tmp41_);
6508 _tmp44_ = vala_ccode_identifier_new ("g_return_if_fail");
6509 _tmp45_ = _tmp44_;
6510 _tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
6511 _tmp47_ = _tmp46_;
6512 _vala_ccode_node_unref0 (_tmp45_);
6513 ccall = _tmp47_;
6514 _tmp48_ = ccall;
6515 _tmp49_ = ccall_typecheck;
6516 vala_ccode_function_call_add_argument (_tmp48_, (ValaCCodeExpression*) _tmp49_);
6517 _tmp50_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6518 _tmp51_ = _tmp50_;
6519 _tmp52_ = ccall;
6520 vala_ccode_function_add_expression (_tmp51_, (ValaCCodeExpression*) _tmp52_);
6521 _tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6522 _tmp54_ = _tmp53_;
6523 _tmp55_ = vala_ccode_constant_new ("old");
6524 _tmp56_ = _tmp55_;
6525 vala_ccode_function_add_assignment (_tmp54_, (ValaCCodeExpression*) _tmp56_, (ValaCCodeExpression*) vpointer);
6526 _vala_ccode_node_unref0 (_tmp56_);
6527 _tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6528 _tmp58_ = _tmp57_;
6529 _tmp59_ = vala_ccode_identifier_new ("v_object");
6530 _tmp60_ = _tmp59_;
6531 vala_ccode_function_open_if (_tmp58_, (ValaCCodeExpression*) _tmp60_);
6532 _vala_ccode_node_unref0 (_tmp60_);
6533 _tmp61_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
6534 _tmp62_ = _tmp61_;
6535 _tmp63_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp62_);
6536 _vala_ccode_node_unref0 (ccall_typecheck);
6537 ccall_typecheck = _tmp63_;
6538 _vala_ccode_node_unref0 (_tmp62_);
6539 _tmp64_ = ccall_typecheck;
6540 _tmp65_ = vala_ccode_identifier_new ("v_object");
6541 _tmp66_ = _tmp65_;
6542 vala_ccode_function_call_add_argument (_tmp64_, (ValaCCodeExpression*) _tmp66_);
6543 _vala_ccode_node_unref0 (_tmp66_);
6544 _tmp67_ = ccall_typecheck;
6545 _tmp68_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
6546 _tmp69_ = _tmp68_;
6547 _tmp70_ = vala_ccode_identifier_new (_tmp69_);
6548 _tmp71_ = _tmp70_;
6549 vala_ccode_function_call_add_argument (_tmp67_, (ValaCCodeExpression*) _tmp71_);
6550 _vala_ccode_node_unref0 (_tmp71_);
6551 _g_free0 (_tmp69_);
6552 _tmp72_ = vala_ccode_identifier_new ("g_return_if_fail");
6553 _tmp73_ = _tmp72_;
6554 _tmp74_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp73_);
6555 _vala_ccode_node_unref0 (ccall);
6556 ccall = _tmp74_;
6557 _vala_ccode_node_unref0 (_tmp73_);
6558 _tmp75_ = ccall;
6559 _tmp76_ = ccall_typecheck;
6560 vala_ccode_function_call_add_argument (_tmp75_, (ValaCCodeExpression*) _tmp76_);
6561 _tmp77_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6562 _tmp78_ = _tmp77_;
6563 _tmp79_ = ccall;
6564 vala_ccode_function_add_expression (_tmp78_, (ValaCCodeExpression*) _tmp79_);
6565 _tmp80_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
6566 _tmp81_ = _tmp80_;
6567 _tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
6568 _tmp83_ = _tmp82_;
6569 _vala_ccode_node_unref0 (_tmp81_);
6570 ccall_typefrominstance = _tmp83_;
6571 _tmp84_ = vala_ccode_identifier_new ("v_object");
6572 _tmp85_ = _tmp84_;
6573 vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp85_);
6574 _vala_ccode_node_unref0 (_tmp85_);
6575 _tmp86_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
6576 _tmp87_ = _tmp86_;
6577 _tmp88_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp87_);
6578 _tmp89_ = _tmp88_;
6579 _vala_ccode_node_unref0 (_tmp87_);
6580 ccall_gvaluetype = _tmp89_;
6581 _tmp90_ = vala_ccode_identifier_new ("value");
6582 _tmp91_ = _tmp90_;
6583 vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp91_);
6584 _vala_ccode_node_unref0 (_tmp91_);
6585 _tmp92_ = vala_ccode_identifier_new ("g_value_type_compatible");
6586 _tmp93_ = _tmp92_;
6587 _tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_);
6588 _tmp95_ = _tmp94_;
6589 _vala_ccode_node_unref0 (_tmp93_);
6590 ccall_typecompatible = _tmp95_;
6591 vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
6592 vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
6593 _tmp96_ = vala_ccode_identifier_new ("g_return_if_fail");
6594 _tmp97_ = _tmp96_;
6595 _tmp98_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp97_);
6596 _vala_ccode_node_unref0 (ccall);
6597 ccall = _tmp98_;
6598 _vala_ccode_node_unref0 (_tmp97_);
6599 _tmp99_ = ccall;
6600 vala_ccode_function_call_add_argument (_tmp99_, (ValaCCodeExpression*) ccall_typecompatible);
6601 _tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6602 _tmp101_ = _tmp100_;
6603 _tmp102_ = ccall;
6604 vala_ccode_function_add_expression (_tmp101_, (ValaCCodeExpression*) _tmp102_);
6605 _tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6606 _tmp104_ = _tmp103_;
6607 _tmp105_ = vala_ccode_constant_new ("v_object");
6608 _tmp106_ = _tmp105_;
6609 vala_ccode_function_add_assignment (_tmp104_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp106_);
6610 _vala_ccode_node_unref0 (_tmp106_);
6611 _tmp107_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6612 _tmp108_ = _tmp107_;
6613 vala_ccode_function_add_else (_tmp108_);
6614 _tmp109_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6615 _tmp110_ = _tmp109_;
6616 _tmp111_ = vala_ccode_constant_new ("NULL");
6617 _tmp112_ = _tmp111_;
6618 vala_ccode_function_add_assignment (_tmp110_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp112_);
6619 _vala_ccode_node_unref0 (_tmp112_);
6620 _tmp113_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6621 _tmp114_ = _tmp113_;
6622 vala_ccode_function_close (_tmp114_);
6623 _tmp115_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6624 _tmp116_ = _tmp115_;
6625 _tmp117_ = vala_ccode_identifier_new ("old");
6626 _tmp118_ = _tmp117_;
6627 vala_ccode_function_open_if (_tmp116_, (ValaCCodeExpression*) _tmp118_);
6628 _vala_ccode_node_unref0 (_tmp118_);
6629 _tmp119_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) cl);
6630 _tmp120_ = _tmp119_;
6631 _tmp121_ = vala_ccode_identifier_new (_tmp120_);
6632 _tmp122_ = _tmp121_;
6633 _tmp123_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp122_);
6634 _vala_ccode_node_unref0 (ccall);
6635 ccall = _tmp123_;
6636 _vala_ccode_node_unref0 (_tmp122_);
6637 _g_free0 (_tmp120_);
6638 _tmp124_ = ccall;
6639 _tmp125_ = vala_ccode_identifier_new ("old");
6640 _tmp126_ = _tmp125_;
6641 vala_ccode_function_call_add_argument (_tmp124_, (ValaCCodeExpression*) _tmp126_);
6642 _vala_ccode_node_unref0 (_tmp126_);
6643 _tmp127_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6644 _tmp128_ = _tmp127_;
6645 _tmp129_ = ccall;
6646 vala_ccode_function_add_expression (_tmp128_, (ValaCCodeExpression*) _tmp129_);
6647 _tmp130_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6648 _tmp131_ = _tmp130_;
6649 vala_ccode_function_close (_tmp131_);
6650 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
6651 _tmp132_ = ((ValaCCodeBaseModule*) self)->cfile;
6652 _tmp133_ = function;
6653 vala_ccode_file_add_function (_tmp132_, _tmp133_);
6654 _vala_ccode_node_unref0 (ccall_typecompatible);
6655 _vala_ccode_node_unref0 (ccall_gvaluetype);
6656 _vala_ccode_node_unref0 (ccall_typefrominstance);
6657 _vala_ccode_node_unref0 (ccall);
6658 _vala_ccode_node_unref0 (ccall_typecheck);
6659 _vala_ccode_node_unref0 (vpointer);
6660 _vala_ccode_node_unref0 (function);
6661 }
6662
6663 static void
vala_gtype_module_add_g_value_get_function(ValaGTypeModule * self,ValaClass * cl)6664 vala_gtype_module_add_g_value_get_function (ValaGTypeModule* self,
6665 ValaClass* cl)
6666 {
6667 ValaCCodeFunction* function = NULL;
6668 gchar* _tmp0_;
6669 gchar* _tmp1_;
6670 ValaCCodeFunction* _tmp2_;
6671 ValaCCodeFunction* _tmp3_;
6672 ValaCCodeFunction* _tmp4_;
6673 ValaCCodeParameter* _tmp5_;
6674 ValaCCodeParameter* _tmp6_;
6675 ValaCCodeMemberAccess* vpointer = NULL;
6676 ValaCCodeIdentifier* _tmp14_;
6677 ValaCCodeIdentifier* _tmp15_;
6678 ValaCCodeMemberAccess* _tmp16_;
6679 ValaCCodeMemberAccess* _tmp17_;
6680 ValaCCodeMemberAccess* _tmp18_;
6681 ValaCCodeMemberAccess* _tmp19_;
6682 ValaCCodeFunction* _tmp20_;
6683 ValaCCodeFunctionCall* ccall_typecheck = NULL;
6684 ValaCCodeIdentifier* _tmp21_;
6685 ValaCCodeIdentifier* _tmp22_;
6686 ValaCCodeFunctionCall* _tmp23_;
6687 ValaCCodeFunctionCall* _tmp24_;
6688 ValaCCodeIdentifier* _tmp25_;
6689 ValaCCodeIdentifier* _tmp26_;
6690 gchar* _tmp27_;
6691 gchar* _tmp28_;
6692 ValaCCodeIdentifier* _tmp29_;
6693 ValaCCodeIdentifier* _tmp30_;
6694 ValaCCodeFunctionCall* ccall = NULL;
6695 ValaCCodeIdentifier* _tmp31_;
6696 ValaCCodeIdentifier* _tmp32_;
6697 ValaCCodeFunctionCall* _tmp33_;
6698 ValaCCodeFunctionCall* _tmp34_;
6699 ValaCCodeConstant* _tmp35_;
6700 ValaCCodeConstant* _tmp36_;
6701 ValaCCodeFunction* _tmp37_;
6702 ValaCCodeFunction* _tmp38_;
6703 ValaCCodeFunction* _tmp39_;
6704 ValaCCodeFunction* _tmp40_;
6705 ValaCCodeFile* _tmp41_;
6706 ValaCCodeFunction* _tmp42_;
6707 g_return_if_fail (self != NULL);
6708 g_return_if_fail (cl != NULL);
6709 _tmp0_ = vala_get_ccode_get_value_function ((ValaCodeNode*) cl);
6710 _tmp1_ = _tmp0_;
6711 _tmp2_ = vala_ccode_function_new (_tmp1_, "gpointer");
6712 _tmp3_ = _tmp2_;
6713 _g_free0 (_tmp1_);
6714 function = _tmp3_;
6715 _tmp4_ = function;
6716 _tmp5_ = vala_ccode_parameter_new ("value", "const GValue*");
6717 _tmp6_ = _tmp5_;
6718 vala_ccode_function_add_parameter (_tmp4_, _tmp6_);
6719 _vala_ccode_node_unref0 (_tmp6_);
6720 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
6721 ValaCCodeFunction* _tmp7_;
6722 _tmp7_ = function;
6723 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp7_, VALA_CCODE_MODIFIERS_STATIC);
6724 } else {
6725 gboolean _tmp8_ = FALSE;
6726 ValaCodeContext* _tmp9_;
6727 ValaCodeContext* _tmp10_;
6728 gboolean _tmp11_;
6729 gboolean _tmp12_;
6730 _tmp9_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
6731 _tmp10_ = _tmp9_;
6732 _tmp11_ = vala_code_context_get_hide_internal (_tmp10_);
6733 _tmp12_ = _tmp11_;
6734 if (_tmp12_) {
6735 _tmp8_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
6736 } else {
6737 _tmp8_ = FALSE;
6738 }
6739 if (_tmp8_) {
6740 ValaCCodeFunction* _tmp13_;
6741 _tmp13_ = function;
6742 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp13_, VALA_CCODE_MODIFIERS_INTERNAL);
6743 }
6744 }
6745 _tmp14_ = vala_ccode_identifier_new ("value");
6746 _tmp15_ = _tmp14_;
6747 _tmp16_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp15_, "data[0]");
6748 _tmp17_ = _tmp16_;
6749 _tmp18_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp17_, "v_pointer", FALSE);
6750 _tmp19_ = _tmp18_;
6751 _vala_ccode_node_unref0 (_tmp17_);
6752 _vala_ccode_node_unref0 (_tmp15_);
6753 vpointer = _tmp19_;
6754 _tmp20_ = function;
6755 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp20_);
6756 _tmp21_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
6757 _tmp22_ = _tmp21_;
6758 _tmp23_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp22_);
6759 _tmp24_ = _tmp23_;
6760 _vala_ccode_node_unref0 (_tmp22_);
6761 ccall_typecheck = _tmp24_;
6762 _tmp25_ = vala_ccode_identifier_new ("value");
6763 _tmp26_ = _tmp25_;
6764 vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp26_);
6765 _vala_ccode_node_unref0 (_tmp26_);
6766 _tmp27_ = vala_get_ccode_type_id ((ValaCodeNode*) cl);
6767 _tmp28_ = _tmp27_;
6768 _tmp29_ = vala_ccode_identifier_new (_tmp28_);
6769 _tmp30_ = _tmp29_;
6770 vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp30_);
6771 _vala_ccode_node_unref0 (_tmp30_);
6772 _g_free0 (_tmp28_);
6773 _tmp31_ = vala_ccode_identifier_new ("g_return_val_if_fail");
6774 _tmp32_ = _tmp31_;
6775 _tmp33_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp32_);
6776 _tmp34_ = _tmp33_;
6777 _vala_ccode_node_unref0 (_tmp32_);
6778 ccall = _tmp34_;
6779 vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecheck);
6780 _tmp35_ = vala_ccode_constant_new ("NULL");
6781 _tmp36_ = _tmp35_;
6782 vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp36_);
6783 _vala_ccode_node_unref0 (_tmp36_);
6784 _tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6785 _tmp38_ = _tmp37_;
6786 vala_ccode_function_add_expression (_tmp38_, (ValaCCodeExpression*) ccall);
6787 _tmp39_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
6788 _tmp40_ = _tmp39_;
6789 vala_ccode_function_add_return (_tmp40_, (ValaCCodeExpression*) vpointer);
6790 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
6791 _tmp41_ = ((ValaCCodeBaseModule*) self)->cfile;
6792 _tmp42_ = function;
6793 vala_ccode_file_add_function (_tmp41_, _tmp42_);
6794 _vala_ccode_node_unref0 (ccall);
6795 _vala_ccode_node_unref0 (ccall_typecheck);
6796 _vala_ccode_node_unref0 (vpointer);
6797 _vala_ccode_node_unref0 (function);
6798 }
6799
6800 static void
vala_gtype_module_begin_base_init_function(ValaGTypeModule * self,ValaClass * cl)6801 vala_gtype_module_begin_base_init_function (ValaGTypeModule* self,
6802 ValaClass* cl)
6803 {
6804 ValaCCodeBaseModuleEmitContext* _tmp0_;
6805 ValaCCodeFunction* base_init = NULL;
6806 gchar* _tmp1_;
6807 gchar* _tmp2_;
6808 gchar* _tmp3_;
6809 gchar* _tmp4_;
6810 ValaCCodeFunction* _tmp5_;
6811 ValaCCodeFunction* _tmp6_;
6812 gchar* _tmp7_;
6813 gchar* _tmp8_;
6814 gchar* _tmp9_;
6815 gchar* _tmp10_;
6816 ValaCCodeParameter* _tmp11_;
6817 ValaCCodeParameter* _tmp12_;
6818 g_return_if_fail (self != NULL);
6819 g_return_if_fail (cl != NULL);
6820 _tmp0_ = ((ValaCCodeBaseModule*) self)->base_init_context;
6821 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
6822 _tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
6823 _tmp2_ = _tmp1_;
6824 _tmp3_ = g_strdup_printf ("%s_base_init", _tmp2_);
6825 _tmp4_ = _tmp3_;
6826 _tmp5_ = vala_ccode_function_new (_tmp4_, "void");
6827 _tmp6_ = _tmp5_;
6828 _g_free0 (_tmp4_);
6829 _g_free0 (_tmp2_);
6830 base_init = _tmp6_;
6831 _tmp7_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
6832 _tmp8_ = _tmp7_;
6833 _tmp9_ = g_strdup_printf ("%s *", _tmp8_);
6834 _tmp10_ = _tmp9_;
6835 _tmp11_ = vala_ccode_parameter_new ("klass", _tmp10_);
6836 _tmp12_ = _tmp11_;
6837 vala_ccode_function_add_parameter (base_init, _tmp12_);
6838 _vala_ccode_node_unref0 (_tmp12_);
6839 _g_free0 (_tmp10_);
6840 _g_free0 (_tmp8_);
6841 vala_ccode_node_set_modifiers ((ValaCCodeNode*) base_init, VALA_CCODE_MODIFIERS_STATIC);
6842 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, base_init);
6843 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
6844 _vala_ccode_node_unref0 (base_init);
6845 }
6846
6847 static void
vala_gtype_module_add_base_init_function(ValaGTypeModule * self,ValaClass * cl)6848 vala_gtype_module_add_base_init_function (ValaGTypeModule* self,
6849 ValaClass* cl)
6850 {
6851 ValaCCodeFile* _tmp0_;
6852 ValaCCodeBaseModuleEmitContext* _tmp1_;
6853 ValaCCodeFunction* _tmp2_;
6854 g_return_if_fail (self != NULL);
6855 g_return_if_fail (cl != NULL);
6856 _tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
6857 _tmp1_ = ((ValaCCodeBaseModule*) self)->base_init_context;
6858 _tmp2_ = _tmp1_->ccode;
6859 vala_ccode_file_add_function (_tmp0_, _tmp2_);
6860 }
6861
6862 static void
vala_gtype_module_real_generate_class_init(ValaGTypeModule * self,ValaClass * cl)6863 vala_gtype_module_real_generate_class_init (ValaGTypeModule* self,
6864 ValaClass* cl)
6865 {
6866 g_return_if_fail (cl != NULL);
6867 }
6868
6869 void
vala_gtype_module_generate_class_init(ValaGTypeModule * self,ValaClass * cl)6870 vala_gtype_module_generate_class_init (ValaGTypeModule* self,
6871 ValaClass* cl)
6872 {
6873 g_return_if_fail (self != NULL);
6874 VALA_GTYPE_MODULE_GET_CLASS (self)->generate_class_init (self, cl);
6875 }
6876
6877 static void
vala_gtype_module_real_end_instance_init(ValaGTypeModule * self,ValaClass * cl)6878 vala_gtype_module_real_end_instance_init (ValaGTypeModule* self,
6879 ValaClass* cl)
6880 {
6881 g_return_if_fail (cl != NULL);
6882 }
6883
6884 void
vala_gtype_module_end_instance_init(ValaGTypeModule * self,ValaClass * cl)6885 vala_gtype_module_end_instance_init (ValaGTypeModule* self,
6886 ValaClass* cl)
6887 {
6888 g_return_if_fail (self != NULL);
6889 VALA_GTYPE_MODULE_GET_CLASS (self)->end_instance_init (self, cl);
6890 }
6891
6892 static void
vala_gtype_module_begin_class_init_function(ValaGTypeModule * self,ValaClass * cl)6893 vala_gtype_module_begin_class_init_function (ValaGTypeModule* self,
6894 ValaClass* cl)
6895 {
6896 ValaCCodeBaseModuleEmitContext* _tmp0_;
6897 ValaCCodeFunction* func = NULL;
6898 gchar* _tmp1_;
6899 gchar* _tmp2_;
6900 gchar* _tmp3_;
6901 gchar* _tmp4_;
6902 ValaCCodeFunction* _tmp5_;
6903 ValaCCodeFunction* _tmp6_;
6904 ValaCCodeFunction* _tmp7_;
6905 gchar* _tmp8_;
6906 gchar* _tmp9_;
6907 gchar* _tmp10_;
6908 gchar* _tmp11_;
6909 ValaCCodeParameter* _tmp12_;
6910 ValaCCodeParameter* _tmp13_;
6911 ValaCCodeFunction* _tmp14_;
6912 ValaCCodeParameter* _tmp15_;
6913 ValaCCodeParameter* _tmp16_;
6914 ValaCCodeFunction* _tmp17_;
6915 ValaCCodeFunctionCall* ccall = NULL;
6916 ValaCCodeDeclaration* parent_decl = NULL;
6917 ValaCCodeDeclaration* _tmp18_;
6918 ValaCCodeVariableDeclarator* parent_var_decl = NULL;
6919 gchar* _tmp19_;
6920 gchar* _tmp20_;
6921 gchar* _tmp21_;
6922 gchar* _tmp22_;
6923 ValaCCodeVariableDeclarator* _tmp23_;
6924 ValaCCodeVariableDeclarator* _tmp24_;
6925 ValaCCodeVariableDeclarator* _tmp25_;
6926 ValaCCodeConstant* _tmp26_;
6927 ValaCCodeConstant* _tmp27_;
6928 ValaCCodeDeclaration* _tmp28_;
6929 ValaCCodeVariableDeclarator* _tmp29_;
6930 ValaCCodeDeclaration* _tmp30_;
6931 ValaCCodeFile* _tmp31_;
6932 ValaCCodeDeclaration* _tmp32_;
6933 ValaCCodeFunction* _tmp33_;
6934 ValaCCodeIdentifier* _tmp34_;
6935 ValaCCodeIdentifier* _tmp35_;
6936 ValaCCodeFunctionCall* _tmp36_;
6937 ValaCCodeFunctionCall* _tmp37_;
6938 ValaCCodeIdentifier* _tmp38_;
6939 ValaCCodeIdentifier* _tmp39_;
6940 ValaCCodeAssignment* parent_assignment = NULL;
6941 gchar* _tmp40_;
6942 gchar* _tmp41_;
6943 gchar* _tmp42_;
6944 gchar* _tmp43_;
6945 ValaCCodeIdentifier* _tmp44_;
6946 ValaCCodeIdentifier* _tmp45_;
6947 ValaCCodeFunctionCall* _tmp46_;
6948 ValaCCodeAssignment* _tmp47_;
6949 ValaCCodeAssignment* _tmp48_;
6950 ValaCCodeFunction* _tmp49_;
6951 ValaCCodeFunction* _tmp50_;
6952 ValaCCodeAssignment* _tmp51_;
6953 gboolean _tmp52_ = FALSE;
6954 gboolean _tmp53_ = FALSE;
6955 gboolean _tmp54_;
6956 gboolean _tmp55_;
6957 gboolean _tmp95_ = FALSE;
6958 gboolean _tmp96_;
6959 gboolean _tmp97_;
6960 gboolean _tmp326_;
6961 gboolean _tmp327_;
6962 g_return_if_fail (self != NULL);
6963 g_return_if_fail (cl != NULL);
6964 _tmp0_ = ((ValaCCodeBaseModule*) self)->class_init_context;
6965 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
6966 _tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
6967 _tmp2_ = _tmp1_;
6968 _tmp3_ = g_strdup_printf ("%s_class_init", _tmp2_);
6969 _tmp4_ = _tmp3_;
6970 _tmp5_ = vala_ccode_function_new (_tmp4_, "void");
6971 _tmp6_ = _tmp5_;
6972 _g_free0 (_tmp4_);
6973 _g_free0 (_tmp2_);
6974 func = _tmp6_;
6975 _tmp7_ = func;
6976 _tmp8_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
6977 _tmp9_ = _tmp8_;
6978 _tmp10_ = g_strdup_printf ("%s *", _tmp9_);
6979 _tmp11_ = _tmp10_;
6980 _tmp12_ = vala_ccode_parameter_new ("klass", _tmp11_);
6981 _tmp13_ = _tmp12_;
6982 vala_ccode_function_add_parameter (_tmp7_, _tmp13_);
6983 _vala_ccode_node_unref0 (_tmp13_);
6984 _g_free0 (_tmp11_);
6985 _g_free0 (_tmp9_);
6986 _tmp14_ = func;
6987 _tmp15_ = vala_ccode_parameter_new ("klass_data", "gpointer");
6988 _tmp16_ = _tmp15_;
6989 vala_ccode_function_add_parameter (_tmp14_, _tmp16_);
6990 _vala_ccode_node_unref0 (_tmp16_);
6991 _tmp17_ = func;
6992 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp17_, VALA_CCODE_MODIFIERS_STATIC);
6993 _tmp18_ = vala_ccode_declaration_new ("gpointer");
6994 parent_decl = _tmp18_;
6995 _tmp19_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
6996 _tmp20_ = _tmp19_;
6997 _tmp21_ = g_strdup_printf ("%s_parent_class", _tmp20_);
6998 _tmp22_ = _tmp21_;
6999 _tmp23_ = vala_ccode_variable_declarator_new (_tmp22_, NULL, NULL);
7000 _tmp24_ = _tmp23_;
7001 _g_free0 (_tmp22_);
7002 _g_free0 (_tmp20_);
7003 parent_var_decl = _tmp24_;
7004 _tmp25_ = parent_var_decl;
7005 _tmp26_ = vala_ccode_constant_new ("NULL");
7006 _tmp27_ = _tmp26_;
7007 vala_ccode_variable_declarator_set_initializer (_tmp25_, (ValaCCodeExpression*) _tmp27_);
7008 _vala_ccode_node_unref0 (_tmp27_);
7009 _tmp28_ = parent_decl;
7010 _tmp29_ = parent_var_decl;
7011 vala_ccode_declaration_add_declarator (_tmp28_, (ValaCCodeDeclarator*) _tmp29_);
7012 _tmp30_ = parent_decl;
7013 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp30_, VALA_CCODE_MODIFIERS_STATIC);
7014 _tmp31_ = ((ValaCCodeBaseModule*) self)->cfile;
7015 _tmp32_ = parent_decl;
7016 vala_ccode_file_add_type_member_declaration (_tmp31_, (ValaCCodeNode*) _tmp32_);
7017 _tmp33_ = func;
7018 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp33_);
7019 _tmp34_ = vala_ccode_identifier_new ("g_type_class_peek_parent");
7020 _tmp35_ = _tmp34_;
7021 _tmp36_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp35_);
7022 _vala_ccode_node_unref0 (ccall);
7023 ccall = _tmp36_;
7024 _vala_ccode_node_unref0 (_tmp35_);
7025 _tmp37_ = ccall;
7026 _tmp38_ = vala_ccode_identifier_new ("klass");
7027 _tmp39_ = _tmp38_;
7028 vala_ccode_function_call_add_argument (_tmp37_, (ValaCCodeExpression*) _tmp39_);
7029 _vala_ccode_node_unref0 (_tmp39_);
7030 _tmp40_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
7031 _tmp41_ = _tmp40_;
7032 _tmp42_ = g_strdup_printf ("%s_parent_class", _tmp41_);
7033 _tmp43_ = _tmp42_;
7034 _tmp44_ = vala_ccode_identifier_new (_tmp43_);
7035 _tmp45_ = _tmp44_;
7036 _tmp46_ = ccall;
7037 _tmp47_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp45_, (ValaCCodeExpression*) _tmp46_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
7038 _tmp48_ = _tmp47_;
7039 _vala_ccode_node_unref0 (_tmp45_);
7040 _g_free0 (_tmp43_);
7041 _g_free0 (_tmp41_);
7042 parent_assignment = _tmp48_;
7043 _tmp49_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7044 _tmp50_ = _tmp49_;
7045 _tmp51_ = parent_assignment;
7046 vala_ccode_function_add_expression (_tmp50_, (ValaCCodeExpression*) _tmp51_);
7047 _tmp54_ = vala_class_get_is_compact (cl);
7048 _tmp55_ = _tmp54_;
7049 if (!_tmp55_) {
7050 ValaTypeSymbol* _tmp56_;
7051 _tmp56_ = ((ValaCCodeBaseModule*) self)->gobject_type;
7052 _tmp53_ = !vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, _tmp56_);
7053 } else {
7054 _tmp53_ = FALSE;
7055 }
7056 if (_tmp53_) {
7057 gboolean _tmp57_ = FALSE;
7058 gboolean _tmp58_ = FALSE;
7059 ValaList* _tmp59_;
7060 gint _tmp60_;
7061 gint _tmp61_;
7062 _tmp59_ = vala_object_type_symbol_get_fields ((ValaObjectTypeSymbol*) cl);
7063 _tmp60_ = vala_collection_get_size ((ValaCollection*) _tmp59_);
7064 _tmp61_ = _tmp60_;
7065 if (_tmp61_ > 0) {
7066 _tmp58_ = TRUE;
7067 } else {
7068 ValaDestructor* _tmp62_;
7069 ValaDestructor* _tmp63_;
7070 _tmp62_ = vala_class_get_destructor (cl);
7071 _tmp63_ = _tmp62_;
7072 _tmp58_ = _tmp63_ != NULL;
7073 }
7074 if (_tmp58_) {
7075 _tmp57_ = TRUE;
7076 } else {
7077 _tmp57_ = vala_class_is_fundamental (cl);
7078 }
7079 _tmp52_ = _tmp57_;
7080 } else {
7081 _tmp52_ = FALSE;
7082 }
7083 if (_tmp52_) {
7084 ValaClass* fundamental_class = NULL;
7085 ValaClass* _tmp64_;
7086 ValaCCodeCastExpression* ccast = NULL;
7087 ValaCCodeIdentifier* _tmp72_;
7088 ValaCCodeIdentifier* _tmp73_;
7089 ValaClass* _tmp74_;
7090 gchar* _tmp75_;
7091 gchar* _tmp76_;
7092 gchar* _tmp77_;
7093 gchar* _tmp78_;
7094 ValaCCodeCastExpression* _tmp79_;
7095 ValaCCodeCastExpression* _tmp80_;
7096 ValaCCodeAssignment* finalize_assignment = NULL;
7097 ValaCCodeCastExpression* _tmp81_;
7098 ValaCCodeMemberAccess* _tmp82_;
7099 ValaCCodeMemberAccess* _tmp83_;
7100 gchar* _tmp84_;
7101 gchar* _tmp85_;
7102 gchar* _tmp86_;
7103 gchar* _tmp87_;
7104 ValaCCodeIdentifier* _tmp88_;
7105 ValaCCodeIdentifier* _tmp89_;
7106 ValaCCodeAssignment* _tmp90_;
7107 ValaCCodeAssignment* _tmp91_;
7108 ValaCCodeFunction* _tmp92_;
7109 ValaCCodeFunction* _tmp93_;
7110 ValaCCodeAssignment* _tmp94_;
7111 _tmp64_ = _vala_code_node_ref0 (cl);
7112 fundamental_class = _tmp64_;
7113 while (TRUE) {
7114 ValaClass* _tmp65_;
7115 ValaClass* _tmp66_;
7116 ValaClass* _tmp67_;
7117 ValaClass* _tmp68_;
7118 ValaClass* _tmp69_;
7119 ValaClass* _tmp70_;
7120 ValaClass* _tmp71_;
7121 _tmp65_ = fundamental_class;
7122 _tmp66_ = vala_class_get_base_class (_tmp65_);
7123 _tmp67_ = _tmp66_;
7124 if (!(_tmp67_ != NULL)) {
7125 break;
7126 }
7127 _tmp68_ = fundamental_class;
7128 _tmp69_ = vala_class_get_base_class (_tmp68_);
7129 _tmp70_ = _tmp69_;
7130 _tmp71_ = _vala_code_node_ref0 (_tmp70_);
7131 _vala_code_node_unref0 (fundamental_class);
7132 fundamental_class = _tmp71_;
7133 }
7134 _tmp72_ = vala_ccode_identifier_new ("klass");
7135 _tmp73_ = _tmp72_;
7136 _tmp74_ = fundamental_class;
7137 _tmp75_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) _tmp74_);
7138 _tmp76_ = _tmp75_;
7139 _tmp77_ = g_strdup_printf ("%s *", _tmp76_);
7140 _tmp78_ = _tmp77_;
7141 _tmp79_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp73_, _tmp78_);
7142 _tmp80_ = _tmp79_;
7143 _g_free0 (_tmp78_);
7144 _g_free0 (_tmp76_);
7145 _vala_ccode_node_unref0 (_tmp73_);
7146 ccast = _tmp80_;
7147 _tmp81_ = ccast;
7148 _tmp82_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp81_, "finalize");
7149 _tmp83_ = _tmp82_;
7150 _tmp84_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) cl);
7151 _tmp85_ = _tmp84_;
7152 _tmp86_ = g_strdup_printf ("%sfinalize", _tmp85_);
7153 _tmp87_ = _tmp86_;
7154 _tmp88_ = vala_ccode_identifier_new (_tmp87_);
7155 _tmp89_ = _tmp88_;
7156 _tmp90_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp83_, (ValaCCodeExpression*) _tmp89_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
7157 _tmp91_ = _tmp90_;
7158 _vala_ccode_node_unref0 (_tmp89_);
7159 _g_free0 (_tmp87_);
7160 _g_free0 (_tmp85_);
7161 _vala_ccode_node_unref0 (_tmp83_);
7162 finalize_assignment = _tmp91_;
7163 _tmp92_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7164 _tmp93_ = _tmp92_;
7165 _tmp94_ = finalize_assignment;
7166 vala_ccode_function_add_expression (_tmp93_, (ValaCCodeExpression*) _tmp94_);
7167 _vala_ccode_node_unref0 (finalize_assignment);
7168 _vala_ccode_node_unref0 (ccast);
7169 _vala_code_node_unref0 (fundamental_class);
7170 }
7171 _tmp96_ = vala_class_get_has_private_fields (cl);
7172 _tmp97_ = _tmp96_;
7173 if (_tmp97_) {
7174 _tmp95_ = TRUE;
7175 } else {
7176 _tmp95_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
7177 }
7178 if (_tmp95_) {
7179 ValaCCodeIdentifier* _tmp98_;
7180 ValaCCodeIdentifier* _tmp99_;
7181 ValaCCodeFunctionCall* _tmp100_;
7182 ValaCCodeFunctionCall* _tmp101_;
7183 ValaCCodeIdentifier* _tmp102_;
7184 ValaCCodeIdentifier* _tmp103_;
7185 ValaCCodeFunctionCall* _tmp104_;
7186 gchar* _tmp105_;
7187 gchar* _tmp106_;
7188 gchar* _tmp107_;
7189 gchar* _tmp108_;
7190 ValaCCodeIdentifier* _tmp109_;
7191 ValaCCodeIdentifier* _tmp110_;
7192 ValaCCodeFunction* _tmp111_;
7193 ValaCCodeFunction* _tmp112_;
7194 ValaCCodeFunctionCall* _tmp113_;
7195 _tmp98_ = vala_ccode_identifier_new ("g_type_class_adjust_private_offset");
7196 _tmp99_ = _tmp98_;
7197 _tmp100_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp99_);
7198 _vala_ccode_node_unref0 (ccall);
7199 ccall = _tmp100_;
7200 _vala_ccode_node_unref0 (_tmp99_);
7201 _tmp101_ = ccall;
7202 _tmp102_ = vala_ccode_identifier_new ("klass");
7203 _tmp103_ = _tmp102_;
7204 vala_ccode_function_call_add_argument (_tmp101_, (ValaCCodeExpression*) _tmp103_);
7205 _vala_ccode_node_unref0 (_tmp103_);
7206 _tmp104_ = ccall;
7207 _tmp105_ = vala_get_ccode_name ((ValaCodeNode*) cl);
7208 _tmp106_ = _tmp105_;
7209 _tmp107_ = g_strdup_printf ("&%s_private_offset", _tmp106_);
7210 _tmp108_ = _tmp107_;
7211 _tmp109_ = vala_ccode_identifier_new (_tmp108_);
7212 _tmp110_ = _tmp109_;
7213 vala_ccode_function_call_add_argument (_tmp104_, (ValaCCodeExpression*) _tmp110_);
7214 _vala_ccode_node_unref0 (_tmp110_);
7215 _g_free0 (_tmp108_);
7216 _g_free0 (_tmp106_);
7217 _tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7218 _tmp112_ = _tmp111_;
7219 _tmp113_ = ccall;
7220 vala_ccode_function_add_expression (_tmp112_, (ValaCCodeExpression*) _tmp113_);
7221 }
7222 {
7223 ValaList* _m_list = NULL;
7224 ValaList* _tmp114_;
7225 ValaList* _tmp115_;
7226 gint _m_size = 0;
7227 ValaList* _tmp116_;
7228 gint _tmp117_;
7229 gint _tmp118_;
7230 gint _m_index = 0;
7231 _tmp114_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) cl);
7232 _tmp115_ = _vala_iterable_ref0 (_tmp114_);
7233 _m_list = _tmp115_;
7234 _tmp116_ = _m_list;
7235 _tmp117_ = vala_collection_get_size ((ValaCollection*) _tmp116_);
7236 _tmp118_ = _tmp117_;
7237 _m_size = _tmp118_;
7238 _m_index = -1;
7239 while (TRUE) {
7240 gint _tmp119_;
7241 gint _tmp120_;
7242 ValaMethod* m = NULL;
7243 ValaList* _tmp121_;
7244 gpointer _tmp122_;
7245 ValaMethod* _tmp123_;
7246 ValaMethod* _tmp124_;
7247 ValaMethod* _tmp125_;
7248 ValaObjectTypeSymbol* base_type = NULL;
7249 ValaMethod* _tmp126_;
7250 ValaMethod* _tmp127_;
7251 ValaMethod* _tmp128_;
7252 ValaSymbol* _tmp129_;
7253 ValaSymbol* _tmp130_;
7254 ValaObjectTypeSymbol* _tmp131_;
7255 gboolean _tmp132_ = FALSE;
7256 ValaMethod* _tmp133_;
7257 gboolean _tmp134_;
7258 gboolean _tmp135_;
7259 _m_index = _m_index + 1;
7260 _tmp119_ = _m_index;
7261 _tmp120_ = _m_size;
7262 if (!(_tmp119_ < _tmp120_)) {
7263 break;
7264 }
7265 _tmp121_ = _m_list;
7266 _tmp122_ = vala_list_get (_tmp121_, _m_index);
7267 m = (ValaMethod*) _tmp122_;
7268 _tmp123_ = m;
7269 _tmp124_ = vala_method_get_base_method (_tmp123_);
7270 _tmp125_ = _tmp124_;
7271 if (_tmp125_ == NULL) {
7272 _vala_code_node_unref0 (m);
7273 continue;
7274 }
7275 _tmp126_ = m;
7276 _tmp127_ = vala_method_get_base_method (_tmp126_);
7277 _tmp128_ = _tmp127_;
7278 _tmp129_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp128_);
7279 _tmp130_ = _tmp129_;
7280 _tmp131_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp130_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
7281 base_type = _tmp131_;
7282 _tmp133_ = m;
7283 _tmp134_ = vala_method_get_is_abstract (_tmp133_);
7284 _tmp135_ = _tmp134_;
7285 if (!_tmp135_) {
7286 _tmp132_ = TRUE;
7287 } else {
7288 ValaMethod* _tmp136_;
7289 gboolean _tmp137_;
7290 gboolean _tmp138_;
7291 _tmp136_ = m;
7292 _tmp137_ = vala_method_get_coroutine (_tmp136_);
7293 _tmp138_ = _tmp137_;
7294 _tmp132_ = !_tmp138_;
7295 }
7296 if (_tmp132_) {
7297 ValaMethod* _tmp139_;
7298 ValaMethod* _tmp140_;
7299 ValaMethod* _tmp141_;
7300 ValaCCodeFile* _tmp142_;
7301 ValaCCodeExpression* cfunc = NULL;
7302 ValaMethod* _tmp143_;
7303 gchar* _tmp144_;
7304 gchar* _tmp145_;
7305 ValaCCodeIdentifier* _tmp146_;
7306 ValaCCodeExpression* _tmp147_;
7307 gint _tmp148_ = 0;
7308 ValaMethod* _tmp149_;
7309 gboolean _tmp150_;
7310 gboolean _tmp151_;
7311 ValaMethod* _tmp152_;
7312 ValaMethod* _tmp153_;
7313 ValaMethod* _tmp154_;
7314 ValaCCodeExpression* _tmp155_;
7315 ValaObjectTypeSymbol* _tmp156_;
7316 ValaCCodeExpression* _tmp157_;
7317 ValaCCodeCastExpression* ccast = NULL;
7318 ValaCCodeIdentifier* _tmp158_;
7319 ValaCCodeIdentifier* _tmp159_;
7320 ValaObjectTypeSymbol* _tmp160_;
7321 gchar* _tmp161_;
7322 gchar* _tmp162_;
7323 gchar* _tmp163_;
7324 gchar* _tmp164_;
7325 ValaCCodeCastExpression* _tmp165_;
7326 ValaCCodeCastExpression* _tmp166_;
7327 ValaCCodeFunction* _tmp167_;
7328 ValaCCodeFunction* _tmp168_;
7329 ValaCCodeCastExpression* _tmp169_;
7330 ValaMethod* _tmp170_;
7331 ValaMethod* _tmp171_;
7332 ValaMethod* _tmp172_;
7333 gchar* _tmp173_;
7334 gchar* _tmp174_;
7335 ValaCCodeMemberAccess* _tmp175_;
7336 ValaCCodeMemberAccess* _tmp176_;
7337 ValaCCodeExpression* _tmp177_;
7338 ValaMethod* _tmp178_;
7339 gboolean _tmp179_;
7340 gboolean _tmp180_;
7341 _tmp139_ = m;
7342 _tmp140_ = vala_method_get_base_method (_tmp139_);
7343 _tmp141_ = _tmp140_;
7344 _tmp142_ = ((ValaCCodeBaseModule*) self)->cfile;
7345 vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp141_, _tmp142_);
7346 _tmp143_ = m;
7347 _tmp144_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp143_);
7348 _tmp145_ = _tmp144_;
7349 _tmp146_ = vala_ccode_identifier_new (_tmp145_);
7350 _tmp147_ = (ValaCCodeExpression*) _tmp146_;
7351 _g_free0 (_tmp145_);
7352 cfunc = _tmp147_;
7353 _tmp149_ = m;
7354 _tmp150_ = vala_method_get_coroutine (_tmp149_);
7355 _tmp151_ = _tmp150_;
7356 if (_tmp151_) {
7357 _tmp148_ = 1;
7358 } else {
7359 _tmp148_ = 3;
7360 }
7361 _tmp152_ = m;
7362 _tmp153_ = vala_method_get_base_method (_tmp152_);
7363 _tmp154_ = _tmp153_;
7364 _tmp155_ = cfunc;
7365 _tmp156_ = base_type;
7366 _tmp157_ = vala_gtype_module_cast_method_pointer (self, _tmp154_, _tmp155_, _tmp156_, _tmp148_);
7367 _vala_ccode_node_unref0 (cfunc);
7368 cfunc = _tmp157_;
7369 _tmp158_ = vala_ccode_identifier_new ("klass");
7370 _tmp159_ = _tmp158_;
7371 _tmp160_ = base_type;
7372 _tmp161_ = vala_get_ccode_type_name (_tmp160_);
7373 _tmp162_ = _tmp161_;
7374 _tmp163_ = g_strdup_printf ("%s *", _tmp162_);
7375 _tmp164_ = _tmp163_;
7376 _tmp165_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp159_, _tmp164_);
7377 _tmp166_ = _tmp165_;
7378 _g_free0 (_tmp164_);
7379 _g_free0 (_tmp162_);
7380 _vala_ccode_node_unref0 (_tmp159_);
7381 ccast = _tmp166_;
7382 _tmp167_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7383 _tmp168_ = _tmp167_;
7384 _tmp169_ = ccast;
7385 _tmp170_ = m;
7386 _tmp171_ = vala_method_get_base_method (_tmp170_);
7387 _tmp172_ = _tmp171_;
7388 _tmp173_ = vala_get_ccode_vfunc_name (_tmp172_);
7389 _tmp174_ = _tmp173_;
7390 _tmp175_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp169_, _tmp174_);
7391 _tmp176_ = _tmp175_;
7392 _tmp177_ = cfunc;
7393 vala_ccode_function_add_assignment (_tmp168_, (ValaCCodeExpression*) _tmp176_, _tmp177_);
7394 _vala_ccode_node_unref0 (_tmp176_);
7395 _g_free0 (_tmp174_);
7396 _tmp178_ = m;
7397 _tmp179_ = vala_method_get_coroutine (_tmp178_);
7398 _tmp180_ = _tmp179_;
7399 if (_tmp180_) {
7400 ValaMethod* _tmp181_;
7401 gchar* _tmp182_;
7402 gchar* _tmp183_;
7403 ValaCCodeIdentifier* _tmp184_;
7404 ValaMethod* _tmp185_;
7405 ValaMethod* _tmp186_;
7406 ValaMethod* _tmp187_;
7407 ValaCCodeExpression* _tmp188_;
7408 ValaObjectTypeSymbol* _tmp189_;
7409 ValaCCodeExpression* _tmp190_;
7410 ValaCCodeFunction* _tmp191_;
7411 ValaCCodeFunction* _tmp192_;
7412 ValaCCodeCastExpression* _tmp193_;
7413 ValaMethod* _tmp194_;
7414 ValaMethod* _tmp195_;
7415 ValaMethod* _tmp196_;
7416 gchar* _tmp197_;
7417 gchar* _tmp198_;
7418 ValaCCodeMemberAccess* _tmp199_;
7419 ValaCCodeMemberAccess* _tmp200_;
7420 ValaCCodeExpression* _tmp201_;
7421 _tmp181_ = m;
7422 _tmp182_ = vala_get_ccode_finish_real_name (_tmp181_);
7423 _tmp183_ = _tmp182_;
7424 _tmp184_ = vala_ccode_identifier_new (_tmp183_);
7425 _vala_ccode_node_unref0 (cfunc);
7426 cfunc = (ValaCCodeExpression*) _tmp184_;
7427 _g_free0 (_tmp183_);
7428 _tmp185_ = m;
7429 _tmp186_ = vala_method_get_base_method (_tmp185_);
7430 _tmp187_ = _tmp186_;
7431 _tmp188_ = cfunc;
7432 _tmp189_ = base_type;
7433 _tmp190_ = vala_gtype_module_cast_method_pointer (self, _tmp187_, _tmp188_, _tmp189_, 2);
7434 _vala_ccode_node_unref0 (cfunc);
7435 cfunc = _tmp190_;
7436 _tmp191_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7437 _tmp192_ = _tmp191_;
7438 _tmp193_ = ccast;
7439 _tmp194_ = m;
7440 _tmp195_ = vala_method_get_base_method (_tmp194_);
7441 _tmp196_ = _tmp195_;
7442 _tmp197_ = vala_get_ccode_finish_vfunc_name (_tmp196_);
7443 _tmp198_ = _tmp197_;
7444 _tmp199_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp193_, _tmp198_);
7445 _tmp200_ = _tmp199_;
7446 _tmp201_ = cfunc;
7447 vala_ccode_function_add_assignment (_tmp192_, (ValaCCodeExpression*) _tmp200_, _tmp201_);
7448 _vala_ccode_node_unref0 (_tmp200_);
7449 _g_free0 (_tmp198_);
7450 }
7451 _vala_ccode_node_unref0 (ccast);
7452 _vala_ccode_node_unref0 (cfunc);
7453 }
7454 _vala_code_node_unref0 (base_type);
7455 _vala_code_node_unref0 (m);
7456 }
7457 _vala_iterable_unref0 (_m_list);
7458 }
7459 {
7460 ValaList* _sig_list = NULL;
7461 ValaList* _tmp202_;
7462 ValaList* _tmp203_;
7463 gint _sig_size = 0;
7464 ValaList* _tmp204_;
7465 gint _tmp205_;
7466 gint _tmp206_;
7467 gint _sig_index = 0;
7468 _tmp202_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) cl);
7469 _tmp203_ = _vala_iterable_ref0 (_tmp202_);
7470 _sig_list = _tmp203_;
7471 _tmp204_ = _sig_list;
7472 _tmp205_ = vala_collection_get_size ((ValaCollection*) _tmp204_);
7473 _tmp206_ = _tmp205_;
7474 _sig_size = _tmp206_;
7475 _sig_index = -1;
7476 while (TRUE) {
7477 gint _tmp207_;
7478 gint _tmp208_;
7479 ValaSignal* sig = NULL;
7480 ValaList* _tmp209_;
7481 gpointer _tmp210_;
7482 ValaSignal* _tmp211_;
7483 ValaMethod* _tmp212_;
7484 ValaMethod* _tmp213_;
7485 ValaCCodeCastExpression* ccast = NULL;
7486 ValaCCodeIdentifier* _tmp214_;
7487 ValaCCodeIdentifier* _tmp215_;
7488 gchar* _tmp216_;
7489 gchar* _tmp217_;
7490 gchar* _tmp218_;
7491 gchar* _tmp219_;
7492 ValaCCodeCastExpression* _tmp220_;
7493 ValaCCodeCastExpression* _tmp221_;
7494 ValaCCodeFunction* _tmp222_;
7495 ValaCCodeFunction* _tmp223_;
7496 ValaCCodeCastExpression* _tmp224_;
7497 ValaSignal* _tmp225_;
7498 ValaMethod* _tmp226_;
7499 ValaMethod* _tmp227_;
7500 gchar* _tmp228_;
7501 gchar* _tmp229_;
7502 ValaCCodeMemberAccess* _tmp230_;
7503 ValaCCodeMemberAccess* _tmp231_;
7504 ValaSignal* _tmp232_;
7505 ValaMethod* _tmp233_;
7506 ValaMethod* _tmp234_;
7507 gchar* _tmp235_;
7508 gchar* _tmp236_;
7509 ValaCCodeIdentifier* _tmp237_;
7510 ValaCCodeIdentifier* _tmp238_;
7511 _sig_index = _sig_index + 1;
7512 _tmp207_ = _sig_index;
7513 _tmp208_ = _sig_size;
7514 if (!(_tmp207_ < _tmp208_)) {
7515 break;
7516 }
7517 _tmp209_ = _sig_list;
7518 _tmp210_ = vala_list_get (_tmp209_, _sig_index);
7519 sig = (ValaSignal*) _tmp210_;
7520 _tmp211_ = sig;
7521 _tmp212_ = vala_signal_get_default_handler (_tmp211_);
7522 _tmp213_ = _tmp212_;
7523 if (_tmp213_ == NULL) {
7524 _vala_code_node_unref0 (sig);
7525 continue;
7526 }
7527 _tmp214_ = vala_ccode_identifier_new ("klass");
7528 _tmp215_ = _tmp214_;
7529 _tmp216_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
7530 _tmp217_ = _tmp216_;
7531 _tmp218_ = g_strdup_printf ("%s *", _tmp217_);
7532 _tmp219_ = _tmp218_;
7533 _tmp220_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp215_, _tmp219_);
7534 _tmp221_ = _tmp220_;
7535 _g_free0 (_tmp219_);
7536 _g_free0 (_tmp217_);
7537 _vala_ccode_node_unref0 (_tmp215_);
7538 ccast = _tmp221_;
7539 _tmp222_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7540 _tmp223_ = _tmp222_;
7541 _tmp224_ = ccast;
7542 _tmp225_ = sig;
7543 _tmp226_ = vala_signal_get_default_handler (_tmp225_);
7544 _tmp227_ = _tmp226_;
7545 _tmp228_ = vala_get_ccode_vfunc_name (_tmp227_);
7546 _tmp229_ = _tmp228_;
7547 _tmp230_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp224_, _tmp229_);
7548 _tmp231_ = _tmp230_;
7549 _tmp232_ = sig;
7550 _tmp233_ = vala_signal_get_default_handler (_tmp232_);
7551 _tmp234_ = _tmp233_;
7552 _tmp235_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp234_);
7553 _tmp236_ = _tmp235_;
7554 _tmp237_ = vala_ccode_identifier_new (_tmp236_);
7555 _tmp238_ = _tmp237_;
7556 vala_ccode_function_add_assignment (_tmp223_, (ValaCCodeExpression*) _tmp231_, (ValaCCodeExpression*) _tmp238_);
7557 _vala_ccode_node_unref0 (_tmp238_);
7558 _g_free0 (_tmp236_);
7559 _vala_ccode_node_unref0 (_tmp231_);
7560 _g_free0 (_tmp229_);
7561 _vala_ccode_node_unref0 (ccast);
7562 _vala_code_node_unref0 (sig);
7563 }
7564 _vala_iterable_unref0 (_sig_list);
7565 }
7566 {
7567 ValaList* _prop_list = NULL;
7568 ValaList* _tmp239_;
7569 ValaList* _tmp240_;
7570 gint _prop_size = 0;
7571 ValaList* _tmp241_;
7572 gint _tmp242_;
7573 gint _tmp243_;
7574 gint _prop_index = 0;
7575 _tmp239_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
7576 _tmp240_ = _vala_iterable_ref0 (_tmp239_);
7577 _prop_list = _tmp240_;
7578 _tmp241_ = _prop_list;
7579 _tmp242_ = vala_collection_get_size ((ValaCollection*) _tmp241_);
7580 _tmp243_ = _tmp242_;
7581 _prop_size = _tmp243_;
7582 _prop_index = -1;
7583 while (TRUE) {
7584 gint _tmp244_;
7585 gint _tmp245_;
7586 ValaProperty* prop = NULL;
7587 ValaList* _tmp246_;
7588 gpointer _tmp247_;
7589 ValaProperty* _tmp248_;
7590 ValaProperty* _tmp249_;
7591 ValaProperty* _tmp250_;
7592 ValaClass* base_type = NULL;
7593 ValaProperty* _tmp251_;
7594 ValaProperty* _tmp252_;
7595 ValaProperty* _tmp253_;
7596 ValaSymbol* _tmp254_;
7597 ValaSymbol* _tmp255_;
7598 ValaClass* _tmp256_;
7599 ValaCCodeFunctionCall* ccast = NULL;
7600 ValaClass* _tmp257_;
7601 gchar* _tmp258_;
7602 gchar* _tmp259_;
7603 ValaCCodeIdentifier* _tmp260_;
7604 ValaCCodeIdentifier* _tmp261_;
7605 ValaCCodeFunctionCall* _tmp262_;
7606 ValaCCodeFunctionCall* _tmp263_;
7607 ValaCCodeFunctionCall* _tmp264_;
7608 ValaCCodeIdentifier* _tmp265_;
7609 ValaCCodeIdentifier* _tmp266_;
7610 gboolean _tmp267_ = FALSE;
7611 ValaProperty* _tmp268_;
7612 ValaProperty* _tmp269_;
7613 ValaProperty* _tmp270_;
7614 _prop_index = _prop_index + 1;
7615 _tmp244_ = _prop_index;
7616 _tmp245_ = _prop_size;
7617 if (!(_tmp244_ < _tmp245_)) {
7618 break;
7619 }
7620 _tmp246_ = _prop_list;
7621 _tmp247_ = vala_list_get (_tmp246_, _prop_index);
7622 prop = (ValaProperty*) _tmp247_;
7623 _tmp248_ = prop;
7624 _tmp249_ = vala_property_get_base_property (_tmp248_);
7625 _tmp250_ = _tmp249_;
7626 if (_tmp250_ == NULL) {
7627 _vala_code_node_unref0 (prop);
7628 continue;
7629 }
7630 _tmp251_ = prop;
7631 _tmp252_ = vala_property_get_base_property (_tmp251_);
7632 _tmp253_ = _tmp252_;
7633 _tmp254_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp253_);
7634 _tmp255_ = _tmp254_;
7635 _tmp256_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp255_, VALA_TYPE_CLASS, ValaClass));
7636 base_type = _tmp256_;
7637 _tmp257_ = base_type;
7638 _tmp258_ = vala_get_ccode_class_type_function (_tmp257_);
7639 _tmp259_ = _tmp258_;
7640 _tmp260_ = vala_ccode_identifier_new (_tmp259_);
7641 _tmp261_ = _tmp260_;
7642 _tmp262_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp261_);
7643 _tmp263_ = _tmp262_;
7644 _vala_ccode_node_unref0 (_tmp261_);
7645 _g_free0 (_tmp259_);
7646 ccast = _tmp263_;
7647 _tmp264_ = ccast;
7648 _tmp265_ = vala_ccode_identifier_new ("klass");
7649 _tmp266_ = _tmp265_;
7650 vala_ccode_function_call_add_argument (_tmp264_, (ValaCCodeExpression*) _tmp266_);
7651 _vala_ccode_node_unref0 (_tmp266_);
7652 _tmp268_ = prop;
7653 _tmp269_ = vala_property_get_base_property (_tmp268_);
7654 _tmp270_ = _tmp269_;
7655 if (!vala_get_ccode_no_accessor_method (_tmp270_)) {
7656 ValaProperty* _tmp271_;
7657 ValaProperty* _tmp272_;
7658 ValaProperty* _tmp273_;
7659 _tmp271_ = prop;
7660 _tmp272_ = vala_property_get_base_property (_tmp271_);
7661 _tmp273_ = _tmp272_;
7662 _tmp267_ = !vala_get_ccode_concrete_accessor (_tmp273_);
7663 } else {
7664 _tmp267_ = FALSE;
7665 }
7666 if (_tmp267_) {
7667 ValaProperty* _tmp274_;
7668 ValaPropertyAccessor* _tmp275_;
7669 ValaPropertyAccessor* _tmp276_;
7670 ValaProperty* _tmp300_;
7671 ValaPropertyAccessor* _tmp301_;
7672 ValaPropertyAccessor* _tmp302_;
7673 _tmp274_ = prop;
7674 _tmp275_ = vala_property_get_get_accessor (_tmp274_);
7675 _tmp276_ = _tmp275_;
7676 if (_tmp276_ != NULL) {
7677 ValaProperty* _tmp277_;
7678 ValaProperty* _tmp278_;
7679 ValaProperty* _tmp279_;
7680 ValaPropertyAccessor* _tmp280_;
7681 ValaPropertyAccessor* _tmp281_;
7682 ValaCCodeFile* _tmp282_;
7683 gchar* cname = NULL;
7684 ValaProperty* _tmp283_;
7685 ValaPropertyAccessor* _tmp284_;
7686 ValaPropertyAccessor* _tmp285_;
7687 gchar* _tmp286_;
7688 ValaCCodeFunction* _tmp287_;
7689 ValaCCodeFunction* _tmp288_;
7690 ValaCCodeFunctionCall* _tmp289_;
7691 ValaProperty* _tmp290_;
7692 const gchar* _tmp291_;
7693 const gchar* _tmp292_;
7694 gchar* _tmp293_;
7695 gchar* _tmp294_;
7696 ValaCCodeMemberAccess* _tmp295_;
7697 ValaCCodeMemberAccess* _tmp296_;
7698 const gchar* _tmp297_;
7699 ValaCCodeIdentifier* _tmp298_;
7700 ValaCCodeIdentifier* _tmp299_;
7701 _tmp277_ = prop;
7702 _tmp278_ = vala_property_get_base_property (_tmp277_);
7703 _tmp279_ = _tmp278_;
7704 _tmp280_ = vala_property_get_get_accessor (_tmp279_);
7705 _tmp281_ = _tmp280_;
7706 _tmp282_ = ((ValaCCodeBaseModule*) self)->cfile;
7707 vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp281_, _tmp282_);
7708 _tmp283_ = prop;
7709 _tmp284_ = vala_property_get_get_accessor (_tmp283_);
7710 _tmp285_ = _tmp284_;
7711 _tmp286_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp285_);
7712 cname = _tmp286_;
7713 _tmp287_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7714 _tmp288_ = _tmp287_;
7715 _tmp289_ = ccast;
7716 _tmp290_ = prop;
7717 _tmp291_ = vala_symbol_get_name ((ValaSymbol*) _tmp290_);
7718 _tmp292_ = _tmp291_;
7719 _tmp293_ = g_strdup_printf ("get_%s", _tmp292_);
7720 _tmp294_ = _tmp293_;
7721 _tmp295_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp289_, _tmp294_);
7722 _tmp296_ = _tmp295_;
7723 _tmp297_ = cname;
7724 _tmp298_ = vala_ccode_identifier_new (_tmp297_);
7725 _tmp299_ = _tmp298_;
7726 vala_ccode_function_add_assignment (_tmp288_, (ValaCCodeExpression*) _tmp296_, (ValaCCodeExpression*) _tmp299_);
7727 _vala_ccode_node_unref0 (_tmp299_);
7728 _vala_ccode_node_unref0 (_tmp296_);
7729 _g_free0 (_tmp294_);
7730 _g_free0 (cname);
7731 }
7732 _tmp300_ = prop;
7733 _tmp301_ = vala_property_get_set_accessor (_tmp300_);
7734 _tmp302_ = _tmp301_;
7735 if (_tmp302_ != NULL) {
7736 ValaProperty* _tmp303_;
7737 ValaProperty* _tmp304_;
7738 ValaProperty* _tmp305_;
7739 ValaPropertyAccessor* _tmp306_;
7740 ValaPropertyAccessor* _tmp307_;
7741 ValaCCodeFile* _tmp308_;
7742 gchar* cname = NULL;
7743 ValaProperty* _tmp309_;
7744 ValaPropertyAccessor* _tmp310_;
7745 ValaPropertyAccessor* _tmp311_;
7746 gchar* _tmp312_;
7747 ValaCCodeFunction* _tmp313_;
7748 ValaCCodeFunction* _tmp314_;
7749 ValaCCodeFunctionCall* _tmp315_;
7750 ValaProperty* _tmp316_;
7751 const gchar* _tmp317_;
7752 const gchar* _tmp318_;
7753 gchar* _tmp319_;
7754 gchar* _tmp320_;
7755 ValaCCodeMemberAccess* _tmp321_;
7756 ValaCCodeMemberAccess* _tmp322_;
7757 const gchar* _tmp323_;
7758 ValaCCodeIdentifier* _tmp324_;
7759 ValaCCodeIdentifier* _tmp325_;
7760 _tmp303_ = prop;
7761 _tmp304_ = vala_property_get_base_property (_tmp303_);
7762 _tmp305_ = _tmp304_;
7763 _tmp306_ = vala_property_get_set_accessor (_tmp305_);
7764 _tmp307_ = _tmp306_;
7765 _tmp308_ = ((ValaCCodeBaseModule*) self)->cfile;
7766 vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp307_, _tmp308_);
7767 _tmp309_ = prop;
7768 _tmp310_ = vala_property_get_set_accessor (_tmp309_);
7769 _tmp311_ = _tmp310_;
7770 _tmp312_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp311_);
7771 cname = _tmp312_;
7772 _tmp313_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7773 _tmp314_ = _tmp313_;
7774 _tmp315_ = ccast;
7775 _tmp316_ = prop;
7776 _tmp317_ = vala_symbol_get_name ((ValaSymbol*) _tmp316_);
7777 _tmp318_ = _tmp317_;
7778 _tmp319_ = g_strdup_printf ("set_%s", _tmp318_);
7779 _tmp320_ = _tmp319_;
7780 _tmp321_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp315_, _tmp320_);
7781 _tmp322_ = _tmp321_;
7782 _tmp323_ = cname;
7783 _tmp324_ = vala_ccode_identifier_new (_tmp323_);
7784 _tmp325_ = _tmp324_;
7785 vala_ccode_function_add_assignment (_tmp314_, (ValaCCodeExpression*) _tmp322_, (ValaCCodeExpression*) _tmp325_);
7786 _vala_ccode_node_unref0 (_tmp325_);
7787 _vala_ccode_node_unref0 (_tmp322_);
7788 _g_free0 (_tmp320_);
7789 _g_free0 (cname);
7790 }
7791 }
7792 _vala_ccode_node_unref0 (ccast);
7793 _vala_code_node_unref0 (base_type);
7794 _vala_code_node_unref0 (prop);
7795 }
7796 _vala_iterable_unref0 (_prop_list);
7797 }
7798 vala_gtype_module_generate_class_init (self, cl);
7799 _tmp326_ = vala_class_get_is_compact (cl);
7800 _tmp327_ = _tmp326_;
7801 if (!_tmp327_) {
7802 {
7803 ValaList* _sig_list = NULL;
7804 ValaList* _tmp328_;
7805 ValaList* _tmp329_;
7806 gint _sig_size = 0;
7807 ValaList* _tmp330_;
7808 gint _tmp331_;
7809 gint _tmp332_;
7810 gint _sig_index = 0;
7811 _tmp328_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) cl);
7812 _tmp329_ = _vala_iterable_ref0 (_tmp328_);
7813 _sig_list = _tmp329_;
7814 _tmp330_ = _sig_list;
7815 _tmp331_ = vala_collection_get_size ((ValaCollection*) _tmp330_);
7816 _tmp332_ = _tmp331_;
7817 _sig_size = _tmp332_;
7818 _sig_index = -1;
7819 while (TRUE) {
7820 gint _tmp333_;
7821 gint _tmp334_;
7822 ValaSignal* sig = NULL;
7823 ValaList* _tmp335_;
7824 gpointer _tmp336_;
7825 ValaSignal* _tmp337_;
7826 ValaComment* _tmp338_;
7827 ValaComment* _tmp339_;
7828 ValaCCodeFunction* _tmp349_;
7829 ValaCCodeFunction* _tmp350_;
7830 ValaSignal* _tmp351_;
7831 ValaCCodeExpression* _tmp352_;
7832 ValaCCodeExpression* _tmp353_;
7833 _sig_index = _sig_index + 1;
7834 _tmp333_ = _sig_index;
7835 _tmp334_ = _sig_size;
7836 if (!(_tmp333_ < _tmp334_)) {
7837 break;
7838 }
7839 _tmp335_ = _sig_list;
7840 _tmp336_ = vala_list_get (_tmp335_, _sig_index);
7841 sig = (ValaSignal*) _tmp336_;
7842 _tmp337_ = sig;
7843 _tmp338_ = vala_symbol_get_comment ((ValaSymbol*) _tmp337_);
7844 _tmp339_ = _tmp338_;
7845 if (_tmp339_ != NULL) {
7846 ValaCCodeFunction* _tmp340_;
7847 ValaCCodeFunction* _tmp341_;
7848 ValaSignal* _tmp342_;
7849 ValaComment* _tmp343_;
7850 ValaComment* _tmp344_;
7851 const gchar* _tmp345_;
7852 const gchar* _tmp346_;
7853 ValaCCodeComment* _tmp347_;
7854 ValaCCodeComment* _tmp348_;
7855 _tmp340_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7856 _tmp341_ = _tmp340_;
7857 _tmp342_ = sig;
7858 _tmp343_ = vala_symbol_get_comment ((ValaSymbol*) _tmp342_);
7859 _tmp344_ = _tmp343_;
7860 _tmp345_ = vala_comment_get_content (_tmp344_);
7861 _tmp346_ = _tmp345_;
7862 _tmp347_ = vala_ccode_comment_new (_tmp346_);
7863 _tmp348_ = _tmp347_;
7864 vala_ccode_function_add_statement (_tmp341_, (ValaCCodeNode*) _tmp348_);
7865 _vala_ccode_node_unref0 (_tmp348_);
7866 }
7867 _tmp349_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7868 _tmp350_ = _tmp349_;
7869 _tmp351_ = sig;
7870 _tmp352_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, _tmp351_, (ValaObjectTypeSymbol*) cl);
7871 _tmp353_ = _tmp352_;
7872 vala_ccode_function_add_expression (_tmp350_, _tmp353_);
7873 _vala_ccode_node_unref0 (_tmp353_);
7874 _vala_code_node_unref0 (sig);
7875 }
7876 _vala_iterable_unref0 (_sig_list);
7877 }
7878 }
7879 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
7880 _vala_ccode_node_unref0 (parent_assignment);
7881 _vala_ccode_node_unref0 (parent_var_decl);
7882 _vala_ccode_node_unref0 (parent_decl);
7883 _vala_ccode_node_unref0 (ccall);
7884 _vala_ccode_node_unref0 (func);
7885 }
7886
7887 static void
vala_gtype_module_add_class_init_function(ValaGTypeModule * self,ValaClass * cl)7888 vala_gtype_module_add_class_init_function (ValaGTypeModule* self,
7889 ValaClass* cl)
7890 {
7891 ValaCCodeFile* _tmp0_;
7892 ValaCCodeBaseModuleEmitContext* _tmp1_;
7893 ValaCCodeFunction* _tmp2_;
7894 g_return_if_fail (self != NULL);
7895 g_return_if_fail (cl != NULL);
7896 _tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
7897 _tmp1_ = ((ValaCCodeBaseModule*) self)->class_init_context;
7898 _tmp2_ = _tmp1_->ccode;
7899 vala_ccode_file_add_function (_tmp0_, _tmp2_);
7900 }
7901
7902 static void
vala_gtype_module_add_generic_accessor_function(ValaGTypeModule * self,const gchar * base_name,const gchar * return_type,ValaCCodeExpression * expression,ValaTypeParameter * p,ValaClass * cl,ValaInterface * iface)7903 vala_gtype_module_add_generic_accessor_function (ValaGTypeModule* self,
7904 const gchar* base_name,
7905 const gchar* return_type,
7906 ValaCCodeExpression* expression,
7907 ValaTypeParameter* p,
7908 ValaClass* cl,
7909 ValaInterface* iface)
7910 {
7911 gchar* name = NULL;
7912 gchar* _tmp0_;
7913 gchar* _tmp1_;
7914 gchar* _tmp2_;
7915 gchar* _tmp3_;
7916 gchar* _tmp4_;
7917 gchar* _tmp5_;
7918 ValaCCodeFunction* function = NULL;
7919 ValaCCodeFunction* _tmp6_;
7920 ValaDataType* this_type = NULL;
7921 ValaDataType* _tmp7_;
7922 gchar* _tmp8_;
7923 gchar* _tmp9_;
7924 ValaCCodeParameter* _tmp10_;
7925 ValaCCodeParameter* _tmp11_;
7926 ValaCCodeFunction* _tmp12_;
7927 ValaCCodeFunction* _tmp13_;
7928 ValaCCodeFile* _tmp14_;
7929 ValaCCodeExpression* cfunc = NULL;
7930 const gchar* _tmp15_;
7931 const gchar* _tmp16_;
7932 ValaCCodeIdentifier* _tmp17_;
7933 gchar* cast = NULL;
7934 gchar* _tmp18_;
7935 gchar* cast_args = NULL;
7936 gchar* _tmp19_;
7937 gchar* _tmp20_;
7938 gchar* _tmp21_;
7939 gchar* _tmp22_;
7940 const gchar* _tmp23_;
7941 gchar* _tmp24_;
7942 ValaCCodeExpression* _tmp25_;
7943 const gchar* _tmp26_;
7944 ValaCCodeCastExpression* _tmp27_;
7945 ValaCCodeIdentifier* ciface = NULL;
7946 ValaCCodeIdentifier* _tmp28_;
7947 ValaCCodeFunction* _tmp29_;
7948 ValaCCodeFunction* _tmp30_;
7949 ValaCCodeMemberAccess* _tmp31_;
7950 ValaCCodeMemberAccess* _tmp32_;
7951 ValaCCodeExpression* _tmp33_;
7952 g_return_if_fail (self != NULL);
7953 g_return_if_fail (base_name != NULL);
7954 g_return_if_fail (return_type != NULL);
7955 g_return_if_fail (p != NULL);
7956 g_return_if_fail (cl != NULL);
7957 g_return_if_fail (iface != NULL);
7958 _tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
7959 _tmp1_ = _tmp0_;
7960 _tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
7961 _tmp3_ = _tmp2_;
7962 _tmp4_ = g_strdup_printf ("%s_%s_%s", _tmp1_, _tmp3_, base_name);
7963 _tmp5_ = _tmp4_;
7964 _g_free0 (_tmp3_);
7965 _g_free0 (_tmp1_);
7966 name = _tmp5_;
7967 _tmp6_ = vala_ccode_function_new (name, return_type);
7968 function = _tmp6_;
7969 vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
7970 _tmp7_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaSymbol*) cl);
7971 this_type = _tmp7_;
7972 _tmp8_ = vala_get_ccode_name ((ValaCodeNode*) this_type);
7973 _tmp9_ = _tmp8_;
7974 _tmp10_ = vala_ccode_parameter_new ("self", _tmp9_);
7975 _tmp11_ = _tmp10_;
7976 vala_ccode_function_add_parameter (function, _tmp11_);
7977 _vala_ccode_node_unref0 (_tmp11_);
7978 _g_free0 (_tmp9_);
7979 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
7980 _tmp12_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
7981 _tmp13_ = _tmp12_;
7982 vala_ccode_function_add_return (_tmp13_, expression);
7983 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
7984 _tmp14_ = ((ValaCCodeBaseModule*) self)->cfile;
7985 vala_ccode_file_add_function (_tmp14_, function);
7986 _tmp15_ = vala_ccode_function_get_name (function);
7987 _tmp16_ = _tmp15_;
7988 _tmp17_ = vala_ccode_identifier_new (_tmp16_);
7989 cfunc = (ValaCCodeExpression*) _tmp17_;
7990 _tmp18_ = g_strdup_printf ("%s (*)", return_type);
7991 cast = _tmp18_;
7992 _tmp19_ = vala_get_ccode_name ((ValaCodeNode*) iface);
7993 _tmp20_ = _tmp19_;
7994 _tmp21_ = g_strdup_printf ("%s *", _tmp20_);
7995 _tmp22_ = _tmp21_;
7996 _g_free0 (_tmp20_);
7997 cast_args = _tmp22_;
7998 _tmp23_ = cast;
7999 _tmp24_ = g_strdup_printf ("%s (%s)", _tmp23_, cast_args);
8000 _g_free0 (cast);
8001 cast = _tmp24_;
8002 _tmp25_ = cfunc;
8003 _tmp26_ = cast;
8004 _tmp27_ = vala_ccode_cast_expression_new (_tmp25_, _tmp26_);
8005 _vala_ccode_node_unref0 (cfunc);
8006 cfunc = (ValaCCodeExpression*) _tmp27_;
8007 _tmp28_ = vala_ccode_identifier_new ("iface");
8008 ciface = _tmp28_;
8009 _tmp29_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8010 _tmp30_ = _tmp29_;
8011 _tmp31_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, base_name);
8012 _tmp32_ = _tmp31_;
8013 _tmp33_ = cfunc;
8014 vala_ccode_function_add_assignment (_tmp30_, (ValaCCodeExpression*) _tmp32_, _tmp33_);
8015 _vala_ccode_node_unref0 (_tmp32_);
8016 _vala_ccode_node_unref0 (ciface);
8017 _g_free0 (cast_args);
8018 _g_free0 (cast);
8019 _vala_ccode_node_unref0 (cfunc);
8020 _vala_code_node_unref0 (this_type);
8021 _vala_ccode_node_unref0 (function);
8022 _g_free0 (name);
8023 }
8024
8025 static void
vala_gtype_module_add_interface_init_function(ValaGTypeModule * self,ValaClass * cl,ValaInterface * iface)8026 vala_gtype_module_add_interface_init_function (ValaGTypeModule* self,
8027 ValaClass* cl,
8028 ValaInterface* iface)
8029 {
8030 ValaCCodeFunction* iface_init = NULL;
8031 gchar* _tmp0_;
8032 gchar* _tmp1_;
8033 gchar* _tmp2_;
8034 gchar* _tmp3_;
8035 gchar* _tmp4_;
8036 gchar* _tmp5_;
8037 ValaCCodeFunction* _tmp6_;
8038 ValaCCodeFunction* _tmp7_;
8039 ValaCCodeFunction* _tmp8_;
8040 gchar* _tmp9_;
8041 gchar* _tmp10_;
8042 gchar* _tmp11_;
8043 gchar* _tmp12_;
8044 ValaCCodeParameter* _tmp13_;
8045 ValaCCodeParameter* _tmp14_;
8046 ValaCCodeFunction* _tmp15_;
8047 ValaCCodeParameter* _tmp16_;
8048 ValaCCodeParameter* _tmp17_;
8049 ValaCCodeFunction* _tmp18_;
8050 ValaCCodeFunction* _tmp19_;
8051 ValaCCodeFunctionCall* ccall = NULL;
8052 gchar* parent_iface_var = NULL;
8053 gchar* _tmp20_;
8054 gchar* _tmp21_;
8055 gchar* _tmp22_;
8056 gchar* _tmp23_;
8057 gchar* _tmp24_;
8058 gchar* _tmp25_;
8059 ValaCCodeDeclaration* parent_decl = NULL;
8060 gchar* _tmp26_;
8061 gchar* _tmp27_;
8062 gchar* _tmp28_;
8063 gchar* _tmp29_;
8064 ValaCCodeDeclaration* _tmp30_;
8065 ValaCCodeDeclaration* _tmp31_;
8066 ValaCCodeVariableDeclarator* parent_var_decl = NULL;
8067 const gchar* _tmp32_;
8068 ValaCCodeVariableDeclarator* _tmp33_;
8069 ValaCCodeVariableDeclarator* _tmp34_;
8070 ValaCCodeConstant* _tmp35_;
8071 ValaCCodeConstant* _tmp36_;
8072 ValaCCodeDeclaration* _tmp37_;
8073 ValaCCodeVariableDeclarator* _tmp38_;
8074 ValaCCodeDeclaration* _tmp39_;
8075 ValaCCodeFile* _tmp40_;
8076 ValaCCodeDeclaration* _tmp41_;
8077 ValaCCodeIdentifier* _tmp42_;
8078 ValaCCodeIdentifier* _tmp43_;
8079 ValaCCodeFunctionCall* _tmp44_;
8080 ValaCCodeFunctionCall* _tmp45_;
8081 ValaCCodeIdentifier* _tmp46_;
8082 ValaCCodeIdentifier* _tmp47_;
8083 ValaCCodeFunction* _tmp48_;
8084 ValaCCodeFunction* _tmp49_;
8085 const gchar* _tmp50_;
8086 ValaCCodeIdentifier* _tmp51_;
8087 ValaCCodeIdentifier* _tmp52_;
8088 ValaCCodeFunctionCall* _tmp53_;
8089 ValaAttribute* _tmp147_;
8090 ValaMapIterator* it = NULL;
8091 ValaHashMap* _tmp197_;
8092 ValaHashMap* _tmp198_;
8093 ValaMapIterator* _tmp199_;
8094 ValaMapIterator* _tmp200_;
8095 ValaCCodeFile* _tmp474_;
8096 ValaCCodeFunction* _tmp475_;
8097 g_return_if_fail (self != NULL);
8098 g_return_if_fail (cl != NULL);
8099 g_return_if_fail (iface != NULL);
8100 _tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
8101 _tmp1_ = _tmp0_;
8102 _tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
8103 _tmp3_ = _tmp2_;
8104 _tmp4_ = g_strdup_printf ("%s_%s_interface_init", _tmp1_, _tmp3_);
8105 _tmp5_ = _tmp4_;
8106 _tmp6_ = vala_ccode_function_new (_tmp5_, "void");
8107 _tmp7_ = _tmp6_;
8108 _g_free0 (_tmp5_);
8109 _g_free0 (_tmp3_);
8110 _g_free0 (_tmp1_);
8111 iface_init = _tmp7_;
8112 _tmp8_ = iface_init;
8113 _tmp9_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
8114 _tmp10_ = _tmp9_;
8115 _tmp11_ = g_strdup_printf ("%s *", _tmp10_);
8116 _tmp12_ = _tmp11_;
8117 _tmp13_ = vala_ccode_parameter_new ("iface", _tmp12_);
8118 _tmp14_ = _tmp13_;
8119 vala_ccode_function_add_parameter (_tmp8_, _tmp14_);
8120 _vala_ccode_node_unref0 (_tmp14_);
8121 _g_free0 (_tmp12_);
8122 _g_free0 (_tmp10_);
8123 _tmp15_ = iface_init;
8124 _tmp16_ = vala_ccode_parameter_new ("iface_data", "gpointer");
8125 _tmp17_ = _tmp16_;
8126 vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
8127 _vala_ccode_node_unref0 (_tmp17_);
8128 _tmp18_ = iface_init;
8129 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp18_, VALA_CCODE_MODIFIERS_STATIC);
8130 _tmp19_ = iface_init;
8131 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
8132 _tmp20_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
8133 _tmp21_ = _tmp20_;
8134 _tmp22_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
8135 _tmp23_ = _tmp22_;
8136 _tmp24_ = g_strdup_printf ("%s_%s_parent_iface", _tmp21_, _tmp23_);
8137 _tmp25_ = _tmp24_;
8138 _g_free0 (_tmp23_);
8139 _g_free0 (_tmp21_);
8140 parent_iface_var = _tmp25_;
8141 _tmp26_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
8142 _tmp27_ = _tmp26_;
8143 _tmp28_ = g_strdup_printf ("%s *", _tmp27_);
8144 _tmp29_ = _tmp28_;
8145 _tmp30_ = vala_ccode_declaration_new (_tmp29_);
8146 _tmp31_ = _tmp30_;
8147 _g_free0 (_tmp29_);
8148 _g_free0 (_tmp27_);
8149 parent_decl = _tmp31_;
8150 _tmp32_ = parent_iface_var;
8151 _tmp33_ = vala_ccode_variable_declarator_new (_tmp32_, NULL, NULL);
8152 parent_var_decl = _tmp33_;
8153 _tmp34_ = parent_var_decl;
8154 _tmp35_ = vala_ccode_constant_new ("NULL");
8155 _tmp36_ = _tmp35_;
8156 vala_ccode_variable_declarator_set_initializer (_tmp34_, (ValaCCodeExpression*) _tmp36_);
8157 _vala_ccode_node_unref0 (_tmp36_);
8158 _tmp37_ = parent_decl;
8159 _tmp38_ = parent_var_decl;
8160 vala_ccode_declaration_add_declarator (_tmp37_, (ValaCCodeDeclarator*) _tmp38_);
8161 _tmp39_ = parent_decl;
8162 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp39_, VALA_CCODE_MODIFIERS_STATIC);
8163 _tmp40_ = ((ValaCCodeBaseModule*) self)->cfile;
8164 _tmp41_ = parent_decl;
8165 vala_ccode_file_add_type_member_declaration (_tmp40_, (ValaCCodeNode*) _tmp41_);
8166 _tmp42_ = vala_ccode_identifier_new ("g_type_interface_peek_parent");
8167 _tmp43_ = _tmp42_;
8168 _tmp44_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp43_);
8169 _vala_ccode_node_unref0 (ccall);
8170 ccall = _tmp44_;
8171 _vala_ccode_node_unref0 (_tmp43_);
8172 _tmp45_ = ccall;
8173 _tmp46_ = vala_ccode_identifier_new ("iface");
8174 _tmp47_ = _tmp46_;
8175 vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp47_);
8176 _vala_ccode_node_unref0 (_tmp47_);
8177 _tmp48_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8178 _tmp49_ = _tmp48_;
8179 _tmp50_ = parent_iface_var;
8180 _tmp51_ = vala_ccode_identifier_new (_tmp50_);
8181 _tmp52_ = _tmp51_;
8182 _tmp53_ = ccall;
8183 vala_ccode_function_add_assignment (_tmp49_, (ValaCCodeExpression*) _tmp52_, (ValaCCodeExpression*) _tmp53_);
8184 _vala_ccode_node_unref0 (_tmp52_);
8185 {
8186 ValaList* _m_list = NULL;
8187 ValaList* _tmp54_;
8188 ValaList* _tmp55_;
8189 gint _m_size = 0;
8190 ValaList* _tmp56_;
8191 gint _tmp57_;
8192 gint _tmp58_;
8193 gint _m_index = 0;
8194 _tmp54_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) cl);
8195 _tmp55_ = _vala_iterable_ref0 (_tmp54_);
8196 _m_list = _tmp55_;
8197 _tmp56_ = _m_list;
8198 _tmp57_ = vala_collection_get_size ((ValaCollection*) _tmp56_);
8199 _tmp58_ = _tmp57_;
8200 _m_size = _tmp58_;
8201 _m_index = -1;
8202 while (TRUE) {
8203 gint _tmp59_;
8204 gint _tmp60_;
8205 ValaMethod* m = NULL;
8206 ValaList* _tmp61_;
8207 gpointer _tmp62_;
8208 ValaMethod* _tmp63_;
8209 ValaMethod* _tmp64_;
8210 ValaMethod* _tmp65_;
8211 ValaSymbol* base_type = NULL;
8212 ValaMethod* _tmp66_;
8213 ValaMethod* _tmp67_;
8214 ValaMethod* _tmp68_;
8215 ValaSymbol* _tmp69_;
8216 ValaSymbol* _tmp70_;
8217 ValaSymbol* _tmp71_;
8218 ValaSymbol* _tmp72_;
8219 ValaMethod* _tmp73_;
8220 ValaMethod* _tmp74_;
8221 ValaMethod* _tmp75_;
8222 ValaCCodeFile* _tmp76_;
8223 ValaCCodeIdentifier* ciface = NULL;
8224 ValaCCodeIdentifier* _tmp77_;
8225 ValaCCodeExpression* cfunc = NULL;
8226 gboolean _tmp78_ = FALSE;
8227 ValaMethod* _tmp79_;
8228 gboolean _tmp80_;
8229 gboolean _tmp81_;
8230 gint _tmp93_ = 0;
8231 ValaMethod* _tmp94_;
8232 gboolean _tmp95_;
8233 gboolean _tmp96_;
8234 ValaMethod* _tmp97_;
8235 ValaMethod* _tmp98_;
8236 ValaMethod* _tmp99_;
8237 ValaCCodeExpression* _tmp100_;
8238 ValaCCodeExpression* _tmp101_;
8239 ValaCCodeFunction* _tmp102_;
8240 ValaCCodeFunction* _tmp103_;
8241 ValaCCodeIdentifier* _tmp104_;
8242 ValaMethod* _tmp105_;
8243 ValaMethod* _tmp106_;
8244 ValaMethod* _tmp107_;
8245 gchar* _tmp108_;
8246 gchar* _tmp109_;
8247 ValaCCodeMemberAccess* _tmp110_;
8248 ValaCCodeMemberAccess* _tmp111_;
8249 ValaCCodeExpression* _tmp112_;
8250 ValaMethod* _tmp113_;
8251 gboolean _tmp114_;
8252 gboolean _tmp115_;
8253 _m_index = _m_index + 1;
8254 _tmp59_ = _m_index;
8255 _tmp60_ = _m_size;
8256 if (!(_tmp59_ < _tmp60_)) {
8257 break;
8258 }
8259 _tmp61_ = _m_list;
8260 _tmp62_ = vala_list_get (_tmp61_, _m_index);
8261 m = (ValaMethod*) _tmp62_;
8262 _tmp63_ = m;
8263 _tmp64_ = vala_method_get_base_interface_method (_tmp63_);
8264 _tmp65_ = _tmp64_;
8265 if (_tmp65_ == NULL) {
8266 _vala_code_node_unref0 (m);
8267 continue;
8268 }
8269 _tmp66_ = m;
8270 _tmp67_ = vala_method_get_base_interface_method (_tmp66_);
8271 _tmp68_ = _tmp67_;
8272 _tmp69_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp68_);
8273 _tmp70_ = _tmp69_;
8274 _tmp71_ = _vala_code_node_ref0 (_tmp70_);
8275 base_type = _tmp71_;
8276 _tmp72_ = base_type;
8277 if (_tmp72_ != G_TYPE_CHECK_INSTANCE_CAST (iface, VALA_TYPE_SYMBOL, ValaSymbol)) {
8278 _vala_code_node_unref0 (base_type);
8279 _vala_code_node_unref0 (m);
8280 continue;
8281 }
8282 _tmp73_ = m;
8283 _tmp74_ = vala_method_get_base_interface_method (_tmp73_);
8284 _tmp75_ = _tmp74_;
8285 _tmp76_ = ((ValaCCodeBaseModule*) self)->cfile;
8286 vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp75_, _tmp76_);
8287 _tmp77_ = vala_ccode_identifier_new ("iface");
8288 ciface = _tmp77_;
8289 _tmp79_ = m;
8290 _tmp80_ = vala_method_get_is_abstract (_tmp79_);
8291 _tmp81_ = _tmp80_;
8292 if (_tmp81_) {
8293 _tmp78_ = TRUE;
8294 } else {
8295 ValaMethod* _tmp82_;
8296 gboolean _tmp83_;
8297 gboolean _tmp84_;
8298 _tmp82_ = m;
8299 _tmp83_ = vala_method_get_is_virtual (_tmp82_);
8300 _tmp84_ = _tmp83_;
8301 _tmp78_ = _tmp84_;
8302 }
8303 if (_tmp78_) {
8304 ValaMethod* _tmp85_;
8305 gchar* _tmp86_;
8306 gchar* _tmp87_;
8307 ValaCCodeIdentifier* _tmp88_;
8308 _tmp85_ = m;
8309 _tmp86_ = vala_get_ccode_name ((ValaCodeNode*) _tmp85_);
8310 _tmp87_ = _tmp86_;
8311 _tmp88_ = vala_ccode_identifier_new (_tmp87_);
8312 _vala_ccode_node_unref0 (cfunc);
8313 cfunc = (ValaCCodeExpression*) _tmp88_;
8314 _g_free0 (_tmp87_);
8315 } else {
8316 ValaMethod* _tmp89_;
8317 gchar* _tmp90_;
8318 gchar* _tmp91_;
8319 ValaCCodeIdentifier* _tmp92_;
8320 _tmp89_ = m;
8321 _tmp90_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp89_);
8322 _tmp91_ = _tmp90_;
8323 _tmp92_ = vala_ccode_identifier_new (_tmp91_);
8324 _vala_ccode_node_unref0 (cfunc);
8325 cfunc = (ValaCCodeExpression*) _tmp92_;
8326 _g_free0 (_tmp91_);
8327 }
8328 _tmp94_ = m;
8329 _tmp95_ = vala_method_get_coroutine (_tmp94_);
8330 _tmp96_ = _tmp95_;
8331 if (_tmp96_) {
8332 _tmp93_ = 1;
8333 } else {
8334 _tmp93_ = 3;
8335 }
8336 _tmp97_ = m;
8337 _tmp98_ = vala_method_get_base_interface_method (_tmp97_);
8338 _tmp99_ = _tmp98_;
8339 _tmp100_ = cfunc;
8340 _tmp101_ = vala_gtype_module_cast_method_pointer (self, _tmp99_, _tmp100_, (ValaObjectTypeSymbol*) iface, _tmp93_);
8341 _vala_ccode_node_unref0 (cfunc);
8342 cfunc = _tmp101_;
8343 _tmp102_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8344 _tmp103_ = _tmp102_;
8345 _tmp104_ = ciface;
8346 _tmp105_ = m;
8347 _tmp106_ = vala_method_get_base_interface_method (_tmp105_);
8348 _tmp107_ = _tmp106_;
8349 _tmp108_ = vala_get_ccode_vfunc_name (_tmp107_);
8350 _tmp109_ = _tmp108_;
8351 _tmp110_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp104_, _tmp109_);
8352 _tmp111_ = _tmp110_;
8353 _tmp112_ = cfunc;
8354 vala_ccode_function_add_assignment (_tmp103_, (ValaCCodeExpression*) _tmp111_, _tmp112_);
8355 _vala_ccode_node_unref0 (_tmp111_);
8356 _g_free0 (_tmp109_);
8357 _tmp113_ = m;
8358 _tmp114_ = vala_method_get_coroutine (_tmp113_);
8359 _tmp115_ = _tmp114_;
8360 if (_tmp115_) {
8361 gboolean _tmp116_ = FALSE;
8362 ValaMethod* _tmp117_;
8363 gboolean _tmp118_;
8364 gboolean _tmp119_;
8365 ValaMethod* _tmp131_;
8366 ValaMethod* _tmp132_;
8367 ValaMethod* _tmp133_;
8368 ValaCCodeExpression* _tmp134_;
8369 ValaCCodeExpression* _tmp135_;
8370 ValaCCodeFunction* _tmp136_;
8371 ValaCCodeFunction* _tmp137_;
8372 ValaCCodeIdentifier* _tmp138_;
8373 ValaMethod* _tmp139_;
8374 ValaMethod* _tmp140_;
8375 ValaMethod* _tmp141_;
8376 gchar* _tmp142_;
8377 gchar* _tmp143_;
8378 ValaCCodeMemberAccess* _tmp144_;
8379 ValaCCodeMemberAccess* _tmp145_;
8380 ValaCCodeExpression* _tmp146_;
8381 _tmp117_ = m;
8382 _tmp118_ = vala_method_get_is_abstract (_tmp117_);
8383 _tmp119_ = _tmp118_;
8384 if (_tmp119_) {
8385 _tmp116_ = TRUE;
8386 } else {
8387 ValaMethod* _tmp120_;
8388 gboolean _tmp121_;
8389 gboolean _tmp122_;
8390 _tmp120_ = m;
8391 _tmp121_ = vala_method_get_is_virtual (_tmp120_);
8392 _tmp122_ = _tmp121_;
8393 _tmp116_ = _tmp122_;
8394 }
8395 if (_tmp116_) {
8396 ValaMethod* _tmp123_;
8397 gchar* _tmp124_;
8398 gchar* _tmp125_;
8399 ValaCCodeIdentifier* _tmp126_;
8400 _tmp123_ = m;
8401 _tmp124_ = vala_get_ccode_finish_name (_tmp123_);
8402 _tmp125_ = _tmp124_;
8403 _tmp126_ = vala_ccode_identifier_new (_tmp125_);
8404 _vala_ccode_node_unref0 (cfunc);
8405 cfunc = (ValaCCodeExpression*) _tmp126_;
8406 _g_free0 (_tmp125_);
8407 } else {
8408 ValaMethod* _tmp127_;
8409 gchar* _tmp128_;
8410 gchar* _tmp129_;
8411 ValaCCodeIdentifier* _tmp130_;
8412 _tmp127_ = m;
8413 _tmp128_ = vala_get_ccode_finish_real_name (_tmp127_);
8414 _tmp129_ = _tmp128_;
8415 _tmp130_ = vala_ccode_identifier_new (_tmp129_);
8416 _vala_ccode_node_unref0 (cfunc);
8417 cfunc = (ValaCCodeExpression*) _tmp130_;
8418 _g_free0 (_tmp129_);
8419 }
8420 _tmp131_ = m;
8421 _tmp132_ = vala_method_get_base_interface_method (_tmp131_);
8422 _tmp133_ = _tmp132_;
8423 _tmp134_ = cfunc;
8424 _tmp135_ = vala_gtype_module_cast_method_pointer (self, _tmp133_, _tmp134_, (ValaObjectTypeSymbol*) iface, 2);
8425 _vala_ccode_node_unref0 (cfunc);
8426 cfunc = _tmp135_;
8427 _tmp136_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8428 _tmp137_ = _tmp136_;
8429 _tmp138_ = ciface;
8430 _tmp139_ = m;
8431 _tmp140_ = vala_method_get_base_interface_method (_tmp139_);
8432 _tmp141_ = _tmp140_;
8433 _tmp142_ = vala_get_ccode_finish_vfunc_name (_tmp141_);
8434 _tmp143_ = _tmp142_;
8435 _tmp144_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp138_, _tmp143_);
8436 _tmp145_ = _tmp144_;
8437 _tmp146_ = cfunc;
8438 vala_ccode_function_add_assignment (_tmp137_, (ValaCCodeExpression*) _tmp145_, _tmp146_);
8439 _vala_ccode_node_unref0 (_tmp145_);
8440 _g_free0 (_tmp143_);
8441 }
8442 _vala_ccode_node_unref0 (cfunc);
8443 _vala_ccode_node_unref0 (ciface);
8444 _vala_code_node_unref0 (base_type);
8445 _vala_code_node_unref0 (m);
8446 }
8447 _vala_iterable_unref0 (_m_list);
8448 }
8449 _tmp147_ = vala_code_node_get_attribute ((ValaCodeNode*) iface, "GenericAccessors");
8450 if (_tmp147_ != NULL) {
8451 {
8452 ValaList* _p_list = NULL;
8453 ValaList* _tmp148_;
8454 ValaList* _tmp149_;
8455 gint _p_size = 0;
8456 ValaList* _tmp150_;
8457 gint _tmp151_;
8458 gint _tmp152_;
8459 gint _p_index = 0;
8460 _tmp148_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) iface);
8461 _tmp149_ = _vala_iterable_ref0 (_tmp148_);
8462 _p_list = _tmp149_;
8463 _tmp150_ = _p_list;
8464 _tmp151_ = vala_collection_get_size ((ValaCollection*) _tmp150_);
8465 _tmp152_ = _tmp151_;
8466 _p_size = _tmp152_;
8467 _p_index = -1;
8468 while (TRUE) {
8469 gint _tmp153_;
8470 gint _tmp154_;
8471 ValaTypeParameter* p = NULL;
8472 ValaList* _tmp155_;
8473 gpointer _tmp156_;
8474 ValaGenericType* p_type = NULL;
8475 ValaTypeParameter* _tmp157_;
8476 ValaGenericType* _tmp158_;
8477 ValaDataType* p_data_type = NULL;
8478 ValaGenericType* _tmp159_;
8479 ValaDataType* _tmp160_;
8480 ValaDataType* _tmp161_;
8481 ValaDataType* _tmp162_;
8482 ValaDataType* _tmp163_;
8483 ValaTypeParameter* _tmp164_;
8484 const gchar* _tmp165_;
8485 const gchar* _tmp166_;
8486 gchar* _tmp167_;
8487 gchar* _tmp168_;
8488 gchar* _tmp169_;
8489 gchar* _tmp170_;
8490 ValaDataType* _tmp171_;
8491 ValaCCodeExpression* _tmp172_;
8492 ValaCCodeExpression* _tmp173_;
8493 ValaTypeParameter* _tmp174_;
8494 ValaTypeParameter* _tmp175_;
8495 const gchar* _tmp176_;
8496 const gchar* _tmp177_;
8497 gchar* _tmp178_;
8498 gchar* _tmp179_;
8499 gchar* _tmp180_;
8500 gchar* _tmp181_;
8501 ValaDataType* _tmp182_;
8502 ValaCCodeExpression* _tmp183_;
8503 ValaCCodeExpression* _tmp184_;
8504 ValaTypeParameter* _tmp185_;
8505 ValaTypeParameter* _tmp186_;
8506 const gchar* _tmp187_;
8507 const gchar* _tmp188_;
8508 gchar* _tmp189_;
8509 gchar* _tmp190_;
8510 gchar* _tmp191_;
8511 gchar* _tmp192_;
8512 ValaDataType* _tmp193_;
8513 ValaCCodeExpression* _tmp194_;
8514 ValaCCodeExpression* _tmp195_;
8515 ValaTypeParameter* _tmp196_;
8516 _p_index = _p_index + 1;
8517 _tmp153_ = _p_index;
8518 _tmp154_ = _p_size;
8519 if (!(_tmp153_ < _tmp154_)) {
8520 break;
8521 }
8522 _tmp155_ = _p_list;
8523 _tmp156_ = vala_list_get (_tmp155_, _p_index);
8524 p = (ValaTypeParameter*) _tmp156_;
8525 _tmp157_ = p;
8526 _tmp158_ = vala_generic_type_new (_tmp157_);
8527 p_type = _tmp158_;
8528 _tmp159_ = p_type;
8529 _tmp160_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaSymbol*) cl);
8530 _tmp161_ = _tmp160_;
8531 _tmp162_ = vala_data_type_get_actual_type ((ValaDataType*) _tmp159_, _tmp161_, NULL, (ValaCodeNode*) cl);
8532 _tmp163_ = _tmp162_;
8533 _vala_code_node_unref0 (_tmp161_);
8534 p_data_type = _tmp163_;
8535 _tmp164_ = p;
8536 _tmp165_ = vala_symbol_get_name ((ValaSymbol*) _tmp164_);
8537 _tmp166_ = _tmp165_;
8538 _tmp167_ = g_ascii_strdown (_tmp166_, (gssize) -1);
8539 _tmp168_ = _tmp167_;
8540 _tmp169_ = g_strdup_printf ("get_%s_type", _tmp168_);
8541 _tmp170_ = _tmp169_;
8542 _tmp171_ = p_data_type;
8543 _tmp172_ = vala_ccode_base_module_get_type_id_expression ((ValaCCodeBaseModule*) self, _tmp171_, FALSE);
8544 _tmp173_ = _tmp172_;
8545 _tmp174_ = p;
8546 vala_gtype_module_add_generic_accessor_function (self, _tmp170_, "GType", _tmp173_, _tmp174_, cl, iface);
8547 _vala_ccode_node_unref0 (_tmp173_);
8548 _g_free0 (_tmp170_);
8549 _g_free0 (_tmp168_);
8550 _tmp175_ = p;
8551 _tmp176_ = vala_symbol_get_name ((ValaSymbol*) _tmp175_);
8552 _tmp177_ = _tmp176_;
8553 _tmp178_ = g_ascii_strdown (_tmp177_, (gssize) -1);
8554 _tmp179_ = _tmp178_;
8555 _tmp180_ = g_strdup_printf ("get_%s_dup_func", _tmp179_);
8556 _tmp181_ = _tmp180_;
8557 _tmp182_ = p_data_type;
8558 _tmp183_ = vala_ccode_base_module_get_dup_func_expression ((ValaCCodeBaseModule*) self, _tmp182_, NULL, FALSE);
8559 _tmp184_ = _tmp183_;
8560 _tmp185_ = p;
8561 vala_gtype_module_add_generic_accessor_function (self, _tmp181_, "GBoxedCopyFunc", _tmp184_, _tmp185_, cl, iface);
8562 _vala_ccode_node_unref0 (_tmp184_);
8563 _g_free0 (_tmp181_);
8564 _g_free0 (_tmp179_);
8565 _tmp186_ = p;
8566 _tmp187_ = vala_symbol_get_name ((ValaSymbol*) _tmp186_);
8567 _tmp188_ = _tmp187_;
8568 _tmp189_ = g_ascii_strdown (_tmp188_, (gssize) -1);
8569 _tmp190_ = _tmp189_;
8570 _tmp191_ = g_strdup_printf ("get_%s_destroy_func", _tmp190_);
8571 _tmp192_ = _tmp191_;
8572 _tmp193_ = p_data_type;
8573 _tmp194_ = vala_ccode_base_module_get_destroy_func_expression ((ValaCCodeBaseModule*) self, _tmp193_, FALSE);
8574 _tmp195_ = _tmp194_;
8575 _tmp196_ = p;
8576 vala_gtype_module_add_generic_accessor_function (self, _tmp192_, "GDestroyNotify", _tmp195_, _tmp196_, cl, iface);
8577 _vala_ccode_node_unref0 (_tmp195_);
8578 _g_free0 (_tmp192_);
8579 _g_free0 (_tmp190_);
8580 _vala_code_node_unref0 (p_data_type);
8581 _vala_code_node_unref0 (p_type);
8582 _vala_code_node_unref0 (p);
8583 }
8584 _vala_iterable_unref0 (_p_list);
8585 }
8586 }
8587 _tmp197_ = vala_class_get_implicit_implementations (cl);
8588 _tmp198_ = _tmp197_;
8589 _tmp199_ = vala_map_map_iterator ((ValaMap*) _tmp198_);
8590 _tmp200_ = _tmp199_;
8591 _vala_map_unref0 (_tmp198_);
8592 it = _tmp200_;
8593 while (TRUE) {
8594 ValaMapIterator* _tmp201_;
8595 ValaMethod* m = NULL;
8596 ValaMapIterator* _tmp202_;
8597 gpointer _tmp203_;
8598 ValaMethod* _tmp204_;
8599 ValaSymbol* _tmp205_;
8600 ValaSymbol* _tmp206_;
8601 _tmp201_ = it;
8602 if (!vala_map_iterator_next (_tmp201_)) {
8603 break;
8604 }
8605 _tmp202_ = it;
8606 _tmp203_ = vala_map_iterator_get_key (_tmp202_);
8607 m = (ValaMethod*) _tmp203_;
8608 _tmp204_ = m;
8609 _tmp205_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp204_);
8610 _tmp206_ = _tmp205_;
8611 if (_tmp206_ == G_TYPE_CHECK_INSTANCE_CAST (iface, VALA_TYPE_SYMBOL, ValaSymbol)) {
8612 ValaMethod* base_method = NULL;
8613 ValaMapIterator* _tmp207_;
8614 gpointer _tmp208_;
8615 ValaMethod* _tmp209_;
8616 ValaCCodeFile* _tmp210_;
8617 ValaCCodeExpression* cfunc = NULL;
8618 ValaMethod* _tmp211_;
8619 gchar* _tmp212_;
8620 gchar* _tmp213_;
8621 ValaCCodeIdentifier* _tmp214_;
8622 ValaCCodeExpression* _tmp215_;
8623 ValaMethod* _tmp216_;
8624 ValaCCodeExpression* _tmp217_;
8625 ValaCCodeExpression* _tmp218_;
8626 ValaCCodeIdentifier* ciface = NULL;
8627 ValaCCodeIdentifier* _tmp219_;
8628 ValaCCodeFunction* _tmp220_;
8629 ValaCCodeFunction* _tmp221_;
8630 ValaCCodeIdentifier* _tmp222_;
8631 ValaMethod* _tmp223_;
8632 gchar* _tmp224_;
8633 gchar* _tmp225_;
8634 ValaCCodeMemberAccess* _tmp226_;
8635 ValaCCodeMemberAccess* _tmp227_;
8636 ValaCCodeExpression* _tmp228_;
8637 _tmp207_ = it;
8638 _tmp208_ = vala_map_iterator_get_value (_tmp207_);
8639 base_method = (ValaMethod*) _tmp208_;
8640 _tmp209_ = base_method;
8641 _tmp210_ = ((ValaCCodeBaseModule*) self)->cfile;
8642 vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp209_, _tmp210_);
8643 _tmp211_ = base_method;
8644 _tmp212_ = vala_get_ccode_name ((ValaCodeNode*) _tmp211_);
8645 _tmp213_ = _tmp212_;
8646 _tmp214_ = vala_ccode_identifier_new (_tmp213_);
8647 _tmp215_ = (ValaCCodeExpression*) _tmp214_;
8648 _g_free0 (_tmp213_);
8649 cfunc = _tmp215_;
8650 _tmp216_ = m;
8651 _tmp217_ = cfunc;
8652 _tmp218_ = vala_gtype_module_cast_method_pointer (self, _tmp216_, _tmp217_, (ValaObjectTypeSymbol*) iface, 3);
8653 _vala_ccode_node_unref0 (cfunc);
8654 cfunc = _tmp218_;
8655 _tmp219_ = vala_ccode_identifier_new ("iface");
8656 ciface = _tmp219_;
8657 _tmp220_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8658 _tmp221_ = _tmp220_;
8659 _tmp222_ = ciface;
8660 _tmp223_ = m;
8661 _tmp224_ = vala_get_ccode_vfunc_name (_tmp223_);
8662 _tmp225_ = _tmp224_;
8663 _tmp226_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp222_, _tmp225_);
8664 _tmp227_ = _tmp226_;
8665 _tmp228_ = cfunc;
8666 vala_ccode_function_add_assignment (_tmp221_, (ValaCCodeExpression*) _tmp227_, _tmp228_);
8667 _vala_ccode_node_unref0 (_tmp227_);
8668 _g_free0 (_tmp225_);
8669 _vala_ccode_node_unref0 (ciface);
8670 _vala_ccode_node_unref0 (cfunc);
8671 _vala_code_node_unref0 (base_method);
8672 }
8673 _vala_code_node_unref0 (m);
8674 }
8675 {
8676 ValaList* _prop_list = NULL;
8677 ValaList* _tmp229_;
8678 ValaList* _tmp230_;
8679 gint _prop_size = 0;
8680 ValaList* _tmp231_;
8681 gint _tmp232_;
8682 gint _tmp233_;
8683 gint _prop_index = 0;
8684 _tmp229_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
8685 _tmp230_ = _vala_iterable_ref0 (_tmp229_);
8686 _prop_list = _tmp230_;
8687 _tmp231_ = _prop_list;
8688 _tmp232_ = vala_collection_get_size ((ValaCollection*) _tmp231_);
8689 _tmp233_ = _tmp232_;
8690 _prop_size = _tmp233_;
8691 _prop_index = -1;
8692 while (TRUE) {
8693 gint _tmp234_;
8694 gint _tmp235_;
8695 ValaProperty* prop = NULL;
8696 ValaList* _tmp236_;
8697 gpointer _tmp237_;
8698 ValaProperty* _tmp238_;
8699 ValaProperty* _tmp239_;
8700 ValaProperty* _tmp240_;
8701 ValaObjectTypeSymbol* base_type = NULL;
8702 ValaProperty* _tmp241_;
8703 ValaProperty* _tmp242_;
8704 ValaProperty* _tmp243_;
8705 ValaSymbol* _tmp244_;
8706 ValaSymbol* _tmp245_;
8707 ValaObjectTypeSymbol* _tmp246_;
8708 ValaObjectTypeSymbol* _tmp247_;
8709 ValaCCodeIdentifier* ciface = NULL;
8710 ValaCCodeIdentifier* _tmp248_;
8711 gboolean _tmp249_ = FALSE;
8712 ValaProperty* _tmp250_;
8713 ValaProperty* _tmp251_;
8714 ValaProperty* _tmp252_;
8715 _prop_index = _prop_index + 1;
8716 _tmp234_ = _prop_index;
8717 _tmp235_ = _prop_size;
8718 if (!(_tmp234_ < _tmp235_)) {
8719 break;
8720 }
8721 _tmp236_ = _prop_list;
8722 _tmp237_ = vala_list_get (_tmp236_, _prop_index);
8723 prop = (ValaProperty*) _tmp237_;
8724 _tmp238_ = prop;
8725 _tmp239_ = vala_property_get_base_interface_property (_tmp238_);
8726 _tmp240_ = _tmp239_;
8727 if (_tmp240_ == NULL) {
8728 _vala_code_node_unref0 (prop);
8729 continue;
8730 }
8731 _tmp241_ = prop;
8732 _tmp242_ = vala_property_get_base_interface_property (_tmp241_);
8733 _tmp243_ = _tmp242_;
8734 _tmp244_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp243_);
8735 _tmp245_ = _tmp244_;
8736 _tmp246_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp245_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
8737 base_type = _tmp246_;
8738 _tmp247_ = base_type;
8739 if (_tmp247_ != G_TYPE_CHECK_INSTANCE_CAST (iface, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol)) {
8740 _vala_code_node_unref0 (base_type);
8741 _vala_code_node_unref0 (prop);
8742 continue;
8743 }
8744 _tmp248_ = vala_ccode_identifier_new ("iface");
8745 ciface = _tmp248_;
8746 _tmp250_ = prop;
8747 _tmp251_ = vala_property_get_base_interface_property (_tmp250_);
8748 _tmp252_ = _tmp251_;
8749 if (!vala_get_ccode_no_accessor_method (_tmp252_)) {
8750 ValaProperty* _tmp253_;
8751 ValaProperty* _tmp254_;
8752 ValaProperty* _tmp255_;
8753 _tmp253_ = prop;
8754 _tmp254_ = vala_property_get_base_interface_property (_tmp253_);
8755 _tmp255_ = _tmp254_;
8756 _tmp249_ = !vala_get_ccode_concrete_accessor (_tmp255_);
8757 } else {
8758 _tmp249_ = FALSE;
8759 }
8760 if (_tmp249_) {
8761 ValaProperty* _tmp256_;
8762 ValaPropertyAccessor* _tmp257_;
8763 ValaPropertyAccessor* _tmp258_;
8764 ValaProperty* _tmp306_;
8765 ValaPropertyAccessor* _tmp307_;
8766 ValaPropertyAccessor* _tmp308_;
8767 _tmp256_ = prop;
8768 _tmp257_ = vala_property_get_get_accessor (_tmp256_);
8769 _tmp258_ = _tmp257_;
8770 if (_tmp258_ != NULL) {
8771 ValaProperty* _tmp259_;
8772 ValaProperty* _tmp260_;
8773 ValaProperty* _tmp261_;
8774 ValaPropertyAccessor* _tmp262_;
8775 ValaPropertyAccessor* _tmp263_;
8776 ValaCCodeFile* _tmp264_;
8777 gchar* cname = NULL;
8778 ValaProperty* _tmp265_;
8779 ValaPropertyAccessor* _tmp266_;
8780 ValaPropertyAccessor* _tmp267_;
8781 gchar* _tmp268_;
8782 gboolean _tmp269_ = FALSE;
8783 ValaProperty* _tmp270_;
8784 gboolean _tmp271_;
8785 gboolean _tmp272_;
8786 ValaCCodeExpression* cfunc = NULL;
8787 const gchar* _tmp280_;
8788 ValaCCodeIdentifier* _tmp281_;
8789 gboolean _tmp282_ = FALSE;
8790 ValaProperty* _tmp283_;
8791 gboolean _tmp284_;
8792 gboolean _tmp285_;
8793 ValaCCodeFunction* _tmp295_;
8794 ValaCCodeFunction* _tmp296_;
8795 ValaCCodeIdentifier* _tmp297_;
8796 ValaProperty* _tmp298_;
8797 const gchar* _tmp299_;
8798 const gchar* _tmp300_;
8799 gchar* _tmp301_;
8800 gchar* _tmp302_;
8801 ValaCCodeMemberAccess* _tmp303_;
8802 ValaCCodeMemberAccess* _tmp304_;
8803 ValaCCodeExpression* _tmp305_;
8804 _tmp259_ = prop;
8805 _tmp260_ = vala_property_get_base_interface_property (_tmp259_);
8806 _tmp261_ = _tmp260_;
8807 _tmp262_ = vala_property_get_get_accessor (_tmp261_);
8808 _tmp263_ = _tmp262_;
8809 _tmp264_ = ((ValaCCodeBaseModule*) self)->cfile;
8810 vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp263_, _tmp264_);
8811 _tmp265_ = prop;
8812 _tmp266_ = vala_property_get_get_accessor (_tmp265_);
8813 _tmp267_ = _tmp266_;
8814 _tmp268_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp267_);
8815 cname = _tmp268_;
8816 _tmp270_ = prop;
8817 _tmp271_ = vala_property_get_is_abstract (_tmp270_);
8818 _tmp272_ = _tmp271_;
8819 if (_tmp272_) {
8820 _tmp269_ = TRUE;
8821 } else {
8822 ValaProperty* _tmp273_;
8823 gboolean _tmp274_;
8824 gboolean _tmp275_;
8825 _tmp273_ = prop;
8826 _tmp274_ = vala_property_get_is_virtual (_tmp273_);
8827 _tmp275_ = _tmp274_;
8828 _tmp269_ = _tmp275_;
8829 }
8830 if (_tmp269_) {
8831 ValaProperty* _tmp276_;
8832 ValaPropertyAccessor* _tmp277_;
8833 ValaPropertyAccessor* _tmp278_;
8834 gchar* _tmp279_;
8835 _tmp276_ = prop;
8836 _tmp277_ = vala_property_get_get_accessor (_tmp276_);
8837 _tmp278_ = _tmp277_;
8838 _tmp279_ = vala_get_ccode_name ((ValaCodeNode*) _tmp278_);
8839 _g_free0 (cname);
8840 cname = _tmp279_;
8841 }
8842 _tmp280_ = cname;
8843 _tmp281_ = vala_ccode_identifier_new (_tmp280_);
8844 cfunc = (ValaCCodeExpression*) _tmp281_;
8845 _tmp283_ = prop;
8846 _tmp284_ = vala_property_get_is_abstract (_tmp283_);
8847 _tmp285_ = _tmp284_;
8848 if (_tmp285_) {
8849 _tmp282_ = TRUE;
8850 } else {
8851 ValaProperty* _tmp286_;
8852 gboolean _tmp287_;
8853 gboolean _tmp288_;
8854 _tmp286_ = prop;
8855 _tmp287_ = vala_property_get_is_virtual (_tmp286_);
8856 _tmp288_ = _tmp287_;
8857 _tmp282_ = _tmp288_;
8858 }
8859 if (_tmp282_) {
8860 ValaProperty* _tmp289_;
8861 ValaPropertyAccessor* _tmp290_;
8862 ValaPropertyAccessor* _tmp291_;
8863 ValaCCodeExpression* _tmp292_;
8864 ValaObjectTypeSymbol* _tmp293_;
8865 ValaCCodeExpression* _tmp294_;
8866 _tmp289_ = prop;
8867 _tmp290_ = vala_property_get_get_accessor (_tmp289_);
8868 _tmp291_ = _tmp290_;
8869 _tmp292_ = cfunc;
8870 _tmp293_ = base_type;
8871 _tmp294_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp291_, _tmp292_, _tmp293_);
8872 _vala_ccode_node_unref0 (cfunc);
8873 cfunc = _tmp294_;
8874 }
8875 _tmp295_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
8876 _tmp296_ = _tmp295_;
8877 _tmp297_ = ciface;
8878 _tmp298_ = prop;
8879 _tmp299_ = vala_symbol_get_name ((ValaSymbol*) _tmp298_);
8880 _tmp300_ = _tmp299_;
8881 _tmp301_ = g_strdup_printf ("get_%s", _tmp300_);
8882 _tmp302_ = _tmp301_;
8883 _tmp303_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp297_, _tmp302_);
8884 _tmp304_ = _tmp303_;
8885 _tmp305_ = cfunc;
8886 vala_ccode_function_add_assignment (_tmp296_, (ValaCCodeExpression*) _tmp304_, _tmp305_);
8887 _vala_ccode_node_unref0 (_tmp304_);
8888 _g_free0 (_tmp302_);
8889 _vala_ccode_node_unref0 (cfunc);
8890 _g_free0 (cname);
8891 }
8892 _tmp306_ = prop;
8893 _tmp307_ = vala_property_get_set_accessor (_tmp306_);
8894 _tmp308_ = _tmp307_;
8895 if (_tmp308_ != NULL) {
8896 ValaProperty* _tmp309_;
8897 ValaProperty* _tmp310_;
8898 ValaProperty* _tmp311_;
8899 ValaPropertyAccessor* _tmp312_;
8900 ValaPropertyAccessor* _tmp313_;
8901 ValaCCodeFile* _tmp314_;
8902 gchar* cname = NULL;
8903 ValaProperty* _tmp315_;
8904 ValaPropertyAccessor* _tmp316_;
8905 ValaPropertyAccessor* _tmp317_;
8906 gchar* _tmp318_;
8907 gboolean _tmp319_ = FALSE;
8908 ValaProperty* _tmp320_;
8909 gboolean _tmp321_;
8910 gboolean _tmp322_;
8911 ValaCCodeExpression* cfunc = NULL;
8912 const gchar* _tmp330_;
8913 ValaCCodeIdentifier* _tmp331_;
8914 gboolean _tmp332_ = FALSE;
8915 ValaProperty* _tmp333_;
8916 gboolean _tmp334_;
8917 gboolean _tmp335_;
8918 ValaCCodeFunction* _tmp345_;
8919 ValaCCodeFunction* _tmp346_;
8920 ValaCCodeIdentifier* _tmp347_;
8921 ValaProperty* _tmp348_;
8922 const gchar* _tmp349_;
8923 const gchar* _tmp350_;
8924 gchar* _tmp351_;
8925 gchar* _tmp352_;
8926 ValaCCodeMemberAccess* _tmp353_;
8927 ValaCCodeMemberAccess* _tmp354_;
8928 ValaCCodeExpression* _tmp355_;
8929 _tmp309_ = prop;
8930 _tmp310_ = vala_property_get_base_interface_property (_tmp309_);
8931 _tmp311_ = _tmp310_;
8932 _tmp312_ = vala_property_get_set_accessor (_tmp311_);
8933 _tmp313_ = _tmp312_;
8934 _tmp314_ = ((ValaCCodeBaseModule*) self)->cfile;
8935 vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp313_, _tmp314_);
8936 _tmp315_ = prop;
8937 _tmp316_ = vala_property_get_set_accessor (_tmp315_);
8938 _tmp317_ = _tmp316_;
8939 _tmp318_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp317_);
8940 cname = _tmp318_;
8941 _tmp320_ = prop;
8942 _tmp321_ = vala_property_get_is_abstract (_tmp320_);
8943 _tmp322_ = _tmp321_;
8944 if (_tmp322_) {
8945 _tmp319_ = TRUE;
8946 } else {
8947 ValaProperty* _tmp323_;
8948 gboolean _tmp324_;
8949 gboolean _tmp325_;
8950 _tmp323_ = prop;
8951 _tmp324_ = vala_property_get_is_virtual (_tmp323_);
8952 _tmp325_ = _tmp324_;
8953 _tmp319_ = _tmp325_;
8954 }
8955 if (_tmp319_) {
8956 ValaProperty* _tmp326_;
8957 ValaPropertyAccessor* _tmp327_;
8958 ValaPropertyAccessor* _tmp328_;
8959 gchar* _tmp329_;
8960 _tmp326_ = prop;
8961 _tmp327_ = vala_property_get_set_accessor (_tmp326_);
8962 _tmp328_ = _tmp327_;
8963 _tmp329_ = vala_get_ccode_name ((ValaCodeNode*) _tmp328_);
8964 _g_free0 (cname);
8965 cname = _tmp329_;
8966 }
8967 _tmp330_ = cname;
8968 _tmp331_ = vala_ccode_identifier_new (_tmp330_);
8969 cfunc = (ValaCCodeExpression*) _tmp331_;
8970 _tmp333_ = prop;
8971 _tmp334_ = vala_property_get_is_abstract (_tmp333_);
8972 _tmp335_ = _tmp334_;
8973 if (_tmp335_) {
8974 _tmp332_ = TRUE;
8975 } else {
8976 ValaProperty* _tmp336_;
8977 gboolean _tmp337_;
8978 gboolean _tmp338_;
8979 _tmp336_ = prop;
8980 _tmp337_ = vala_property_get_is_virtual (_tmp336_);
8981 _tmp338_ = _tmp337_;
8982 _tmp332_ = _tmp338_;
8983 }
8984 if (_tmp332_) {
8985 ValaProperty* _tmp339_;
8986 ValaPropertyAccessor* _tmp340_;
8987 ValaPropertyAccessor* _tmp341_;
8988 ValaCCodeExpression* _tmp342_;
8989 ValaObjectTypeSymbol* _tmp343_;
8990 ValaCCodeExpression* _tmp344_;
8991 _tmp339_ = prop;
8992 _tmp340_ = vala_property_get_set_accessor (_tmp339_);
8993 _tmp341_ = _tmp340_;
8994 _tmp342_ = cfunc;
8995 _tmp343_ = base_type;
8996 _tmp344_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp341_, _tmp342_, _tmp343_);
8997 _vala_ccode_node_unref0 (cfunc);
8998 cfunc = _tmp344_;
8999 }
9000 _tmp345_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
9001 _tmp346_ = _tmp345_;
9002 _tmp347_ = ciface;
9003 _tmp348_ = prop;
9004 _tmp349_ = vala_symbol_get_name ((ValaSymbol*) _tmp348_);
9005 _tmp350_ = _tmp349_;
9006 _tmp351_ = g_strdup_printf ("set_%s", _tmp350_);
9007 _tmp352_ = _tmp351_;
9008 _tmp353_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp347_, _tmp352_);
9009 _tmp354_ = _tmp353_;
9010 _tmp355_ = cfunc;
9011 vala_ccode_function_add_assignment (_tmp346_, (ValaCCodeExpression*) _tmp354_, _tmp355_);
9012 _vala_ccode_node_unref0 (_tmp354_);
9013 _g_free0 (_tmp352_);
9014 _vala_ccode_node_unref0 (cfunc);
9015 _g_free0 (cname);
9016 }
9017 }
9018 _vala_ccode_node_unref0 (ciface);
9019 _vala_code_node_unref0 (base_type);
9020 _vala_code_node_unref0 (prop);
9021 }
9022 _vala_iterable_unref0 (_prop_list);
9023 }
9024 {
9025 ValaList* _prop_list = NULL;
9026 ValaList* _tmp356_;
9027 ValaList* _tmp357_;
9028 gint _prop_size = 0;
9029 ValaList* _tmp358_;
9030 gint _tmp359_;
9031 gint _tmp360_;
9032 gint _prop_index = 0;
9033 _tmp356_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) iface);
9034 _tmp357_ = _vala_iterable_ref0 (_tmp356_);
9035 _prop_list = _tmp357_;
9036 _tmp358_ = _prop_list;
9037 _tmp359_ = vala_collection_get_size ((ValaCollection*) _tmp358_);
9038 _tmp360_ = _tmp359_;
9039 _prop_size = _tmp360_;
9040 _prop_index = -1;
9041 while (TRUE) {
9042 gint _tmp361_;
9043 gint _tmp362_;
9044 ValaProperty* prop = NULL;
9045 ValaList* _tmp363_;
9046 gpointer _tmp364_;
9047 ValaProperty* _tmp365_;
9048 gboolean _tmp366_;
9049 gboolean _tmp367_;
9050 ValaProperty* cl_prop = NULL;
9051 ValaClass* base_class = NULL;
9052 ValaClass* _tmp368_;
9053 gboolean _tmp384_ = FALSE;
9054 ValaClass* _tmp385_;
9055 _prop_index = _prop_index + 1;
9056 _tmp361_ = _prop_index;
9057 _tmp362_ = _prop_size;
9058 if (!(_tmp361_ < _tmp362_)) {
9059 break;
9060 }
9061 _tmp363_ = _prop_list;
9062 _tmp364_ = vala_list_get (_tmp363_, _prop_index);
9063 prop = (ValaProperty*) _tmp364_;
9064 _tmp365_ = prop;
9065 _tmp366_ = vala_property_get_is_abstract (_tmp365_);
9066 _tmp367_ = _tmp366_;
9067 if (!_tmp367_) {
9068 _vala_code_node_unref0 (prop);
9069 continue;
9070 }
9071 cl_prop = NULL;
9072 _tmp368_ = _vala_code_node_ref0 (cl);
9073 base_class = _tmp368_;
9074 while (TRUE) {
9075 gboolean _tmp369_ = FALSE;
9076 ValaClass* _tmp370_;
9077 ValaClass* _tmp372_;
9078 ValaScope* _tmp373_;
9079 ValaScope* _tmp374_;
9080 ValaProperty* _tmp375_;
9081 const gchar* _tmp376_;
9082 const gchar* _tmp377_;
9083 ValaSymbol* _tmp378_;
9084 ValaProperty* _tmp379_;
9085 ValaClass* _tmp380_;
9086 ValaClass* _tmp381_;
9087 ValaClass* _tmp382_;
9088 ValaClass* _tmp383_;
9089 _tmp370_ = base_class;
9090 if (_tmp370_ != NULL) {
9091 ValaProperty* _tmp371_;
9092 _tmp371_ = cl_prop;
9093 _tmp369_ = _tmp371_ == NULL;
9094 } else {
9095 _tmp369_ = FALSE;
9096 }
9097 if (!_tmp369_) {
9098 break;
9099 }
9100 _tmp372_ = base_class;
9101 _tmp373_ = vala_symbol_get_scope ((ValaSymbol*) _tmp372_);
9102 _tmp374_ = _tmp373_;
9103 _tmp375_ = prop;
9104 _tmp376_ = vala_symbol_get_name ((ValaSymbol*) _tmp375_);
9105 _tmp377_ = _tmp376_;
9106 _tmp378_ = vala_scope_lookup (_tmp374_, _tmp377_);
9107 _tmp379_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp378_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp378_) : NULL;
9108 if (_tmp379_ == NULL) {
9109 _vala_code_node_unref0 (_tmp378_);
9110 }
9111 _vala_code_node_unref0 (cl_prop);
9112 cl_prop = _tmp379_;
9113 _tmp380_ = base_class;
9114 _tmp381_ = vala_class_get_base_class (_tmp380_);
9115 _tmp382_ = _tmp381_;
9116 _tmp383_ = _vala_code_node_ref0 (_tmp382_);
9117 _vala_code_node_unref0 (base_class);
9118 base_class = _tmp383_;
9119 }
9120 _tmp385_ = base_class;
9121 if (_tmp385_ != NULL) {
9122 ValaProperty* _tmp386_;
9123 ValaSymbol* _tmp387_;
9124 ValaSymbol* _tmp388_;
9125 _tmp386_ = cl_prop;
9126 _tmp387_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp386_);
9127 _tmp388_ = _tmp387_;
9128 _tmp384_ = _tmp388_ != G_TYPE_CHECK_INSTANCE_CAST (cl, VALA_TYPE_SYMBOL, ValaSymbol);
9129 } else {
9130 _tmp384_ = FALSE;
9131 }
9132 if (_tmp384_) {
9133 ValaProperty* base_property = NULL;
9134 ValaProperty* _tmp389_;
9135 ValaProperty* _tmp390_;
9136 ValaProperty* _tmp391_;
9137 ValaProperty* _tmp392_;
9138 ValaProperty* _tmp393_;
9139 ValaProperty* _tmp405_;
9140 ValaProperty* _tmp406_;
9141 ValaCCodeIdentifier* ciface = NULL;
9142 ValaCCodeIdentifier* _tmp407_;
9143 gboolean _tmp408_ = FALSE;
9144 ValaProperty* _tmp409_;
9145 ValaPropertyAccessor* _tmp410_;
9146 ValaPropertyAccessor* _tmp411_;
9147 gboolean _tmp441_ = FALSE;
9148 ValaProperty* _tmp442_;
9149 ValaPropertyAccessor* _tmp443_;
9150 ValaPropertyAccessor* _tmp444_;
9151 _tmp389_ = cl_prop;
9152 _tmp390_ = _vala_code_node_ref0 (_tmp389_);
9153 base_property = _tmp390_;
9154 _tmp391_ = cl_prop;
9155 _tmp392_ = vala_property_get_base_property (_tmp391_);
9156 _tmp393_ = _tmp392_;
9157 if (_tmp393_ != NULL) {
9158 ValaProperty* _tmp394_;
9159 ValaProperty* _tmp395_;
9160 ValaProperty* _tmp396_;
9161 ValaProperty* _tmp397_;
9162 _tmp394_ = cl_prop;
9163 _tmp395_ = vala_property_get_base_property (_tmp394_);
9164 _tmp396_ = _tmp395_;
9165 _tmp397_ = _vala_code_node_ref0 (_tmp396_);
9166 _vala_code_node_unref0 (base_property);
9167 base_property = _tmp397_;
9168 } else {
9169 ValaProperty* _tmp398_;
9170 ValaProperty* _tmp399_;
9171 ValaProperty* _tmp400_;
9172 _tmp398_ = cl_prop;
9173 _tmp399_ = vala_property_get_base_interface_property (_tmp398_);
9174 _tmp400_ = _tmp399_;
9175 if (_tmp400_ != NULL) {
9176 ValaProperty* _tmp401_;
9177 ValaProperty* _tmp402_;
9178 ValaProperty* _tmp403_;
9179 ValaProperty* _tmp404_;
9180 _tmp401_ = cl_prop;
9181 _tmp402_ = vala_property_get_base_interface_property (_tmp401_);
9182 _tmp403_ = _tmp402_;
9183 _tmp404_ = _vala_code_node_ref0 (_tmp403_);
9184 _vala_code_node_unref0 (base_property);
9185 base_property = _tmp404_;
9186 }
9187 }
9188 _tmp405_ = prop;
9189 _tmp406_ = base_property;
9190 if (_tmp405_ == _tmp406_) {
9191 _vala_code_node_unref0 (base_property);
9192 _vala_code_node_unref0 (base_class);
9193 _vala_code_node_unref0 (cl_prop);
9194 _vala_code_node_unref0 (prop);
9195 continue;
9196 }
9197 _tmp407_ = vala_ccode_identifier_new ("iface");
9198 ciface = _tmp407_;
9199 _tmp409_ = base_property;
9200 _tmp410_ = vala_property_get_get_accessor (_tmp409_);
9201 _tmp411_ = _tmp410_;
9202 if (_tmp411_ != NULL) {
9203 ValaProperty* _tmp412_;
9204 ValaPropertyAccessor* _tmp413_;
9205 ValaPropertyAccessor* _tmp414_;
9206 _tmp412_ = prop;
9207 _tmp413_ = vala_property_get_get_accessor (_tmp412_);
9208 _tmp414_ = _tmp413_;
9209 _tmp408_ = _tmp414_ != NULL;
9210 } else {
9211 _tmp408_ = FALSE;
9212 }
9213 if (_tmp408_) {
9214 ValaProperty* _tmp415_;
9215 ValaPropertyAccessor* _tmp416_;
9216 ValaPropertyAccessor* _tmp417_;
9217 ValaCCodeFile* _tmp418_;
9218 gchar* cname = NULL;
9219 ValaProperty* _tmp419_;
9220 ValaPropertyAccessor* _tmp420_;
9221 ValaPropertyAccessor* _tmp421_;
9222 gchar* _tmp422_;
9223 ValaCCodeExpression* cfunc = NULL;
9224 const gchar* _tmp423_;
9225 ValaCCodeIdentifier* _tmp424_;
9226 ValaProperty* _tmp425_;
9227 ValaPropertyAccessor* _tmp426_;
9228 ValaPropertyAccessor* _tmp427_;
9229 ValaCCodeExpression* _tmp428_;
9230 ValaCCodeExpression* _tmp429_;
9231 ValaCCodeFunction* _tmp430_;
9232 ValaCCodeFunction* _tmp431_;
9233 ValaCCodeIdentifier* _tmp432_;
9234 ValaProperty* _tmp433_;
9235 const gchar* _tmp434_;
9236 const gchar* _tmp435_;
9237 gchar* _tmp436_;
9238 gchar* _tmp437_;
9239 ValaCCodeMemberAccess* _tmp438_;
9240 ValaCCodeMemberAccess* _tmp439_;
9241 ValaCCodeExpression* _tmp440_;
9242 _tmp415_ = base_property;
9243 _tmp416_ = vala_property_get_get_accessor (_tmp415_);
9244 _tmp417_ = _tmp416_;
9245 _tmp418_ = ((ValaCCodeBaseModule*) self)->cfile;
9246 vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp417_, _tmp418_);
9247 _tmp419_ = base_property;
9248 _tmp420_ = vala_property_get_get_accessor (_tmp419_);
9249 _tmp421_ = _tmp420_;
9250 _tmp422_ = vala_get_ccode_name ((ValaCodeNode*) _tmp421_);
9251 cname = _tmp422_;
9252 _tmp423_ = cname;
9253 _tmp424_ = vala_ccode_identifier_new (_tmp423_);
9254 cfunc = (ValaCCodeExpression*) _tmp424_;
9255 _tmp425_ = prop;
9256 _tmp426_ = vala_property_get_get_accessor (_tmp425_);
9257 _tmp427_ = _tmp426_;
9258 _tmp428_ = cfunc;
9259 _tmp429_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp427_, _tmp428_, (ValaObjectTypeSymbol*) iface);
9260 _vala_ccode_node_unref0 (cfunc);
9261 cfunc = _tmp429_;
9262 _tmp430_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
9263 _tmp431_ = _tmp430_;
9264 _tmp432_ = ciface;
9265 _tmp433_ = prop;
9266 _tmp434_ = vala_symbol_get_name ((ValaSymbol*) _tmp433_);
9267 _tmp435_ = _tmp434_;
9268 _tmp436_ = g_strdup_printf ("get_%s", _tmp435_);
9269 _tmp437_ = _tmp436_;
9270 _tmp438_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp432_, _tmp437_);
9271 _tmp439_ = _tmp438_;
9272 _tmp440_ = cfunc;
9273 vala_ccode_function_add_assignment (_tmp431_, (ValaCCodeExpression*) _tmp439_, _tmp440_);
9274 _vala_ccode_node_unref0 (_tmp439_);
9275 _g_free0 (_tmp437_);
9276 _vala_ccode_node_unref0 (cfunc);
9277 _g_free0 (cname);
9278 }
9279 _tmp442_ = base_property;
9280 _tmp443_ = vala_property_get_set_accessor (_tmp442_);
9281 _tmp444_ = _tmp443_;
9282 if (_tmp444_ != NULL) {
9283 ValaProperty* _tmp445_;
9284 ValaPropertyAccessor* _tmp446_;
9285 ValaPropertyAccessor* _tmp447_;
9286 _tmp445_ = prop;
9287 _tmp446_ = vala_property_get_set_accessor (_tmp445_);
9288 _tmp447_ = _tmp446_;
9289 _tmp441_ = _tmp447_ != NULL;
9290 } else {
9291 _tmp441_ = FALSE;
9292 }
9293 if (_tmp441_) {
9294 ValaProperty* _tmp448_;
9295 ValaPropertyAccessor* _tmp449_;
9296 ValaPropertyAccessor* _tmp450_;
9297 ValaCCodeFile* _tmp451_;
9298 gchar* cname = NULL;
9299 ValaProperty* _tmp452_;
9300 ValaPropertyAccessor* _tmp453_;
9301 ValaPropertyAccessor* _tmp454_;
9302 gchar* _tmp455_;
9303 ValaCCodeExpression* cfunc = NULL;
9304 const gchar* _tmp456_;
9305 ValaCCodeIdentifier* _tmp457_;
9306 ValaProperty* _tmp458_;
9307 ValaPropertyAccessor* _tmp459_;
9308 ValaPropertyAccessor* _tmp460_;
9309 ValaCCodeExpression* _tmp461_;
9310 ValaCCodeExpression* _tmp462_;
9311 ValaCCodeFunction* _tmp463_;
9312 ValaCCodeFunction* _tmp464_;
9313 ValaCCodeIdentifier* _tmp465_;
9314 ValaProperty* _tmp466_;
9315 const gchar* _tmp467_;
9316 const gchar* _tmp468_;
9317 gchar* _tmp469_;
9318 gchar* _tmp470_;
9319 ValaCCodeMemberAccess* _tmp471_;
9320 ValaCCodeMemberAccess* _tmp472_;
9321 ValaCCodeExpression* _tmp473_;
9322 _tmp448_ = base_property;
9323 _tmp449_ = vala_property_get_set_accessor (_tmp448_);
9324 _tmp450_ = _tmp449_;
9325 _tmp451_ = ((ValaCCodeBaseModule*) self)->cfile;
9326 vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp450_, _tmp451_);
9327 _tmp452_ = base_property;
9328 _tmp453_ = vala_property_get_set_accessor (_tmp452_);
9329 _tmp454_ = _tmp453_;
9330 _tmp455_ = vala_get_ccode_name ((ValaCodeNode*) _tmp454_);
9331 cname = _tmp455_;
9332 _tmp456_ = cname;
9333 _tmp457_ = vala_ccode_identifier_new (_tmp456_);
9334 cfunc = (ValaCCodeExpression*) _tmp457_;
9335 _tmp458_ = prop;
9336 _tmp459_ = vala_property_get_set_accessor (_tmp458_);
9337 _tmp460_ = _tmp459_;
9338 _tmp461_ = cfunc;
9339 _tmp462_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp460_, _tmp461_, (ValaObjectTypeSymbol*) iface);
9340 _vala_ccode_node_unref0 (cfunc);
9341 cfunc = _tmp462_;
9342 _tmp463_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
9343 _tmp464_ = _tmp463_;
9344 _tmp465_ = ciface;
9345 _tmp466_ = prop;
9346 _tmp467_ = vala_symbol_get_name ((ValaSymbol*) _tmp466_);
9347 _tmp468_ = _tmp467_;
9348 _tmp469_ = g_strdup_printf ("set_%s", _tmp468_);
9349 _tmp470_ = _tmp469_;
9350 _tmp471_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp465_, _tmp470_);
9351 _tmp472_ = _tmp471_;
9352 _tmp473_ = cfunc;
9353 vala_ccode_function_add_assignment (_tmp464_, (ValaCCodeExpression*) _tmp472_, _tmp473_);
9354 _vala_ccode_node_unref0 (_tmp472_);
9355 _g_free0 (_tmp470_);
9356 _vala_ccode_node_unref0 (cfunc);
9357 _g_free0 (cname);
9358 }
9359 _vala_ccode_node_unref0 (ciface);
9360 _vala_code_node_unref0 (base_property);
9361 }
9362 _vala_code_node_unref0 (base_class);
9363 _vala_code_node_unref0 (cl_prop);
9364 _vala_code_node_unref0 (prop);
9365 }
9366 _vala_iterable_unref0 (_prop_list);
9367 }
9368 vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
9369 _tmp474_ = ((ValaCCodeBaseModule*) self)->cfile;
9370 _tmp475_ = iface_init;
9371 vala_ccode_file_add_function (_tmp474_, _tmp475_);
9372 _vala_map_iterator_unref0 (it);
9373 _vala_ccode_node_unref0 (parent_var_decl);
9374 _vala_ccode_node_unref0 (parent_decl);
9375 _g_free0 (parent_iface_var);
9376 _vala_ccode_node_unref0 (ccall);
9377 _vala_ccode_node_unref0 (iface_init);
9378 }
9379
9380 static ValaCCodeExpression*
vala_gtype_module_cast_property_accessor_pointer(ValaGTypeModule * self,ValaPropertyAccessor * acc,ValaCCodeExpression * cfunc,ValaObjectTypeSymbol * base_type)9381 vala_gtype_module_cast_property_accessor_pointer (ValaGTypeModule* self,
9382 ValaPropertyAccessor* acc,
9383 ValaCCodeExpression* cfunc,
9384 ValaObjectTypeSymbol* base_type)
9385 {
9386 gchar* cast = NULL;
9387 gboolean _tmp0_ = FALSE;
9388 gboolean _tmp1_;
9389 gboolean _tmp2_;
9390 const gchar* _tmp37_;
9391 ValaCCodeCastExpression* _tmp38_;
9392 ValaCCodeExpression* result = NULL;
9393 g_return_val_if_fail (self != NULL, NULL);
9394 g_return_val_if_fail (acc != NULL, NULL);
9395 g_return_val_if_fail (cfunc != NULL, NULL);
9396 g_return_val_if_fail (base_type != NULL, NULL);
9397 _tmp1_ = vala_property_accessor_get_readable (acc);
9398 _tmp2_ = _tmp1_;
9399 if (_tmp2_) {
9400 ValaDataType* _tmp3_;
9401 ValaDataType* _tmp4_;
9402 _tmp3_ = vala_property_accessor_get_value_type (acc);
9403 _tmp4_ = _tmp3_;
9404 _tmp0_ = vala_data_type_is_real_non_null_struct_type (_tmp4_);
9405 } else {
9406 _tmp0_ = FALSE;
9407 }
9408 if (_tmp0_) {
9409 gchar* _tmp5_;
9410 gchar* _tmp6_;
9411 ValaDataType* _tmp7_;
9412 ValaDataType* _tmp8_;
9413 gchar* _tmp9_;
9414 gchar* _tmp10_;
9415 gchar* _tmp11_;
9416 _tmp5_ = vala_get_ccode_name ((ValaCodeNode*) base_type);
9417 _tmp6_ = _tmp5_;
9418 _tmp7_ = vala_property_accessor_get_value_type (acc);
9419 _tmp8_ = _tmp7_;
9420 _tmp9_ = vala_get_ccode_name ((ValaCodeNode*) _tmp8_);
9421 _tmp10_ = _tmp9_;
9422 _tmp11_ = g_strdup_printf ("void (*) (%s *, %s *)", _tmp6_, _tmp10_);
9423 _g_free0 (cast);
9424 cast = _tmp11_;
9425 _g_free0 (_tmp10_);
9426 _g_free0 (_tmp6_);
9427 } else {
9428 gboolean _tmp12_;
9429 gboolean _tmp13_;
9430 _tmp12_ = vala_property_accessor_get_readable (acc);
9431 _tmp13_ = _tmp12_;
9432 if (_tmp13_) {
9433 ValaDataType* _tmp14_;
9434 ValaDataType* _tmp15_;
9435 gchar* _tmp16_;
9436 gchar* _tmp17_;
9437 gchar* _tmp18_;
9438 gchar* _tmp19_;
9439 gchar* _tmp20_;
9440 _tmp14_ = vala_property_accessor_get_value_type (acc);
9441 _tmp15_ = _tmp14_;
9442 _tmp16_ = vala_get_ccode_name ((ValaCodeNode*) _tmp15_);
9443 _tmp17_ = _tmp16_;
9444 _tmp18_ = vala_get_ccode_name ((ValaCodeNode*) base_type);
9445 _tmp19_ = _tmp18_;
9446 _tmp20_ = g_strdup_printf ("%s (*) (%s *)", _tmp17_, _tmp19_);
9447 _g_free0 (cast);
9448 cast = _tmp20_;
9449 _g_free0 (_tmp19_);
9450 _g_free0 (_tmp17_);
9451 } else {
9452 ValaDataType* _tmp21_;
9453 ValaDataType* _tmp22_;
9454 _tmp21_ = vala_property_accessor_get_value_type (acc);
9455 _tmp22_ = _tmp21_;
9456 if (vala_data_type_is_real_non_null_struct_type (_tmp22_)) {
9457 gchar* _tmp23_;
9458 gchar* _tmp24_;
9459 ValaDataType* _tmp25_;
9460 ValaDataType* _tmp26_;
9461 gchar* _tmp27_;
9462 gchar* _tmp28_;
9463 gchar* _tmp29_;
9464 _tmp23_ = vala_get_ccode_name ((ValaCodeNode*) base_type);
9465 _tmp24_ = _tmp23_;
9466 _tmp25_ = vala_property_accessor_get_value_type (acc);
9467 _tmp26_ = _tmp25_;
9468 _tmp27_ = vala_get_ccode_name ((ValaCodeNode*) _tmp26_);
9469 _tmp28_ = _tmp27_;
9470 _tmp29_ = g_strdup_printf ("void (*) (%s *, %s *)", _tmp24_, _tmp28_);
9471 _g_free0 (cast);
9472 cast = _tmp29_;
9473 _g_free0 (_tmp28_);
9474 _g_free0 (_tmp24_);
9475 } else {
9476 gchar* _tmp30_;
9477 gchar* _tmp31_;
9478 ValaDataType* _tmp32_;
9479 ValaDataType* _tmp33_;
9480 gchar* _tmp34_;
9481 gchar* _tmp35_;
9482 gchar* _tmp36_;
9483 _tmp30_ = vala_get_ccode_name ((ValaCodeNode*) base_type);
9484 _tmp31_ = _tmp30_;
9485 _tmp32_ = vala_property_accessor_get_value_type (acc);
9486 _tmp33_ = _tmp32_;
9487 _tmp34_ = vala_get_ccode_name ((ValaCodeNode*) _tmp33_);
9488 _tmp35_ = _tmp34_;
9489 _tmp36_ = g_strdup_printf ("void (*) (%s *, %s)", _tmp31_, _tmp35_);
9490 _g_free0 (cast);
9491 cast = _tmp36_;
9492 _g_free0 (_tmp35_);
9493 _g_free0 (_tmp31_);
9494 }
9495 }
9496 }
9497 _tmp37_ = cast;
9498 _tmp38_ = vala_ccode_cast_expression_new (cfunc, _tmp37_);
9499 result = (ValaCCodeExpression*) _tmp38_;
9500 _g_free0 (cast);
9501 return result;
9502 }
9503
9504 static ValaCCodeExpression*
vala_gtype_module_cast_method_pointer(ValaGTypeModule * self,ValaMethod * m,ValaCCodeExpression * cfunc,ValaObjectTypeSymbol * base_type,gint direction)9505 vala_gtype_module_cast_method_pointer (ValaGTypeModule* self,
9506 ValaMethod* m,
9507 ValaCCodeExpression* cfunc,
9508 ValaObjectTypeSymbol* base_type,
9509 gint direction)
9510 {
9511 gchar* cast = NULL;
9512 gboolean _tmp0_ = FALSE;
9513 ValaCCodeFunctionDeclarator* vdeclarator = NULL;
9514 gchar* _tmp9_;
9515 gchar* _tmp10_;
9516 ValaCCodeFunctionDeclarator* _tmp11_;
9517 ValaCCodeFunctionDeclarator* _tmp12_;
9518 ValaHashMap* cparam_map = NULL;
9519 GHashFunc _tmp13_;
9520 GEqualFunc _tmp14_;
9521 GEqualFunc _tmp15_;
9522 ValaHashMap* _tmp16_;
9523 ValaCCodeFile* _tmp17_;
9524 ValaHashMap* _tmp18_;
9525 ValaCCodeFunction* _tmp19_;
9526 ValaCCodeFunction* _tmp20_;
9527 ValaCCodeFunctionDeclarator* _tmp21_;
9528 gint last_pos = 0;
9529 gint min_pos = 0;
9530 gchar* cast_args = NULL;
9531 gchar* _tmp22_;
9532 const gchar* _tmp47_;
9533 const gchar* _tmp48_;
9534 gchar* _tmp49_;
9535 const gchar* _tmp50_;
9536 ValaCCodeCastExpression* _tmp51_;
9537 ValaCCodeExpression* result = NULL;
9538 g_return_val_if_fail (self != NULL, NULL);
9539 g_return_val_if_fail (m != NULL, NULL);
9540 g_return_val_if_fail (cfunc != NULL, NULL);
9541 g_return_val_if_fail (base_type != NULL, NULL);
9542 if (direction == 1) {
9543 _tmp0_ = TRUE;
9544 } else {
9545 ValaDataType* _tmp1_;
9546 ValaDataType* _tmp2_;
9547 _tmp1_ = vala_callable_get_return_type ((ValaCallable*) m);
9548 _tmp2_ = _tmp1_;
9549 _tmp0_ = vala_data_type_is_real_non_null_struct_type (_tmp2_);
9550 }
9551 if (_tmp0_) {
9552 gchar* _tmp3_;
9553 _tmp3_ = g_strdup ("void (*)");
9554 _g_free0 (cast);
9555 cast = _tmp3_;
9556 } else {
9557 ValaDataType* _tmp4_;
9558 ValaDataType* _tmp5_;
9559 gchar* _tmp6_;
9560 gchar* _tmp7_;
9561 gchar* _tmp8_;
9562 _tmp4_ = vala_callable_get_return_type ((ValaCallable*) m);
9563 _tmp5_ = _tmp4_;
9564 _tmp6_ = vala_get_ccode_name ((ValaCodeNode*) _tmp5_);
9565 _tmp7_ = _tmp6_;
9566 _tmp8_ = g_strdup_printf ("%s (*)", _tmp7_);
9567 _g_free0 (cast);
9568 cast = _tmp8_;
9569 _g_free0 (_tmp7_);
9570 }
9571 _tmp9_ = vala_get_ccode_vfunc_name (m);
9572 _tmp10_ = _tmp9_;
9573 _tmp11_ = vala_ccode_function_declarator_new (_tmp10_);
9574 _tmp12_ = _tmp11_;
9575 _g_free0 (_tmp10_);
9576 vdeclarator = _tmp12_;
9577 _tmp13_ = g_direct_hash;
9578 _tmp14_ = g_direct_equal;
9579 _tmp15_ = g_direct_equal;
9580 _tmp16_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp13_, _tmp14_, _tmp15_);
9581 cparam_map = _tmp16_;
9582 _tmp17_ = ((ValaCCodeBaseModule*) self)->cfile;
9583 _tmp18_ = cparam_map;
9584 _tmp19_ = vala_ccode_function_new ("fake", "void");
9585 _tmp20_ = _tmp19_;
9586 _tmp21_ = vdeclarator;
9587 vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, _tmp17_, (ValaMap*) _tmp18_, _tmp20_, _tmp21_, NULL, NULL, direction);
9588 _vala_ccode_node_unref0 (_tmp20_);
9589 last_pos = -1;
9590 _tmp22_ = g_strdup ("");
9591 cast_args = _tmp22_;
9592 while (TRUE) {
9593 ValaCCodeParameter* cparam = NULL;
9594 ValaHashMap* _tmp35_;
9595 gpointer _tmp36_;
9596 ValaCCodeParameter* _tmp37_;
9597 gboolean _tmp38_;
9598 gboolean _tmp39_;
9599 min_pos = -1;
9600 {
9601 ValaIterator* _pos_it = NULL;
9602 ValaHashMap* _tmp23_;
9603 ValaSet* _tmp24_;
9604 ValaSet* _tmp25_;
9605 ValaIterator* _tmp26_;
9606 ValaIterator* _tmp27_;
9607 _tmp23_ = cparam_map;
9608 _tmp24_ = vala_map_get_keys ((ValaMap*) _tmp23_);
9609 _tmp25_ = _tmp24_;
9610 _tmp26_ = vala_iterable_iterator ((ValaIterable*) _tmp25_);
9611 _tmp27_ = _tmp26_;
9612 _vala_iterable_unref0 (_tmp25_);
9613 _pos_it = _tmp27_;
9614 while (TRUE) {
9615 ValaIterator* _tmp28_;
9616 gint pos = 0;
9617 ValaIterator* _tmp29_;
9618 gpointer _tmp30_;
9619 gboolean _tmp31_ = FALSE;
9620 _tmp28_ = _pos_it;
9621 if (!vala_iterator_next (_tmp28_)) {
9622 break;
9623 }
9624 _tmp29_ = _pos_it;
9625 _tmp30_ = vala_iterator_get (_tmp29_);
9626 pos = (gint) ((gintptr) _tmp30_);
9627 if (pos > last_pos) {
9628 gboolean _tmp32_ = FALSE;
9629 if (min_pos == -1) {
9630 _tmp32_ = TRUE;
9631 } else {
9632 _tmp32_ = pos < min_pos;
9633 }
9634 _tmp31_ = _tmp32_;
9635 } else {
9636 _tmp31_ = FALSE;
9637 }
9638 if (_tmp31_) {
9639 min_pos = pos;
9640 }
9641 }
9642 _vala_iterator_unref0 (_pos_it);
9643 }
9644 if (min_pos == -1) {
9645 break;
9646 }
9647 if (last_pos != -1) {
9648 const gchar* _tmp33_;
9649 gchar* _tmp34_;
9650 _tmp33_ = cast_args;
9651 _tmp34_ = g_strdup_printf ("%s, ", _tmp33_);
9652 _g_free0 (cast_args);
9653 cast_args = _tmp34_;
9654 }
9655 _tmp35_ = cparam_map;
9656 _tmp36_ = vala_map_get ((ValaMap*) _tmp35_, (gpointer) ((gintptr) min_pos));
9657 cparam = (ValaCCodeParameter*) _tmp36_;
9658 _tmp37_ = cparam;
9659 _tmp38_ = vala_ccode_parameter_get_ellipsis (_tmp37_);
9660 _tmp39_ = _tmp38_;
9661 if (_tmp39_) {
9662 const gchar* _tmp40_;
9663 gchar* _tmp41_;
9664 _tmp40_ = cast_args;
9665 _tmp41_ = g_strdup_printf ("%s...", _tmp40_);
9666 _g_free0 (cast_args);
9667 cast_args = _tmp41_;
9668 } else {
9669 const gchar* _tmp42_;
9670 ValaCCodeParameter* _tmp43_;
9671 const gchar* _tmp44_;
9672 const gchar* _tmp45_;
9673 gchar* _tmp46_;
9674 _tmp42_ = cast_args;
9675 _tmp43_ = cparam;
9676 _tmp44_ = vala_ccode_parameter_get_type_name (_tmp43_);
9677 _tmp45_ = _tmp44_;
9678 _tmp46_ = g_strdup_printf ("%s%s", _tmp42_, _tmp45_);
9679 _g_free0 (cast_args);
9680 cast_args = _tmp46_;
9681 }
9682 last_pos = min_pos;
9683 _vala_ccode_node_unref0 (cparam);
9684 }
9685 _tmp47_ = cast;
9686 _tmp48_ = cast_args;
9687 _tmp49_ = g_strdup_printf ("%s (%s)", _tmp47_, _tmp48_);
9688 _g_free0 (cast);
9689 cast = _tmp49_;
9690 _tmp50_ = cast;
9691 _tmp51_ = vala_ccode_cast_expression_new (cfunc, _tmp50_);
9692 result = (ValaCCodeExpression*) _tmp51_;
9693 _g_free0 (cast_args);
9694 _vala_map_unref0 (cparam_map);
9695 _vala_ccode_node_unref0 (vdeclarator);
9696 _g_free0 (cast);
9697 return result;
9698 }
9699
9700 static void
vala_gtype_module_begin_instance_init_function(ValaGTypeModule * self,ValaClass * cl)9701 vala_gtype_module_begin_instance_init_function (ValaGTypeModule* self,
9702 ValaClass* cl)
9703 {
9704 ValaCCodeBaseModuleEmitContext* _tmp0_;
9705 ValaCCodeFunction* func = NULL;
9706 gchar* _tmp1_;
9707 gchar* _tmp2_;
9708 gchar* _tmp3_;
9709 gchar* _tmp4_;
9710 ValaCCodeFunction* _tmp5_;
9711 ValaCCodeFunction* _tmp6_;
9712 ValaCCodeFunction* _tmp7_;
9713 gchar* _tmp8_;
9714 gchar* _tmp9_;
9715 gchar* _tmp10_;
9716 gchar* _tmp11_;
9717 ValaCCodeParameter* _tmp12_;
9718 ValaCCodeParameter* _tmp13_;
9719 gboolean _tmp14_;
9720 gboolean _tmp15_;
9721 ValaCCodeFunction* _tmp19_;
9722 ValaCCodeFunction* _tmp20_;
9723 gboolean is_gsource = FALSE;
9724 ValaClass* _tmp21_;
9725 gboolean _tmp22_;
9726 gboolean _tmp23_;
9727 gboolean _tmp201_ = FALSE;
9728 gboolean _tmp202_;
9729 gboolean _tmp203_;
9730 g_return_if_fail (self != NULL);
9731 g_return_if_fail (cl != NULL);
9732 _tmp0_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
9733 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
9734 _tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
9735 _tmp2_ = _tmp1_;
9736 _tmp3_ = g_strdup_printf ("%s_instance_init", _tmp2_);
9737 _tmp4_ = _tmp3_;
9738 _tmp5_ = vala_ccode_function_new (_tmp4_, "void");
9739 _tmp6_ = _tmp5_;
9740 _g_free0 (_tmp4_);
9741 _g_free0 (_tmp2_);
9742 func = _tmp6_;
9743 _tmp7_ = func;
9744 _tmp8_ = vala_get_ccode_name ((ValaCodeNode*) cl);
9745 _tmp9_ = _tmp8_;
9746 _tmp10_ = g_strdup_printf ("%s *", _tmp9_);
9747 _tmp11_ = _tmp10_;
9748 _tmp12_ = vala_ccode_parameter_new ("self", _tmp11_);
9749 _tmp13_ = _tmp12_;
9750 vala_ccode_function_add_parameter (_tmp7_, _tmp13_);
9751 _vala_ccode_node_unref0 (_tmp13_);
9752 _g_free0 (_tmp11_);
9753 _g_free0 (_tmp9_);
9754 _tmp14_ = vala_class_get_is_compact (cl);
9755 _tmp15_ = _tmp14_;
9756 if (!_tmp15_) {
9757 ValaCCodeFunction* _tmp16_;
9758 ValaCCodeParameter* _tmp17_;
9759 ValaCCodeParameter* _tmp18_;
9760 _tmp16_ = func;
9761 _tmp17_ = vala_ccode_parameter_new ("klass", "gpointer");
9762 _tmp18_ = _tmp17_;
9763 vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
9764 _vala_ccode_node_unref0 (_tmp18_);
9765 }
9766 _tmp19_ = func;
9767 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp19_, VALA_CCODE_MODIFIERS_STATIC);
9768 _tmp20_ = func;
9769 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp20_);
9770 _tmp21_ = ((ValaCCodeBaseModule*) self)->gsource_type;
9771 is_gsource = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp21_);
9772 _tmp22_ = vala_class_get_is_compact (cl);
9773 _tmp23_ = _tmp22_;
9774 if (_tmp23_) {
9775 ValaCCodeFile* _tmp24_;
9776 ValaCCodeFunction* _tmp25_;
9777 _tmp24_ = ((ValaCCodeBaseModule*) self)->cfile;
9778 _tmp25_ = func;
9779 vala_ccode_file_add_function_declaration (_tmp24_, _tmp25_);
9780 {
9781 ValaList* _m_list = NULL;
9782 ValaList* _tmp26_;
9783 ValaList* _tmp27_;
9784 gint _m_size = 0;
9785 ValaList* _tmp28_;
9786 gint _tmp29_;
9787 gint _tmp30_;
9788 gint _m_index = 0;
9789 _tmp26_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) cl);
9790 _tmp27_ = _vala_iterable_ref0 (_tmp26_);
9791 _m_list = _tmp27_;
9792 _tmp28_ = _m_list;
9793 _tmp29_ = vala_collection_get_size ((ValaCollection*) _tmp28_);
9794 _tmp30_ = _tmp29_;
9795 _m_size = _tmp30_;
9796 _m_index = -1;
9797 while (TRUE) {
9798 gint _tmp31_;
9799 gint _tmp32_;
9800 ValaMethod* m = NULL;
9801 ValaList* _tmp33_;
9802 gpointer _tmp34_;
9803 gboolean _tmp35_ = FALSE;
9804 ValaMethod* _tmp36_;
9805 ValaMethod* _tmp37_;
9806 ValaMethod* _tmp38_;
9807 ValaObjectTypeSymbol* base_type = NULL;
9808 ValaMethod* _tmp39_;
9809 ValaMethod* _tmp40_;
9810 ValaMethod* _tmp41_;
9811 ValaSymbol* _tmp42_;
9812 ValaSymbol* _tmp43_;
9813 ValaObjectTypeSymbol* _tmp44_;
9814 gboolean _tmp45_ = FALSE;
9815 ValaMethod* _tmp46_;
9816 gboolean _tmp47_;
9817 gboolean _tmp48_;
9818 _m_index = _m_index + 1;
9819 _tmp31_ = _m_index;
9820 _tmp32_ = _m_size;
9821 if (!(_tmp31_ < _tmp32_)) {
9822 break;
9823 }
9824 _tmp33_ = _m_list;
9825 _tmp34_ = vala_list_get (_tmp33_, _m_index);
9826 m = (ValaMethod*) _tmp34_;
9827 _tmp36_ = m;
9828 _tmp37_ = vala_method_get_base_method (_tmp36_);
9829 _tmp38_ = _tmp37_;
9830 if (_tmp38_ == NULL) {
9831 _tmp35_ = TRUE;
9832 } else {
9833 _tmp35_ = is_gsource;
9834 }
9835 if (_tmp35_) {
9836 _vala_code_node_unref0 (m);
9837 continue;
9838 }
9839 _tmp39_ = m;
9840 _tmp40_ = vala_method_get_base_method (_tmp39_);
9841 _tmp41_ = _tmp40_;
9842 _tmp42_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp41_);
9843 _tmp43_ = _tmp42_;
9844 _tmp44_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp43_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
9845 base_type = _tmp44_;
9846 _tmp46_ = m;
9847 _tmp47_ = vala_method_get_is_abstract (_tmp46_);
9848 _tmp48_ = _tmp47_;
9849 if (!_tmp48_) {
9850 _tmp45_ = TRUE;
9851 } else {
9852 ValaMethod* _tmp49_;
9853 gboolean _tmp50_;
9854 gboolean _tmp51_;
9855 _tmp49_ = m;
9856 _tmp50_ = vala_method_get_coroutine (_tmp49_);
9857 _tmp51_ = _tmp50_;
9858 _tmp45_ = !_tmp51_;
9859 }
9860 if (_tmp45_) {
9861 ValaMethod* _tmp52_;
9862 ValaMethod* _tmp53_;
9863 ValaMethod* _tmp54_;
9864 ValaCCodeFile* _tmp55_;
9865 ValaCCodeExpression* cfunc = NULL;
9866 ValaMethod* _tmp56_;
9867 gchar* _tmp57_;
9868 gchar* _tmp58_;
9869 ValaCCodeIdentifier* _tmp59_;
9870 ValaCCodeExpression* _tmp60_;
9871 gint _tmp61_ = 0;
9872 ValaMethod* _tmp62_;
9873 gboolean _tmp63_;
9874 gboolean _tmp64_;
9875 ValaMethod* _tmp65_;
9876 ValaMethod* _tmp66_;
9877 ValaMethod* _tmp67_;
9878 ValaCCodeExpression* _tmp68_;
9879 ValaObjectTypeSymbol* _tmp69_;
9880 ValaCCodeExpression* _tmp70_;
9881 ValaCCodeCastExpression* ccast = NULL;
9882 ValaCCodeIdentifier* _tmp71_;
9883 ValaCCodeIdentifier* _tmp72_;
9884 ValaObjectTypeSymbol* _tmp73_;
9885 gchar* _tmp74_;
9886 gchar* _tmp75_;
9887 gchar* _tmp76_;
9888 gchar* _tmp77_;
9889 ValaCCodeCastExpression* _tmp78_;
9890 ValaCCodeCastExpression* _tmp79_;
9891 ValaCCodeFunction* _tmp80_;
9892 ValaCCodeCastExpression* _tmp81_;
9893 ValaMethod* _tmp82_;
9894 ValaMethod* _tmp83_;
9895 ValaMethod* _tmp84_;
9896 gchar* _tmp85_;
9897 gchar* _tmp86_;
9898 ValaCCodeMemberAccess* _tmp87_;
9899 ValaCCodeMemberAccess* _tmp88_;
9900 ValaCCodeExpression* _tmp89_;
9901 ValaMethod* _tmp90_;
9902 gboolean _tmp91_;
9903 gboolean _tmp92_;
9904 _tmp52_ = m;
9905 _tmp53_ = vala_method_get_base_method (_tmp52_);
9906 _tmp54_ = _tmp53_;
9907 _tmp55_ = ((ValaCCodeBaseModule*) self)->cfile;
9908 vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp54_, _tmp55_);
9909 _tmp56_ = m;
9910 _tmp57_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp56_);
9911 _tmp58_ = _tmp57_;
9912 _tmp59_ = vala_ccode_identifier_new (_tmp58_);
9913 _tmp60_ = (ValaCCodeExpression*) _tmp59_;
9914 _g_free0 (_tmp58_);
9915 cfunc = _tmp60_;
9916 _tmp62_ = m;
9917 _tmp63_ = vala_method_get_coroutine (_tmp62_);
9918 _tmp64_ = _tmp63_;
9919 if (_tmp64_) {
9920 _tmp61_ = 1;
9921 } else {
9922 _tmp61_ = 3;
9923 }
9924 _tmp65_ = m;
9925 _tmp66_ = vala_method_get_base_method (_tmp65_);
9926 _tmp67_ = _tmp66_;
9927 _tmp68_ = cfunc;
9928 _tmp69_ = base_type;
9929 _tmp70_ = vala_gtype_module_cast_method_pointer (self, _tmp67_, _tmp68_, _tmp69_, _tmp61_);
9930 _vala_ccode_node_unref0 (cfunc);
9931 cfunc = _tmp70_;
9932 _tmp71_ = vala_ccode_identifier_new ("self");
9933 _tmp72_ = _tmp71_;
9934 _tmp73_ = base_type;
9935 _tmp74_ = vala_get_ccode_name ((ValaCodeNode*) _tmp73_);
9936 _tmp75_ = _tmp74_;
9937 _tmp76_ = g_strdup_printf ("%s *", _tmp75_);
9938 _tmp77_ = _tmp76_;
9939 _tmp78_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp72_, _tmp77_);
9940 _tmp79_ = _tmp78_;
9941 _g_free0 (_tmp77_);
9942 _g_free0 (_tmp75_);
9943 _vala_ccode_node_unref0 (_tmp72_);
9944 ccast = _tmp79_;
9945 _tmp80_ = func;
9946 _tmp81_ = ccast;
9947 _tmp82_ = m;
9948 _tmp83_ = vala_method_get_base_method (_tmp82_);
9949 _tmp84_ = _tmp83_;
9950 _tmp85_ = vala_get_ccode_vfunc_name (_tmp84_);
9951 _tmp86_ = _tmp85_;
9952 _tmp87_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp81_, _tmp86_);
9953 _tmp88_ = _tmp87_;
9954 _tmp89_ = cfunc;
9955 vala_ccode_function_add_assignment (_tmp80_, (ValaCCodeExpression*) _tmp88_, _tmp89_);
9956 _vala_ccode_node_unref0 (_tmp88_);
9957 _g_free0 (_tmp86_);
9958 _tmp90_ = m;
9959 _tmp91_ = vala_method_get_coroutine (_tmp90_);
9960 _tmp92_ = _tmp91_;
9961 if (_tmp92_) {
9962 ValaMethod* _tmp93_;
9963 gchar* _tmp94_;
9964 gchar* _tmp95_;
9965 ValaCCodeIdentifier* _tmp96_;
9966 ValaMethod* _tmp97_;
9967 ValaMethod* _tmp98_;
9968 ValaMethod* _tmp99_;
9969 ValaCCodeExpression* _tmp100_;
9970 ValaObjectTypeSymbol* _tmp101_;
9971 ValaCCodeExpression* _tmp102_;
9972 ValaCCodeFunction* _tmp103_;
9973 ValaCCodeFunction* _tmp104_;
9974 ValaCCodeCastExpression* _tmp105_;
9975 ValaMethod* _tmp106_;
9976 ValaMethod* _tmp107_;
9977 ValaMethod* _tmp108_;
9978 gchar* _tmp109_;
9979 gchar* _tmp110_;
9980 ValaCCodeMemberAccess* _tmp111_;
9981 ValaCCodeMemberAccess* _tmp112_;
9982 ValaCCodeExpression* _tmp113_;
9983 _tmp93_ = m;
9984 _tmp94_ = vala_get_ccode_finish_real_name (_tmp93_);
9985 _tmp95_ = _tmp94_;
9986 _tmp96_ = vala_ccode_identifier_new (_tmp95_);
9987 _vala_ccode_node_unref0 (cfunc);
9988 cfunc = (ValaCCodeExpression*) _tmp96_;
9989 _g_free0 (_tmp95_);
9990 _tmp97_ = m;
9991 _tmp98_ = vala_method_get_base_method (_tmp97_);
9992 _tmp99_ = _tmp98_;
9993 _tmp100_ = cfunc;
9994 _tmp101_ = base_type;
9995 _tmp102_ = vala_gtype_module_cast_method_pointer (self, _tmp99_, _tmp100_, _tmp101_, 2);
9996 _vala_ccode_node_unref0 (cfunc);
9997 cfunc = _tmp102_;
9998 _tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
9999 _tmp104_ = _tmp103_;
10000 _tmp105_ = ccast;
10001 _tmp106_ = m;
10002 _tmp107_ = vala_method_get_base_method (_tmp106_);
10003 _tmp108_ = _tmp107_;
10004 _tmp109_ = vala_get_ccode_finish_vfunc_name (_tmp108_);
10005 _tmp110_ = _tmp109_;
10006 _tmp111_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp105_, _tmp110_);
10007 _tmp112_ = _tmp111_;
10008 _tmp113_ = cfunc;
10009 vala_ccode_function_add_assignment (_tmp104_, (ValaCCodeExpression*) _tmp112_, _tmp113_);
10010 _vala_ccode_node_unref0 (_tmp112_);
10011 _g_free0 (_tmp110_);
10012 }
10013 _vala_ccode_node_unref0 (ccast);
10014 _vala_ccode_node_unref0 (cfunc);
10015 }
10016 _vala_code_node_unref0 (base_type);
10017 _vala_code_node_unref0 (m);
10018 }
10019 _vala_iterable_unref0 (_m_list);
10020 }
10021 {
10022 ValaList* _prop_list = NULL;
10023 ValaList* _tmp114_;
10024 ValaList* _tmp115_;
10025 gint _prop_size = 0;
10026 ValaList* _tmp116_;
10027 gint _tmp117_;
10028 gint _tmp118_;
10029 gint _prop_index = 0;
10030 _tmp114_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
10031 _tmp115_ = _vala_iterable_ref0 (_tmp114_);
10032 _prop_list = _tmp115_;
10033 _tmp116_ = _prop_list;
10034 _tmp117_ = vala_collection_get_size ((ValaCollection*) _tmp116_);
10035 _tmp118_ = _tmp117_;
10036 _prop_size = _tmp118_;
10037 _prop_index = -1;
10038 while (TRUE) {
10039 gint _tmp119_;
10040 gint _tmp120_;
10041 ValaProperty* prop = NULL;
10042 ValaList* _tmp121_;
10043 gpointer _tmp122_;
10044 gboolean _tmp123_ = FALSE;
10045 ValaProperty* _tmp124_;
10046 ValaProperty* _tmp125_;
10047 ValaProperty* _tmp126_;
10048 ValaSymbol* base_type = NULL;
10049 ValaProperty* _tmp127_;
10050 ValaProperty* _tmp128_;
10051 ValaProperty* _tmp129_;
10052 ValaSymbol* _tmp130_;
10053 ValaSymbol* _tmp131_;
10054 ValaSymbol* _tmp132_;
10055 ValaCCodeCastExpression* ccast = NULL;
10056 ValaCCodeIdentifier* _tmp133_;
10057 ValaCCodeIdentifier* _tmp134_;
10058 ValaSymbol* _tmp135_;
10059 gchar* _tmp136_;
10060 gchar* _tmp137_;
10061 gchar* _tmp138_;
10062 gchar* _tmp139_;
10063 ValaCCodeCastExpression* _tmp140_;
10064 ValaCCodeCastExpression* _tmp141_;
10065 gboolean _tmp142_ = FALSE;
10066 ValaProperty* _tmp143_;
10067 ValaProperty* _tmp144_;
10068 ValaProperty* _tmp145_;
10069 _prop_index = _prop_index + 1;
10070 _tmp119_ = _prop_index;
10071 _tmp120_ = _prop_size;
10072 if (!(_tmp119_ < _tmp120_)) {
10073 break;
10074 }
10075 _tmp121_ = _prop_list;
10076 _tmp122_ = vala_list_get (_tmp121_, _prop_index);
10077 prop = (ValaProperty*) _tmp122_;
10078 _tmp124_ = prop;
10079 _tmp125_ = vala_property_get_base_property (_tmp124_);
10080 _tmp126_ = _tmp125_;
10081 if (_tmp126_ == NULL) {
10082 _tmp123_ = TRUE;
10083 } else {
10084 _tmp123_ = is_gsource;
10085 }
10086 if (_tmp123_) {
10087 _vala_code_node_unref0 (prop);
10088 continue;
10089 }
10090 _tmp127_ = prop;
10091 _tmp128_ = vala_property_get_base_property (_tmp127_);
10092 _tmp129_ = _tmp128_;
10093 _tmp130_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp129_);
10094 _tmp131_ = _tmp130_;
10095 _tmp132_ = _vala_code_node_ref0 (_tmp131_);
10096 base_type = _tmp132_;
10097 _tmp133_ = vala_ccode_identifier_new ("self");
10098 _tmp134_ = _tmp133_;
10099 _tmp135_ = base_type;
10100 _tmp136_ = vala_get_ccode_name ((ValaCodeNode*) _tmp135_);
10101 _tmp137_ = _tmp136_;
10102 _tmp138_ = g_strdup_printf ("%s *", _tmp137_);
10103 _tmp139_ = _tmp138_;
10104 _tmp140_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp134_, _tmp139_);
10105 _tmp141_ = _tmp140_;
10106 _g_free0 (_tmp139_);
10107 _g_free0 (_tmp137_);
10108 _vala_ccode_node_unref0 (_tmp134_);
10109 ccast = _tmp141_;
10110 _tmp143_ = prop;
10111 _tmp144_ = vala_property_get_base_property (_tmp143_);
10112 _tmp145_ = _tmp144_;
10113 if (!vala_get_ccode_no_accessor_method (_tmp145_)) {
10114 ValaProperty* _tmp146_;
10115 ValaProperty* _tmp147_;
10116 ValaProperty* _tmp148_;
10117 _tmp146_ = prop;
10118 _tmp147_ = vala_property_get_base_property (_tmp146_);
10119 _tmp148_ = _tmp147_;
10120 _tmp142_ = !vala_get_ccode_concrete_accessor (_tmp148_);
10121 } else {
10122 _tmp142_ = FALSE;
10123 }
10124 if (_tmp142_) {
10125 ValaProperty* _tmp149_;
10126 ValaPropertyAccessor* _tmp150_;
10127 ValaPropertyAccessor* _tmp151_;
10128 ValaProperty* _tmp175_;
10129 ValaPropertyAccessor* _tmp176_;
10130 ValaPropertyAccessor* _tmp177_;
10131 _tmp149_ = prop;
10132 _tmp150_ = vala_property_get_get_accessor (_tmp149_);
10133 _tmp151_ = _tmp150_;
10134 if (_tmp151_ != NULL) {
10135 ValaProperty* _tmp152_;
10136 ValaProperty* _tmp153_;
10137 ValaProperty* _tmp154_;
10138 ValaPropertyAccessor* _tmp155_;
10139 ValaPropertyAccessor* _tmp156_;
10140 ValaCCodeFile* _tmp157_;
10141 gchar* cname = NULL;
10142 ValaProperty* _tmp158_;
10143 ValaPropertyAccessor* _tmp159_;
10144 ValaPropertyAccessor* _tmp160_;
10145 gchar* _tmp161_;
10146 ValaCCodeFunction* _tmp162_;
10147 ValaCCodeFunction* _tmp163_;
10148 ValaCCodeCastExpression* _tmp164_;
10149 ValaProperty* _tmp165_;
10150 const gchar* _tmp166_;
10151 const gchar* _tmp167_;
10152 gchar* _tmp168_;
10153 gchar* _tmp169_;
10154 ValaCCodeMemberAccess* _tmp170_;
10155 ValaCCodeMemberAccess* _tmp171_;
10156 const gchar* _tmp172_;
10157 ValaCCodeIdentifier* _tmp173_;
10158 ValaCCodeIdentifier* _tmp174_;
10159 _tmp152_ = prop;
10160 _tmp153_ = vala_property_get_base_property (_tmp152_);
10161 _tmp154_ = _tmp153_;
10162 _tmp155_ = vala_property_get_get_accessor (_tmp154_);
10163 _tmp156_ = _tmp155_;
10164 _tmp157_ = ((ValaCCodeBaseModule*) self)->cfile;
10165 vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp156_, _tmp157_);
10166 _tmp158_ = prop;
10167 _tmp159_ = vala_property_get_get_accessor (_tmp158_);
10168 _tmp160_ = _tmp159_;
10169 _tmp161_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp160_);
10170 cname = _tmp161_;
10171 _tmp162_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10172 _tmp163_ = _tmp162_;
10173 _tmp164_ = ccast;
10174 _tmp165_ = prop;
10175 _tmp166_ = vala_symbol_get_name ((ValaSymbol*) _tmp165_);
10176 _tmp167_ = _tmp166_;
10177 _tmp168_ = g_strdup_printf ("get_%s", _tmp167_);
10178 _tmp169_ = _tmp168_;
10179 _tmp170_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp164_, _tmp169_);
10180 _tmp171_ = _tmp170_;
10181 _tmp172_ = cname;
10182 _tmp173_ = vala_ccode_identifier_new (_tmp172_);
10183 _tmp174_ = _tmp173_;
10184 vala_ccode_function_add_assignment (_tmp163_, (ValaCCodeExpression*) _tmp171_, (ValaCCodeExpression*) _tmp174_);
10185 _vala_ccode_node_unref0 (_tmp174_);
10186 _vala_ccode_node_unref0 (_tmp171_);
10187 _g_free0 (_tmp169_);
10188 _g_free0 (cname);
10189 }
10190 _tmp175_ = prop;
10191 _tmp176_ = vala_property_get_set_accessor (_tmp175_);
10192 _tmp177_ = _tmp176_;
10193 if (_tmp177_ != NULL) {
10194 ValaProperty* _tmp178_;
10195 ValaProperty* _tmp179_;
10196 ValaProperty* _tmp180_;
10197 ValaPropertyAccessor* _tmp181_;
10198 ValaPropertyAccessor* _tmp182_;
10199 ValaCCodeFile* _tmp183_;
10200 gchar* cname = NULL;
10201 ValaProperty* _tmp184_;
10202 ValaPropertyAccessor* _tmp185_;
10203 ValaPropertyAccessor* _tmp186_;
10204 gchar* _tmp187_;
10205 ValaCCodeFunction* _tmp188_;
10206 ValaCCodeFunction* _tmp189_;
10207 ValaCCodeCastExpression* _tmp190_;
10208 ValaProperty* _tmp191_;
10209 const gchar* _tmp192_;
10210 const gchar* _tmp193_;
10211 gchar* _tmp194_;
10212 gchar* _tmp195_;
10213 ValaCCodeMemberAccess* _tmp196_;
10214 ValaCCodeMemberAccess* _tmp197_;
10215 const gchar* _tmp198_;
10216 ValaCCodeIdentifier* _tmp199_;
10217 ValaCCodeIdentifier* _tmp200_;
10218 _tmp178_ = prop;
10219 _tmp179_ = vala_property_get_base_property (_tmp178_);
10220 _tmp180_ = _tmp179_;
10221 _tmp181_ = vala_property_get_set_accessor (_tmp180_);
10222 _tmp182_ = _tmp181_;
10223 _tmp183_ = ((ValaCCodeBaseModule*) self)->cfile;
10224 vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp182_, _tmp183_);
10225 _tmp184_ = prop;
10226 _tmp185_ = vala_property_get_set_accessor (_tmp184_);
10227 _tmp186_ = _tmp185_;
10228 _tmp187_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp186_);
10229 cname = _tmp187_;
10230 _tmp188_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10231 _tmp189_ = _tmp188_;
10232 _tmp190_ = ccast;
10233 _tmp191_ = prop;
10234 _tmp192_ = vala_symbol_get_name ((ValaSymbol*) _tmp191_);
10235 _tmp193_ = _tmp192_;
10236 _tmp194_ = g_strdup_printf ("set_%s", _tmp193_);
10237 _tmp195_ = _tmp194_;
10238 _tmp196_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp190_, _tmp195_);
10239 _tmp197_ = _tmp196_;
10240 _tmp198_ = cname;
10241 _tmp199_ = vala_ccode_identifier_new (_tmp198_);
10242 _tmp200_ = _tmp199_;
10243 vala_ccode_function_add_assignment (_tmp189_, (ValaCCodeExpression*) _tmp197_, (ValaCCodeExpression*) _tmp200_);
10244 _vala_ccode_node_unref0 (_tmp200_);
10245 _vala_ccode_node_unref0 (_tmp197_);
10246 _g_free0 (_tmp195_);
10247 _g_free0 (cname);
10248 }
10249 }
10250 _vala_ccode_node_unref0 (ccast);
10251 _vala_code_node_unref0 (base_type);
10252 _vala_code_node_unref0 (prop);
10253 }
10254 _vala_iterable_unref0 (_prop_list);
10255 }
10256 }
10257 _tmp202_ = vala_class_get_is_compact (cl);
10258 _tmp203_ = _tmp202_;
10259 if (!_tmp203_) {
10260 gboolean _tmp204_ = FALSE;
10261 gboolean _tmp205_;
10262 gboolean _tmp206_;
10263 _tmp205_ = vala_class_get_has_private_fields (cl);
10264 _tmp206_ = _tmp205_;
10265 if (_tmp206_) {
10266 _tmp204_ = TRUE;
10267 } else {
10268 _tmp204_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
10269 }
10270 _tmp201_ = _tmp204_;
10271 } else {
10272 _tmp201_ = FALSE;
10273 }
10274 if (_tmp201_) {
10275 ValaCCodeFunctionCall* ccall = NULL;
10276 gchar* _tmp207_;
10277 gchar* _tmp208_;
10278 gchar* _tmp209_;
10279 gchar* _tmp210_;
10280 ValaCCodeIdentifier* _tmp211_;
10281 ValaCCodeIdentifier* _tmp212_;
10282 ValaCCodeFunctionCall* _tmp213_;
10283 ValaCCodeFunctionCall* _tmp214_;
10284 ValaCCodeFunctionCall* _tmp215_;
10285 ValaCCodeIdentifier* _tmp216_;
10286 ValaCCodeIdentifier* _tmp217_;
10287 ValaCCodeFunction* _tmp218_;
10288 ValaCCodeIdentifier* _tmp219_;
10289 ValaCCodeIdentifier* _tmp220_;
10290 ValaCCodeMemberAccess* _tmp221_;
10291 ValaCCodeMemberAccess* _tmp222_;
10292 ValaCCodeFunctionCall* _tmp223_;
10293 _tmp207_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
10294 _tmp208_ = _tmp207_;
10295 _tmp209_ = g_strdup_printf ("%s_get_instance_private", _tmp208_);
10296 _tmp210_ = _tmp209_;
10297 _tmp211_ = vala_ccode_identifier_new (_tmp210_);
10298 _tmp212_ = _tmp211_;
10299 _tmp213_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp212_);
10300 _tmp214_ = _tmp213_;
10301 _vala_ccode_node_unref0 (_tmp212_);
10302 _g_free0 (_tmp210_);
10303 _g_free0 (_tmp208_);
10304 ccall = _tmp214_;
10305 _tmp215_ = ccall;
10306 _tmp216_ = vala_ccode_identifier_new ("self");
10307 _tmp217_ = _tmp216_;
10308 vala_ccode_function_call_add_argument (_tmp215_, (ValaCCodeExpression*) _tmp217_);
10309 _vala_ccode_node_unref0 (_tmp217_);
10310 _tmp218_ = func;
10311 _tmp219_ = vala_ccode_identifier_new ("self");
10312 _tmp220_ = _tmp219_;
10313 _tmp221_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp220_, "priv");
10314 _tmp222_ = _tmp221_;
10315 _tmp223_ = ccall;
10316 vala_ccode_function_add_assignment (_tmp218_, (ValaCCodeExpression*) _tmp222_, (ValaCCodeExpression*) _tmp223_);
10317 _vala_ccode_node_unref0 (_tmp222_);
10318 _vala_ccode_node_unref0 (_tmp220_);
10319 _vala_ccode_node_unref0 (ccall);
10320 }
10321 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10322 _vala_ccode_node_unref0 (func);
10323 }
10324
10325 static void
vala_gtype_module_add_instance_init_function(ValaGTypeModule * self,ValaClass * cl)10326 vala_gtype_module_add_instance_init_function (ValaGTypeModule* self,
10327 ValaClass* cl)
10328 {
10329 ValaCCodeBaseModuleEmitContext* _tmp0_;
10330 ValaCCodeFile* _tmp1_;
10331 ValaCCodeBaseModuleEmitContext* _tmp2_;
10332 ValaCCodeFunction* _tmp3_;
10333 g_return_if_fail (self != NULL);
10334 g_return_if_fail (cl != NULL);
10335 _tmp0_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
10336 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
10337 vala_gtype_module_end_instance_init (self, cl);
10338 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10339 _tmp1_ = ((ValaCCodeBaseModule*) self)->cfile;
10340 _tmp2_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
10341 _tmp3_ = _tmp2_->ccode;
10342 vala_ccode_file_add_function (_tmp1_, _tmp3_);
10343 }
10344
10345 static void
vala_gtype_module_begin_class_finalize_function(ValaGTypeModule * self,ValaClass * cl)10346 vala_gtype_module_begin_class_finalize_function (ValaGTypeModule* self,
10347 ValaClass* cl)
10348 {
10349 ValaCCodeBaseModuleEmitContext* _tmp0_;
10350 ValaCCodeFunction* function = NULL;
10351 gchar* _tmp1_;
10352 gchar* _tmp2_;
10353 gchar* _tmp3_;
10354 gchar* _tmp4_;
10355 ValaCCodeFunction* _tmp5_;
10356 ValaCCodeFunction* _tmp6_;
10357 ValaCCodeFunction* _tmp7_;
10358 ValaCCodeFunction* _tmp8_;
10359 gchar* _tmp9_;
10360 gchar* _tmp10_;
10361 gchar* _tmp11_;
10362 gchar* _tmp12_;
10363 ValaCCodeParameter* _tmp13_;
10364 ValaCCodeParameter* _tmp14_;
10365 ValaCCodeFunction* _tmp15_;
10366 ValaDestructor* _tmp16_;
10367 ValaDestructor* _tmp17_;
10368 g_return_if_fail (self != NULL);
10369 g_return_if_fail (cl != NULL);
10370 _tmp0_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
10371 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
10372 _tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
10373 _tmp2_ = _tmp1_;
10374 _tmp3_ = g_strdup_printf ("%s_class_finalize", _tmp2_);
10375 _tmp4_ = _tmp3_;
10376 _tmp5_ = vala_ccode_function_new (_tmp4_, "void");
10377 _tmp6_ = _tmp5_;
10378 _g_free0 (_tmp4_);
10379 _g_free0 (_tmp2_);
10380 function = _tmp6_;
10381 _tmp7_ = function;
10382 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp7_, VALA_CCODE_MODIFIERS_STATIC);
10383 _tmp8_ = function;
10384 _tmp9_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
10385 _tmp10_ = _tmp9_;
10386 _tmp11_ = g_strdup_printf ("%s *", _tmp10_);
10387 _tmp12_ = _tmp11_;
10388 _tmp13_ = vala_ccode_parameter_new ("klass", _tmp12_);
10389 _tmp14_ = _tmp13_;
10390 vala_ccode_function_add_parameter (_tmp8_, _tmp14_);
10391 _vala_ccode_node_unref0 (_tmp14_);
10392 _g_free0 (_tmp12_);
10393 _g_free0 (_tmp10_);
10394 _tmp15_ = function;
10395 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp15_);
10396 _tmp16_ = vala_class_get_static_destructor (cl);
10397 _tmp17_ = _tmp16_;
10398 if (_tmp17_ != NULL) {
10399 ValaDestructor* _tmp18_;
10400 ValaDestructor* _tmp19_;
10401 ValaBlock* _tmp20_;
10402 ValaBlock* _tmp21_;
10403 gboolean _tmp22_;
10404 gboolean _tmp23_;
10405 gboolean _tmp34_;
10406 gboolean _tmp35_;
10407 _tmp18_ = vala_class_get_static_destructor (cl);
10408 _tmp19_ = _tmp18_;
10409 _tmp20_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp19_);
10410 _tmp21_ = _tmp20_;
10411 vala_code_node_emit ((ValaCodeNode*) _tmp21_, (ValaCodeGenerator*) self);
10412 _tmp22_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
10413 _tmp23_ = _tmp22_;
10414 if (_tmp23_) {
10415 ValaCCodeFunction* _tmp24_;
10416 ValaCCodeFunction* _tmp25_;
10417 gint _tmp26_;
10418 gint _tmp27_;
10419 gchar* _tmp28_;
10420 gchar* _tmp29_;
10421 ValaCCodeConstant* _tmp30_;
10422 ValaCCodeConstant* _tmp31_;
10423 ValaCCodeVariableDeclarator* _tmp32_;
10424 ValaCCodeVariableDeclarator* _tmp33_;
10425 _tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10426 _tmp25_ = _tmp24_;
10427 _tmp26_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
10428 _tmp27_ = _tmp26_;
10429 _tmp28_ = g_strdup_printf ("_inner_error%d_", _tmp27_);
10430 _tmp29_ = _tmp28_;
10431 _tmp30_ = vala_ccode_constant_new ("NULL");
10432 _tmp31_ = _tmp30_;
10433 _tmp32_ = vala_ccode_variable_declarator_new_zero (_tmp29_, (ValaCCodeExpression*) _tmp31_, NULL);
10434 _tmp33_ = _tmp32_;
10435 vala_ccode_function_add_declaration (_tmp25_, "GError*", (ValaCCodeDeclarator*) _tmp33_, 0);
10436 _vala_ccode_node_unref0 (_tmp33_);
10437 _vala_ccode_node_unref0 (_tmp31_);
10438 _g_free0 (_tmp29_);
10439 }
10440 _tmp34_ = vala_ccode_base_module_get_current_method_return ((ValaCCodeBaseModule*) self);
10441 _tmp35_ = _tmp34_;
10442 if (_tmp35_) {
10443 ValaCCodeFunction* _tmp36_;
10444 ValaCCodeFunction* _tmp37_;
10445 ValaCCodeFunction* _tmp38_;
10446 ValaCCodeFunction* _tmp39_;
10447 ValaCCodeEmptyStatement* _tmp40_;
10448 ValaCCodeEmptyStatement* _tmp41_;
10449 _tmp36_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10450 _tmp37_ = _tmp36_;
10451 vala_ccode_function_add_label (_tmp37_, "_return");
10452 _tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10453 _tmp39_ = _tmp38_;
10454 _tmp40_ = vala_ccode_empty_statement_new ();
10455 _tmp41_ = _tmp40_;
10456 vala_ccode_function_add_statement (_tmp39_, (ValaCCodeNode*) _tmp41_);
10457 _vala_ccode_node_unref0 (_tmp41_);
10458 }
10459 }
10460 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10461 _vala_ccode_node_unref0 (function);
10462 }
10463
10464 static void
vala_gtype_module_add_class_finalize_function(ValaGTypeModule * self,ValaClass * cl)10465 vala_gtype_module_add_class_finalize_function (ValaGTypeModule* self,
10466 ValaClass* cl)
10467 {
10468 ValaCCodeFile* _tmp0_;
10469 ValaCCodeBaseModuleEmitContext* _tmp1_;
10470 ValaCCodeFunction* _tmp2_;
10471 ValaCCodeFile* _tmp3_;
10472 ValaCCodeBaseModuleEmitContext* _tmp4_;
10473 ValaCCodeFunction* _tmp5_;
10474 g_return_if_fail (self != NULL);
10475 g_return_if_fail (cl != NULL);
10476 _tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
10477 _tmp1_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
10478 _tmp2_ = _tmp1_->ccode;
10479 vala_ccode_file_add_function_declaration (_tmp0_, _tmp2_);
10480 _tmp3_ = ((ValaCCodeBaseModule*) self)->cfile;
10481 _tmp4_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
10482 _tmp5_ = _tmp4_->ccode;
10483 vala_ccode_file_add_function (_tmp3_, _tmp5_);
10484 }
10485
10486 static void
vala_gtype_module_begin_base_finalize_function(ValaGTypeModule * self,ValaClass * cl)10487 vala_gtype_module_begin_base_finalize_function (ValaGTypeModule* self,
10488 ValaClass* cl)
10489 {
10490 ValaCCodeBaseModuleEmitContext* _tmp0_;
10491 ValaCCodeFunction* function = NULL;
10492 gchar* _tmp1_;
10493 gchar* _tmp2_;
10494 gchar* _tmp3_;
10495 gchar* _tmp4_;
10496 ValaCCodeFunction* _tmp5_;
10497 ValaCCodeFunction* _tmp6_;
10498 ValaCCodeFunction* _tmp7_;
10499 ValaCCodeFunction* _tmp8_;
10500 gchar* _tmp9_;
10501 gchar* _tmp10_;
10502 gchar* _tmp11_;
10503 gchar* _tmp12_;
10504 ValaCCodeParameter* _tmp13_;
10505 ValaCCodeParameter* _tmp14_;
10506 ValaCCodeFunction* _tmp15_;
10507 ValaCCodeParameter* _tmp16_;
10508 ValaCCodeParameter* _tmp17_;
10509 ValaCCodeFunction* _tmp18_;
10510 ValaDestructor* _tmp19_;
10511 ValaDestructor* _tmp20_;
10512 g_return_if_fail (self != NULL);
10513 g_return_if_fail (cl != NULL);
10514 _tmp0_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
10515 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
10516 _tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
10517 _tmp2_ = _tmp1_;
10518 _tmp3_ = g_strdup_printf ("%s_base_finalize", _tmp2_);
10519 _tmp4_ = _tmp3_;
10520 _tmp5_ = vala_ccode_function_new (_tmp4_, "void");
10521 _tmp6_ = _tmp5_;
10522 _g_free0 (_tmp4_);
10523 _g_free0 (_tmp2_);
10524 function = _tmp6_;
10525 _tmp7_ = function;
10526 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp7_, VALA_CCODE_MODIFIERS_STATIC);
10527 _tmp8_ = function;
10528 _tmp9_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) cl);
10529 _tmp10_ = _tmp9_;
10530 _tmp11_ = g_strdup_printf ("%s *", _tmp10_);
10531 _tmp12_ = _tmp11_;
10532 _tmp13_ = vala_ccode_parameter_new ("klass", _tmp12_);
10533 _tmp14_ = _tmp13_;
10534 vala_ccode_function_add_parameter (_tmp8_, _tmp14_);
10535 _vala_ccode_node_unref0 (_tmp14_);
10536 _g_free0 (_tmp12_);
10537 _g_free0 (_tmp10_);
10538 _tmp15_ = function;
10539 _tmp16_ = vala_ccode_parameter_new ("klass_data", "gpointer");
10540 _tmp17_ = _tmp16_;
10541 vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
10542 _vala_ccode_node_unref0 (_tmp17_);
10543 _tmp18_ = function;
10544 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp18_);
10545 _tmp19_ = vala_class_get_class_destructor (cl);
10546 _tmp20_ = _tmp19_;
10547 if (_tmp20_ != NULL) {
10548 ValaDestructor* _tmp21_;
10549 ValaDestructor* _tmp22_;
10550 ValaBlock* _tmp23_;
10551 ValaBlock* _tmp24_;
10552 gboolean _tmp25_;
10553 gboolean _tmp26_;
10554 gboolean _tmp37_;
10555 gboolean _tmp38_;
10556 _tmp21_ = vala_class_get_class_destructor (cl);
10557 _tmp22_ = _tmp21_;
10558 _tmp23_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp22_);
10559 _tmp24_ = _tmp23_;
10560 vala_code_node_emit ((ValaCodeNode*) _tmp24_, (ValaCodeGenerator*) self);
10561 _tmp25_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
10562 _tmp26_ = _tmp25_;
10563 if (_tmp26_) {
10564 ValaCCodeFunction* _tmp27_;
10565 ValaCCodeFunction* _tmp28_;
10566 gint _tmp29_;
10567 gint _tmp30_;
10568 gchar* _tmp31_;
10569 gchar* _tmp32_;
10570 ValaCCodeConstant* _tmp33_;
10571 ValaCCodeConstant* _tmp34_;
10572 ValaCCodeVariableDeclarator* _tmp35_;
10573 ValaCCodeVariableDeclarator* _tmp36_;
10574 _tmp27_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10575 _tmp28_ = _tmp27_;
10576 _tmp29_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
10577 _tmp30_ = _tmp29_;
10578 _tmp31_ = g_strdup_printf ("_inner_error%d_", _tmp30_);
10579 _tmp32_ = _tmp31_;
10580 _tmp33_ = vala_ccode_constant_new ("NULL");
10581 _tmp34_ = _tmp33_;
10582 _tmp35_ = vala_ccode_variable_declarator_new_zero (_tmp32_, (ValaCCodeExpression*) _tmp34_, NULL);
10583 _tmp36_ = _tmp35_;
10584 vala_ccode_function_add_declaration (_tmp28_, "GError*", (ValaCCodeDeclarator*) _tmp36_, 0);
10585 _vala_ccode_node_unref0 (_tmp36_);
10586 _vala_ccode_node_unref0 (_tmp34_);
10587 _g_free0 (_tmp32_);
10588 }
10589 _tmp37_ = vala_ccode_base_module_get_current_method_return ((ValaCCodeBaseModule*) self);
10590 _tmp38_ = _tmp37_;
10591 if (_tmp38_) {
10592 ValaCCodeFunction* _tmp39_;
10593 ValaCCodeFunction* _tmp40_;
10594 ValaCCodeFunction* _tmp41_;
10595 ValaCCodeFunction* _tmp42_;
10596 ValaCCodeEmptyStatement* _tmp43_;
10597 ValaCCodeEmptyStatement* _tmp44_;
10598 _tmp39_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10599 _tmp40_ = _tmp39_;
10600 vala_ccode_function_add_label (_tmp40_, "_return");
10601 _tmp41_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10602 _tmp42_ = _tmp41_;
10603 _tmp43_ = vala_ccode_empty_statement_new ();
10604 _tmp44_ = _tmp43_;
10605 vala_ccode_function_add_statement (_tmp42_, (ValaCCodeNode*) _tmp44_);
10606 _vala_ccode_node_unref0 (_tmp44_);
10607 }
10608 }
10609 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10610 _vala_ccode_node_unref0 (function);
10611 }
10612
10613 static void
vala_gtype_module_add_base_finalize_function(ValaGTypeModule * self,ValaClass * cl)10614 vala_gtype_module_add_base_finalize_function (ValaGTypeModule* self,
10615 ValaClass* cl)
10616 {
10617 ValaCCodeBaseModuleEmitContext* _tmp0_;
10618 ValaCCodeFile* _tmp1_;
10619 ValaCCodeFunction* _tmp2_;
10620 ValaCCodeFunction* _tmp3_;
10621 ValaCCodeFile* _tmp4_;
10622 ValaCCodeFunction* _tmp5_;
10623 ValaCCodeFunction* _tmp6_;
10624 g_return_if_fail (self != NULL);
10625 g_return_if_fail (cl != NULL);
10626 _tmp0_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
10627 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
10628 _tmp1_ = ((ValaCCodeBaseModule*) self)->cfile;
10629 _tmp2_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10630 _tmp3_ = _tmp2_;
10631 vala_ccode_file_add_function_declaration (_tmp1_, _tmp3_);
10632 _tmp4_ = ((ValaCCodeBaseModule*) self)->cfile;
10633 _tmp5_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10634 _tmp6_ = _tmp5_;
10635 vala_ccode_file_add_function (_tmp4_, _tmp6_);
10636 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10637 }
10638
10639 static void
vala_gtype_module_begin_finalize_function(ValaGTypeModule * self,ValaClass * cl)10640 vala_gtype_module_begin_finalize_function (ValaGTypeModule* self,
10641 ValaClass* cl)
10642 {
10643 ValaCCodeBaseModuleEmitContext* _tmp0_;
10644 gboolean is_gsource = FALSE;
10645 ValaClass* _tmp1_;
10646 gboolean _tmp2_ = FALSE;
10647 gboolean _tmp3_;
10648 gboolean _tmp4_;
10649 ValaDestructor* _tmp92_;
10650 ValaDestructor* _tmp93_;
10651 g_return_if_fail (self != NULL);
10652 g_return_if_fail (cl != NULL);
10653 _tmp0_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
10654 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
10655 _tmp1_ = ((ValaCCodeBaseModule*) self)->gsource_type;
10656 is_gsource = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp1_);
10657 _tmp3_ = vala_class_get_is_compact (cl);
10658 _tmp4_ = _tmp3_;
10659 if (!_tmp4_) {
10660 _tmp2_ = TRUE;
10661 } else {
10662 _tmp2_ = is_gsource;
10663 }
10664 if (_tmp2_) {
10665 ValaClass* fundamental_class = NULL;
10666 ValaClass* _tmp5_;
10667 ValaCCodeFunction* func = NULL;
10668 gchar* _tmp13_;
10669 gchar* _tmp14_;
10670 gchar* _tmp15_;
10671 gchar* _tmp16_;
10672 ValaCCodeFunction* _tmp17_;
10673 ValaCCodeFunction* _tmp18_;
10674 ValaCCodeFunction* _tmp19_;
10675 ValaClass* _tmp20_;
10676 gchar* _tmp21_;
10677 gchar* _tmp22_;
10678 gchar* _tmp23_;
10679 gchar* _tmp24_;
10680 ValaCCodeParameter* _tmp25_;
10681 ValaCCodeParameter* _tmp26_;
10682 ValaCCodeFunction* _tmp27_;
10683 ValaCCodeFunction* _tmp28_;
10684 ValaCCodeExpression* ccast = NULL;
10685 gboolean _tmp31_;
10686 gboolean _tmp32_;
10687 ValaCCodeFunction* _tmp43_;
10688 ValaCCodeFunction* _tmp44_;
10689 gchar* _tmp45_;
10690 gchar* _tmp46_;
10691 gchar* _tmp47_;
10692 gchar* _tmp48_;
10693 ValaCCodeVariableDeclarator* _tmp49_;
10694 ValaCCodeVariableDeclarator* _tmp50_;
10695 ValaCCodeFunction* _tmp51_;
10696 ValaCCodeFunction* _tmp52_;
10697 ValaCCodeIdentifier* _tmp53_;
10698 ValaCCodeIdentifier* _tmp54_;
10699 ValaCCodeExpression* _tmp55_;
10700 gboolean _tmp56_ = FALSE;
10701 gboolean _tmp57_;
10702 gboolean _tmp58_;
10703 _tmp5_ = _vala_code_node_ref0 (cl);
10704 fundamental_class = _tmp5_;
10705 while (TRUE) {
10706 ValaClass* _tmp6_;
10707 ValaClass* _tmp7_;
10708 ValaClass* _tmp8_;
10709 ValaClass* _tmp9_;
10710 ValaClass* _tmp10_;
10711 ValaClass* _tmp11_;
10712 ValaClass* _tmp12_;
10713 _tmp6_ = fundamental_class;
10714 _tmp7_ = vala_class_get_base_class (_tmp6_);
10715 _tmp8_ = _tmp7_;
10716 if (!(_tmp8_ != NULL)) {
10717 break;
10718 }
10719 _tmp9_ = fundamental_class;
10720 _tmp10_ = vala_class_get_base_class (_tmp9_);
10721 _tmp11_ = _tmp10_;
10722 _tmp12_ = _vala_code_node_ref0 (_tmp11_);
10723 _vala_code_node_unref0 (fundamental_class);
10724 fundamental_class = _tmp12_;
10725 }
10726 _tmp13_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) cl);
10727 _tmp14_ = _tmp13_;
10728 _tmp15_ = g_strdup_printf ("%sfinalize", _tmp14_);
10729 _tmp16_ = _tmp15_;
10730 _tmp17_ = vala_ccode_function_new (_tmp16_, "void");
10731 _tmp18_ = _tmp17_;
10732 _g_free0 (_tmp16_);
10733 _g_free0 (_tmp14_);
10734 func = _tmp18_;
10735 _tmp19_ = func;
10736 _tmp20_ = fundamental_class;
10737 _tmp21_ = vala_get_ccode_name ((ValaCodeNode*) _tmp20_);
10738 _tmp22_ = _tmp21_;
10739 _tmp23_ = g_strdup_printf ("%s *", _tmp22_);
10740 _tmp24_ = _tmp23_;
10741 _tmp25_ = vala_ccode_parameter_new ("obj", _tmp24_);
10742 _tmp26_ = _tmp25_;
10743 vala_ccode_function_add_parameter (_tmp19_, _tmp26_);
10744 _vala_ccode_node_unref0 (_tmp26_);
10745 _g_free0 (_tmp24_);
10746 _g_free0 (_tmp22_);
10747 _tmp27_ = func;
10748 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp27_, VALA_CCODE_MODIFIERS_STATIC);
10749 _tmp28_ = func;
10750 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp28_);
10751 if (is_gsource) {
10752 ValaCCodeFile* _tmp29_;
10753 ValaCCodeFunction* _tmp30_;
10754 _tmp29_ = ((ValaCCodeBaseModule*) self)->cfile;
10755 _tmp30_ = func;
10756 vala_ccode_file_add_function_declaration (_tmp29_, _tmp30_);
10757 }
10758 _tmp31_ = vala_class_get_is_compact (cl);
10759 _tmp32_ = _tmp31_;
10760 if (!_tmp32_) {
10761 ValaCCodeIdentifier* _tmp33_;
10762 ValaCCodeIdentifier* _tmp34_;
10763 ValaCCodeFunctionCall* _tmp35_;
10764 _tmp33_ = vala_ccode_identifier_new ("obj");
10765 _tmp34_ = _tmp33_;
10766 _tmp35_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp34_, (ValaTypeSymbol*) cl);
10767 _vala_ccode_node_unref0 (ccast);
10768 ccast = (ValaCCodeExpression*) _tmp35_;
10769 _vala_ccode_node_unref0 (_tmp34_);
10770 } else {
10771 ValaCCodeIdentifier* _tmp36_;
10772 ValaCCodeIdentifier* _tmp37_;
10773 gchar* _tmp38_;
10774 gchar* _tmp39_;
10775 gchar* _tmp40_;
10776 gchar* _tmp41_;
10777 ValaCCodeCastExpression* _tmp42_;
10778 _tmp36_ = vala_ccode_identifier_new ("obj");
10779 _tmp37_ = _tmp36_;
10780 _tmp38_ = vala_get_ccode_name ((ValaCodeNode*) cl);
10781 _tmp39_ = _tmp38_;
10782 _tmp40_ = g_strdup_printf ("%s *", _tmp39_);
10783 _tmp41_ = _tmp40_;
10784 _tmp42_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp37_, _tmp41_);
10785 _vala_ccode_node_unref0 (ccast);
10786 ccast = (ValaCCodeExpression*) _tmp42_;
10787 _g_free0 (_tmp41_);
10788 _g_free0 (_tmp39_);
10789 _vala_ccode_node_unref0 (_tmp37_);
10790 }
10791 _tmp43_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10792 _tmp44_ = _tmp43_;
10793 _tmp45_ = vala_get_ccode_name ((ValaCodeNode*) cl);
10794 _tmp46_ = _tmp45_;
10795 _tmp47_ = g_strdup_printf ("%s *", _tmp46_);
10796 _tmp48_ = _tmp47_;
10797 _tmp49_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
10798 _tmp50_ = _tmp49_;
10799 vala_ccode_function_add_declaration (_tmp44_, _tmp48_, (ValaCCodeDeclarator*) _tmp50_, 0);
10800 _vala_ccode_node_unref0 (_tmp50_);
10801 _g_free0 (_tmp48_);
10802 _g_free0 (_tmp46_);
10803 _tmp51_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10804 _tmp52_ = _tmp51_;
10805 _tmp53_ = vala_ccode_identifier_new ("self");
10806 _tmp54_ = _tmp53_;
10807 _tmp55_ = ccast;
10808 vala_ccode_function_add_assignment (_tmp52_, (ValaCCodeExpression*) _tmp54_, _tmp55_);
10809 _vala_ccode_node_unref0 (_tmp54_);
10810 _tmp57_ = vala_class_get_is_compact (cl);
10811 _tmp58_ = _tmp57_;
10812 if (!_tmp58_) {
10813 ValaClass* _tmp59_;
10814 ValaClass* _tmp60_;
10815 _tmp59_ = vala_class_get_base_class (cl);
10816 _tmp60_ = _tmp59_;
10817 _tmp56_ = _tmp60_ == NULL;
10818 } else {
10819 _tmp56_ = FALSE;
10820 }
10821 if (_tmp56_) {
10822 ValaCCodeFunctionCall* call = NULL;
10823 ValaCCodeIdentifier* _tmp61_;
10824 ValaCCodeIdentifier* _tmp62_;
10825 ValaCCodeFunctionCall* _tmp63_;
10826 ValaCCodeFunctionCall* _tmp64_;
10827 ValaCCodeFunctionCall* _tmp65_;
10828 ValaCCodeIdentifier* _tmp66_;
10829 ValaCCodeIdentifier* _tmp67_;
10830 ValaCCodeFunction* _tmp68_;
10831 ValaCCodeFunction* _tmp69_;
10832 ValaCCodeFunctionCall* _tmp70_;
10833 _tmp61_ = vala_ccode_identifier_new ("g_signal_handlers_destroy");
10834 _tmp62_ = _tmp61_;
10835 _tmp63_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp62_);
10836 _tmp64_ = _tmp63_;
10837 _vala_ccode_node_unref0 (_tmp62_);
10838 call = _tmp64_;
10839 _tmp65_ = call;
10840 _tmp66_ = vala_ccode_identifier_new ("self");
10841 _tmp67_ = _tmp66_;
10842 vala_ccode_function_call_add_argument (_tmp65_, (ValaCCodeExpression*) _tmp67_);
10843 _vala_ccode_node_unref0 (_tmp67_);
10844 _tmp68_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10845 _tmp69_ = _tmp68_;
10846 _tmp70_ = call;
10847 vala_ccode_function_add_expression (_tmp69_, (ValaCCodeExpression*) _tmp70_);
10848 _vala_ccode_node_unref0 (call);
10849 }
10850 _vala_ccode_node_unref0 (ccast);
10851 _vala_ccode_node_unref0 (func);
10852 _vala_code_node_unref0 (fundamental_class);
10853 } else {
10854 ValaClass* _tmp71_;
10855 ValaClass* _tmp72_;
10856 _tmp71_ = vala_class_get_base_class (cl);
10857 _tmp72_ = _tmp71_;
10858 if (_tmp72_ == NULL) {
10859 ValaCCodeFunction* function = NULL;
10860 gchar* _tmp73_;
10861 gchar* _tmp74_;
10862 ValaCCodeFunction* _tmp75_;
10863 ValaCCodeFunction* _tmp76_;
10864 ValaCCodeFunction* _tmp84_;
10865 gchar* _tmp85_;
10866 gchar* _tmp86_;
10867 gchar* _tmp87_;
10868 gchar* _tmp88_;
10869 ValaCCodeParameter* _tmp89_;
10870 ValaCCodeParameter* _tmp90_;
10871 ValaCCodeFunction* _tmp91_;
10872 _tmp73_ = vala_get_ccode_free_function ((ValaTypeSymbol*) cl);
10873 _tmp74_ = _tmp73_;
10874 _tmp75_ = vala_ccode_function_new (_tmp74_, "void");
10875 _tmp76_ = _tmp75_;
10876 _g_free0 (_tmp74_);
10877 function = _tmp76_;
10878 if (vala_symbol_is_private_symbol ((ValaSymbol*) cl)) {
10879 ValaCCodeFunction* _tmp77_;
10880 _tmp77_ = function;
10881 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp77_, VALA_CCODE_MODIFIERS_STATIC);
10882 } else {
10883 gboolean _tmp78_ = FALSE;
10884 ValaCodeContext* _tmp79_;
10885 ValaCodeContext* _tmp80_;
10886 gboolean _tmp81_;
10887 gboolean _tmp82_;
10888 _tmp79_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
10889 _tmp80_ = _tmp79_;
10890 _tmp81_ = vala_code_context_get_hide_internal (_tmp80_);
10891 _tmp82_ = _tmp81_;
10892 if (_tmp82_) {
10893 _tmp78_ = vala_symbol_is_internal_symbol ((ValaSymbol*) cl);
10894 } else {
10895 _tmp78_ = FALSE;
10896 }
10897 if (_tmp78_) {
10898 ValaCCodeFunction* _tmp83_;
10899 _tmp83_ = function;
10900 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp83_, VALA_CCODE_MODIFIERS_INTERNAL);
10901 }
10902 }
10903 _tmp84_ = function;
10904 _tmp85_ = vala_get_ccode_name ((ValaCodeNode*) cl);
10905 _tmp86_ = _tmp85_;
10906 _tmp87_ = g_strdup_printf ("%s *", _tmp86_);
10907 _tmp88_ = _tmp87_;
10908 _tmp89_ = vala_ccode_parameter_new ("self", _tmp88_);
10909 _tmp90_ = _tmp89_;
10910 vala_ccode_function_add_parameter (_tmp84_, _tmp90_);
10911 _vala_ccode_node_unref0 (_tmp90_);
10912 _g_free0 (_tmp88_);
10913 _g_free0 (_tmp86_);
10914 _tmp91_ = function;
10915 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp91_);
10916 _vala_ccode_node_unref0 (function);
10917 }
10918 }
10919 _tmp92_ = vala_class_get_destructor (cl);
10920 _tmp93_ = _tmp92_;
10921 if (_tmp93_ != NULL) {
10922 ValaDestructor* _tmp94_;
10923 ValaDestructor* _tmp95_;
10924 ValaBlock* _tmp96_;
10925 ValaBlock* _tmp97_;
10926 gboolean _tmp98_;
10927 gboolean _tmp99_;
10928 gboolean _tmp110_;
10929 gboolean _tmp111_;
10930 _tmp94_ = vala_class_get_destructor (cl);
10931 _tmp95_ = _tmp94_;
10932 _tmp96_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp95_);
10933 _tmp97_ = _tmp96_;
10934 vala_code_node_emit ((ValaCodeNode*) _tmp97_, (ValaCodeGenerator*) self);
10935 _tmp98_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
10936 _tmp99_ = _tmp98_;
10937 if (_tmp99_) {
10938 ValaCCodeFunction* _tmp100_;
10939 ValaCCodeFunction* _tmp101_;
10940 gint _tmp102_;
10941 gint _tmp103_;
10942 gchar* _tmp104_;
10943 gchar* _tmp105_;
10944 ValaCCodeConstant* _tmp106_;
10945 ValaCCodeConstant* _tmp107_;
10946 ValaCCodeVariableDeclarator* _tmp108_;
10947 ValaCCodeVariableDeclarator* _tmp109_;
10948 _tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10949 _tmp101_ = _tmp100_;
10950 _tmp102_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
10951 _tmp103_ = _tmp102_;
10952 _tmp104_ = g_strdup_printf ("_inner_error%d_", _tmp103_);
10953 _tmp105_ = _tmp104_;
10954 _tmp106_ = vala_ccode_constant_new ("NULL");
10955 _tmp107_ = _tmp106_;
10956 _tmp108_ = vala_ccode_variable_declarator_new_zero (_tmp105_, (ValaCCodeExpression*) _tmp107_, NULL);
10957 _tmp109_ = _tmp108_;
10958 vala_ccode_function_add_declaration (_tmp101_, "GError*", (ValaCCodeDeclarator*) _tmp109_, 0);
10959 _vala_ccode_node_unref0 (_tmp109_);
10960 _vala_ccode_node_unref0 (_tmp107_);
10961 _g_free0 (_tmp105_);
10962 }
10963 _tmp110_ = vala_ccode_base_module_get_current_method_return ((ValaCCodeBaseModule*) self);
10964 _tmp111_ = _tmp110_;
10965 if (_tmp111_) {
10966 ValaCCodeFunction* _tmp112_;
10967 ValaCCodeFunction* _tmp113_;
10968 _tmp112_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
10969 _tmp113_ = _tmp112_;
10970 vala_ccode_function_add_label (_tmp113_, "_return");
10971 }
10972 }
10973 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
10974 }
10975
10976 static void
vala_gtype_module_add_finalize_function(ValaGTypeModule * self,ValaClass * cl)10977 vala_gtype_module_add_finalize_function (ValaGTypeModule* self,
10978 ValaClass* cl)
10979 {
10980 gboolean _tmp0_;
10981 gboolean _tmp1_;
10982 g_return_if_fail (self != NULL);
10983 g_return_if_fail (cl != NULL);
10984 _tmp0_ = vala_class_get_is_compact (cl);
10985 _tmp1_ = _tmp0_;
10986 if (!_tmp1_) {
10987 ValaClass* fundamental_class = NULL;
10988 ValaClass* _tmp2_;
10989 ValaClass* _tmp10_;
10990 ValaClass* _tmp11_;
10991 ValaCCodeFile* _tmp38_;
10992 ValaCCodeBaseModuleEmitContext* _tmp39_;
10993 ValaCCodeFunction* _tmp40_;
10994 ValaCCodeFile* _tmp41_;
10995 ValaCCodeBaseModuleEmitContext* _tmp42_;
10996 ValaCCodeFunction* _tmp43_;
10997 _tmp2_ = _vala_code_node_ref0 (cl);
10998 fundamental_class = _tmp2_;
10999 while (TRUE) {
11000 ValaClass* _tmp3_;
11001 ValaClass* _tmp4_;
11002 ValaClass* _tmp5_;
11003 ValaClass* _tmp6_;
11004 ValaClass* _tmp7_;
11005 ValaClass* _tmp8_;
11006 ValaClass* _tmp9_;
11007 _tmp3_ = fundamental_class;
11008 _tmp4_ = vala_class_get_base_class (_tmp3_);
11009 _tmp5_ = _tmp4_;
11010 if (!(_tmp5_ != NULL)) {
11011 break;
11012 }
11013 _tmp6_ = fundamental_class;
11014 _tmp7_ = vala_class_get_base_class (_tmp6_);
11015 _tmp8_ = _tmp7_;
11016 _tmp9_ = _vala_code_node_ref0 (_tmp8_);
11017 _vala_code_node_unref0 (fundamental_class);
11018 fundamental_class = _tmp9_;
11019 }
11020 _tmp10_ = vala_class_get_base_class (cl);
11021 _tmp11_ = _tmp10_;
11022 if (_tmp11_ != NULL) {
11023 ValaCCodeFunctionCall* ccast = NULL;
11024 ValaClass* _tmp12_;
11025 gchar* _tmp13_;
11026 gchar* _tmp14_;
11027 ValaCCodeIdentifier* _tmp15_;
11028 ValaCCodeIdentifier* _tmp16_;
11029 ValaCCodeFunctionCall* _tmp17_;
11030 ValaCCodeFunctionCall* _tmp18_;
11031 ValaCCodeFunctionCall* _tmp19_;
11032 gchar* _tmp20_;
11033 gchar* _tmp21_;
11034 gchar* _tmp22_;
11035 gchar* _tmp23_;
11036 ValaCCodeIdentifier* _tmp24_;
11037 ValaCCodeIdentifier* _tmp25_;
11038 ValaCCodeFunctionCall* ccall = NULL;
11039 ValaCCodeFunctionCall* _tmp26_;
11040 ValaCCodeMemberAccess* _tmp27_;
11041 ValaCCodeMemberAccess* _tmp28_;
11042 ValaCCodeFunctionCall* _tmp29_;
11043 ValaCCodeFunctionCall* _tmp30_;
11044 ValaCCodeFunctionCall* _tmp31_;
11045 ValaCCodeIdentifier* _tmp32_;
11046 ValaCCodeIdentifier* _tmp33_;
11047 ValaCCodeBaseModuleEmitContext* _tmp34_;
11048 ValaCCodeFunction* _tmp35_;
11049 ValaCCodeFunction* _tmp36_;
11050 ValaCCodeFunctionCall* _tmp37_;
11051 _tmp12_ = fundamental_class;
11052 _tmp13_ = vala_get_ccode_class_type_function (_tmp12_);
11053 _tmp14_ = _tmp13_;
11054 _tmp15_ = vala_ccode_identifier_new (_tmp14_);
11055 _tmp16_ = _tmp15_;
11056 _tmp17_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp16_);
11057 _tmp18_ = _tmp17_;
11058 _vala_ccode_node_unref0 (_tmp16_);
11059 _g_free0 (_tmp14_);
11060 ccast = _tmp18_;
11061 _tmp19_ = ccast;
11062 _tmp20_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
11063 _tmp21_ = _tmp20_;
11064 _tmp22_ = g_strdup_printf ("%s_parent_class", _tmp21_);
11065 _tmp23_ = _tmp22_;
11066 _tmp24_ = vala_ccode_identifier_new (_tmp23_);
11067 _tmp25_ = _tmp24_;
11068 vala_ccode_function_call_add_argument (_tmp19_, (ValaCCodeExpression*) _tmp25_);
11069 _vala_ccode_node_unref0 (_tmp25_);
11070 _g_free0 (_tmp23_);
11071 _g_free0 (_tmp21_);
11072 _tmp26_ = ccast;
11073 _tmp27_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp26_, "finalize");
11074 _tmp28_ = _tmp27_;
11075 _tmp29_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp28_);
11076 _tmp30_ = _tmp29_;
11077 _vala_ccode_node_unref0 (_tmp28_);
11078 ccall = _tmp30_;
11079 _tmp31_ = ccall;
11080 _tmp32_ = vala_ccode_identifier_new ("obj");
11081 _tmp33_ = _tmp32_;
11082 vala_ccode_function_call_add_argument (_tmp31_, (ValaCCodeExpression*) _tmp33_);
11083 _vala_ccode_node_unref0 (_tmp33_);
11084 _tmp34_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11085 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp34_);
11086 _tmp35_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
11087 _tmp36_ = _tmp35_;
11088 _tmp37_ = ccall;
11089 vala_ccode_function_add_expression (_tmp36_, (ValaCCodeExpression*) _tmp37_);
11090 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
11091 _vala_ccode_node_unref0 (ccall);
11092 _vala_ccode_node_unref0 (ccast);
11093 }
11094 _tmp38_ = ((ValaCCodeBaseModule*) self)->cfile;
11095 _tmp39_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11096 _tmp40_ = _tmp39_->ccode;
11097 vala_ccode_file_add_function_declaration (_tmp38_, _tmp40_);
11098 _tmp41_ = ((ValaCCodeBaseModule*) self)->cfile;
11099 _tmp42_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11100 _tmp43_ = _tmp42_->ccode;
11101 vala_ccode_file_add_function (_tmp41_, _tmp43_);
11102 _vala_code_node_unref0 (fundamental_class);
11103 } else {
11104 ValaClass* _tmp44_;
11105 ValaClass* _tmp45_;
11106 _tmp44_ = vala_class_get_base_class (cl);
11107 _tmp45_ = _tmp44_;
11108 if (_tmp45_ == NULL) {
11109 ValaCCodeFile* _tmp46_;
11110 ValaCCodeFunctionCall* ccall = NULL;
11111 ValaCCodeIdentifier* _tmp47_;
11112 ValaCCodeIdentifier* _tmp48_;
11113 ValaCCodeFunctionCall* _tmp49_;
11114 ValaCCodeFunctionCall* _tmp50_;
11115 ValaCCodeFunctionCall* _tmp51_;
11116 gchar* _tmp52_;
11117 gchar* _tmp53_;
11118 ValaCCodeIdentifier* _tmp54_;
11119 ValaCCodeIdentifier* _tmp55_;
11120 ValaCCodeFunctionCall* _tmp56_;
11121 ValaCCodeIdentifier* _tmp57_;
11122 ValaCCodeIdentifier* _tmp58_;
11123 ValaCCodeBaseModuleEmitContext* _tmp59_;
11124 ValaCCodeFunction* _tmp60_;
11125 ValaCCodeFunction* _tmp61_;
11126 ValaCCodeFunctionCall* _tmp62_;
11127 ValaCCodeFile* _tmp63_;
11128 ValaCCodeBaseModuleEmitContext* _tmp64_;
11129 ValaCCodeFunction* _tmp65_;
11130 _tmp46_ = ((ValaCCodeBaseModule*) self)->cfile;
11131 vala_ccode_file_add_include (_tmp46_, "glib.h", FALSE);
11132 _tmp47_ = vala_ccode_identifier_new ("g_slice_free");
11133 _tmp48_ = _tmp47_;
11134 _tmp49_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp48_);
11135 _tmp50_ = _tmp49_;
11136 _vala_ccode_node_unref0 (_tmp48_);
11137 ccall = _tmp50_;
11138 _tmp51_ = ccall;
11139 _tmp52_ = vala_get_ccode_name ((ValaCodeNode*) cl);
11140 _tmp53_ = _tmp52_;
11141 _tmp54_ = vala_ccode_identifier_new (_tmp53_);
11142 _tmp55_ = _tmp54_;
11143 vala_ccode_function_call_add_argument (_tmp51_, (ValaCCodeExpression*) _tmp55_);
11144 _vala_ccode_node_unref0 (_tmp55_);
11145 _g_free0 (_tmp53_);
11146 _tmp56_ = ccall;
11147 _tmp57_ = vala_ccode_identifier_new ("self");
11148 _tmp58_ = _tmp57_;
11149 vala_ccode_function_call_add_argument (_tmp56_, (ValaCCodeExpression*) _tmp58_);
11150 _vala_ccode_node_unref0 (_tmp58_);
11151 _tmp59_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11152 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp59_);
11153 _tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
11154 _tmp61_ = _tmp60_;
11155 _tmp62_ = ccall;
11156 vala_ccode_function_add_expression (_tmp61_, (ValaCCodeExpression*) _tmp62_);
11157 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
11158 _tmp63_ = ((ValaCCodeBaseModule*) self)->cfile;
11159 _tmp64_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11160 _tmp65_ = _tmp64_->ccode;
11161 vala_ccode_file_add_function (_tmp63_, _tmp65_);
11162 _vala_ccode_node_unref0 (ccall);
11163 } else {
11164 ValaClass* _tmp66_;
11165 _tmp66_ = ((ValaCCodeBaseModule*) self)->gsource_type;
11166 if (vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, (ValaTypeSymbol*) _tmp66_)) {
11167 ValaCCodeFile* _tmp67_;
11168 ValaCCodeBaseModuleEmitContext* _tmp68_;
11169 ValaCCodeFunction* _tmp69_;
11170 _tmp67_ = ((ValaCCodeBaseModule*) self)->cfile;
11171 _tmp68_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
11172 _tmp69_ = _tmp68_->ccode;
11173 vala_ccode_file_add_function (_tmp67_, _tmp69_);
11174 }
11175 }
11176 }
11177 }
11178
11179 static ValaCCodeExpression*
vala_gtype_module_real_get_param_spec_cexpression(ValaCCodeBaseModule * base,ValaProperty * prop)11180 vala_gtype_module_real_get_param_spec_cexpression (ValaCCodeBaseModule* base,
11181 ValaProperty* prop)
11182 {
11183 ValaGTypeModule * self;
11184 ValaTypeSymbol* cl = NULL;
11185 ValaSymbol* _tmp0_;
11186 ValaSymbol* _tmp1_;
11187 ValaTypeSymbol* _tmp2_;
11188 ValaCCodeIdentifier* prop_array = NULL;
11189 gchar* _tmp3_;
11190 gchar* _tmp4_;
11191 gchar* _tmp5_;
11192 gchar* _tmp6_;
11193 ValaCCodeIdentifier* _tmp7_;
11194 ValaCCodeIdentifier* _tmp8_;
11195 ValaCCodeIdentifier* prop_enum_value = NULL;
11196 gchar* _tmp9_;
11197 gchar* _tmp10_;
11198 gchar* _tmp11_;
11199 gchar* _tmp12_;
11200 ValaCCodeIdentifier* _tmp13_;
11201 ValaCCodeIdentifier* _tmp14_;
11202 ValaCCodeElementAccess* _tmp15_;
11203 ValaCCodeExpression* result = NULL;
11204 self = (ValaGTypeModule*) base;
11205 g_return_val_if_fail (prop != NULL, NULL);
11206 _tmp0_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
11207 _tmp1_ = _tmp0_;
11208 _tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
11209 cl = _tmp2_;
11210 _tmp3_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
11211 _tmp4_ = _tmp3_;
11212 _tmp5_ = g_strdup_printf ("%s_properties", _tmp4_);
11213 _tmp6_ = _tmp5_;
11214 _tmp7_ = vala_ccode_identifier_new (_tmp6_);
11215 _tmp8_ = _tmp7_;
11216 _g_free0 (_tmp6_);
11217 _g_free0 (_tmp4_);
11218 prop_array = _tmp8_;
11219 _tmp9_ = vala_get_ccode_upper_case_name ((ValaSymbol*) prop, NULL);
11220 _tmp10_ = _tmp9_;
11221 _tmp11_ = g_strdup_printf ("%s_PROPERTY", _tmp10_);
11222 _tmp12_ = _tmp11_;
11223 _tmp13_ = vala_ccode_identifier_new (_tmp12_);
11224 _tmp14_ = _tmp13_;
11225 _g_free0 (_tmp12_);
11226 _g_free0 (_tmp10_);
11227 prop_enum_value = _tmp14_;
11228 _tmp15_ = vala_ccode_element_access_new ((ValaCCodeExpression*) prop_array, (ValaCCodeExpression*) prop_enum_value);
11229 result = (ValaCCodeExpression*) _tmp15_;
11230 _vala_ccode_node_unref0 (prop_enum_value);
11231 _vala_ccode_node_unref0 (prop_array);
11232 _vala_code_node_unref0 (cl);
11233 return result;
11234 }
11235
11236 static ValaCCodeExpression*
vala_gtype_module_real_get_param_spec(ValaCCodeBaseModule * base,ValaProperty * prop)11237 vala_gtype_module_real_get_param_spec (ValaCCodeBaseModule* base,
11238 ValaProperty* prop)
11239 {
11240 ValaGTypeModule * self;
11241 ValaCCodeFunctionCall* cspec = NULL;
11242 ValaCCodeFunctionCall* _tmp0_;
11243 ValaCCodeFunctionCall* _tmp1_;
11244 ValaCCodeConstant* _tmp2_;
11245 ValaCCodeConstant* _tmp3_;
11246 ValaCCodeFunctionCall* _tmp4_;
11247 const gchar* _tmp5_;
11248 const gchar* _tmp6_;
11249 gchar* _tmp7_;
11250 gchar* _tmp8_;
11251 ValaCCodeConstant* _tmp9_;
11252 ValaCCodeConstant* _tmp10_;
11253 ValaCCodeFunctionCall* _tmp11_;
11254 const gchar* _tmp12_;
11255 const gchar* _tmp13_;
11256 gchar* _tmp14_;
11257 gchar* _tmp15_;
11258 ValaCCodeConstant* _tmp16_;
11259 ValaCCodeConstant* _tmp17_;
11260 ValaTypeSymbol* type_symbol = NULL;
11261 ValaDataType* _tmp18_;
11262 ValaDataType* _tmp19_;
11263 ValaTypeSymbol* _tmp20_;
11264 ValaTypeSymbol* _tmp21_;
11265 gboolean _tmp22_ = FALSE;
11266 ValaTypeSymbol* _tmp23_;
11267 gchar* pflags = NULL;
11268 gchar* _tmp365_;
11269 gboolean _tmp366_ = FALSE;
11270 ValaPropertyAccessor* _tmp367_;
11271 ValaPropertyAccessor* _tmp368_;
11272 gboolean _tmp375_ = FALSE;
11273 ValaPropertyAccessor* _tmp376_;
11274 ValaPropertyAccessor* _tmp377_;
11275 gboolean _tmp396_;
11276 gboolean _tmp397_;
11277 ValaVersionAttribute* _tmp400_;
11278 ValaVersionAttribute* _tmp401_;
11279 gboolean _tmp402_;
11280 gboolean _tmp403_;
11281 ValaCCodeFunctionCall* _tmp406_;
11282 const gchar* _tmp407_;
11283 ValaCCodeConstant* _tmp408_;
11284 ValaCCodeConstant* _tmp409_;
11285 ValaSymbol* _tmp410_;
11286 ValaSymbol* _tmp411_;
11287 ValaCCodeExpression* result = NULL;
11288 self = (ValaGTypeModule*) base;
11289 g_return_val_if_fail (prop != NULL, NULL);
11290 _tmp0_ = vala_ccode_function_call_new (NULL);
11291 cspec = _tmp0_;
11292 _tmp1_ = cspec;
11293 _tmp2_ = vala_ccode_base_module_get_property_canonical_cconstant ((ValaCCodeBaseModule*) self, prop);
11294 _tmp3_ = _tmp2_;
11295 vala_ccode_function_call_add_argument (_tmp1_, (ValaCCodeExpression*) _tmp3_);
11296 _vala_ccode_node_unref0 (_tmp3_);
11297 _tmp4_ = cspec;
11298 _tmp5_ = vala_property_get_nick (prop);
11299 _tmp6_ = _tmp5_;
11300 _tmp7_ = g_strdup_printf ("\"%s\"", _tmp6_);
11301 _tmp8_ = _tmp7_;
11302 _tmp9_ = vala_ccode_constant_new (_tmp8_);
11303 _tmp10_ = _tmp9_;
11304 vala_ccode_function_call_add_argument (_tmp4_, (ValaCCodeExpression*) _tmp10_);
11305 _vala_ccode_node_unref0 (_tmp10_);
11306 _g_free0 (_tmp8_);
11307 _tmp11_ = cspec;
11308 _tmp12_ = vala_property_get_blurb (prop);
11309 _tmp13_ = _tmp12_;
11310 _tmp14_ = g_strdup_printf ("\"%s\"", _tmp13_);
11311 _tmp15_ = _tmp14_;
11312 _tmp16_ = vala_ccode_constant_new (_tmp15_);
11313 _tmp17_ = _tmp16_;
11314 vala_ccode_function_call_add_argument (_tmp11_, (ValaCCodeExpression*) _tmp17_);
11315 _vala_ccode_node_unref0 (_tmp17_);
11316 _g_free0 (_tmp15_);
11317 _tmp18_ = vala_property_get_property_type (prop);
11318 _tmp19_ = _tmp18_;
11319 _tmp20_ = vala_data_type_get_type_symbol (_tmp19_);
11320 _tmp21_ = _tmp20_;
11321 type_symbol = _tmp21_;
11322 _tmp23_ = type_symbol;
11323 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp23_, VALA_TYPE_CLASS)) {
11324 _tmp22_ = TRUE;
11325 } else {
11326 ValaTypeSymbol* _tmp24_;
11327 _tmp24_ = type_symbol;
11328 _tmp22_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp24_, VALA_TYPE_INTERFACE);
11329 }
11330 if (_tmp22_) {
11331 gchar* param_spec_name = NULL;
11332 ValaTypeSymbol* _tmp25_;
11333 gchar* _tmp26_;
11334 ValaCCodeFunctionCall* _tmp27_;
11335 const gchar* _tmp28_;
11336 ValaCCodeIdentifier* _tmp29_;
11337 ValaCCodeIdentifier* _tmp30_;
11338 const gchar* _tmp31_;
11339 _tmp25_ = type_symbol;
11340 _tmp26_ = vala_get_ccode_param_spec_function ((ValaCodeNode*) _tmp25_);
11341 param_spec_name = _tmp26_;
11342 _tmp27_ = cspec;
11343 _tmp28_ = param_spec_name;
11344 _tmp29_ = vala_ccode_identifier_new (_tmp28_);
11345 _tmp30_ = _tmp29_;
11346 vala_ccode_function_call_set_call (_tmp27_, (ValaCCodeExpression*) _tmp30_);
11347 _vala_ccode_node_unref0 (_tmp30_);
11348 _tmp31_ = param_spec_name;
11349 if (g_strcmp0 (_tmp31_, "g_param_spec_string") == 0) {
11350 ValaCCodeFunctionCall* _tmp32_;
11351 ValaCCodeConstant* _tmp33_;
11352 ValaCCodeConstant* _tmp34_;
11353 _tmp32_ = cspec;
11354 _tmp33_ = vala_ccode_constant_new ("NULL");
11355 _tmp34_ = _tmp33_;
11356 vala_ccode_function_call_add_argument (_tmp32_, (ValaCCodeExpression*) _tmp34_);
11357 _vala_ccode_node_unref0 (_tmp34_);
11358 } else {
11359 const gchar* _tmp35_;
11360 _tmp35_ = param_spec_name;
11361 if (g_strcmp0 (_tmp35_, "g_param_spec_variant") == 0) {
11362 ValaCCodeFunctionCall* _tmp36_;
11363 ValaCCodeConstant* _tmp37_;
11364 ValaCCodeConstant* _tmp38_;
11365 ValaCCodeFunctionCall* _tmp39_;
11366 ValaCCodeConstant* _tmp40_;
11367 ValaCCodeConstant* _tmp41_;
11368 _tmp36_ = cspec;
11369 _tmp37_ = vala_ccode_constant_new ("G_VARIANT_TYPE_ANY");
11370 _tmp38_ = _tmp37_;
11371 vala_ccode_function_call_add_argument (_tmp36_, (ValaCCodeExpression*) _tmp38_);
11372 _vala_ccode_node_unref0 (_tmp38_);
11373 _tmp39_ = cspec;
11374 _tmp40_ = vala_ccode_constant_new ("NULL");
11375 _tmp41_ = _tmp40_;
11376 vala_ccode_function_call_add_argument (_tmp39_, (ValaCCodeExpression*) _tmp41_);
11377 _vala_ccode_node_unref0 (_tmp41_);
11378 } else {
11379 const gchar* _tmp42_;
11380 _tmp42_ = param_spec_name;
11381 if (g_strcmp0 (_tmp42_, "gtk_param_spec_expression") == 0) {
11382 } else {
11383 ValaTypeSymbol* _tmp43_;
11384 gchar* _tmp44_;
11385 gchar* _tmp45_;
11386 gboolean _tmp46_;
11387 _tmp43_ = type_symbol;
11388 _tmp44_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp43_);
11389 _tmp45_ = _tmp44_;
11390 _tmp46_ = g_strcmp0 (_tmp45_, "G_TYPE_POINTER") != 0;
11391 _g_free0 (_tmp45_);
11392 if (_tmp46_) {
11393 ValaCCodeFunctionCall* _tmp47_;
11394 ValaTypeSymbol* _tmp48_;
11395 gchar* _tmp49_;
11396 gchar* _tmp50_;
11397 ValaCCodeIdentifier* _tmp51_;
11398 ValaCCodeIdentifier* _tmp52_;
11399 _tmp47_ = cspec;
11400 _tmp48_ = type_symbol;
11401 _tmp49_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp48_);
11402 _tmp50_ = _tmp49_;
11403 _tmp51_ = vala_ccode_identifier_new (_tmp50_);
11404 _tmp52_ = _tmp51_;
11405 vala_ccode_function_call_add_argument (_tmp47_, (ValaCCodeExpression*) _tmp52_);
11406 _vala_ccode_node_unref0 (_tmp52_);
11407 _g_free0 (_tmp50_);
11408 }
11409 }
11410 }
11411 }
11412 _g_free0 (param_spec_name);
11413 } else {
11414 ValaTypeSymbol* _tmp53_;
11415 _tmp53_ = type_symbol;
11416 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp53_, VALA_TYPE_ENUM)) {
11417 ValaEnum* e = NULL;
11418 ValaTypeSymbol* _tmp54_;
11419 ValaEnum* _tmp55_;
11420 ValaExpression* _tmp92_;
11421 ValaExpression* _tmp93_;
11422 _tmp54_ = type_symbol;
11423 e = G_TYPE_CHECK_INSTANCE_CAST (_tmp54_, VALA_TYPE_ENUM, ValaEnum);
11424 _tmp55_ = e;
11425 if (vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp55_)) {
11426 ValaEnum* _tmp56_;
11427 gboolean _tmp57_;
11428 gboolean _tmp58_;
11429 ValaCCodeFunctionCall* _tmp65_;
11430 ValaEnum* _tmp66_;
11431 gchar* _tmp67_;
11432 gchar* _tmp68_;
11433 ValaCCodeIdentifier* _tmp69_;
11434 ValaCCodeIdentifier* _tmp70_;
11435 _tmp56_ = e;
11436 _tmp57_ = vala_enum_get_is_flags (_tmp56_);
11437 _tmp58_ = _tmp57_;
11438 if (_tmp58_) {
11439 ValaCCodeFunctionCall* _tmp59_;
11440 ValaCCodeIdentifier* _tmp60_;
11441 ValaCCodeIdentifier* _tmp61_;
11442 _tmp59_ = cspec;
11443 _tmp60_ = vala_ccode_identifier_new ("g_param_spec_flags");
11444 _tmp61_ = _tmp60_;
11445 vala_ccode_function_call_set_call (_tmp59_, (ValaCCodeExpression*) _tmp61_);
11446 _vala_ccode_node_unref0 (_tmp61_);
11447 } else {
11448 ValaCCodeFunctionCall* _tmp62_;
11449 ValaCCodeIdentifier* _tmp63_;
11450 ValaCCodeIdentifier* _tmp64_;
11451 _tmp62_ = cspec;
11452 _tmp63_ = vala_ccode_identifier_new ("g_param_spec_enum");
11453 _tmp64_ = _tmp63_;
11454 vala_ccode_function_call_set_call (_tmp62_, (ValaCCodeExpression*) _tmp64_);
11455 _vala_ccode_node_unref0 (_tmp64_);
11456 }
11457 _tmp65_ = cspec;
11458 _tmp66_ = e;
11459 _tmp67_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp66_);
11460 _tmp68_ = _tmp67_;
11461 _tmp69_ = vala_ccode_identifier_new (_tmp68_);
11462 _tmp70_ = _tmp69_;
11463 vala_ccode_function_call_add_argument (_tmp65_, (ValaCCodeExpression*) _tmp70_);
11464 _vala_ccode_node_unref0 (_tmp70_);
11465 _g_free0 (_tmp68_);
11466 } else {
11467 ValaEnum* _tmp71_;
11468 gboolean _tmp72_;
11469 gboolean _tmp73_;
11470 _tmp71_ = e;
11471 _tmp72_ = vala_enum_get_is_flags (_tmp71_);
11472 _tmp73_ = _tmp72_;
11473 if (_tmp73_) {
11474 ValaCCodeFunctionCall* _tmp74_;
11475 ValaCCodeIdentifier* _tmp75_;
11476 ValaCCodeIdentifier* _tmp76_;
11477 ValaCCodeFunctionCall* _tmp77_;
11478 ValaCCodeConstant* _tmp78_;
11479 ValaCCodeConstant* _tmp79_;
11480 ValaCCodeFunctionCall* _tmp80_;
11481 ValaCCodeConstant* _tmp81_;
11482 ValaCCodeConstant* _tmp82_;
11483 _tmp74_ = cspec;
11484 _tmp75_ = vala_ccode_identifier_new ("g_param_spec_uint");
11485 _tmp76_ = _tmp75_;
11486 vala_ccode_function_call_set_call (_tmp74_, (ValaCCodeExpression*) _tmp76_);
11487 _vala_ccode_node_unref0 (_tmp76_);
11488 _tmp77_ = cspec;
11489 _tmp78_ = vala_ccode_constant_new ("0");
11490 _tmp79_ = _tmp78_;
11491 vala_ccode_function_call_add_argument (_tmp77_, (ValaCCodeExpression*) _tmp79_);
11492 _vala_ccode_node_unref0 (_tmp79_);
11493 _tmp80_ = cspec;
11494 _tmp81_ = vala_ccode_constant_new ("G_MAXUINT");
11495 _tmp82_ = _tmp81_;
11496 vala_ccode_function_call_add_argument (_tmp80_, (ValaCCodeExpression*) _tmp82_);
11497 _vala_ccode_node_unref0 (_tmp82_);
11498 } else {
11499 ValaCCodeFunctionCall* _tmp83_;
11500 ValaCCodeIdentifier* _tmp84_;
11501 ValaCCodeIdentifier* _tmp85_;
11502 ValaCCodeFunctionCall* _tmp86_;
11503 ValaCCodeConstant* _tmp87_;
11504 ValaCCodeConstant* _tmp88_;
11505 ValaCCodeFunctionCall* _tmp89_;
11506 ValaCCodeConstant* _tmp90_;
11507 ValaCCodeConstant* _tmp91_;
11508 _tmp83_ = cspec;
11509 _tmp84_ = vala_ccode_identifier_new ("g_param_spec_int");
11510 _tmp85_ = _tmp84_;
11511 vala_ccode_function_call_set_call (_tmp83_, (ValaCCodeExpression*) _tmp85_);
11512 _vala_ccode_node_unref0 (_tmp85_);
11513 _tmp86_ = cspec;
11514 _tmp87_ = vala_ccode_constant_new ("G_MININT");
11515 _tmp88_ = _tmp87_;
11516 vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp88_);
11517 _vala_ccode_node_unref0 (_tmp88_);
11518 _tmp89_ = cspec;
11519 _tmp90_ = vala_ccode_constant_new ("G_MAXINT");
11520 _tmp91_ = _tmp90_;
11521 vala_ccode_function_call_add_argument (_tmp89_, (ValaCCodeExpression*) _tmp91_);
11522 _vala_ccode_node_unref0 (_tmp91_);
11523 }
11524 }
11525 _tmp92_ = vala_property_get_initializer (prop);
11526 _tmp93_ = _tmp92_;
11527 if (_tmp93_ != NULL) {
11528 ValaCCodeFunctionCall* _tmp94_;
11529 ValaExpression* _tmp95_;
11530 ValaExpression* _tmp96_;
11531 ValaCCodeExpression* _tmp97_;
11532 ValaCCodeExpression* _tmp98_;
11533 _tmp94_ = cspec;
11534 _tmp95_ = vala_property_get_initializer (prop);
11535 _tmp96_ = _tmp95_;
11536 _tmp97_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp96_);
11537 _tmp98_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp97_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11538 vala_ccode_function_call_add_argument (_tmp94_, _tmp98_);
11539 _vala_ccode_node_unref0 (_tmp98_);
11540 } else {
11541 ValaCCodeFunctionCall* _tmp99_;
11542 ValaTypeSymbol* _tmp100_;
11543 gchar* _tmp101_;
11544 gchar* _tmp102_;
11545 ValaCCodeConstant* _tmp103_;
11546 ValaCCodeConstant* _tmp104_;
11547 _tmp99_ = cspec;
11548 _tmp100_ = type_symbol;
11549 _tmp101_ = vala_get_ccode_default_value (_tmp100_);
11550 _tmp102_ = _tmp101_;
11551 _tmp103_ = vala_ccode_constant_new (_tmp102_);
11552 _tmp104_ = _tmp103_;
11553 vala_ccode_function_call_add_argument (_tmp99_, (ValaCCodeExpression*) _tmp104_);
11554 _vala_ccode_node_unref0 (_tmp104_);
11555 _g_free0 (_tmp102_);
11556 }
11557 } else {
11558 ValaTypeSymbol* _tmp105_;
11559 _tmp105_ = type_symbol;
11560 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp105_, VALA_TYPE_STRUCT)) {
11561 ValaStruct* st = NULL;
11562 ValaTypeSymbol* _tmp106_;
11563 gchar* type_id = NULL;
11564 ValaStruct* _tmp107_;
11565 gchar* _tmp108_;
11566 const gchar* _tmp109_;
11567 _tmp106_ = type_symbol;
11568 st = G_TYPE_CHECK_INSTANCE_CAST (_tmp106_, VALA_TYPE_STRUCT, ValaStruct);
11569 _tmp107_ = st;
11570 _tmp108_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp107_);
11571 type_id = _tmp108_;
11572 _tmp109_ = type_id;
11573 if (g_strcmp0 (_tmp109_, "G_TYPE_INT") == 0) {
11574 ValaCCodeFunctionCall* _tmp110_;
11575 ValaCCodeIdentifier* _tmp111_;
11576 ValaCCodeIdentifier* _tmp112_;
11577 ValaCCodeFunctionCall* _tmp113_;
11578 ValaCCodeConstant* _tmp114_;
11579 ValaCCodeConstant* _tmp115_;
11580 ValaCCodeFunctionCall* _tmp116_;
11581 ValaCCodeConstant* _tmp117_;
11582 ValaCCodeConstant* _tmp118_;
11583 ValaExpression* _tmp119_;
11584 ValaExpression* _tmp120_;
11585 _tmp110_ = cspec;
11586 _tmp111_ = vala_ccode_identifier_new ("g_param_spec_int");
11587 _tmp112_ = _tmp111_;
11588 vala_ccode_function_call_set_call (_tmp110_, (ValaCCodeExpression*) _tmp112_);
11589 _vala_ccode_node_unref0 (_tmp112_);
11590 _tmp113_ = cspec;
11591 _tmp114_ = vala_ccode_constant_new ("G_MININT");
11592 _tmp115_ = _tmp114_;
11593 vala_ccode_function_call_add_argument (_tmp113_, (ValaCCodeExpression*) _tmp115_);
11594 _vala_ccode_node_unref0 (_tmp115_);
11595 _tmp116_ = cspec;
11596 _tmp117_ = vala_ccode_constant_new ("G_MAXINT");
11597 _tmp118_ = _tmp117_;
11598 vala_ccode_function_call_add_argument (_tmp116_, (ValaCCodeExpression*) _tmp118_);
11599 _vala_ccode_node_unref0 (_tmp118_);
11600 _tmp119_ = vala_property_get_initializer (prop);
11601 _tmp120_ = _tmp119_;
11602 if (_tmp120_ != NULL) {
11603 ValaCCodeFunctionCall* _tmp121_;
11604 ValaExpression* _tmp122_;
11605 ValaExpression* _tmp123_;
11606 ValaCCodeExpression* _tmp124_;
11607 ValaCCodeExpression* _tmp125_;
11608 _tmp121_ = cspec;
11609 _tmp122_ = vala_property_get_initializer (prop);
11610 _tmp123_ = _tmp122_;
11611 _tmp124_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp123_);
11612 _tmp125_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp124_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11613 vala_ccode_function_call_add_argument (_tmp121_, _tmp125_);
11614 _vala_ccode_node_unref0 (_tmp125_);
11615 } else {
11616 ValaCCodeFunctionCall* _tmp126_;
11617 ValaCCodeConstant* _tmp127_;
11618 ValaCCodeConstant* _tmp128_;
11619 _tmp126_ = cspec;
11620 _tmp127_ = vala_ccode_constant_new ("0");
11621 _tmp128_ = _tmp127_;
11622 vala_ccode_function_call_add_argument (_tmp126_, (ValaCCodeExpression*) _tmp128_);
11623 _vala_ccode_node_unref0 (_tmp128_);
11624 }
11625 } else {
11626 const gchar* _tmp129_;
11627 _tmp129_ = type_id;
11628 if (g_strcmp0 (_tmp129_, "G_TYPE_UINT") == 0) {
11629 ValaCCodeFunctionCall* _tmp130_;
11630 ValaCCodeIdentifier* _tmp131_;
11631 ValaCCodeIdentifier* _tmp132_;
11632 ValaCCodeFunctionCall* _tmp133_;
11633 ValaCCodeConstant* _tmp134_;
11634 ValaCCodeConstant* _tmp135_;
11635 ValaCCodeFunctionCall* _tmp136_;
11636 ValaCCodeConstant* _tmp137_;
11637 ValaCCodeConstant* _tmp138_;
11638 ValaExpression* _tmp139_;
11639 ValaExpression* _tmp140_;
11640 _tmp130_ = cspec;
11641 _tmp131_ = vala_ccode_identifier_new ("g_param_spec_uint");
11642 _tmp132_ = _tmp131_;
11643 vala_ccode_function_call_set_call (_tmp130_, (ValaCCodeExpression*) _tmp132_);
11644 _vala_ccode_node_unref0 (_tmp132_);
11645 _tmp133_ = cspec;
11646 _tmp134_ = vala_ccode_constant_new ("0");
11647 _tmp135_ = _tmp134_;
11648 vala_ccode_function_call_add_argument (_tmp133_, (ValaCCodeExpression*) _tmp135_);
11649 _vala_ccode_node_unref0 (_tmp135_);
11650 _tmp136_ = cspec;
11651 _tmp137_ = vala_ccode_constant_new ("G_MAXUINT");
11652 _tmp138_ = _tmp137_;
11653 vala_ccode_function_call_add_argument (_tmp136_, (ValaCCodeExpression*) _tmp138_);
11654 _vala_ccode_node_unref0 (_tmp138_);
11655 _tmp139_ = vala_property_get_initializer (prop);
11656 _tmp140_ = _tmp139_;
11657 if (_tmp140_ != NULL) {
11658 ValaCCodeFunctionCall* _tmp141_;
11659 ValaExpression* _tmp142_;
11660 ValaExpression* _tmp143_;
11661 ValaCCodeExpression* _tmp144_;
11662 ValaCCodeExpression* _tmp145_;
11663 _tmp141_ = cspec;
11664 _tmp142_ = vala_property_get_initializer (prop);
11665 _tmp143_ = _tmp142_;
11666 _tmp144_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp143_);
11667 _tmp145_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp144_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11668 vala_ccode_function_call_add_argument (_tmp141_, _tmp145_);
11669 _vala_ccode_node_unref0 (_tmp145_);
11670 } else {
11671 ValaCCodeFunctionCall* _tmp146_;
11672 ValaCCodeConstant* _tmp147_;
11673 ValaCCodeConstant* _tmp148_;
11674 _tmp146_ = cspec;
11675 _tmp147_ = vala_ccode_constant_new ("0U");
11676 _tmp148_ = _tmp147_;
11677 vala_ccode_function_call_add_argument (_tmp146_, (ValaCCodeExpression*) _tmp148_);
11678 _vala_ccode_node_unref0 (_tmp148_);
11679 }
11680 } else {
11681 const gchar* _tmp149_;
11682 _tmp149_ = type_id;
11683 if (g_strcmp0 (_tmp149_, "G_TYPE_INT64") == 0) {
11684 ValaCCodeFunctionCall* _tmp150_;
11685 ValaCCodeIdentifier* _tmp151_;
11686 ValaCCodeIdentifier* _tmp152_;
11687 ValaCCodeFunctionCall* _tmp153_;
11688 ValaCCodeConstant* _tmp154_;
11689 ValaCCodeConstant* _tmp155_;
11690 ValaCCodeFunctionCall* _tmp156_;
11691 ValaCCodeConstant* _tmp157_;
11692 ValaCCodeConstant* _tmp158_;
11693 ValaExpression* _tmp159_;
11694 ValaExpression* _tmp160_;
11695 _tmp150_ = cspec;
11696 _tmp151_ = vala_ccode_identifier_new ("g_param_spec_int64");
11697 _tmp152_ = _tmp151_;
11698 vala_ccode_function_call_set_call (_tmp150_, (ValaCCodeExpression*) _tmp152_);
11699 _vala_ccode_node_unref0 (_tmp152_);
11700 _tmp153_ = cspec;
11701 _tmp154_ = vala_ccode_constant_new ("G_MININT64");
11702 _tmp155_ = _tmp154_;
11703 vala_ccode_function_call_add_argument (_tmp153_, (ValaCCodeExpression*) _tmp155_);
11704 _vala_ccode_node_unref0 (_tmp155_);
11705 _tmp156_ = cspec;
11706 _tmp157_ = vala_ccode_constant_new ("G_MAXINT64");
11707 _tmp158_ = _tmp157_;
11708 vala_ccode_function_call_add_argument (_tmp156_, (ValaCCodeExpression*) _tmp158_);
11709 _vala_ccode_node_unref0 (_tmp158_);
11710 _tmp159_ = vala_property_get_initializer (prop);
11711 _tmp160_ = _tmp159_;
11712 if (_tmp160_ != NULL) {
11713 ValaCCodeFunctionCall* _tmp161_;
11714 ValaExpression* _tmp162_;
11715 ValaExpression* _tmp163_;
11716 ValaCCodeExpression* _tmp164_;
11717 ValaCCodeExpression* _tmp165_;
11718 _tmp161_ = cspec;
11719 _tmp162_ = vala_property_get_initializer (prop);
11720 _tmp163_ = _tmp162_;
11721 _tmp164_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp163_);
11722 _tmp165_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp164_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11723 vala_ccode_function_call_add_argument (_tmp161_, _tmp165_);
11724 _vala_ccode_node_unref0 (_tmp165_);
11725 } else {
11726 ValaCCodeFunctionCall* _tmp166_;
11727 ValaCCodeConstant* _tmp167_;
11728 ValaCCodeConstant* _tmp168_;
11729 _tmp166_ = cspec;
11730 _tmp167_ = vala_ccode_constant_new ("0");
11731 _tmp168_ = _tmp167_;
11732 vala_ccode_function_call_add_argument (_tmp166_, (ValaCCodeExpression*) _tmp168_);
11733 _vala_ccode_node_unref0 (_tmp168_);
11734 }
11735 } else {
11736 const gchar* _tmp169_;
11737 _tmp169_ = type_id;
11738 if (g_strcmp0 (_tmp169_, "G_TYPE_UINT64") == 0) {
11739 ValaCCodeFunctionCall* _tmp170_;
11740 ValaCCodeIdentifier* _tmp171_;
11741 ValaCCodeIdentifier* _tmp172_;
11742 ValaCCodeFunctionCall* _tmp173_;
11743 ValaCCodeConstant* _tmp174_;
11744 ValaCCodeConstant* _tmp175_;
11745 ValaCCodeFunctionCall* _tmp176_;
11746 ValaCCodeConstant* _tmp177_;
11747 ValaCCodeConstant* _tmp178_;
11748 ValaExpression* _tmp179_;
11749 ValaExpression* _tmp180_;
11750 _tmp170_ = cspec;
11751 _tmp171_ = vala_ccode_identifier_new ("g_param_spec_uint64");
11752 _tmp172_ = _tmp171_;
11753 vala_ccode_function_call_set_call (_tmp170_, (ValaCCodeExpression*) _tmp172_);
11754 _vala_ccode_node_unref0 (_tmp172_);
11755 _tmp173_ = cspec;
11756 _tmp174_ = vala_ccode_constant_new ("0");
11757 _tmp175_ = _tmp174_;
11758 vala_ccode_function_call_add_argument (_tmp173_, (ValaCCodeExpression*) _tmp175_);
11759 _vala_ccode_node_unref0 (_tmp175_);
11760 _tmp176_ = cspec;
11761 _tmp177_ = vala_ccode_constant_new ("G_MAXUINT64");
11762 _tmp178_ = _tmp177_;
11763 vala_ccode_function_call_add_argument (_tmp176_, (ValaCCodeExpression*) _tmp178_);
11764 _vala_ccode_node_unref0 (_tmp178_);
11765 _tmp179_ = vala_property_get_initializer (prop);
11766 _tmp180_ = _tmp179_;
11767 if (_tmp180_ != NULL) {
11768 ValaCCodeFunctionCall* _tmp181_;
11769 ValaExpression* _tmp182_;
11770 ValaExpression* _tmp183_;
11771 ValaCCodeExpression* _tmp184_;
11772 ValaCCodeExpression* _tmp185_;
11773 _tmp181_ = cspec;
11774 _tmp182_ = vala_property_get_initializer (prop);
11775 _tmp183_ = _tmp182_;
11776 _tmp184_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp183_);
11777 _tmp185_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp184_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11778 vala_ccode_function_call_add_argument (_tmp181_, _tmp185_);
11779 _vala_ccode_node_unref0 (_tmp185_);
11780 } else {
11781 ValaCCodeFunctionCall* _tmp186_;
11782 ValaCCodeConstant* _tmp187_;
11783 ValaCCodeConstant* _tmp188_;
11784 _tmp186_ = cspec;
11785 _tmp187_ = vala_ccode_constant_new ("0U");
11786 _tmp188_ = _tmp187_;
11787 vala_ccode_function_call_add_argument (_tmp186_, (ValaCCodeExpression*) _tmp188_);
11788 _vala_ccode_node_unref0 (_tmp188_);
11789 }
11790 } else {
11791 const gchar* _tmp189_;
11792 _tmp189_ = type_id;
11793 if (g_strcmp0 (_tmp189_, "G_TYPE_LONG") == 0) {
11794 ValaCCodeFunctionCall* _tmp190_;
11795 ValaCCodeIdentifier* _tmp191_;
11796 ValaCCodeIdentifier* _tmp192_;
11797 ValaCCodeFunctionCall* _tmp193_;
11798 ValaCCodeConstant* _tmp194_;
11799 ValaCCodeConstant* _tmp195_;
11800 ValaCCodeFunctionCall* _tmp196_;
11801 ValaCCodeConstant* _tmp197_;
11802 ValaCCodeConstant* _tmp198_;
11803 ValaExpression* _tmp199_;
11804 ValaExpression* _tmp200_;
11805 _tmp190_ = cspec;
11806 _tmp191_ = vala_ccode_identifier_new ("g_param_spec_long");
11807 _tmp192_ = _tmp191_;
11808 vala_ccode_function_call_set_call (_tmp190_, (ValaCCodeExpression*) _tmp192_);
11809 _vala_ccode_node_unref0 (_tmp192_);
11810 _tmp193_ = cspec;
11811 _tmp194_ = vala_ccode_constant_new ("G_MINLONG");
11812 _tmp195_ = _tmp194_;
11813 vala_ccode_function_call_add_argument (_tmp193_, (ValaCCodeExpression*) _tmp195_);
11814 _vala_ccode_node_unref0 (_tmp195_);
11815 _tmp196_ = cspec;
11816 _tmp197_ = vala_ccode_constant_new ("G_MAXLONG");
11817 _tmp198_ = _tmp197_;
11818 vala_ccode_function_call_add_argument (_tmp196_, (ValaCCodeExpression*) _tmp198_);
11819 _vala_ccode_node_unref0 (_tmp198_);
11820 _tmp199_ = vala_property_get_initializer (prop);
11821 _tmp200_ = _tmp199_;
11822 if (_tmp200_ != NULL) {
11823 ValaCCodeFunctionCall* _tmp201_;
11824 ValaExpression* _tmp202_;
11825 ValaExpression* _tmp203_;
11826 ValaCCodeExpression* _tmp204_;
11827 ValaCCodeExpression* _tmp205_;
11828 _tmp201_ = cspec;
11829 _tmp202_ = vala_property_get_initializer (prop);
11830 _tmp203_ = _tmp202_;
11831 _tmp204_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp203_);
11832 _tmp205_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp204_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11833 vala_ccode_function_call_add_argument (_tmp201_, _tmp205_);
11834 _vala_ccode_node_unref0 (_tmp205_);
11835 } else {
11836 ValaCCodeFunctionCall* _tmp206_;
11837 ValaCCodeConstant* _tmp207_;
11838 ValaCCodeConstant* _tmp208_;
11839 _tmp206_ = cspec;
11840 _tmp207_ = vala_ccode_constant_new ("0L");
11841 _tmp208_ = _tmp207_;
11842 vala_ccode_function_call_add_argument (_tmp206_, (ValaCCodeExpression*) _tmp208_);
11843 _vala_ccode_node_unref0 (_tmp208_);
11844 }
11845 } else {
11846 const gchar* _tmp209_;
11847 _tmp209_ = type_id;
11848 if (g_strcmp0 (_tmp209_, "G_TYPE_ULONG") == 0) {
11849 ValaCCodeFunctionCall* _tmp210_;
11850 ValaCCodeIdentifier* _tmp211_;
11851 ValaCCodeIdentifier* _tmp212_;
11852 ValaCCodeFunctionCall* _tmp213_;
11853 ValaCCodeConstant* _tmp214_;
11854 ValaCCodeConstant* _tmp215_;
11855 ValaCCodeFunctionCall* _tmp216_;
11856 ValaCCodeConstant* _tmp217_;
11857 ValaCCodeConstant* _tmp218_;
11858 ValaExpression* _tmp219_;
11859 ValaExpression* _tmp220_;
11860 _tmp210_ = cspec;
11861 _tmp211_ = vala_ccode_identifier_new ("g_param_spec_ulong");
11862 _tmp212_ = _tmp211_;
11863 vala_ccode_function_call_set_call (_tmp210_, (ValaCCodeExpression*) _tmp212_);
11864 _vala_ccode_node_unref0 (_tmp212_);
11865 _tmp213_ = cspec;
11866 _tmp214_ = vala_ccode_constant_new ("0");
11867 _tmp215_ = _tmp214_;
11868 vala_ccode_function_call_add_argument (_tmp213_, (ValaCCodeExpression*) _tmp215_);
11869 _vala_ccode_node_unref0 (_tmp215_);
11870 _tmp216_ = cspec;
11871 _tmp217_ = vala_ccode_constant_new ("G_MAXULONG");
11872 _tmp218_ = _tmp217_;
11873 vala_ccode_function_call_add_argument (_tmp216_, (ValaCCodeExpression*) _tmp218_);
11874 _vala_ccode_node_unref0 (_tmp218_);
11875 _tmp219_ = vala_property_get_initializer (prop);
11876 _tmp220_ = _tmp219_;
11877 if (_tmp220_ != NULL) {
11878 ValaCCodeFunctionCall* _tmp221_;
11879 ValaExpression* _tmp222_;
11880 ValaExpression* _tmp223_;
11881 ValaCCodeExpression* _tmp224_;
11882 ValaCCodeExpression* _tmp225_;
11883 _tmp221_ = cspec;
11884 _tmp222_ = vala_property_get_initializer (prop);
11885 _tmp223_ = _tmp222_;
11886 _tmp224_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp223_);
11887 _tmp225_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp224_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11888 vala_ccode_function_call_add_argument (_tmp221_, _tmp225_);
11889 _vala_ccode_node_unref0 (_tmp225_);
11890 } else {
11891 ValaCCodeFunctionCall* _tmp226_;
11892 ValaCCodeConstant* _tmp227_;
11893 ValaCCodeConstant* _tmp228_;
11894 _tmp226_ = cspec;
11895 _tmp227_ = vala_ccode_constant_new ("0UL");
11896 _tmp228_ = _tmp227_;
11897 vala_ccode_function_call_add_argument (_tmp226_, (ValaCCodeExpression*) _tmp228_);
11898 _vala_ccode_node_unref0 (_tmp228_);
11899 }
11900 } else {
11901 const gchar* _tmp229_;
11902 _tmp229_ = type_id;
11903 if (g_strcmp0 (_tmp229_, "G_TYPE_BOOLEAN") == 0) {
11904 ValaCCodeFunctionCall* _tmp230_;
11905 ValaCCodeIdentifier* _tmp231_;
11906 ValaCCodeIdentifier* _tmp232_;
11907 ValaExpression* _tmp233_;
11908 ValaExpression* _tmp234_;
11909 _tmp230_ = cspec;
11910 _tmp231_ = vala_ccode_identifier_new ("g_param_spec_boolean");
11911 _tmp232_ = _tmp231_;
11912 vala_ccode_function_call_set_call (_tmp230_, (ValaCCodeExpression*) _tmp232_);
11913 _vala_ccode_node_unref0 (_tmp232_);
11914 _tmp233_ = vala_property_get_initializer (prop);
11915 _tmp234_ = _tmp233_;
11916 if (_tmp234_ != NULL) {
11917 ValaCCodeFunctionCall* _tmp235_;
11918 ValaExpression* _tmp236_;
11919 ValaExpression* _tmp237_;
11920 ValaCCodeExpression* _tmp238_;
11921 ValaCCodeExpression* _tmp239_;
11922 _tmp235_ = cspec;
11923 _tmp236_ = vala_property_get_initializer (prop);
11924 _tmp237_ = _tmp236_;
11925 _tmp238_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp237_);
11926 _tmp239_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp238_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11927 vala_ccode_function_call_add_argument (_tmp235_, _tmp239_);
11928 _vala_ccode_node_unref0 (_tmp239_);
11929 } else {
11930 ValaCCodeFunctionCall* _tmp240_;
11931 ValaCCodeConstant* _tmp241_;
11932 ValaCCodeConstant* _tmp242_;
11933 _tmp240_ = cspec;
11934 _tmp241_ = vala_ccode_constant_new ("FALSE");
11935 _tmp242_ = _tmp241_;
11936 vala_ccode_function_call_add_argument (_tmp240_, (ValaCCodeExpression*) _tmp242_);
11937 _vala_ccode_node_unref0 (_tmp242_);
11938 }
11939 } else {
11940 const gchar* _tmp243_;
11941 _tmp243_ = type_id;
11942 if (g_strcmp0 (_tmp243_, "G_TYPE_CHAR") == 0) {
11943 ValaCCodeFunctionCall* _tmp244_;
11944 ValaCCodeIdentifier* _tmp245_;
11945 ValaCCodeIdentifier* _tmp246_;
11946 ValaCCodeFunctionCall* _tmp247_;
11947 ValaCCodeConstant* _tmp248_;
11948 ValaCCodeConstant* _tmp249_;
11949 ValaCCodeFunctionCall* _tmp250_;
11950 ValaCCodeConstant* _tmp251_;
11951 ValaCCodeConstant* _tmp252_;
11952 ValaExpression* _tmp253_;
11953 ValaExpression* _tmp254_;
11954 _tmp244_ = cspec;
11955 _tmp245_ = vala_ccode_identifier_new ("g_param_spec_char");
11956 _tmp246_ = _tmp245_;
11957 vala_ccode_function_call_set_call (_tmp244_, (ValaCCodeExpression*) _tmp246_);
11958 _vala_ccode_node_unref0 (_tmp246_);
11959 _tmp247_ = cspec;
11960 _tmp248_ = vala_ccode_constant_new ("G_MININT8");
11961 _tmp249_ = _tmp248_;
11962 vala_ccode_function_call_add_argument (_tmp247_, (ValaCCodeExpression*) _tmp249_);
11963 _vala_ccode_node_unref0 (_tmp249_);
11964 _tmp250_ = cspec;
11965 _tmp251_ = vala_ccode_constant_new ("G_MAXINT8");
11966 _tmp252_ = _tmp251_;
11967 vala_ccode_function_call_add_argument (_tmp250_, (ValaCCodeExpression*) _tmp252_);
11968 _vala_ccode_node_unref0 (_tmp252_);
11969 _tmp253_ = vala_property_get_initializer (prop);
11970 _tmp254_ = _tmp253_;
11971 if (_tmp254_ != NULL) {
11972 ValaCCodeFunctionCall* _tmp255_;
11973 ValaExpression* _tmp256_;
11974 ValaExpression* _tmp257_;
11975 ValaCCodeExpression* _tmp258_;
11976 ValaCCodeExpression* _tmp259_;
11977 _tmp255_ = cspec;
11978 _tmp256_ = vala_property_get_initializer (prop);
11979 _tmp257_ = _tmp256_;
11980 _tmp258_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp257_);
11981 _tmp259_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp258_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
11982 vala_ccode_function_call_add_argument (_tmp255_, _tmp259_);
11983 _vala_ccode_node_unref0 (_tmp259_);
11984 } else {
11985 ValaCCodeFunctionCall* _tmp260_;
11986 ValaCCodeConstant* _tmp261_;
11987 ValaCCodeConstant* _tmp262_;
11988 _tmp260_ = cspec;
11989 _tmp261_ = vala_ccode_constant_new ("0");
11990 _tmp262_ = _tmp261_;
11991 vala_ccode_function_call_add_argument (_tmp260_, (ValaCCodeExpression*) _tmp262_);
11992 _vala_ccode_node_unref0 (_tmp262_);
11993 }
11994 } else {
11995 const gchar* _tmp263_;
11996 _tmp263_ = type_id;
11997 if (g_strcmp0 (_tmp263_, "G_TYPE_UCHAR") == 0) {
11998 ValaCCodeFunctionCall* _tmp264_;
11999 ValaCCodeIdentifier* _tmp265_;
12000 ValaCCodeIdentifier* _tmp266_;
12001 ValaCCodeFunctionCall* _tmp267_;
12002 ValaCCodeConstant* _tmp268_;
12003 ValaCCodeConstant* _tmp269_;
12004 ValaCCodeFunctionCall* _tmp270_;
12005 ValaCCodeConstant* _tmp271_;
12006 ValaCCodeConstant* _tmp272_;
12007 ValaExpression* _tmp273_;
12008 ValaExpression* _tmp274_;
12009 _tmp264_ = cspec;
12010 _tmp265_ = vala_ccode_identifier_new ("g_param_spec_uchar");
12011 _tmp266_ = _tmp265_;
12012 vala_ccode_function_call_set_call (_tmp264_, (ValaCCodeExpression*) _tmp266_);
12013 _vala_ccode_node_unref0 (_tmp266_);
12014 _tmp267_ = cspec;
12015 _tmp268_ = vala_ccode_constant_new ("0");
12016 _tmp269_ = _tmp268_;
12017 vala_ccode_function_call_add_argument (_tmp267_, (ValaCCodeExpression*) _tmp269_);
12018 _vala_ccode_node_unref0 (_tmp269_);
12019 _tmp270_ = cspec;
12020 _tmp271_ = vala_ccode_constant_new ("G_MAXUINT8");
12021 _tmp272_ = _tmp271_;
12022 vala_ccode_function_call_add_argument (_tmp270_, (ValaCCodeExpression*) _tmp272_);
12023 _vala_ccode_node_unref0 (_tmp272_);
12024 _tmp273_ = vala_property_get_initializer (prop);
12025 _tmp274_ = _tmp273_;
12026 if (_tmp274_ != NULL) {
12027 ValaCCodeFunctionCall* _tmp275_;
12028 ValaExpression* _tmp276_;
12029 ValaExpression* _tmp277_;
12030 ValaCCodeExpression* _tmp278_;
12031 ValaCCodeExpression* _tmp279_;
12032 _tmp275_ = cspec;
12033 _tmp276_ = vala_property_get_initializer (prop);
12034 _tmp277_ = _tmp276_;
12035 _tmp278_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp277_);
12036 _tmp279_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp278_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
12037 vala_ccode_function_call_add_argument (_tmp275_, _tmp279_);
12038 _vala_ccode_node_unref0 (_tmp279_);
12039 } else {
12040 ValaCCodeFunctionCall* _tmp280_;
12041 ValaCCodeConstant* _tmp281_;
12042 ValaCCodeConstant* _tmp282_;
12043 _tmp280_ = cspec;
12044 _tmp281_ = vala_ccode_constant_new ("0");
12045 _tmp282_ = _tmp281_;
12046 vala_ccode_function_call_add_argument (_tmp280_, (ValaCCodeExpression*) _tmp282_);
12047 _vala_ccode_node_unref0 (_tmp282_);
12048 }
12049 } else {
12050 const gchar* _tmp283_;
12051 _tmp283_ = type_id;
12052 if (g_strcmp0 (_tmp283_, "G_TYPE_FLOAT") == 0) {
12053 ValaCCodeFunctionCall* _tmp284_;
12054 ValaCCodeIdentifier* _tmp285_;
12055 ValaCCodeIdentifier* _tmp286_;
12056 ValaCCodeFunctionCall* _tmp287_;
12057 ValaCCodeConstant* _tmp288_;
12058 ValaCCodeConstant* _tmp289_;
12059 ValaCCodeFunctionCall* _tmp290_;
12060 ValaCCodeConstant* _tmp291_;
12061 ValaCCodeConstant* _tmp292_;
12062 ValaExpression* _tmp293_;
12063 ValaExpression* _tmp294_;
12064 _tmp284_ = cspec;
12065 _tmp285_ = vala_ccode_identifier_new ("g_param_spec_float");
12066 _tmp286_ = _tmp285_;
12067 vala_ccode_function_call_set_call (_tmp284_, (ValaCCodeExpression*) _tmp286_);
12068 _vala_ccode_node_unref0 (_tmp286_);
12069 _tmp287_ = cspec;
12070 _tmp288_ = vala_ccode_constant_new ("-G_MAXFLOAT");
12071 _tmp289_ = _tmp288_;
12072 vala_ccode_function_call_add_argument (_tmp287_, (ValaCCodeExpression*) _tmp289_);
12073 _vala_ccode_node_unref0 (_tmp289_);
12074 _tmp290_ = cspec;
12075 _tmp291_ = vala_ccode_constant_new ("G_MAXFLOAT");
12076 _tmp292_ = _tmp291_;
12077 vala_ccode_function_call_add_argument (_tmp290_, (ValaCCodeExpression*) _tmp292_);
12078 _vala_ccode_node_unref0 (_tmp292_);
12079 _tmp293_ = vala_property_get_initializer (prop);
12080 _tmp294_ = _tmp293_;
12081 if (_tmp294_ != NULL) {
12082 ValaCCodeFunctionCall* _tmp295_;
12083 ValaExpression* _tmp296_;
12084 ValaExpression* _tmp297_;
12085 ValaCCodeExpression* _tmp298_;
12086 ValaCCodeExpression* _tmp299_;
12087 _tmp295_ = cspec;
12088 _tmp296_ = vala_property_get_initializer (prop);
12089 _tmp297_ = _tmp296_;
12090 _tmp298_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp297_);
12091 _tmp299_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp298_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
12092 vala_ccode_function_call_add_argument (_tmp295_, _tmp299_);
12093 _vala_ccode_node_unref0 (_tmp299_);
12094 } else {
12095 ValaCCodeFunctionCall* _tmp300_;
12096 ValaCCodeConstant* _tmp301_;
12097 ValaCCodeConstant* _tmp302_;
12098 _tmp300_ = cspec;
12099 _tmp301_ = vala_ccode_constant_new ("0.0F");
12100 _tmp302_ = _tmp301_;
12101 vala_ccode_function_call_add_argument (_tmp300_, (ValaCCodeExpression*) _tmp302_);
12102 _vala_ccode_node_unref0 (_tmp302_);
12103 }
12104 } else {
12105 const gchar* _tmp303_;
12106 _tmp303_ = type_id;
12107 if (g_strcmp0 (_tmp303_, "G_TYPE_DOUBLE") == 0) {
12108 ValaCCodeFunctionCall* _tmp304_;
12109 ValaCCodeIdentifier* _tmp305_;
12110 ValaCCodeIdentifier* _tmp306_;
12111 ValaCCodeFunctionCall* _tmp307_;
12112 ValaCCodeConstant* _tmp308_;
12113 ValaCCodeConstant* _tmp309_;
12114 ValaCCodeFunctionCall* _tmp310_;
12115 ValaCCodeConstant* _tmp311_;
12116 ValaCCodeConstant* _tmp312_;
12117 ValaExpression* _tmp313_;
12118 ValaExpression* _tmp314_;
12119 _tmp304_ = cspec;
12120 _tmp305_ = vala_ccode_identifier_new ("g_param_spec_double");
12121 _tmp306_ = _tmp305_;
12122 vala_ccode_function_call_set_call (_tmp304_, (ValaCCodeExpression*) _tmp306_);
12123 _vala_ccode_node_unref0 (_tmp306_);
12124 _tmp307_ = cspec;
12125 _tmp308_ = vala_ccode_constant_new ("-G_MAXDOUBLE");
12126 _tmp309_ = _tmp308_;
12127 vala_ccode_function_call_add_argument (_tmp307_, (ValaCCodeExpression*) _tmp309_);
12128 _vala_ccode_node_unref0 (_tmp309_);
12129 _tmp310_ = cspec;
12130 _tmp311_ = vala_ccode_constant_new ("G_MAXDOUBLE");
12131 _tmp312_ = _tmp311_;
12132 vala_ccode_function_call_add_argument (_tmp310_, (ValaCCodeExpression*) _tmp312_);
12133 _vala_ccode_node_unref0 (_tmp312_);
12134 _tmp313_ = vala_property_get_initializer (prop);
12135 _tmp314_ = _tmp313_;
12136 if (_tmp314_ != NULL) {
12137 ValaCCodeFunctionCall* _tmp315_;
12138 ValaExpression* _tmp316_;
12139 ValaExpression* _tmp317_;
12140 ValaCCodeExpression* _tmp318_;
12141 ValaCCodeExpression* _tmp319_;
12142 _tmp315_ = cspec;
12143 _tmp316_ = vala_property_get_initializer (prop);
12144 _tmp317_ = _tmp316_;
12145 _tmp318_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp317_);
12146 _tmp319_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp318_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
12147 vala_ccode_function_call_add_argument (_tmp315_, _tmp319_);
12148 _vala_ccode_node_unref0 (_tmp319_);
12149 } else {
12150 ValaCCodeFunctionCall* _tmp320_;
12151 ValaCCodeConstant* _tmp321_;
12152 ValaCCodeConstant* _tmp322_;
12153 _tmp320_ = cspec;
12154 _tmp321_ = vala_ccode_constant_new ("0.0");
12155 _tmp322_ = _tmp321_;
12156 vala_ccode_function_call_add_argument (_tmp320_, (ValaCCodeExpression*) _tmp322_);
12157 _vala_ccode_node_unref0 (_tmp322_);
12158 }
12159 } else {
12160 const gchar* _tmp323_;
12161 _tmp323_ = type_id;
12162 if (g_strcmp0 (_tmp323_, "G_TYPE_GTYPE") == 0) {
12163 ValaCCodeFunctionCall* _tmp324_;
12164 ValaCCodeIdentifier* _tmp325_;
12165 ValaCCodeIdentifier* _tmp326_;
12166 ValaExpression* _tmp327_;
12167 ValaExpression* _tmp328_;
12168 _tmp324_ = cspec;
12169 _tmp325_ = vala_ccode_identifier_new ("g_param_spec_gtype");
12170 _tmp326_ = _tmp325_;
12171 vala_ccode_function_call_set_call (_tmp324_, (ValaCCodeExpression*) _tmp326_);
12172 _vala_ccode_node_unref0 (_tmp326_);
12173 _tmp327_ = vala_property_get_initializer (prop);
12174 _tmp328_ = _tmp327_;
12175 if (_tmp328_ != NULL) {
12176 ValaCCodeFunctionCall* _tmp329_;
12177 ValaExpression* _tmp330_;
12178 ValaExpression* _tmp331_;
12179 ValaCCodeExpression* _tmp332_;
12180 ValaCCodeExpression* _tmp333_;
12181 _tmp329_ = cspec;
12182 _tmp330_ = vala_property_get_initializer (prop);
12183 _tmp331_ = _tmp330_;
12184 _tmp332_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp331_);
12185 _tmp333_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp332_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
12186 vala_ccode_function_call_add_argument (_tmp329_, _tmp333_);
12187 _vala_ccode_node_unref0 (_tmp333_);
12188 } else {
12189 ValaCCodeFunctionCall* _tmp334_;
12190 ValaCCodeConstant* _tmp335_;
12191 ValaCCodeConstant* _tmp336_;
12192 _tmp334_ = cspec;
12193 _tmp335_ = vala_ccode_constant_new ("G_TYPE_NONE");
12194 _tmp336_ = _tmp335_;
12195 vala_ccode_function_call_add_argument (_tmp334_, (ValaCCodeExpression*) _tmp336_);
12196 _vala_ccode_node_unref0 (_tmp336_);
12197 }
12198 } else {
12199 ValaCCodeFunctionCall* _tmp337_;
12200 ValaCCodeIdentifier* _tmp338_;
12201 ValaCCodeIdentifier* _tmp339_;
12202 ValaCCodeFunctionCall* _tmp340_;
12203 const gchar* _tmp341_;
12204 ValaCCodeIdentifier* _tmp342_;
12205 ValaCCodeIdentifier* _tmp343_;
12206 _tmp337_ = cspec;
12207 _tmp338_ = vala_ccode_identifier_new ("g_param_spec_boxed");
12208 _tmp339_ = _tmp338_;
12209 vala_ccode_function_call_set_call (_tmp337_, (ValaCCodeExpression*) _tmp339_);
12210 _vala_ccode_node_unref0 (_tmp339_);
12211 _tmp340_ = cspec;
12212 _tmp341_ = type_id;
12213 _tmp342_ = vala_ccode_identifier_new (_tmp341_);
12214 _tmp343_ = _tmp342_;
12215 vala_ccode_function_call_add_argument (_tmp340_, (ValaCCodeExpression*) _tmp343_);
12216 _vala_ccode_node_unref0 (_tmp343_);
12217 }
12218 }
12219 }
12220 }
12221 }
12222 }
12223 }
12224 }
12225 }
12226 }
12227 }
12228 }
12229 _g_free0 (type_id);
12230 } else {
12231 gboolean _tmp344_ = FALSE;
12232 ValaDataType* _tmp345_;
12233 ValaDataType* _tmp346_;
12234 _tmp345_ = vala_property_get_property_type (prop);
12235 _tmp346_ = _tmp345_;
12236 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp346_, VALA_TYPE_ARRAY_TYPE)) {
12237 ValaDataType* _tmp347_;
12238 ValaDataType* _tmp348_;
12239 ValaDataType* _tmp349_;
12240 ValaDataType* _tmp350_;
12241 ValaTypeSymbol* _tmp351_;
12242 ValaTypeSymbol* _tmp352_;
12243 ValaDataType* _tmp353_;
12244 ValaTypeSymbol* _tmp354_;
12245 ValaTypeSymbol* _tmp355_;
12246 _tmp347_ = vala_property_get_property_type (prop);
12247 _tmp348_ = _tmp347_;
12248 _tmp349_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp348_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
12249 _tmp350_ = _tmp349_;
12250 _tmp351_ = vala_data_type_get_type_symbol (_tmp350_);
12251 _tmp352_ = _tmp351_;
12252 _tmp353_ = ((ValaCCodeBaseModule*) self)->string_type;
12253 _tmp354_ = vala_data_type_get_type_symbol (_tmp353_);
12254 _tmp355_ = _tmp354_;
12255 _tmp344_ = _tmp352_ == _tmp355_;
12256 } else {
12257 _tmp344_ = FALSE;
12258 }
12259 if (_tmp344_) {
12260 ValaCCodeFunctionCall* _tmp356_;
12261 ValaCCodeIdentifier* _tmp357_;
12262 ValaCCodeIdentifier* _tmp358_;
12263 ValaCCodeFunctionCall* _tmp359_;
12264 ValaCCodeIdentifier* _tmp360_;
12265 ValaCCodeIdentifier* _tmp361_;
12266 _tmp356_ = cspec;
12267 _tmp357_ = vala_ccode_identifier_new ("g_param_spec_boxed");
12268 _tmp358_ = _tmp357_;
12269 vala_ccode_function_call_set_call (_tmp356_, (ValaCCodeExpression*) _tmp358_);
12270 _vala_ccode_node_unref0 (_tmp358_);
12271 _tmp359_ = cspec;
12272 _tmp360_ = vala_ccode_identifier_new ("G_TYPE_STRV");
12273 _tmp361_ = _tmp360_;
12274 vala_ccode_function_call_add_argument (_tmp359_, (ValaCCodeExpression*) _tmp361_);
12275 _vala_ccode_node_unref0 (_tmp361_);
12276 } else {
12277 ValaCCodeFunctionCall* _tmp362_;
12278 ValaCCodeIdentifier* _tmp363_;
12279 ValaCCodeIdentifier* _tmp364_;
12280 _tmp362_ = cspec;
12281 _tmp363_ = vala_ccode_identifier_new ("g_param_spec_pointer");
12282 _tmp364_ = _tmp363_;
12283 vala_ccode_function_call_set_call (_tmp362_, (ValaCCodeExpression*) _tmp364_);
12284 _vala_ccode_node_unref0 (_tmp364_);
12285 }
12286 }
12287 }
12288 }
12289 _tmp365_ = g_strdup ("G_PARAM_STATIC_STRINGS");
12290 pflags = _tmp365_;
12291 _tmp367_ = vala_property_get_get_accessor (prop);
12292 _tmp368_ = _tmp367_;
12293 if (_tmp368_ != NULL) {
12294 ValaPropertyAccessor* _tmp369_;
12295 ValaPropertyAccessor* _tmp370_;
12296 ValaSymbolAccessibility _tmp371_;
12297 ValaSymbolAccessibility _tmp372_;
12298 _tmp369_ = vala_property_get_get_accessor (prop);
12299 _tmp370_ = _tmp369_;
12300 _tmp371_ = vala_symbol_get_access ((ValaSymbol*) _tmp370_);
12301 _tmp372_ = _tmp371_;
12302 _tmp366_ = _tmp372_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
12303 } else {
12304 _tmp366_ = FALSE;
12305 }
12306 if (_tmp366_) {
12307 const gchar* _tmp373_;
12308 gchar* _tmp374_;
12309 _tmp373_ = pflags;
12310 _tmp374_ = g_strdup_printf ("%s%s", _tmp373_, " | G_PARAM_READABLE");
12311 _g_free0 (pflags);
12312 pflags = _tmp374_;
12313 }
12314 _tmp376_ = vala_property_get_set_accessor (prop);
12315 _tmp377_ = _tmp376_;
12316 if (_tmp377_ != NULL) {
12317 ValaPropertyAccessor* _tmp378_;
12318 ValaPropertyAccessor* _tmp379_;
12319 ValaSymbolAccessibility _tmp380_;
12320 ValaSymbolAccessibility _tmp381_;
12321 _tmp378_ = vala_property_get_set_accessor (prop);
12322 _tmp379_ = _tmp378_;
12323 _tmp380_ = vala_symbol_get_access ((ValaSymbol*) _tmp379_);
12324 _tmp381_ = _tmp380_;
12325 _tmp375_ = _tmp381_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
12326 } else {
12327 _tmp375_ = FALSE;
12328 }
12329 if (_tmp375_) {
12330 const gchar* _tmp382_;
12331 gchar* _tmp383_;
12332 ValaPropertyAccessor* _tmp384_;
12333 ValaPropertyAccessor* _tmp385_;
12334 gboolean _tmp386_;
12335 gboolean _tmp387_;
12336 _tmp382_ = pflags;
12337 _tmp383_ = g_strdup_printf ("%s%s", _tmp382_, " | G_PARAM_WRITABLE");
12338 _g_free0 (pflags);
12339 pflags = _tmp383_;
12340 _tmp384_ = vala_property_get_set_accessor (prop);
12341 _tmp385_ = _tmp384_;
12342 _tmp386_ = vala_property_accessor_get_construction (_tmp385_);
12343 _tmp387_ = _tmp386_;
12344 if (_tmp387_) {
12345 ValaPropertyAccessor* _tmp388_;
12346 ValaPropertyAccessor* _tmp389_;
12347 gboolean _tmp390_;
12348 gboolean _tmp391_;
12349 _tmp388_ = vala_property_get_set_accessor (prop);
12350 _tmp389_ = _tmp388_;
12351 _tmp390_ = vala_property_accessor_get_writable (_tmp389_);
12352 _tmp391_ = _tmp390_;
12353 if (_tmp391_) {
12354 const gchar* _tmp392_;
12355 gchar* _tmp393_;
12356 _tmp392_ = pflags;
12357 _tmp393_ = g_strdup_printf ("%s%s", _tmp392_, " | G_PARAM_CONSTRUCT");
12358 _g_free0 (pflags);
12359 pflags = _tmp393_;
12360 } else {
12361 const gchar* _tmp394_;
12362 gchar* _tmp395_;
12363 _tmp394_ = pflags;
12364 _tmp395_ = g_strdup_printf ("%s%s", _tmp394_, " | G_PARAM_CONSTRUCT_ONLY");
12365 _g_free0 (pflags);
12366 pflags = _tmp395_;
12367 }
12368 }
12369 }
12370 _tmp396_ = vala_property_get_notify (prop);
12371 _tmp397_ = _tmp396_;
12372 if (!_tmp397_) {
12373 const gchar* _tmp398_;
12374 gchar* _tmp399_;
12375 _tmp398_ = pflags;
12376 _tmp399_ = g_strdup_printf ("%s%s", _tmp398_, " | G_PARAM_EXPLICIT_NOTIFY");
12377 _g_free0 (pflags);
12378 pflags = _tmp399_;
12379 }
12380 _tmp400_ = vala_symbol_get_version ((ValaSymbol*) prop);
12381 _tmp401_ = _tmp400_;
12382 _tmp402_ = vala_version_attribute_get_deprecated (_tmp401_);
12383 _tmp403_ = _tmp402_;
12384 if (_tmp403_) {
12385 const gchar* _tmp404_;
12386 gchar* _tmp405_;
12387 _tmp404_ = pflags;
12388 _tmp405_ = g_strdup_printf ("%s%s", _tmp404_, " | G_PARAM_DEPRECATED");
12389 _g_free0 (pflags);
12390 pflags = _tmp405_;
12391 }
12392 _tmp406_ = cspec;
12393 _tmp407_ = pflags;
12394 _tmp408_ = vala_ccode_constant_new (_tmp407_);
12395 _tmp409_ = _tmp408_;
12396 vala_ccode_function_call_add_argument (_tmp406_, (ValaCCodeExpression*) _tmp409_);
12397 _vala_ccode_node_unref0 (_tmp409_);
12398 _tmp410_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
12399 _tmp411_ = _tmp410_;
12400 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp411_, VALA_TYPE_INTERFACE)) {
12401 result = (ValaCCodeExpression*) cspec;
12402 _g_free0 (pflags);
12403 return result;
12404 } else {
12405 ValaCCodeExpression* _tmp412_;
12406 ValaCCodeExpression* _tmp413_;
12407 ValaCCodeFunctionCall* _tmp414_;
12408 ValaCCodeAssignment* _tmp415_;
12409 ValaCCodeExpression* _tmp416_;
12410 _tmp412_ = vala_ccode_base_module_get_param_spec_cexpression ((ValaCCodeBaseModule*) self, prop);
12411 _tmp413_ = _tmp412_;
12412 _tmp414_ = cspec;
12413 _tmp415_ = vala_ccode_assignment_new (_tmp413_, (ValaCCodeExpression*) _tmp414_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
12414 _tmp416_ = (ValaCCodeExpression*) _tmp415_;
12415 _vala_ccode_node_unref0 (_tmp413_);
12416 result = _tmp416_;
12417 _g_free0 (pflags);
12418 _vala_ccode_node_unref0 (cspec);
12419 return result;
12420 }
12421 _g_free0 (pflags);
12422 _vala_ccode_node_unref0 (cspec);
12423 }
12424
12425 static void
vala_gtype_module_real_generate_interface_declaration(ValaCCodeBaseModule * base,ValaInterface * iface,ValaCCodeFile * decl_space)12426 vala_gtype_module_real_generate_interface_declaration (ValaCCodeBaseModule* base,
12427 ValaInterface* iface,
12428 ValaCCodeFile* decl_space)
12429 {
12430 ValaGTypeModule * self;
12431 gchar* _tmp0_;
12432 gchar* _tmp1_;
12433 gboolean _tmp2_;
12434 ValaCCodeStruct* instance_struct = NULL;
12435 gchar* _tmp3_;
12436 gchar* _tmp4_;
12437 gchar* _tmp5_;
12438 gchar* _tmp6_;
12439 ValaCCodeStruct* _tmp7_;
12440 ValaCCodeStruct* _tmp8_;
12441 ValaCCodeStruct* type_struct = NULL;
12442 gchar* _tmp9_;
12443 gchar* _tmp10_;
12444 gchar* _tmp11_;
12445 gchar* _tmp12_;
12446 ValaCCodeStruct* _tmp13_;
12447 ValaCCodeStruct* _tmp14_;
12448 ValaCCodeNewline* _tmp15_;
12449 ValaCCodeNewline* _tmp16_;
12450 gchar* macro = NULL;
12451 gchar* _tmp17_;
12452 gchar* _tmp18_;
12453 gchar* _tmp19_;
12454 gchar* _tmp20_;
12455 gchar* _tmp21_;
12456 gchar* _tmp22_;
12457 const gchar* _tmp23_;
12458 ValaCCodeMacroReplacement* _tmp24_;
12459 ValaCCodeMacroReplacement* _tmp25_;
12460 gchar* _tmp26_;
12461 gchar* _tmp27_;
12462 gchar* _tmp28_;
12463 gchar* _tmp29_;
12464 gchar* _tmp30_;
12465 gchar* _tmp31_;
12466 gchar* _tmp32_;
12467 gchar* _tmp33_;
12468 gchar* _tmp34_;
12469 const gchar* _tmp35_;
12470 ValaCCodeMacroReplacement* _tmp36_;
12471 ValaCCodeMacroReplacement* _tmp37_;
12472 gchar* _tmp38_;
12473 gchar* _tmp39_;
12474 gchar* _tmp40_;
12475 gchar* _tmp41_;
12476 gchar* _tmp42_;
12477 gchar* _tmp43_;
12478 gchar* _tmp44_;
12479 const gchar* _tmp45_;
12480 ValaCCodeMacroReplacement* _tmp46_;
12481 ValaCCodeMacroReplacement* _tmp47_;
12482 gchar* _tmp48_;
12483 gchar* _tmp49_;
12484 gchar* _tmp50_;
12485 gchar* _tmp51_;
12486 gchar* _tmp52_;
12487 gchar* _tmp53_;
12488 gchar* _tmp54_;
12489 gchar* _tmp55_;
12490 gchar* _tmp56_;
12491 const gchar* _tmp57_;
12492 ValaCCodeMacroReplacement* _tmp58_;
12493 ValaCCodeMacroReplacement* _tmp59_;
12494 ValaCCodeNewline* _tmp60_;
12495 ValaCCodeNewline* _tmp61_;
12496 gchar* _tmp62_;
12497 gchar* _tmp63_;
12498 gchar* _tmp64_;
12499 gchar* _tmp65_;
12500 gchar* _tmp66_;
12501 gchar* _tmp67_;
12502 ValaCCodeVariableDeclarator* _tmp68_;
12503 ValaCCodeVariableDeclarator* _tmp69_;
12504 ValaCCodeTypeDefinition* _tmp70_;
12505 ValaCCodeTypeDefinition* _tmp71_;
12506 ValaCCodeStruct* _tmp72_;
12507 const gchar* _tmp73_;
12508 const gchar* _tmp74_;
12509 gchar* _tmp75_;
12510 gchar* _tmp76_;
12511 gchar* _tmp77_;
12512 gchar* _tmp78_;
12513 ValaCCodeVariableDeclarator* _tmp79_;
12514 ValaCCodeVariableDeclarator* _tmp80_;
12515 ValaCCodeTypeDefinition* _tmp81_;
12516 ValaCCodeTypeDefinition* _tmp82_;
12517 ValaCCodeStruct* _tmp102_;
12518 ValaAttribute* _tmp103_;
12519 gboolean has_struct_member = FALSE;
12520 ValaCCodeStruct* _tmp207_;
12521 ValaInterfaceRegisterFunction* type_fun = NULL;
12522 ValaInterfaceRegisterFunction* _tmp208_;
12523 ValaInterfaceRegisterFunction* _tmp209_;
12524 ValaCodeContext* _tmp210_;
12525 ValaCodeContext* _tmp211_;
12526 ValaInterfaceRegisterFunction* _tmp212_;
12527 ValaCCodeFragment* _tmp213_;
12528 ValaCCodeFragment* _tmp214_;
12529 self = (ValaGTypeModule*) base;
12530 g_return_if_fail (iface != NULL);
12531 g_return_if_fail (decl_space != NULL);
12532 _tmp0_ = vala_get_ccode_name ((ValaCodeNode*) iface);
12533 _tmp1_ = _tmp0_;
12534 _tmp2_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) iface, _tmp1_);
12535 _g_free0 (_tmp1_);
12536 if (_tmp2_) {
12537 return;
12538 }
12539 vala_ccode_file_add_include (decl_space, "glib-object.h", FALSE);
12540 _tmp3_ = vala_get_ccode_name ((ValaCodeNode*) iface);
12541 _tmp4_ = _tmp3_;
12542 _tmp5_ = g_strdup_printf ("_%s", _tmp4_);
12543 _tmp6_ = _tmp5_;
12544 _tmp7_ = vala_ccode_struct_new (_tmp6_);
12545 _tmp8_ = _tmp7_;
12546 _g_free0 (_tmp6_);
12547 _g_free0 (_tmp4_);
12548 instance_struct = _tmp8_;
12549 _tmp9_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
12550 _tmp10_ = _tmp9_;
12551 _tmp11_ = g_strdup_printf ("_%s", _tmp10_);
12552 _tmp12_ = _tmp11_;
12553 _tmp13_ = vala_ccode_struct_new (_tmp12_);
12554 _tmp14_ = _tmp13_;
12555 _g_free0 (_tmp12_);
12556 _g_free0 (_tmp10_);
12557 type_struct = _tmp14_;
12558 _tmp15_ = vala_ccode_newline_new ();
12559 _tmp16_ = _tmp15_;
12560 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp16_);
12561 _vala_ccode_node_unref0 (_tmp16_);
12562 _tmp17_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
12563 _tmp18_ = _tmp17_;
12564 _tmp19_ = g_strdup_printf ("(%s_get_type ())", _tmp18_);
12565 _tmp20_ = _tmp19_;
12566 _g_free0 (_tmp18_);
12567 macro = _tmp20_;
12568 _tmp21_ = vala_get_ccode_type_id ((ValaCodeNode*) iface);
12569 _tmp22_ = _tmp21_;
12570 _tmp23_ = macro;
12571 _tmp24_ = vala_ccode_macro_replacement_new (_tmp22_, _tmp23_);
12572 _tmp25_ = _tmp24_;
12573 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp25_);
12574 _vala_ccode_node_unref0 (_tmp25_);
12575 _g_free0 (_tmp22_);
12576 _tmp26_ = vala_get_ccode_type_id ((ValaCodeNode*) iface);
12577 _tmp27_ = _tmp26_;
12578 _tmp28_ = vala_get_ccode_name ((ValaCodeNode*) iface);
12579 _tmp29_ = _tmp28_;
12580 _tmp30_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_CAST ((obj), %s, %s))", _tmp27_, _tmp29_);
12581 _g_free0 (macro);
12582 macro = _tmp30_;
12583 _g_free0 (_tmp29_);
12584 _g_free0 (_tmp27_);
12585 _tmp31_ = vala_get_ccode_type_cast_function ((ValaObjectTypeSymbol*) iface);
12586 _tmp32_ = _tmp31_;
12587 _tmp33_ = g_strdup_printf ("%s(obj)", _tmp32_);
12588 _tmp34_ = _tmp33_;
12589 _tmp35_ = macro;
12590 _tmp36_ = vala_ccode_macro_replacement_new (_tmp34_, _tmp35_);
12591 _tmp37_ = _tmp36_;
12592 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp37_);
12593 _vala_ccode_node_unref0 (_tmp37_);
12594 _g_free0 (_tmp34_);
12595 _g_free0 (_tmp32_);
12596 _tmp38_ = vala_get_ccode_type_id ((ValaCodeNode*) iface);
12597 _tmp39_ = _tmp38_;
12598 _tmp40_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))", _tmp39_);
12599 _g_free0 (macro);
12600 macro = _tmp40_;
12601 _g_free0 (_tmp39_);
12602 _tmp41_ = vala_get_ccode_type_check_function ((ValaTypeSymbol*) iface);
12603 _tmp42_ = _tmp41_;
12604 _tmp43_ = g_strdup_printf ("%s(obj)", _tmp42_);
12605 _tmp44_ = _tmp43_;
12606 _tmp45_ = macro;
12607 _tmp46_ = vala_ccode_macro_replacement_new (_tmp44_, _tmp45_);
12608 _tmp47_ = _tmp46_;
12609 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp47_);
12610 _vala_ccode_node_unref0 (_tmp47_);
12611 _g_free0 (_tmp44_);
12612 _g_free0 (_tmp42_);
12613 _tmp48_ = vala_get_ccode_type_id ((ValaCodeNode*) iface);
12614 _tmp49_ = _tmp48_;
12615 _tmp50_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
12616 _tmp51_ = _tmp50_;
12617 _tmp52_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_INTERFACE ((obj), %s, %s))", _tmp49_, _tmp51_);
12618 _g_free0 (macro);
12619 macro = _tmp52_;
12620 _g_free0 (_tmp51_);
12621 _g_free0 (_tmp49_);
12622 _tmp53_ = vala_get_ccode_type_get_function ((ValaObjectTypeSymbol*) iface);
12623 _tmp54_ = _tmp53_;
12624 _tmp55_ = g_strdup_printf ("%s(obj)", _tmp54_);
12625 _tmp56_ = _tmp55_;
12626 _tmp57_ = macro;
12627 _tmp58_ = vala_ccode_macro_replacement_new (_tmp56_, _tmp57_);
12628 _tmp59_ = _tmp58_;
12629 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp59_);
12630 _vala_ccode_node_unref0 (_tmp59_);
12631 _g_free0 (_tmp56_);
12632 _g_free0 (_tmp54_);
12633 _tmp60_ = vala_ccode_newline_new ();
12634 _tmp61_ = _tmp60_;
12635 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp61_);
12636 _vala_ccode_node_unref0 (_tmp61_);
12637 _tmp62_ = vala_get_ccode_name ((ValaCodeNode*) iface);
12638 _tmp63_ = _tmp62_;
12639 _tmp64_ = g_strdup_printf ("struct _%s", _tmp63_);
12640 _tmp65_ = _tmp64_;
12641 _tmp66_ = vala_get_ccode_name ((ValaCodeNode*) iface);
12642 _tmp67_ = _tmp66_;
12643 _tmp68_ = vala_ccode_variable_declarator_new (_tmp67_, NULL, NULL);
12644 _tmp69_ = _tmp68_;
12645 _tmp70_ = vala_ccode_type_definition_new (_tmp65_, (ValaCCodeDeclarator*) _tmp69_);
12646 _tmp71_ = _tmp70_;
12647 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp71_);
12648 _vala_ccode_node_unref0 (_tmp71_);
12649 _vala_ccode_node_unref0 (_tmp69_);
12650 _g_free0 (_tmp67_);
12651 _g_free0 (_tmp65_);
12652 _g_free0 (_tmp63_);
12653 _tmp72_ = type_struct;
12654 _tmp73_ = vala_ccode_struct_get_name (_tmp72_);
12655 _tmp74_ = _tmp73_;
12656 _tmp75_ = g_strdup_printf ("struct %s", _tmp74_);
12657 _tmp76_ = _tmp75_;
12658 _tmp77_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
12659 _tmp78_ = _tmp77_;
12660 _tmp79_ = vala_ccode_variable_declarator_new (_tmp78_, NULL, NULL);
12661 _tmp80_ = _tmp79_;
12662 _tmp81_ = vala_ccode_type_definition_new (_tmp76_, (ValaCCodeDeclarator*) _tmp80_);
12663 _tmp82_ = _tmp81_;
12664 vala_ccode_file_add_type_declaration (decl_space, (ValaCCodeNode*) _tmp82_);
12665 _vala_ccode_node_unref0 (_tmp82_);
12666 _vala_ccode_node_unref0 (_tmp80_);
12667 _g_free0 (_tmp78_);
12668 _g_free0 (_tmp76_);
12669 {
12670 ValaList* _prerequisite_list = NULL;
12671 ValaList* _tmp83_;
12672 ValaList* _tmp84_;
12673 gint _prerequisite_size = 0;
12674 ValaList* _tmp85_;
12675 gint _tmp86_;
12676 gint _tmp87_;
12677 gint _prerequisite_index = 0;
12678 _tmp83_ = vala_interface_get_prerequisites (iface);
12679 _tmp84_ = _vala_iterable_ref0 (_tmp83_);
12680 _prerequisite_list = _tmp84_;
12681 _tmp85_ = _prerequisite_list;
12682 _tmp86_ = vala_collection_get_size ((ValaCollection*) _tmp85_);
12683 _tmp87_ = _tmp86_;
12684 _prerequisite_size = _tmp87_;
12685 _prerequisite_index = -1;
12686 while (TRUE) {
12687 gint _tmp88_;
12688 gint _tmp89_;
12689 ValaDataType* prerequisite = NULL;
12690 ValaList* _tmp90_;
12691 gpointer _tmp91_;
12692 ValaClass* prereq_cl = NULL;
12693 ValaDataType* _tmp92_;
12694 ValaTypeSymbol* _tmp93_;
12695 ValaTypeSymbol* _tmp94_;
12696 ValaInterface* prereq_iface = NULL;
12697 ValaDataType* _tmp95_;
12698 ValaTypeSymbol* _tmp96_;
12699 ValaTypeSymbol* _tmp97_;
12700 ValaClass* _tmp98_;
12701 _prerequisite_index = _prerequisite_index + 1;
12702 _tmp88_ = _prerequisite_index;
12703 _tmp89_ = _prerequisite_size;
12704 if (!(_tmp88_ < _tmp89_)) {
12705 break;
12706 }
12707 _tmp90_ = _prerequisite_list;
12708 _tmp91_ = vala_list_get (_tmp90_, _prerequisite_index);
12709 prerequisite = (ValaDataType*) _tmp91_;
12710 _tmp92_ = prerequisite;
12711 _tmp93_ = vala_data_type_get_type_symbol (_tmp92_);
12712 _tmp94_ = _tmp93_;
12713 prereq_cl = G_TYPE_CHECK_INSTANCE_TYPE (_tmp94_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp94_) : NULL;
12714 _tmp95_ = prerequisite;
12715 _tmp96_ = vala_data_type_get_type_symbol (_tmp95_);
12716 _tmp97_ = _tmp96_;
12717 prereq_iface = G_TYPE_CHECK_INSTANCE_TYPE (_tmp97_, VALA_TYPE_INTERFACE) ? ((ValaInterface*) _tmp97_) : NULL;
12718 _tmp98_ = prereq_cl;
12719 if (_tmp98_ != NULL) {
12720 ValaClass* _tmp99_;
12721 _tmp99_ = prereq_cl;
12722 vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, _tmp99_, decl_space);
12723 } else {
12724 ValaInterface* _tmp100_;
12725 _tmp100_ = prereq_iface;
12726 if (_tmp100_ != NULL) {
12727 ValaInterface* _tmp101_;
12728 _tmp101_ = prereq_iface;
12729 vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp101_, decl_space);
12730 }
12731 }
12732 _vala_code_node_unref0 (prerequisite);
12733 }
12734 _vala_iterable_unref0 (_prerequisite_list);
12735 }
12736 _tmp102_ = type_struct;
12737 vala_ccode_struct_add_field (_tmp102_, "GTypeInterface", "parent_iface", 0, NULL);
12738 _tmp103_ = vala_code_node_get_attribute ((ValaCodeNode*) iface, "GenericAccessors");
12739 if (_tmp103_ != NULL) {
12740 {
12741 ValaList* _p_list = NULL;
12742 ValaList* _tmp104_;
12743 ValaList* _tmp105_;
12744 gint _p_size = 0;
12745 ValaList* _tmp106_;
12746 gint _tmp107_;
12747 gint _tmp108_;
12748 gint _p_index = 0;
12749 _tmp104_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) iface);
12750 _tmp105_ = _vala_iterable_ref0 (_tmp104_);
12751 _p_list = _tmp105_;
12752 _tmp106_ = _p_list;
12753 _tmp107_ = vala_collection_get_size ((ValaCollection*) _tmp106_);
12754 _tmp108_ = _tmp107_;
12755 _p_size = _tmp108_;
12756 _p_index = -1;
12757 while (TRUE) {
12758 gint _tmp109_;
12759 gint _tmp110_;
12760 ValaTypeParameter* p = NULL;
12761 ValaList* _tmp111_;
12762 gpointer _tmp112_;
12763 gchar* method_name = NULL;
12764 ValaTypeParameter* _tmp113_;
12765 const gchar* _tmp114_;
12766 const gchar* _tmp115_;
12767 gchar* _tmp116_;
12768 gchar* _tmp117_;
12769 gchar* _tmp118_;
12770 gchar* _tmp119_;
12771 ValaCCodeFunctionDeclarator* vdeclarator = NULL;
12772 const gchar* _tmp120_;
12773 ValaCCodeFunctionDeclarator* _tmp121_;
12774 ValaDataType* this_type = NULL;
12775 ValaDataType* _tmp122_;
12776 ValaCCodeFunctionDeclarator* _tmp123_;
12777 ValaDataType* _tmp124_;
12778 gchar* _tmp125_;
12779 gchar* _tmp126_;
12780 ValaCCodeParameter* _tmp127_;
12781 ValaCCodeParameter* _tmp128_;
12782 ValaCCodeDeclaration* vdecl = NULL;
12783 ValaCCodeDeclaration* _tmp129_;
12784 ValaCCodeDeclaration* _tmp130_;
12785 ValaCCodeFunctionDeclarator* _tmp131_;
12786 ValaCCodeStruct* _tmp132_;
12787 ValaCCodeDeclaration* _tmp133_;
12788 ValaTypeParameter* _tmp134_;
12789 const gchar* _tmp135_;
12790 const gchar* _tmp136_;
12791 gchar* _tmp137_;
12792 gchar* _tmp138_;
12793 gchar* _tmp139_;
12794 const gchar* _tmp140_;
12795 ValaCCodeFunctionDeclarator* _tmp141_;
12796 ValaDataType* _tmp142_;
12797 ValaCCodeFunctionDeclarator* _tmp143_;
12798 ValaDataType* _tmp144_;
12799 gchar* _tmp145_;
12800 gchar* _tmp146_;
12801 ValaCCodeParameter* _tmp147_;
12802 ValaCCodeParameter* _tmp148_;
12803 ValaCCodeDeclaration* _tmp149_;
12804 ValaCCodeDeclaration* _tmp150_;
12805 ValaCCodeFunctionDeclarator* _tmp151_;
12806 ValaCCodeStruct* _tmp152_;
12807 ValaCCodeDeclaration* _tmp153_;
12808 ValaTypeParameter* _tmp154_;
12809 const gchar* _tmp155_;
12810 const gchar* _tmp156_;
12811 gchar* _tmp157_;
12812 gchar* _tmp158_;
12813 gchar* _tmp159_;
12814 const gchar* _tmp160_;
12815 ValaCCodeFunctionDeclarator* _tmp161_;
12816 ValaDataType* _tmp162_;
12817 ValaCCodeFunctionDeclarator* _tmp163_;
12818 ValaDataType* _tmp164_;
12819 gchar* _tmp165_;
12820 gchar* _tmp166_;
12821 ValaCCodeParameter* _tmp167_;
12822 ValaCCodeParameter* _tmp168_;
12823 ValaCCodeDeclaration* _tmp169_;
12824 ValaCCodeDeclaration* _tmp170_;
12825 ValaCCodeFunctionDeclarator* _tmp171_;
12826 ValaCCodeStruct* _tmp172_;
12827 ValaCCodeDeclaration* _tmp173_;
12828 _p_index = _p_index + 1;
12829 _tmp109_ = _p_index;
12830 _tmp110_ = _p_size;
12831 if (!(_tmp109_ < _tmp110_)) {
12832 break;
12833 }
12834 _tmp111_ = _p_list;
12835 _tmp112_ = vala_list_get (_tmp111_, _p_index);
12836 p = (ValaTypeParameter*) _tmp112_;
12837 _tmp113_ = p;
12838 _tmp114_ = vala_symbol_get_name ((ValaSymbol*) _tmp113_);
12839 _tmp115_ = _tmp114_;
12840 _tmp116_ = g_ascii_strdown (_tmp115_, (gssize) -1);
12841 _tmp117_ = _tmp116_;
12842 _tmp118_ = g_strdup_printf ("get_%s_type", _tmp117_);
12843 _tmp119_ = _tmp118_;
12844 _g_free0 (_tmp117_);
12845 method_name = _tmp119_;
12846 _tmp120_ = method_name;
12847 _tmp121_ = vala_ccode_function_declarator_new (_tmp120_);
12848 vdeclarator = _tmp121_;
12849 _tmp122_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaSymbol*) iface);
12850 this_type = _tmp122_;
12851 _tmp123_ = vdeclarator;
12852 _tmp124_ = this_type;
12853 _tmp125_ = vala_get_ccode_name ((ValaCodeNode*) _tmp124_);
12854 _tmp126_ = _tmp125_;
12855 _tmp127_ = vala_ccode_parameter_new ("self", _tmp126_);
12856 _tmp128_ = _tmp127_;
12857 vala_ccode_function_declarator_add_parameter (_tmp123_, _tmp128_);
12858 _vala_ccode_node_unref0 (_tmp128_);
12859 _g_free0 (_tmp126_);
12860 _tmp129_ = vala_ccode_declaration_new ("GType");
12861 vdecl = _tmp129_;
12862 _tmp130_ = vdecl;
12863 _tmp131_ = vdeclarator;
12864 vala_ccode_declaration_add_declarator (_tmp130_, (ValaCCodeDeclarator*) _tmp131_);
12865 _tmp132_ = type_struct;
12866 _tmp133_ = vdecl;
12867 vala_ccode_struct_add_declaration (_tmp132_, _tmp133_);
12868 _tmp134_ = p;
12869 _tmp135_ = vala_symbol_get_name ((ValaSymbol*) _tmp134_);
12870 _tmp136_ = _tmp135_;
12871 _tmp137_ = g_ascii_strdown (_tmp136_, (gssize) -1);
12872 _tmp138_ = _tmp137_;
12873 _tmp139_ = g_strdup_printf ("get_%s_dup_func", _tmp138_);
12874 _g_free0 (method_name);
12875 method_name = _tmp139_;
12876 _g_free0 (_tmp138_);
12877 _tmp140_ = method_name;
12878 _tmp141_ = vala_ccode_function_declarator_new (_tmp140_);
12879 _vala_ccode_node_unref0 (vdeclarator);
12880 vdeclarator = _tmp141_;
12881 _tmp142_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaSymbol*) iface);
12882 _vala_code_node_unref0 (this_type);
12883 this_type = _tmp142_;
12884 _tmp143_ = vdeclarator;
12885 _tmp144_ = this_type;
12886 _tmp145_ = vala_get_ccode_name ((ValaCodeNode*) _tmp144_);
12887 _tmp146_ = _tmp145_;
12888 _tmp147_ = vala_ccode_parameter_new ("self", _tmp146_);
12889 _tmp148_ = _tmp147_;
12890 vala_ccode_function_declarator_add_parameter (_tmp143_, _tmp148_);
12891 _vala_ccode_node_unref0 (_tmp148_);
12892 _g_free0 (_tmp146_);
12893 _tmp149_ = vala_ccode_declaration_new ("GBoxedCopyFunc");
12894 _vala_ccode_node_unref0 (vdecl);
12895 vdecl = _tmp149_;
12896 _tmp150_ = vdecl;
12897 _tmp151_ = vdeclarator;
12898 vala_ccode_declaration_add_declarator (_tmp150_, (ValaCCodeDeclarator*) _tmp151_);
12899 _tmp152_ = type_struct;
12900 _tmp153_ = vdecl;
12901 vala_ccode_struct_add_declaration (_tmp152_, _tmp153_);
12902 _tmp154_ = p;
12903 _tmp155_ = vala_symbol_get_name ((ValaSymbol*) _tmp154_);
12904 _tmp156_ = _tmp155_;
12905 _tmp157_ = g_ascii_strdown (_tmp156_, (gssize) -1);
12906 _tmp158_ = _tmp157_;
12907 _tmp159_ = g_strdup_printf ("get_%s_destroy_func", _tmp158_);
12908 _g_free0 (method_name);
12909 method_name = _tmp159_;
12910 _g_free0 (_tmp158_);
12911 _tmp160_ = method_name;
12912 _tmp161_ = vala_ccode_function_declarator_new (_tmp160_);
12913 _vala_ccode_node_unref0 (vdeclarator);
12914 vdeclarator = _tmp161_;
12915 _tmp162_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaSymbol*) iface);
12916 _vala_code_node_unref0 (this_type);
12917 this_type = _tmp162_;
12918 _tmp163_ = vdeclarator;
12919 _tmp164_ = this_type;
12920 _tmp165_ = vala_get_ccode_name ((ValaCodeNode*) _tmp164_);
12921 _tmp166_ = _tmp165_;
12922 _tmp167_ = vala_ccode_parameter_new ("self", _tmp166_);
12923 _tmp168_ = _tmp167_;
12924 vala_ccode_function_declarator_add_parameter (_tmp163_, _tmp168_);
12925 _vala_ccode_node_unref0 (_tmp168_);
12926 _g_free0 (_tmp166_);
12927 _tmp169_ = vala_ccode_declaration_new ("GDestroyNotify");
12928 _vala_ccode_node_unref0 (vdecl);
12929 vdecl = _tmp169_;
12930 _tmp170_ = vdecl;
12931 _tmp171_ = vdeclarator;
12932 vala_ccode_declaration_add_declarator (_tmp170_, (ValaCCodeDeclarator*) _tmp171_);
12933 _tmp172_ = type_struct;
12934 _tmp173_ = vdecl;
12935 vala_ccode_struct_add_declaration (_tmp172_, _tmp173_);
12936 _vala_ccode_node_unref0 (vdecl);
12937 _vala_code_node_unref0 (this_type);
12938 _vala_ccode_node_unref0 (vdeclarator);
12939 _g_free0 (method_name);
12940 _vala_code_node_unref0 (p);
12941 }
12942 _vala_iterable_unref0 (_p_list);
12943 }
12944 }
12945 has_struct_member = FALSE;
12946 {
12947 ValaList* _sym_list = NULL;
12948 ValaList* _tmp174_;
12949 gint _sym_size = 0;
12950 ValaList* _tmp175_;
12951 gint _tmp176_;
12952 gint _tmp177_;
12953 gint _sym_index = 0;
12954 _tmp174_ = vala_interface_get_virtuals (iface);
12955 _sym_list = _tmp174_;
12956 _tmp175_ = _sym_list;
12957 _tmp176_ = vala_collection_get_size ((ValaCollection*) _tmp175_);
12958 _tmp177_ = _tmp176_;
12959 _sym_size = _tmp177_;
12960 _sym_index = -1;
12961 while (TRUE) {
12962 gint _tmp178_;
12963 gint _tmp179_;
12964 ValaSymbol* sym = NULL;
12965 ValaList* _tmp180_;
12966 gpointer _tmp181_;
12967 ValaMethod* m = NULL;
12968 ValaSignal* sig = NULL;
12969 ValaProperty* prop = NULL;
12970 ValaSymbol* _tmp182_;
12971 ValaMethod* _tmp183_;
12972 ValaMethod* _tmp184_;
12973 _sym_index = _sym_index + 1;
12974 _tmp178_ = _sym_index;
12975 _tmp179_ = _sym_size;
12976 if (!(_tmp178_ < _tmp179_)) {
12977 break;
12978 }
12979 _tmp180_ = _sym_list;
12980 _tmp181_ = vala_list_get (_tmp180_, _sym_index);
12981 sym = (ValaSymbol*) _tmp181_;
12982 _tmp182_ = sym;
12983 _tmp183_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp182_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp182_) : NULL);
12984 _vala_code_node_unref0 (m);
12985 m = _tmp183_;
12986 _tmp184_ = m;
12987 if (_tmp184_ != NULL) {
12988 ValaMethod* _tmp185_;
12989 ValaCCodeStruct* _tmp186_;
12990 ValaCCodeStruct* _tmp187_;
12991 _tmp185_ = m;
12992 _tmp186_ = instance_struct;
12993 _tmp187_ = type_struct;
12994 vala_gtype_module_generate_struct_method_declaration (self, (ValaObjectTypeSymbol*) iface, _tmp185_, _tmp186_, _tmp187_, decl_space, &has_struct_member);
12995 } else {
12996 ValaSymbol* _tmp188_;
12997 ValaSignal* _tmp189_;
12998 ValaSignal* _tmp190_;
12999 _tmp188_ = sym;
13000 _tmp189_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp188_, VALA_TYPE_SIGNAL) ? ((ValaSignal*) _tmp188_) : NULL);
13001 _vala_code_node_unref0 (sig);
13002 sig = _tmp189_;
13003 _tmp190_ = sig;
13004 if (_tmp190_ != NULL) {
13005 ValaSignal* _tmp191_;
13006 ValaMethod* _tmp192_;
13007 ValaMethod* _tmp193_;
13008 _tmp191_ = sig;
13009 _tmp192_ = vala_signal_get_default_handler (_tmp191_);
13010 _tmp193_ = _tmp192_;
13011 if (_tmp193_ != NULL) {
13012 ValaSignal* _tmp194_;
13013 ValaMethod* _tmp195_;
13014 ValaMethod* _tmp196_;
13015 ValaCCodeStruct* _tmp197_;
13016 _tmp194_ = sig;
13017 _tmp195_ = vala_signal_get_default_handler (_tmp194_);
13018 _tmp196_ = _tmp195_;
13019 _tmp197_ = type_struct;
13020 vala_gtype_module_generate_virtual_method_declaration (self, _tmp196_, decl_space, _tmp197_);
13021 }
13022 } else {
13023 ValaSymbol* _tmp198_;
13024 ValaProperty* _tmp199_;
13025 ValaProperty* _tmp200_;
13026 _tmp198_ = sym;
13027 _tmp199_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp198_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp198_) : NULL);
13028 _vala_code_node_unref0 (prop);
13029 prop = _tmp199_;
13030 _tmp200_ = prop;
13031 if (_tmp200_ != NULL) {
13032 ValaProperty* _tmp201_;
13033 ValaCCodeStruct* _tmp202_;
13034 ValaCCodeStruct* _tmp203_;
13035 _tmp201_ = prop;
13036 _tmp202_ = instance_struct;
13037 _tmp203_ = type_struct;
13038 vala_gtype_module_generate_struct_property_declaration (self, (ValaObjectTypeSymbol*) iface, _tmp201_, _tmp202_, _tmp203_, decl_space, &has_struct_member);
13039 } else {
13040 ValaSymbol* _tmp204_;
13041 ValaSourceReference* _tmp205_;
13042 ValaSourceReference* _tmp206_;
13043 _tmp204_ = sym;
13044 _tmp205_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp204_);
13045 _tmp206_ = _tmp205_;
13046 vala_report_error (_tmp206_, "internal: Unsupported symbol");
13047 }
13048 }
13049 }
13050 _vala_code_node_unref0 (prop);
13051 _vala_code_node_unref0 (sig);
13052 _vala_code_node_unref0 (m);
13053 _vala_code_node_unref0 (sym);
13054 }
13055 _vala_iterable_unref0 (_sym_list);
13056 }
13057 _tmp207_ = type_struct;
13058 vala_ccode_file_add_type_definition (decl_space, (ValaCCodeNode*) _tmp207_);
13059 _tmp208_ = vala_interface_register_function_new (iface);
13060 type_fun = _tmp208_;
13061 _tmp209_ = type_fun;
13062 _tmp210_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
13063 _tmp211_ = _tmp210_;
13064 vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp209_, _tmp211_, ((ValaCCodeBaseModule*) self)->in_plugin, TRUE);
13065 _tmp212_ = type_fun;
13066 _tmp213_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) _tmp212_);
13067 _tmp214_ = _tmp213_;
13068 vala_ccode_file_add_type_member_declaration (decl_space, (ValaCCodeNode*) _tmp214_);
13069 _vala_ccode_node_unref0 (_tmp214_);
13070 _vala_typeregister_function_unref0 (type_fun);
13071 _g_free0 (macro);
13072 _vala_ccode_node_unref0 (type_struct);
13073 _vala_ccode_node_unref0 (instance_struct);
13074 }
13075
13076 static void
vala_gtype_module_real_visit_interface(ValaCodeVisitor * base,ValaInterface * iface)13077 vala_gtype_module_real_visit_interface (ValaCodeVisitor* base,
13078 ValaInterface* iface)
13079 {
13080 ValaGTypeModule * self;
13081 ValaCCodeBaseModuleEmitContext* _tmp0_;
13082 ValaCCodeBaseModuleEmitContext* _tmp1_;
13083 ValaSourceReference* _tmp2_;
13084 ValaSourceReference* _tmp3_;
13085 ValaCCodeEnum* old_signal_enum = NULL;
13086 ValaCCodeEnum* _tmp4_;
13087 ValaCCodeEnum* _tmp5_;
13088 gchar* _tmp6_;
13089 gchar* _tmp7_;
13090 gint _tmp8_;
13091 gint _tmp9_;
13092 gboolean _tmp10_;
13093 ValaCCodeEnum* _tmp17_;
13094 ValaCCodeFile* _tmp18_;
13095 ValaList* _tmp21_;
13096 gint _tmp22_;
13097 gint _tmp23_;
13098 ValaComment* _tmp55_;
13099 ValaComment* _tmp56_;
13100 ValaInterfaceRegisterFunction* type_fun = NULL;
13101 ValaInterfaceRegisterFunction* _tmp64_;
13102 ValaInterfaceRegisterFunction* _tmp65_;
13103 ValaCodeContext* _tmp66_;
13104 ValaCodeContext* _tmp67_;
13105 ValaCCodeFile* _tmp68_;
13106 ValaInterfaceRegisterFunction* _tmp69_;
13107 ValaCCodeFragment* _tmp70_;
13108 ValaCCodeFragment* _tmp71_;
13109 ValaCCodeFile* _tmp72_;
13110 ValaInterfaceRegisterFunction* _tmp73_;
13111 ValaCCodeFragment* _tmp74_;
13112 ValaCCodeFragment* _tmp75_;
13113 ValaCCodeEnum* _tmp76_;
13114 ValaCCodeEnum* _tmp77_;
13115 self = (ValaGTypeModule*) base;
13116 g_return_if_fail (iface != NULL);
13117 _tmp0_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) iface);
13118 _tmp1_ = _tmp0_;
13119 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp1_);
13120 _vala_ccode_base_module_emit_context_unref0 (_tmp1_);
13121 _tmp2_ = vala_code_node_get_source_reference ((ValaCodeNode*) iface);
13122 _tmp3_ = _tmp2_;
13123 vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp3_);
13124 _tmp4_ = ((ValaCCodeBaseModule*) self)->signal_enum;
13125 _tmp5_ = _vala_ccode_node_ref0 (_tmp4_);
13126 old_signal_enum = _tmp5_;
13127 _tmp6_ = vala_get_ccode_name ((ValaCodeNode*) iface);
13128 _tmp7_ = _tmp6_;
13129 _tmp8_ = strlen (_tmp7_);
13130 _tmp9_ = _tmp8_;
13131 _tmp10_ = _tmp9_ < 3;
13132 _g_free0 (_tmp7_);
13133 if (_tmp10_) {
13134 ValaSourceReference* _tmp11_;
13135 ValaSourceReference* _tmp12_;
13136 gchar* _tmp13_;
13137 gchar* _tmp14_;
13138 gchar* _tmp15_;
13139 gchar* _tmp16_;
13140 vala_code_node_set_error ((ValaCodeNode*) iface, TRUE);
13141 _tmp11_ = vala_code_node_get_source_reference ((ValaCodeNode*) iface);
13142 _tmp12_ = _tmp11_;
13143 _tmp13_ = vala_get_ccode_name ((ValaCodeNode*) iface);
13144 _tmp14_ = _tmp13_;
13145 _tmp15_ = g_strdup_printf ("Interface name `%s' is too short", _tmp14_);
13146 _tmp16_ = _tmp15_;
13147 vala_report_error (_tmp12_, _tmp16_);
13148 _g_free0 (_tmp16_);
13149 _g_free0 (_tmp14_);
13150 _vala_ccode_node_unref0 (old_signal_enum);
13151 return;
13152 }
13153 _tmp17_ = vala_ccode_enum_new (NULL);
13154 _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
13155 ((ValaCCodeBaseModule*) self)->signal_enum = _tmp17_;
13156 _tmp18_ = ((ValaCCodeBaseModule*) self)->cfile;
13157 vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, iface, _tmp18_);
13158 if (!vala_symbol_is_internal_symbol ((ValaSymbol*) iface)) {
13159 ValaCCodeFile* _tmp19_;
13160 _tmp19_ = ((ValaCCodeBaseModule*) self)->header_file;
13161 vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, iface, _tmp19_);
13162 }
13163 if (!vala_symbol_is_private_symbol ((ValaSymbol*) iface)) {
13164 ValaCCodeFile* _tmp20_;
13165 _tmp20_ = ((ValaCCodeBaseModule*) self)->internal_header_file;
13166 vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, iface, _tmp20_);
13167 }
13168 vala_code_node_accept_children ((ValaCodeNode*) iface, (ValaCodeVisitor*) self);
13169 _tmp21_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) iface);
13170 _tmp22_ = vala_collection_get_size ((ValaCollection*) _tmp21_);
13171 _tmp23_ = _tmp22_;
13172 if (_tmp23_ > 0) {
13173 gchar* last_signal = NULL;
13174 gchar* _tmp24_;
13175 gchar* _tmp25_;
13176 gchar* _tmp26_;
13177 gchar* _tmp27_;
13178 ValaCCodeEnum* _tmp28_;
13179 const gchar* _tmp29_;
13180 ValaCCodeEnumValue* _tmp30_;
13181 ValaCCodeEnumValue* _tmp31_;
13182 ValaCCodeFile* _tmp32_;
13183 ValaCCodeEnum* _tmp33_;
13184 ValaCCodeDeclaration* signal_array_decl = NULL;
13185 ValaCCodeDeclaration* _tmp34_;
13186 ValaCCodeDeclaration* _tmp35_;
13187 ValaCCodeDeclaration* _tmp36_;
13188 ValaCCodeModifiers _tmp37_;
13189 ValaCCodeModifiers _tmp38_;
13190 ValaCCodeDeclaration* _tmp39_;
13191 gchar* _tmp40_;
13192 gchar* _tmp41_;
13193 gchar* _tmp42_;
13194 gchar* _tmp43_;
13195 ValaCCodeConstant* _tmp44_;
13196 ValaCCodeConstant* _tmp45_;
13197 const gchar* _tmp46_;
13198 ValaCCodeIdentifier* _tmp47_;
13199 ValaCCodeIdentifier* _tmp48_;
13200 ValaCCodeDeclaratorSuffix* _tmp49_;
13201 ValaCCodeDeclaratorSuffix* _tmp50_;
13202 ValaCCodeVariableDeclarator* _tmp51_;
13203 ValaCCodeVariableDeclarator* _tmp52_;
13204 ValaCCodeFile* _tmp53_;
13205 ValaCCodeDeclaration* _tmp54_;
13206 _tmp24_ = vala_get_ccode_upper_case_name ((ValaSymbol*) iface, NULL);
13207 _tmp25_ = _tmp24_;
13208 _tmp26_ = g_strdup_printf ("%s_NUM_SIGNALS", _tmp25_);
13209 _tmp27_ = _tmp26_;
13210 _g_free0 (_tmp25_);
13211 last_signal = _tmp27_;
13212 _tmp28_ = ((ValaCCodeBaseModule*) self)->signal_enum;
13213 _tmp29_ = last_signal;
13214 _tmp30_ = vala_ccode_enum_value_new (_tmp29_, NULL);
13215 _tmp31_ = _tmp30_;
13216 vala_ccode_enum_add_value (_tmp28_, _tmp31_);
13217 _vala_ccode_node_unref0 (_tmp31_);
13218 _tmp32_ = ((ValaCCodeBaseModule*) self)->cfile;
13219 _tmp33_ = ((ValaCCodeBaseModule*) self)->signal_enum;
13220 vala_ccode_file_add_type_declaration (_tmp32_, (ValaCCodeNode*) _tmp33_);
13221 _tmp34_ = vala_ccode_declaration_new ("guint");
13222 signal_array_decl = _tmp34_;
13223 _tmp35_ = signal_array_decl;
13224 _tmp36_ = signal_array_decl;
13225 _tmp37_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp36_);
13226 _tmp38_ = _tmp37_;
13227 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp36_, _tmp38_ | VALA_CCODE_MODIFIERS_STATIC);
13228 _tmp39_ = signal_array_decl;
13229 _tmp40_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
13230 _tmp41_ = _tmp40_;
13231 _tmp42_ = g_strdup_printf ("%s_signals", _tmp41_);
13232 _tmp43_ = _tmp42_;
13233 _tmp44_ = vala_ccode_constant_new ("{0}");
13234 _tmp45_ = _tmp44_;
13235 _tmp46_ = last_signal;
13236 _tmp47_ = vala_ccode_identifier_new (_tmp46_);
13237 _tmp48_ = _tmp47_;
13238 _tmp49_ = vala_ccode_declarator_suffix_new_with_array ((ValaCCodeExpression*) _tmp48_);
13239 _tmp50_ = _tmp49_;
13240 _tmp51_ = vala_ccode_variable_declarator_new (_tmp43_, (ValaCCodeExpression*) _tmp45_, _tmp50_);
13241 _tmp52_ = _tmp51_;
13242 vala_ccode_declaration_add_declarator (_tmp39_, (ValaCCodeDeclarator*) _tmp52_);
13243 _vala_ccode_node_unref0 (_tmp52_);
13244 _vala_ccode_declarator_suffix_unref0 (_tmp50_);
13245 _vala_ccode_node_unref0 (_tmp48_);
13246 _vala_ccode_node_unref0 (_tmp45_);
13247 _g_free0 (_tmp43_);
13248 _g_free0 (_tmp41_);
13249 _tmp53_ = ((ValaCCodeBaseModule*) self)->cfile;
13250 _tmp54_ = signal_array_decl;
13251 vala_ccode_file_add_type_declaration (_tmp53_, (ValaCCodeNode*) _tmp54_);
13252 _vala_ccode_node_unref0 (signal_array_decl);
13253 _g_free0 (last_signal);
13254 }
13255 vala_gtype_module_add_interface_default_init_function (self, iface);
13256 _tmp55_ = vala_symbol_get_comment ((ValaSymbol*) iface);
13257 _tmp56_ = _tmp55_;
13258 if (_tmp56_ != NULL) {
13259 ValaCCodeFile* _tmp57_;
13260 ValaComment* _tmp58_;
13261 ValaComment* _tmp59_;
13262 const gchar* _tmp60_;
13263 const gchar* _tmp61_;
13264 ValaCCodeComment* _tmp62_;
13265 ValaCCodeComment* _tmp63_;
13266 _tmp57_ = ((ValaCCodeBaseModule*) self)->cfile;
13267 _tmp58_ = vala_symbol_get_comment ((ValaSymbol*) iface);
13268 _tmp59_ = _tmp58_;
13269 _tmp60_ = vala_comment_get_content (_tmp59_);
13270 _tmp61_ = _tmp60_;
13271 _tmp62_ = vala_ccode_comment_new (_tmp61_);
13272 _tmp63_ = _tmp62_;
13273 vala_ccode_file_add_type_member_definition (_tmp57_, (ValaCCodeNode*) _tmp63_);
13274 _vala_ccode_node_unref0 (_tmp63_);
13275 }
13276 _tmp64_ = vala_interface_register_function_new (iface);
13277 type_fun = _tmp64_;
13278 _tmp65_ = type_fun;
13279 _tmp66_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
13280 _tmp67_ = _tmp66_;
13281 vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp65_, _tmp67_, ((ValaCCodeBaseModule*) self)->in_plugin, FALSE);
13282 _tmp68_ = ((ValaCCodeBaseModule*) self)->cfile;
13283 _tmp69_ = type_fun;
13284 _tmp70_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) _tmp69_);
13285 _tmp71_ = _tmp70_;
13286 vala_ccode_file_add_type_member_declaration (_tmp68_, (ValaCCodeNode*) _tmp71_);
13287 _vala_ccode_node_unref0 (_tmp71_);
13288 _tmp72_ = ((ValaCCodeBaseModule*) self)->cfile;
13289 _tmp73_ = type_fun;
13290 _tmp74_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp73_);
13291 _tmp75_ = _tmp74_;
13292 vala_ccode_file_add_type_member_definition (_tmp72_, (ValaCCodeNode*) _tmp75_);
13293 _vala_ccode_node_unref0 (_tmp75_);
13294 _tmp76_ = old_signal_enum;
13295 _tmp77_ = _vala_ccode_node_ref0 (_tmp76_);
13296 _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
13297 ((ValaCCodeBaseModule*) self)->signal_enum = _tmp77_;
13298 vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
13299 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
13300 _vala_typeregister_function_unref0 (type_fun);
13301 _vala_ccode_node_unref0 (old_signal_enum);
13302 }
13303
13304 static void
vala_gtype_module_add_interface_default_init_function(ValaGTypeModule * self,ValaInterface * iface)13305 vala_gtype_module_add_interface_default_init_function (ValaGTypeModule* self,
13306 ValaInterface* iface)
13307 {
13308 ValaCCodeBaseModuleEmitContext* _tmp0_;
13309 ValaCCodeBaseModuleEmitContext* _tmp1_;
13310 ValaCCodeFunction* default_init = NULL;
13311 gchar* _tmp2_;
13312 gchar* _tmp3_;
13313 gchar* _tmp4_;
13314 gchar* _tmp5_;
13315 ValaCCodeFunction* _tmp6_;
13316 ValaCCodeFunction* _tmp7_;
13317 ValaCCodeFunction* _tmp8_;
13318 gchar* _tmp9_;
13319 gchar* _tmp10_;
13320 gchar* _tmp11_;
13321 gchar* _tmp12_;
13322 ValaCCodeParameter* _tmp13_;
13323 ValaCCodeParameter* _tmp14_;
13324 ValaCCodeFunction* _tmp15_;
13325 ValaCCodeParameter* _tmp16_;
13326 ValaCCodeParameter* _tmp17_;
13327 ValaCCodeFunction* _tmp18_;
13328 ValaCCodeFunction* _tmp19_;
13329 ValaTypeSymbol* _tmp20_;
13330 ValaCCodeIdentifier* ciface = NULL;
13331 ValaCCodeIdentifier* _tmp66_;
13332 ValaCCodeFile* _tmp215_;
13333 ValaCCodeFunction* _tmp216_;
13334 g_return_if_fail (self != NULL);
13335 g_return_if_fail (iface != NULL);
13336 _tmp0_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) iface);
13337 _tmp1_ = _tmp0_;
13338 vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp1_);
13339 _vala_ccode_base_module_emit_context_unref0 (_tmp1_);
13340 _tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) iface, NULL);
13341 _tmp3_ = _tmp2_;
13342 _tmp4_ = g_strdup_printf ("%s_default_init", _tmp3_);
13343 _tmp5_ = _tmp4_;
13344 _tmp6_ = vala_ccode_function_new (_tmp5_, "void");
13345 _tmp7_ = _tmp6_;
13346 _g_free0 (_tmp5_);
13347 _g_free0 (_tmp3_);
13348 default_init = _tmp7_;
13349 _tmp8_ = default_init;
13350 _tmp9_ = vala_get_ccode_type_name ((ValaObjectTypeSymbol*) iface);
13351 _tmp10_ = _tmp9_;
13352 _tmp11_ = g_strdup_printf ("%s *", _tmp10_);
13353 _tmp12_ = _tmp11_;
13354 _tmp13_ = vala_ccode_parameter_new ("iface", _tmp12_);
13355 _tmp14_ = _tmp13_;
13356 vala_ccode_function_add_parameter (_tmp8_, _tmp14_);
13357 _vala_ccode_node_unref0 (_tmp14_);
13358 _g_free0 (_tmp12_);
13359 _g_free0 (_tmp10_);
13360 _tmp15_ = default_init;
13361 _tmp16_ = vala_ccode_parameter_new ("iface_data", "gpointer");
13362 _tmp17_ = _tmp16_;
13363 vala_ccode_function_add_parameter (_tmp15_, _tmp17_);
13364 _vala_ccode_node_unref0 (_tmp17_);
13365 _tmp18_ = default_init;
13366 vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp18_, VALA_CCODE_MODIFIERS_STATIC);
13367 _tmp19_ = default_init;
13368 vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
13369 _tmp20_ = ((ValaCCodeBaseModule*) self)->gobject_type;
13370 if (vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) iface, _tmp20_)) {
13371 ValaList* props = NULL;
13372 ValaList* _tmp21_;
13373 ValaList* _tmp22_;
13374 _tmp21_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) iface);
13375 _tmp22_ = _vala_iterable_ref0 (_tmp21_);
13376 props = _tmp22_;
13377 {
13378 ValaList* _prop_list = NULL;
13379 ValaList* _tmp23_;
13380 ValaList* _tmp24_;
13381 gint _prop_size = 0;
13382 ValaList* _tmp25_;
13383 gint _tmp26_;
13384 gint _tmp27_;
13385 gint _prop_index = 0;
13386 _tmp23_ = props;
13387 _tmp24_ = _vala_iterable_ref0 (_tmp23_);
13388 _prop_list = _tmp24_;
13389 _tmp25_ = _prop_list;
13390 _tmp26_ = vala_collection_get_size ((ValaCollection*) _tmp25_);
13391 _tmp27_ = _tmp26_;
13392 _prop_size = _tmp27_;
13393 _prop_index = -1;
13394 while (TRUE) {
13395 gint _tmp28_;
13396 gint _tmp29_;
13397 ValaProperty* prop = NULL;
13398 ValaList* _tmp30_;
13399 gpointer _tmp31_;
13400 ValaProperty* _tmp32_;
13401 gboolean _tmp33_;
13402 gboolean _tmp34_;
13403 _prop_index = _prop_index + 1;
13404 _tmp28_ = _prop_index;
13405 _tmp29_ = _prop_size;
13406 if (!(_tmp28_ < _tmp29_)) {
13407 break;
13408 }
13409 _tmp30_ = _prop_list;
13410 _tmp31_ = vala_list_get (_tmp30_, _prop_index);
13411 prop = (ValaProperty*) _tmp31_;
13412 _tmp32_ = prop;
13413 _tmp33_ = vala_property_get_is_abstract (_tmp32_);
13414 _tmp34_ = _tmp33_;
13415 if (_tmp34_) {
13416 ValaCodeContext* _tmp35_;
13417 ValaCodeContext* _tmp36_;
13418 ValaSemanticAnalyzer* _tmp37_;
13419 ValaSemanticAnalyzer* _tmp38_;
13420 ValaProperty* _tmp39_;
13421 ValaProperty* _tmp40_;
13422 ValaComment* _tmp41_;
13423 ValaComment* _tmp42_;
13424 ValaCCodeFunctionCall* cinst = NULL;
13425 ValaCCodeIdentifier* _tmp52_;
13426 ValaCCodeIdentifier* _tmp53_;
13427 ValaCCodeFunctionCall* _tmp54_;
13428 ValaCCodeFunctionCall* _tmp55_;
13429 ValaCCodeFunctionCall* _tmp56_;
13430 ValaCCodeIdentifier* _tmp57_;
13431 ValaCCodeIdentifier* _tmp58_;
13432 ValaCCodeFunctionCall* _tmp59_;
13433 ValaProperty* _tmp60_;
13434 ValaCCodeExpression* _tmp61_;
13435 ValaCCodeExpression* _tmp62_;
13436 ValaCCodeFunction* _tmp63_;
13437 ValaCCodeFunction* _tmp64_;
13438 ValaCCodeFunctionCall* _tmp65_;
13439 _tmp35_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
13440 _tmp36_ = _tmp35_;
13441 _tmp37_ = vala_code_context_get_analyzer (_tmp36_);
13442 _tmp38_ = _tmp37_;
13443 _tmp39_ = prop;
13444 if (!vala_semantic_analyzer_is_gobject_property (_tmp38_, _tmp39_)) {
13445 _vala_code_node_unref0 (prop);
13446 continue;
13447 }
13448 _tmp40_ = prop;
13449 _tmp41_ = vala_symbol_get_comment ((ValaSymbol*) _tmp40_);
13450 _tmp42_ = _tmp41_;
13451 if (_tmp42_ != NULL) {
13452 ValaCCodeFunction* _tmp43_;
13453 ValaCCodeFunction* _tmp44_;
13454 ValaProperty* _tmp45_;
13455 ValaComment* _tmp46_;
13456 ValaComment* _tmp47_;
13457 const gchar* _tmp48_;
13458 const gchar* _tmp49_;
13459 ValaCCodeComment* _tmp50_;
13460 ValaCCodeComment* _tmp51_;
13461 _tmp43_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13462 _tmp44_ = _tmp43_;
13463 _tmp45_ = prop;
13464 _tmp46_ = vala_symbol_get_comment ((ValaSymbol*) _tmp45_);
13465 _tmp47_ = _tmp46_;
13466 _tmp48_ = vala_comment_get_content (_tmp47_);
13467 _tmp49_ = _tmp48_;
13468 _tmp50_ = vala_ccode_comment_new (_tmp49_);
13469 _tmp51_ = _tmp50_;
13470 vala_ccode_function_add_statement (_tmp44_, (ValaCCodeNode*) _tmp51_);
13471 _vala_ccode_node_unref0 (_tmp51_);
13472 }
13473 _tmp52_ = vala_ccode_identifier_new ("g_object_interface_install_property");
13474 _tmp53_ = _tmp52_;
13475 _tmp54_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp53_);
13476 _tmp55_ = _tmp54_;
13477 _vala_ccode_node_unref0 (_tmp53_);
13478 cinst = _tmp55_;
13479 _tmp56_ = cinst;
13480 _tmp57_ = vala_ccode_identifier_new ("iface");
13481 _tmp58_ = _tmp57_;
13482 vala_ccode_function_call_add_argument (_tmp56_, (ValaCCodeExpression*) _tmp58_);
13483 _vala_ccode_node_unref0 (_tmp58_);
13484 _tmp59_ = cinst;
13485 _tmp60_ = prop;
13486 _tmp61_ = vala_ccode_base_module_get_param_spec ((ValaCCodeBaseModule*) self, _tmp60_);
13487 _tmp62_ = _tmp61_;
13488 vala_ccode_function_call_add_argument (_tmp59_, _tmp62_);
13489 _vala_ccode_node_unref0 (_tmp62_);
13490 _tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13491 _tmp64_ = _tmp63_;
13492 _tmp65_ = cinst;
13493 vala_ccode_function_add_expression (_tmp64_, (ValaCCodeExpression*) _tmp65_);
13494 _vala_ccode_node_unref0 (cinst);
13495 }
13496 _vala_code_node_unref0 (prop);
13497 }
13498 _vala_iterable_unref0 (_prop_list);
13499 }
13500 _vala_iterable_unref0 (props);
13501 }
13502 _tmp66_ = vala_ccode_identifier_new ("iface");
13503 ciface = _tmp66_;
13504 {
13505 ValaList* _sig_list = NULL;
13506 ValaList* _tmp67_;
13507 ValaList* _tmp68_;
13508 gint _sig_size = 0;
13509 ValaList* _tmp69_;
13510 gint _tmp70_;
13511 gint _tmp71_;
13512 gint _sig_index = 0;
13513 _tmp67_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) iface);
13514 _tmp68_ = _vala_iterable_ref0 (_tmp67_);
13515 _sig_list = _tmp68_;
13516 _tmp69_ = _sig_list;
13517 _tmp70_ = vala_collection_get_size ((ValaCollection*) _tmp69_);
13518 _tmp71_ = _tmp70_;
13519 _sig_size = _tmp71_;
13520 _sig_index = -1;
13521 while (TRUE) {
13522 gint _tmp72_;
13523 gint _tmp73_;
13524 ValaSignal* sig = NULL;
13525 ValaList* _tmp74_;
13526 gpointer _tmp75_;
13527 ValaSignal* _tmp76_;
13528 ValaMethod* _tmp77_;
13529 ValaMethod* _tmp78_;
13530 gchar* cname = NULL;
13531 ValaSignal* _tmp79_;
13532 ValaMethod* _tmp80_;
13533 ValaMethod* _tmp81_;
13534 gchar* _tmp82_;
13535 ValaCCodeFunction* _tmp83_;
13536 ValaCCodeFunction* _tmp84_;
13537 ValaCCodeIdentifier* _tmp85_;
13538 ValaSignal* _tmp86_;
13539 ValaMethod* _tmp87_;
13540 ValaMethod* _tmp88_;
13541 gchar* _tmp89_;
13542 gchar* _tmp90_;
13543 ValaCCodeMemberAccess* _tmp91_;
13544 ValaCCodeMemberAccess* _tmp92_;
13545 const gchar* _tmp93_;
13546 ValaCCodeIdentifier* _tmp94_;
13547 ValaCCodeIdentifier* _tmp95_;
13548 _sig_index = _sig_index + 1;
13549 _tmp72_ = _sig_index;
13550 _tmp73_ = _sig_size;
13551 if (!(_tmp72_ < _tmp73_)) {
13552 break;
13553 }
13554 _tmp74_ = _sig_list;
13555 _tmp75_ = vala_list_get (_tmp74_, _sig_index);
13556 sig = (ValaSignal*) _tmp75_;
13557 _tmp76_ = sig;
13558 _tmp77_ = vala_signal_get_default_handler (_tmp76_);
13559 _tmp78_ = _tmp77_;
13560 if (_tmp78_ == NULL) {
13561 _vala_code_node_unref0 (sig);
13562 continue;
13563 }
13564 _tmp79_ = sig;
13565 _tmp80_ = vala_signal_get_default_handler (_tmp79_);
13566 _tmp81_ = _tmp80_;
13567 _tmp82_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp81_);
13568 cname = _tmp82_;
13569 _tmp83_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13570 _tmp84_ = _tmp83_;
13571 _tmp85_ = ciface;
13572 _tmp86_ = sig;
13573 _tmp87_ = vala_signal_get_default_handler (_tmp86_);
13574 _tmp88_ = _tmp87_;
13575 _tmp89_ = vala_get_ccode_vfunc_name (_tmp88_);
13576 _tmp90_ = _tmp89_;
13577 _tmp91_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp85_, _tmp90_);
13578 _tmp92_ = _tmp91_;
13579 _tmp93_ = cname;
13580 _tmp94_ = vala_ccode_identifier_new (_tmp93_);
13581 _tmp95_ = _tmp94_;
13582 vala_ccode_function_add_assignment (_tmp84_, (ValaCCodeExpression*) _tmp92_, (ValaCCodeExpression*) _tmp95_);
13583 _vala_ccode_node_unref0 (_tmp95_);
13584 _vala_ccode_node_unref0 (_tmp92_);
13585 _g_free0 (_tmp90_);
13586 _g_free0 (cname);
13587 _vala_code_node_unref0 (sig);
13588 }
13589 _vala_iterable_unref0 (_sig_list);
13590 }
13591 {
13592 ValaList* _sig_list = NULL;
13593 ValaList* _tmp96_;
13594 ValaList* _tmp97_;
13595 gint _sig_size = 0;
13596 ValaList* _tmp98_;
13597 gint _tmp99_;
13598 gint _tmp100_;
13599 gint _sig_index = 0;
13600 _tmp96_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) iface);
13601 _tmp97_ = _vala_iterable_ref0 (_tmp96_);
13602 _sig_list = _tmp97_;
13603 _tmp98_ = _sig_list;
13604 _tmp99_ = vala_collection_get_size ((ValaCollection*) _tmp98_);
13605 _tmp100_ = _tmp99_;
13606 _sig_size = _tmp100_;
13607 _sig_index = -1;
13608 while (TRUE) {
13609 gint _tmp101_;
13610 gint _tmp102_;
13611 ValaSignal* sig = NULL;
13612 ValaList* _tmp103_;
13613 gpointer _tmp104_;
13614 ValaSignal* _tmp105_;
13615 ValaComment* _tmp106_;
13616 ValaComment* _tmp107_;
13617 ValaCCodeFunction* _tmp117_;
13618 ValaCCodeFunction* _tmp118_;
13619 ValaSignal* _tmp119_;
13620 ValaCCodeExpression* _tmp120_;
13621 ValaCCodeExpression* _tmp121_;
13622 _sig_index = _sig_index + 1;
13623 _tmp101_ = _sig_index;
13624 _tmp102_ = _sig_size;
13625 if (!(_tmp101_ < _tmp102_)) {
13626 break;
13627 }
13628 _tmp103_ = _sig_list;
13629 _tmp104_ = vala_list_get (_tmp103_, _sig_index);
13630 sig = (ValaSignal*) _tmp104_;
13631 _tmp105_ = sig;
13632 _tmp106_ = vala_symbol_get_comment ((ValaSymbol*) _tmp105_);
13633 _tmp107_ = _tmp106_;
13634 if (_tmp107_ != NULL) {
13635 ValaCCodeFunction* _tmp108_;
13636 ValaCCodeFunction* _tmp109_;
13637 ValaSignal* _tmp110_;
13638 ValaComment* _tmp111_;
13639 ValaComment* _tmp112_;
13640 const gchar* _tmp113_;
13641 const gchar* _tmp114_;
13642 ValaCCodeComment* _tmp115_;
13643 ValaCCodeComment* _tmp116_;
13644 _tmp108_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13645 _tmp109_ = _tmp108_;
13646 _tmp110_ = sig;
13647 _tmp111_ = vala_symbol_get_comment ((ValaSymbol*) _tmp110_);
13648 _tmp112_ = _tmp111_;
13649 _tmp113_ = vala_comment_get_content (_tmp112_);
13650 _tmp114_ = _tmp113_;
13651 _tmp115_ = vala_ccode_comment_new (_tmp114_);
13652 _tmp116_ = _tmp115_;
13653 vala_ccode_function_add_statement (_tmp109_, (ValaCCodeNode*) _tmp116_);
13654 _vala_ccode_node_unref0 (_tmp116_);
13655 }
13656 _tmp117_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13657 _tmp118_ = _tmp117_;
13658 _tmp119_ = sig;
13659 _tmp120_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, _tmp119_, (ValaObjectTypeSymbol*) iface);
13660 _tmp121_ = _tmp120_;
13661 vala_ccode_function_add_expression (_tmp118_, _tmp121_);
13662 _vala_ccode_node_unref0 (_tmp121_);
13663 _vala_code_node_unref0 (sig);
13664 }
13665 _vala_iterable_unref0 (_sig_list);
13666 }
13667 {
13668 ValaList* _m_list = NULL;
13669 ValaList* _tmp122_;
13670 ValaList* _tmp123_;
13671 gint _m_size = 0;
13672 ValaList* _tmp124_;
13673 gint _tmp125_;
13674 gint _tmp126_;
13675 gint _m_index = 0;
13676 _tmp122_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) iface);
13677 _tmp123_ = _vala_iterable_ref0 (_tmp122_);
13678 _m_list = _tmp123_;
13679 _tmp124_ = _m_list;
13680 _tmp125_ = vala_collection_get_size ((ValaCollection*) _tmp124_);
13681 _tmp126_ = _tmp125_;
13682 _m_size = _tmp126_;
13683 _m_index = -1;
13684 while (TRUE) {
13685 gint _tmp127_;
13686 gint _tmp128_;
13687 ValaMethod* m = NULL;
13688 ValaList* _tmp129_;
13689 gpointer _tmp130_;
13690 ValaMethod* _tmp131_;
13691 gboolean _tmp132_;
13692 gboolean _tmp133_;
13693 _m_index = _m_index + 1;
13694 _tmp127_ = _m_index;
13695 _tmp128_ = _m_size;
13696 if (!(_tmp127_ < _tmp128_)) {
13697 break;
13698 }
13699 _tmp129_ = _m_list;
13700 _tmp130_ = vala_list_get (_tmp129_, _m_index);
13701 m = (ValaMethod*) _tmp130_;
13702 _tmp131_ = m;
13703 _tmp132_ = vala_method_get_is_virtual (_tmp131_);
13704 _tmp133_ = _tmp132_;
13705 if (_tmp133_) {
13706 gchar* cname = NULL;
13707 ValaMethod* _tmp134_;
13708 gchar* _tmp135_;
13709 ValaCCodeFunction* _tmp136_;
13710 ValaCCodeFunction* _tmp137_;
13711 ValaCCodeIdentifier* _tmp138_;
13712 ValaMethod* _tmp139_;
13713 gchar* _tmp140_;
13714 gchar* _tmp141_;
13715 ValaCCodeMemberAccess* _tmp142_;
13716 ValaCCodeMemberAccess* _tmp143_;
13717 const gchar* _tmp144_;
13718 ValaCCodeIdentifier* _tmp145_;
13719 ValaCCodeIdentifier* _tmp146_;
13720 ValaMethod* _tmp147_;
13721 gboolean _tmp148_;
13722 gboolean _tmp149_;
13723 _tmp134_ = m;
13724 _tmp135_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp134_);
13725 cname = _tmp135_;
13726 _tmp136_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13727 _tmp137_ = _tmp136_;
13728 _tmp138_ = ciface;
13729 _tmp139_ = m;
13730 _tmp140_ = vala_get_ccode_vfunc_name (_tmp139_);
13731 _tmp141_ = _tmp140_;
13732 _tmp142_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp138_, _tmp141_);
13733 _tmp143_ = _tmp142_;
13734 _tmp144_ = cname;
13735 _tmp145_ = vala_ccode_identifier_new (_tmp144_);
13736 _tmp146_ = _tmp145_;
13737 vala_ccode_function_add_assignment (_tmp137_, (ValaCCodeExpression*) _tmp143_, (ValaCCodeExpression*) _tmp146_);
13738 _vala_ccode_node_unref0 (_tmp146_);
13739 _vala_ccode_node_unref0 (_tmp143_);
13740 _g_free0 (_tmp141_);
13741 _tmp147_ = m;
13742 _tmp148_ = vala_method_get_coroutine (_tmp147_);
13743 _tmp149_ = _tmp148_;
13744 if (_tmp149_) {
13745 ValaCCodeFunction* _tmp150_;
13746 ValaCCodeFunction* _tmp151_;
13747 ValaCCodeIdentifier* _tmp152_;
13748 ValaMethod* _tmp153_;
13749 gchar* _tmp154_;
13750 gchar* _tmp155_;
13751 ValaCCodeMemberAccess* _tmp156_;
13752 ValaCCodeMemberAccess* _tmp157_;
13753 ValaMethod* _tmp158_;
13754 gchar* _tmp159_;
13755 gchar* _tmp160_;
13756 ValaCCodeIdentifier* _tmp161_;
13757 ValaCCodeIdentifier* _tmp162_;
13758 _tmp150_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13759 _tmp151_ = _tmp150_;
13760 _tmp152_ = ciface;
13761 _tmp153_ = m;
13762 _tmp154_ = vala_get_ccode_finish_vfunc_name (_tmp153_);
13763 _tmp155_ = _tmp154_;
13764 _tmp156_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp152_, _tmp155_);
13765 _tmp157_ = _tmp156_;
13766 _tmp158_ = m;
13767 _tmp159_ = vala_get_ccode_finish_real_name (_tmp158_);
13768 _tmp160_ = _tmp159_;
13769 _tmp161_ = vala_ccode_identifier_new (_tmp160_);
13770 _tmp162_ = _tmp161_;
13771 vala_ccode_function_add_assignment (_tmp151_, (ValaCCodeExpression*) _tmp157_, (ValaCCodeExpression*) _tmp162_);
13772 _vala_ccode_node_unref0 (_tmp162_);
13773 _g_free0 (_tmp160_);
13774 _vala_ccode_node_unref0 (_tmp157_);
13775 _g_free0 (_tmp155_);
13776 }
13777 _g_free0 (cname);
13778 }
13779 _vala_code_node_unref0 (m);
13780 }
13781 _vala_iterable_unref0 (_m_list);
13782 }
13783 {
13784 ValaList* _prop_list = NULL;
13785 ValaList* _tmp163_;
13786 ValaList* _tmp164_;
13787 gint _prop_size = 0;
13788 ValaList* _tmp165_;
13789 gint _tmp166_;
13790 gint _tmp167_;
13791 gint _prop_index = 0;
13792 _tmp163_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) iface);
13793 _tmp164_ = _vala_iterable_ref0 (_tmp163_);
13794 _prop_list = _tmp164_;
13795 _tmp165_ = _prop_list;
13796 _tmp166_ = vala_collection_get_size ((ValaCollection*) _tmp165_);
13797 _tmp167_ = _tmp166_;
13798 _prop_size = _tmp167_;
13799 _prop_index = -1;
13800 while (TRUE) {
13801 gint _tmp168_;
13802 gint _tmp169_;
13803 ValaProperty* prop = NULL;
13804 ValaList* _tmp170_;
13805 gpointer _tmp171_;
13806 ValaProperty* _tmp172_;
13807 gboolean _tmp173_;
13808 gboolean _tmp174_;
13809 _prop_index = _prop_index + 1;
13810 _tmp168_ = _prop_index;
13811 _tmp169_ = _prop_size;
13812 if (!(_tmp168_ < _tmp169_)) {
13813 break;
13814 }
13815 _tmp170_ = _prop_list;
13816 _tmp171_ = vala_list_get (_tmp170_, _prop_index);
13817 prop = (ValaProperty*) _tmp171_;
13818 _tmp172_ = prop;
13819 _tmp173_ = vala_property_get_is_virtual (_tmp172_);
13820 _tmp174_ = _tmp173_;
13821 if (_tmp174_) {
13822 ValaProperty* _tmp175_;
13823 ValaPropertyAccessor* _tmp176_;
13824 ValaPropertyAccessor* _tmp177_;
13825 ValaProperty* _tmp195_;
13826 ValaPropertyAccessor* _tmp196_;
13827 ValaPropertyAccessor* _tmp197_;
13828 _tmp175_ = prop;
13829 _tmp176_ = vala_property_get_get_accessor (_tmp175_);
13830 _tmp177_ = _tmp176_;
13831 if (_tmp177_ != NULL) {
13832 gchar* cname = NULL;
13833 ValaProperty* _tmp178_;
13834 ValaPropertyAccessor* _tmp179_;
13835 ValaPropertyAccessor* _tmp180_;
13836 gchar* _tmp181_;
13837 ValaCCodeFunction* _tmp182_;
13838 ValaCCodeFunction* _tmp183_;
13839 ValaCCodeIdentifier* _tmp184_;
13840 ValaProperty* _tmp185_;
13841 const gchar* _tmp186_;
13842 const gchar* _tmp187_;
13843 gchar* _tmp188_;
13844 gchar* _tmp189_;
13845 ValaCCodeMemberAccess* _tmp190_;
13846 ValaCCodeMemberAccess* _tmp191_;
13847 const gchar* _tmp192_;
13848 ValaCCodeIdentifier* _tmp193_;
13849 ValaCCodeIdentifier* _tmp194_;
13850 _tmp178_ = prop;
13851 _tmp179_ = vala_property_get_get_accessor (_tmp178_);
13852 _tmp180_ = _tmp179_;
13853 _tmp181_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp180_);
13854 cname = _tmp181_;
13855 _tmp182_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13856 _tmp183_ = _tmp182_;
13857 _tmp184_ = ciface;
13858 _tmp185_ = prop;
13859 _tmp186_ = vala_symbol_get_name ((ValaSymbol*) _tmp185_);
13860 _tmp187_ = _tmp186_;
13861 _tmp188_ = g_strdup_printf ("get_%s", _tmp187_);
13862 _tmp189_ = _tmp188_;
13863 _tmp190_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp184_, _tmp189_);
13864 _tmp191_ = _tmp190_;
13865 _tmp192_ = cname;
13866 _tmp193_ = vala_ccode_identifier_new (_tmp192_);
13867 _tmp194_ = _tmp193_;
13868 vala_ccode_function_add_assignment (_tmp183_, (ValaCCodeExpression*) _tmp191_, (ValaCCodeExpression*) _tmp194_);
13869 _vala_ccode_node_unref0 (_tmp194_);
13870 _vala_ccode_node_unref0 (_tmp191_);
13871 _g_free0 (_tmp189_);
13872 _g_free0 (cname);
13873 }
13874 _tmp195_ = prop;
13875 _tmp196_ = vala_property_get_set_accessor (_tmp195_);
13876 _tmp197_ = _tmp196_;
13877 if (_tmp197_ != NULL) {
13878 gchar* cname = NULL;
13879 ValaProperty* _tmp198_;
13880 ValaPropertyAccessor* _tmp199_;
13881 ValaPropertyAccessor* _tmp200_;
13882 gchar* _tmp201_;
13883 ValaCCodeFunction* _tmp202_;
13884 ValaCCodeFunction* _tmp203_;
13885 ValaCCodeIdentifier* _tmp204_;
13886 ValaProperty* _tmp205_;
13887 const gchar* _tmp206_;
13888 const gchar* _tmp207_;
13889 gchar* _tmp208_;
13890 gchar* _tmp209_;
13891 ValaCCodeMemberAccess* _tmp210_;
13892 ValaCCodeMemberAccess* _tmp211_;
13893 const gchar* _tmp212_;
13894 ValaCCodeIdentifier* _tmp213_;
13895 ValaCCodeIdentifier* _tmp214_;
13896 _tmp198_ = prop;
13897 _tmp199_ = vala_property_get_set_accessor (_tmp198_);
13898 _tmp200_ = _tmp199_;
13899 _tmp201_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp200_);
13900 cname = _tmp201_;
13901 _tmp202_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
13902 _tmp203_ = _tmp202_;
13903 _tmp204_ = ciface;
13904 _tmp205_ = prop;
13905 _tmp206_ = vala_symbol_get_name ((ValaSymbol*) _tmp205_);
13906 _tmp207_ = _tmp206_;
13907 _tmp208_ = g_strdup_printf ("set_%s", _tmp207_);
13908 _tmp209_ = _tmp208_;
13909 _tmp210_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp204_, _tmp209_);
13910 _tmp211_ = _tmp210_;
13911 _tmp212_ = cname;
13912 _tmp213_ = vala_ccode_identifier_new (_tmp212_);
13913 _tmp214_ = _tmp213_;
13914 vala_ccode_function_add_assignment (_tmp203_, (ValaCCodeExpression*) _tmp211_, (ValaCCodeExpression*) _tmp214_);
13915 _vala_ccode_node_unref0 (_tmp214_);
13916 _vala_ccode_node_unref0 (_tmp211_);
13917 _g_free0 (_tmp209_);
13918 _g_free0 (cname);
13919 }
13920 }
13921 _vala_code_node_unref0 (prop);
13922 }
13923 _vala_iterable_unref0 (_prop_list);
13924 }
13925 vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
13926 _tmp215_ = ((ValaCCodeBaseModule*) self)->cfile;
13927 _tmp216_ = default_init;
13928 vala_ccode_file_add_function (_tmp215_, _tmp216_);
13929 _vala_ccode_node_unref0 (ciface);
13930 _vala_ccode_node_unref0 (default_init);
13931 }
13932
13933 static void
vala_gtype_module_real_visit_struct(ValaCodeVisitor * base,ValaStruct * st)13934 vala_gtype_module_real_visit_struct (ValaCodeVisitor* base,
13935 ValaStruct* st)
13936 {
13937 ValaGTypeModule * self;
13938 gboolean _tmp0_ = FALSE;
13939 ValaAttribute* _tmp1_;
13940 gboolean _tmp2_ = FALSE;
13941 gboolean _tmp3_ = FALSE;
13942 self = (ValaGTypeModule*) base;
13943 g_return_if_fail (st != NULL);
13944 _tmp1_ = vala_code_node_get_attribute ((ValaCodeNode*) st, "SimpleType");
13945 if (_tmp1_ != NULL) {
13946 _tmp0_ = !vala_code_node_has_attribute_argument ((ValaCodeNode*) st, "CCode", "type_id");
13947 } else {
13948 _tmp0_ = FALSE;
13949 }
13950 if (_tmp0_) {
13951 vala_code_node_set_attribute_bool ((ValaCodeNode*) st, "CCode", "has_type_id", FALSE, NULL);
13952 }
13953 VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_struct ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), st);
13954 if (vala_struct_is_boolean_type (st)) {
13955 _tmp3_ = TRUE;
13956 } else {
13957 _tmp3_ = vala_struct_is_integer_type (st);
13958 }
13959 if (_tmp3_) {
13960 _tmp2_ = TRUE;
13961 } else {
13962 _tmp2_ = vala_struct_is_floating_type (st);
13963 }
13964 if (_tmp2_) {
13965 return;
13966 }
13967 if (vala_get_ccode_has_type_id ((ValaTypeSymbol*) st)) {
13968 ValaSourceReference* _tmp4_;
13969 ValaSourceReference* _tmp5_;
13970 ValaStructRegisterFunction* type_fun = NULL;
13971 ValaStructRegisterFunction* _tmp6_;
13972 ValaStructRegisterFunction* _tmp7_;
13973 ValaCodeContext* _tmp8_;
13974 ValaCodeContext* _tmp9_;
13975 ValaCCodeFile* _tmp10_;
13976 ValaStructRegisterFunction* _tmp11_;
13977 ValaCCodeFragment* _tmp12_;
13978 ValaCCodeFragment* _tmp13_;
13979 _tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) st);
13980 _tmp5_ = _tmp4_;
13981 vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp5_);
13982 _tmp6_ = vala_struct_register_function_new (st);
13983 type_fun = _tmp6_;
13984 _tmp7_ = type_fun;
13985 _tmp8_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
13986 _tmp9_ = _tmp8_;
13987 vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp7_, _tmp9_, FALSE, FALSE);
13988 _tmp10_ = ((ValaCCodeBaseModule*) self)->cfile;
13989 _tmp11_ = type_fun;
13990 _tmp12_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp11_);
13991 _tmp13_ = _tmp12_;
13992 vala_ccode_file_add_type_member_definition (_tmp10_, (ValaCCodeNode*) _tmp13_);
13993 _vala_ccode_node_unref0 (_tmp13_);
13994 vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
13995 _vala_typeregister_function_unref0 (type_fun);
13996 }
13997 }
13998
13999 static void
vala_gtype_module_real_visit_enum(ValaCodeVisitor * base,ValaEnum * en)14000 vala_gtype_module_real_visit_enum (ValaCodeVisitor* base,
14001 ValaEnum* en)
14002 {
14003 ValaGTypeModule * self;
14004 self = (ValaGTypeModule*) base;
14005 g_return_if_fail (en != NULL);
14006 VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_enum ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), en);
14007 if (vala_get_ccode_has_type_id ((ValaTypeSymbol*) en)) {
14008 ValaSourceReference* _tmp0_;
14009 ValaSourceReference* _tmp1_;
14010 ValaEnumRegisterFunction* type_fun = NULL;
14011 ValaEnumRegisterFunction* _tmp2_;
14012 ValaEnumRegisterFunction* _tmp3_;
14013 ValaCodeContext* _tmp4_;
14014 ValaCodeContext* _tmp5_;
14015 ValaCCodeFile* _tmp6_;
14016 ValaEnumRegisterFunction* _tmp7_;
14017 ValaCCodeFragment* _tmp8_;
14018 ValaCCodeFragment* _tmp9_;
14019 _tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) en);
14020 _tmp1_ = _tmp0_;
14021 vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp1_);
14022 _tmp2_ = vala_enum_register_function_new (en);
14023 type_fun = _tmp2_;
14024 _tmp3_ = type_fun;
14025 _tmp4_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
14026 _tmp5_ = _tmp4_;
14027 vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp3_, _tmp5_, FALSE, FALSE);
14028 _tmp6_ = ((ValaCCodeBaseModule*) self)->cfile;
14029 _tmp7_ = type_fun;
14030 _tmp8_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp7_);
14031 _tmp9_ = _tmp8_;
14032 vala_ccode_file_add_type_member_definition (_tmp6_, (ValaCCodeNode*) _tmp9_);
14033 _vala_ccode_node_unref0 (_tmp9_);
14034 vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
14035 _vala_typeregister_function_unref0 (type_fun);
14036 }
14037 }
14038
14039 static void
vala_gtype_module_real_visit_method_call(ValaCodeVisitor * base,ValaMethodCall * expr)14040 vala_gtype_module_real_visit_method_call (ValaCodeVisitor* base,
14041 ValaMethodCall* expr)
14042 {
14043 ValaGTypeModule * self;
14044 ValaMemberAccess* ma = NULL;
14045 ValaExpression* _tmp0_;
14046 ValaExpression* _tmp1_;
14047 ValaMemberAccess* _tmp2_;
14048 ValaMethodType* mtype = NULL;
14049 ValaExpression* _tmp3_;
14050 ValaExpression* _tmp4_;
14051 ValaDataType* _tmp5_;
14052 ValaDataType* _tmp6_;
14053 ValaMethodType* _tmp7_;
14054 gboolean _tmp8_ = FALSE;
14055 gboolean _tmp9_ = FALSE;
14056 gboolean _tmp10_ = FALSE;
14057 gboolean _tmp11_ = FALSE;
14058 gboolean _tmp12_ = FALSE;
14059 ValaMethodType* _tmp13_;
14060 gboolean is_flags = FALSE;
14061 ValaMemberAccess* _tmp39_;
14062 ValaExpression* _tmp40_;
14063 ValaExpression* _tmp41_;
14064 ValaDataType* _tmp42_;
14065 ValaDataType* _tmp43_;
14066 ValaTypeSymbol* _tmp44_;
14067 ValaTypeSymbol* _tmp45_;
14068 gboolean _tmp46_;
14069 gboolean _tmp47_;
14070 ValaSourceReference* _tmp48_;
14071 ValaSourceReference* _tmp49_;
14072 ValaCodeContext* _tmp50_;
14073 ValaCodeContext* _tmp51_;
14074 self = (ValaGTypeModule*) base;
14075 g_return_if_fail (expr != NULL);
14076 _tmp0_ = vala_method_call_get_call (expr);
14077 _tmp1_ = _tmp0_;
14078 _tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp1_) : NULL);
14079 ma = _tmp2_;
14080 _tmp3_ = vala_method_call_get_call (expr);
14081 _tmp4_ = _tmp3_;
14082 _tmp5_ = vala_expression_get_value_type (_tmp4_);
14083 _tmp6_ = _tmp5_;
14084 _tmp7_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_METHOD_TYPE) ? ((ValaMethodType*) _tmp6_) : NULL);
14085 mtype = _tmp7_;
14086 _tmp13_ = mtype;
14087 if (_tmp13_ == NULL) {
14088 _tmp12_ = TRUE;
14089 } else {
14090 ValaMemberAccess* _tmp14_;
14091 _tmp14_ = ma;
14092 _tmp12_ = _tmp14_ == NULL;
14093 }
14094 if (_tmp12_) {
14095 _tmp11_ = TRUE;
14096 } else {
14097 ValaMemberAccess* _tmp15_;
14098 ValaExpression* _tmp16_;
14099 ValaExpression* _tmp17_;
14100 _tmp15_ = ma;
14101 _tmp16_ = vala_member_access_get_inner (_tmp15_);
14102 _tmp17_ = _tmp16_;
14103 _tmp11_ = _tmp17_ == NULL;
14104 }
14105 if (_tmp11_) {
14106 _tmp10_ = TRUE;
14107 } else {
14108 ValaMemberAccess* _tmp18_;
14109 ValaExpression* _tmp19_;
14110 ValaExpression* _tmp20_;
14111 ValaDataType* _tmp21_;
14112 ValaDataType* _tmp22_;
14113 _tmp18_ = ma;
14114 _tmp19_ = vala_member_access_get_inner (_tmp18_);
14115 _tmp20_ = _tmp19_;
14116 _tmp21_ = vala_expression_get_value_type (_tmp20_);
14117 _tmp22_ = _tmp21_;
14118 _tmp10_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp22_, VALA_TYPE_ENUM_VALUE_TYPE);
14119 }
14120 if (_tmp10_) {
14121 _tmp9_ = TRUE;
14122 } else {
14123 ValaMemberAccess* _tmp23_;
14124 ValaExpression* _tmp24_;
14125 ValaExpression* _tmp25_;
14126 ValaDataType* _tmp26_;
14127 ValaDataType* _tmp27_;
14128 ValaTypeSymbol* _tmp28_;
14129 ValaTypeSymbol* _tmp29_;
14130 _tmp23_ = ma;
14131 _tmp24_ = vala_member_access_get_inner (_tmp23_);
14132 _tmp25_ = _tmp24_;
14133 _tmp26_ = vala_expression_get_value_type (_tmp25_);
14134 _tmp27_ = _tmp26_;
14135 _tmp28_ = vala_data_type_get_type_symbol (_tmp27_);
14136 _tmp29_ = _tmp28_;
14137 _tmp9_ = !vala_get_ccode_has_type_id (_tmp29_);
14138 }
14139 if (_tmp9_) {
14140 _tmp8_ = TRUE;
14141 } else {
14142 ValaMethodType* _tmp30_;
14143 ValaMethod* _tmp31_;
14144 ValaMethod* _tmp32_;
14145 ValaMemberAccess* _tmp33_;
14146 ValaExpression* _tmp34_;
14147 ValaExpression* _tmp35_;
14148 ValaDataType* _tmp36_;
14149 ValaDataType* _tmp37_;
14150 ValaMethod* _tmp38_;
14151 _tmp30_ = mtype;
14152 _tmp31_ = vala_method_type_get_method_symbol (_tmp30_);
14153 _tmp32_ = _tmp31_;
14154 _tmp33_ = ma;
14155 _tmp34_ = vala_member_access_get_inner (_tmp33_);
14156 _tmp35_ = _tmp34_;
14157 _tmp36_ = vala_expression_get_value_type (_tmp35_);
14158 _tmp37_ = _tmp36_;
14159 _tmp38_ = vala_enum_value_type_get_to_string_method (G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, VALA_TYPE_ENUM_VALUE_TYPE, ValaEnumValueType));
14160 _tmp8_ = _tmp32_ != _tmp38_;
14161 }
14162 if (_tmp8_) {
14163 VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), expr);
14164 _vala_code_node_unref0 (mtype);
14165 _vala_code_node_unref0 (ma);
14166 return;
14167 }
14168 _tmp39_ = ma;
14169 _tmp40_ = vala_member_access_get_inner (_tmp39_);
14170 _tmp41_ = _tmp40_;
14171 _tmp42_ = vala_expression_get_value_type (_tmp41_);
14172 _tmp43_ = _tmp42_;
14173 _tmp44_ = vala_data_type_get_type_symbol ((ValaDataType*) G_TYPE_CHECK_INSTANCE_CAST (_tmp43_, VALA_TYPE_ENUM_VALUE_TYPE, ValaEnumValueType));
14174 _tmp45_ = _tmp44_;
14175 _tmp46_ = vala_enum_get_is_flags (G_TYPE_CHECK_INSTANCE_CAST (_tmp45_, VALA_TYPE_ENUM, ValaEnum));
14176 _tmp47_ = _tmp46_;
14177 is_flags = _tmp47_;
14178 _tmp48_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
14179 _tmp49_ = _tmp48_;
14180 vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp49_);
14181 _tmp50_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
14182 _tmp51_ = _tmp50_;
14183 if (vala_code_context_require_glib_version (_tmp51_, 2, 54)) {
14184 const gchar* _tmp52_ = NULL;
14185 ValaCCodeFunctionCall* to_string = NULL;
14186 ValaCCodeIdentifier* _tmp53_;
14187 ValaCCodeIdentifier* _tmp54_;
14188 ValaCCodeFunctionCall* _tmp55_;
14189 ValaCCodeFunctionCall* _tmp56_;
14190 ValaCCodeFunctionCall* _tmp57_;
14191 ValaMemberAccess* _tmp58_;
14192 ValaExpression* _tmp59_;
14193 ValaExpression* _tmp60_;
14194 ValaDataType* _tmp61_;
14195 ValaDataType* _tmp62_;
14196 gchar* _tmp63_;
14197 gchar* _tmp64_;
14198 ValaCCodeIdentifier* _tmp65_;
14199 ValaCCodeIdentifier* _tmp66_;
14200 ValaCCodeFunctionCall* _tmp67_;
14201 ValaExpression* _tmp68_;
14202 ValaExpression* _tmp69_;
14203 ValaExpression* _tmp70_;
14204 ValaExpression* _tmp71_;
14205 ValaCCodeExpression* _tmp72_;
14206 ValaCCodeExpression* _tmp73_;
14207 ValaDataType* _tmp74_;
14208 ValaDataType* _tmp75_;
14209 ValaCCodeFunctionCall* _tmp76_;
14210 if (is_flags) {
14211 _tmp52_ = "g_flags_to_string";
14212 } else {
14213 _tmp52_ = "g_enum_to_string";
14214 }
14215 _tmp53_ = vala_ccode_identifier_new (_tmp52_);
14216 _tmp54_ = _tmp53_;
14217 _tmp55_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp54_);
14218 _tmp56_ = _tmp55_;
14219 _vala_ccode_node_unref0 (_tmp54_);
14220 to_string = _tmp56_;
14221 _tmp57_ = to_string;
14222 _tmp58_ = ma;
14223 _tmp59_ = vala_member_access_get_inner (_tmp58_);
14224 _tmp60_ = _tmp59_;
14225 _tmp61_ = vala_expression_get_value_type (_tmp60_);
14226 _tmp62_ = _tmp61_;
14227 _tmp63_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp62_);
14228 _tmp64_ = _tmp63_;
14229 _tmp65_ = vala_ccode_identifier_new (_tmp64_);
14230 _tmp66_ = _tmp65_;
14231 vala_ccode_function_call_add_argument (_tmp57_, (ValaCCodeExpression*) _tmp66_);
14232 _vala_ccode_node_unref0 (_tmp66_);
14233 _g_free0 (_tmp64_);
14234 _tmp67_ = to_string;
14235 _tmp68_ = vala_method_call_get_call (expr);
14236 _tmp69_ = _tmp68_;
14237 _tmp70_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp69_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
14238 _tmp71_ = _tmp70_;
14239 _tmp72_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp71_);
14240 _tmp73_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp72_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
14241 vala_ccode_function_call_add_argument (_tmp67_, _tmp73_);
14242 _vala_ccode_node_unref0 (_tmp73_);
14243 _tmp74_ = vala_expression_get_value_type ((ValaExpression*) expr);
14244 _tmp75_ = _tmp74_;
14245 vala_data_type_set_value_owned (_tmp75_, TRUE);
14246 _tmp76_ = to_string;
14247 vala_set_cvalue ((ValaExpression*) expr, (ValaCCodeExpression*) _tmp76_);
14248 _vala_ccode_node_unref0 (to_string);
14249 } else {
14250 const gchar* _tmp77_ = NULL;
14251 ValaLocalVariable* temp_var = NULL;
14252 ValaCType* _tmp78_;
14253 ValaCType* _tmp79_;
14254 ValaLocalVariable* _tmp80_;
14255 ValaLocalVariable* _tmp81_;
14256 ValaLocalVariable* _tmp82_;
14257 ValaCCodeFunctionCall* class_ref = NULL;
14258 ValaCCodeIdentifier* _tmp83_;
14259 ValaCCodeIdentifier* _tmp84_;
14260 ValaCCodeFunctionCall* _tmp85_;
14261 ValaCCodeFunctionCall* _tmp86_;
14262 ValaCCodeFunctionCall* _tmp87_;
14263 ValaMemberAccess* _tmp88_;
14264 ValaExpression* _tmp89_;
14265 ValaExpression* _tmp90_;
14266 ValaDataType* _tmp91_;
14267 ValaDataType* _tmp92_;
14268 gchar* _tmp93_;
14269 gchar* _tmp94_;
14270 ValaCCodeIdentifier* _tmp95_;
14271 ValaCCodeIdentifier* _tmp96_;
14272 const gchar* _tmp97_ = NULL;
14273 ValaCCodeFunctionCall* get_value = NULL;
14274 ValaCCodeIdentifier* _tmp98_;
14275 ValaCCodeIdentifier* _tmp99_;
14276 ValaCCodeFunctionCall* _tmp100_;
14277 ValaCCodeFunctionCall* _tmp101_;
14278 ValaCCodeFunctionCall* _tmp102_;
14279 ValaCCodeFunctionCall* _tmp103_;
14280 ValaCCodeFunctionCall* _tmp104_;
14281 ValaExpression* _tmp105_;
14282 ValaExpression* _tmp106_;
14283 ValaExpression* _tmp107_;
14284 ValaExpression* _tmp108_;
14285 ValaCCodeExpression* _tmp109_;
14286 ValaCCodeExpression* _tmp110_;
14287 ValaCCodeFunction* _tmp111_;
14288 ValaCCodeFunction* _tmp112_;
14289 ValaLocalVariable* _tmp113_;
14290 const gchar* _tmp114_;
14291 const gchar* _tmp115_;
14292 ValaCCodeExpression* _tmp116_;
14293 ValaCCodeExpression* _tmp117_;
14294 ValaCCodeFunctionCall* _tmp118_;
14295 ValaCCodeBinaryExpression* is_null_value = NULL;
14296 ValaLocalVariable* _tmp119_;
14297 const gchar* _tmp120_;
14298 const gchar* _tmp121_;
14299 ValaCCodeExpression* _tmp122_;
14300 ValaCCodeExpression* _tmp123_;
14301 ValaCCodeConstant* _tmp124_;
14302 ValaCCodeConstant* _tmp125_;
14303 ValaCCodeBinaryExpression* _tmp126_;
14304 ValaCCodeBinaryExpression* _tmp127_;
14305 ValaCCodeBinaryExpression* _tmp128_;
14306 ValaLocalVariable* _tmp129_;
14307 const gchar* _tmp130_;
14308 const gchar* _tmp131_;
14309 ValaCCodeExpression* _tmp132_;
14310 ValaCCodeExpression* _tmp133_;
14311 ValaCCodeMemberAccess* _tmp134_;
14312 ValaCCodeMemberAccess* _tmp135_;
14313 ValaCCodeConstant* _tmp136_;
14314 ValaCCodeConstant* _tmp137_;
14315 ValaCCodeConditionalExpression* _tmp138_;
14316 ValaCCodeConditionalExpression* _tmp139_;
14317 if (is_flags) {
14318 _tmp77_ = "GFlagsValue*";
14319 } else {
14320 _tmp77_ = "GEnumValue*";
14321 }
14322 _tmp78_ = vala_ctype_new (_tmp77_, "NULL");
14323 _tmp79_ = _tmp78_;
14324 _tmp80_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, (ValaDataType*) _tmp79_, FALSE, (ValaCodeNode*) expr, FALSE);
14325 _tmp81_ = _tmp80_;
14326 _vala_code_node_unref0 (_tmp79_);
14327 temp_var = _tmp81_;
14328 _tmp82_ = temp_var;
14329 vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp82_, FALSE);
14330 _tmp83_ = vala_ccode_identifier_new ("g_type_class_ref");
14331 _tmp84_ = _tmp83_;
14332 _tmp85_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp84_);
14333 _tmp86_ = _tmp85_;
14334 _vala_ccode_node_unref0 (_tmp84_);
14335 class_ref = _tmp86_;
14336 _tmp87_ = class_ref;
14337 _tmp88_ = ma;
14338 _tmp89_ = vala_member_access_get_inner (_tmp88_);
14339 _tmp90_ = _tmp89_;
14340 _tmp91_ = vala_expression_get_value_type (_tmp90_);
14341 _tmp92_ = _tmp91_;
14342 _tmp93_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp92_);
14343 _tmp94_ = _tmp93_;
14344 _tmp95_ = vala_ccode_identifier_new (_tmp94_);
14345 _tmp96_ = _tmp95_;
14346 vala_ccode_function_call_add_argument (_tmp87_, (ValaCCodeExpression*) _tmp96_);
14347 _vala_ccode_node_unref0 (_tmp96_);
14348 _g_free0 (_tmp94_);
14349 if (is_flags) {
14350 _tmp97_ = "g_flags_get_first_value";
14351 } else {
14352 _tmp97_ = "g_enum_get_value";
14353 }
14354 _tmp98_ = vala_ccode_identifier_new (_tmp97_);
14355 _tmp99_ = _tmp98_;
14356 _tmp100_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp99_);
14357 _tmp101_ = _tmp100_;
14358 _vala_ccode_node_unref0 (_tmp99_);
14359 get_value = _tmp101_;
14360 _tmp102_ = get_value;
14361 _tmp103_ = class_ref;
14362 vala_ccode_function_call_add_argument (_tmp102_, (ValaCCodeExpression*) _tmp103_);
14363 _tmp104_ = get_value;
14364 _tmp105_ = vala_method_call_get_call (expr);
14365 _tmp106_ = _tmp105_;
14366 _tmp107_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp106_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
14367 _tmp108_ = _tmp107_;
14368 _tmp109_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp108_);
14369 _tmp110_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp109_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
14370 vala_ccode_function_call_add_argument (_tmp104_, _tmp110_);
14371 _vala_ccode_node_unref0 (_tmp110_);
14372 _tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
14373 _tmp112_ = _tmp111_;
14374 _tmp113_ = temp_var;
14375 _tmp114_ = vala_symbol_get_name ((ValaSymbol*) _tmp113_);
14376 _tmp115_ = _tmp114_;
14377 _tmp116_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp115_);
14378 _tmp117_ = _tmp116_;
14379 _tmp118_ = get_value;
14380 vala_ccode_function_add_assignment (_tmp112_, _tmp117_, (ValaCCodeExpression*) _tmp118_);
14381 _vala_ccode_node_unref0 (_tmp117_);
14382 _tmp119_ = temp_var;
14383 _tmp120_ = vala_symbol_get_name ((ValaSymbol*) _tmp119_);
14384 _tmp121_ = _tmp120_;
14385 _tmp122_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp121_);
14386 _tmp123_ = _tmp122_;
14387 _tmp124_ = vala_ccode_constant_new ("NULL");
14388 _tmp125_ = _tmp124_;
14389 _tmp126_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp123_, (ValaCCodeExpression*) _tmp125_);
14390 _tmp127_ = _tmp126_;
14391 _vala_ccode_node_unref0 (_tmp125_);
14392 _vala_ccode_node_unref0 (_tmp123_);
14393 is_null_value = _tmp127_;
14394 _tmp128_ = is_null_value;
14395 _tmp129_ = temp_var;
14396 _tmp130_ = vala_symbol_get_name ((ValaSymbol*) _tmp129_);
14397 _tmp131_ = _tmp130_;
14398 _tmp132_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp131_);
14399 _tmp133_ = _tmp132_;
14400 _tmp134_ = vala_ccode_member_access_new_pointer (_tmp133_, "value_name");
14401 _tmp135_ = _tmp134_;
14402 _tmp136_ = vala_ccode_constant_new ("NULL");
14403 _tmp137_ = _tmp136_;
14404 _tmp138_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp128_, (ValaCCodeExpression*) _tmp135_, (ValaCCodeExpression*) _tmp137_);
14405 _tmp139_ = _tmp138_;
14406 vala_set_cvalue ((ValaExpression*) expr, (ValaCCodeExpression*) _tmp139_);
14407 _vala_ccode_node_unref0 (_tmp139_);
14408 _vala_ccode_node_unref0 (_tmp137_);
14409 _vala_ccode_node_unref0 (_tmp135_);
14410 _vala_ccode_node_unref0 (_tmp133_);
14411 _vala_ccode_node_unref0 (is_null_value);
14412 _vala_ccode_node_unref0 (get_value);
14413 _vala_ccode_node_unref0 (class_ref);
14414 _vala_code_node_unref0 (temp_var);
14415 }
14416 vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
14417 _vala_code_node_unref0 (mtype);
14418 _vala_code_node_unref0 (ma);
14419 }
14420
14421 static void
vala_gtype_module_real_visit_property(ValaCodeVisitor * base,ValaProperty * prop)14422 vala_gtype_module_real_visit_property (ValaCodeVisitor* base,
14423 ValaProperty* prop)
14424 {
14425 ValaGTypeModule * self;
14426 ValaClass* cl = NULL;
14427 ValaTypeSymbol* _tmp0_;
14428 ValaTypeSymbol* _tmp1_;
14429 ValaClass* _tmp2_;
14430 ValaStruct* st = NULL;
14431 ValaTypeSymbol* _tmp3_;
14432 ValaTypeSymbol* _tmp4_;
14433 ValaStruct* _tmp5_;
14434 ValaProperty* base_prop = NULL;
14435 ValaProperty* _tmp6_;
14436 ValaProperty* _tmp7_;
14437 ValaProperty* _tmp8_;
14438 gboolean _tmp17_ = FALSE;
14439 gboolean _tmp18_ = FALSE;
14440 ValaClass* _tmp19_;
14441 gboolean _tmp32_ = FALSE;
14442 gboolean _tmp33_ = FALSE;
14443 ValaProperty* _tmp34_;
14444 ValaAttribute* _tmp35_;
14445 self = (ValaGTypeModule*) base;
14446 g_return_if_fail (prop != NULL);
14447 _tmp0_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
14448 _tmp1_ = _tmp0_;
14449 _tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp1_) : NULL);
14450 cl = _tmp2_;
14451 _tmp3_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
14452 _tmp4_ = _tmp3_;
14453 _tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp4_) : NULL);
14454 st = _tmp5_;
14455 _tmp6_ = _vala_code_node_ref0 (prop);
14456 base_prop = _tmp6_;
14457 _tmp7_ = vala_property_get_base_property (prop);
14458 _tmp8_ = _tmp7_;
14459 if (_tmp8_ != NULL) {
14460 ValaProperty* _tmp9_;
14461 ValaProperty* _tmp10_;
14462 ValaProperty* _tmp11_;
14463 _tmp9_ = vala_property_get_base_property (prop);
14464 _tmp10_ = _tmp9_;
14465 _tmp11_ = _vala_code_node_ref0 (_tmp10_);
14466 _vala_code_node_unref0 (base_prop);
14467 base_prop = _tmp11_;
14468 } else {
14469 ValaProperty* _tmp12_;
14470 ValaProperty* _tmp13_;
14471 _tmp12_ = vala_property_get_base_interface_property (prop);
14472 _tmp13_ = _tmp12_;
14473 if (_tmp13_ != NULL) {
14474 ValaProperty* _tmp14_;
14475 ValaProperty* _tmp15_;
14476 ValaProperty* _tmp16_;
14477 _tmp14_ = vala_property_get_base_interface_property (prop);
14478 _tmp15_ = _tmp14_;
14479 _tmp16_ = _vala_code_node_ref0 (_tmp15_);
14480 _vala_code_node_unref0 (base_prop);
14481 base_prop = _tmp16_;
14482 }
14483 }
14484 _tmp19_ = cl;
14485 if (_tmp19_ != NULL) {
14486 ValaClass* _tmp20_;
14487 gboolean _tmp21_;
14488 gboolean _tmp22_;
14489 _tmp20_ = cl;
14490 _tmp21_ = vala_class_get_is_compact (_tmp20_);
14491 _tmp22_ = _tmp21_;
14492 _tmp18_ = _tmp22_;
14493 } else {
14494 _tmp18_ = FALSE;
14495 }
14496 if (_tmp18_) {
14497 gboolean _tmp23_ = FALSE;
14498 ValaPropertyAccessor* _tmp24_;
14499 ValaPropertyAccessor* _tmp25_;
14500 _tmp24_ = vala_property_get_get_accessor (prop);
14501 _tmp25_ = _tmp24_;
14502 if (_tmp25_ == NULL) {
14503 _tmp23_ = TRUE;
14504 } else {
14505 ValaPropertyAccessor* _tmp26_;
14506 ValaPropertyAccessor* _tmp27_;
14507 gboolean _tmp28_;
14508 gboolean _tmp29_;
14509 _tmp26_ = vala_property_get_get_accessor (prop);
14510 _tmp27_ = _tmp26_;
14511 _tmp28_ = vala_property_accessor_get_automatic_body (_tmp27_);
14512 _tmp29_ = _tmp28_;
14513 _tmp23_ = _tmp29_;
14514 }
14515 _tmp17_ = _tmp23_;
14516 } else {
14517 _tmp17_ = FALSE;
14518 }
14519 if (_tmp17_) {
14520 ValaSourceReference* _tmp30_;
14521 ValaSourceReference* _tmp31_;
14522 _tmp30_ = vala_code_node_get_source_reference ((ValaCodeNode*) prop);
14523 _tmp31_ = _tmp30_;
14524 vala_report_error (_tmp31_, "Properties without accessor bodies are not supported in compact classe" \
14525 "s");
14526 _vala_code_node_unref0 (base_prop);
14527 _vala_code_node_unref0 (st);
14528 _vala_code_node_unref0 (cl);
14529 return;
14530 }
14531 _tmp34_ = base_prop;
14532 _tmp35_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp34_, "NoAccessorMethod");
14533 if (_tmp35_ == NULL) {
14534 const gchar* _tmp36_;
14535 const gchar* _tmp37_;
14536 _tmp36_ = vala_symbol_get_name ((ValaSymbol*) prop);
14537 _tmp37_ = _tmp36_;
14538 _tmp33_ = g_strcmp0 (_tmp37_, "type") == 0;
14539 } else {
14540 _tmp33_ = FALSE;
14541 }
14542 if (_tmp33_) {
14543 gboolean _tmp38_ = FALSE;
14544 gboolean _tmp39_ = FALSE;
14545 ValaClass* _tmp40_;
14546 _tmp40_ = cl;
14547 if (_tmp40_ != NULL) {
14548 ValaClass* _tmp41_;
14549 gboolean _tmp42_;
14550 gboolean _tmp43_;
14551 _tmp41_ = cl;
14552 _tmp42_ = vala_class_get_is_compact (_tmp41_);
14553 _tmp43_ = _tmp42_;
14554 _tmp39_ = !_tmp43_;
14555 } else {
14556 _tmp39_ = FALSE;
14557 }
14558 if (_tmp39_) {
14559 _tmp38_ = TRUE;
14560 } else {
14561 gboolean _tmp44_ = FALSE;
14562 ValaStruct* _tmp45_;
14563 _tmp45_ = st;
14564 if (_tmp45_ != NULL) {
14565 ValaStruct* _tmp46_;
14566 _tmp46_ = st;
14567 _tmp44_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp46_);
14568 } else {
14569 _tmp44_ = FALSE;
14570 }
14571 _tmp38_ = _tmp44_;
14572 }
14573 _tmp32_ = _tmp38_;
14574 } else {
14575 _tmp32_ = FALSE;
14576 }
14577 if (_tmp32_) {
14578 ValaSourceReference* _tmp47_;
14579 ValaSourceReference* _tmp48_;
14580 _tmp47_ = vala_code_node_get_source_reference ((ValaCodeNode*) prop);
14581 _tmp48_ = _tmp47_;
14582 vala_report_error (_tmp48_, "Property 'type' not allowed");
14583 _vala_code_node_unref0 (base_prop);
14584 _vala_code_node_unref0 (st);
14585 _vala_code_node_unref0 (cl);
14586 return;
14587 }
14588 VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_property ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), prop);
14589 _vala_code_node_unref0 (base_prop);
14590 _vala_code_node_unref0 (st);
14591 _vala_code_node_unref0 (cl);
14592 }
14593
14594 static void
vala_gtype_module_real_create_type_check_statement(ValaCCodeBaseModule * base,ValaCodeNode * method_node,ValaDataType * ret_type,ValaTypeSymbol * t,gboolean non_null,const gchar * var_name)14595 vala_gtype_module_real_create_type_check_statement (ValaCCodeBaseModule* base,
14596 ValaCodeNode* method_node,
14597 ValaDataType* ret_type,
14598 ValaTypeSymbol* t,
14599 gboolean non_null,
14600 const gchar* var_name)
14601 {
14602 ValaGTypeModule * self;
14603 ValaCCodeFunctionCall* ccheck = NULL;
14604 ValaCCodeFunctionCall* _tmp0_;
14605 ValaCodeContext* _tmp1_;
14606 ValaCodeContext* _tmp2_;
14607 gboolean _tmp3_;
14608 gboolean _tmp4_;
14609 ValaCCodeFile* _tmp61_;
14610 ValaCreationMethod* cm = NULL;
14611 ValaCreationMethod* _tmp62_;
14612 gboolean _tmp63_ = FALSE;
14613 ValaCreationMethod* _tmp64_;
14614 ValaCCodeFunction* _tmp92_;
14615 ValaCCodeFunction* _tmp93_;
14616 ValaCCodeFunctionCall* _tmp94_;
14617 self = (ValaGTypeModule*) base;
14618 g_return_if_fail (method_node != NULL);
14619 g_return_if_fail (ret_type != NULL);
14620 g_return_if_fail (t != NULL);
14621 g_return_if_fail (var_name != NULL);
14622 _tmp0_ = vala_ccode_function_call_new (NULL);
14623 ccheck = _tmp0_;
14624 _tmp1_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
14625 _tmp2_ = _tmp1_;
14626 _tmp3_ = vala_code_context_get_assert (_tmp2_);
14627 _tmp4_ = _tmp3_;
14628 if (!_tmp4_) {
14629 _vala_ccode_node_unref0 (ccheck);
14630 return;
14631 } else {
14632 gboolean _tmp5_ = FALSE;
14633 ValaCodeContext* _tmp6_;
14634 ValaCodeContext* _tmp7_;
14635 gboolean _tmp8_;
14636 gboolean _tmp9_;
14637 _tmp6_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
14638 _tmp7_ = _tmp6_;
14639 _tmp8_ = vala_code_context_get_checking (_tmp7_);
14640 _tmp9_ = _tmp8_;
14641 if (_tmp9_) {
14642 gboolean _tmp10_ = FALSE;
14643 gboolean _tmp11_ = FALSE;
14644 if (G_TYPE_CHECK_INSTANCE_TYPE (t, VALA_TYPE_CLASS)) {
14645 gboolean _tmp12_;
14646 gboolean _tmp13_;
14647 _tmp12_ = vala_class_get_is_compact (G_TYPE_CHECK_INSTANCE_CAST (t, VALA_TYPE_CLASS, ValaClass));
14648 _tmp13_ = _tmp12_;
14649 _tmp11_ = !_tmp13_;
14650 } else {
14651 _tmp11_ = FALSE;
14652 }
14653 if (_tmp11_) {
14654 _tmp10_ = TRUE;
14655 } else {
14656 _tmp10_ = G_TYPE_CHECK_INSTANCE_TYPE (t, VALA_TYPE_INTERFACE);
14657 }
14658 _tmp5_ = _tmp10_;
14659 } else {
14660 _tmp5_ = FALSE;
14661 }
14662 if (_tmp5_) {
14663 ValaCCodeFunctionCall* ctype_check = NULL;
14664 gboolean _tmp14_;
14665 gboolean _tmp15_;
14666 ValaCCodeExpression* cexpr = NULL;
14667 ValaCCodeFunctionCall* _tmp35_;
14668 ValaCCodeExpression* _tmp36_;
14669 ValaCCodeFunctionCall* _tmp46_;
14670 ValaCCodeExpression* _tmp47_;
14671 if (!vala_get_ccode_has_type_id (t)) {
14672 _vala_ccode_node_unref0 (ccheck);
14673 return;
14674 }
14675 _tmp14_ = vala_symbol_get_external_package ((ValaSymbol*) t);
14676 _tmp15_ = _tmp14_;
14677 if (_tmp15_) {
14678 ValaCCodeIdentifier* _tmp16_;
14679 ValaCCodeIdentifier* _tmp17_;
14680 ValaCCodeFunctionCall* _tmp18_;
14681 ValaCCodeFunctionCall* _tmp19_;
14682 ValaCCodeIdentifier* _tmp20_;
14683 ValaCCodeIdentifier* _tmp21_;
14684 ValaCCodeFunctionCall* _tmp22_;
14685 gchar* _tmp23_;
14686 gchar* _tmp24_;
14687 ValaCCodeIdentifier* _tmp25_;
14688 ValaCCodeIdentifier* _tmp26_;
14689 _tmp16_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
14690 _tmp17_ = _tmp16_;
14691 _tmp18_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp17_);
14692 _vala_ccode_node_unref0 (ctype_check);
14693 ctype_check = _tmp18_;
14694 _vala_ccode_node_unref0 (_tmp17_);
14695 _tmp19_ = ctype_check;
14696 _tmp20_ = vala_ccode_identifier_new (var_name);
14697 _tmp21_ = _tmp20_;
14698 vala_ccode_function_call_add_argument (_tmp19_, (ValaCCodeExpression*) _tmp21_);
14699 _vala_ccode_node_unref0 (_tmp21_);
14700 _tmp22_ = ctype_check;
14701 _tmp23_ = vala_get_ccode_type_id ((ValaCodeNode*) t);
14702 _tmp24_ = _tmp23_;
14703 _tmp25_ = vala_ccode_identifier_new (_tmp24_);
14704 _tmp26_ = _tmp25_;
14705 vala_ccode_function_call_add_argument (_tmp22_, (ValaCCodeExpression*) _tmp26_);
14706 _vala_ccode_node_unref0 (_tmp26_);
14707 _g_free0 (_tmp24_);
14708 } else {
14709 gchar* _tmp27_;
14710 gchar* _tmp28_;
14711 ValaCCodeIdentifier* _tmp29_;
14712 ValaCCodeIdentifier* _tmp30_;
14713 ValaCCodeFunctionCall* _tmp31_;
14714 ValaCCodeFunctionCall* _tmp32_;
14715 ValaCCodeIdentifier* _tmp33_;
14716 ValaCCodeIdentifier* _tmp34_;
14717 _tmp27_ = vala_get_ccode_type_check_function (t);
14718 _tmp28_ = _tmp27_;
14719 _tmp29_ = vala_ccode_identifier_new (_tmp28_);
14720 _tmp30_ = _tmp29_;
14721 _tmp31_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp30_);
14722 _vala_ccode_node_unref0 (ctype_check);
14723 ctype_check = _tmp31_;
14724 _vala_ccode_node_unref0 (_tmp30_);
14725 _g_free0 (_tmp28_);
14726 _tmp32_ = ctype_check;
14727 _tmp33_ = vala_ccode_identifier_new (var_name);
14728 _tmp34_ = _tmp33_;
14729 vala_ccode_function_call_add_argument (_tmp32_, (ValaCCodeExpression*) _tmp34_);
14730 _vala_ccode_node_unref0 (_tmp34_);
14731 }
14732 _tmp35_ = ctype_check;
14733 _tmp36_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp35_);
14734 cexpr = _tmp36_;
14735 if (!non_null) {
14736 ValaCCodeBinaryExpression* cnull = NULL;
14737 ValaCCodeIdentifier* _tmp37_;
14738 ValaCCodeIdentifier* _tmp38_;
14739 ValaCCodeConstant* _tmp39_;
14740 ValaCCodeConstant* _tmp40_;
14741 ValaCCodeBinaryExpression* _tmp41_;
14742 ValaCCodeBinaryExpression* _tmp42_;
14743 ValaCCodeBinaryExpression* _tmp43_;
14744 ValaCCodeFunctionCall* _tmp44_;
14745 ValaCCodeBinaryExpression* _tmp45_;
14746 _tmp37_ = vala_ccode_identifier_new (var_name);
14747 _tmp38_ = _tmp37_;
14748 _tmp39_ = vala_ccode_constant_new ("NULL");
14749 _tmp40_ = _tmp39_;
14750 _tmp41_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp38_, (ValaCCodeExpression*) _tmp40_);
14751 _tmp42_ = _tmp41_;
14752 _vala_ccode_node_unref0 (_tmp40_);
14753 _vala_ccode_node_unref0 (_tmp38_);
14754 cnull = _tmp42_;
14755 _tmp43_ = cnull;
14756 _tmp44_ = ctype_check;
14757 _tmp45_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_OR, (ValaCCodeExpression*) _tmp43_, (ValaCCodeExpression*) _tmp44_);
14758 _vala_ccode_node_unref0 (cexpr);
14759 cexpr = (ValaCCodeExpression*) _tmp45_;
14760 _vala_ccode_node_unref0 (cnull);
14761 }
14762 _tmp46_ = ccheck;
14763 _tmp47_ = cexpr;
14764 vala_ccode_function_call_add_argument (_tmp46_, _tmp47_);
14765 _vala_ccode_node_unref0 (cexpr);
14766 _vala_ccode_node_unref0 (ctype_check);
14767 } else {
14768 gboolean _tmp48_ = FALSE;
14769 if (!non_null) {
14770 _tmp48_ = TRUE;
14771 } else {
14772 gboolean _tmp49_ = FALSE;
14773 if (G_TYPE_CHECK_INSTANCE_TYPE (t, VALA_TYPE_STRUCT)) {
14774 _tmp49_ = vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (t, VALA_TYPE_STRUCT, ValaStruct));
14775 } else {
14776 _tmp49_ = FALSE;
14777 }
14778 _tmp48_ = _tmp49_;
14779 }
14780 if (_tmp48_) {
14781 _vala_ccode_node_unref0 (ccheck);
14782 return;
14783 } else {
14784 gboolean _tmp50_ = FALSE;
14785 ValaClass* _tmp51_;
14786 _tmp51_ = ((ValaCCodeBaseModule*) self)->glist_type;
14787 if (t == G_TYPE_CHECK_INSTANCE_CAST (_tmp51_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
14788 _tmp50_ = TRUE;
14789 } else {
14790 ValaClass* _tmp52_;
14791 _tmp52_ = ((ValaCCodeBaseModule*) self)->gslist_type;
14792 _tmp50_ = t == G_TYPE_CHECK_INSTANCE_CAST (_tmp52_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
14793 }
14794 if (_tmp50_) {
14795 _vala_ccode_node_unref0 (ccheck);
14796 return;
14797 } else {
14798 ValaCCodeBinaryExpression* cnonnull = NULL;
14799 ValaCCodeIdentifier* _tmp53_;
14800 ValaCCodeIdentifier* _tmp54_;
14801 ValaCCodeConstant* _tmp55_;
14802 ValaCCodeConstant* _tmp56_;
14803 ValaCCodeBinaryExpression* _tmp57_;
14804 ValaCCodeBinaryExpression* _tmp58_;
14805 ValaCCodeFunctionCall* _tmp59_;
14806 ValaCCodeBinaryExpression* _tmp60_;
14807 _tmp53_ = vala_ccode_identifier_new (var_name);
14808 _tmp54_ = _tmp53_;
14809 _tmp55_ = vala_ccode_constant_new ("NULL");
14810 _tmp56_ = _tmp55_;
14811 _tmp57_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, (ValaCCodeExpression*) _tmp54_, (ValaCCodeExpression*) _tmp56_);
14812 _tmp58_ = _tmp57_;
14813 _vala_ccode_node_unref0 (_tmp56_);
14814 _vala_ccode_node_unref0 (_tmp54_);
14815 cnonnull = _tmp58_;
14816 _tmp59_ = ccheck;
14817 _tmp60_ = cnonnull;
14818 vala_ccode_function_call_add_argument (_tmp59_, (ValaCCodeExpression*) _tmp60_);
14819 _vala_ccode_node_unref0 (cnonnull);
14820 }
14821 }
14822 }
14823 }
14824 _tmp61_ = ((ValaCCodeBaseModule*) self)->cfile;
14825 vala_ccode_file_add_include (_tmp61_, "glib.h", FALSE);
14826 _tmp62_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (method_node, VALA_TYPE_CREATION_METHOD) ? ((ValaCreationMethod*) method_node) : NULL);
14827 cm = _tmp62_;
14828 _tmp64_ = cm;
14829 if (_tmp64_ != NULL) {
14830 ValaCreationMethod* _tmp65_;
14831 ValaSymbol* _tmp66_;
14832 ValaSymbol* _tmp67_;
14833 _tmp65_ = cm;
14834 _tmp66_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp65_);
14835 _tmp67_ = _tmp66_;
14836 _tmp63_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp67_, VALA_TYPE_OBJECT_TYPE_SYMBOL);
14837 } else {
14838 _tmp63_ = FALSE;
14839 }
14840 if (_tmp63_) {
14841 ValaCCodeFunctionCall* _tmp68_;
14842 ValaCCodeIdentifier* _tmp69_;
14843 ValaCCodeIdentifier* _tmp70_;
14844 ValaCCodeFunctionCall* _tmp71_;
14845 ValaCCodeConstant* _tmp72_;
14846 ValaCCodeConstant* _tmp73_;
14847 _tmp68_ = ccheck;
14848 _tmp69_ = vala_ccode_identifier_new ("g_return_val_if_fail");
14849 _tmp70_ = _tmp69_;
14850 vala_ccode_function_call_set_call (_tmp68_, (ValaCCodeExpression*) _tmp70_);
14851 _vala_ccode_node_unref0 (_tmp70_);
14852 _tmp71_ = ccheck;
14853 _tmp72_ = vala_ccode_constant_new ("NULL");
14854 _tmp73_ = _tmp72_;
14855 vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
14856 _vala_ccode_node_unref0 (_tmp73_);
14857 } else {
14858 if (G_TYPE_CHECK_INSTANCE_TYPE (ret_type, VALA_TYPE_VOID_TYPE)) {
14859 ValaCCodeFunctionCall* _tmp74_;
14860 ValaCCodeIdentifier* _tmp75_;
14861 ValaCCodeIdentifier* _tmp76_;
14862 _tmp74_ = ccheck;
14863 _tmp75_ = vala_ccode_identifier_new ("g_return_if_fail");
14864 _tmp76_ = _tmp75_;
14865 vala_ccode_function_call_set_call (_tmp74_, (ValaCCodeExpression*) _tmp76_);
14866 _vala_ccode_node_unref0 (_tmp76_);
14867 } else {
14868 ValaCCodeFunctionCall* _tmp77_;
14869 ValaCCodeIdentifier* _tmp78_;
14870 ValaCCodeIdentifier* _tmp79_;
14871 ValaCCodeExpression* cdefault = NULL;
14872 ValaCCodeExpression* _tmp80_;
14873 ValaCCodeExpression* _tmp81_;
14874 _tmp77_ = ccheck;
14875 _tmp78_ = vala_ccode_identifier_new ("g_return_val_if_fail");
14876 _tmp79_ = _tmp78_;
14877 vala_ccode_function_call_set_call (_tmp77_, (ValaCCodeExpression*) _tmp79_);
14878 _vala_ccode_node_unref0 (_tmp79_);
14879 _tmp80_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, ret_type, FALSE, FALSE);
14880 cdefault = _tmp80_;
14881 _tmp81_ = cdefault;
14882 if (_tmp81_ != NULL) {
14883 ValaCCodeFunctionCall* _tmp82_;
14884 ValaCCodeExpression* _tmp83_;
14885 _tmp82_ = ccheck;
14886 _tmp83_ = cdefault;
14887 vala_ccode_function_call_add_argument (_tmp82_, _tmp83_);
14888 } else {
14889 gboolean _tmp84_ = FALSE;
14890 ValaTypeSymbol* _tmp85_;
14891 ValaTypeSymbol* _tmp86_;
14892 _tmp85_ = vala_data_type_get_type_symbol (ret_type);
14893 _tmp86_ = _tmp85_;
14894 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp86_, VALA_TYPE_STRUCT)) {
14895 ValaTypeSymbol* _tmp87_;
14896 ValaTypeSymbol* _tmp88_;
14897 _tmp87_ = vala_data_type_get_type_symbol (ret_type);
14898 _tmp88_ = _tmp87_;
14899 _tmp84_ = !vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp88_, VALA_TYPE_STRUCT, ValaStruct));
14900 } else {
14901 _tmp84_ = FALSE;
14902 }
14903 if (_tmp84_) {
14904 ValaCCodeFunctionCall* _tmp89_;
14905 ValaCCodeIdentifier* _tmp90_;
14906 ValaCCodeIdentifier* _tmp91_;
14907 _tmp89_ = ccheck;
14908 _tmp90_ = vala_ccode_identifier_new ("result");
14909 _tmp91_ = _tmp90_;
14910 vala_ccode_function_call_add_argument (_tmp89_, (ValaCCodeExpression*) _tmp91_);
14911 _vala_ccode_node_unref0 (_tmp91_);
14912 } else {
14913 _vala_ccode_node_unref0 (cdefault);
14914 _vala_code_node_unref0 (cm);
14915 _vala_ccode_node_unref0 (ccheck);
14916 return;
14917 }
14918 }
14919 _vala_ccode_node_unref0 (cdefault);
14920 }
14921 }
14922 _tmp92_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
14923 _tmp93_ = _tmp92_;
14924 _tmp94_ = ccheck;
14925 vala_ccode_function_add_expression (_tmp93_, (ValaCCodeExpression*) _tmp94_);
14926 _vala_code_node_unref0 (cm);
14927 _vala_ccode_node_unref0 (ccheck);
14928 }
14929
14930 static gpointer
_vala_target_value_ref0(gpointer self)14931 _vala_target_value_ref0 (gpointer self)
14932 {
14933 return self ? vala_target_value_ref (self) : NULL;
14934 }
14935
14936 static void
vala_gtype_module_real_visit_cast_expression(ValaCodeVisitor * base,ValaCastExpression * expr)14937 vala_gtype_module_real_visit_cast_expression (ValaCodeVisitor* base,
14938 ValaCastExpression* expr)
14939 {
14940 ValaGTypeModule * self;
14941 ValaObjectTypeSymbol* type_symbol = NULL;
14942 ValaDataType* _tmp0_;
14943 ValaDataType* _tmp1_;
14944 ValaTypeSymbol* _tmp2_;
14945 ValaTypeSymbol* _tmp3_;
14946 gboolean _tmp4_ = FALSE;
14947 ValaObjectTypeSymbol* _tmp5_;
14948 ValaDataType* _tmp11_;
14949 ValaDataType* _tmp12_;
14950 ValaCCodeFile* _tmp13_;
14951 gboolean _tmp14_;
14952 gboolean _tmp15_;
14953 self = (ValaGTypeModule*) base;
14954 g_return_if_fail (expr != NULL);
14955 _tmp0_ = vala_cast_expression_get_type_reference (expr);
14956 _tmp1_ = _tmp0_;
14957 _tmp2_ = vala_data_type_get_type_symbol (_tmp1_);
14958 _tmp3_ = _tmp2_;
14959 type_symbol = G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_OBJECT_TYPE_SYMBOL) ? ((ValaObjectTypeSymbol*) _tmp3_) : NULL;
14960 _tmp5_ = type_symbol;
14961 if (_tmp5_ == NULL) {
14962 _tmp4_ = TRUE;
14963 } else {
14964 gboolean _tmp6_ = FALSE;
14965 ValaObjectTypeSymbol* _tmp7_;
14966 _tmp7_ = type_symbol;
14967 if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_CLASS)) {
14968 ValaObjectTypeSymbol* _tmp8_;
14969 gboolean _tmp9_;
14970 gboolean _tmp10_;
14971 _tmp8_ = type_symbol;
14972 _tmp9_ = vala_class_get_is_compact (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_CLASS, ValaClass));
14973 _tmp10_ = _tmp9_;
14974 _tmp6_ = _tmp10_;
14975 } else {
14976 _tmp6_ = FALSE;
14977 }
14978 _tmp4_ = _tmp6_;
14979 }
14980 if (_tmp4_) {
14981 VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_cast_expression ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), expr);
14982 return;
14983 }
14984 _tmp11_ = vala_cast_expression_get_type_reference (expr);
14985 _tmp12_ = _tmp11_;
14986 _tmp13_ = ((ValaCCodeBaseModule*) self)->cfile;
14987 vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp12_, _tmp13_);
14988 _tmp14_ = vala_cast_expression_get_is_silent_cast (expr);
14989 _tmp15_ = _tmp14_;
14990 if (_tmp15_) {
14991 ValaTargetValue* to_cast = NULL;
14992 ValaExpression* _tmp16_;
14993 ValaExpression* _tmp17_;
14994 ValaTargetValue* _tmp18_;
14995 ValaTargetValue* _tmp19_;
14996 ValaTargetValue* _tmp20_;
14997 ValaCCodeExpression* cexpr = NULL;
14998 ValaTargetValue* _tmp21_;
14999 ValaTargetValue* _tmp24_;
15000 ValaCCodeExpression* _tmp25_;
15001 ValaCCodeExpression* _tmp26_;
15002 ValaCCodeExpression* ccheck = NULL;
15003 ValaCCodeExpression* _tmp27_;
15004 ValaDataType* _tmp28_;
15005 ValaDataType* _tmp29_;
15006 ValaCCodeExpression* _tmp30_;
15007 ValaCCodeCastExpression* ccast = NULL;
15008 ValaCCodeExpression* _tmp31_;
15009 ValaDataType* _tmp32_;
15010 ValaDataType* _tmp33_;
15011 gchar* _tmp34_;
15012 gchar* _tmp35_;
15013 ValaCCodeCastExpression* _tmp36_;
15014 ValaCCodeCastExpression* _tmp37_;
15015 ValaCCodeConstant* cnull = NULL;
15016 ValaCCodeConstant* _tmp38_;
15017 ValaGLibValue* cast_value = NULL;
15018 ValaDataType* _tmp39_;
15019 ValaDataType* _tmp40_;
15020 ValaCCodeExpression* _tmp41_;
15021 ValaCCodeCastExpression* _tmp42_;
15022 ValaCCodeConstant* _tmp43_;
15023 ValaCCodeConditionalExpression* _tmp44_;
15024 ValaCCodeConditionalExpression* _tmp45_;
15025 ValaGLibValue* _tmp46_;
15026 ValaGLibValue* _tmp47_;
15027 ValaExpression* _tmp48_;
15028 ValaExpression* _tmp49_;
15029 ValaDataType* _tmp50_;
15030 ValaDataType* _tmp51_;
15031 _tmp16_ = vala_cast_expression_get_inner (expr);
15032 _tmp17_ = _tmp16_;
15033 _tmp18_ = vala_expression_get_target_value (_tmp17_);
15034 _tmp19_ = _tmp18_;
15035 _tmp20_ = _vala_target_value_ref0 (_tmp19_);
15036 to_cast = _tmp20_;
15037 _tmp21_ = to_cast;
15038 if (!vala_get_lvalue (_tmp21_)) {
15039 ValaTargetValue* _tmp22_;
15040 ValaTargetValue* _tmp23_;
15041 _tmp22_ = to_cast;
15042 _tmp23_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, _tmp22_, (ValaCodeNode*) expr, NULL);
15043 _vala_target_value_unref0 (to_cast);
15044 to_cast = _tmp23_;
15045 }
15046 _tmp24_ = to_cast;
15047 _tmp25_ = vala_get_cvalue_ (_tmp24_);
15048 _tmp26_ = _vala_ccode_node_ref0 (_tmp25_);
15049 _vala_ccode_node_unref0 (cexpr);
15050 cexpr = _tmp26_;
15051 _tmp27_ = cexpr;
15052 _tmp28_ = vala_cast_expression_get_type_reference (expr);
15053 _tmp29_ = _tmp28_;
15054 _tmp30_ = vala_ccode_base_module_create_type_check ((ValaCCodeBaseModule*) self, (ValaCCodeNode*) _tmp27_, _tmp29_);
15055 ccheck = _tmp30_;
15056 _tmp31_ = cexpr;
15057 _tmp32_ = vala_cast_expression_get_type_reference (expr);
15058 _tmp33_ = _tmp32_;
15059 _tmp34_ = vala_get_ccode_name ((ValaCodeNode*) _tmp33_);
15060 _tmp35_ = _tmp34_;
15061 _tmp36_ = vala_ccode_cast_expression_new (_tmp31_, _tmp35_);
15062 _tmp37_ = _tmp36_;
15063 _g_free0 (_tmp35_);
15064 ccast = _tmp37_;
15065 _tmp38_ = vala_ccode_constant_new ("NULL");
15066 cnull = _tmp38_;
15067 _tmp39_ = vala_expression_get_value_type ((ValaExpression*) expr);
15068 _tmp40_ = _tmp39_;
15069 _tmp41_ = ccheck;
15070 _tmp42_ = ccast;
15071 _tmp43_ = cnull;
15072 _tmp44_ = vala_ccode_conditional_expression_new (_tmp41_, (ValaCCodeExpression*) _tmp42_, (ValaCCodeExpression*) _tmp43_);
15073 _tmp45_ = _tmp44_;
15074 _tmp46_ = vala_glib_value_new (_tmp40_, (ValaCCodeExpression*) _tmp45_, FALSE);
15075 _tmp47_ = _tmp46_;
15076 _vala_ccode_node_unref0 (_tmp45_);
15077 cast_value = _tmp47_;
15078 _tmp48_ = vala_cast_expression_get_inner (expr);
15079 _tmp49_ = _tmp48_;
15080 _tmp50_ = vala_expression_get_value_type (_tmp49_);
15081 _tmp51_ = _tmp50_;
15082 if (vala_ccode_base_module_requires_destroy (_tmp51_)) {
15083 ValaTargetValue* casted = NULL;
15084 ValaGLibValue* _tmp52_;
15085 ValaTargetValue* _tmp53_;
15086 ValaCCodeFunction* _tmp54_;
15087 ValaCCodeFunction* _tmp55_;
15088 ValaTargetValue* _tmp56_;
15089 ValaCCodeExpression* _tmp57_;
15090 ValaCCodeConstant* _tmp58_;
15091 ValaCCodeConstant* _tmp59_;
15092 ValaCCodeBinaryExpression* _tmp60_;
15093 ValaCCodeBinaryExpression* _tmp61_;
15094 ValaCCodeFunction* _tmp62_;
15095 ValaCCodeFunction* _tmp63_;
15096 ValaTargetValue* _tmp64_;
15097 ValaCCodeExpression* _tmp65_;
15098 ValaCCodeExpression* _tmp66_;
15099 ValaCCodeFunction* _tmp67_;
15100 ValaCCodeFunction* _tmp68_;
15101 ValaTargetValue* _tmp69_;
15102 ValaGLibValue* _tmp70_;
15103 ValaGLibValue* _tmp71_;
15104 _tmp52_ = cast_value;
15105 _tmp53_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp52_, (ValaCodeNode*) expr, NULL);
15106 casted = _tmp53_;
15107 _tmp54_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
15108 _tmp55_ = _tmp54_;
15109 _tmp56_ = casted;
15110 _tmp57_ = vala_get_cvalue_ (_tmp56_);
15111 _tmp58_ = vala_ccode_constant_new ("NULL");
15112 _tmp59_ = _tmp58_;
15113 _tmp60_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, _tmp57_, (ValaCCodeExpression*) _tmp59_);
15114 _tmp61_ = _tmp60_;
15115 vala_ccode_function_open_if (_tmp55_, (ValaCCodeExpression*) _tmp61_);
15116 _vala_ccode_node_unref0 (_tmp61_);
15117 _vala_ccode_node_unref0 (_tmp59_);
15118 _tmp62_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
15119 _tmp63_ = _tmp62_;
15120 _tmp64_ = to_cast;
15121 _tmp65_ = vala_ccode_base_module_destroy_value ((ValaCCodeBaseModule*) self, _tmp64_, FALSE);
15122 _tmp66_ = _tmp65_;
15123 vala_ccode_function_add_expression (_tmp63_, _tmp66_);
15124 _vala_ccode_node_unref0 (_tmp66_);
15125 _tmp67_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
15126 _tmp68_ = _tmp67_;
15127 vala_ccode_function_close (_tmp68_);
15128 _tmp69_ = casted;
15129 _tmp70_ = vala_glib_value_copy (G_TYPE_CHECK_INSTANCE_CAST (_tmp69_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
15130 _tmp71_ = _tmp70_;
15131 vala_expression_set_target_value ((ValaExpression*) expr, (ValaTargetValue*) _tmp71_);
15132 _vala_target_value_unref0 (_tmp71_);
15133 _vala_target_value_unref0 (casted);
15134 } else {
15135 ValaGLibValue* _tmp72_;
15136 _tmp72_ = cast_value;
15137 vala_expression_set_target_value ((ValaExpression*) expr, (ValaTargetValue*) _tmp72_);
15138 }
15139 _vala_target_value_unref0 (cast_value);
15140 _vala_ccode_node_unref0 (cnull);
15141 _vala_ccode_node_unref0 (ccast);
15142 _vala_ccode_node_unref0 (ccheck);
15143 _vala_ccode_node_unref0 (cexpr);
15144 _vala_target_value_unref0 (to_cast);
15145 } else {
15146 ValaExpression* _tmp73_;
15147 ValaExpression* _tmp74_;
15148 ValaCCodeExpression* _tmp75_;
15149 ValaDataType* _tmp76_;
15150 ValaDataType* _tmp77_;
15151 ValaTypeSymbol* _tmp78_;
15152 ValaTypeSymbol* _tmp79_;
15153 ValaCCodeFunctionCall* _tmp80_;
15154 ValaCCodeFunctionCall* _tmp81_;
15155 _tmp73_ = vala_cast_expression_get_inner (expr);
15156 _tmp74_ = _tmp73_;
15157 _tmp75_ = vala_get_cvalue (_tmp74_);
15158 _tmp76_ = vala_cast_expression_get_type_reference (expr);
15159 _tmp77_ = _tmp76_;
15160 _tmp78_ = vala_data_type_get_type_symbol (_tmp77_);
15161 _tmp79_ = _tmp78_;
15162 _tmp80_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, _tmp75_, _tmp79_);
15163 _tmp81_ = _tmp80_;
15164 vala_set_cvalue ((ValaExpression*) expr, (ValaCCodeExpression*) _tmp81_);
15165 _vala_ccode_node_unref0 (_tmp81_);
15166 }
15167 }
15168
15169 ValaGTypeModule*
vala_gtype_module_construct(GType object_type)15170 vala_gtype_module_construct (GType object_type)
15171 {
15172 ValaGTypeModule* self = NULL;
15173 self = (ValaGTypeModule*) vala_gerror_module_construct (object_type);
15174 return self;
15175 }
15176
15177 ValaGTypeModule*
vala_gtype_module_new(void)15178 vala_gtype_module_new (void)
15179 {
15180 return vala_gtype_module_construct (VALA_TYPE_GTYPE_MODULE);
15181 }
15182
15183 static void
vala_gtype_module_class_init(ValaGTypeModuleClass * klass,gpointer klass_data)15184 vala_gtype_module_class_init (ValaGTypeModuleClass * klass,
15185 gpointer klass_data)
15186 {
15187 vala_gtype_module_parent_class = g_type_class_peek_parent (klass);
15188 ((ValaCCodeMethodModuleClass *) klass)->generate_parameter = (ValaCCodeParameter* (*) (ValaCCodeMethodModule*, ValaParameter*, ValaCCodeFile*, ValaMap*, ValaMap*)) vala_gtype_module_real_generate_parameter;
15189 ((ValaCCodeBaseModuleClass *) klass)->generate_class_declaration = (void (*) (ValaCCodeBaseModule*, ValaClass*, ValaCCodeFile*)) vala_gtype_module_real_generate_class_declaration;
15190 ((ValaCCodeBaseModuleClass *) klass)->generate_class_struct_declaration = (void (*) (ValaCCodeBaseModule*, ValaClass*, ValaCCodeFile*)) vala_gtype_module_real_generate_class_struct_declaration;
15191 ((ValaCCodeBaseModuleClass *) klass)->generate_method_declaration = (gboolean (*) (ValaCCodeBaseModule*, ValaMethod*, ValaCCodeFile*)) vala_gtype_module_real_generate_method_declaration;
15192 ((ValaGTypeModuleClass *) klass)->generate_virtual_method_declaration = (void (*) (ValaGTypeModule*, ValaMethod*, ValaCCodeFile*, ValaCCodeStruct*)) vala_gtype_module_real_generate_virtual_method_declaration;
15193 ((ValaCodeVisitorClass *) klass)->visit_class = (void (*) (ValaCodeVisitor*, ValaClass*)) vala_gtype_module_real_visit_class;
15194 ((ValaGTypeModuleClass *) klass)->generate_class_init = (void (*) (ValaGTypeModule*, ValaClass*)) vala_gtype_module_real_generate_class_init;
15195 ((ValaGTypeModuleClass *) klass)->end_instance_init = (void (*) (ValaGTypeModule*, ValaClass*)) vala_gtype_module_real_end_instance_init;
15196 ((ValaCCodeBaseModuleClass *) klass)->get_param_spec_cexpression = (ValaCCodeExpression* (*) (ValaCCodeBaseModule*, ValaProperty*)) vala_gtype_module_real_get_param_spec_cexpression;
15197 ((ValaCCodeBaseModuleClass *) klass)->get_param_spec = (ValaCCodeExpression* (*) (ValaCCodeBaseModule*, ValaProperty*)) vala_gtype_module_real_get_param_spec;
15198 ((ValaCCodeBaseModuleClass *) klass)->generate_interface_declaration = (void (*) (ValaCCodeBaseModule*, ValaInterface*, ValaCCodeFile*)) vala_gtype_module_real_generate_interface_declaration;
15199 ((ValaCodeVisitorClass *) klass)->visit_interface = (void (*) (ValaCodeVisitor*, ValaInterface*)) vala_gtype_module_real_visit_interface;
15200 ((ValaCodeVisitorClass *) klass)->visit_struct = (void (*) (ValaCodeVisitor*, ValaStruct*)) vala_gtype_module_real_visit_struct;
15201 ((ValaCodeVisitorClass *) klass)->visit_enum = (void (*) (ValaCodeVisitor*, ValaEnum*)) vala_gtype_module_real_visit_enum;
15202 ((ValaCodeVisitorClass *) klass)->visit_method_call = (void (*) (ValaCodeVisitor*, ValaMethodCall*)) vala_gtype_module_real_visit_method_call;
15203 ((ValaCodeVisitorClass *) klass)->visit_property = (void (*) (ValaCodeVisitor*, ValaProperty*)) vala_gtype_module_real_visit_property;
15204 ((ValaCCodeBaseModuleClass *) klass)->create_type_check_statement = (void (*) (ValaCCodeBaseModule*, ValaCodeNode*, ValaDataType*, ValaTypeSymbol*, gboolean, const gchar*)) vala_gtype_module_real_create_type_check_statement;
15205 ((ValaCodeVisitorClass *) klass)->visit_cast_expression = (void (*) (ValaCodeVisitor*, ValaCastExpression*)) vala_gtype_module_real_visit_cast_expression;
15206 }
15207
15208 static void
vala_gtype_module_instance_init(ValaGTypeModule * self,gpointer klass)15209 vala_gtype_module_instance_init (ValaGTypeModule * self,
15210 gpointer klass)
15211 {
15212 }
15213
15214 static GType
vala_gtype_module_get_type_once(void)15215 vala_gtype_module_get_type_once (void)
15216 {
15217 static const GTypeInfo g_define_type_info = { sizeof (ValaGTypeModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gtype_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGTypeModule), 0, (GInstanceInitFunc) vala_gtype_module_instance_init, NULL };
15218 GType vala_gtype_module_type_id;
15219 vala_gtype_module_type_id = g_type_register_static (VALA_TYPE_GERROR_MODULE, "ValaGTypeModule", &g_define_type_info, 0);
15220 return vala_gtype_module_type_id;
15221 }
15222
15223 GType
vala_gtype_module_get_type(void)15224 vala_gtype_module_get_type (void)
15225 {
15226 static volatile gsize vala_gtype_module_type_id__volatile = 0;
15227 if (g_once_init_enter (&vala_gtype_module_type_id__volatile)) {
15228 GType vala_gtype_module_type_id;
15229 vala_gtype_module_type_id = vala_gtype_module_get_type_once ();
15230 g_once_init_leave (&vala_gtype_module_type_id__volatile, vala_gtype_module_type_id);
15231 }
15232 return vala_gtype_module_type_id__volatile;
15233 }
15234
15235