~ubuntu-branches/ubuntu/quantal/vala/quantal

« back to all changes in this revision

Viewing changes to codegen/valaccodemethodmodule.c

  • Committer: Bazaar Package Importer
  • Author(s): Robert Ancell
  • Date: 2011-03-17 09:35:15 UTC
  • mfrom: (1.5.17 upstream)
  • Revision ID: james.westby@ubuntu.com-20110317093515-veyqriw9egujkws2
Tags: 0.11.7-0ubuntu1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
172
172
        void (*generate_cparameters) (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction);
173
173
        ValaCCodeExpression* (*get_dup_func_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup);
174
174
        gchar* (*append_struct_array_free) (ValaCCodeBaseModule* self, ValaStruct* st);
175
 
        ValaCCodeExpression* (*destroy_variable) (ValaCCodeBaseModule* self, ValaVariable* variable, ValaCCodeExpression* inner);
 
175
        ValaCCodeExpression* (*destroy_variable) (ValaCCodeBaseModule* self, ValaVariable* variable, ValaTargetValue* target_lvalue);
176
176
        ValaCCodeExpression* (*destroy_value) (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition);
177
177
        void (*append_local_free) (ValaCCodeBaseModule* self, ValaSymbol* sym, gboolean stop_at_loop, ValaCodeNode* stop_at);
178
 
        ValaTargetValue* (*get_variable_cvalue) (ValaCCodeBaseModule* self, ValaVariable* variable, ValaCCodeExpression* inner);
179
 
        ValaTargetValue* (*load_parameter) (ValaCCodeBaseModule* self, ValaParameter* param);
 
178
        ValaTargetValue* (*get_local_cvalue) (ValaCCodeBaseModule* self, ValaLocalVariable* local);
 
179
        ValaTargetValue* (*get_parameter_cvalue) (ValaCCodeBaseModule* self, ValaParameter* param);
 
180
        ValaTargetValue* (*get_field_cvalue) (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance);
 
181
        ValaTargetValue* (*load_this_parameter) (ValaCCodeBaseModule* self, ValaTypeSymbol* sym);
180
182
        gchar* (*get_delegate_target_cname) (ValaCCodeBaseModule* self, const gchar* delegate_cname);
181
183
        ValaCCodeExpression* (*get_delegate_target_cexpression) (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify);
182
184
        ValaCCodeExpression* (*get_delegate_target_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value);
315
317
        g_return_val_if_fail (method != NULL, FALSE);
316
318
        _tmp0_ = vala_code_node_get_attribute ((ValaCodeNode*) method, "NoWrapper");
317
319
        _tmp1_ = _tmp0_;
318
 
        result = (_tmp2_ = _tmp1_ == NULL, _vala_code_node_unref0 (_tmp1_), _tmp2_);
 
320
        _tmp2_ = _tmp1_ == NULL;
 
321
        _vala_code_node_unref0 (_tmp1_);
 
322
        result = _tmp2_;
319
323
        return result;
320
324
}
321
325
 
386
390
        g_return_val_if_fail (m != NULL, FALSE);
387
391
        _result_ = FALSE;
388
392
        _tmp0_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
389
 
        _tmp2_ = _vala_code_node_ref0 ((_tmp1_ = _tmp0_, VALA_IS_CLASS (_tmp1_) ? ((ValaClass*) _tmp1_) : NULL));
 
393
        _tmp1_ = _tmp0_;
 
394
        _tmp2_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp1_) ? ((ValaClass*) _tmp1_) : NULL);
390
395
        cl = _tmp2_;
391
396
        if (VALA_IS_CREATION_METHOD (m)) {
392
397
                _tmp4_ = cl != NULL;
413
418
        ValaDataType* _tmp0_ = NULL;
414
419
        ValaDataType* _tmp1_;
415
420
        ValaDataType* creturn_type;
 
421
        gchar* _tmp9_ = NULL;
 
422
        gchar* _tmp10_;
416
423
        gchar* _tmp11_ = NULL;
417
424
        gchar* _tmp12_;
418
 
        gchar* _tmp13_ = NULL;
419
 
        gchar* _tmp14_;
420
 
        ValaDataType* _tmp15_ = NULL;
421
 
        ValaDataType* _tmp16_ = NULL;
422
 
        gboolean _tmp17_;
423
 
        gboolean _tmp75_ = FALSE;
424
 
        gboolean _tmp76_ = FALSE;
425
 
        ValaList* _tmp77_ = NULL;
426
 
        ValaList* _tmp78_;
427
 
        gint _tmp79_;
428
 
        gboolean _tmp80_;
 
425
        ValaDataType* _tmp13_ = NULL;
 
426
        ValaDataType* _tmp14_ = NULL;
 
427
        gboolean _tmp15_;
 
428
        gboolean _tmp73_ = FALSE;
 
429
        gboolean _tmp74_ = FALSE;
 
430
        ValaList* _tmp75_ = NULL;
 
431
        ValaList* _tmp76_;
 
432
        gint _tmp77_;
 
433
        gboolean _tmp78_;
429
434
        g_return_if_fail (self != NULL);
430
435
        g_return_if_fail (m != NULL);
431
436
        g_return_if_fail (decl_space != NULL);
440
445
                ValaClass* _tmp4_;
441
446
                ValaClass* cl;
442
447
                _tmp2_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
443
 
                _tmp4_ = _vala_code_node_ref0 ((_tmp3_ = _tmp2_, VALA_IS_CLASS (_tmp3_) ? ((ValaClass*) _tmp3_) : NULL));
 
448
                _tmp3_ = _tmp2_;
 
449
                _tmp4_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp3_) ? ((ValaClass*) _tmp3_) : NULL);
444
450
                cl = _tmp4_;
445
451
                if (cl != NULL) {
446
452
                        ValaObjectType* _tmp5_ = NULL;
447
 
                        ValaDataType* _tmp6_;
448
453
                        _tmp5_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl);
449
 
                        _tmp6_ = (ValaDataType*) _tmp5_;
450
454
                        _vala_code_node_unref0 (creturn_type);
451
 
                        creturn_type = _tmp6_;
 
455
                        creturn_type = (ValaDataType*) _tmp5_;
452
456
                }
453
457
                _vala_code_node_unref0 (cl);
454
458
        } else {
455
 
                ValaDataType* _tmp7_ = NULL;
456
 
                gboolean _tmp8_;
457
 
                _tmp7_ = vala_method_get_return_type (m);
458
 
                _tmp8_ = vala_data_type_is_real_non_null_struct_type (_tmp7_);
459
 
                if (_tmp8_) {
460
 
                        ValaVoidType* _tmp9_ = NULL;
461
 
                        ValaDataType* _tmp10_;
462
 
                        _tmp9_ = vala_void_type_new (NULL);
463
 
                        _tmp10_ = (ValaDataType*) _tmp9_;
 
459
                ValaDataType* _tmp6_ = NULL;
 
460
                gboolean _tmp7_;
 
461
                _tmp6_ = vala_method_get_return_type (m);
 
462
                _tmp7_ = vala_data_type_is_real_non_null_struct_type (_tmp6_);
 
463
                if (_tmp7_) {
 
464
                        ValaVoidType* _tmp8_ = NULL;
 
465
                        _tmp8_ = vala_void_type_new (NULL);
464
466
                        _vala_code_node_unref0 (creturn_type);
465
 
                        creturn_type = _tmp10_;
 
467
                        creturn_type = (ValaDataType*) _tmp8_;
466
468
                }
467
469
        }
468
 
        _tmp11_ = vala_data_type_get_cname (creturn_type);
 
470
        _tmp9_ = vala_data_type_get_cname (creturn_type);
 
471
        _tmp10_ = _tmp9_;
 
472
        _tmp11_ = vala_ccode_method_module_get_creturn_type (self, m, _tmp10_);
469
473
        _tmp12_ = _tmp11_;
470
 
        _tmp13_ = vala_ccode_method_module_get_creturn_type (self, m, _tmp12_);
471
 
        _tmp14_ = _tmp13_;
472
 
        vala_ccode_function_set_return_type (cfunc, _tmp14_);
473
 
        _g_free0 (_tmp14_);
 
474
        vala_ccode_function_set_return_type (cfunc, _tmp12_);
474
475
        _g_free0 (_tmp12_);
475
 
        _tmp15_ = vala_method_get_return_type (m);
476
 
        vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp15_, decl_space);
477
 
        _tmp16_ = vala_method_get_return_type (m);
478
 
        _tmp17_ = vala_data_type_is_real_non_null_struct_type (_tmp16_);
479
 
        if (_tmp17_) {
480
 
                ValaDataType* _tmp18_ = NULL;
481
 
                gchar* _tmp19_ = NULL;
 
476
        _g_free0 (_tmp10_);
 
477
        _tmp13_ = vala_method_get_return_type (m);
 
478
        vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp13_, decl_space);
 
479
        _tmp14_ = vala_method_get_return_type (m);
 
480
        _tmp15_ = vala_data_type_is_real_non_null_struct_type (_tmp14_);
 
481
        if (_tmp15_) {
 
482
                ValaDataType* _tmp16_ = NULL;
 
483
                gchar* _tmp17_ = NULL;
 
484
                gchar* _tmp18_;
 
485
                gchar* _tmp19_;
482
486
                gchar* _tmp20_;
483
 
                gchar* _tmp21_;
484
 
                ValaCCodeParameter* _tmp22_ = NULL;
485
 
                ValaCCodeParameter* _tmp23_;
 
487
                ValaCCodeParameter* _tmp21_ = NULL;
 
488
                ValaCCodeParameter* _tmp22_;
486
489
                ValaCCodeParameter* cparam;
487
 
                gint _tmp24_;
488
 
                _tmp18_ = vala_method_get_return_type (m);
489
 
                _tmp19_ = vala_data_type_get_cname (_tmp18_);
 
490
                gint _tmp23_;
 
491
                _tmp16_ = vala_method_get_return_type (m);
 
492
                _tmp17_ = vala_data_type_get_cname (_tmp16_);
 
493
                _tmp18_ = _tmp17_;
 
494
                _tmp19_ = g_strconcat (_tmp18_, "*", NULL);
490
495
                _tmp20_ = _tmp19_;
491
 
                _tmp21_ = g_strconcat (_tmp20_, "*", NULL);
492
 
                _tmp22_ = vala_ccode_parameter_new ("result", _tmp21_);
493
 
                cparam = (_tmp23_ = _tmp22_, _g_free0 (_tmp21_), _g_free0 (_tmp20_), _tmp23_);
494
 
                _tmp24_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-3), FALSE);
495
 
                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp24_), cparam);
 
496
                _tmp21_ = vala_ccode_parameter_new ("result", _tmp20_);
 
497
                _tmp22_ = _tmp21_;
 
498
                _g_free0 (_tmp20_);
 
499
                _g_free0 (_tmp18_);
 
500
                cparam = _tmp22_;
 
501
                _tmp23_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-3), FALSE);
 
502
                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp23_), cparam);
496
503
                if (carg_map != NULL) {
497
 
                        gint _tmp25_;
498
 
                        ValaCCodeExpression* _tmp26_ = NULL;
499
 
                        ValaCCodeExpression* _tmp27_;
500
 
                        _tmp25_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-3), FALSE);
501
 
                        _tmp26_ = vala_ccode_base_module_get_result_cexpression ((ValaCCodeBaseModule*) self, "result");
502
 
                        _tmp27_ = _tmp26_;
503
 
                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp25_), _tmp27_);
504
 
                        _vala_ccode_node_unref0 (_tmp27_);
 
504
                        gint _tmp24_;
 
505
                        ValaCCodeExpression* _tmp25_ = NULL;
 
506
                        ValaCCodeExpression* _tmp26_;
 
507
                        _tmp24_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-3), FALSE);
 
508
                        _tmp25_ = vala_ccode_base_module_get_result_cexpression ((ValaCCodeBaseModule*) self, "result");
 
509
                        _tmp26_ = _tmp25_;
 
510
                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp24_), _tmp26_);
 
511
                        _vala_ccode_node_unref0 (_tmp26_);
505
512
                }
506
513
                _vala_ccode_node_unref0 (cparam);
507
514
        } else {
508
 
                gboolean _tmp28_ = FALSE;
509
 
                gboolean _tmp29_;
510
 
                _tmp29_ = vala_method_get_no_array_length (m);
511
 
                if (!_tmp29_) {
 
515
                gboolean _tmp27_ = FALSE;
 
516
                gboolean _tmp28_;
 
517
                _tmp28_ = vala_method_get_no_array_length (m);
 
518
                if (!_tmp28_) {
 
519
                        ValaDataType* _tmp29_ = NULL;
 
520
                        _tmp29_ = vala_method_get_return_type (m);
 
521
                        _tmp27_ = VALA_IS_ARRAY_TYPE (_tmp29_);
 
522
                } else {
 
523
                        _tmp27_ = FALSE;
 
524
                }
 
525
                if (_tmp27_) {
512
526
                        ValaDataType* _tmp30_ = NULL;
 
527
                        ValaArrayType* _tmp31_;
 
528
                        ValaArrayType* array_type;
513
529
                        _tmp30_ = vala_method_get_return_type (m);
514
 
                        _tmp28_ = VALA_IS_ARRAY_TYPE (_tmp30_);
515
 
                } else {
516
 
                        _tmp28_ = FALSE;
517
 
                }
518
 
                if (_tmp28_) {
519
 
                        ValaDataType* _tmp31_ = NULL;
520
 
                        ValaArrayType* _tmp32_;
521
 
                        ValaArrayType* array_type;
522
 
                        _tmp31_ = vala_method_get_return_type (m);
523
 
                        _tmp32_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp31_));
524
 
                        array_type = _tmp32_;
 
530
                        _tmp31_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp30_));
 
531
                        array_type = _tmp31_;
525
532
                        {
526
533
                                gint dim;
527
534
                                dim = 1;
528
535
                                {
529
 
                                        gboolean _tmp33_;
530
 
                                        _tmp33_ = TRUE;
 
536
                                        gboolean _tmp32_;
 
537
                                        _tmp32_ = TRUE;
531
538
                                        while (TRUE) {
532
 
                                                gint _tmp34_;
533
 
                                                gchar* _tmp35_ = NULL;
534
 
                                                gchar* _tmp36_;
535
 
                                                ValaCCodeParameter* _tmp37_ = NULL;
536
 
                                                ValaCCodeParameter* _tmp38_;
 
539
                                                gint _tmp33_;
 
540
                                                gchar* _tmp34_ = NULL;
 
541
                                                gchar* _tmp35_;
 
542
                                                ValaCCodeParameter* _tmp36_ = NULL;
 
543
                                                ValaCCodeParameter* _tmp37_;
537
544
                                                ValaCCodeParameter* cparam;
538
 
                                                gdouble _tmp39_;
539
 
                                                gint _tmp40_;
540
 
                                                if (!_tmp33_) {
 
545
                                                gdouble _tmp38_;
 
546
                                                gint _tmp39_;
 
547
                                                if (!_tmp32_) {
541
548
                                                        dim++;
542
549
                                                }
543
 
                                                _tmp33_ = FALSE;
544
 
                                                _tmp34_ = vala_array_type_get_rank (array_type);
545
 
                                                if (!(dim <= _tmp34_)) {
 
550
                                                _tmp32_ = FALSE;
 
551
                                                _tmp33_ = vala_array_type_get_rank (array_type);
 
552
                                                if (!(dim <= _tmp33_)) {
546
553
                                                        break;
547
554
                                                }
548
 
                                                _tmp35_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
549
 
                                                _tmp36_ = _tmp35_;
550
 
                                                _tmp37_ = vala_ccode_parameter_new (_tmp36_, "int*");
551
 
                                                cparam = (_tmp38_ = _tmp37_, _g_free0 (_tmp36_), _tmp38_);
552
 
                                                _tmp39_ = vala_method_get_carray_length_parameter_position (m);
553
 
                                                _tmp40_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp39_ + (0.01 * dim), FALSE);
554
 
                                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp40_), cparam);
 
555
                                                _tmp34_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", dim);
 
556
                                                _tmp35_ = _tmp34_;
 
557
                                                _tmp36_ = vala_ccode_parameter_new (_tmp35_, "int*");
 
558
                                                _tmp37_ = _tmp36_;
 
559
                                                _g_free0 (_tmp35_);
 
560
                                                cparam = _tmp37_;
 
561
                                                _tmp38_ = vala_method_get_carray_length_parameter_position (m);
 
562
                                                _tmp39_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp38_ + (0.01 * dim), FALSE);
 
563
                                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp39_), cparam);
555
564
                                                if (carg_map != NULL) {
556
 
                                                        gdouble _tmp41_;
557
 
                                                        gint _tmp42_;
558
 
                                                        const gchar* _tmp43_ = NULL;
559
 
                                                        ValaCCodeExpression* _tmp44_ = NULL;
560
 
                                                        ValaCCodeExpression* _tmp45_;
561
 
                                                        _tmp41_ = vala_method_get_carray_length_parameter_position (m);
562
 
                                                        _tmp42_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp41_ + (0.01 * dim), FALSE);
563
 
                                                        _tmp43_ = vala_ccode_parameter_get_name (cparam);
564
 
                                                        _tmp44_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp43_);
565
 
                                                        _tmp45_ = _tmp44_;
566
 
                                                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp42_), _tmp45_);
567
 
                                                        _vala_ccode_node_unref0 (_tmp45_);
 
565
                                                        gdouble _tmp40_;
 
566
                                                        gint _tmp41_;
 
567
                                                        const gchar* _tmp42_ = NULL;
 
568
                                                        ValaCCodeExpression* _tmp43_ = NULL;
 
569
                                                        ValaCCodeExpression* _tmp44_;
 
570
                                                        _tmp40_ = vala_method_get_carray_length_parameter_position (m);
 
571
                                                        _tmp41_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp40_ + (0.01 * dim), FALSE);
 
572
                                                        _tmp42_ = vala_ccode_parameter_get_name (cparam);
 
573
                                                        _tmp43_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp42_);
 
574
                                                        _tmp44_ = _tmp43_;
 
575
                                                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp41_), _tmp44_);
 
576
                                                        _vala_ccode_node_unref0 (_tmp44_);
568
577
                                                }
569
578
                                                _vala_ccode_node_unref0 (cparam);
570
579
                                        }
572
581
                        }
573
582
                        _vala_code_node_unref0 (array_type);
574
583
                } else {
575
 
                        ValaDataType* _tmp46_ = NULL;
576
 
                        _tmp46_ = vala_method_get_return_type (m);
577
 
                        if (VALA_IS_DELEGATE_TYPE (_tmp46_)) {
578
 
                                ValaDataType* _tmp47_ = NULL;
579
 
                                ValaDelegateType* _tmp48_;
 
584
                        ValaDataType* _tmp45_ = NULL;
 
585
                        _tmp45_ = vala_method_get_return_type (m);
 
586
                        if (VALA_IS_DELEGATE_TYPE (_tmp45_)) {
 
587
                                ValaDataType* _tmp46_ = NULL;
 
588
                                ValaDelegateType* _tmp47_;
580
589
                                ValaDelegateType* deleg_type;
581
 
                                ValaDelegate* _tmp49_ = NULL;
582
 
                                ValaDelegate* _tmp50_;
 
590
                                ValaDelegate* _tmp48_ = NULL;
 
591
                                ValaDelegate* _tmp49_;
583
592
                                ValaDelegate* d;
584
 
                                gboolean _tmp51_;
585
 
                                _tmp47_ = vala_method_get_return_type (m);
586
 
                                _tmp48_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp47_));
587
 
                                deleg_type = _tmp48_;
588
 
                                _tmp49_ = vala_delegate_type_get_delegate_symbol (deleg_type);
589
 
                                _tmp50_ = _vala_code_node_ref0 (_tmp49_);
590
 
                                d = _tmp50_;
591
 
                                _tmp51_ = vala_delegate_get_has_target (d);
592
 
                                if (_tmp51_) {
593
 
                                        gchar* _tmp52_ = NULL;
594
 
                                        gchar* _tmp53_;
595
 
                                        ValaCCodeParameter* _tmp54_ = NULL;
596
 
                                        ValaCCodeParameter* _tmp55_;
 
593
                                gboolean _tmp50_;
 
594
                                _tmp46_ = vala_method_get_return_type (m);
 
595
                                _tmp47_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp46_));
 
596
                                deleg_type = _tmp47_;
 
597
                                _tmp48_ = vala_delegate_type_get_delegate_symbol (deleg_type);
 
598
                                _tmp49_ = _vala_code_node_ref0 (_tmp48_);
 
599
                                d = _tmp49_;
 
600
                                _tmp50_ = vala_delegate_get_has_target (d);
 
601
                                if (_tmp50_) {
 
602
                                        gchar* _tmp51_ = NULL;
 
603
                                        gchar* _tmp52_;
 
604
                                        ValaCCodeParameter* _tmp53_ = NULL;
 
605
                                        ValaCCodeParameter* _tmp54_;
597
606
                                        ValaCCodeParameter* cparam;
598
 
                                        gdouble _tmp56_;
599
 
                                        gint _tmp57_;
600
 
                                        gboolean _tmp63_;
601
 
                                        _tmp52_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
602
 
                                        _tmp53_ = _tmp52_;
603
 
                                        _tmp54_ = vala_ccode_parameter_new (_tmp53_, "void**");
604
 
                                        cparam = (_tmp55_ = _tmp54_, _g_free0 (_tmp53_), _tmp55_);
605
 
                                        _tmp56_ = vala_method_get_cdelegate_target_parameter_position (m);
606
 
                                        _tmp57_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp56_, FALSE);
607
 
                                        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp57_), cparam);
 
607
                                        gdouble _tmp55_;
 
608
                                        gint _tmp56_;
 
609
                                        gboolean _tmp62_;
 
610
                                        _tmp51_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
 
611
                                        _tmp52_ = _tmp51_;
 
612
                                        _tmp53_ = vala_ccode_parameter_new (_tmp52_, "void**");
 
613
                                        _tmp54_ = _tmp53_;
 
614
                                        _g_free0 (_tmp52_);
 
615
                                        cparam = _tmp54_;
 
616
                                        _tmp55_ = vala_method_get_cdelegate_target_parameter_position (m);
 
617
                                        _tmp56_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp55_, FALSE);
 
618
                                        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp56_), cparam);
608
619
                                        if (carg_map != NULL) {
609
 
                                                gdouble _tmp58_;
610
 
                                                gint _tmp59_;
611
 
                                                const gchar* _tmp60_ = NULL;
612
 
                                                ValaCCodeExpression* _tmp61_ = NULL;
613
 
                                                ValaCCodeExpression* _tmp62_;
614
 
                                                _tmp58_ = vala_method_get_cdelegate_target_parameter_position (m);
615
 
                                                _tmp59_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp58_, FALSE);
616
 
                                                _tmp60_ = vala_ccode_parameter_get_name (cparam);
617
 
                                                _tmp61_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp60_);
618
 
                                                _tmp62_ = _tmp61_;
619
 
                                                vala_map_set (carg_map, GINT_TO_POINTER (_tmp59_), _tmp62_);
620
 
                                                _vala_ccode_node_unref0 (_tmp62_);
 
620
                                                gdouble _tmp57_;
 
621
                                                gint _tmp58_;
 
622
                                                const gchar* _tmp59_ = NULL;
 
623
                                                ValaCCodeExpression* _tmp60_ = NULL;
 
624
                                                ValaCCodeExpression* _tmp61_;
 
625
                                                _tmp57_ = vala_method_get_cdelegate_target_parameter_position (m);
 
626
                                                _tmp58_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp57_, FALSE);
 
627
                                                _tmp59_ = vala_ccode_parameter_get_name (cparam);
 
628
                                                _tmp60_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp59_);
 
629
                                                _tmp61_ = _tmp60_;
 
630
                                                vala_map_set (carg_map, GINT_TO_POINTER (_tmp58_), _tmp61_);
 
631
                                                _vala_ccode_node_unref0 (_tmp61_);
621
632
                                        }
622
 
                                        _tmp63_ = vala_data_type_get_value_owned ((ValaDataType*) deleg_type);
623
 
                                        if (_tmp63_) {
624
 
                                                gchar* _tmp64_ = NULL;
625
 
                                                gchar* _tmp65_;
626
 
                                                ValaCCodeParameter* _tmp66_ = NULL;
627
 
                                                ValaCCodeParameter* _tmp67_;
628
 
                                                gdouble _tmp68_;
629
 
                                                gint _tmp69_;
630
 
                                                _tmp64_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, "result");
631
 
                                                _tmp65_ = _tmp64_;
632
 
                                                _tmp66_ = vala_ccode_parameter_new (_tmp65_, "GDestroyNotify*");
633
 
                                                _tmp67_ = _tmp66_;
 
633
                                        _tmp62_ = vala_data_type_get_value_owned ((ValaDataType*) deleg_type);
 
634
                                        if (_tmp62_) {
 
635
                                                gchar* _tmp63_ = NULL;
 
636
                                                gchar* _tmp64_;
 
637
                                                ValaCCodeParameter* _tmp65_ = NULL;
 
638
                                                gdouble _tmp66_;
 
639
                                                gint _tmp67_;
 
640
                                                _tmp63_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, "result");
 
641
                                                _tmp64_ = _tmp63_;
 
642
                                                _tmp65_ = vala_ccode_parameter_new (_tmp64_, "GDestroyNotify*");
634
643
                                                _vala_ccode_node_unref0 (cparam);
635
 
                                                cparam = _tmp67_;
636
 
                                                _g_free0 (_tmp65_);
637
 
                                                _tmp68_ = vala_method_get_cdelegate_target_parameter_position (m);
638
 
                                                _tmp69_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp68_ + 0.01, FALSE);
639
 
                                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp69_), cparam);
 
644
                                                cparam = _tmp65_;
 
645
                                                _g_free0 (_tmp64_);
 
646
                                                _tmp66_ = vala_method_get_cdelegate_target_parameter_position (m);
 
647
                                                _tmp67_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp66_ + 0.01, FALSE);
 
648
                                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp67_), cparam);
640
649
                                                if (carg_map != NULL) {
641
 
                                                        gdouble _tmp70_;
642
 
                                                        gint _tmp71_;
643
 
                                                        const gchar* _tmp72_ = NULL;
644
 
                                                        ValaCCodeExpression* _tmp73_ = NULL;
645
 
                                                        ValaCCodeExpression* _tmp74_;
646
 
                                                        _tmp70_ = vala_method_get_cdelegate_target_parameter_position (m);
647
 
                                                        _tmp71_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp70_ + 0.01, FALSE);
648
 
                                                        _tmp72_ = vala_ccode_parameter_get_name (cparam);
649
 
                                                        _tmp73_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp72_);
650
 
                                                        _tmp74_ = _tmp73_;
651
 
                                                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp71_), _tmp74_);
652
 
                                                        _vala_ccode_node_unref0 (_tmp74_);
 
650
                                                        gdouble _tmp68_;
 
651
                                                        gint _tmp69_;
 
652
                                                        const gchar* _tmp70_ = NULL;
 
653
                                                        ValaCCodeExpression* _tmp71_ = NULL;
 
654
                                                        ValaCCodeExpression* _tmp72_;
 
655
                                                        _tmp68_ = vala_method_get_cdelegate_target_parameter_position (m);
 
656
                                                        _tmp69_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp68_ + 0.01, FALSE);
 
657
                                                        _tmp70_ = vala_ccode_parameter_get_name (cparam);
 
658
                                                        _tmp71_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp70_);
 
659
                                                        _tmp72_ = _tmp71_;
 
660
                                                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp69_), _tmp72_);
 
661
                                                        _vala_ccode_node_unref0 (_tmp72_);
653
662
                                                }
654
663
                                        }
655
664
                                        _vala_ccode_node_unref0 (cparam);
659
668
                        }
660
669
                }
661
670
        }
662
 
        _tmp77_ = vala_code_node_get_error_types ((ValaCodeNode*) m);
663
 
        _tmp78_ = _tmp77_;
664
 
        _tmp79_ = vala_collection_get_size ((ValaCollection*) _tmp78_);
665
 
        if ((_tmp80_ = _tmp79_ > 0, _vala_iterable_unref0 (_tmp78_), _tmp80_)) {
666
 
                _tmp76_ = TRUE;
667
 
        } else {
668
 
                gboolean _tmp81_ = FALSE;
669
 
                ValaMethod* _tmp82_ = NULL;
670
 
                _tmp82_ = vala_method_get_base_method (m);
671
 
                if (_tmp82_ != NULL) {
672
 
                        ValaMethod* _tmp83_ = NULL;
673
 
                        ValaList* _tmp84_ = NULL;
674
 
                        ValaList* _tmp85_;
675
 
                        gint _tmp86_;
676
 
                        _tmp83_ = vala_method_get_base_method (m);
677
 
                        _tmp84_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp83_);
678
 
                        _tmp85_ = _tmp84_;
679
 
                        _tmp86_ = vala_collection_get_size ((ValaCollection*) _tmp85_);
680
 
                        _tmp81_ = _tmp86_ > 0;
681
 
                        _vala_iterable_unref0 (_tmp85_);
682
 
                } else {
683
 
                        _tmp81_ = FALSE;
684
 
                }
685
 
                _tmp76_ = _tmp81_;
686
 
        }
687
 
        if (_tmp76_) {
688
 
                _tmp75_ = TRUE;
689
 
        } else {
690
 
                gboolean _tmp87_ = FALSE;
691
 
                ValaMethod* _tmp88_ = NULL;
692
 
                _tmp88_ = vala_method_get_base_interface_method (m);
693
 
                if (_tmp88_ != NULL) {
694
 
                        ValaMethod* _tmp89_ = NULL;
695
 
                        ValaList* _tmp90_ = NULL;
696
 
                        ValaList* _tmp91_;
 
671
        _tmp75_ = vala_code_node_get_error_types ((ValaCodeNode*) m);
 
672
        _tmp76_ = _tmp75_;
 
673
        _tmp77_ = vala_collection_get_size ((ValaCollection*) _tmp76_);
 
674
        _tmp78_ = _tmp77_ > 0;
 
675
        _vala_iterable_unref0 (_tmp76_);
 
676
        if (_tmp78_) {
 
677
                _tmp74_ = TRUE;
 
678
        } else {
 
679
                gboolean _tmp79_ = FALSE;
 
680
                ValaMethod* _tmp80_ = NULL;
 
681
                _tmp80_ = vala_method_get_base_method (m);
 
682
                if (_tmp80_ != NULL) {
 
683
                        ValaMethod* _tmp81_ = NULL;
 
684
                        ValaList* _tmp82_ = NULL;
 
685
                        ValaList* _tmp83_;
 
686
                        gint _tmp84_;
 
687
                        _tmp81_ = vala_method_get_base_method (m);
 
688
                        _tmp82_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp81_);
 
689
                        _tmp83_ = _tmp82_;
 
690
                        _tmp84_ = vala_collection_get_size ((ValaCollection*) _tmp83_);
 
691
                        _tmp79_ = _tmp84_ > 0;
 
692
                        _vala_iterable_unref0 (_tmp83_);
 
693
                } else {
 
694
                        _tmp79_ = FALSE;
 
695
                }
 
696
                _tmp74_ = _tmp79_;
 
697
        }
 
698
        if (_tmp74_) {
 
699
                _tmp73_ = TRUE;
 
700
        } else {
 
701
                gboolean _tmp85_ = FALSE;
 
702
                ValaMethod* _tmp86_ = NULL;
 
703
                _tmp86_ = vala_method_get_base_interface_method (m);
 
704
                if (_tmp86_ != NULL) {
 
705
                        ValaMethod* _tmp87_ = NULL;
 
706
                        ValaList* _tmp88_ = NULL;
 
707
                        ValaList* _tmp89_;
 
708
                        gint _tmp90_;
 
709
                        _tmp87_ = vala_method_get_base_interface_method (m);
 
710
                        _tmp88_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp87_);
 
711
                        _tmp89_ = _tmp88_;
 
712
                        _tmp90_ = vala_collection_get_size ((ValaCollection*) _tmp89_);
 
713
                        _tmp85_ = _tmp90_ > 0;
 
714
                        _vala_iterable_unref0 (_tmp89_);
 
715
                } else {
 
716
                        _tmp85_ = FALSE;
 
717
                }
 
718
                _tmp73_ = _tmp85_;
 
719
        }
 
720
        if (_tmp73_) {
 
721
                ValaCCodeParameter* _tmp94_ = NULL;
 
722
                ValaCCodeParameter* cparam;
 
723
                gint _tmp95_;
 
724
                {
 
725
                        ValaList* _tmp91_ = NULL;
 
726
                        ValaList* _error_type_list;
697
727
                        gint _tmp92_;
698
 
                        _tmp89_ = vala_method_get_base_interface_method (m);
699
 
                        _tmp90_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp89_);
700
 
                        _tmp91_ = _tmp90_;
701
 
                        _tmp92_ = vala_collection_get_size ((ValaCollection*) _tmp91_);
702
 
                        _tmp87_ = _tmp92_ > 0;
703
 
                        _vala_iterable_unref0 (_tmp91_);
704
 
                } else {
705
 
                        _tmp87_ = FALSE;
706
 
                }
707
 
                _tmp75_ = _tmp87_;
708
 
        }
709
 
        if (_tmp75_) {
710
 
                ValaCCodeParameter* _tmp96_ = NULL;
711
 
                ValaCCodeParameter* cparam;
712
 
                gint _tmp97_;
713
 
                {
714
 
                        ValaList* _tmp93_ = NULL;
715
 
                        ValaList* _error_type_list;
716
 
                        gint _tmp94_;
717
728
                        gint _error_type_size;
718
729
                        gint _error_type_index;
719
 
                        _tmp93_ = vala_code_node_get_error_types ((ValaCodeNode*) m);
720
 
                        _error_type_list = _tmp93_;
721
 
                        _tmp94_ = vala_collection_get_size ((ValaCollection*) _error_type_list);
722
 
                        _error_type_size = _tmp94_;
 
730
                        _tmp91_ = vala_code_node_get_error_types ((ValaCodeNode*) m);
 
731
                        _error_type_list = _tmp91_;
 
732
                        _tmp92_ = vala_collection_get_size ((ValaCollection*) _error_type_list);
 
733
                        _error_type_size = _tmp92_;
723
734
                        _error_type_index = -1;
724
735
                        while (TRUE) {
725
 
                                gpointer _tmp95_ = NULL;
 
736
                                gpointer _tmp93_ = NULL;
726
737
                                ValaDataType* error_type;
727
738
                                _error_type_index = _error_type_index + 1;
728
739
                                if (!(_error_type_index < _error_type_size)) {
729
740
                                        break;
730
741
                                }
731
 
                                _tmp95_ = vala_list_get (_error_type_list, _error_type_index);
732
 
                                error_type = (ValaDataType*) _tmp95_;
 
742
                                _tmp93_ = vala_list_get (_error_type_list, _error_type_index);
 
743
                                error_type = (ValaDataType*) _tmp93_;
733
744
                                vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, error_type, decl_space);
734
745
                                _vala_code_node_unref0 (error_type);
735
746
                        }
736
747
                        _vala_iterable_unref0 (_error_type_list);
737
748
                }
738
 
                _tmp96_ = vala_ccode_parameter_new ("error", "GError**");
739
 
                cparam = _tmp96_;
740
 
                _tmp97_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-1), FALSE);
741
 
                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp97_), cparam);
 
749
                _tmp94_ = vala_ccode_parameter_new ("error", "GError**");
 
750
                cparam = _tmp94_;
 
751
                _tmp95_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-1), FALSE);
 
752
                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp95_), cparam);
742
753
                if (carg_map != NULL) {
743
 
                        gint _tmp98_;
744
 
                        const gchar* _tmp99_ = NULL;
745
 
                        ValaCCodeIdentifier* _tmp100_ = NULL;
746
 
                        ValaCCodeIdentifier* _tmp101_;
747
 
                        _tmp98_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-1), FALSE);
748
 
                        _tmp99_ = vala_ccode_parameter_get_name (cparam);
749
 
                        _tmp100_ = vala_ccode_identifier_new (_tmp99_);
750
 
                        _tmp101_ = _tmp100_;
751
 
                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp98_), (ValaCCodeExpression*) _tmp101_);
752
 
                        _vala_ccode_node_unref0 (_tmp101_);
 
754
                        gint _tmp96_;
 
755
                        const gchar* _tmp97_ = NULL;
 
756
                        ValaCCodeIdentifier* _tmp98_ = NULL;
 
757
                        ValaCCodeIdentifier* _tmp99_;
 
758
                        _tmp96_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (gdouble) (-1), FALSE);
 
759
                        _tmp97_ = vala_ccode_parameter_get_name (cparam);
 
760
                        _tmp98_ = vala_ccode_identifier_new (_tmp97_);
 
761
                        _tmp99_ = _tmp98_;
 
762
                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp96_), (ValaCCodeExpression*) _tmp99_);
 
763
                        _vala_ccode_node_unref0 (_tmp99_);
753
764
                }
754
765
                _vala_ccode_node_unref0 (cparam);
755
766
        }
805
816
        _tmp0_ = vala_ccode_identifier_new ("data");
806
817
        _tmp1_ = _tmp0_;
807
818
        _tmp2_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp1_, "_state_");
808
 
        state = (_tmp3_ = _tmp2_, _vala_ccode_node_unref0 (_tmp1_), _tmp3_);
 
819
        _tmp3_ = _tmp2_;
 
820
        _vala_ccode_node_unref0 (_tmp1_);
 
821
        state = _tmp3_;
809
822
        _tmp4_ = vala_ccode_constant_new ("0");
810
823
        zero = _tmp4_;
811
824
        _tmp5_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) state, (ValaCCodeExpression*) zero);
815
828
        _tmp7_ = vala_ccode_identifier_new ("data");
816
829
        _tmp8_ = _tmp7_;
817
830
        _tmp9_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp8_, "_async_result");
818
 
        async_result_expr = (_tmp10_ = _tmp9_, _vala_ccode_node_unref0 (_tmp8_), _tmp10_);
 
831
        _tmp10_ = _tmp9_;
 
832
        _vala_ccode_node_unref0 (_tmp8_);
 
833
        async_result_expr = _tmp10_;
819
834
        _tmp11_ = vala_ccode_identifier_new ("g_simple_async_result_complete_in_idle");
820
835
        _tmp12_ = _tmp11_;
821
836
        _tmp13_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp12_);
822
 
        idle_call = (_tmp14_ = _tmp13_, _vala_ccode_node_unref0 (_tmp12_), _tmp14_);
 
837
        _tmp14_ = _tmp13_;
 
838
        _vala_ccode_node_unref0 (_tmp12_);
 
839
        idle_call = _tmp14_;
823
840
        vala_ccode_function_call_add_argument (idle_call, (ValaCCodeExpression*) async_result_expr);
824
841
        _tmp15_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
825
842
        vala_ccode_function_add_expression (_tmp15_, (ValaCCodeExpression*) idle_call);
828
845
        _tmp17_ = vala_ccode_identifier_new ("g_simple_async_result_complete");
829
846
        _tmp18_ = _tmp17_;
830
847
        _tmp19_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp18_);
831
 
        direct_call = (_tmp20_ = _tmp19_, _vala_ccode_node_unref0 (_tmp18_), _tmp20_);
 
848
        _tmp20_ = _tmp19_;
 
849
        _vala_ccode_node_unref0 (_tmp18_);
 
850
        direct_call = _tmp20_;
832
851
        vala_ccode_function_call_add_argument (direct_call, (ValaCCodeExpression*) async_result_expr);
833
852
        _tmp21_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
834
853
        vala_ccode_function_add_expression (_tmp21_, (ValaCCodeExpression*) direct_call);
837
856
        _tmp23_ = vala_ccode_identifier_new ("g_object_unref");
838
857
        _tmp24_ = _tmp23_;
839
858
        _tmp25_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp24_);
840
 
        unref = (_tmp26_ = _tmp25_, _vala_ccode_node_unref0 (_tmp24_), _tmp26_);
 
859
        _tmp26_ = _tmp25_;
 
860
        _vala_ccode_node_unref0 (_tmp24_);
 
861
        unref = _tmp26_;
841
862
        vala_ccode_function_call_add_argument (unref, (ValaCCodeExpression*) async_result_expr);
842
863
        _tmp27_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
843
864
        vala_ccode_function_add_expression (_tmp27_, (ValaCCodeExpression*) unref);
892
913
        _tmp1_ = vala_method_get_cname (m);
893
914
        _tmp2_ = _tmp1_;
894
915
        _tmp3_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, decl_space, (ValaSymbol*) m, _tmp2_);
895
 
        if ((_tmp4_ = _tmp3_, _g_free0 (_tmp2_), _tmp4_)) {
 
916
        _tmp4_ = _tmp3_;
 
917
        _g_free0 (_tmp2_);
 
918
        if (_tmp4_) {
896
919
                return;
897
920
        }
898
921
        _tmp5_ = vala_method_get_cname (m);
899
922
        _tmp6_ = _tmp5_;
900
923
        _tmp7_ = vala_ccode_function_new (_tmp6_, "void");
901
 
        function = (_tmp8_ = _tmp7_, _g_free0 (_tmp6_), _tmp8_);
 
924
        _tmp8_ = _tmp7_;
 
925
        _g_free0 (_tmp6_);
 
926
        function = _tmp8_;
902
927
        _tmp10_ = vala_symbol_is_private_symbol ((ValaSymbol*) m);
903
928
        if (_tmp10_) {
904
929
                gboolean _tmp11_;
930
955
        _tmp18_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
931
956
        carg_map = _tmp18_;
932
957
        _tmp19_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
933
 
        _tmp21_ = _vala_code_node_ref0 ((_tmp20_ = _tmp19_, VALA_IS_CLASS (_tmp20_) ? ((ValaClass*) _tmp20_) : NULL));
 
958
        _tmp20_ = _tmp19_;
 
959
        _tmp21_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp20_) ? ((ValaClass*) _tmp20_) : NULL);
934
960
        cl = _tmp21_;
935
961
        if (VALA_IS_CREATION_METHOD (m)) {
936
962
                _tmp23_ = cl != NULL;
967
993
                gchar* _tmp30_ = NULL;
968
994
                gchar* _tmp31_;
969
995
                ValaCCodeFunction* _tmp32_ = NULL;
970
 
                ValaCCodeFunction* _tmp33_;
971
 
                gboolean _tmp34_;
972
 
                ValaHashMap* _tmp36_ = NULL;
973
 
                ValaHashMap* _tmp37_;
 
996
                gboolean _tmp33_;
 
997
                ValaHashMap* _tmp35_ = NULL;
974
998
                _tmp30_ = vala_method_get_real_cname (m);
975
999
                _tmp31_ = _tmp30_;
976
1000
                _tmp32_ = vala_ccode_function_new (_tmp31_, "void");
977
 
                _tmp33_ = _tmp32_;
978
1001
                _vala_ccode_node_unref0 (function);
979
 
                function = _tmp33_;
 
1002
                function = _tmp32_;
980
1003
                _g_free0 (_tmp31_);
981
 
                _tmp34_ = vala_symbol_is_private_symbol ((ValaSymbol*) m);
982
 
                if (_tmp34_) {
983
 
                        ValaCCodeModifiers _tmp35_;
984
 
                        _tmp35_ = vala_ccode_function_get_modifiers (function);
985
 
                        vala_ccode_function_set_modifiers (function, _tmp35_ | VALA_CCODE_MODIFIERS_STATIC);
 
1004
                _tmp33_ = vala_symbol_is_private_symbol ((ValaSymbol*) m);
 
1005
                if (_tmp33_) {
 
1006
                        ValaCCodeModifiers _tmp34_;
 
1007
                        _tmp34_ = vala_ccode_function_get_modifiers (function);
 
1008
                        vala_ccode_function_set_modifiers (function, _tmp34_ | VALA_CCODE_MODIFIERS_STATIC);
986
1009
                }
987
 
                _tmp36_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
988
 
                _tmp37_ = _tmp36_;
 
1010
                _tmp35_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
989
1011
                _vala_map_unref0 (cparam_map);
990
 
                cparam_map = _tmp37_;
 
1012
                cparam_map = _tmp35_;
991
1013
                vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, decl_space, (ValaMap*) cparam_map, function, NULL, NULL, NULL, 3);
992
1014
                vala_ccode_file_add_function_declaration (decl_space, function);
993
1015
        }
1011
1033
        g_return_if_fail (self != NULL);
1012
1034
        g_return_if_fail (sym != NULL);
1013
1035
        g_return_if_fail (registered_types != NULL);
1014
 
        _tmp1_ = _vala_code_node_ref0 ((_tmp0_ = sym, VALA_IS_NAMESPACE (_tmp0_) ? ((ValaNamespace*) _tmp0_) : NULL));
 
1036
        _tmp0_ = sym;
 
1037
        _tmp1_ = _vala_code_node_ref0 (VALA_IS_NAMESPACE (_tmp0_) ? ((ValaNamespace*) _tmp0_) : NULL);
1015
1038
        ns = _tmp1_;
1016
 
        _tmp3_ = _vala_code_node_ref0 ((_tmp2_ = sym, VALA_IS_CLASS (_tmp2_) ? ((ValaClass*) _tmp2_) : NULL));
 
1039
        _tmp2_ = sym;
 
1040
        _tmp3_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp2_) ? ((ValaClass*) _tmp2_) : NULL);
1017
1041
        cl = _tmp3_;
1018
 
        _tmp5_ = _vala_code_node_ref0 ((_tmp4_ = sym, VALA_IS_INTERFACE (_tmp4_) ? ((ValaInterface*) _tmp4_) : NULL));
 
1042
        _tmp4_ = sym;
 
1043
        _tmp5_ = _vala_code_node_ref0 (VALA_IS_INTERFACE (_tmp4_) ? ((ValaInterface*) _tmp4_) : NULL);
1019
1044
        iface = _tmp5_;
1020
1045
        if (ns != NULL) {
1021
1046
                {
1187
1212
        if (!_tmp1_) {
1188
1213
                return;
1189
1214
        }
1190
 
        _tmp3_ = _vala_code_node_ref0 ((_tmp2_ = type_symbol, VALA_IS_CLASS (_tmp2_) ? ((ValaClass*) _tmp2_) : NULL));
 
1215
        _tmp2_ = type_symbol;
 
1216
        _tmp3_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp2_) ? ((ValaClass*) _tmp2_) : NULL);
1191
1217
        cl = _tmp3_;
1192
1218
        if (cl != NULL) {
1193
1219
                gboolean _tmp4_;
1231
1257
        _tmp13_ = vala_ccode_identifier_new (_tmp12_);
1232
1258
        _tmp14_ = _tmp13_;
1233
1259
        _tmp15_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp14_);
1234
 
        register_call = (_tmp16_ = _tmp15_, _vala_ccode_node_unref0 (_tmp14_), _g_free0 (_tmp12_), _g_free0 (_tmp10_), _tmp16_);
 
1260
        _tmp16_ = _tmp15_;
 
1261
        _vala_ccode_node_unref0 (_tmp14_);
 
1262
        _g_free0 (_tmp12_);
 
1263
        _g_free0 (_tmp10_);
 
1264
        register_call = _tmp16_;
1235
1265
        _tmp17_ = vala_ccode_identifier_new (((ValaCCodeBaseModule*) self)->module_init_param_name);
1236
1266
        _tmp18_ = _tmp17_;
1237
1267
        vala_ccode_function_call_add_argument (register_call, (ValaCCodeExpression*) _tmp18_);
1256
1286
        ValaDataType* creturn_type;
1257
1287
        ValaDataType* _tmp14_ = NULL;
1258
1288
        gboolean _tmp15_;
1259
 
        gboolean _tmp18_ = FALSE;
1260
 
        ValaMemberBinding _tmp19_;
 
1289
        gboolean _tmp17_ = FALSE;
 
1290
        ValaMemberBinding _tmp18_;
 
1291
        gboolean _tmp23_ = FALSE;
1261
1292
        gboolean _tmp24_ = FALSE;
1262
 
        gboolean _tmp25_ = FALSE;
1263
 
        gboolean _tmp26_;
 
1293
        gboolean _tmp25_;
1264
1294
        ValaCCodeFunction* function = NULL;
1265
 
        gchar* _tmp33_ = NULL;
1266
 
        gchar* _tmp34_;
1267
 
        ValaCCodeFunction* _tmp35_ = NULL;
1268
 
        ValaCCodeFunction* _tmp36_;
1269
 
        gboolean _tmp37_;
1270
 
        ValaHashMap* _tmp39_ = NULL;
 
1295
        gchar* _tmp32_ = NULL;
 
1296
        gchar* _tmp33_;
 
1297
        ValaCCodeFunction* _tmp34_ = NULL;
 
1298
        gboolean _tmp35_;
 
1299
        ValaHashMap* _tmp37_ = NULL;
1271
1300
        ValaHashMap* cparam_map;
1272
 
        gboolean _tmp40_ = FALSE;
1273
 
        gboolean _tmp41_;
1274
 
        ValaComment* _tmp66_ = NULL;
1275
 
        gboolean _tmp71_ = FALSE;
1276
 
        gboolean _tmp72_;
1277
 
        ValaBlock* _tmp482_ = NULL;
1278
 
        gboolean _tmp484_ = FALSE;
1279
 
        gboolean _tmp485_;
1280
 
        gboolean _tmp577_ = FALSE;
1281
 
        gboolean _tmp578_;
1282
 
        gboolean _tmp603_ = FALSE;
1283
 
        gboolean _tmp604_ = FALSE;
1284
 
        gboolean _tmp605_ = FALSE;
1285
 
        gboolean _tmp606_;
1286
 
        gboolean _tmp613_;
 
1301
        gboolean _tmp38_ = FALSE;
 
1302
        gboolean _tmp39_;
 
1303
        ValaComment* _tmp65_ = NULL;
 
1304
        gboolean _tmp70_ = FALSE;
 
1305
        gboolean _tmp71_;
 
1306
        ValaBlock* _tmp471_ = NULL;
 
1307
        gboolean _tmp473_ = FALSE;
 
1308
        gboolean _tmp474_;
 
1309
        gboolean _tmp563_ = FALSE;
 
1310
        gboolean _tmp564_;
 
1311
        gboolean _tmp589_ = FALSE;
 
1312
        gboolean _tmp590_ = FALSE;
 
1313
        gboolean _tmp591_ = FALSE;
 
1314
        gboolean _tmp592_;
 
1315
        gboolean _tmp598_;
1287
1316
        self = (ValaCCodeMethodModule*) base;
1288
1317
        g_return_if_fail (m != NULL);
1289
1318
        _tmp0_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) m);
1301
1330
                ValaClass* cl;
1302
1331
                gboolean _tmp6_ = FALSE;
1303
1332
                _tmp3_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
1304
 
                _tmp5_ = _vala_code_node_ref0 ((_tmp4_ = _tmp3_, VALA_IS_CLASS (_tmp4_) ? ((ValaClass*) _tmp4_) : NULL));
 
1333
                _tmp4_ = _tmp3_;
 
1334
                _tmp5_ = _vala_code_node_ref0 (VALA_IS_CLASS (_tmp4_) ? ((ValaClass*) _tmp4_) : NULL);
1305
1335
                cl = _tmp5_;
1306
1336
                if (cl != NULL) {
1307
1337
                        gboolean _tmp7_;
1342
1372
        _tmp15_ = vala_data_type_is_real_non_null_struct_type (_tmp14_);
1343
1373
        if (_tmp15_) {
1344
1374
                ValaVoidType* _tmp16_ = NULL;
1345
 
                ValaDataType* _tmp17_;
1346
1375
                _tmp16_ = vala_void_type_new (NULL);
1347
 
                _tmp17_ = (ValaDataType*) _tmp16_;
1348
1376
                _vala_code_node_unref0 (creturn_type);
1349
 
                creturn_type = _tmp17_;
 
1377
                creturn_type = (ValaDataType*) _tmp16_;
1350
1378
        }
1351
 
        _tmp19_ = vala_method_get_binding (m);
1352
 
        if (_tmp19_ == VALA_MEMBER_BINDING_CLASS) {
1353
 
                _tmp18_ = TRUE;
 
1379
        _tmp18_ = vala_method_get_binding (m);
 
1380
        if (_tmp18_ == VALA_MEMBER_BINDING_CLASS) {
 
1381
                _tmp17_ = TRUE;
1354
1382
        } else {
1355
 
                ValaMemberBinding _tmp20_;
1356
 
                _tmp20_ = vala_method_get_binding (m);
1357
 
                _tmp18_ = _tmp20_ == VALA_MEMBER_BINDING_STATIC;
 
1383
                ValaMemberBinding _tmp19_;
 
1384
                _tmp19_ = vala_method_get_binding (m);
 
1385
                _tmp17_ = _tmp19_ == VALA_MEMBER_BINDING_STATIC;
1358
1386
        }
1359
 
        if (_tmp18_) {
 
1387
        if (_tmp17_) {
1360
1388
                ((ValaCCodeBaseModule*) self)->in_static_or_class_context = TRUE;
1361
1389
        }
1362
1390
        {
1363
 
                ValaList* _tmp21_ = NULL;
 
1391
                ValaList* _tmp20_ = NULL;
1364
1392
                ValaList* _param_list;
1365
 
                gint _tmp22_;
 
1393
                gint _tmp21_;
1366
1394
                gint _param_size;
1367
1395
                gint _param_index;
1368
 
                _tmp21_ = vala_method_get_parameters (m);
1369
 
                _param_list = _tmp21_;
1370
 
                _tmp22_ = vala_collection_get_size ((ValaCollection*) _param_list);
1371
 
                _param_size = _tmp22_;
 
1396
                _tmp20_ = vala_method_get_parameters (m);
 
1397
                _param_list = _tmp20_;
 
1398
                _tmp21_ = vala_collection_get_size ((ValaCollection*) _param_list);
 
1399
                _param_size = _tmp21_;
1372
1400
                _param_index = -1;
1373
1401
                while (TRUE) {
1374
 
                        gpointer _tmp23_ = NULL;
 
1402
                        gpointer _tmp22_ = NULL;
1375
1403
                        ValaParameter* param;
1376
1404
                        _param_index = _param_index + 1;
1377
1405
                        if (!(_param_index < _param_size)) {
1378
1406
                                break;
1379
1407
                        }
1380
 
                        _tmp23_ = vala_list_get (_param_list, _param_index);
1381
 
                        param = (ValaParameter*) _tmp23_;
 
1408
                        _tmp22_ = vala_list_get (_param_list, _param_index);
 
1409
                        param = (ValaParameter*) _tmp22_;
1382
1410
                        vala_code_node_accept ((ValaCodeNode*) param, (ValaCodeVisitor*) self);
1383
1411
                        _vala_code_node_unref0 (param);
1384
1412
                }
1385
1413
                _vala_iterable_unref0 (_param_list);
1386
1414
        }
1387
 
        _tmp26_ = vala_method_get_is_abstract (m);
1388
 
        if (_tmp26_) {
1389
 
                _tmp25_ = TRUE;
1390
 
        } else {
1391
 
                gboolean _tmp27_;
1392
 
                _tmp27_ = vala_method_get_is_virtual (m);
1393
 
                _tmp25_ = _tmp27_;
1394
 
        }
 
1415
        _tmp25_ = vala_method_get_is_abstract (m);
1395
1416
        if (_tmp25_) {
1396
1417
                _tmp24_ = TRUE;
1397
1418
        } else {
1398
 
                gboolean _tmp28_ = FALSE;
1399
 
                ValaMethod* _tmp29_ = NULL;
1400
 
                _tmp29_ = vala_method_get_base_method (m);
1401
 
                if (_tmp29_ == NULL) {
1402
 
                        ValaMethod* _tmp30_ = NULL;
1403
 
                        _tmp30_ = vala_method_get_base_interface_method (m);
1404
 
                        _tmp28_ = _tmp30_ == NULL;
1405
 
                } else {
1406
 
                        _tmp28_ = FALSE;
1407
 
                }
1408
 
                _tmp24_ = _tmp28_;
 
1419
                gboolean _tmp26_;
 
1420
                _tmp26_ = vala_method_get_is_virtual (m);
 
1421
                _tmp24_ = _tmp26_;
1409
1422
        }
1410
1423
        if (_tmp24_) {
 
1424
                _tmp23_ = TRUE;
 
1425
        } else {
 
1426
                gboolean _tmp27_ = FALSE;
 
1427
                ValaMethod* _tmp28_ = NULL;
 
1428
                _tmp28_ = vala_method_get_base_method (m);
 
1429
                if (_tmp28_ == NULL) {
 
1430
                        ValaMethod* _tmp29_ = NULL;
 
1431
                        _tmp29_ = vala_method_get_base_interface_method (m);
 
1432
                        _tmp27_ = _tmp29_ == NULL;
 
1433
                } else {
 
1434
                        _tmp27_ = FALSE;
 
1435
                }
 
1436
                _tmp23_ = _tmp27_;
 
1437
        }
 
1438
        if (_tmp23_) {
 
1439
                gboolean _tmp30_;
1411
1440
                gboolean _tmp31_;
1412
 
                gboolean _tmp32_;
1413
1441
                vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, m, ((ValaCCodeBaseModule*) self)->cfile);
1414
 
                _tmp31_ = vala_symbol_is_internal_symbol ((ValaSymbol*) m);
 
1442
                _tmp30_ = vala_symbol_is_internal_symbol ((ValaSymbol*) m);
 
1443
                if (!_tmp30_) {
 
1444
                        vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, m, ((ValaCCodeBaseModule*) self)->header_file);
 
1445
                }
 
1446
                _tmp31_ = vala_symbol_is_private_symbol ((ValaSymbol*) m);
1415
1447
                if (!_tmp31_) {
1416
 
                        vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, m, ((ValaCCodeBaseModule*) self)->header_file);
1417
 
                }
1418
 
                _tmp32_ = vala_symbol_is_private_symbol ((ValaSymbol*) m);
1419
 
                if (!_tmp32_) {
1420
1448
                        vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, m, ((ValaCCodeBaseModule*) self)->internal_header_file);
1421
1449
                }
1422
1450
        }
1423
 
        _tmp33_ = vala_method_get_real_cname (m);
1424
 
        _tmp34_ = _tmp33_;
1425
 
        _tmp35_ = vala_ccode_function_new (_tmp34_, "void");
1426
 
        _tmp36_ = _tmp35_;
 
1451
        _tmp32_ = vala_method_get_real_cname (m);
 
1452
        _tmp33_ = _tmp32_;
 
1453
        _tmp34_ = vala_ccode_function_new (_tmp33_, "void");
1427
1454
        _vala_ccode_node_unref0 (function);
1428
 
        function = _tmp36_;
1429
 
        _g_free0 (_tmp34_);
1430
 
        _tmp37_ = vala_method_get_is_inline (m);
1431
 
        if (_tmp37_) {
1432
 
                ValaCCodeModifiers _tmp38_;
1433
 
                _tmp38_ = vala_ccode_function_get_modifiers (function);
1434
 
                vala_ccode_function_set_modifiers (function, _tmp38_ | VALA_CCODE_MODIFIERS_INLINE);
 
1455
        function = _tmp34_;
 
1456
        _g_free0 (_tmp33_);
 
1457
        _tmp35_ = vala_method_get_is_inline (m);
 
1458
        if (_tmp35_) {
 
1459
                ValaCCodeModifiers _tmp36_;
 
1460
                _tmp36_ = vala_ccode_function_get_modifiers (function);
 
1461
                vala_ccode_function_set_modifiers (function, _tmp36_ | VALA_CCODE_MODIFIERS_INLINE);
1435
1462
        }
1436
 
        _tmp39_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
1437
 
        cparam_map = _tmp39_;
 
1463
        _tmp37_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
 
1464
        cparam_map = _tmp37_;
1438
1465
        vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, ((ValaCCodeBaseModule*) self)->cfile, (ValaMap*) cparam_map, function, NULL, NULL, NULL, 3);
1439
 
        _tmp41_ = vala_method_get_is_abstract (m);
1440
 
        if (!_tmp41_) {
1441
 
                _tmp40_ = TRUE;
 
1466
        _tmp39_ = vala_method_get_is_abstract (m);
 
1467
        if (!_tmp39_) {
 
1468
                _tmp38_ = TRUE;
1442
1469
        } else {
1443
 
                gboolean _tmp42_ = FALSE;
 
1470
                gboolean _tmp40_ = FALSE;
 
1471
                gboolean _tmp41_;
 
1472
                _tmp41_ = vala_method_get_is_abstract (m);
 
1473
                if (_tmp41_) {
 
1474
                        ValaTypeSymbol* _tmp42_ = NULL;
 
1475
                        _tmp42_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
 
1476
                        _tmp40_ = VALA_IS_CLASS (_tmp42_);
 
1477
                } else {
 
1478
                        _tmp40_ = FALSE;
 
1479
                }
 
1480
                _tmp38_ = _tmp40_;
 
1481
        }
 
1482
        if (_tmp38_) {
1444
1483
                gboolean _tmp43_;
1445
 
                _tmp43_ = vala_method_get_is_abstract (m);
1446
 
                if (_tmp43_) {
1447
 
                        ValaTypeSymbol* _tmp44_ = NULL;
1448
 
                        _tmp44_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
1449
 
                        _tmp42_ = VALA_IS_CLASS (_tmp44_);
1450
 
                } else {
1451
 
                        _tmp42_ = FALSE;
1452
 
                }
1453
 
                _tmp40_ = _tmp42_;
1454
 
        }
1455
 
        if (_tmp40_) {
1456
 
                gboolean _tmp45_;
1457
 
                _tmp45_ = vala_method_get_coroutine (m);
1458
 
                if (!_tmp45_) {
1459
 
                        gboolean _tmp46_ = FALSE;
1460
 
                        ValaMethod* _tmp47_ = NULL;
1461
 
                        _tmp47_ = vala_method_get_base_method (m);
1462
 
                        if (_tmp47_ != NULL) {
1463
 
                                _tmp46_ = TRUE;
 
1484
                _tmp43_ = vala_method_get_coroutine (m);
 
1485
                if (!_tmp43_) {
 
1486
                        gboolean _tmp44_ = FALSE;
 
1487
                        ValaMethod* _tmp45_ = NULL;
 
1488
                        _tmp45_ = vala_method_get_base_method (m);
 
1489
                        if (_tmp45_ != NULL) {
 
1490
                                _tmp44_ = TRUE;
1464
1491
                        } else {
1465
 
                                ValaMethod* _tmp48_ = NULL;
1466
 
                                _tmp48_ = vala_method_get_base_interface_method (m);
1467
 
                                _tmp46_ = _tmp48_ != NULL;
 
1492
                                ValaMethod* _tmp46_ = NULL;
 
1493
                                _tmp46_ = vala_method_get_base_interface_method (m);
 
1494
                                _tmp44_ = _tmp46_ != NULL;
1468
1495
                        }
1469
 
                        if (_tmp46_) {
1470
 
                                ValaCCodeModifiers _tmp49_;
1471
 
                                _tmp49_ = vala_ccode_function_get_modifiers (function);
1472
 
                                vala_ccode_function_set_modifiers (function, _tmp49_ | VALA_CCODE_MODIFIERS_STATIC);
 
1496
                        if (_tmp44_) {
 
1497
                                ValaCCodeModifiers _tmp47_;
 
1498
                                _tmp47_ = vala_ccode_function_get_modifiers (function);
 
1499
                                vala_ccode_function_set_modifiers (function, _tmp47_ | VALA_CCODE_MODIFIERS_STATIC);
1473
1500
                                vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, function);
1474
1501
                        } else {
1475
 
                                gboolean _tmp50_;
1476
 
                                _tmp50_ = vala_symbol_is_private_symbol ((ValaSymbol*) m);
1477
 
                                if (_tmp50_) {
1478
 
                                        ValaCCodeModifiers _tmp51_;
1479
 
                                        _tmp51_ = vala_ccode_function_get_modifiers (function);
1480
 
                                        vala_ccode_function_set_modifiers (function, _tmp51_ | VALA_CCODE_MODIFIERS_STATIC);
 
1502
                                gboolean _tmp48_;
 
1503
                                _tmp48_ = vala_symbol_is_private_symbol ((ValaSymbol*) m);
 
1504
                                if (_tmp48_) {
 
1505
                                        ValaCCodeModifiers _tmp49_;
 
1506
                                        _tmp49_ = vala_ccode_function_get_modifiers (function);
 
1507
                                        vala_ccode_function_set_modifiers (function, _tmp49_ | VALA_CCODE_MODIFIERS_STATIC);
1481
1508
                                }
1482
1509
                        }
1483
1510
                } else {
1484
 
                        ValaBlock* _tmp52_ = NULL;
1485
 
                        _tmp52_ = vala_subroutine_get_body ((ValaSubroutine*) m);
1486
 
                        if (_tmp52_ != NULL) {
1487
 
                                gchar* _tmp53_ = NULL;
 
1511
                        ValaBlock* _tmp50_ = NULL;
 
1512
                        _tmp50_ = vala_subroutine_get_body ((ValaSubroutine*) m);
 
1513
                        if (_tmp50_ != NULL) {
 
1514
                                gchar* _tmp51_ = NULL;
 
1515
                                gchar* _tmp52_;
 
1516
                                gchar* _tmp53_;
1488
1517
                                gchar* _tmp54_;
1489
 
                                gchar* _tmp55_;
1490
 
                                ValaCCodeFunction* _tmp56_ = NULL;
1491
 
                                ValaCCodeFunction* _tmp57_;
 
1518
                                ValaCCodeFunction* _tmp55_ = NULL;
 
1519
                                gchar* _tmp56_ = NULL;
 
1520
                                gchar* _tmp57_;
1492
1521
                                gchar* _tmp58_ = NULL;
1493
1522
                                gchar* _tmp59_;
1494
 
                                gchar* _tmp60_ = NULL;
 
1523
                                gchar* _tmp60_;
1495
1524
                                gchar* _tmp61_;
1496
 
                                gchar* _tmp62_;
1497
 
                                ValaCCodeParameter* _tmp63_ = NULL;
1498
 
                                ValaCCodeParameter* _tmp64_;
1499
 
                                ValaCCodeModifiers _tmp65_;
1500
 
                                _tmp53_ = vala_method_get_real_cname (m);
 
1525
                                ValaCCodeParameter* _tmp62_ = NULL;
 
1526
                                ValaCCodeParameter* _tmp63_;
 
1527
                                ValaCCodeModifiers _tmp64_;
 
1528
                                _tmp51_ = vala_method_get_real_cname (m);
 
1529
                                _tmp52_ = _tmp51_;
 
1530
                                _tmp53_ = g_strconcat (_tmp52_, "_co", NULL);
1501
1531
                                _tmp54_ = _tmp53_;
1502
 
                                _tmp55_ = g_strconcat (_tmp54_, "_co", NULL);
1503
 
                                _tmp56_ = vala_ccode_function_new (_tmp55_, "gboolean");
1504
 
                                _tmp57_ = _tmp56_;
 
1532
                                _tmp55_ = vala_ccode_function_new (_tmp54_, "gboolean");
1505
1533
                                _vala_ccode_node_unref0 (function);
1506
 
                                function = _tmp57_;
1507
 
                                _g_free0 (_tmp55_);
 
1534
                                function = _tmp55_;
1508
1535
                                _g_free0 (_tmp54_);
1509
 
                                _tmp58_ = vala_method_get_cname (m);
 
1536
                                _g_free0 (_tmp52_);
 
1537
                                _tmp56_ = vala_method_get_cname (m);
 
1538
                                _tmp57_ = _tmp56_;
 
1539
                                _tmp58_ = vala_symbol_lower_case_to_camel_case (_tmp57_);
1510
1540
                                _tmp59_ = _tmp58_;
1511
 
                                _tmp60_ = vala_symbol_lower_case_to_camel_case (_tmp59_);
 
1541
                                _tmp60_ = g_strconcat (_tmp59_, "Data*", NULL);
1512
1542
                                _tmp61_ = _tmp60_;
1513
 
                                _tmp62_ = g_strconcat (_tmp61_, "Data*", NULL);
1514
 
                                _tmp63_ = vala_ccode_parameter_new ("data", _tmp62_);
1515
 
                                _tmp64_ = _tmp63_;
1516
 
                                vala_ccode_function_add_parameter (function, _tmp64_);
1517
 
                                _vala_ccode_node_unref0 (_tmp64_);
1518
 
                                _g_free0 (_tmp62_);
 
1543
                                _tmp62_ = vala_ccode_parameter_new ("data", _tmp61_);
 
1544
                                _tmp63_ = _tmp62_;
 
1545
                                vala_ccode_function_add_parameter (function, _tmp63_);
 
1546
                                _vala_ccode_node_unref0 (_tmp63_);
1519
1547
                                _g_free0 (_tmp61_);
1520
1548
                                _g_free0 (_tmp59_);
1521
 
                                _tmp65_ = vala_ccode_function_get_modifiers (function);
1522
 
                                vala_ccode_function_set_modifiers (function, _tmp65_ | VALA_CCODE_MODIFIERS_STATIC);
 
1549
                                _g_free0 (_tmp57_);
 
1550
                                _tmp64_ = vala_ccode_function_get_modifiers (function);
 
1551
                                vala_ccode_function_set_modifiers (function, _tmp64_ | VALA_CCODE_MODIFIERS_STATIC);
1523
1552
                                vala_ccode_file_add_function_declaration (((ValaCCodeBaseModule*) self)->cfile, function);
1524
1553
                        }
1525
1554
                }
1526
1555
        }
1527
 
        _tmp66_ = vala_symbol_get_comment ((ValaSymbol*) m);
1528
 
        if (_tmp66_ != NULL) {
1529
 
                ValaComment* _tmp67_ = NULL;
1530
 
                const gchar* _tmp68_ = NULL;
1531
 
                ValaCCodeComment* _tmp69_ = NULL;
1532
 
                ValaCCodeComment* _tmp70_;
1533
 
                _tmp67_ = vala_symbol_get_comment ((ValaSymbol*) m);
1534
 
                _tmp68_ = vala_comment_get_content (_tmp67_);
1535
 
                _tmp69_ = vala_ccode_comment_new (_tmp68_);
1536
 
                _tmp70_ = _tmp69_;
1537
 
                vala_ccode_file_add_type_member_definition (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp70_);
1538
 
                _vala_ccode_node_unref0 (_tmp70_);
 
1556
        _tmp65_ = vala_symbol_get_comment ((ValaSymbol*) m);
 
1557
        if (_tmp65_ != NULL) {
 
1558
                ValaComment* _tmp66_ = NULL;
 
1559
                const gchar* _tmp67_ = NULL;
 
1560
                ValaCCodeComment* _tmp68_ = NULL;
 
1561
                ValaCCodeComment* _tmp69_;
 
1562
                _tmp66_ = vala_symbol_get_comment ((ValaSymbol*) m);
 
1563
                _tmp67_ = vala_comment_get_content (_tmp66_);
 
1564
                _tmp68_ = vala_ccode_comment_new (_tmp67_);
 
1565
                _tmp69_ = _tmp68_;
 
1566
                vala_ccode_file_add_type_member_definition (((ValaCCodeBaseModule*) self)->cfile, (ValaCCodeNode*) _tmp69_);
 
1567
                _vala_ccode_node_unref0 (_tmp69_);
1539
1568
        }
1540
1569
        vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
1541
 
        _tmp72_ = vala_method_get_is_abstract (m);
1542
 
        if (!_tmp72_) {
1543
 
                _tmp71_ = TRUE;
 
1570
        _tmp71_ = vala_method_get_is_abstract (m);
 
1571
        if (!_tmp71_) {
 
1572
                _tmp70_ = TRUE;
1544
1573
        } else {
1545
 
                gboolean _tmp73_ = FALSE;
1546
 
                gboolean _tmp74_;
1547
 
                _tmp74_ = vala_method_get_is_abstract (m);
1548
 
                if (_tmp74_) {
1549
 
                        ValaTypeSymbol* _tmp75_ = NULL;
1550
 
                        _tmp75_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
1551
 
                        _tmp73_ = VALA_IS_CLASS (_tmp75_);
 
1574
                gboolean _tmp72_ = FALSE;
 
1575
                gboolean _tmp73_;
 
1576
                _tmp73_ = vala_method_get_is_abstract (m);
 
1577
                if (_tmp73_) {
 
1578
                        ValaTypeSymbol* _tmp74_ = NULL;
 
1579
                        _tmp74_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
 
1580
                        _tmp72_ = VALA_IS_CLASS (_tmp74_);
1552
1581
                } else {
1553
 
                        _tmp73_ = FALSE;
 
1582
                        _tmp72_ = FALSE;
1554
1583
                }
1555
 
                _tmp71_ = _tmp73_;
 
1584
                _tmp70_ = _tmp72_;
1556
1585
        }
1557
 
        if (_tmp71_) {
1558
 
                ValaBlock* _tmp76_ = NULL;
1559
 
                _tmp76_ = vala_subroutine_get_body ((ValaSubroutine*) m);
1560
 
                if (_tmp76_ != NULL) {
1561
 
                        gboolean _tmp77_;
1562
 
                        gboolean _tmp105_;
1563
 
                        gboolean _tmp324_ = FALSE;
1564
 
                        gboolean _tmp325_ = FALSE;
1565
 
                        ValaDataType* _tmp326_ = NULL;
1566
 
                        gboolean _tmp472_ = FALSE;
1567
 
                        ValaCodeContext* _tmp473_ = NULL;
1568
 
                        ValaMethod* _tmp474_ = NULL;
1569
 
                        _tmp77_ = vala_method_get_coroutine (m);
1570
 
                        if (_tmp77_) {
1571
 
                                ValaCCodeFunction* _tmp78_ = NULL;
1572
 
                                ValaCCodeIdentifier* _tmp79_ = NULL;
1573
 
                                ValaCCodeIdentifier* _tmp80_;
1574
 
                                ValaCCodeMemberAccess* _tmp81_ = NULL;
1575
 
                                ValaCCodeMemberAccess* _tmp82_;
1576
 
                                ValaCCodeFunction* _tmp83_ = NULL;
1577
 
                                ValaCCodeConstant* _tmp84_ = NULL;
1578
 
                                ValaCCodeConstant* _tmp85_;
1579
 
                                ValaCCodeFunction* _tmp86_ = NULL;
 
1586
        if (_tmp70_) {
 
1587
                ValaBlock* _tmp75_ = NULL;
 
1588
                _tmp75_ = vala_subroutine_get_body ((ValaSubroutine*) m);
 
1589
                if (_tmp75_ != NULL) {
 
1590
                        gboolean _tmp76_;
 
1591
                        gboolean _tmp104_;
 
1592
                        gboolean _tmp316_ = FALSE;
 
1593
                        gboolean _tmp317_ = FALSE;
 
1594
                        ValaDataType* _tmp318_ = NULL;
 
1595
                        gboolean _tmp461_ = FALSE;
 
1596
                        ValaCodeContext* _tmp462_ = NULL;
 
1597
                        ValaMethod* _tmp463_ = NULL;
 
1598
                        _tmp76_ = vala_method_get_coroutine (m);
 
1599
                        if (_tmp76_) {
 
1600
                                ValaCCodeFunction* _tmp77_ = NULL;
 
1601
                                ValaCCodeIdentifier* _tmp78_ = NULL;
 
1602
                                ValaCCodeIdentifier* _tmp79_;
 
1603
                                ValaCCodeMemberAccess* _tmp80_ = NULL;
 
1604
                                ValaCCodeMemberAccess* _tmp81_;
 
1605
                                ValaCCodeFunction* _tmp82_ = NULL;
 
1606
                                ValaCCodeConstant* _tmp83_ = NULL;
 
1607
                                ValaCCodeConstant* _tmp84_;
 
1608
                                ValaCCodeFunction* _tmp85_ = NULL;
 
1609
                                ValaCCodeFunction* _tmp96_ = NULL;
1580
1610
                                ValaCCodeFunction* _tmp97_ = NULL;
1581
 
                                ValaCCodeFunction* _tmp98_ = NULL;
1582
 
                                ValaCCodeIdentifier* _tmp99_ = NULL;
1583
 
                                ValaCCodeIdentifier* _tmp100_;
1584
 
                                ValaCCodeFunctionCall* _tmp101_ = NULL;
1585
 
                                ValaCCodeFunctionCall* _tmp102_;
 
1611
                                ValaCCodeIdentifier* _tmp98_ = NULL;
 
1612
                                ValaCCodeIdentifier* _tmp99_;
 
1613
                                ValaCCodeFunctionCall* _tmp100_ = NULL;
 
1614
                                ValaCCodeFunctionCall* _tmp101_;
 
1615
                                ValaCCodeFunction* _tmp102_ = NULL;
1586
1616
                                ValaCCodeFunction* _tmp103_ = NULL;
1587
 
                                ValaCCodeFunction* _tmp104_ = NULL;
1588
 
                                _tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1589
 
                                _tmp79_ = vala_ccode_identifier_new ("data");
1590
 
                                _tmp80_ = _tmp79_;
1591
 
                                _tmp81_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp80_, "_state_");
1592
 
                                _tmp82_ = _tmp81_;
1593
 
                                vala_ccode_function_open_switch (_tmp78_, (ValaCCodeExpression*) _tmp82_);
1594
 
                                _vala_ccode_node_unref0 (_tmp82_);
1595
 
                                _vala_ccode_node_unref0 (_tmp80_);
1596
 
                                _tmp83_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1597
 
                                _tmp84_ = vala_ccode_constant_new ("0");
1598
 
                                _tmp85_ = _tmp84_;
1599
 
                                vala_ccode_function_add_case (_tmp83_, (ValaCCodeExpression*) _tmp85_);
1600
 
                                _vala_ccode_node_unref0 (_tmp85_);
1601
 
                                _tmp86_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1602
 
                                vala_ccode_function_add_goto (_tmp86_, "_state_0");
 
1617
                                _tmp77_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1618
                                _tmp78_ = vala_ccode_identifier_new ("data");
 
1619
                                _tmp79_ = _tmp78_;
 
1620
                                _tmp80_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp79_, "_state_");
 
1621
                                _tmp81_ = _tmp80_;
 
1622
                                vala_ccode_function_open_switch (_tmp77_, (ValaCCodeExpression*) _tmp81_);
 
1623
                                _vala_ccode_node_unref0 (_tmp81_);
 
1624
                                _vala_ccode_node_unref0 (_tmp79_);
 
1625
                                _tmp82_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1626
                                _tmp83_ = vala_ccode_constant_new ("0");
 
1627
                                _tmp84_ = _tmp83_;
 
1628
                                vala_ccode_function_add_case (_tmp82_, (ValaCCodeExpression*) _tmp84_);
 
1629
                                _vala_ccode_node_unref0 (_tmp84_);
 
1630
                                _tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1631
                                vala_ccode_function_add_goto (_tmp85_, "_state_0");
1603
1632
                                {
1604
1633
                                        gint state;
1605
1634
                                        state = 1;
1606
1635
                                        {
1607
 
                                                gboolean _tmp87_;
1608
 
                                                _tmp87_ = TRUE;
 
1636
                                                gboolean _tmp86_;
 
1637
                                                _tmp86_ = TRUE;
1609
1638
                                                while (TRUE) {
1610
 
                                                        gint _tmp88_;
1611
 
                                                        ValaCCodeFunction* _tmp89_ = NULL;
1612
 
                                                        gchar* _tmp90_ = NULL;
1613
 
                                                        gchar* _tmp91_;
1614
 
                                                        ValaCCodeConstant* _tmp92_ = NULL;
1615
 
                                                        ValaCCodeConstant* _tmp93_;
1616
 
                                                        ValaCCodeFunction* _tmp94_ = NULL;
1617
 
                                                        gchar* _tmp95_ = NULL;
1618
 
                                                        gchar* _tmp96_;
1619
 
                                                        if (!_tmp87_) {
 
1639
                                                        gint _tmp87_;
 
1640
                                                        ValaCCodeFunction* _tmp88_ = NULL;
 
1641
                                                        gchar* _tmp89_ = NULL;
 
1642
                                                        gchar* _tmp90_;
 
1643
                                                        ValaCCodeConstant* _tmp91_ = NULL;
 
1644
                                                        ValaCCodeConstant* _tmp92_;
 
1645
                                                        ValaCCodeFunction* _tmp93_ = NULL;
 
1646
                                                        gchar* _tmp94_ = NULL;
 
1647
                                                        gchar* _tmp95_;
 
1648
                                                        if (!_tmp86_) {
1620
1649
                                                                state++;
1621
1650
                                                        }
1622
 
                                                        _tmp87_ = FALSE;
1623
 
                                                        _tmp88_ = vala_method_get_yield_count (m);
1624
 
                                                        if (!(state <= _tmp88_)) {
 
1651
                                                        _tmp86_ = FALSE;
 
1652
                                                        _tmp87_ = vala_method_get_yield_count (m);
 
1653
                                                        if (!(state <= _tmp87_)) {
1625
1654
                                                                break;
1626
1655
                                                        }
1627
 
                                                        _tmp89_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1628
 
                                                        _tmp90_ = g_strdup_printf ("%i", state);
1629
 
                                                        _tmp91_ = _tmp90_;
1630
 
                                                        _tmp92_ = vala_ccode_constant_new (_tmp91_);
1631
 
                                                        _tmp93_ = _tmp92_;
1632
 
                                                        vala_ccode_function_add_case (_tmp89_, (ValaCCodeExpression*) _tmp93_);
1633
 
                                                        _vala_ccode_node_unref0 (_tmp93_);
1634
 
                                                        _g_free0 (_tmp91_);
1635
 
                                                        _tmp94_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1636
 
                                                        _tmp95_ = g_strdup_printf ("_state_%d", state);
1637
 
                                                        _tmp96_ = _tmp95_;
1638
 
                                                        vala_ccode_function_add_goto (_tmp94_, _tmp96_);
1639
 
                                                        _g_free0 (_tmp96_);
 
1656
                                                        _tmp88_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1657
                                                        _tmp89_ = g_strdup_printf ("%i", state);
 
1658
                                                        _tmp90_ = _tmp89_;
 
1659
                                                        _tmp91_ = vala_ccode_constant_new (_tmp90_);
 
1660
                                                        _tmp92_ = _tmp91_;
 
1661
                                                        vala_ccode_function_add_case (_tmp88_, (ValaCCodeExpression*) _tmp92_);
 
1662
                                                        _vala_ccode_node_unref0 (_tmp92_);
 
1663
                                                        _g_free0 (_tmp90_);
 
1664
                                                        _tmp93_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1665
                                                        _tmp94_ = g_strdup_printf ("_state_%d", state);
 
1666
                                                        _tmp95_ = _tmp94_;
 
1667
                                                        vala_ccode_function_add_goto (_tmp93_, _tmp95_);
 
1668
                                                        _g_free0 (_tmp95_);
1640
1669
                                                }
1641
1670
                                        }
1642
1671
                                }
 
1672
                                _tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1673
                                vala_ccode_function_add_default (_tmp96_);
1643
1674
                                _tmp97_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1644
 
                                vala_ccode_function_add_default (_tmp97_);
1645
 
                                _tmp98_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1646
 
                                _tmp99_ = vala_ccode_identifier_new ("g_assert_not_reached");
1647
 
                                _tmp100_ = _tmp99_;
1648
 
                                _tmp101_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp100_);
1649
 
                                _tmp102_ = _tmp101_;
1650
 
                                vala_ccode_function_add_expression (_tmp98_, (ValaCCodeExpression*) _tmp102_);
1651
 
                                _vala_ccode_node_unref0 (_tmp102_);
1652
 
                                _vala_ccode_node_unref0 (_tmp100_);
 
1675
                                _tmp98_ = vala_ccode_identifier_new ("g_assert_not_reached");
 
1676
                                _tmp99_ = _tmp98_;
 
1677
                                _tmp100_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp99_);
 
1678
                                _tmp101_ = _tmp100_;
 
1679
                                vala_ccode_function_add_expression (_tmp97_, (ValaCCodeExpression*) _tmp101_);
 
1680
                                _vala_ccode_node_unref0 (_tmp101_);
 
1681
                                _vala_ccode_node_unref0 (_tmp99_);
 
1682
                                _tmp102_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1683
                                vala_ccode_function_close (_tmp102_);
1653
1684
                                _tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1654
 
                                vala_ccode_function_close (_tmp103_);
1655
 
                                _tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1656
 
                                vala_ccode_function_add_label (_tmp104_, "_state_0");
 
1685
                                vala_ccode_function_add_label (_tmp103_, "_state_0");
1657
1686
                        }
1658
 
                        _tmp105_ = vala_method_get_closure (m);
1659
 
                        if (_tmp105_) {
1660
 
                                ValaBlock* _tmp106_ = NULL;
1661
 
                                ValaBlock* _tmp107_;
 
1687
                        _tmp104_ = vala_method_get_closure (m);
 
1688
                        if (_tmp104_) {
 
1689
                                ValaBlock* _tmp105_ = NULL;
 
1690
                                ValaBlock* _tmp106_;
1662
1691
                                ValaBlock* closure_block;
1663
 
                                gint _tmp108_;
 
1692
                                gint _tmp107_;
1664
1693
                                gint block_id;
1665
 
                                ValaMemberBinding _tmp135_;
1666
 
                                _tmp106_ = vala_ccode_base_module_get_current_closure_block ((ValaCCodeBaseModule*) self);
1667
 
                                _tmp107_ = _vala_code_node_ref0 (_tmp106_);
1668
 
                                closure_block = _tmp107_;
1669
 
                                _tmp108_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, closure_block);
1670
 
                                block_id = _tmp108_;
 
1694
                                ValaMemberBinding _tmp133_;
 
1695
                                _tmp105_ = vala_ccode_base_module_get_current_closure_block ((ValaCCodeBaseModule*) self);
 
1696
                                _tmp106_ = _vala_code_node_ref0 (_tmp105_);
 
1697
                                closure_block = _tmp106_;
 
1698
                                _tmp107_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, closure_block);
 
1699
                                block_id = _tmp107_;
1671
1700
                                while (TRUE) {
1672
 
                                        ValaSymbol* _tmp109_ = NULL;
1673
 
                                        ValaBlock* _tmp110_ = NULL;
1674
 
                                        ValaBlock* _tmp111_;
 
1701
                                        ValaSymbol* _tmp108_ = NULL;
 
1702
                                        ValaBlock* _tmp109_ = NULL;
 
1703
                                        ValaBlock* _tmp110_;
1675
1704
                                        ValaBlock* parent_closure_block;
1676
 
                                        gint _tmp112_;
 
1705
                                        gint _tmp111_;
1677
1706
                                        gint parent_block_id;
1678
 
                                        gchar* _tmp113_ = NULL;
1679
 
                                        gchar* _tmp114_;
1680
 
                                        ValaCCodeIdentifier* _tmp115_ = NULL;
1681
 
                                        ValaCCodeIdentifier* _tmp116_;
1682
 
                                        gchar* _tmp117_ = NULL;
1683
 
                                        gchar* _tmp118_;
1684
 
                                        ValaCCodeMemberAccess* _tmp119_ = NULL;
1685
 
                                        ValaCCodeMemberAccess* _tmp120_;
 
1707
                                        gchar* _tmp112_ = NULL;
 
1708
                                        gchar* _tmp113_;
 
1709
                                        ValaCCodeIdentifier* _tmp114_ = NULL;
 
1710
                                        ValaCCodeIdentifier* _tmp115_;
 
1711
                                        gchar* _tmp116_ = NULL;
 
1712
                                        gchar* _tmp117_;
 
1713
                                        ValaCCodeMemberAccess* _tmp118_ = NULL;
 
1714
                                        ValaCCodeMemberAccess* _tmp119_;
1686
1715
                                        ValaCCodeMemberAccess* parent_data;
1687
 
                                        ValaCCodeFunction* _tmp121_ = NULL;
1688
 
                                        gchar* _tmp122_ = NULL;
1689
 
                                        gchar* _tmp123_;
1690
 
                                        gchar* _tmp124_ = NULL;
1691
 
                                        gchar* _tmp125_;
1692
 
                                        ValaCCodeVariableDeclarator* _tmp126_ = NULL;
1693
 
                                        ValaCCodeVariableDeclarator* _tmp127_;
1694
 
                                        ValaCCodeFunction* _tmp128_ = NULL;
1695
 
                                        gchar* _tmp129_ = NULL;
1696
 
                                        gchar* _tmp130_;
1697
 
                                        ValaCCodeIdentifier* _tmp131_ = NULL;
1698
 
                                        ValaCCodeIdentifier* _tmp132_;
1699
 
                                        ValaBlock* _tmp133_;
1700
 
                                        ValaBlock* _tmp134_;
1701
 
                                        _tmp109_ = vala_symbol_get_parent_symbol ((ValaSymbol*) closure_block);
1702
 
                                        _tmp110_ = vala_ccode_base_module_next_closure_block ((ValaCCodeBaseModule*) self, _tmp109_);
1703
 
                                        _tmp111_ = _vala_code_node_ref0 (_tmp110_);
1704
 
                                        parent_closure_block = _tmp111_;
 
1716
                                        ValaCCodeFunction* _tmp120_ = NULL;
 
1717
                                        gchar* _tmp121_ = NULL;
 
1718
                                        gchar* _tmp122_;
 
1719
                                        gchar* _tmp123_ = NULL;
 
1720
                                        gchar* _tmp124_;
 
1721
                                        ValaCCodeVariableDeclarator* _tmp125_ = NULL;
 
1722
                                        ValaCCodeVariableDeclarator* _tmp126_;
 
1723
                                        ValaCCodeFunction* _tmp127_ = NULL;
 
1724
                                        gchar* _tmp128_ = NULL;
 
1725
                                        gchar* _tmp129_;
 
1726
                                        ValaCCodeIdentifier* _tmp130_ = NULL;
 
1727
                                        ValaCCodeIdentifier* _tmp131_;
 
1728
                                        ValaBlock* _tmp132_;
 
1729
                                        _tmp108_ = vala_symbol_get_parent_symbol ((ValaSymbol*) closure_block);
 
1730
                                        _tmp109_ = vala_ccode_base_module_next_closure_block ((ValaCCodeBaseModule*) self, _tmp108_);
 
1731
                                        _tmp110_ = _vala_code_node_ref0 (_tmp109_);
 
1732
                                        parent_closure_block = _tmp110_;
1705
1733
                                        if (parent_closure_block == NULL) {
1706
1734
                                                _vala_code_node_unref0 (parent_closure_block);
1707
1735
                                                break;
1708
1736
                                        }
1709
 
                                        _tmp112_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, parent_closure_block);
1710
 
                                        parent_block_id = _tmp112_;
1711
 
                                        _tmp113_ = g_strdup_printf ("_data%d_", block_id);
1712
 
                                        _tmp114_ = _tmp113_;
1713
 
                                        _tmp115_ = vala_ccode_identifier_new (_tmp114_);
1714
 
                                        _tmp116_ = _tmp115_;
1715
 
                                        _tmp117_ = g_strdup_printf ("_data%d_", parent_block_id);
1716
 
                                        _tmp118_ = _tmp117_;
1717
 
                                        _tmp119_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp116_, _tmp118_);
1718
 
                                        parent_data = (_tmp120_ = _tmp119_, _g_free0 (_tmp118_), _vala_ccode_node_unref0 (_tmp116_), _g_free0 (_tmp114_), _tmp120_);
1719
 
                                        _tmp121_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1720
 
                                        _tmp122_ = g_strdup_printf ("Block%dData*", parent_block_id);
1721
 
                                        _tmp123_ = _tmp122_;
1722
 
                                        _tmp124_ = g_strdup_printf ("_data%d_", parent_block_id);
1723
 
                                        _tmp125_ = _tmp124_;
1724
 
                                        _tmp126_ = vala_ccode_variable_declarator_new (_tmp125_, NULL, NULL);
1725
 
                                        _tmp127_ = _tmp126_;
1726
 
                                        vala_ccode_function_add_declaration (_tmp121_, _tmp123_, (ValaCCodeDeclarator*) _tmp127_, 0);
1727
 
                                        _vala_ccode_node_unref0 (_tmp127_);
1728
 
                                        _g_free0 (_tmp125_);
1729
 
                                        _g_free0 (_tmp123_);
1730
 
                                        _tmp128_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1731
 
                                        _tmp129_ = g_strdup_printf ("_data%d_", parent_block_id);
1732
 
                                        _tmp130_ = _tmp129_;
1733
 
                                        _tmp131_ = vala_ccode_identifier_new (_tmp130_);
1734
 
                                        _tmp132_ = _tmp131_;
1735
 
                                        vala_ccode_function_add_assignment (_tmp128_, (ValaCCodeExpression*) _tmp132_, (ValaCCodeExpression*) parent_data);
1736
 
                                        _vala_ccode_node_unref0 (_tmp132_);
1737
 
                                        _g_free0 (_tmp130_);
1738
 
                                        _tmp133_ = _vala_code_node_ref0 (parent_closure_block);
1739
 
                                        _tmp134_ = _tmp133_;
 
1737
                                        _tmp111_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, parent_closure_block);
 
1738
                                        parent_block_id = _tmp111_;
 
1739
                                        _tmp112_ = g_strdup_printf ("_data%d_", block_id);
 
1740
                                        _tmp113_ = _tmp112_;
 
1741
                                        _tmp114_ = vala_ccode_identifier_new (_tmp113_);
 
1742
                                        _tmp115_ = _tmp114_;
 
1743
                                        _tmp116_ = g_strdup_printf ("_data%d_", parent_block_id);
 
1744
                                        _tmp117_ = _tmp116_;
 
1745
                                        _tmp118_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp115_, _tmp117_);
 
1746
                                        _tmp119_ = _tmp118_;
 
1747
                                        _g_free0 (_tmp117_);
 
1748
                                        _vala_ccode_node_unref0 (_tmp115_);
 
1749
                                        _g_free0 (_tmp113_);
 
1750
                                        parent_data = _tmp119_;
 
1751
                                        _tmp120_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1752
                                        _tmp121_ = g_strdup_printf ("Block%dData*", parent_block_id);
 
1753
                                        _tmp122_ = _tmp121_;
 
1754
                                        _tmp123_ = g_strdup_printf ("_data%d_", parent_block_id);
 
1755
                                        _tmp124_ = _tmp123_;
 
1756
                                        _tmp125_ = vala_ccode_variable_declarator_new (_tmp124_, NULL, NULL);
 
1757
                                        _tmp126_ = _tmp125_;
 
1758
                                        vala_ccode_function_add_declaration (_tmp120_, _tmp122_, (ValaCCodeDeclarator*) _tmp126_, 0);
 
1759
                                        _vala_ccode_node_unref0 (_tmp126_);
 
1760
                                        _g_free0 (_tmp124_);
 
1761
                                        _g_free0 (_tmp122_);
 
1762
                                        _tmp127_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1763
                                        _tmp128_ = g_strdup_printf ("_data%d_", parent_block_id);
 
1764
                                        _tmp129_ = _tmp128_;
 
1765
                                        _tmp130_ = vala_ccode_identifier_new (_tmp129_);
 
1766
                                        _tmp131_ = _tmp130_;
 
1767
                                        vala_ccode_function_add_assignment (_tmp127_, (ValaCCodeExpression*) _tmp131_, (ValaCCodeExpression*) parent_data);
 
1768
                                        _vala_ccode_node_unref0 (_tmp131_);
 
1769
                                        _g_free0 (_tmp129_);
 
1770
                                        _tmp132_ = _vala_code_node_ref0 (parent_closure_block);
1740
1771
                                        _vala_code_node_unref0 (closure_block);
1741
 
                                        closure_block = _tmp134_;
 
1772
                                        closure_block = _tmp132_;
1742
1773
                                        block_id = parent_block_id;
1743
1774
                                        _vala_ccode_node_unref0 (parent_data);
1744
1775
                                        _vala_code_node_unref0 (parent_closure_block);
1745
1776
                                }
1746
 
                                _tmp135_ = vala_method_get_binding (m);
1747
 
                                if (_tmp135_ == VALA_MEMBER_BINDING_INSTANCE) {
1748
 
                                        gchar* _tmp136_ = NULL;
1749
 
                                        gchar* _tmp137_;
1750
 
                                        ValaCCodeIdentifier* _tmp138_ = NULL;
1751
 
                                        ValaCCodeIdentifier* _tmp139_;
1752
 
                                        ValaCCodeMemberAccess* _tmp140_ = NULL;
1753
 
                                        ValaCCodeMemberAccess* _tmp141_;
 
1777
                                _tmp133_ = vala_method_get_binding (m);
 
1778
                                if (_tmp133_ == VALA_MEMBER_BINDING_INSTANCE) {
 
1779
                                        gchar* _tmp134_ = NULL;
 
1780
                                        gchar* _tmp135_;
 
1781
                                        ValaCCodeIdentifier* _tmp136_ = NULL;
 
1782
                                        ValaCCodeIdentifier* _tmp137_;
 
1783
                                        ValaCCodeMemberAccess* _tmp138_ = NULL;
 
1784
                                        ValaCCodeMemberAccess* _tmp139_;
1754
1785
                                        ValaCCodeMemberAccess* cself;
1755
 
                                        ValaCCodeFunction* _tmp142_ = NULL;
1756
 
                                        ValaClass* _tmp143_ = NULL;
 
1786
                                        ValaCCodeFunction* _tmp140_ = NULL;
 
1787
                                        ValaClass* _tmp141_ = NULL;
 
1788
                                        gchar* _tmp142_ = NULL;
 
1789
                                        gchar* _tmp143_;
1757
1790
                                        gchar* _tmp144_ = NULL;
1758
1791
                                        gchar* _tmp145_;
1759
 
                                        gchar* _tmp146_ = NULL;
1760
 
                                        gchar* _tmp147_;
1761
 
                                        ValaCCodeVariableDeclarator* _tmp148_ = NULL;
1762
 
                                        ValaCCodeVariableDeclarator* _tmp149_;
1763
 
                                        ValaCCodeFunction* _tmp150_ = NULL;
1764
 
                                        ValaCCodeIdentifier* _tmp151_ = NULL;
1765
 
                                        ValaCCodeIdentifier* _tmp152_;
1766
 
                                        _tmp136_ = g_strdup_printf ("_data%d_", block_id);
 
1792
                                        ValaCCodeVariableDeclarator* _tmp146_ = NULL;
 
1793
                                        ValaCCodeVariableDeclarator* _tmp147_;
 
1794
                                        ValaCCodeFunction* _tmp148_ = NULL;
 
1795
                                        ValaCCodeIdentifier* _tmp149_ = NULL;
 
1796
                                        ValaCCodeIdentifier* _tmp150_;
 
1797
                                        _tmp134_ = g_strdup_printf ("_data%d_", block_id);
 
1798
                                        _tmp135_ = _tmp134_;
 
1799
                                        _tmp136_ = vala_ccode_identifier_new (_tmp135_);
1767
1800
                                        _tmp137_ = _tmp136_;
1768
 
                                        _tmp138_ = vala_ccode_identifier_new (_tmp137_);
 
1801
                                        _tmp138_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp137_, "self");
1769
1802
                                        _tmp139_ = _tmp138_;
1770
 
                                        _tmp140_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp139_, "self");
1771
 
                                        cself = (_tmp141_ = _tmp140_, _vala_ccode_node_unref0 (_tmp139_), _g_free0 (_tmp137_), _tmp141_);
1772
 
                                        _tmp142_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1773
 
                                        _tmp143_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
1774
 
                                        _tmp144_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) _tmp143_, FALSE);
 
1803
                                        _vala_ccode_node_unref0 (_tmp137_);
 
1804
                                        _g_free0 (_tmp135_);
 
1805
                                        cself = _tmp139_;
 
1806
                                        _tmp140_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1807
                                        _tmp141_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
 
1808
                                        _tmp142_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) _tmp141_, FALSE);
 
1809
                                        _tmp143_ = _tmp142_;
 
1810
                                        _tmp144_ = g_strdup_printf ("%s *", _tmp143_);
1775
1811
                                        _tmp145_ = _tmp144_;
1776
 
                                        _tmp146_ = g_strdup_printf ("%s *", _tmp145_);
 
1812
                                        _tmp146_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
1777
1813
                                        _tmp147_ = _tmp146_;
1778
 
                                        _tmp148_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
1779
 
                                        _tmp149_ = _tmp148_;
1780
 
                                        vala_ccode_function_add_declaration (_tmp142_, _tmp147_, (ValaCCodeDeclarator*) _tmp149_, 0);
1781
 
                                        _vala_ccode_node_unref0 (_tmp149_);
1782
 
                                        _g_free0 (_tmp147_);
 
1814
                                        vala_ccode_function_add_declaration (_tmp140_, _tmp145_, (ValaCCodeDeclarator*) _tmp147_, 0);
 
1815
                                        _vala_ccode_node_unref0 (_tmp147_);
1783
1816
                                        _g_free0 (_tmp145_);
1784
 
                                        _tmp150_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1785
 
                                        _tmp151_ = vala_ccode_identifier_new ("self");
1786
 
                                        _tmp152_ = _tmp151_;
1787
 
                                        vala_ccode_function_add_assignment (_tmp150_, (ValaCCodeExpression*) _tmp152_, (ValaCCodeExpression*) cself);
1788
 
                                        _vala_ccode_node_unref0 (_tmp152_);
 
1817
                                        _g_free0 (_tmp143_);
 
1818
                                        _tmp148_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1819
                                        _tmp149_ = vala_ccode_identifier_new ("self");
 
1820
                                        _tmp150_ = _tmp149_;
 
1821
                                        vala_ccode_function_add_assignment (_tmp148_, (ValaCCodeExpression*) _tmp150_, (ValaCCodeExpression*) cself);
 
1822
                                        _vala_ccode_node_unref0 (_tmp150_);
1789
1823
                                        _vala_ccode_node_unref0 (cself);
1790
1824
                                }
1791
1825
                                {
1792
 
                                        ValaList* _tmp153_ = NULL;
 
1826
                                        ValaList* _tmp151_ = NULL;
1793
1827
                                        ValaList* _type_param_list;
1794
 
                                        gint _tmp154_;
 
1828
                                        gint _tmp152_;
1795
1829
                                        gint _type_param_size;
1796
1830
                                        gint _type_param_index;
1797
 
                                        _tmp153_ = vala_method_get_type_parameters (m);
1798
 
                                        _type_param_list = _tmp153_;
1799
 
                                        _tmp154_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
1800
 
                                        _type_param_size = _tmp154_;
 
1831
                                        _tmp151_ = vala_method_get_type_parameters (m);
 
1832
                                        _type_param_list = _tmp151_;
 
1833
                                        _tmp152_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
 
1834
                                        _type_param_size = _tmp152_;
1801
1835
                                        _type_param_index = -1;
1802
1836
                                        while (TRUE) {
1803
 
                                                gpointer _tmp155_ = NULL;
 
1837
                                                gpointer _tmp153_ = NULL;
1804
1838
                                                ValaTypeParameter* type_param;
1805
1839
                                                gchar* func_name = NULL;
1806
 
                                                const gchar* _tmp156_ = NULL;
 
1840
                                                const gchar* _tmp154_ = NULL;
 
1841
                                                gchar* _tmp155_ = NULL;
 
1842
                                                gchar* _tmp156_;
1807
1843
                                                gchar* _tmp157_ = NULL;
1808
 
                                                gchar* _tmp158_;
1809
 
                                                gchar* _tmp159_ = NULL;
1810
 
                                                gchar* _tmp160_;
 
1844
                                                ValaCCodeFunction* _tmp158_ = NULL;
 
1845
                                                ValaCCodeVariableDeclarator* _tmp159_ = NULL;
 
1846
                                                ValaCCodeVariableDeclarator* _tmp160_;
1811
1847
                                                ValaCCodeFunction* _tmp161_ = NULL;
1812
 
                                                ValaCCodeVariableDeclarator* _tmp162_ = NULL;
1813
 
                                                ValaCCodeVariableDeclarator* _tmp163_;
1814
 
                                                ValaCCodeFunction* _tmp164_ = NULL;
1815
 
                                                ValaCCodeIdentifier* _tmp165_ = NULL;
1816
 
                                                ValaCCodeIdentifier* _tmp166_;
1817
 
                                                gchar* _tmp167_ = NULL;
1818
 
                                                gchar* _tmp168_;
1819
 
                                                ValaCCodeExpression* _tmp169_ = NULL;
1820
 
                                                ValaCCodeExpression* _tmp170_;
1821
 
                                                ValaCCodeMemberAccess* _tmp171_ = NULL;
1822
 
                                                ValaCCodeMemberAccess* _tmp172_;
1823
 
                                                const gchar* _tmp173_ = NULL;
1824
 
                                                gchar* _tmp174_ = NULL;
1825
 
                                                gchar* _tmp175_;
1826
 
                                                gchar* _tmp176_ = NULL;
1827
 
                                                gchar* _tmp177_;
1828
 
                                                ValaCCodeFunction* _tmp178_ = NULL;
1829
 
                                                ValaCCodeVariableDeclarator* _tmp179_ = NULL;
1830
 
                                                ValaCCodeVariableDeclarator* _tmp180_;
1831
 
                                                ValaCCodeFunction* _tmp181_ = NULL;
1832
 
                                                ValaCCodeIdentifier* _tmp182_ = NULL;
1833
 
                                                ValaCCodeIdentifier* _tmp183_;
1834
 
                                                gchar* _tmp184_ = NULL;
1835
 
                                                gchar* _tmp185_;
1836
 
                                                ValaCCodeExpression* _tmp186_ = NULL;
1837
 
                                                ValaCCodeExpression* _tmp187_;
1838
 
                                                ValaCCodeMemberAccess* _tmp188_ = NULL;
1839
 
                                                ValaCCodeMemberAccess* _tmp189_;
1840
 
                                                const gchar* _tmp190_ = NULL;
1841
 
                                                gchar* _tmp191_ = NULL;
1842
 
                                                gchar* _tmp192_;
1843
 
                                                gchar* _tmp193_ = NULL;
1844
 
                                                gchar* _tmp194_;
1845
 
                                                ValaCCodeFunction* _tmp195_ = NULL;
1846
 
                                                ValaCCodeVariableDeclarator* _tmp196_ = NULL;
1847
 
                                                ValaCCodeVariableDeclarator* _tmp197_;
1848
 
                                                ValaCCodeFunction* _tmp198_ = NULL;
1849
 
                                                ValaCCodeIdentifier* _tmp199_ = NULL;
1850
 
                                                ValaCCodeIdentifier* _tmp200_;
1851
 
                                                gchar* _tmp201_ = NULL;
1852
 
                                                gchar* _tmp202_;
1853
 
                                                ValaCCodeExpression* _tmp203_ = NULL;
1854
 
                                                ValaCCodeExpression* _tmp204_;
1855
 
                                                ValaCCodeMemberAccess* _tmp205_ = NULL;
1856
 
                                                ValaCCodeMemberAccess* _tmp206_;
 
1848
                                                ValaCCodeIdentifier* _tmp162_ = NULL;
 
1849
                                                ValaCCodeIdentifier* _tmp163_;
 
1850
                                                gchar* _tmp164_ = NULL;
 
1851
                                                gchar* _tmp165_;
 
1852
                                                ValaCCodeExpression* _tmp166_ = NULL;
 
1853
                                                ValaCCodeExpression* _tmp167_;
 
1854
                                                ValaCCodeMemberAccess* _tmp168_ = NULL;
 
1855
                                                ValaCCodeMemberAccess* _tmp169_;
 
1856
                                                const gchar* _tmp170_ = NULL;
 
1857
                                                gchar* _tmp171_ = NULL;
 
1858
                                                gchar* _tmp172_;
 
1859
                                                gchar* _tmp173_ = NULL;
 
1860
                                                ValaCCodeFunction* _tmp174_ = NULL;
 
1861
                                                ValaCCodeVariableDeclarator* _tmp175_ = NULL;
 
1862
                                                ValaCCodeVariableDeclarator* _tmp176_;
 
1863
                                                ValaCCodeFunction* _tmp177_ = NULL;
 
1864
                                                ValaCCodeIdentifier* _tmp178_ = NULL;
 
1865
                                                ValaCCodeIdentifier* _tmp179_;
 
1866
                                                gchar* _tmp180_ = NULL;
 
1867
                                                gchar* _tmp181_;
 
1868
                                                ValaCCodeExpression* _tmp182_ = NULL;
 
1869
                                                ValaCCodeExpression* _tmp183_;
 
1870
                                                ValaCCodeMemberAccess* _tmp184_ = NULL;
 
1871
                                                ValaCCodeMemberAccess* _tmp185_;
 
1872
                                                const gchar* _tmp186_ = NULL;
 
1873
                                                gchar* _tmp187_ = NULL;
 
1874
                                                gchar* _tmp188_;
 
1875
                                                gchar* _tmp189_ = NULL;
 
1876
                                                ValaCCodeFunction* _tmp190_ = NULL;
 
1877
                                                ValaCCodeVariableDeclarator* _tmp191_ = NULL;
 
1878
                                                ValaCCodeVariableDeclarator* _tmp192_;
 
1879
                                                ValaCCodeFunction* _tmp193_ = NULL;
 
1880
                                                ValaCCodeIdentifier* _tmp194_ = NULL;
 
1881
                                                ValaCCodeIdentifier* _tmp195_;
 
1882
                                                gchar* _tmp196_ = NULL;
 
1883
                                                gchar* _tmp197_;
 
1884
                                                ValaCCodeExpression* _tmp198_ = NULL;
 
1885
                                                ValaCCodeExpression* _tmp199_;
 
1886
                                                ValaCCodeMemberAccess* _tmp200_ = NULL;
 
1887
                                                ValaCCodeMemberAccess* _tmp201_;
1857
1888
                                                _type_param_index = _type_param_index + 1;
1858
1889
                                                if (!(_type_param_index < _type_param_size)) {
1859
1890
                                                        break;
1860
1891
                                                }
1861
 
                                                _tmp155_ = vala_list_get (_type_param_list, _type_param_index);
1862
 
                                                type_param = (ValaTypeParameter*) _tmp155_;
1863
 
                                                _tmp156_ = vala_symbol_get_name ((ValaSymbol*) type_param);
1864
 
                                                _tmp157_ = g_utf8_strdown (_tmp156_, (gssize) (-1));
1865
 
                                                _tmp158_ = _tmp157_;
1866
 
                                                _tmp159_ = g_strdup_printf ("%s_type", _tmp158_);
 
1892
                                                _tmp153_ = vala_list_get (_type_param_list, _type_param_index);
 
1893
                                                type_param = (ValaTypeParameter*) _tmp153_;
 
1894
                                                _tmp154_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
1895
                                                _tmp155_ = g_utf8_strdown (_tmp154_, (gssize) (-1));
 
1896
                                                _tmp156_ = _tmp155_;
 
1897
                                                _tmp157_ = g_strdup_printf ("%s_type", _tmp156_);
 
1898
                                                _g_free0 (func_name);
 
1899
                                                func_name = _tmp157_;
 
1900
                                                _g_free0 (_tmp156_);
 
1901
                                                _tmp158_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1902
                                                _tmp159_ = vala_ccode_variable_declarator_new (func_name, NULL, NULL);
1867
1903
                                                _tmp160_ = _tmp159_;
1868
 
                                                _g_free0 (func_name);
1869
 
                                                func_name = _tmp160_;
1870
 
                                                _g_free0 (_tmp158_);
 
1904
                                                vala_ccode_function_add_declaration (_tmp158_, "GType", (ValaCCodeDeclarator*) _tmp160_, 0);
 
1905
                                                _vala_ccode_node_unref0 (_tmp160_);
1871
1906
                                                _tmp161_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1872
 
                                                _tmp162_ = vala_ccode_variable_declarator_new (func_name, NULL, NULL);
 
1907
                                                _tmp162_ = vala_ccode_identifier_new (func_name);
1873
1908
                                                _tmp163_ = _tmp162_;
1874
 
                                                vala_ccode_function_add_declaration (_tmp161_, "GType", (ValaCCodeDeclarator*) _tmp163_, 0);
 
1909
                                                _tmp164_ = g_strdup_printf ("_data%d_", block_id);
 
1910
                                                _tmp165_ = _tmp164_;
 
1911
                                                _tmp166_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp165_);
 
1912
                                                _tmp167_ = _tmp166_;
 
1913
                                                _tmp168_ = vala_ccode_member_access_new_pointer (_tmp167_, func_name);
 
1914
                                                _tmp169_ = _tmp168_;
 
1915
                                                vala_ccode_function_add_assignment (_tmp161_, (ValaCCodeExpression*) _tmp163_, (ValaCCodeExpression*) _tmp169_);
 
1916
                                                _vala_ccode_node_unref0 (_tmp169_);
 
1917
                                                _vala_ccode_node_unref0 (_tmp167_);
 
1918
                                                _g_free0 (_tmp165_);
1875
1919
                                                _vala_ccode_node_unref0 (_tmp163_);
1876
 
                                                _tmp164_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1877
 
                                                _tmp165_ = vala_ccode_identifier_new (func_name);
1878
 
                                                _tmp166_ = _tmp165_;
1879
 
                                                _tmp167_ = g_strdup_printf ("_data%d_", block_id);
1880
 
                                                _tmp168_ = _tmp167_;
1881
 
                                                _tmp169_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp168_);
1882
 
                                                _tmp170_ = _tmp169_;
1883
 
                                                _tmp171_ = vala_ccode_member_access_new_pointer (_tmp170_, func_name);
 
1920
                                                _tmp170_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
1921
                                                _tmp171_ = g_utf8_strdown (_tmp170_, (gssize) (-1));
1884
1922
                                                _tmp172_ = _tmp171_;
1885
 
                                                vala_ccode_function_add_assignment (_tmp164_, (ValaCCodeExpression*) _tmp166_, (ValaCCodeExpression*) _tmp172_);
1886
 
                                                _vala_ccode_node_unref0 (_tmp172_);
1887
 
                                                _vala_ccode_node_unref0 (_tmp170_);
1888
 
                                                _g_free0 (_tmp168_);
1889
 
                                                _vala_ccode_node_unref0 (_tmp166_);
1890
 
                                                _tmp173_ = vala_symbol_get_name ((ValaSymbol*) type_param);
1891
 
                                                _tmp174_ = g_utf8_strdown (_tmp173_, (gssize) (-1));
1892
 
                                                _tmp175_ = _tmp174_;
1893
 
                                                _tmp176_ = g_strdup_printf ("%s_dup_func", _tmp175_);
1894
 
                                                _tmp177_ = _tmp176_;
 
1923
                                                _tmp173_ = g_strdup_printf ("%s_dup_func", _tmp172_);
1895
1924
                                                _g_free0 (func_name);
1896
 
                                                func_name = _tmp177_;
1897
 
                                                _g_free0 (_tmp175_);
1898
 
                                                _tmp178_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1899
 
                                                _tmp179_ = vala_ccode_variable_declarator_new (func_name, NULL, NULL);
1900
 
                                                _tmp180_ = _tmp179_;
1901
 
                                                vala_ccode_function_add_declaration (_tmp178_, "GBoxedCopyFunc", (ValaCCodeDeclarator*) _tmp180_, 0);
1902
 
                                                _vala_ccode_node_unref0 (_tmp180_);
1903
 
                                                _tmp181_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1904
 
                                                _tmp182_ = vala_ccode_identifier_new (func_name);
 
1925
                                                func_name = _tmp173_;
 
1926
                                                _g_free0 (_tmp172_);
 
1927
                                                _tmp174_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1928
                                                _tmp175_ = vala_ccode_variable_declarator_new (func_name, NULL, NULL);
 
1929
                                                _tmp176_ = _tmp175_;
 
1930
                                                vala_ccode_function_add_declaration (_tmp174_, "GBoxedCopyFunc", (ValaCCodeDeclarator*) _tmp176_, 0);
 
1931
                                                _vala_ccode_node_unref0 (_tmp176_);
 
1932
                                                _tmp177_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1933
                                                _tmp178_ = vala_ccode_identifier_new (func_name);
 
1934
                                                _tmp179_ = _tmp178_;
 
1935
                                                _tmp180_ = g_strdup_printf ("_data%d_", block_id);
 
1936
                                                _tmp181_ = _tmp180_;
 
1937
                                                _tmp182_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp181_);
1905
1938
                                                _tmp183_ = _tmp182_;
1906
 
                                                _tmp184_ = g_strdup_printf ("_data%d_", block_id);
 
1939
                                                _tmp184_ = vala_ccode_member_access_new_pointer (_tmp183_, func_name);
1907
1940
                                                _tmp185_ = _tmp184_;
1908
 
                                                _tmp186_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp185_);
1909
 
                                                _tmp187_ = _tmp186_;
1910
 
                                                _tmp188_ = vala_ccode_member_access_new_pointer (_tmp187_, func_name);
1911
 
                                                _tmp189_ = _tmp188_;
1912
 
                                                vala_ccode_function_add_assignment (_tmp181_, (ValaCCodeExpression*) _tmp183_, (ValaCCodeExpression*) _tmp189_);
1913
 
                                                _vala_ccode_node_unref0 (_tmp189_);
1914
 
                                                _vala_ccode_node_unref0 (_tmp187_);
1915
 
                                                _g_free0 (_tmp185_);
 
1941
                                                vala_ccode_function_add_assignment (_tmp177_, (ValaCCodeExpression*) _tmp179_, (ValaCCodeExpression*) _tmp185_);
 
1942
                                                _vala_ccode_node_unref0 (_tmp185_);
1916
1943
                                                _vala_ccode_node_unref0 (_tmp183_);
1917
 
                                                _tmp190_ = vala_symbol_get_name ((ValaSymbol*) type_param);
1918
 
                                                _tmp191_ = g_utf8_strdown (_tmp190_, (gssize) (-1));
 
1944
                                                _g_free0 (_tmp181_);
 
1945
                                                _vala_ccode_node_unref0 (_tmp179_);
 
1946
                                                _tmp186_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
1947
                                                _tmp187_ = g_utf8_strdown (_tmp186_, (gssize) (-1));
 
1948
                                                _tmp188_ = _tmp187_;
 
1949
                                                _tmp189_ = g_strdup_printf ("%s_destroy_func", _tmp188_);
 
1950
                                                _g_free0 (func_name);
 
1951
                                                func_name = _tmp189_;
 
1952
                                                _g_free0 (_tmp188_);
 
1953
                                                _tmp190_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1954
                                                _tmp191_ = vala_ccode_variable_declarator_new (func_name, NULL, NULL);
1919
1955
                                                _tmp192_ = _tmp191_;
1920
 
                                                _tmp193_ = g_strdup_printf ("%s_destroy_func", _tmp192_);
1921
 
                                                _tmp194_ = _tmp193_;
1922
 
                                                _g_free0 (func_name);
1923
 
                                                func_name = _tmp194_;
1924
 
                                                _g_free0 (_tmp192_);
1925
 
                                                _tmp195_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1926
 
                                                _tmp196_ = vala_ccode_variable_declarator_new (func_name, NULL, NULL);
 
1956
                                                vala_ccode_function_add_declaration (_tmp190_, "GDestroyNotify", (ValaCCodeDeclarator*) _tmp192_, 0);
 
1957
                                                _vala_ccode_node_unref0 (_tmp192_);
 
1958
                                                _tmp193_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
1959
                                                _tmp194_ = vala_ccode_identifier_new (func_name);
 
1960
                                                _tmp195_ = _tmp194_;
 
1961
                                                _tmp196_ = g_strdup_printf ("_data%d_", block_id);
1927
1962
                                                _tmp197_ = _tmp196_;
1928
 
                                                vala_ccode_function_add_declaration (_tmp195_, "GDestroyNotify", (ValaCCodeDeclarator*) _tmp197_, 0);
1929
 
                                                _vala_ccode_node_unref0 (_tmp197_);
1930
 
                                                _tmp198_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
1931
 
                                                _tmp199_ = vala_ccode_identifier_new (func_name);
1932
 
                                                _tmp200_ = _tmp199_;
1933
 
                                                _tmp201_ = g_strdup_printf ("_data%d_", block_id);
1934
 
                                                _tmp202_ = _tmp201_;
1935
 
                                                _tmp203_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp202_);
1936
 
                                                _tmp204_ = _tmp203_;
1937
 
                                                _tmp205_ = vala_ccode_member_access_new_pointer (_tmp204_, func_name);
1938
 
                                                _tmp206_ = _tmp205_;
1939
 
                                                vala_ccode_function_add_assignment (_tmp198_, (ValaCCodeExpression*) _tmp200_, (ValaCCodeExpression*) _tmp206_);
1940
 
                                                _vala_ccode_node_unref0 (_tmp206_);
1941
 
                                                _vala_ccode_node_unref0 (_tmp204_);
1942
 
                                                _g_free0 (_tmp202_);
1943
 
                                                _vala_ccode_node_unref0 (_tmp200_);
 
1963
                                                _tmp198_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp197_);
 
1964
                                                _tmp199_ = _tmp198_;
 
1965
                                                _tmp200_ = vala_ccode_member_access_new_pointer (_tmp199_, func_name);
 
1966
                                                _tmp201_ = _tmp200_;
 
1967
                                                vala_ccode_function_add_assignment (_tmp193_, (ValaCCodeExpression*) _tmp195_, (ValaCCodeExpression*) _tmp201_);
 
1968
                                                _vala_ccode_node_unref0 (_tmp201_);
 
1969
                                                _vala_ccode_node_unref0 (_tmp199_);
 
1970
                                                _g_free0 (_tmp197_);
 
1971
                                                _vala_ccode_node_unref0 (_tmp195_);
1944
1972
                                                _g_free0 (func_name);
1945
1973
                                                _vala_code_node_unref0 (type_param);
1946
1974
                                        }
1948
1976
                                }
1949
1977
                                _vala_code_node_unref0 (closure_block);
1950
1978
                        } else {
1951
 
                                gboolean _tmp207_ = FALSE;
1952
 
                                ValaSymbol* _tmp208_ = NULL;
1953
 
                                _tmp208_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
1954
 
                                if (VALA_IS_CLASS (_tmp208_)) {
1955
 
                                        gboolean _tmp209_;
1956
 
                                        _tmp209_ = vala_method_get_coroutine (m);
1957
 
                                        _tmp207_ = !_tmp209_;
 
1979
                                gboolean _tmp202_ = FALSE;
 
1980
                                ValaSymbol* _tmp203_ = NULL;
 
1981
                                _tmp203_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
 
1982
                                if (VALA_IS_CLASS (_tmp203_)) {
 
1983
                                        gboolean _tmp204_;
 
1984
                                        _tmp204_ = vala_method_get_coroutine (m);
 
1985
                                        _tmp202_ = !_tmp204_;
1958
1986
                                } else {
1959
 
                                        _tmp207_ = FALSE;
 
1987
                                        _tmp202_ = FALSE;
1960
1988
                                }
1961
 
                                if (_tmp207_) {
1962
 
                                        ValaSymbol* _tmp210_ = NULL;
1963
 
                                        ValaClass* _tmp211_;
 
1989
                                if (_tmp202_) {
 
1990
                                        ValaSymbol* _tmp205_ = NULL;
 
1991
                                        ValaClass* _tmp206_;
1964
1992
                                        ValaClass* cl;
1965
 
                                        gboolean _tmp212_ = FALSE;
1966
 
                                        gboolean _tmp213_;
1967
 
                                        _tmp210_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
1968
 
                                        _tmp211_ = _vala_code_node_ref0 (VALA_CLASS (_tmp210_));
1969
 
                                        cl = _tmp211_;
1970
 
                                        _tmp213_ = vala_method_get_overrides (m);
1971
 
                                        if (_tmp213_) {
1972
 
                                                _tmp212_ = TRUE;
 
1993
                                        gboolean _tmp207_ = FALSE;
 
1994
                                        gboolean _tmp208_;
 
1995
                                        _tmp205_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
 
1996
                                        _tmp206_ = _vala_code_node_ref0 (VALA_CLASS (_tmp205_));
 
1997
                                        cl = _tmp206_;
 
1998
                                        _tmp208_ = vala_method_get_overrides (m);
 
1999
                                        if (_tmp208_) {
 
2000
                                                _tmp207_ = TRUE;
1973
2001
                                        } else {
1974
 
                                                gboolean _tmp214_ = FALSE;
1975
 
                                                gboolean _tmp215_ = FALSE;
1976
 
                                                ValaMethod* _tmp216_ = NULL;
1977
 
                                                _tmp216_ = vala_method_get_base_interface_method (m);
1978
 
                                                if (_tmp216_ != NULL) {
1979
 
                                                        gboolean _tmp217_;
1980
 
                                                        _tmp217_ = vala_method_get_is_abstract (m);
1981
 
                                                        _tmp215_ = !_tmp217_;
1982
 
                                                } else {
1983
 
                                                        _tmp215_ = FALSE;
1984
 
                                                }
1985
 
                                                if (_tmp215_) {
1986
 
                                                        gboolean _tmp218_;
1987
 
                                                        _tmp218_ = vala_method_get_is_virtual (m);
1988
 
                                                        _tmp214_ = !_tmp218_;
1989
 
                                                } else {
1990
 
                                                        _tmp214_ = FALSE;
1991
 
                                                }
1992
 
                                                _tmp212_ = _tmp214_;
 
2002
                                                gboolean _tmp209_ = FALSE;
 
2003
                                                gboolean _tmp210_ = FALSE;
 
2004
                                                ValaMethod* _tmp211_ = NULL;
 
2005
                                                _tmp211_ = vala_method_get_base_interface_method (m);
 
2006
                                                if (_tmp211_ != NULL) {
 
2007
                                                        gboolean _tmp212_;
 
2008
                                                        _tmp212_ = vala_method_get_is_abstract (m);
 
2009
                                                        _tmp210_ = !_tmp212_;
 
2010
                                                } else {
 
2011
                                                        _tmp210_ = FALSE;
 
2012
                                                }
 
2013
                                                if (_tmp210_) {
 
2014
                                                        gboolean _tmp213_;
 
2015
                                                        _tmp213_ = vala_method_get_is_virtual (m);
 
2016
                                                        _tmp209_ = !_tmp213_;
 
2017
                                                } else {
 
2018
                                                        _tmp209_ = FALSE;
 
2019
                                                }
 
2020
                                                _tmp207_ = _tmp209_;
1993
2021
                                        }
1994
 
                                        if (_tmp212_) {
 
2022
                                        if (_tmp207_) {
1995
2023
                                                ValaMethod* base_method = NULL;
1996
2024
                                                ValaReferenceType* base_expression_type = NULL;
1997
 
                                                gboolean _tmp219_;
1998
 
                                                ValaObjectType* _tmp232_ = NULL;
 
2025
                                                gboolean _tmp214_;
 
2026
                                                ValaObjectType* _tmp223_ = NULL;
1999
2027
                                                ValaObjectType* self_target_type;
2000
 
                                                ValaCCodeIdentifier* _tmp233_ = NULL;
2001
 
                                                ValaCCodeIdentifier* _tmp234_;
2002
 
                                                ValaCCodeExpression* _tmp235_ = NULL;
2003
 
                                                ValaCCodeExpression* _tmp236_;
 
2028
                                                ValaCCodeIdentifier* _tmp224_ = NULL;
 
2029
                                                ValaCCodeIdentifier* _tmp225_;
 
2030
                                                ValaCCodeExpression* _tmp226_ = NULL;
 
2031
                                                ValaCCodeExpression* _tmp227_;
2004
2032
                                                ValaCCodeExpression* cself;
2005
 
                                                ValaCCodeFunction* _tmp237_ = NULL;
2006
 
                                                gchar* _tmp238_ = NULL;
2007
 
                                                gchar* _tmp239_;
2008
 
                                                gchar* _tmp240_ = NULL;
2009
 
                                                gchar* _tmp241_;
2010
 
                                                ValaCCodeVariableDeclarator* _tmp242_ = NULL;
2011
 
                                                ValaCCodeVariableDeclarator* _tmp243_;
2012
 
                                                ValaCCodeFunction* _tmp244_ = NULL;
2013
 
                                                ValaCCodeIdentifier* _tmp245_ = NULL;
2014
 
                                                ValaCCodeIdentifier* _tmp246_;
2015
 
                                                _tmp219_ = vala_method_get_overrides (m);
2016
 
                                                if (_tmp219_) {
2017
 
                                                        ValaMethod* _tmp220_ = NULL;
2018
 
                                                        ValaMethod* _tmp221_;
2019
 
                                                        ValaMethod* _tmp222_;
2020
 
                                                        ValaSymbol* _tmp223_ = NULL;
2021
 
                                                        ValaObjectType* _tmp224_ = NULL;
2022
 
                                                        ValaReferenceType* _tmp225_;
2023
 
                                                        _tmp220_ = vala_method_get_base_method (m);
2024
 
                                                        _tmp221_ = _vala_code_node_ref0 (_tmp220_);
2025
 
                                                        _tmp222_ = _tmp221_;
 
2033
                                                ValaCCodeFunction* _tmp228_ = NULL;
 
2034
                                                gchar* _tmp229_ = NULL;
 
2035
                                                gchar* _tmp230_;
 
2036
                                                gchar* _tmp231_ = NULL;
 
2037
                                                gchar* _tmp232_;
 
2038
                                                ValaCCodeVariableDeclarator* _tmp233_ = NULL;
 
2039
                                                ValaCCodeVariableDeclarator* _tmp234_;
 
2040
                                                ValaCCodeFunction* _tmp235_ = NULL;
 
2041
                                                ValaCCodeIdentifier* _tmp236_ = NULL;
 
2042
                                                ValaCCodeIdentifier* _tmp237_;
 
2043
                                                _tmp214_ = vala_method_get_overrides (m);
 
2044
                                                if (_tmp214_) {
 
2045
                                                        ValaMethod* _tmp215_ = NULL;
 
2046
                                                        ValaMethod* _tmp216_;
 
2047
                                                        ValaSymbol* _tmp217_ = NULL;
 
2048
                                                        ValaObjectType* _tmp218_ = NULL;
 
2049
                                                        _tmp215_ = vala_method_get_base_method (m);
 
2050
                                                        _tmp216_ = _vala_code_node_ref0 (_tmp215_);
2026
2051
                                                        _vala_code_node_unref0 (base_method);
2027
 
                                                        base_method = _tmp222_;
2028
 
                                                        _tmp223_ = vala_symbol_get_parent_symbol ((ValaSymbol*) base_method);
2029
 
                                                        _tmp224_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_CLASS (_tmp223_));
2030
 
                                                        _tmp225_ = (ValaReferenceType*) _tmp224_;
 
2052
                                                        base_method = _tmp216_;
 
2053
                                                        _tmp217_ = vala_symbol_get_parent_symbol ((ValaSymbol*) base_method);
 
2054
                                                        _tmp218_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_CLASS (_tmp217_));
2031
2055
                                                        _vala_code_node_unref0 (base_expression_type);
2032
 
                                                        base_expression_type = _tmp225_;
 
2056
                                                        base_expression_type = (ValaReferenceType*) _tmp218_;
2033
2057
                                                } else {
2034
 
                                                        ValaMethod* _tmp226_ = NULL;
2035
 
                                                        ValaMethod* _tmp227_;
2036
 
                                                        ValaMethod* _tmp228_;
2037
 
                                                        ValaSymbol* _tmp229_ = NULL;
2038
 
                                                        ValaObjectType* _tmp230_ = NULL;
2039
 
                                                        ValaReferenceType* _tmp231_;
2040
 
                                                        _tmp226_ = vala_method_get_base_interface_method (m);
2041
 
                                                        _tmp227_ = _vala_code_node_ref0 (_tmp226_);
2042
 
                                                        _tmp228_ = _tmp227_;
 
2058
                                                        ValaMethod* _tmp219_ = NULL;
 
2059
                                                        ValaMethod* _tmp220_;
 
2060
                                                        ValaSymbol* _tmp221_ = NULL;
 
2061
                                                        ValaObjectType* _tmp222_ = NULL;
 
2062
                                                        _tmp219_ = vala_method_get_base_interface_method (m);
 
2063
                                                        _tmp220_ = _vala_code_node_ref0 (_tmp219_);
2043
2064
                                                        _vala_code_node_unref0 (base_method);
2044
 
                                                        base_method = _tmp228_;
2045
 
                                                        _tmp229_ = vala_symbol_get_parent_symbol ((ValaSymbol*) base_method);
2046
 
                                                        _tmp230_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_INTERFACE (_tmp229_));
2047
 
                                                        _tmp231_ = (ValaReferenceType*) _tmp230_;
 
2065
                                                        base_method = _tmp220_;
 
2066
                                                        _tmp221_ = vala_symbol_get_parent_symbol ((ValaSymbol*) base_method);
 
2067
                                                        _tmp222_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_INTERFACE (_tmp221_));
2048
2068
                                                        _vala_code_node_unref0 (base_expression_type);
2049
 
                                                        base_expression_type = _tmp231_;
 
2069
                                                        base_expression_type = (ValaReferenceType*) _tmp222_;
2050
2070
                                                }
2051
 
                                                _tmp232_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl);
2052
 
                                                self_target_type = _tmp232_;
2053
 
                                                _tmp233_ = vala_ccode_identifier_new ("base");
 
2071
                                                _tmp223_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl);
 
2072
                                                self_target_type = _tmp223_;
 
2073
                                                _tmp224_ = vala_ccode_identifier_new ("base");
 
2074
                                                _tmp225_ = _tmp224_;
 
2075
                                                _tmp226_ = vala_ccode_base_module_transform_expression ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp225_, (ValaDataType*) base_expression_type, (ValaDataType*) self_target_type, NULL);
 
2076
                                                _tmp227_ = _tmp226_;
 
2077
                                                _vala_ccode_node_unref0 (_tmp225_);
 
2078
                                                cself = _tmp227_;
 
2079
                                                _tmp228_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2080
                                                _tmp229_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
 
2081
                                                _tmp230_ = _tmp229_;
 
2082
                                                _tmp231_ = g_strdup_printf ("%s *", _tmp230_);
 
2083
                                                _tmp232_ = _tmp231_;
 
2084
                                                _tmp233_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
2054
2085
                                                _tmp234_ = _tmp233_;
2055
 
                                                _tmp235_ = vala_ccode_base_module_transform_expression ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp234_, (ValaDataType*) base_expression_type, (ValaDataType*) self_target_type, NULL);
2056
 
                                                cself = (_tmp236_ = _tmp235_, _vala_ccode_node_unref0 (_tmp234_), _tmp236_);
2057
 
                                                _tmp237_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2058
 
                                                _tmp238_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
2059
 
                                                _tmp239_ = _tmp238_;
2060
 
                                                _tmp240_ = g_strdup_printf ("%s *", _tmp239_);
2061
 
                                                _tmp241_ = _tmp240_;
2062
 
                                                _tmp242_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
2063
 
                                                _tmp243_ = _tmp242_;
2064
 
                                                vala_ccode_function_add_declaration (_tmp237_, _tmp241_, (ValaCCodeDeclarator*) _tmp243_, 0);
2065
 
                                                _vala_ccode_node_unref0 (_tmp243_);
2066
 
                                                _g_free0 (_tmp241_);
2067
 
                                                _g_free0 (_tmp239_);
2068
 
                                                _tmp244_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2069
 
                                                _tmp245_ = vala_ccode_identifier_new ("self");
2070
 
                                                _tmp246_ = _tmp245_;
2071
 
                                                vala_ccode_function_add_assignment (_tmp244_, (ValaCCodeExpression*) _tmp246_, cself);
2072
 
                                                _vala_ccode_node_unref0 (_tmp246_);
 
2086
                                                vala_ccode_function_add_declaration (_tmp228_, _tmp232_, (ValaCCodeDeclarator*) _tmp234_, 0);
 
2087
                                                _vala_ccode_node_unref0 (_tmp234_);
 
2088
                                                _g_free0 (_tmp232_);
 
2089
                                                _g_free0 (_tmp230_);
 
2090
                                                _tmp235_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2091
                                                _tmp236_ = vala_ccode_identifier_new ("self");
 
2092
                                                _tmp237_ = _tmp236_;
 
2093
                                                vala_ccode_function_add_assignment (_tmp235_, (ValaCCodeExpression*) _tmp237_, cself);
 
2094
                                                _vala_ccode_node_unref0 (_tmp237_);
2073
2095
                                                _vala_ccode_node_unref0 (cself);
2074
2096
                                                _vala_code_node_unref0 (self_target_type);
2075
2097
                                                _vala_code_node_unref0 (base_expression_type);
2076
2098
                                                _vala_code_node_unref0 (base_method);
2077
2099
                                        } else {
2078
 
                                                gboolean _tmp247_ = FALSE;
2079
 
                                                ValaMemberBinding _tmp248_;
2080
 
                                                _tmp248_ = vala_method_get_binding (m);
2081
 
                                                if (_tmp248_ == VALA_MEMBER_BINDING_INSTANCE) {
2082
 
                                                        _tmp247_ = !VALA_IS_CREATION_METHOD (m);
 
2100
                                                gboolean _tmp238_ = FALSE;
 
2101
                                                ValaMemberBinding _tmp239_;
 
2102
                                                _tmp239_ = vala_method_get_binding (m);
 
2103
                                                if (_tmp239_ == VALA_MEMBER_BINDING_INSTANCE) {
 
2104
                                                        _tmp238_ = !VALA_IS_CREATION_METHOD (m);
2083
2105
                                                } else {
2084
 
                                                        _tmp247_ = FALSE;
 
2106
                                                        _tmp238_ = FALSE;
2085
2107
                                                }
2086
 
                                                if (_tmp247_) {
 
2108
                                                if (_tmp238_) {
2087
2109
                                                        vala_ccode_method_module_create_method_type_check_statement (self, m, creturn_type, (ValaTypeSymbol*) cl, TRUE, "self");
2088
2110
                                                }
2089
2111
                                        }
2091
2113
                                }
2092
2114
                        }
2093
2115
                        {
2094
 
                                ValaList* _tmp249_ = NULL;
 
2116
                                ValaList* _tmp240_ = NULL;
2095
2117
                                ValaList* _param_list;
2096
 
                                gint _tmp250_;
 
2118
                                gint _tmp241_;
2097
2119
                                gint _param_size;
2098
2120
                                gint _param_index;
2099
 
                                _tmp249_ = vala_method_get_parameters (m);
2100
 
                                _param_list = _tmp249_;
2101
 
                                _tmp250_ = vala_collection_get_size ((ValaCollection*) _param_list);
2102
 
                                _param_size = _tmp250_;
 
2121
                                _tmp240_ = vala_method_get_parameters (m);
 
2122
                                _param_list = _tmp240_;
 
2123
                                _tmp241_ = vala_collection_get_size ((ValaCollection*) _param_list);
 
2124
                                _param_size = _tmp241_;
2103
2125
                                _param_index = -1;
2104
2126
                                while (TRUE) {
2105
 
                                        gpointer _tmp251_ = NULL;
 
2127
                                        gpointer _tmp242_ = NULL;
2106
2128
                                        ValaParameter* param;
2107
 
                                        gboolean _tmp252_;
2108
 
                                        ValaParameterDirection _tmp253_;
 
2129
                                        gboolean _tmp243_;
 
2130
                                        ValaParameterDirection _tmp244_;
2109
2131
                                        _param_index = _param_index + 1;
2110
2132
                                        if (!(_param_index < _param_size)) {
2111
2133
                                                break;
2112
2134
                                        }
2113
 
                                        _tmp251_ = vala_list_get (_param_list, _param_index);
2114
 
                                        param = (ValaParameter*) _tmp251_;
2115
 
                                        _tmp252_ = vala_parameter_get_ellipsis (param);
2116
 
                                        if (_tmp252_) {
 
2135
                                        _tmp242_ = vala_list_get (_param_list, _param_index);
 
2136
                                        param = (ValaParameter*) _tmp242_;
 
2137
                                        _tmp243_ = vala_parameter_get_ellipsis (param);
 
2138
                                        if (_tmp243_) {
2117
2139
                                                _vala_code_node_unref0 (param);
2118
2140
                                                break;
2119
2141
                                        }
2120
 
                                        _tmp253_ = vala_parameter_get_direction (param);
2121
 
                                        if (_tmp253_ != VALA_PARAMETER_DIRECTION_OUT) {
2122
 
                                                ValaDataType* _tmp254_ = NULL;
2123
 
                                                ValaTypeSymbol* _tmp255_ = NULL;
2124
 
                                                ValaTypeSymbol* _tmp256_;
 
2142
                                        _tmp244_ = vala_parameter_get_direction (param);
 
2143
                                        if (_tmp244_ != VALA_PARAMETER_DIRECTION_OUT) {
 
2144
                                                ValaDataType* _tmp245_ = NULL;
 
2145
                                                ValaTypeSymbol* _tmp246_ = NULL;
 
2146
                                                ValaTypeSymbol* _tmp247_;
2125
2147
                                                ValaTypeSymbol* t;
2126
 
                                                gboolean _tmp257_ = FALSE;
2127
 
                                                _tmp254_ = vala_variable_get_variable_type ((ValaVariable*) param);
2128
 
                                                _tmp255_ = vala_data_type_get_data_type (_tmp254_);
2129
 
                                                _tmp256_ = _vala_code_node_ref0 (_tmp255_);
2130
 
                                                t = _tmp256_;
 
2148
                                                gboolean _tmp248_ = FALSE;
 
2149
                                                _tmp245_ = vala_variable_get_variable_type ((ValaVariable*) param);
 
2150
                                                _tmp246_ = vala_data_type_get_data_type (_tmp245_);
 
2151
                                                _tmp247_ = _vala_code_node_ref0 (_tmp246_);
 
2152
                                                t = _tmp247_;
2131
2153
                                                if (t != NULL) {
2132
 
                                                        gboolean _tmp258_;
2133
 
                                                        _tmp258_ = vala_typesymbol_is_reference_type (t);
2134
 
                                                        _tmp257_ = _tmp258_;
 
2154
                                                        gboolean _tmp249_;
 
2155
                                                        _tmp249_ = vala_typesymbol_is_reference_type (t);
 
2156
                                                        _tmp248_ = _tmp249_;
2135
2157
                                                } else {
2136
 
                                                        _tmp257_ = FALSE;
 
2158
                                                        _tmp248_ = FALSE;
2137
2159
                                                }
2138
 
                                                if (_tmp257_) {
2139
 
                                                        ValaDataType* _tmp259_ = NULL;
2140
 
                                                        gboolean _tmp260_;
2141
 
                                                        const gchar* _tmp261_ = NULL;
2142
 
                                                        gchar* _tmp262_ = NULL;
2143
 
                                                        gchar* _tmp263_;
2144
 
                                                        _tmp259_ = vala_variable_get_variable_type ((ValaVariable*) param);
2145
 
                                                        _tmp260_ = vala_data_type_get_nullable (_tmp259_);
2146
 
                                                        _tmp261_ = vala_symbol_get_name ((ValaSymbol*) param);
2147
 
                                                        _tmp262_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp261_);
2148
 
                                                        _tmp263_ = _tmp262_;
2149
 
                                                        vala_ccode_method_module_create_method_type_check_statement (self, m, creturn_type, t, !_tmp260_, _tmp263_);
2150
 
                                                        _g_free0 (_tmp263_);
 
2160
                                                if (_tmp248_) {
 
2161
                                                        ValaDataType* _tmp250_ = NULL;
 
2162
                                                        gboolean _tmp251_;
 
2163
                                                        const gchar* _tmp252_ = NULL;
 
2164
                                                        gchar* _tmp253_ = NULL;
 
2165
                                                        gchar* _tmp254_;
 
2166
                                                        _tmp250_ = vala_variable_get_variable_type ((ValaVariable*) param);
 
2167
                                                        _tmp251_ = vala_data_type_get_nullable (_tmp250_);
 
2168
                                                        _tmp252_ = vala_symbol_get_name ((ValaSymbol*) param);
 
2169
                                                        _tmp253_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp252_);
 
2170
                                                        _tmp254_ = _tmp253_;
 
2171
                                                        vala_ccode_method_module_create_method_type_check_statement (self, m, creturn_type, t, !_tmp251_, _tmp254_);
 
2172
                                                        _g_free0 (_tmp254_);
2151
2173
                                                }
2152
2174
                                                _vala_code_node_unref0 (t);
2153
2175
                                        } else {
2154
 
                                                gboolean _tmp264_;
2155
 
                                                _tmp264_ = vala_method_get_coroutine (m);
2156
 
                                                if (!_tmp264_) {
2157
 
                                                        const gchar* _tmp265_ = NULL;
2158
 
                                                        gchar* _tmp266_;
2159
 
                                                        gchar* _tmp267_ = NULL;
2160
 
                                                        gchar* _tmp268_;
2161
 
                                                        ValaDataType* _tmp269_ = NULL;
2162
 
                                                        ValaCCodeExpression* _tmp270_ = NULL;
2163
 
                                                        ValaCCodeExpression* _tmp271_;
2164
 
                                                        ValaCCodeVariableDeclarator* _tmp272_ = NULL;
2165
 
                                                        ValaCCodeVariableDeclarator* _tmp273_;
 
2176
                                                gboolean _tmp255_;
 
2177
                                                _tmp255_ = vala_method_get_coroutine (m);
 
2178
                                                if (!_tmp255_) {
 
2179
                                                        const gchar* _tmp256_ = NULL;
 
2180
                                                        gchar* _tmp257_;
 
2181
                                                        gchar* _tmp258_;
 
2182
                                                        gchar* _tmp259_ = NULL;
 
2183
                                                        gchar* _tmp260_;
 
2184
                                                        ValaDataType* _tmp261_ = NULL;
 
2185
                                                        ValaCCodeExpression* _tmp262_ = NULL;
 
2186
                                                        ValaCCodeExpression* _tmp263_;
 
2187
                                                        ValaCCodeVariableDeclarator* _tmp264_ = NULL;
 
2188
                                                        ValaCCodeVariableDeclarator* _tmp265_;
2166
2189
                                                        ValaCCodeVariableDeclarator* vardecl;
2167
 
                                                        ValaCCodeFunction* _tmp274_ = NULL;
2168
 
                                                        ValaDataType* _tmp275_ = NULL;
2169
 
                                                        gchar* _tmp276_ = NULL;
2170
 
                                                        gchar* _tmp277_;
2171
 
                                                        ValaDataType* _tmp278_ = NULL;
2172
 
                                                        _tmp265_ = vala_symbol_get_name ((ValaSymbol*) param);
2173
 
                                                        _tmp266_ = g_strconcat ("_", _tmp265_, NULL);
2174
 
                                                        _tmp267_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp266_);
2175
 
                                                        _tmp268_ = _tmp267_;
2176
 
                                                        _tmp269_ = vala_variable_get_variable_type ((ValaVariable*) param);
2177
 
                                                        _tmp270_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp269_, TRUE);
2178
 
                                                        _tmp271_ = _tmp270_;
2179
 
                                                        _tmp272_ = vala_ccode_variable_declarator_new_zero (_tmp268_, _tmp271_, NULL);
2180
 
                                                        vardecl = (_tmp273_ = _tmp272_, _vala_ccode_node_unref0 (_tmp271_), _g_free0 (_tmp268_), _g_free0 (_tmp266_), _tmp273_);
2181
 
                                                        _tmp274_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2182
 
                                                        _tmp275_ = vala_variable_get_variable_type ((ValaVariable*) param);
2183
 
                                                        _tmp276_ = vala_data_type_get_cname (_tmp275_);
2184
 
                                                        _tmp277_ = _tmp276_;
2185
 
                                                        vala_ccode_function_add_declaration (_tmp274_, _tmp277_, (ValaCCodeDeclarator*) vardecl, 0);
2186
 
                                                        _g_free0 (_tmp277_);
2187
 
                                                        _tmp278_ = vala_variable_get_variable_type ((ValaVariable*) param);
2188
 
                                                        if (VALA_IS_ARRAY_TYPE (_tmp278_)) {
2189
 
                                                                ValaDataType* _tmp279_ = NULL;
2190
 
                                                                ValaArrayType* _tmp280_;
 
2190
                                                        ValaCCodeFunction* _tmp266_ = NULL;
 
2191
                                                        ValaDataType* _tmp267_ = NULL;
 
2192
                                                        gchar* _tmp268_ = NULL;
 
2193
                                                        gchar* _tmp269_;
 
2194
                                                        ValaDataType* _tmp270_ = NULL;
 
2195
                                                        _tmp256_ = vala_symbol_get_name ((ValaSymbol*) param);
 
2196
                                                        _tmp257_ = g_strconcat ("_", _tmp256_, NULL);
 
2197
                                                        _tmp258_ = _tmp257_;
 
2198
                                                        _tmp259_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp258_);
 
2199
                                                        _tmp260_ = _tmp259_;
 
2200
                                                        _tmp261_ = vala_variable_get_variable_type ((ValaVariable*) param);
 
2201
                                                        _tmp262_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp261_, TRUE);
 
2202
                                                        _tmp263_ = _tmp262_;
 
2203
                                                        _tmp264_ = vala_ccode_variable_declarator_new_zero (_tmp260_, _tmp263_, NULL);
 
2204
                                                        _tmp265_ = _tmp264_;
 
2205
                                                        _vala_ccode_node_unref0 (_tmp263_);
 
2206
                                                        _g_free0 (_tmp260_);
 
2207
                                                        _g_free0 (_tmp258_);
 
2208
                                                        vardecl = _tmp265_;
 
2209
                                                        _tmp266_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2210
                                                        _tmp267_ = vala_variable_get_variable_type ((ValaVariable*) param);
 
2211
                                                        _tmp268_ = vala_data_type_get_cname (_tmp267_);
 
2212
                                                        _tmp269_ = _tmp268_;
 
2213
                                                        vala_ccode_function_add_declaration (_tmp266_, _tmp269_, (ValaCCodeDeclarator*) vardecl, 0);
 
2214
                                                        _g_free0 (_tmp269_);
 
2215
                                                        _tmp270_ = vala_variable_get_variable_type ((ValaVariable*) param);
 
2216
                                                        if (VALA_IS_ARRAY_TYPE (_tmp270_)) {
 
2217
                                                                ValaDataType* _tmp271_ = NULL;
 
2218
                                                                ValaArrayType* _tmp272_;
2191
2219
                                                                ValaArrayType* array_type;
2192
 
                                                                gboolean _tmp281_;
2193
 
                                                                _tmp279_ = vala_variable_get_variable_type ((ValaVariable*) param);
2194
 
                                                                _tmp280_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp279_));
2195
 
                                                                array_type = _tmp280_;
2196
 
                                                                _tmp281_ = vala_array_type_get_fixed_length (array_type);
2197
 
                                                                if (!_tmp281_) {
 
2220
                                                                gboolean _tmp273_;
 
2221
                                                                _tmp271_ = vala_variable_get_variable_type ((ValaVariable*) param);
 
2222
                                                                _tmp272_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp271_));
 
2223
                                                                array_type = _tmp272_;
 
2224
                                                                _tmp273_ = vala_array_type_get_fixed_length (array_type);
 
2225
                                                                if (!_tmp273_) {
2198
2226
                                                                        {
2199
2227
                                                                                gint dim;
2200
2228
                                                                                dim = 1;
2201
2229
                                                                                {
2202
 
                                                                                        gboolean _tmp282_;
2203
 
                                                                                        _tmp282_ = TRUE;
 
2230
                                                                                        gboolean _tmp274_;
 
2231
                                                                                        _tmp274_ = TRUE;
2204
2232
                                                                                        while (TRUE) {
2205
 
                                                                                                gint _tmp283_;
2206
 
                                                                                                const gchar* _tmp284_ = NULL;
2207
 
                                                                                                gchar* _tmp285_;
2208
 
                                                                                                gchar* _tmp286_ = NULL;
2209
 
                                                                                                gchar* _tmp287_;
2210
 
                                                                                                gchar* _tmp288_ = NULL;
2211
 
                                                                                                gchar* _tmp289_;
2212
 
                                                                                                ValaCCodeConstant* _tmp290_ = NULL;
2213
 
                                                                                                ValaCCodeConstant* _tmp291_;
2214
 
                                                                                                ValaCCodeVariableDeclarator* _tmp292_ = NULL;
2215
 
                                                                                                ValaCCodeVariableDeclarator* _tmp293_;
2216
 
                                                                                                ValaCCodeFunction* _tmp294_ = NULL;
2217
 
                                                                                                if (!_tmp282_) {
 
2233
                                                                                                gint _tmp275_;
 
2234
                                                                                                const gchar* _tmp276_ = NULL;
 
2235
                                                                                                gchar* _tmp277_;
 
2236
                                                                                                gchar* _tmp278_;
 
2237
                                                                                                gchar* _tmp279_ = NULL;
 
2238
                                                                                                gchar* _tmp280_;
 
2239
                                                                                                gchar* _tmp281_ = NULL;
 
2240
                                                                                                gchar* _tmp282_;
 
2241
                                                                                                ValaCCodeConstant* _tmp283_ = NULL;
 
2242
                                                                                                ValaCCodeConstant* _tmp284_;
 
2243
                                                                                                ValaCCodeVariableDeclarator* _tmp285_ = NULL;
 
2244
                                                                                                ValaCCodeFunction* _tmp286_ = NULL;
 
2245
                                                                                                if (!_tmp274_) {
2218
2246
                                                                                                        dim++;
2219
2247
                                                                                                }
2220
 
                                                                                                _tmp282_ = FALSE;
2221
 
                                                                                                _tmp283_ = vala_array_type_get_rank (array_type);
2222
 
                                                                                                if (!(dim <= _tmp283_)) {
 
2248
                                                                                                _tmp274_ = FALSE;
 
2249
                                                                                                _tmp275_ = vala_array_type_get_rank (array_type);
 
2250
                                                                                                if (!(dim <= _tmp275_)) {
2223
2251
                                                                                                        break;
2224
2252
                                                                                                }
2225
 
                                                                                                _tmp284_ = vala_symbol_get_name ((ValaSymbol*) param);
2226
 
                                                                                                _tmp285_ = g_strconcat ("_", _tmp284_, NULL);
2227
 
                                                                                                _tmp286_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp285_);
2228
 
                                                                                                _tmp287_ = _tmp286_;
2229
 
                                                                                                _tmp288_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp287_, dim);
2230
 
                                                                                                _tmp289_ = _tmp288_;
2231
 
                                                                                                _tmp290_ = vala_ccode_constant_new ("0");
2232
 
                                                                                                _tmp291_ = _tmp290_;
2233
 
                                                                                                _tmp292_ = vala_ccode_variable_declarator_new_zero (_tmp289_, (ValaCCodeExpression*) _tmp291_, NULL);
2234
 
                                                                                                _tmp293_ = _tmp292_;
 
2253
                                                                                                _tmp276_ = vala_symbol_get_name ((ValaSymbol*) param);
 
2254
                                                                                                _tmp277_ = g_strconcat ("_", _tmp276_, NULL);
 
2255
                                                                                                _tmp278_ = _tmp277_;
 
2256
                                                                                                _tmp279_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp278_);
 
2257
                                                                                                _tmp280_ = _tmp279_;
 
2258
                                                                                                _tmp281_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp280_, dim);
 
2259
                                                                                                _tmp282_ = _tmp281_;
 
2260
                                                                                                _tmp283_ = vala_ccode_constant_new ("0");
 
2261
                                                                                                _tmp284_ = _tmp283_;
 
2262
                                                                                                _tmp285_ = vala_ccode_variable_declarator_new_zero (_tmp282_, (ValaCCodeExpression*) _tmp284_, NULL);
2235
2263
                                                                                                _vala_ccode_node_unref0 (vardecl);
2236
 
                                                                                                vardecl = _tmp293_;
2237
 
                                                                                                _vala_ccode_node_unref0 (_tmp291_);
2238
 
                                                                                                _g_free0 (_tmp289_);
2239
 
                                                                                                _g_free0 (_tmp287_);
2240
 
                                                                                                _g_free0 (_tmp285_);
2241
 
                                                                                                _tmp294_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2242
 
                                                                                                vala_ccode_function_add_declaration (_tmp294_, "int", (ValaCCodeDeclarator*) vardecl, 0);
 
2264
                                                                                                vardecl = _tmp285_;
 
2265
                                                                                                _vala_ccode_node_unref0 (_tmp284_);
 
2266
                                                                                                _g_free0 (_tmp282_);
 
2267
                                                                                                _g_free0 (_tmp280_);
 
2268
                                                                                                _g_free0 (_tmp278_);
 
2269
                                                                                                _tmp286_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2270
                                                                                                vala_ccode_function_add_declaration (_tmp286_, "int", (ValaCCodeDeclarator*) vardecl, 0);
2243
2271
                                                                                        }
2244
2272
                                                                                }
2245
2273
                                                                        }
2246
2274
                                                                }
2247
2275
                                                                _vala_code_node_unref0 (array_type);
2248
2276
                                                        } else {
2249
 
                                                                ValaDataType* _tmp295_ = NULL;
2250
 
                                                                _tmp295_ = vala_variable_get_variable_type ((ValaVariable*) param);
2251
 
                                                                if (VALA_IS_DELEGATE_TYPE (_tmp295_)) {
2252
 
                                                                        ValaDataType* _tmp296_ = NULL;
2253
 
                                                                        ValaDelegateType* _tmp297_;
 
2277
                                                                ValaDataType* _tmp287_ = NULL;
 
2278
                                                                _tmp287_ = vala_variable_get_variable_type ((ValaVariable*) param);
 
2279
                                                                if (VALA_IS_DELEGATE_TYPE (_tmp287_)) {
 
2280
                                                                        ValaDataType* _tmp288_ = NULL;
 
2281
                                                                        ValaDelegateType* _tmp289_;
2254
2282
                                                                        ValaDelegateType* deleg_type;
2255
 
                                                                        ValaDelegate* _tmp298_ = NULL;
2256
 
                                                                        ValaDelegate* _tmp299_;
 
2283
                                                                        ValaDelegate* _tmp290_ = NULL;
 
2284
                                                                        ValaDelegate* _tmp291_;
2257
2285
                                                                        ValaDelegate* d;
2258
 
                                                                        gboolean _tmp300_;
2259
 
                                                                        _tmp296_ = vala_variable_get_variable_type ((ValaVariable*) param);
2260
 
                                                                        _tmp297_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp296_));
2261
 
                                                                        deleg_type = _tmp297_;
2262
 
                                                                        _tmp298_ = vala_delegate_type_get_delegate_symbol (deleg_type);
2263
 
                                                                        _tmp299_ = _vala_code_node_ref0 (_tmp298_);
2264
 
                                                                        d = _tmp299_;
2265
 
                                                                        _tmp300_ = vala_delegate_get_has_target (d);
2266
 
                                                                        if (_tmp300_) {
2267
 
                                                                                const gchar* _tmp301_ = NULL;
2268
 
                                                                                gchar* _tmp302_;
2269
 
                                                                                gchar* _tmp303_ = NULL;
2270
 
                                                                                gchar* _tmp304_;
2271
 
                                                                                gchar* _tmp305_ = NULL;
2272
 
                                                                                gchar* _tmp306_;
2273
 
                                                                                ValaCCodeConstant* _tmp307_ = NULL;
2274
 
                                                                                ValaCCodeConstant* _tmp308_;
2275
 
                                                                                ValaCCodeVariableDeclarator* _tmp309_ = NULL;
2276
 
                                                                                ValaCCodeVariableDeclarator* _tmp310_;
2277
 
                                                                                ValaCCodeFunction* _tmp311_ = NULL;
2278
 
                                                                                gboolean _tmp312_;
2279
 
                                                                                _tmp301_ = vala_symbol_get_name ((ValaSymbol*) param);
2280
 
                                                                                _tmp302_ = g_strconcat ("_", _tmp301_, NULL);
2281
 
                                                                                _tmp303_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp302_);
2282
 
                                                                                _tmp304_ = _tmp303_;
2283
 
                                                                                _tmp305_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp304_);
2284
 
                                                                                _tmp306_ = _tmp305_;
2285
 
                                                                                _tmp307_ = vala_ccode_constant_new ("NULL");
2286
 
                                                                                _tmp308_ = _tmp307_;
2287
 
                                                                                _tmp309_ = vala_ccode_variable_declarator_new_zero (_tmp306_, (ValaCCodeExpression*) _tmp308_, NULL);
2288
 
                                                                                _tmp310_ = _tmp309_;
 
2286
                                                                        gboolean _tmp292_;
 
2287
                                                                        _tmp288_ = vala_variable_get_variable_type ((ValaVariable*) param);
 
2288
                                                                        _tmp289_ = _vala_code_node_ref0 (VALA_DELEGATE_TYPE (_tmp288_));
 
2289
                                                                        deleg_type = _tmp289_;
 
2290
                                                                        _tmp290_ = vala_delegate_type_get_delegate_symbol (deleg_type);
 
2291
                                                                        _tmp291_ = _vala_code_node_ref0 (_tmp290_);
 
2292
                                                                        d = _tmp291_;
 
2293
                                                                        _tmp292_ = vala_delegate_get_has_target (d);
 
2294
                                                                        if (_tmp292_) {
 
2295
                                                                                const gchar* _tmp293_ = NULL;
 
2296
                                                                                gchar* _tmp294_;
 
2297
                                                                                gchar* _tmp295_;
 
2298
                                                                                gchar* _tmp296_ = NULL;
 
2299
                                                                                gchar* _tmp297_;
 
2300
                                                                                gchar* _tmp298_ = NULL;
 
2301
                                                                                gchar* _tmp299_;
 
2302
                                                                                ValaCCodeConstant* _tmp300_ = NULL;
 
2303
                                                                                ValaCCodeConstant* _tmp301_;
 
2304
                                                                                ValaCCodeVariableDeclarator* _tmp302_ = NULL;
 
2305
                                                                                ValaCCodeFunction* _tmp303_ = NULL;
 
2306
                                                                                gboolean _tmp304_;
 
2307
                                                                                _tmp293_ = vala_symbol_get_name ((ValaSymbol*) param);
 
2308
                                                                                _tmp294_ = g_strconcat ("_", _tmp293_, NULL);
 
2309
                                                                                _tmp295_ = _tmp294_;
 
2310
                                                                                _tmp296_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp295_);
 
2311
                                                                                _tmp297_ = _tmp296_;
 
2312
                                                                                _tmp298_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp297_);
 
2313
                                                                                _tmp299_ = _tmp298_;
 
2314
                                                                                _tmp300_ = vala_ccode_constant_new ("NULL");
 
2315
                                                                                _tmp301_ = _tmp300_;
 
2316
                                                                                _tmp302_ = vala_ccode_variable_declarator_new_zero (_tmp299_, (ValaCCodeExpression*) _tmp301_, NULL);
2289
2317
                                                                                _vala_ccode_node_unref0 (vardecl);
2290
 
                                                                                vardecl = _tmp310_;
2291
 
                                                                                _vala_ccode_node_unref0 (_tmp308_);
2292
 
                                                                                _g_free0 (_tmp306_);
2293
 
                                                                                _g_free0 (_tmp304_);
2294
 
                                                                                _g_free0 (_tmp302_);
2295
 
                                                                                _tmp311_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2296
 
                                                                                vala_ccode_function_add_declaration (_tmp311_, "void *", (ValaCCodeDeclarator*) vardecl, 0);
2297
 
                                                                                _tmp312_ = vala_data_type_get_value_owned ((ValaDataType*) deleg_type);
2298
 
                                                                                if (_tmp312_) {
2299
 
                                                                                        const gchar* _tmp313_ = NULL;
2300
 
                                                                                        gchar* _tmp314_;
2301
 
                                                                                        gchar* _tmp315_ = NULL;
2302
 
                                                                                        gchar* _tmp316_;
2303
 
                                                                                        gchar* _tmp317_ = NULL;
2304
 
                                                                                        gchar* _tmp318_;
2305
 
                                                                                        ValaCCodeConstant* _tmp319_ = NULL;
2306
 
                                                                                        ValaCCodeConstant* _tmp320_;
2307
 
                                                                                        ValaCCodeVariableDeclarator* _tmp321_ = NULL;
2308
 
                                                                                        ValaCCodeVariableDeclarator* _tmp322_;
2309
 
                                                                                        ValaCCodeFunction* _tmp323_ = NULL;
2310
 
                                                                                        _tmp313_ = vala_symbol_get_name ((ValaSymbol*) param);
2311
 
                                                                                        _tmp314_ = g_strconcat ("_", _tmp313_, NULL);
2312
 
                                                                                        _tmp315_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp314_);
2313
 
                                                                                        _tmp316_ = _tmp315_;
2314
 
                                                                                        _tmp317_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp316_);
2315
 
                                                                                        _tmp318_ = _tmp317_;
2316
 
                                                                                        _tmp319_ = vala_ccode_constant_new ("NULL");
2317
 
                                                                                        _tmp320_ = _tmp319_;
2318
 
                                                                                        _tmp321_ = vala_ccode_variable_declarator_new_zero (_tmp318_, (ValaCCodeExpression*) _tmp320_, NULL);
2319
 
                                                                                        _tmp322_ = _tmp321_;
 
2318
                                                                                vardecl = _tmp302_;
 
2319
                                                                                _vala_ccode_node_unref0 (_tmp301_);
 
2320
                                                                                _g_free0 (_tmp299_);
 
2321
                                                                                _g_free0 (_tmp297_);
 
2322
                                                                                _g_free0 (_tmp295_);
 
2323
                                                                                _tmp303_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2324
                                                                                vala_ccode_function_add_declaration (_tmp303_, "void *", (ValaCCodeDeclarator*) vardecl, 0);
 
2325
                                                                                _tmp304_ = vala_data_type_get_value_owned ((ValaDataType*) deleg_type);
 
2326
                                                                                if (_tmp304_) {
 
2327
                                                                                        const gchar* _tmp305_ = NULL;
 
2328
                                                                                        gchar* _tmp306_;
 
2329
                                                                                        gchar* _tmp307_;
 
2330
                                                                                        gchar* _tmp308_ = NULL;
 
2331
                                                                                        gchar* _tmp309_;
 
2332
                                                                                        gchar* _tmp310_ = NULL;
 
2333
                                                                                        gchar* _tmp311_;
 
2334
                                                                                        ValaCCodeConstant* _tmp312_ = NULL;
 
2335
                                                                                        ValaCCodeConstant* _tmp313_;
 
2336
                                                                                        ValaCCodeVariableDeclarator* _tmp314_ = NULL;
 
2337
                                                                                        ValaCCodeFunction* _tmp315_ = NULL;
 
2338
                                                                                        _tmp305_ = vala_symbol_get_name ((ValaSymbol*) param);
 
2339
                                                                                        _tmp306_ = g_strconcat ("_", _tmp305_, NULL);
 
2340
                                                                                        _tmp307_ = _tmp306_;
 
2341
                                                                                        _tmp308_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp307_);
 
2342
                                                                                        _tmp309_ = _tmp308_;
 
2343
                                                                                        _tmp310_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp309_);
 
2344
                                                                                        _tmp311_ = _tmp310_;
 
2345
                                                                                        _tmp312_ = vala_ccode_constant_new ("NULL");
 
2346
                                                                                        _tmp313_ = _tmp312_;
 
2347
                                                                                        _tmp314_ = vala_ccode_variable_declarator_new_zero (_tmp311_, (ValaCCodeExpression*) _tmp313_, NULL);
2320
2348
                                                                                        _vala_ccode_node_unref0 (vardecl);
2321
 
                                                                                        vardecl = _tmp322_;
2322
 
                                                                                        _vala_ccode_node_unref0 (_tmp320_);
2323
 
                                                                                        _g_free0 (_tmp318_);
2324
 
                                                                                        _g_free0 (_tmp316_);
2325
 
                                                                                        _g_free0 (_tmp314_);
2326
 
                                                                                        _tmp323_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2327
 
                                                                                        vala_ccode_function_add_declaration (_tmp323_, "GDestroyNotify", (ValaCCodeDeclarator*) vardecl, 0);
 
2349
                                                                                        vardecl = _tmp314_;
 
2350
                                                                                        _vala_ccode_node_unref0 (_tmp313_);
 
2351
                                                                                        _g_free0 (_tmp311_);
 
2352
                                                                                        _g_free0 (_tmp309_);
 
2353
                                                                                        _g_free0 (_tmp307_);
 
2354
                                                                                        _tmp315_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2355
                                                                                        vala_ccode_function_add_declaration (_tmp315_, "GDestroyNotify", (ValaCCodeDeclarator*) vardecl, 0);
2328
2356
                                                                                }
2329
2357
                                                                        }
2330
2358
                                                                        _vala_code_node_unref0 (d);
2338
2366
                                }
2339
2367
                                _vala_iterable_unref0 (_param_list);
2340
2368
                        }
2341
 
                        _tmp326_ = vala_method_get_return_type (m);
2342
 
                        if (!VALA_IS_VOID_TYPE (_tmp326_)) {
2343
 
                                ValaDataType* _tmp327_ = NULL;
2344
 
                                gboolean _tmp328_;
2345
 
                                _tmp327_ = vala_method_get_return_type (m);
2346
 
                                _tmp328_ = vala_data_type_is_real_non_null_struct_type (_tmp327_);
2347
 
                                _tmp325_ = !_tmp328_;
2348
 
                        } else {
2349
 
                                _tmp325_ = FALSE;
2350
 
                        }
2351
 
                        if (_tmp325_) {
2352
 
                                gboolean _tmp329_;
2353
 
                                _tmp329_ = vala_method_get_coroutine (m);
2354
 
                                _tmp324_ = !_tmp329_;
2355
 
                        } else {
2356
 
                                _tmp324_ = FALSE;
2357
 
                        }
2358
 
                        if (_tmp324_) {
2359
 
                                ValaDataType* _tmp330_ = NULL;
2360
 
                                ValaCCodeExpression* _tmp331_ = NULL;
2361
 
                                ValaCCodeExpression* _tmp332_;
2362
 
                                ValaCCodeVariableDeclarator* _tmp333_ = NULL;
2363
 
                                ValaCCodeVariableDeclarator* _tmp334_;
 
2369
                        _tmp318_ = vala_method_get_return_type (m);
 
2370
                        if (!VALA_IS_VOID_TYPE (_tmp318_)) {
 
2371
                                ValaDataType* _tmp319_ = NULL;
 
2372
                                gboolean _tmp320_;
 
2373
                                _tmp319_ = vala_method_get_return_type (m);
 
2374
                                _tmp320_ = vala_data_type_is_real_non_null_struct_type (_tmp319_);
 
2375
                                _tmp317_ = !_tmp320_;
 
2376
                        } else {
 
2377
                                _tmp317_ = FALSE;
 
2378
                        }
 
2379
                        if (_tmp317_) {
 
2380
                                gboolean _tmp321_;
 
2381
                                _tmp321_ = vala_method_get_coroutine (m);
 
2382
                                _tmp316_ = !_tmp321_;
 
2383
                        } else {
 
2384
                                _tmp316_ = FALSE;
 
2385
                        }
 
2386
                        if (_tmp316_) {
 
2387
                                ValaDataType* _tmp322_ = NULL;
 
2388
                                ValaCCodeExpression* _tmp323_ = NULL;
 
2389
                                ValaCCodeExpression* _tmp324_;
 
2390
                                ValaCCodeVariableDeclarator* _tmp325_ = NULL;
 
2391
                                ValaCCodeVariableDeclarator* _tmp326_;
2364
2392
                                ValaCCodeVariableDeclarator* vardecl;
2365
 
                                ValaCCodeFunction* _tmp335_ = NULL;
2366
 
                                ValaDataType* _tmp336_ = NULL;
2367
 
                                gchar* _tmp337_ = NULL;
2368
 
                                gchar* _tmp338_;
2369
 
                                _tmp330_ = vala_method_get_return_type (m);
2370
 
                                _tmp331_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp330_, TRUE);
2371
 
                                _tmp332_ = _tmp331_;
2372
 
                                _tmp333_ = vala_ccode_variable_declarator_new ("result", _tmp332_, NULL);
2373
 
                                vardecl = (_tmp334_ = _tmp333_, _vala_ccode_node_unref0 (_tmp332_), _tmp334_);
 
2393
                                ValaCCodeFunction* _tmp327_ = NULL;
 
2394
                                ValaDataType* _tmp328_ = NULL;
 
2395
                                gchar* _tmp329_ = NULL;
 
2396
                                gchar* _tmp330_;
 
2397
                                _tmp322_ = vala_method_get_return_type (m);
 
2398
                                _tmp323_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp322_, TRUE);
 
2399
                                _tmp324_ = _tmp323_;
 
2400
                                _tmp325_ = vala_ccode_variable_declarator_new ("result", _tmp324_, NULL);
 
2401
                                _tmp326_ = _tmp325_;
 
2402
                                _vala_ccode_node_unref0 (_tmp324_);
 
2403
                                vardecl = _tmp326_;
2374
2404
                                vala_ccode_variable_declarator_set_init0 (vardecl, TRUE);
2375
 
                                _tmp335_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2376
 
                                _tmp336_ = vala_method_get_return_type (m);
2377
 
                                _tmp337_ = vala_data_type_get_cname (_tmp336_);
2378
 
                                _tmp338_ = _tmp337_;
2379
 
                                vala_ccode_function_add_declaration (_tmp335_, _tmp338_, (ValaCCodeDeclarator*) vardecl, 0);
2380
 
                                _g_free0 (_tmp338_);
 
2405
                                _tmp327_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2406
                                _tmp328_ = vala_method_get_return_type (m);
 
2407
                                _tmp329_ = vala_data_type_get_cname (_tmp328_);
 
2408
                                _tmp330_ = _tmp329_;
 
2409
                                vala_ccode_function_add_declaration (_tmp327_, _tmp330_, (ValaCCodeDeclarator*) vardecl, 0);
 
2410
                                _g_free0 (_tmp330_);
2381
2411
                                _vala_ccode_node_unref0 (vardecl);
2382
2412
                        }
2383
2413
                        if (VALA_IS_CREATION_METHOD (m)) {
2384
2414
                                if (in_gobject_creation_method) {
2385
 
                                        ValaCCodeFunction* _tmp339_ = NULL;
2386
 
                                        ValaTypeSymbol* _tmp340_ = NULL;
2387
 
                                        gchar* _tmp341_ = NULL;
2388
 
                                        gchar* _tmp342_;
2389
 
                                        gchar* _tmp343_ = NULL;
2390
 
                                        gchar* _tmp344_;
2391
 
                                        ValaCCodeConstant* _tmp345_ = NULL;
2392
 
                                        ValaCCodeConstant* _tmp346_;
2393
 
                                        ValaCCodeVariableDeclarator* _tmp347_ = NULL;
2394
 
                                        ValaCCodeVariableDeclarator* _tmp348_;
2395
 
                                        _tmp339_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2396
 
                                        _tmp340_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
2397
 
                                        _tmp341_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) VALA_CLASS (_tmp340_), FALSE);
2398
 
                                        _tmp342_ = _tmp341_;
2399
 
                                        _tmp343_ = g_strdup_printf ("%s *", _tmp342_);
2400
 
                                        _tmp344_ = _tmp343_;
2401
 
                                        _tmp345_ = vala_ccode_constant_new ("NULL");
2402
 
                                        _tmp346_ = _tmp345_;
2403
 
                                        _tmp347_ = vala_ccode_variable_declarator_new_zero ("self", (ValaCCodeExpression*) _tmp346_, NULL);
2404
 
                                        _tmp348_ = _tmp347_;
2405
 
                                        vala_ccode_function_add_declaration (_tmp339_, _tmp344_, (ValaCCodeDeclarator*) _tmp348_, 0);
2406
 
                                        _vala_ccode_node_unref0 (_tmp348_);
2407
 
                                        _vala_ccode_node_unref0 (_tmp346_);
2408
 
                                        _g_free0 (_tmp344_);
2409
 
                                        _g_free0 (_tmp342_);
 
2415
                                        ValaCCodeFunction* _tmp331_ = NULL;
 
2416
                                        ValaTypeSymbol* _tmp332_ = NULL;
 
2417
                                        gchar* _tmp333_ = NULL;
 
2418
                                        gchar* _tmp334_;
 
2419
                                        gchar* _tmp335_ = NULL;
 
2420
                                        gchar* _tmp336_;
 
2421
                                        ValaCCodeConstant* _tmp337_ = NULL;
 
2422
                                        ValaCCodeConstant* _tmp338_;
 
2423
                                        ValaCCodeVariableDeclarator* _tmp339_ = NULL;
 
2424
                                        ValaCCodeVariableDeclarator* _tmp340_;
 
2425
                                        _tmp331_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2426
                                        _tmp332_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
 
2427
                                        _tmp333_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) VALA_CLASS (_tmp332_), FALSE);
 
2428
                                        _tmp334_ = _tmp333_;
 
2429
                                        _tmp335_ = g_strdup_printf ("%s *", _tmp334_);
 
2430
                                        _tmp336_ = _tmp335_;
 
2431
                                        _tmp337_ = vala_ccode_constant_new ("NULL");
 
2432
                                        _tmp338_ = _tmp337_;
 
2433
                                        _tmp339_ = vala_ccode_variable_declarator_new_zero ("self", (ValaCCodeExpression*) _tmp338_, NULL);
 
2434
                                        _tmp340_ = _tmp339_;
 
2435
                                        vala_ccode_function_add_declaration (_tmp331_, _tmp336_, (ValaCCodeDeclarator*) _tmp340_, 0);
 
2436
                                        _vala_ccode_node_unref0 (_tmp340_);
 
2437
                                        _vala_ccode_node_unref0 (_tmp338_);
 
2438
                                        _g_free0 (_tmp336_);
 
2439
                                        _g_free0 (_tmp334_);
2410
2440
                                } else {
2411
 
                                        gboolean _tmp349_;
2412
 
                                        _tmp349_ = vala_ccode_method_module_is_gtypeinstance_creation_method (self, m);
2413
 
                                        if (_tmp349_) {
2414
 
                                                ValaSymbol* _tmp350_ = NULL;
2415
 
                                                ValaClass* _tmp351_;
 
2441
                                        gboolean _tmp341_;
 
2442
                                        _tmp341_ = vala_ccode_method_module_is_gtypeinstance_creation_method (self, m);
 
2443
                                        if (_tmp341_) {
 
2444
                                                ValaSymbol* _tmp342_ = NULL;
 
2445
                                                ValaClass* _tmp343_;
2416
2446
                                                ValaClass* cl;
2417
 
                                                ValaCCodeFunction* _tmp352_ = NULL;
2418
 
                                                gchar* _tmp353_ = NULL;
2419
 
                                                gchar* _tmp354_;
2420
 
                                                gchar* _tmp355_;
2421
 
                                                ValaCCodeConstant* _tmp356_ = NULL;
2422
 
                                                ValaCCodeConstant* _tmp357_;
2423
 
                                                ValaCCodeVariableDeclarator* _tmp358_ = NULL;
2424
 
                                                ValaCCodeVariableDeclarator* _tmp359_;
2425
 
                                                gboolean _tmp360_;
2426
 
                                                _tmp350_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
2427
 
                                                _tmp351_ = _vala_code_node_ref0 (VALA_CLASS (_tmp350_));
2428
 
                                                cl = _tmp351_;
2429
 
                                                _tmp352_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2430
 
                                                _tmp353_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
2431
 
                                                _tmp354_ = _tmp353_;
2432
 
                                                _tmp355_ = g_strconcat (_tmp354_, "*", NULL);
2433
 
                                                _tmp356_ = vala_ccode_constant_new ("NULL");
2434
 
                                                _tmp357_ = _tmp356_;
2435
 
                                                _tmp358_ = vala_ccode_variable_declarator_new_zero ("self", (ValaCCodeExpression*) _tmp357_, NULL);
2436
 
                                                _tmp359_ = _tmp358_;
2437
 
                                                vala_ccode_function_add_declaration (_tmp352_, _tmp355_, (ValaCCodeDeclarator*) _tmp359_, 0);
2438
 
                                                _vala_ccode_node_unref0 (_tmp359_);
2439
 
                                                _vala_ccode_node_unref0 (_tmp357_);
2440
 
                                                _g_free0 (_tmp355_);
2441
 
                                                _g_free0 (_tmp354_);
2442
 
                                                _tmp360_ = vala_class_is_fundamental (cl);
2443
 
                                                if (_tmp360_) {
 
2447
                                                ValaCCodeFunction* _tmp344_ = NULL;
 
2448
                                                gchar* _tmp345_ = NULL;
 
2449
                                                gchar* _tmp346_;
 
2450
                                                gchar* _tmp347_;
 
2451
                                                gchar* _tmp348_;
 
2452
                                                ValaCCodeConstant* _tmp349_ = NULL;
 
2453
                                                ValaCCodeConstant* _tmp350_;
 
2454
                                                ValaCCodeVariableDeclarator* _tmp351_ = NULL;
 
2455
                                                ValaCCodeVariableDeclarator* _tmp352_;
 
2456
                                                gboolean _tmp353_;
 
2457
                                                _tmp342_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
 
2458
                                                _tmp343_ = _vala_code_node_ref0 (VALA_CLASS (_tmp342_));
 
2459
                                                cl = _tmp343_;
 
2460
                                                _tmp344_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2461
                                                _tmp345_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
 
2462
                                                _tmp346_ = _tmp345_;
 
2463
                                                _tmp347_ = g_strconcat (_tmp346_, "*", NULL);
 
2464
                                                _tmp348_ = _tmp347_;
 
2465
                                                _tmp349_ = vala_ccode_constant_new ("NULL");
 
2466
                                                _tmp350_ = _tmp349_;
 
2467
                                                _tmp351_ = vala_ccode_variable_declarator_new_zero ("self", (ValaCCodeExpression*) _tmp350_, NULL);
 
2468
                                                _tmp352_ = _tmp351_;
 
2469
                                                vala_ccode_function_add_declaration (_tmp344_, _tmp348_, (ValaCCodeDeclarator*) _tmp352_, 0);
 
2470
                                                _vala_ccode_node_unref0 (_tmp352_);
 
2471
                                                _vala_ccode_node_unref0 (_tmp350_);
 
2472
                                                _g_free0 (_tmp348_);
 
2473
                                                _g_free0 (_tmp346_);
 
2474
                                                _tmp353_ = vala_class_is_fundamental (cl);
 
2475
                                                if (_tmp353_) {
 
2476
                                                        ValaCCodeIdentifier* _tmp354_ = NULL;
 
2477
                                                        ValaCCodeIdentifier* _tmp355_;
 
2478
                                                        ValaCCodeFunctionCall* _tmp356_ = NULL;
 
2479
                                                        ValaCCodeFunctionCall* _tmp357_;
 
2480
                                                        ValaCCodeFunctionCall* ccall;
 
2481
                                                        ValaCCodeIdentifier* _tmp358_ = NULL;
 
2482
                                                        ValaCCodeIdentifier* _tmp359_;
 
2483
                                                        ValaCCodeFunction* _tmp360_ = NULL;
2444
2484
                                                        ValaCCodeIdentifier* _tmp361_ = NULL;
2445
2485
                                                        ValaCCodeIdentifier* _tmp362_;
2446
 
                                                        ValaCCodeFunctionCall* _tmp363_ = NULL;
2447
 
                                                        ValaCCodeFunctionCall* _tmp364_;
2448
 
                                                        ValaCCodeFunctionCall* ccall;
2449
 
                                                        ValaCCodeIdentifier* _tmp365_ = NULL;
2450
 
                                                        ValaCCodeIdentifier* _tmp366_;
2451
 
                                                        ValaCCodeFunction* _tmp367_ = NULL;
2452
 
                                                        ValaCCodeIdentifier* _tmp368_ = NULL;
2453
 
                                                        ValaCCodeIdentifier* _tmp369_;
2454
 
                                                        gchar* _tmp370_ = NULL;
2455
 
                                                        gchar* _tmp371_;
2456
 
                                                        gchar* _tmp372_;
2457
 
                                                        ValaCCodeCastExpression* _tmp373_ = NULL;
2458
 
                                                        ValaCCodeCastExpression* _tmp374_;
2459
 
                                                        _tmp361_ = vala_ccode_identifier_new ("g_type_create_instance");
 
2486
                                                        gchar* _tmp363_ = NULL;
 
2487
                                                        gchar* _tmp364_;
 
2488
                                                        gchar* _tmp365_;
 
2489
                                                        gchar* _tmp366_;
 
2490
                                                        ValaCCodeCastExpression* _tmp367_ = NULL;
 
2491
                                                        ValaCCodeCastExpression* _tmp368_;
 
2492
                                                        _tmp354_ = vala_ccode_identifier_new ("g_type_create_instance");
 
2493
                                                        _tmp355_ = _tmp354_;
 
2494
                                                        _tmp356_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp355_);
 
2495
                                                        _tmp357_ = _tmp356_;
 
2496
                                                        _vala_ccode_node_unref0 (_tmp355_);
 
2497
                                                        ccall = _tmp357_;
 
2498
                                                        _tmp358_ = vala_ccode_identifier_new ("object_type");
 
2499
                                                        _tmp359_ = _tmp358_;
 
2500
                                                        vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp359_);
 
2501
                                                        _vala_ccode_node_unref0 (_tmp359_);
 
2502
                                                        _tmp360_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2503
                                                        _tmp361_ = vala_ccode_identifier_new ("self");
2460
2504
                                                        _tmp362_ = _tmp361_;
2461
 
                                                        _tmp363_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp362_);
2462
 
                                                        ccall = (_tmp364_ = _tmp363_, _vala_ccode_node_unref0 (_tmp362_), _tmp364_);
2463
 
                                                        _tmp365_ = vala_ccode_identifier_new ("object_type");
 
2505
                                                        _tmp363_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
 
2506
                                                        _tmp364_ = _tmp363_;
 
2507
                                                        _tmp365_ = g_strconcat (_tmp364_, "*", NULL);
2464
2508
                                                        _tmp366_ = _tmp365_;
2465
 
                                                        vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp366_);
2466
 
                                                        _vala_ccode_node_unref0 (_tmp366_);
2467
 
                                                        _tmp367_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2468
 
                                                        _tmp368_ = vala_ccode_identifier_new ("self");
2469
 
                                                        _tmp369_ = _tmp368_;
2470
 
                                                        _tmp370_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
2471
 
                                                        _tmp371_ = _tmp370_;
2472
 
                                                        _tmp372_ = g_strconcat (_tmp371_, "*", NULL);
2473
 
                                                        _tmp373_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) ccall, _tmp372_);
2474
 
                                                        _tmp374_ = _tmp373_;
2475
 
                                                        vala_ccode_function_add_assignment (_tmp367_, (ValaCCodeExpression*) _tmp369_, (ValaCCodeExpression*) _tmp374_);
2476
 
                                                        _vala_ccode_node_unref0 (_tmp374_);
2477
 
                                                        _g_free0 (_tmp372_);
2478
 
                                                        _g_free0 (_tmp371_);
2479
 
                                                        _vala_ccode_node_unref0 (_tmp369_);
 
2509
                                                        _tmp367_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) ccall, _tmp366_);
 
2510
                                                        _tmp368_ = _tmp367_;
 
2511
                                                        vala_ccode_function_add_assignment (_tmp360_, (ValaCCodeExpression*) _tmp362_, (ValaCCodeExpression*) _tmp368_);
 
2512
                                                        _vala_ccode_node_unref0 (_tmp368_);
 
2513
                                                        _g_free0 (_tmp366_);
 
2514
                                                        _g_free0 (_tmp364_);
 
2515
                                                        _vala_ccode_node_unref0 (_tmp362_);
2480
2516
                                                        {
2481
 
                                                                ValaClass* _tmp375_ = NULL;
2482
 
                                                                ValaList* _tmp376_ = NULL;
 
2517
                                                                ValaClass* _tmp369_ = NULL;
 
2518
                                                                ValaList* _tmp370_ = NULL;
2483
2519
                                                                ValaList* _type_param_list;
2484
 
                                                                gint _tmp377_;
 
2520
                                                                gint _tmp371_;
2485
2521
                                                                gint _type_param_size;
2486
2522
                                                                gint _type_param_index;
2487
 
                                                                _tmp375_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
2488
 
                                                                _tmp376_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp375_);
2489
 
                                                                _type_param_list = _tmp376_;
2490
 
                                                                _tmp377_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
2491
 
                                                                _type_param_size = _tmp377_;
 
2523
                                                                _tmp369_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
 
2524
                                                                _tmp370_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp369_);
 
2525
                                                                _type_param_list = _tmp370_;
 
2526
                                                                _tmp371_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
 
2527
                                                                _type_param_size = _tmp371_;
2492
2528
                                                                _type_param_index = -1;
2493
2529
                                                                while (TRUE) {
2494
 
                                                                        gpointer _tmp378_ = NULL;
 
2530
                                                                        gpointer _tmp372_ = NULL;
2495
2531
                                                                        ValaTypeParameter* type_param;
2496
2532
                                                                        ValaCCodeIdentifier* param_name = NULL;
2497
2533
                                                                        ValaCCodeAssignment* assign = NULL;
2498
 
                                                                        ValaCCodeIdentifier* _tmp379_ = NULL;
2499
 
                                                                        ValaCCodeIdentifier* _tmp380_;
2500
 
                                                                        ValaCCodeMemberAccess* _tmp381_ = NULL;
2501
 
                                                                        ValaCCodeMemberAccess* _tmp382_;
 
2534
                                                                        ValaCCodeIdentifier* _tmp373_ = NULL;
 
2535
                                                                        ValaCCodeIdentifier* _tmp374_;
 
2536
                                                                        ValaCCodeMemberAccess* _tmp375_ = NULL;
 
2537
                                                                        ValaCCodeMemberAccess* _tmp376_;
2502
2538
                                                                        ValaCCodeMemberAccess* priv_access;
 
2539
                                                                        const gchar* _tmp377_ = NULL;
 
2540
                                                                        gchar* _tmp378_ = NULL;
 
2541
                                                                        gchar* _tmp379_;
 
2542
                                                                        gchar* _tmp380_ = NULL;
 
2543
                                                                        gchar* _tmp381_;
 
2544
                                                                        ValaCCodeIdentifier* _tmp382_ = NULL;
2503
2545
                                                                        const gchar* _tmp383_ = NULL;
2504
 
                                                                        gchar* _tmp384_ = NULL;
2505
 
                                                                        gchar* _tmp385_;
2506
 
                                                                        gchar* _tmp386_ = NULL;
2507
 
                                                                        gchar* _tmp387_;
2508
 
                                                                        ValaCCodeIdentifier* _tmp388_ = NULL;
2509
 
                                                                        ValaCCodeIdentifier* _tmp389_;
2510
 
                                                                        const gchar* _tmp390_ = NULL;
2511
 
                                                                        ValaCCodeMemberAccess* _tmp391_ = NULL;
2512
 
                                                                        ValaCCodeMemberAccess* _tmp392_;
2513
 
                                                                        ValaCCodeAssignment* _tmp393_ = NULL;
2514
 
                                                                        ValaCCodeAssignment* _tmp394_;
2515
 
                                                                        ValaCCodeFunction* _tmp395_ = NULL;
2516
 
                                                                        const gchar* _tmp396_ = NULL;
2517
 
                                                                        gchar* _tmp397_ = NULL;
2518
 
                                                                        gchar* _tmp398_;
2519
 
                                                                        gchar* _tmp399_ = NULL;
2520
 
                                                                        gchar* _tmp400_;
2521
 
                                                                        ValaCCodeIdentifier* _tmp401_ = NULL;
2522
 
                                                                        ValaCCodeIdentifier* _tmp402_;
2523
 
                                                                        const gchar* _tmp403_ = NULL;
2524
 
                                                                        ValaCCodeMemberAccess* _tmp404_ = NULL;
2525
 
                                                                        ValaCCodeMemberAccess* _tmp405_;
2526
 
                                                                        ValaCCodeAssignment* _tmp406_ = NULL;
2527
 
                                                                        ValaCCodeAssignment* _tmp407_;
2528
 
                                                                        ValaCCodeFunction* _tmp408_ = NULL;
2529
 
                                                                        const gchar* _tmp409_ = NULL;
2530
 
                                                                        gchar* _tmp410_ = NULL;
2531
 
                                                                        gchar* _tmp411_;
2532
 
                                                                        gchar* _tmp412_ = NULL;
2533
 
                                                                        gchar* _tmp413_;
2534
 
                                                                        ValaCCodeIdentifier* _tmp414_ = NULL;
2535
 
                                                                        ValaCCodeIdentifier* _tmp415_;
2536
 
                                                                        const gchar* _tmp416_ = NULL;
2537
 
                                                                        ValaCCodeMemberAccess* _tmp417_ = NULL;
2538
 
                                                                        ValaCCodeMemberAccess* _tmp418_;
2539
 
                                                                        ValaCCodeAssignment* _tmp419_ = NULL;
2540
 
                                                                        ValaCCodeAssignment* _tmp420_;
2541
 
                                                                        ValaCCodeFunction* _tmp421_ = NULL;
 
2546
                                                                        ValaCCodeMemberAccess* _tmp384_ = NULL;
 
2547
                                                                        ValaCCodeMemberAccess* _tmp385_;
 
2548
                                                                        ValaCCodeAssignment* _tmp386_ = NULL;
 
2549
                                                                        ValaCCodeFunction* _tmp387_ = NULL;
 
2550
                                                                        const gchar* _tmp388_ = NULL;
 
2551
                                                                        gchar* _tmp389_ = NULL;
 
2552
                                                                        gchar* _tmp390_;
 
2553
                                                                        gchar* _tmp391_ = NULL;
 
2554
                                                                        gchar* _tmp392_;
 
2555
                                                                        ValaCCodeIdentifier* _tmp393_ = NULL;
 
2556
                                                                        const gchar* _tmp394_ = NULL;
 
2557
                                                                        ValaCCodeMemberAccess* _tmp395_ = NULL;
 
2558
                                                                        ValaCCodeMemberAccess* _tmp396_;
 
2559
                                                                        ValaCCodeAssignment* _tmp397_ = NULL;
 
2560
                                                                        ValaCCodeFunction* _tmp398_ = NULL;
 
2561
                                                                        const gchar* _tmp399_ = NULL;
 
2562
                                                                        gchar* _tmp400_ = NULL;
 
2563
                                                                        gchar* _tmp401_;
 
2564
                                                                        gchar* _tmp402_ = NULL;
 
2565
                                                                        gchar* _tmp403_;
 
2566
                                                                        ValaCCodeIdentifier* _tmp404_ = NULL;
 
2567
                                                                        const gchar* _tmp405_ = NULL;
 
2568
                                                                        ValaCCodeMemberAccess* _tmp406_ = NULL;
 
2569
                                                                        ValaCCodeMemberAccess* _tmp407_;
 
2570
                                                                        ValaCCodeAssignment* _tmp408_ = NULL;
 
2571
                                                                        ValaCCodeFunction* _tmp409_ = NULL;
2542
2572
                                                                        _type_param_index = _type_param_index + 1;
2543
2573
                                                                        if (!(_type_param_index < _type_param_size)) {
2544
2574
                                                                                break;
2545
2575
                                                                        }
2546
 
                                                                        _tmp378_ = vala_list_get (_type_param_list, _type_param_index);
2547
 
                                                                        type_param = (ValaTypeParameter*) _tmp378_;
2548
 
                                                                        _tmp379_ = vala_ccode_identifier_new ("self");
2549
 
                                                                        _tmp380_ = _tmp379_;
2550
 
                                                                        _tmp381_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp380_, "priv");
2551
 
                                                                        priv_access = (_tmp382_ = _tmp381_, _vala_ccode_node_unref0 (_tmp380_), _tmp382_);
2552
 
                                                                        _tmp383_ = vala_symbol_get_name ((ValaSymbol*) type_param);
2553
 
                                                                        _tmp384_ = g_utf8_strdown (_tmp383_, (gssize) (-1));
 
2576
                                                                        _tmp372_ = vala_list_get (_type_param_list, _type_param_index);
 
2577
                                                                        type_param = (ValaTypeParameter*) _tmp372_;
 
2578
                                                                        _tmp373_ = vala_ccode_identifier_new ("self");
 
2579
                                                                        _tmp374_ = _tmp373_;
 
2580
                                                                        _tmp375_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp374_, "priv");
 
2581
                                                                        _tmp376_ = _tmp375_;
 
2582
                                                                        _vala_ccode_node_unref0 (_tmp374_);
 
2583
                                                                        priv_access = _tmp376_;
 
2584
                                                                        _tmp377_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
2585
                                                                        _tmp378_ = g_utf8_strdown (_tmp377_, (gssize) (-1));
 
2586
                                                                        _tmp379_ = _tmp378_;
 
2587
                                                                        _tmp380_ = g_strdup_printf ("%s_type", _tmp379_);
 
2588
                                                                        _tmp381_ = _tmp380_;
 
2589
                                                                        _tmp382_ = vala_ccode_identifier_new (_tmp381_);
 
2590
                                                                        _vala_ccode_node_unref0 (param_name);
 
2591
                                                                        param_name = _tmp382_;
 
2592
                                                                        _g_free0 (_tmp381_);
 
2593
                                                                        _g_free0 (_tmp379_);
 
2594
                                                                        _tmp383_ = vala_ccode_identifier_get_name (param_name);
 
2595
                                                                        _tmp384_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) priv_access, _tmp383_);
2554
2596
                                                                        _tmp385_ = _tmp384_;
2555
 
                                                                        _tmp386_ = g_strdup_printf ("%s_type", _tmp385_);
2556
 
                                                                        _tmp387_ = _tmp386_;
2557
 
                                                                        _tmp388_ = vala_ccode_identifier_new (_tmp387_);
2558
 
                                                                        _tmp389_ = _tmp388_;
2559
 
                                                                        _vala_ccode_node_unref0 (param_name);
2560
 
                                                                        param_name = _tmp389_;
2561
 
                                                                        _g_free0 (_tmp387_);
2562
 
                                                                        _g_free0 (_tmp385_);
2563
 
                                                                        _tmp390_ = vala_ccode_identifier_get_name (param_name);
2564
 
                                                                        _tmp391_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) priv_access, _tmp390_);
 
2597
                                                                        _tmp386_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp385_, (ValaCCodeExpression*) param_name, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
 
2598
                                                                        _vala_ccode_node_unref0 (assign);
 
2599
                                                                        assign = _tmp386_;
 
2600
                                                                        _vala_ccode_node_unref0 (_tmp385_);
 
2601
                                                                        _tmp387_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2602
                                                                        vala_ccode_function_add_expression (_tmp387_, (ValaCCodeExpression*) assign);
 
2603
                                                                        _tmp388_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
2604
                                                                        _tmp389_ = g_utf8_strdown (_tmp388_, (gssize) (-1));
 
2605
                                                                        _tmp390_ = _tmp389_;
 
2606
                                                                        _tmp391_ = g_strdup_printf ("%s_dup_func", _tmp390_);
2565
2607
                                                                        _tmp392_ = _tmp391_;
2566
 
                                                                        _tmp393_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp392_, (ValaCCodeExpression*) param_name, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
2567
 
                                                                        _tmp394_ = _tmp393_;
 
2608
                                                                        _tmp393_ = vala_ccode_identifier_new (_tmp392_);
 
2609
                                                                        _vala_ccode_node_unref0 (param_name);
 
2610
                                                                        param_name = _tmp393_;
 
2611
                                                                        _g_free0 (_tmp392_);
 
2612
                                                                        _g_free0 (_tmp390_);
 
2613
                                                                        _tmp394_ = vala_ccode_identifier_get_name (param_name);
 
2614
                                                                        _tmp395_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) priv_access, _tmp394_);
 
2615
                                                                        _tmp396_ = _tmp395_;
 
2616
                                                                        _tmp397_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp396_, (ValaCCodeExpression*) param_name, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
2568
2617
                                                                        _vala_ccode_node_unref0 (assign);
2569
 
                                                                        assign = _tmp394_;
2570
 
                                                                        _vala_ccode_node_unref0 (_tmp392_);
2571
 
                                                                        _tmp395_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2572
 
                                                                        vala_ccode_function_add_expression (_tmp395_, (ValaCCodeExpression*) assign);
2573
 
                                                                        _tmp396_ = vala_symbol_get_name ((ValaSymbol*) type_param);
2574
 
                                                                        _tmp397_ = g_utf8_strdown (_tmp396_, (gssize) (-1));
2575
 
                                                                        _tmp398_ = _tmp397_;
2576
 
                                                                        _tmp399_ = g_strdup_printf ("%s_dup_func", _tmp398_);
2577
 
                                                                        _tmp400_ = _tmp399_;
2578
 
                                                                        _tmp401_ = vala_ccode_identifier_new (_tmp400_);
2579
 
                                                                        _tmp402_ = _tmp401_;
 
2618
                                                                        assign = _tmp397_;
 
2619
                                                                        _vala_ccode_node_unref0 (_tmp396_);
 
2620
                                                                        _tmp398_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2621
                                                                        vala_ccode_function_add_expression (_tmp398_, (ValaCCodeExpression*) assign);
 
2622
                                                                        _tmp399_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
2623
                                                                        _tmp400_ = g_utf8_strdown (_tmp399_, (gssize) (-1));
 
2624
                                                                        _tmp401_ = _tmp400_;
 
2625
                                                                        _tmp402_ = g_strdup_printf ("%s_destroy_func", _tmp401_);
 
2626
                                                                        _tmp403_ = _tmp402_;
 
2627
                                                                        _tmp404_ = vala_ccode_identifier_new (_tmp403_);
2580
2628
                                                                        _vala_ccode_node_unref0 (param_name);
2581
 
                                                                        param_name = _tmp402_;
2582
 
                                                                        _g_free0 (_tmp400_);
2583
 
                                                                        _g_free0 (_tmp398_);
2584
 
                                                                        _tmp403_ = vala_ccode_identifier_get_name (param_name);
2585
 
                                                                        _tmp404_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) priv_access, _tmp403_);
2586
 
                                                                        _tmp405_ = _tmp404_;
2587
 
                                                                        _tmp406_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp405_, (ValaCCodeExpression*) param_name, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
 
2629
                                                                        param_name = _tmp404_;
 
2630
                                                                        _g_free0 (_tmp403_);
 
2631
                                                                        _g_free0 (_tmp401_);
 
2632
                                                                        _tmp405_ = vala_ccode_identifier_get_name (param_name);
 
2633
                                                                        _tmp406_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) priv_access, _tmp405_);
2588
2634
                                                                        _tmp407_ = _tmp406_;
2589
 
                                                                        _vala_ccode_node_unref0 (assign);
2590
 
                                                                        assign = _tmp407_;
2591
 
                                                                        _vala_ccode_node_unref0 (_tmp405_);
2592
 
                                                                        _tmp408_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2593
 
                                                                        vala_ccode_function_add_expression (_tmp408_, (ValaCCodeExpression*) assign);
2594
 
                                                                        _tmp409_ = vala_symbol_get_name ((ValaSymbol*) type_param);
2595
 
                                                                        _tmp410_ = g_utf8_strdown (_tmp409_, (gssize) (-1));
2596
 
                                                                        _tmp411_ = _tmp410_;
2597
 
                                                                        _tmp412_ = g_strdup_printf ("%s_destroy_func", _tmp411_);
2598
 
                                                                        _tmp413_ = _tmp412_;
2599
 
                                                                        _tmp414_ = vala_ccode_identifier_new (_tmp413_);
2600
 
                                                                        _tmp415_ = _tmp414_;
2601
 
                                                                        _vala_ccode_node_unref0 (param_name);
2602
 
                                                                        param_name = _tmp415_;
2603
 
                                                                        _g_free0 (_tmp413_);
2604
 
                                                                        _g_free0 (_tmp411_);
2605
 
                                                                        _tmp416_ = vala_ccode_identifier_get_name (param_name);
2606
 
                                                                        _tmp417_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) priv_access, _tmp416_);
2607
 
                                                                        _tmp418_ = _tmp417_;
2608
 
                                                                        _tmp419_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp418_, (ValaCCodeExpression*) param_name, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
2609
 
                                                                        _tmp420_ = _tmp419_;
2610
 
                                                                        _vala_ccode_node_unref0 (assign);
2611
 
                                                                        assign = _tmp420_;
2612
 
                                                                        _vala_ccode_node_unref0 (_tmp418_);
2613
 
                                                                        _tmp421_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2614
 
                                                                        vala_ccode_function_add_expression (_tmp421_, (ValaCCodeExpression*) assign);
 
2635
                                                                        _tmp408_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp407_, (ValaCCodeExpression*) param_name, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
 
2636
                                                                        _vala_ccode_node_unref0 (assign);
 
2637
                                                                        assign = _tmp408_;
 
2638
                                                                        _vala_ccode_node_unref0 (_tmp407_);
 
2639
                                                                        _tmp409_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2640
                                                                        vala_ccode_function_add_expression (_tmp409_, (ValaCCodeExpression*) assign);
2615
2641
                                                                        _vala_ccode_node_unref0 (priv_access);
2616
2642
                                                                        _vala_ccode_node_unref0 (assign);
2617
2643
                                                                        _vala_ccode_node_unref0 (param_name);
2623
2649
                                                }
2624
2650
                                                _vala_code_node_unref0 (cl);
2625
2651
                                        } else {
2626
 
                                                ValaTypeSymbol* _tmp422_ = NULL;
2627
 
                                                _tmp422_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
2628
 
                                                if (VALA_IS_CLASS (_tmp422_)) {
2629
 
                                                        ValaSymbol* _tmp423_ = NULL;
2630
 
                                                        ValaClass* _tmp424_;
 
2652
                                                ValaTypeSymbol* _tmp410_ = NULL;
 
2653
                                                _tmp410_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
 
2654
                                                if (VALA_IS_CLASS (_tmp410_)) {
 
2655
                                                        ValaSymbol* _tmp411_ = NULL;
 
2656
                                                        ValaClass* _tmp412_;
2631
2657
                                                        ValaClass* cl;
2632
 
                                                        ValaCCodeFunction* _tmp425_ = NULL;
2633
 
                                                        gchar* _tmp426_ = NULL;
2634
 
                                                        gchar* _tmp427_;
2635
 
                                                        gchar* _tmp428_;
2636
 
                                                        ValaCCodeVariableDeclarator* _tmp429_ = NULL;
2637
 
                                                        ValaCCodeVariableDeclarator* _tmp430_;
2638
 
                                                        gboolean _tmp431_;
2639
 
                                                        ValaClass* _tmp443_ = NULL;
2640
 
                                                        _tmp423_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
2641
 
                                                        _tmp424_ = _vala_code_node_ref0 (VALA_CLASS (_tmp423_));
2642
 
                                                        cl = _tmp424_;
2643
 
                                                        _tmp425_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2644
 
                                                        _tmp426_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
2645
 
                                                        _tmp427_ = _tmp426_;
2646
 
                                                        _tmp428_ = g_strconcat (_tmp427_, "*", NULL);
2647
 
                                                        _tmp429_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
2648
 
                                                        _tmp430_ = _tmp429_;
2649
 
                                                        vala_ccode_function_add_declaration (_tmp425_, _tmp428_, (ValaCCodeDeclarator*) _tmp430_, 0);
2650
 
                                                        _vala_ccode_node_unref0 (_tmp430_);
2651
 
                                                        _g_free0 (_tmp428_);
2652
 
                                                        _g_free0 (_tmp427_);
2653
 
                                                        _tmp431_ = vala_creation_method_get_chain_up (VALA_CREATION_METHOD (m));
2654
 
                                                        if (!_tmp431_) {
2655
 
                                                                ValaCCodeIdentifier* _tmp432_ = NULL;
2656
 
                                                                ValaCCodeIdentifier* _tmp433_;
2657
 
                                                                ValaCCodeFunctionCall* _tmp434_ = NULL;
2658
 
                                                                ValaCCodeFunctionCall* _tmp435_;
 
2658
                                                        ValaCCodeFunction* _tmp413_ = NULL;
 
2659
                                                        gchar* _tmp414_ = NULL;
 
2660
                                                        gchar* _tmp415_;
 
2661
                                                        gchar* _tmp416_;
 
2662
                                                        gchar* _tmp417_;
 
2663
                                                        ValaCCodeVariableDeclarator* _tmp418_ = NULL;
 
2664
                                                        ValaCCodeVariableDeclarator* _tmp419_;
 
2665
                                                        gboolean _tmp420_;
 
2666
                                                        ValaClass* _tmp432_ = NULL;
 
2667
                                                        _tmp411_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
 
2668
                                                        _tmp412_ = _vala_code_node_ref0 (VALA_CLASS (_tmp411_));
 
2669
                                                        cl = _tmp412_;
 
2670
                                                        _tmp413_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2671
                                                        _tmp414_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
 
2672
                                                        _tmp415_ = _tmp414_;
 
2673
                                                        _tmp416_ = g_strconcat (_tmp415_, "*", NULL);
 
2674
                                                        _tmp417_ = _tmp416_;
 
2675
                                                        _tmp418_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
 
2676
                                                        _tmp419_ = _tmp418_;
 
2677
                                                        vala_ccode_function_add_declaration (_tmp413_, _tmp417_, (ValaCCodeDeclarator*) _tmp419_, 0);
 
2678
                                                        _vala_ccode_node_unref0 (_tmp419_);
 
2679
                                                        _g_free0 (_tmp417_);
 
2680
                                                        _g_free0 (_tmp415_);
 
2681
                                                        _tmp420_ = vala_creation_method_get_chain_up (VALA_CREATION_METHOD (m));
 
2682
                                                        if (!_tmp420_) {
 
2683
                                                                ValaCCodeIdentifier* _tmp421_ = NULL;
 
2684
                                                                ValaCCodeIdentifier* _tmp422_;
 
2685
                                                                ValaCCodeFunctionCall* _tmp423_ = NULL;
 
2686
                                                                ValaCCodeFunctionCall* _tmp424_;
2659
2687
                                                                ValaCCodeFunctionCall* ccall;
2660
 
                                                                gchar* _tmp436_ = NULL;
2661
 
                                                                gchar* _tmp437_;
2662
 
                                                                ValaCCodeIdentifier* _tmp438_ = NULL;
2663
 
                                                                ValaCCodeIdentifier* _tmp439_;
2664
 
                                                                ValaCCodeFunction* _tmp440_ = NULL;
 
2688
                                                                gchar* _tmp425_ = NULL;
 
2689
                                                                gchar* _tmp426_;
 
2690
                                                                ValaCCodeIdentifier* _tmp427_ = NULL;
 
2691
                                                                ValaCCodeIdentifier* _tmp428_;
 
2692
                                                                ValaCCodeFunction* _tmp429_ = NULL;
 
2693
                                                                ValaCCodeIdentifier* _tmp430_ = NULL;
 
2694
                                                                ValaCCodeIdentifier* _tmp431_;
 
2695
                                                                _tmp421_ = vala_ccode_identifier_new ("g_slice_new0");
 
2696
                                                                _tmp422_ = _tmp421_;
 
2697
                                                                _tmp423_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp422_);
 
2698
                                                                _tmp424_ = _tmp423_;
 
2699
                                                                _vala_ccode_node_unref0 (_tmp422_);
 
2700
                                                                ccall = _tmp424_;
 
2701
                                                                _tmp425_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
 
2702
                                                                _tmp426_ = _tmp425_;
 
2703
                                                                _tmp427_ = vala_ccode_identifier_new (_tmp426_);
 
2704
                                                                _tmp428_ = _tmp427_;
 
2705
                                                                vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp428_);
 
2706
                                                                _vala_ccode_node_unref0 (_tmp428_);
 
2707
                                                                _g_free0 (_tmp426_);
 
2708
                                                                _tmp429_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2709
                                                                _tmp430_ = vala_ccode_identifier_new ("self");
 
2710
                                                                _tmp431_ = _tmp430_;
 
2711
                                                                vala_ccode_function_add_assignment (_tmp429_, (ValaCCodeExpression*) _tmp431_, (ValaCCodeExpression*) ccall);
 
2712
                                                                _vala_ccode_node_unref0 (_tmp431_);
 
2713
                                                                _vala_ccode_node_unref0 (ccall);
 
2714
                                                        }
 
2715
                                                        _tmp432_ = vala_class_get_base_class (cl);
 
2716
                                                        if (_tmp432_ == NULL) {
 
2717
                                                                gchar* _tmp433_ = NULL;
 
2718
                                                                gchar* _tmp434_;
 
2719
                                                                gchar* _tmp435_ = NULL;
 
2720
                                                                gchar* _tmp436_;
 
2721
                                                                ValaCCodeIdentifier* _tmp437_ = NULL;
 
2722
                                                                ValaCCodeIdentifier* _tmp438_;
 
2723
                                                                ValaCCodeFunctionCall* _tmp439_ = NULL;
 
2724
                                                                ValaCCodeFunctionCall* _tmp440_;
 
2725
                                                                ValaCCodeFunctionCall* cinitcall;
2665
2726
                                                                ValaCCodeIdentifier* _tmp441_ = NULL;
2666
2727
                                                                ValaCCodeIdentifier* _tmp442_;
2667
 
                                                                _tmp432_ = vala_ccode_identifier_new ("g_slice_new0");
2668
 
                                                                _tmp433_ = _tmp432_;
2669
 
                                                                _tmp434_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp433_);
2670
 
                                                                ccall = (_tmp435_ = _tmp434_, _vala_ccode_node_unref0 (_tmp433_), _tmp435_);
2671
 
                                                                _tmp436_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) cl, FALSE);
2672
 
                                                                _tmp437_ = _tmp436_;
2673
 
                                                                _tmp438_ = vala_ccode_identifier_new (_tmp437_);
2674
 
                                                                _tmp439_ = _tmp438_;
2675
 
                                                                vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp439_);
2676
 
                                                                _vala_ccode_node_unref0 (_tmp439_);
2677
 
                                                                _g_free0 (_tmp437_);
2678
 
                                                                _tmp440_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2728
                                                                ValaCCodeFunction* _tmp443_ = NULL;
 
2729
                                                                _tmp433_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
 
2730
                                                                _tmp434_ = _tmp433_;
 
2731
                                                                _tmp435_ = g_strdup_printf ("%s_instance_init", _tmp434_);
 
2732
                                                                _tmp436_ = _tmp435_;
 
2733
                                                                _tmp437_ = vala_ccode_identifier_new (_tmp436_);
 
2734
                                                                _tmp438_ = _tmp437_;
 
2735
                                                                _tmp439_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp438_);
 
2736
                                                                _tmp440_ = _tmp439_;
 
2737
                                                                _vala_ccode_node_unref0 (_tmp438_);
 
2738
                                                                _g_free0 (_tmp436_);
 
2739
                                                                _g_free0 (_tmp434_);
 
2740
                                                                cinitcall = _tmp440_;
2679
2741
                                                                _tmp441_ = vala_ccode_identifier_new ("self");
2680
2742
                                                                _tmp442_ = _tmp441_;
2681
 
                                                                vala_ccode_function_add_assignment (_tmp440_, (ValaCCodeExpression*) _tmp442_, (ValaCCodeExpression*) ccall);
 
2743
                                                                vala_ccode_function_call_add_argument (cinitcall, (ValaCCodeExpression*) _tmp442_);
2682
2744
                                                                _vala_ccode_node_unref0 (_tmp442_);
2683
 
                                                                _vala_ccode_node_unref0 (ccall);
2684
 
                                                        }
2685
 
                                                        _tmp443_ = vala_class_get_base_class (cl);
2686
 
                                                        if (_tmp443_ == NULL) {
2687
 
                                                                gchar* _tmp444_ = NULL;
2688
 
                                                                gchar* _tmp445_;
2689
 
                                                                gchar* _tmp446_ = NULL;
2690
 
                                                                gchar* _tmp447_;
2691
 
                                                                ValaCCodeIdentifier* _tmp448_ = NULL;
2692
 
                                                                ValaCCodeIdentifier* _tmp449_;
2693
 
                                                                ValaCCodeFunctionCall* _tmp450_ = NULL;
2694
 
                                                                ValaCCodeFunctionCall* _tmp451_;
2695
 
                                                                ValaCCodeFunctionCall* cinitcall;
2696
 
                                                                ValaCCodeIdentifier* _tmp452_ = NULL;
2697
 
                                                                ValaCCodeIdentifier* _tmp453_;
2698
 
                                                                ValaCCodeFunction* _tmp454_ = NULL;
2699
 
                                                                _tmp444_ = vala_symbol_get_lower_case_cname ((ValaSymbol*) cl, NULL);
2700
 
                                                                _tmp445_ = _tmp444_;
2701
 
                                                                _tmp446_ = g_strdup_printf ("%s_instance_init", _tmp445_);
2702
 
                                                                _tmp447_ = _tmp446_;
2703
 
                                                                _tmp448_ = vala_ccode_identifier_new (_tmp447_);
2704
 
                                                                _tmp449_ = _tmp448_;
2705
 
                                                                _tmp450_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp449_);
2706
 
                                                                cinitcall = (_tmp451_ = _tmp450_, _vala_ccode_node_unref0 (_tmp449_), _g_free0 (_tmp447_), _g_free0 (_tmp445_), _tmp451_);
2707
 
                                                                _tmp452_ = vala_ccode_identifier_new ("self");
2708
 
                                                                _tmp453_ = _tmp452_;
2709
 
                                                                vala_ccode_function_call_add_argument (cinitcall, (ValaCCodeExpression*) _tmp453_);
2710
 
                                                                _vala_ccode_node_unref0 (_tmp453_);
2711
 
                                                                _tmp454_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2712
 
                                                                vala_ccode_function_add_expression (_tmp454_, (ValaCCodeExpression*) cinitcall);
 
2745
                                                                _tmp443_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2746
                                                                vala_ccode_function_add_expression (_tmp443_, (ValaCCodeExpression*) cinitcall);
2713
2747
                                                                _vala_ccode_node_unref0 (cinitcall);
2714
2748
                                                        }
2715
2749
                                                        _vala_code_node_unref0 (cl);
2716
2750
                                                } else {
2717
 
                                                        ValaSymbol* _tmp455_ = NULL;
2718
 
                                                        ValaStruct* _tmp456_;
 
2751
                                                        ValaSymbol* _tmp444_ = NULL;
 
2752
                                                        ValaStruct* _tmp445_;
2719
2753
                                                        ValaStruct* st;
2720
 
                                                        ValaCCodeIdentifier* _tmp457_ = NULL;
2721
 
                                                        ValaCCodeIdentifier* _tmp458_;
2722
 
                                                        ValaCCodeFunctionCall* _tmp459_ = NULL;
2723
 
                                                        ValaCCodeFunctionCall* _tmp460_;
 
2754
                                                        ValaCCodeIdentifier* _tmp446_ = NULL;
 
2755
                                                        ValaCCodeIdentifier* _tmp447_;
 
2756
                                                        ValaCCodeFunctionCall* _tmp448_ = NULL;
 
2757
                                                        ValaCCodeFunctionCall* _tmp449_;
2724
2758
                                                        ValaCCodeFunctionCall* czero;
2725
 
                                                        ValaCCodeIdentifier* _tmp461_ = NULL;
2726
 
                                                        ValaCCodeIdentifier* _tmp462_;
2727
 
                                                        ValaCCodeConstant* _tmp463_ = NULL;
2728
 
                                                        ValaCCodeConstant* _tmp464_;
2729
 
                                                        gchar* _tmp465_ = NULL;
2730
 
                                                        gchar* _tmp466_;
2731
 
                                                        gchar* _tmp467_ = NULL;
2732
 
                                                        gchar* _tmp468_;
2733
 
                                                        ValaCCodeIdentifier* _tmp469_ = NULL;
2734
 
                                                        ValaCCodeIdentifier* _tmp470_;
2735
 
                                                        ValaCCodeFunction* _tmp471_ = NULL;
2736
 
                                                        _tmp455_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
2737
 
                                                        _tmp456_ = _vala_code_node_ref0 (VALA_STRUCT (_tmp455_));
2738
 
                                                        st = _tmp456_;
 
2759
                                                        ValaCCodeIdentifier* _tmp450_ = NULL;
 
2760
                                                        ValaCCodeIdentifier* _tmp451_;
 
2761
                                                        ValaCCodeConstant* _tmp452_ = NULL;
 
2762
                                                        ValaCCodeConstant* _tmp453_;
 
2763
                                                        gchar* _tmp454_ = NULL;
 
2764
                                                        gchar* _tmp455_;
 
2765
                                                        gchar* _tmp456_ = NULL;
 
2766
                                                        gchar* _tmp457_;
 
2767
                                                        ValaCCodeIdentifier* _tmp458_ = NULL;
 
2768
                                                        ValaCCodeIdentifier* _tmp459_;
 
2769
                                                        ValaCCodeFunction* _tmp460_ = NULL;
 
2770
                                                        _tmp444_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
 
2771
                                                        _tmp445_ = _vala_code_node_ref0 (VALA_STRUCT (_tmp444_));
 
2772
                                                        st = _tmp445_;
2739
2773
                                                        vala_ccode_file_add_include (((ValaCCodeBaseModule*) self)->cfile, "string.h", FALSE);
2740
 
                                                        _tmp457_ = vala_ccode_identifier_new ("memset");
2741
 
                                                        _tmp458_ = _tmp457_;
2742
 
                                                        _tmp459_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp458_);
2743
 
                                                        czero = (_tmp460_ = _tmp459_, _vala_ccode_node_unref0 (_tmp458_), _tmp460_);
2744
 
                                                        _tmp461_ = vala_ccode_identifier_new ("self");
2745
 
                                                        _tmp462_ = _tmp461_;
2746
 
                                                        vala_ccode_function_call_add_argument (czero, (ValaCCodeExpression*) _tmp462_);
2747
 
                                                        _vala_ccode_node_unref0 (_tmp462_);
2748
 
                                                        _tmp463_ = vala_ccode_constant_new ("0");
2749
 
                                                        _tmp464_ = _tmp463_;
2750
 
                                                        vala_ccode_function_call_add_argument (czero, (ValaCCodeExpression*) _tmp464_);
2751
 
                                                        _vala_ccode_node_unref0 (_tmp464_);
2752
 
                                                        _tmp465_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
2753
 
                                                        _tmp466_ = _tmp465_;
2754
 
                                                        _tmp467_ = g_strdup_printf ("sizeof (%s)", _tmp466_);
2755
 
                                                        _tmp468_ = _tmp467_;
2756
 
                                                        _tmp469_ = vala_ccode_identifier_new (_tmp468_);
2757
 
                                                        _tmp470_ = _tmp469_;
2758
 
                                                        vala_ccode_function_call_add_argument (czero, (ValaCCodeExpression*) _tmp470_);
2759
 
                                                        _vala_ccode_node_unref0 (_tmp470_);
2760
 
                                                        _g_free0 (_tmp468_);
2761
 
                                                        _g_free0 (_tmp466_);
2762
 
                                                        _tmp471_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2763
 
                                                        vala_ccode_function_add_expression (_tmp471_, (ValaCCodeExpression*) czero);
 
2774
                                                        _tmp446_ = vala_ccode_identifier_new ("memset");
 
2775
                                                        _tmp447_ = _tmp446_;
 
2776
                                                        _tmp448_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp447_);
 
2777
                                                        _tmp449_ = _tmp448_;
 
2778
                                                        _vala_ccode_node_unref0 (_tmp447_);
 
2779
                                                        czero = _tmp449_;
 
2780
                                                        _tmp450_ = vala_ccode_identifier_new ("self");
 
2781
                                                        _tmp451_ = _tmp450_;
 
2782
                                                        vala_ccode_function_call_add_argument (czero, (ValaCCodeExpression*) _tmp451_);
 
2783
                                                        _vala_ccode_node_unref0 (_tmp451_);
 
2784
                                                        _tmp452_ = vala_ccode_constant_new ("0");
 
2785
                                                        _tmp453_ = _tmp452_;
 
2786
                                                        vala_ccode_function_call_add_argument (czero, (ValaCCodeExpression*) _tmp453_);
 
2787
                                                        _vala_ccode_node_unref0 (_tmp453_);
 
2788
                                                        _tmp454_ = vala_typesymbol_get_cname ((ValaTypeSymbol*) st, FALSE);
 
2789
                                                        _tmp455_ = _tmp454_;
 
2790
                                                        _tmp456_ = g_strdup_printf ("sizeof (%s)", _tmp455_);
 
2791
                                                        _tmp457_ = _tmp456_;
 
2792
                                                        _tmp458_ = vala_ccode_identifier_new (_tmp457_);
 
2793
                                                        _tmp459_ = _tmp458_;
 
2794
                                                        vala_ccode_function_call_add_argument (czero, (ValaCCodeExpression*) _tmp459_);
 
2795
                                                        _vala_ccode_node_unref0 (_tmp459_);
 
2796
                                                        _g_free0 (_tmp457_);
 
2797
                                                        _g_free0 (_tmp455_);
 
2798
                                                        _tmp460_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2799
                                                        vala_ccode_function_add_expression (_tmp460_, (ValaCCodeExpression*) czero);
2764
2800
                                                        _vala_ccode_node_unref0 (czero);
2765
2801
                                                        _vala_code_node_unref0 (st);
2766
2802
                                                }
2767
2803
                                        }
2768
2804
                                }
2769
2805
                        }
2770
 
                        _tmp473_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
2771
 
                        _tmp474_ = vala_code_context_get_module_init_method (_tmp473_);
2772
 
                        if (_tmp474_ == m) {
2773
 
                                _tmp472_ = ((ValaCCodeBaseModule*) self)->in_plugin;
 
2806
                        _tmp462_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
 
2807
                        _tmp463_ = vala_code_context_get_module_init_method (_tmp462_);
 
2808
                        if (_tmp463_ == m) {
 
2809
                                _tmp461_ = ((ValaCCodeBaseModule*) self)->in_plugin;
2774
2810
                        } else {
2775
 
                                _tmp472_ = FALSE;
 
2811
                                _tmp461_ = FALSE;
2776
2812
                        }
2777
 
                        if (_tmp472_) {
2778
 
                                ValaCodeContext* _tmp475_ = NULL;
2779
 
                                ValaNamespace* _tmp476_ = NULL;
2780
 
                                ValaHashSet* _tmp477_ = NULL;
2781
 
                                ValaHashSet* _tmp478_;
2782
 
                                _tmp475_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
2783
 
                                _tmp476_ = vala_code_context_get_root (_tmp475_);
2784
 
                                _tmp477_ = vala_hash_set_new (VALA_TYPE_SYMBOL, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_hash, g_direct_equal);
2785
 
                                _tmp478_ = _tmp477_;
2786
 
                                vala_ccode_method_module_register_plugin_types (self, (ValaSymbol*) _tmp476_, (ValaSet*) _tmp478_);
2787
 
                                _vala_iterable_unref0 (_tmp478_);
 
2813
                        if (_tmp461_) {
 
2814
                                ValaCodeContext* _tmp464_ = NULL;
 
2815
                                ValaNamespace* _tmp465_ = NULL;
 
2816
                                ValaHashSet* _tmp466_ = NULL;
 
2817
                                ValaHashSet* _tmp467_;
 
2818
                                _tmp464_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
 
2819
                                _tmp465_ = vala_code_context_get_root (_tmp464_);
 
2820
                                _tmp466_ = vala_hash_set_new (VALA_TYPE_SYMBOL, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_hash, g_direct_equal);
 
2821
                                _tmp467_ = _tmp466_;
 
2822
                                vala_ccode_method_module_register_plugin_types (self, (ValaSymbol*) _tmp465_, (ValaSet*) _tmp467_);
 
2823
                                _vala_iterable_unref0 (_tmp467_);
2788
2824
                        }
2789
2825
                        {
2790
 
                                ValaList* _tmp479_ = NULL;
 
2826
                                ValaList* _tmp468_ = NULL;
2791
2827
                                ValaList* _precondition_list;
2792
 
                                gint _tmp480_;
 
2828
                                gint _tmp469_;
2793
2829
                                gint _precondition_size;
2794
2830
                                gint _precondition_index;
2795
 
                                _tmp479_ = vala_method_get_preconditions (m);
2796
 
                                _precondition_list = _tmp479_;
2797
 
                                _tmp480_ = vala_collection_get_size ((ValaCollection*) _precondition_list);
2798
 
                                _precondition_size = _tmp480_;
 
2831
                                _tmp468_ = vala_method_get_preconditions (m);
 
2832
                                _precondition_list = _tmp468_;
 
2833
                                _tmp469_ = vala_collection_get_size ((ValaCollection*) _precondition_list);
 
2834
                                _precondition_size = _tmp469_;
2799
2835
                                _precondition_index = -1;
2800
2836
                                while (TRUE) {
2801
 
                                        gpointer _tmp481_ = NULL;
 
2837
                                        gpointer _tmp470_ = NULL;
2802
2838
                                        ValaExpression* precondition;
2803
2839
                                        _precondition_index = _precondition_index + 1;
2804
2840
                                        if (!(_precondition_index < _precondition_size)) {
2805
2841
                                                break;
2806
2842
                                        }
2807
 
                                        _tmp481_ = vala_list_get (_precondition_list, _precondition_index);
2808
 
                                        precondition = (ValaExpression*) _tmp481_;
 
2843
                                        _tmp470_ = vala_list_get (_precondition_list, _precondition_index);
 
2844
                                        precondition = (ValaExpression*) _tmp470_;
2809
2845
                                        vala_ccode_method_module_create_precondition_statement (self, (ValaCodeNode*) m, creturn_type, precondition);
2810
2846
                                        _vala_code_node_unref0 (precondition);
2811
2847
                                }
2813
2849
                        }
2814
2850
                }
2815
2851
        }
2816
 
        _tmp482_ = vala_subroutine_get_body ((ValaSubroutine*) m);
2817
 
        if (_tmp482_ != NULL) {
2818
 
                ValaBlock* _tmp483_ = NULL;
2819
 
                _tmp483_ = vala_subroutine_get_body ((ValaSubroutine*) m);
2820
 
                vala_code_node_emit ((ValaCodeNode*) _tmp483_, (ValaCodeGenerator*) self);
 
2852
        _tmp471_ = vala_subroutine_get_body ((ValaSubroutine*) m);
 
2853
        if (_tmp471_ != NULL) {
 
2854
                ValaBlock* _tmp472_ = NULL;
 
2855
                _tmp472_ = vala_subroutine_get_body ((ValaSubroutine*) m);
 
2856
                vala_code_node_emit ((ValaCodeNode*) _tmp472_, (ValaCodeGenerator*) self);
2821
2857
        }
2822
 
        _tmp485_ = vala_method_get_is_abstract (m);
2823
 
        if (!_tmp485_) {
2824
 
                _tmp484_ = TRUE;
 
2858
        _tmp474_ = vala_method_get_is_abstract (m);
 
2859
        if (!_tmp474_) {
 
2860
                _tmp473_ = TRUE;
2825
2861
        } else {
2826
 
                gboolean _tmp486_ = FALSE;
2827
 
                gboolean _tmp487_;
2828
 
                _tmp487_ = vala_method_get_is_abstract (m);
2829
 
                if (_tmp487_) {
2830
 
                        ValaTypeSymbol* _tmp488_ = NULL;
2831
 
                        _tmp488_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
2832
 
                        _tmp486_ = VALA_IS_CLASS (_tmp488_);
 
2862
                gboolean _tmp475_ = FALSE;
 
2863
                gboolean _tmp476_;
 
2864
                _tmp476_ = vala_method_get_is_abstract (m);
 
2865
                if (_tmp476_) {
 
2866
                        ValaTypeSymbol* _tmp477_ = NULL;
 
2867
                        _tmp477_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
 
2868
                        _tmp475_ = VALA_IS_CLASS (_tmp477_);
2833
2869
                } else {
2834
 
                        _tmp486_ = FALSE;
 
2870
                        _tmp475_ = FALSE;
2835
2871
                }
2836
 
                _tmp484_ = _tmp486_;
 
2872
                _tmp473_ = _tmp475_;
2837
2873
        }
2838
 
        if (_tmp484_) {
2839
 
                ValaBlock* _tmp489_ = NULL;
2840
 
                _tmp489_ = vala_subroutine_get_body ((ValaSubroutine*) m);
2841
 
                if (_tmp489_ != NULL) {
2842
 
                        gboolean _tmp490_;
2843
 
                        gboolean _tmp497_;
2844
 
                        gboolean _tmp498_ = FALSE;
2845
 
                        gboolean _tmp499_ = FALSE;
2846
 
                        ValaDataType* _tmp500_ = NULL;
2847
 
                        ValaCCodeFunction* _tmp576_ = NULL;
2848
 
                        _tmp490_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
2849
 
                        if (_tmp490_) {
2850
 
                                gboolean _tmp491_;
2851
 
                                _tmp491_ = vala_method_get_coroutine (m);
2852
 
                                if (_tmp491_) {
 
2874
        if (_tmp473_) {
 
2875
                ValaBlock* _tmp478_ = NULL;
 
2876
                _tmp478_ = vala_subroutine_get_body ((ValaSubroutine*) m);
 
2877
                if (_tmp478_ != NULL) {
 
2878
                        gboolean _tmp479_;
 
2879
                        gboolean _tmp486_;
 
2880
                        gboolean _tmp487_ = FALSE;
 
2881
                        gboolean _tmp488_ = FALSE;
 
2882
                        ValaDataType* _tmp489_ = NULL;
 
2883
                        ValaCCodeFunction* _tmp562_ = NULL;
 
2884
                        _tmp479_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
 
2885
                        if (_tmp479_) {
 
2886
                                gboolean _tmp480_;
 
2887
                                _tmp480_ = vala_method_get_coroutine (m);
 
2888
                                if (_tmp480_) {
2853
2889
                                        vala_ccode_struct_add_field (((ValaCCodeBaseModule*) self)->closure_struct, "GError *", "_inner_error_", NULL);
2854
2890
                                } else {
2855
 
                                        ValaCCodeFunction* _tmp492_ = NULL;
2856
 
                                        ValaCCodeConstant* _tmp493_ = NULL;
2857
 
                                        ValaCCodeConstant* _tmp494_;
2858
 
                                        ValaCCodeVariableDeclarator* _tmp495_ = NULL;
2859
 
                                        ValaCCodeVariableDeclarator* _tmp496_;
2860
 
                                        _tmp492_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2861
 
                                        _tmp493_ = vala_ccode_constant_new ("NULL");
2862
 
                                        _tmp494_ = _tmp493_;
2863
 
                                        _tmp495_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp494_, NULL);
2864
 
                                        _tmp496_ = _tmp495_;
2865
 
                                        vala_ccode_function_add_declaration (_tmp492_, "GError *", (ValaCCodeDeclarator*) _tmp496_, 0);
2866
 
                                        _vala_ccode_node_unref0 (_tmp496_);
2867
 
                                        _vala_ccode_node_unref0 (_tmp494_);
 
2891
                                        ValaCCodeFunction* _tmp481_ = NULL;
 
2892
                                        ValaCCodeConstant* _tmp482_ = NULL;
 
2893
                                        ValaCCodeConstant* _tmp483_;
 
2894
                                        ValaCCodeVariableDeclarator* _tmp484_ = NULL;
 
2895
                                        ValaCCodeVariableDeclarator* _tmp485_;
 
2896
                                        _tmp481_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2897
                                        _tmp482_ = vala_ccode_constant_new ("NULL");
 
2898
                                        _tmp483_ = _tmp482_;
 
2899
                                        _tmp484_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp483_, NULL);
 
2900
                                        _tmp485_ = _tmp484_;
 
2901
                                        vala_ccode_function_add_declaration (_tmp481_, "GError *", (ValaCCodeDeclarator*) _tmp485_, 0);
 
2902
                                        _vala_ccode_node_unref0 (_tmp485_);
 
2903
                                        _vala_ccode_node_unref0 (_tmp483_);
2868
2904
                                }
2869
2905
                        }
2870
 
                        _tmp497_ = vala_method_get_coroutine (m);
2871
 
                        if (_tmp497_) {
 
2906
                        _tmp486_ = vala_method_get_coroutine (m);
 
2907
                        if (_tmp486_) {
2872
2908
                                vala_ccode_method_module_complete_async (self);
2873
2909
                        }
2874
 
                        _tmp500_ = vala_method_get_return_type (m);
2875
 
                        if (!VALA_IS_VOID_TYPE (_tmp500_)) {
2876
 
                                ValaDataType* _tmp501_ = NULL;
2877
 
                                gboolean _tmp502_;
2878
 
                                _tmp501_ = vala_method_get_return_type (m);
2879
 
                                _tmp502_ = vala_data_type_is_real_non_null_struct_type (_tmp501_);
2880
 
                                _tmp499_ = !_tmp502_;
2881
 
                        } else {
2882
 
                                _tmp499_ = FALSE;
2883
 
                        }
2884
 
                        if (_tmp499_) {
2885
 
                                gboolean _tmp503_;
2886
 
                                _tmp503_ = vala_method_get_coroutine (m);
2887
 
                                _tmp498_ = !_tmp503_;
2888
 
                        } else {
2889
 
                                _tmp498_ = FALSE;
2890
 
                        }
2891
 
                        if (_tmp498_) {
2892
 
                                gboolean _tmp504_ = FALSE;
2893
 
                                ValaBasicBlock* _tmp505_ = NULL;
2894
 
                                _tmp505_ = vala_subroutine_get_return_block ((ValaSubroutine*) m);
2895
 
                                if (_tmp505_ != NULL) {
2896
 
                                        ValaBasicBlock* _tmp506_ = NULL;
2897
 
                                        ValaList* _tmp507_ = NULL;
2898
 
                                        ValaList* _tmp508_;
2899
 
                                        gint _tmp509_;
2900
 
                                        _tmp506_ = vala_subroutine_get_return_block ((ValaSubroutine*) m);
2901
 
                                        _tmp507_ = vala_basic_block_get_predecessors (_tmp506_);
2902
 
                                        _tmp508_ = _tmp507_;
2903
 
                                        _tmp509_ = vala_collection_get_size ((ValaCollection*) _tmp508_);
2904
 
                                        _tmp504_ = _tmp509_ == 0;
2905
 
                                        _vala_iterable_unref0 (_tmp508_);
 
2910
                        _tmp489_ = vala_method_get_return_type (m);
 
2911
                        if (!VALA_IS_VOID_TYPE (_tmp489_)) {
 
2912
                                ValaDataType* _tmp490_ = NULL;
 
2913
                                gboolean _tmp491_;
 
2914
                                _tmp490_ = vala_method_get_return_type (m);
 
2915
                                _tmp491_ = vala_data_type_is_real_non_null_struct_type (_tmp490_);
 
2916
                                _tmp488_ = !_tmp491_;
 
2917
                        } else {
 
2918
                                _tmp488_ = FALSE;
 
2919
                        }
 
2920
                        if (_tmp488_) {
 
2921
                                gboolean _tmp492_;
 
2922
                                _tmp492_ = vala_method_get_coroutine (m);
 
2923
                                _tmp487_ = !_tmp492_;
 
2924
                        } else {
 
2925
                                _tmp487_ = FALSE;
 
2926
                        }
 
2927
                        if (_tmp487_) {
 
2928
                                gboolean _tmp493_ = FALSE;
 
2929
                                ValaBasicBlock* _tmp494_ = NULL;
 
2930
                                _tmp494_ = vala_subroutine_get_return_block ((ValaSubroutine*) m);
 
2931
                                if (_tmp494_ != NULL) {
 
2932
                                        ValaBasicBlock* _tmp495_ = NULL;
 
2933
                                        ValaList* _tmp496_ = NULL;
 
2934
                                        ValaList* _tmp497_;
 
2935
                                        gint _tmp498_;
 
2936
                                        _tmp495_ = vala_subroutine_get_return_block ((ValaSubroutine*) m);
 
2937
                                        _tmp496_ = vala_basic_block_get_predecessors (_tmp495_);
 
2938
                                        _tmp497_ = _tmp496_;
 
2939
                                        _tmp498_ = vala_collection_get_size ((ValaCollection*) _tmp497_);
 
2940
                                        _tmp493_ = _tmp498_ == 0;
 
2941
                                        _vala_iterable_unref0 (_tmp497_);
2906
2942
                                } else {
2907
 
                                        _tmp504_ = FALSE;
 
2943
                                        _tmp493_ = FALSE;
2908
2944
                                }
2909
 
                                if (_tmp504_) {
2910
 
                                        ValaCCodeFunction* _tmp510_ = NULL;
2911
 
                                        ValaCCodeIdentifier* _tmp511_ = NULL;
2912
 
                                        ValaCCodeIdentifier* _tmp512_;
2913
 
                                        _tmp510_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
2914
 
                                        _tmp511_ = vala_ccode_identifier_new ("result");
2915
 
                                        _tmp512_ = _tmp511_;
2916
 
                                        vala_ccode_function_add_return (_tmp510_, (ValaCCodeExpression*) _tmp512_);
2917
 
                                        _vala_ccode_node_unref0 (_tmp512_);
 
2945
                                if (_tmp493_) {
 
2946
                                        ValaCCodeFunction* _tmp499_ = NULL;
 
2947
                                        ValaCCodeIdentifier* _tmp500_ = NULL;
 
2948
                                        ValaCCodeIdentifier* _tmp501_;
 
2949
                                        _tmp499_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
2950
                                        _tmp500_ = vala_ccode_identifier_new ("result");
 
2951
                                        _tmp501_ = _tmp500_;
 
2952
                                        vala_ccode_function_add_return (_tmp499_, (ValaCCodeExpression*) _tmp501_);
 
2953
                                        _vala_ccode_node_unref0 (_tmp501_);
2918
2954
                                }
2919
2955
                        }
2920
2956
                        if (VALA_IS_CREATION_METHOD (m)) {
2921
 
                                ValaTypeSymbol* _tmp513_ = NULL;
2922
 
                                gboolean _tmp519_ = FALSE;
2923
 
                                gboolean _tmp520_ = FALSE;
2924
 
                                gboolean _tmp521_ = FALSE;
2925
 
                                gboolean _tmp522_ = FALSE;
2926
 
                                ValaTypeSymbol* _tmp523_ = NULL;
2927
 
                                ValaTypeSymbol* _tmp566_ = NULL;
2928
 
                                _tmp513_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
2929
 
                                if (VALA_IS_CLASS (_tmp513_)) {
2930
 
                                        ValaClass* _tmp514_ = NULL;
2931
 
                                        ValaObjectType* _tmp515_ = NULL;
2932
 
                                        ValaDataType* _tmp516_;
2933
 
                                        _tmp514_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
2934
 
                                        _tmp515_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp514_);
2935
 
                                        _tmp516_ = (ValaDataType*) _tmp515_;
2936
 
                                        _vala_code_node_unref0 (creturn_type);
2937
 
                                        creturn_type = _tmp516_;
2938
 
                                } else {
2939
 
                                        ValaVoidType* _tmp517_ = NULL;
2940
 
                                        ValaDataType* _tmp518_;
2941
 
                                        _tmp517_ = vala_void_type_new (NULL);
2942
 
                                        _tmp518_ = (ValaDataType*) _tmp517_;
2943
 
                                        _vala_code_node_unref0 (creturn_type);
2944
 
                                        creturn_type = _tmp518_;
2945
 
                                }
2946
 
                                _tmp523_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
2947
 
                                if (VALA_IS_CLASS (_tmp523_)) {
2948
 
                                        _tmp522_ = ((ValaCCodeBaseModule*) self)->gobject_type != NULL;
2949
 
                                } else {
2950
 
                                        _tmp522_ = FALSE;
2951
 
                                }
2952
 
                                if (_tmp522_) {
2953
 
                                        ValaClass* _tmp524_ = NULL;
2954
 
                                        gboolean _tmp525_;
2955
 
                                        _tmp524_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
2956
 
                                        _tmp525_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp524_, ((ValaCCodeBaseModule*) self)->gobject_type);
2957
 
                                        _tmp521_ = _tmp525_;
2958
 
                                } else {
2959
 
                                        _tmp521_ = FALSE;
2960
 
                                }
2961
 
                                if (_tmp521_) {
2962
 
                                        ValaClass* _tmp526_ = NULL;
2963
 
                                        ValaList* _tmp527_ = NULL;
2964
 
                                        ValaList* _tmp528_;
2965
 
                                        gint _tmp529_;
2966
 
                                        _tmp526_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
2967
 
                                        _tmp527_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp526_);
2968
 
                                        _tmp528_ = _tmp527_;
2969
 
                                        _tmp529_ = vala_collection_get_size ((ValaCollection*) _tmp528_);
2970
 
                                        _tmp520_ = _tmp529_ > 0;
2971
 
                                        _vala_iterable_unref0 (_tmp528_);
2972
 
                                } else {
2973
 
                                        _tmp520_ = FALSE;
2974
 
                                }
2975
 
                                if (_tmp520_) {
2976
 
                                        gboolean _tmp530_;
2977
 
                                        _tmp530_ = vala_creation_method_get_chain_up (VALA_CREATION_METHOD (m));
2978
 
                                        _tmp519_ = !_tmp530_;
2979
 
                                } else {
2980
 
                                        _tmp519_ = FALSE;
2981
 
                                }
2982
 
                                if (_tmp519_) {
 
2957
                                ValaTypeSymbol* _tmp502_ = NULL;
 
2958
                                gboolean _tmp506_ = FALSE;
 
2959
                                gboolean _tmp507_ = FALSE;
 
2960
                                gboolean _tmp508_ = FALSE;
 
2961
                                gboolean _tmp509_ = FALSE;
 
2962
                                ValaTypeSymbol* _tmp510_ = NULL;
 
2963
                                ValaTypeSymbol* _tmp553_ = NULL;
 
2964
                                _tmp502_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
 
2965
                                if (VALA_IS_CLASS (_tmp502_)) {
 
2966
                                        ValaClass* _tmp503_ = NULL;
 
2967
                                        ValaObjectType* _tmp504_ = NULL;
 
2968
                                        _tmp503_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
 
2969
                                        _tmp504_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp503_);
 
2970
                                        _vala_code_node_unref0 (creturn_type);
 
2971
                                        creturn_type = (ValaDataType*) _tmp504_;
 
2972
                                } else {
 
2973
                                        ValaVoidType* _tmp505_ = NULL;
 
2974
                                        _tmp505_ = vala_void_type_new (NULL);
 
2975
                                        _vala_code_node_unref0 (creturn_type);
 
2976
                                        creturn_type = (ValaDataType*) _tmp505_;
 
2977
                                }
 
2978
                                _tmp510_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
 
2979
                                if (VALA_IS_CLASS (_tmp510_)) {
 
2980
                                        _tmp509_ = ((ValaCCodeBaseModule*) self)->gobject_type != NULL;
 
2981
                                } else {
 
2982
                                        _tmp509_ = FALSE;
 
2983
                                }
 
2984
                                if (_tmp509_) {
 
2985
                                        ValaClass* _tmp511_ = NULL;
 
2986
                                        gboolean _tmp512_;
 
2987
                                        _tmp511_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
 
2988
                                        _tmp512_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp511_, ((ValaCCodeBaseModule*) self)->gobject_type);
 
2989
                                        _tmp508_ = _tmp512_;
 
2990
                                } else {
 
2991
                                        _tmp508_ = FALSE;
 
2992
                                }
 
2993
                                if (_tmp508_) {
 
2994
                                        ValaClass* _tmp513_ = NULL;
 
2995
                                        ValaList* _tmp514_ = NULL;
 
2996
                                        ValaList* _tmp515_;
 
2997
                                        gint _tmp516_;
 
2998
                                        _tmp513_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
 
2999
                                        _tmp514_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp513_);
 
3000
                                        _tmp515_ = _tmp514_;
 
3001
                                        _tmp516_ = vala_collection_get_size ((ValaCollection*) _tmp515_);
 
3002
                                        _tmp507_ = _tmp516_ > 0;
 
3003
                                        _vala_iterable_unref0 (_tmp515_);
 
3004
                                } else {
 
3005
                                        _tmp507_ = FALSE;
 
3006
                                }
 
3007
                                if (_tmp507_) {
 
3008
                                        gboolean _tmp517_;
 
3009
                                        _tmp517_ = vala_creation_method_get_chain_up (VALA_CREATION_METHOD (m));
 
3010
                                        _tmp506_ = !_tmp517_;
 
3011
                                } else {
 
3012
                                        _tmp506_ = FALSE;
 
3013
                                }
 
3014
                                if (_tmp506_) {
 
3015
                                        ValaCCodeIdentifier* _tmp518_ = NULL;
 
3016
                                        ValaCCodeIdentifier* _tmp519_;
 
3017
                                        ValaCCodeIdentifier* _tmp520_ = NULL;
 
3018
                                        ValaCCodeIdentifier* _tmp521_;
 
3019
                                        ValaCCodeBinaryExpression* _tmp522_ = NULL;
 
3020
                                        ValaCCodeBinaryExpression* _tmp523_;
 
3021
                                        ValaCCodeBinaryExpression* ccond;
 
3022
                                        ValaCCodeBlock* _tmp524_ = NULL;
 
3023
                                        ValaCCodeBlock* cdofreeparam;
 
3024
                                        ValaCCodeIdentifier* _tmp525_ = NULL;
 
3025
                                        ValaCCodeIdentifier* _tmp526_;
 
3026
                                        ValaCCodeUnaryExpression* _tmp527_ = NULL;
 
3027
                                        ValaCCodeUnaryExpression* _tmp528_;
 
3028
                                        ValaCCodeExpressionStatement* _tmp529_ = NULL;
 
3029
                                        ValaCCodeExpressionStatement* _tmp530_;
2983
3030
                                        ValaCCodeIdentifier* _tmp531_ = NULL;
2984
3031
                                        ValaCCodeIdentifier* _tmp532_;
2985
 
                                        ValaCCodeIdentifier* _tmp533_ = NULL;
2986
 
                                        ValaCCodeIdentifier* _tmp534_;
2987
 
                                        ValaCCodeBinaryExpression* _tmp535_ = NULL;
2988
 
                                        ValaCCodeBinaryExpression* _tmp536_;
2989
 
                                        ValaCCodeBinaryExpression* ccond;
2990
 
                                        ValaCCodeBlock* _tmp537_ = NULL;
2991
 
                                        ValaCCodeBlock* cdofreeparam;
2992
 
                                        ValaCCodeIdentifier* _tmp538_ = NULL;
2993
 
                                        ValaCCodeIdentifier* _tmp539_;
2994
 
                                        ValaCCodeUnaryExpression* _tmp540_ = NULL;
2995
 
                                        ValaCCodeUnaryExpression* _tmp541_;
2996
 
                                        ValaCCodeExpressionStatement* _tmp542_ = NULL;
2997
 
                                        ValaCCodeExpressionStatement* _tmp543_;
2998
 
                                        ValaCCodeIdentifier* _tmp544_ = NULL;
2999
 
                                        ValaCCodeIdentifier* _tmp545_;
3000
 
                                        ValaCCodeFunctionCall* _tmp546_ = NULL;
3001
 
                                        ValaCCodeFunctionCall* _tmp547_;
 
3032
                                        ValaCCodeFunctionCall* _tmp533_ = NULL;
 
3033
                                        ValaCCodeFunctionCall* _tmp534_;
3002
3034
                                        ValaCCodeFunctionCall* cunsetcall;
3003
 
                                        ValaCCodeIdentifier* _tmp548_ = NULL;
3004
 
                                        ValaCCodeIdentifier* _tmp549_;
3005
 
                                        ValaCCodeMemberAccess* _tmp550_ = NULL;
3006
 
                                        ValaCCodeMemberAccess* _tmp551_;
3007
 
                                        ValaCCodeUnaryExpression* _tmp552_ = NULL;
3008
 
                                        ValaCCodeUnaryExpression* _tmp553_;
3009
 
                                        ValaCCodeExpressionStatement* _tmp554_ = NULL;
3010
 
                                        ValaCCodeExpressionStatement* _tmp555_;
3011
 
                                        ValaCCodeFunction* _tmp556_ = NULL;
3012
 
                                        ValaCCodeWhileStatement* _tmp557_ = NULL;
3013
 
                                        ValaCCodeWhileStatement* _tmp558_;
3014
 
                                        ValaCCodeIdentifier* _tmp559_ = NULL;
3015
 
                                        ValaCCodeIdentifier* _tmp560_;
3016
 
                                        ValaCCodeFunctionCall* _tmp561_ = NULL;
3017
 
                                        ValaCCodeFunctionCall* _tmp562_;
 
3035
                                        ValaCCodeIdentifier* _tmp535_ = NULL;
 
3036
                                        ValaCCodeIdentifier* _tmp536_;
 
3037
                                        ValaCCodeMemberAccess* _tmp537_ = NULL;
 
3038
                                        ValaCCodeMemberAccess* _tmp538_;
 
3039
                                        ValaCCodeUnaryExpression* _tmp539_ = NULL;
 
3040
                                        ValaCCodeUnaryExpression* _tmp540_;
 
3041
                                        ValaCCodeExpressionStatement* _tmp541_ = NULL;
 
3042
                                        ValaCCodeExpressionStatement* _tmp542_;
 
3043
                                        ValaCCodeFunction* _tmp543_ = NULL;
 
3044
                                        ValaCCodeWhileStatement* _tmp544_ = NULL;
 
3045
                                        ValaCCodeWhileStatement* _tmp545_;
 
3046
                                        ValaCCodeIdentifier* _tmp546_ = NULL;
 
3047
                                        ValaCCodeIdentifier* _tmp547_;
 
3048
                                        ValaCCodeFunctionCall* _tmp548_ = NULL;
 
3049
                                        ValaCCodeFunctionCall* _tmp549_;
3018
3050
                                        ValaCCodeFunctionCall* cfreeparams;
3019
 
                                        ValaCCodeIdentifier* _tmp563_ = NULL;
3020
 
                                        ValaCCodeIdentifier* _tmp564_;
3021
 
                                        ValaCCodeFunction* _tmp565_ = NULL;
3022
 
                                        _tmp531_ = vala_ccode_identifier_new ("__params_it");
 
3051
                                        ValaCCodeIdentifier* _tmp550_ = NULL;
 
3052
                                        ValaCCodeIdentifier* _tmp551_;
 
3053
                                        ValaCCodeFunction* _tmp552_ = NULL;
 
3054
                                        _tmp518_ = vala_ccode_identifier_new ("__params_it");
 
3055
                                        _tmp519_ = _tmp518_;
 
3056
                                        _tmp520_ = vala_ccode_identifier_new ("__params");
 
3057
                                        _tmp521_ = _tmp520_;
 
3058
                                        _tmp522_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_GREATER_THAN, (ValaCCodeExpression*) _tmp519_, (ValaCCodeExpression*) _tmp521_);
 
3059
                                        _tmp523_ = _tmp522_;
 
3060
                                        _vala_ccode_node_unref0 (_tmp521_);
 
3061
                                        _vala_ccode_node_unref0 (_tmp519_);
 
3062
                                        ccond = _tmp523_;
 
3063
                                        _tmp524_ = vala_ccode_block_new ();
 
3064
                                        cdofreeparam = _tmp524_;
 
3065
                                        _tmp525_ = vala_ccode_identifier_new ("__params_it");
 
3066
                                        _tmp526_ = _tmp525_;
 
3067
                                        _tmp527_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT, (ValaCCodeExpression*) _tmp526_);
 
3068
                                        _tmp528_ = _tmp527_;
 
3069
                                        _tmp529_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp528_);
 
3070
                                        _tmp530_ = _tmp529_;
 
3071
                                        vala_ccode_block_add_statement (cdofreeparam, (ValaCCodeNode*) _tmp530_);
 
3072
                                        _vala_ccode_node_unref0 (_tmp530_);
 
3073
                                        _vala_ccode_node_unref0 (_tmp528_);
 
3074
                                        _vala_ccode_node_unref0 (_tmp526_);
 
3075
                                        _tmp531_ = vala_ccode_identifier_new ("g_value_unset");
3023
3076
                                        _tmp532_ = _tmp531_;
3024
 
                                        _tmp533_ = vala_ccode_identifier_new ("__params");
 
3077
                                        _tmp533_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp532_);
3025
3078
                                        _tmp534_ = _tmp533_;
3026
 
                                        _tmp535_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_GREATER_THAN, (ValaCCodeExpression*) _tmp532_, (ValaCCodeExpression*) _tmp534_);
3027
 
                                        ccond = (_tmp536_ = _tmp535_, _vala_ccode_node_unref0 (_tmp534_), _vala_ccode_node_unref0 (_tmp532_), _tmp536_);
3028
 
                                        _tmp537_ = vala_ccode_block_new ();
3029
 
                                        cdofreeparam = _tmp537_;
3030
 
                                        _tmp538_ = vala_ccode_identifier_new ("__params_it");
3031
 
                                        _tmp539_ = _tmp538_;
3032
 
                                        _tmp540_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT, (ValaCCodeExpression*) _tmp539_);
3033
 
                                        _tmp541_ = _tmp540_;
3034
 
                                        _tmp542_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp541_);
3035
 
                                        _tmp543_ = _tmp542_;
3036
 
                                        vala_ccode_block_add_statement (cdofreeparam, (ValaCCodeNode*) _tmp543_);
3037
 
                                        _vala_ccode_node_unref0 (_tmp543_);
3038
 
                                        _vala_ccode_node_unref0 (_tmp541_);
3039
 
                                        _vala_ccode_node_unref0 (_tmp539_);
3040
 
                                        _tmp544_ = vala_ccode_identifier_new ("g_value_unset");
 
3079
                                        _vala_ccode_node_unref0 (_tmp532_);
 
3080
                                        cunsetcall = _tmp534_;
 
3081
                                        _tmp535_ = vala_ccode_identifier_new ("__params_it");
 
3082
                                        _tmp536_ = _tmp535_;
 
3083
                                        _tmp537_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp536_, "value");
 
3084
                                        _tmp538_ = _tmp537_;
 
3085
                                        _tmp539_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp538_);
 
3086
                                        _tmp540_ = _tmp539_;
 
3087
                                        vala_ccode_function_call_add_argument (cunsetcall, (ValaCCodeExpression*) _tmp540_);
 
3088
                                        _vala_ccode_node_unref0 (_tmp540_);
 
3089
                                        _vala_ccode_node_unref0 (_tmp538_);
 
3090
                                        _vala_ccode_node_unref0 (_tmp536_);
 
3091
                                        _tmp541_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) cunsetcall);
 
3092
                                        _tmp542_ = _tmp541_;
 
3093
                                        vala_ccode_block_add_statement (cdofreeparam, (ValaCCodeNode*) _tmp542_);
 
3094
                                        _vala_ccode_node_unref0 (_tmp542_);
 
3095
                                        _tmp543_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
3096
                                        _tmp544_ = vala_ccode_while_statement_new ((ValaCCodeExpression*) ccond, (ValaCCodeStatement*) cdofreeparam);
3041
3097
                                        _tmp545_ = _tmp544_;
3042
 
                                        _tmp546_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp545_);
3043
 
                                        cunsetcall = (_tmp547_ = _tmp546_, _vala_ccode_node_unref0 (_tmp545_), _tmp547_);
3044
 
                                        _tmp548_ = vala_ccode_identifier_new ("__params_it");
 
3098
                                        vala_ccode_function_add_statement (_tmp543_, (ValaCCodeNode*) _tmp545_);
 
3099
                                        _vala_ccode_node_unref0 (_tmp545_);
 
3100
                                        _tmp546_ = vala_ccode_identifier_new ("g_free");
 
3101
                                        _tmp547_ = _tmp546_;
 
3102
                                        _tmp548_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp547_);
3045
3103
                                        _tmp549_ = _tmp548_;
3046
 
                                        _tmp550_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp549_, "value");
 
3104
                                        _vala_ccode_node_unref0 (_tmp547_);
 
3105
                                        cfreeparams = _tmp549_;
 
3106
                                        _tmp550_ = vala_ccode_identifier_new ("__params");
3047
3107
                                        _tmp551_ = _tmp550_;
3048
 
                                        _tmp552_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp551_);
3049
 
                                        _tmp553_ = _tmp552_;
3050
 
                                        vala_ccode_function_call_add_argument (cunsetcall, (ValaCCodeExpression*) _tmp553_);
3051
 
                                        _vala_ccode_node_unref0 (_tmp553_);
 
3108
                                        vala_ccode_function_call_add_argument (cfreeparams, (ValaCCodeExpression*) _tmp551_);
3052
3109
                                        _vala_ccode_node_unref0 (_tmp551_);
3053
 
                                        _vala_ccode_node_unref0 (_tmp549_);
3054
 
                                        _tmp554_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) cunsetcall);
3055
 
                                        _tmp555_ = _tmp554_;
3056
 
                                        vala_ccode_block_add_statement (cdofreeparam, (ValaCCodeNode*) _tmp555_);
3057
 
                                        _vala_ccode_node_unref0 (_tmp555_);
3058
 
                                        _tmp556_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3059
 
                                        _tmp557_ = vala_ccode_while_statement_new ((ValaCCodeExpression*) ccond, (ValaCCodeStatement*) cdofreeparam);
3060
 
                                        _tmp558_ = _tmp557_;
3061
 
                                        vala_ccode_function_add_statement (_tmp556_, (ValaCCodeNode*) _tmp558_);
3062
 
                                        _vala_ccode_node_unref0 (_tmp558_);
3063
 
                                        _tmp559_ = vala_ccode_identifier_new ("g_free");
3064
 
                                        _tmp560_ = _tmp559_;
3065
 
                                        _tmp561_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp560_);
3066
 
                                        cfreeparams = (_tmp562_ = _tmp561_, _vala_ccode_node_unref0 (_tmp560_), _tmp562_);
3067
 
                                        _tmp563_ = vala_ccode_identifier_new ("__params");
3068
 
                                        _tmp564_ = _tmp563_;
3069
 
                                        vala_ccode_function_call_add_argument (cfreeparams, (ValaCCodeExpression*) _tmp564_);
3070
 
                                        _vala_ccode_node_unref0 (_tmp564_);
3071
 
                                        _tmp565_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3072
 
                                        vala_ccode_function_add_expression (_tmp565_, (ValaCCodeExpression*) cfreeparams);
 
3110
                                        _tmp552_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
3111
                                        vala_ccode_function_add_expression (_tmp552_, (ValaCCodeExpression*) cfreeparams);
3073
3112
                                        _vala_ccode_node_unref0 (cfreeparams);
3074
3113
                                        _vala_ccode_node_unref0 (cunsetcall);
3075
3114
                                        _vala_ccode_node_unref0 (cdofreeparam);
3076
3115
                                        _vala_ccode_node_unref0 (ccond);
3077
3116
                                }
3078
 
                                _tmp566_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
3079
 
                                if (VALA_IS_CLASS (_tmp566_)) {
3080
 
                                        ValaCCodeIdentifier* _tmp567_ = NULL;
 
3117
                                _tmp553_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
 
3118
                                if (VALA_IS_CLASS (_tmp553_)) {
 
3119
                                        ValaCCodeIdentifier* _tmp554_ = NULL;
3081
3120
                                        ValaCCodeExpression* cresult;
3082
 
                                        gchar* _tmp568_ = NULL;
3083
 
                                        gchar* _tmp569_;
3084
 
                                        gboolean _tmp570_;
3085
 
                                        ValaCCodeFunction* _tmp575_ = NULL;
3086
 
                                        _tmp567_ = vala_ccode_identifier_new ("self");
3087
 
                                        cresult = (ValaCCodeExpression*) _tmp567_;
3088
 
                                        _tmp568_ = vala_ccode_base_module_get_custom_creturn_type ((ValaCCodeBaseModule*) self, m);
3089
 
                                        _tmp569_ = _tmp568_;
3090
 
                                        if ((_tmp570_ = _tmp569_ != NULL, _g_free0 (_tmp569_), _tmp570_)) {
3091
 
                                                gchar* _tmp571_ = NULL;
3092
 
                                                gchar* _tmp572_;
3093
 
                                                ValaCCodeCastExpression* _tmp573_ = NULL;
3094
 
                                                ValaCCodeExpression* _tmp574_;
3095
 
                                                _tmp571_ = vala_ccode_base_module_get_custom_creturn_type ((ValaCCodeBaseModule*) self, m);
3096
 
                                                _tmp572_ = _tmp571_;
3097
 
                                                _tmp573_ = vala_ccode_cast_expression_new (cresult, _tmp572_);
3098
 
                                                _tmp574_ = (ValaCCodeExpression*) _tmp573_;
 
3121
                                        gchar* _tmp555_ = NULL;
 
3122
                                        gchar* _tmp556_;
 
3123
                                        gboolean _tmp557_;
 
3124
                                        ValaCCodeFunction* _tmp561_ = NULL;
 
3125
                                        _tmp554_ = vala_ccode_identifier_new ("self");
 
3126
                                        cresult = (ValaCCodeExpression*) _tmp554_;
 
3127
                                        _tmp555_ = vala_ccode_base_module_get_custom_creturn_type ((ValaCCodeBaseModule*) self, m);
 
3128
                                        _tmp556_ = _tmp555_;
 
3129
                                        _tmp557_ = _tmp556_ != NULL;
 
3130
                                        _g_free0 (_tmp556_);
 
3131
                                        if (_tmp557_) {
 
3132
                                                gchar* _tmp558_ = NULL;
 
3133
                                                gchar* _tmp559_;
 
3134
                                                ValaCCodeCastExpression* _tmp560_ = NULL;
 
3135
                                                _tmp558_ = vala_ccode_base_module_get_custom_creturn_type ((ValaCCodeBaseModule*) self, m);
 
3136
                                                _tmp559_ = _tmp558_;
 
3137
                                                _tmp560_ = vala_ccode_cast_expression_new (cresult, _tmp559_);
3099
3138
                                                _vala_ccode_node_unref0 (cresult);
3100
 
                                                cresult = _tmp574_;
3101
 
                                                _g_free0 (_tmp572_);
 
3139
                                                cresult = (ValaCCodeExpression*) _tmp560_;
 
3140
                                                _g_free0 (_tmp559_);
3102
3141
                                        }
3103
 
                                        _tmp575_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3104
 
                                        vala_ccode_function_add_return (_tmp575_, cresult);
 
3142
                                        _tmp561_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
3143
                                        vala_ccode_function_add_return (_tmp561_, cresult);
3105
3144
                                        _vala_ccode_node_unref0 (cresult);
3106
3145
                                }
3107
3146
                        }
3108
 
                        _tmp576_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3109
 
                        vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, _tmp576_);
 
3147
                        _tmp562_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
3148
                        vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, _tmp562_);
3110
3149
                }
3111
3150
        }
3112
 
        _tmp578_ = vala_method_get_is_abstract (m);
3113
 
        if (_tmp578_) {
3114
 
                ValaTypeSymbol* _tmp579_ = NULL;
3115
 
                _tmp579_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
3116
 
                _tmp577_ = VALA_IS_CLASS (_tmp579_);
 
3151
        _tmp564_ = vala_method_get_is_abstract (m);
 
3152
        if (_tmp564_) {
 
3153
                ValaTypeSymbol* _tmp565_ = NULL;
 
3154
                _tmp565_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
 
3155
                _tmp563_ = VALA_IS_CLASS (_tmp565_);
3117
3156
        } else {
3118
 
                _tmp577_ = FALSE;
 
3157
                _tmp563_ = FALSE;
3119
3158
        }
3120
 
        if (_tmp577_) {
3121
 
                ValaTypeSymbol* _tmp580_ = NULL;
 
3159
        if (_tmp563_) {
 
3160
                ValaTypeSymbol* _tmp566_ = NULL;
 
3161
                ValaCCodeIdentifier* _tmp567_ = NULL;
 
3162
                ValaCCodeIdentifier* _tmp568_;
 
3163
                ValaCCodeFunctionCall* _tmp569_ = NULL;
 
3164
                ValaCCodeFunctionCall* _tmp570_;
 
3165
                ValaCCodeFunctionCall* type_from_instance_call;
 
3166
                ValaCCodeIdentifier* _tmp571_ = NULL;
 
3167
                ValaCCodeIdentifier* _tmp572_;
 
3168
                ValaCCodeIdentifier* _tmp573_ = NULL;
 
3169
                ValaCCodeIdentifier* _tmp574_;
 
3170
                ValaCCodeFunctionCall* _tmp575_ = NULL;
 
3171
                ValaCCodeFunctionCall* _tmp576_;
 
3172
                ValaCCodeFunctionCall* type_name_call;
 
3173
                gchar* _tmp577_ = NULL;
 
3174
                gchar* _tmp578_;
 
3175
                gchar* _tmp579_ = NULL;
 
3176
                gchar* _tmp580_;
 
3177
                gchar* error_string;
3122
3178
                ValaCCodeIdentifier* _tmp581_ = NULL;
3123
3179
                ValaCCodeIdentifier* _tmp582_;
3124
3180
                ValaCCodeFunctionCall* _tmp583_ = NULL;
3125
3181
                ValaCCodeFunctionCall* _tmp584_;
3126
 
                ValaCCodeFunctionCall* type_from_instance_call;
3127
 
                ValaCCodeIdentifier* _tmp585_ = NULL;
3128
 
                ValaCCodeIdentifier* _tmp586_;
3129
 
                ValaCCodeIdentifier* _tmp587_ = NULL;
3130
 
                ValaCCodeIdentifier* _tmp588_;
3131
 
                ValaCCodeFunctionCall* _tmp589_ = NULL;
3132
 
                ValaCCodeFunctionCall* _tmp590_;
3133
 
                ValaCCodeFunctionCall* type_name_call;
3134
 
                gchar* _tmp591_ = NULL;
3135
 
                gchar* _tmp592_;
3136
 
                gchar* _tmp593_ = NULL;
3137
 
                gchar* _tmp594_;
3138
 
                gchar* error_string;
3139
 
                ValaCCodeIdentifier* _tmp595_ = NULL;
3140
 
                ValaCCodeIdentifier* _tmp596_;
3141
 
                ValaCCodeFunctionCall* _tmp597_ = NULL;
3142
 
                ValaCCodeFunctionCall* _tmp598_;
3143
3182
                ValaCCodeFunctionCall* cerrorcall;
3144
 
                ValaCCodeConstant* _tmp599_ = NULL;
3145
 
                ValaCCodeConstant* _tmp600_;
3146
 
                ValaCCodeFunction* _tmp601_ = NULL;
3147
 
                ValaCCodeFunction* _tmp602_ = NULL;
3148
 
                _tmp580_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
3149
 
                vala_ccode_method_module_create_method_type_check_statement (self, m, creturn_type, _tmp580_, TRUE, "self");
3150
 
                _tmp581_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
 
3183
                ValaCCodeConstant* _tmp585_ = NULL;
 
3184
                ValaCCodeConstant* _tmp586_;
 
3185
                ValaCCodeFunction* _tmp587_ = NULL;
 
3186
                ValaCCodeFunction* _tmp588_ = NULL;
 
3187
                _tmp566_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
 
3188
                vala_ccode_method_module_create_method_type_check_statement (self, m, creturn_type, _tmp566_, TRUE, "self");
 
3189
                _tmp567_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
 
3190
                _tmp568_ = _tmp567_;
 
3191
                _tmp569_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp568_);
 
3192
                _tmp570_ = _tmp569_;
 
3193
                _vala_ccode_node_unref0 (_tmp568_);
 
3194
                type_from_instance_call = _tmp570_;
 
3195
                _tmp571_ = vala_ccode_identifier_new ("self");
 
3196
                _tmp572_ = _tmp571_;
 
3197
                vala_ccode_function_call_add_argument (type_from_instance_call, (ValaCCodeExpression*) _tmp572_);
 
3198
                _vala_ccode_node_unref0 (_tmp572_);
 
3199
                _tmp573_ = vala_ccode_identifier_new ("g_type_name");
 
3200
                _tmp574_ = _tmp573_;
 
3201
                _tmp575_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp574_);
 
3202
                _tmp576_ = _tmp575_;
 
3203
                _vala_ccode_node_unref0 (_tmp574_);
 
3204
                type_name_call = _tmp576_;
 
3205
                vala_ccode_function_call_add_argument (type_name_call, (ValaCCodeExpression*) type_from_instance_call);
 
3206
                _tmp577_ = vala_method_get_cname (m);
 
3207
                _tmp578_ = _tmp577_;
 
3208
                _tmp579_ = g_strdup_printf ("\"Type `%%s' does not implement abstract method `%s'\"", _tmp578_);
 
3209
                _tmp580_ = _tmp579_;
 
3210
                _g_free0 (_tmp578_);
 
3211
                error_string = _tmp580_;
 
3212
                _tmp581_ = vala_ccode_identifier_new ("g_critical");
3151
3213
                _tmp582_ = _tmp581_;
3152
3214
                _tmp583_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp582_);
3153
 
                type_from_instance_call = (_tmp584_ = _tmp583_, _vala_ccode_node_unref0 (_tmp582_), _tmp584_);
3154
 
                _tmp585_ = vala_ccode_identifier_new ("self");
 
3215
                _tmp584_ = _tmp583_;
 
3216
                _vala_ccode_node_unref0 (_tmp582_);
 
3217
                cerrorcall = _tmp584_;
 
3218
                _tmp585_ = vala_ccode_constant_new (error_string);
3155
3219
                _tmp586_ = _tmp585_;
3156
 
                vala_ccode_function_call_add_argument (type_from_instance_call, (ValaCCodeExpression*) _tmp586_);
 
3220
                vala_ccode_function_call_add_argument (cerrorcall, (ValaCCodeExpression*) _tmp586_);
3157
3221
                _vala_ccode_node_unref0 (_tmp586_);
3158
 
                _tmp587_ = vala_ccode_identifier_new ("g_type_name");
3159
 
                _tmp588_ = _tmp587_;
3160
 
                _tmp589_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp588_);
3161
 
                type_name_call = (_tmp590_ = _tmp589_, _vala_ccode_node_unref0 (_tmp588_), _tmp590_);
3162
 
                vala_ccode_function_call_add_argument (type_name_call, (ValaCCodeExpression*) type_from_instance_call);
3163
 
                _tmp591_ = vala_method_get_cname (m);
3164
 
                _tmp592_ = _tmp591_;
3165
 
                _tmp593_ = g_strdup_printf ("\"Type `%%s' does not implement abstract method `%s'\"", _tmp592_);
3166
 
                error_string = (_tmp594_ = _tmp593_, _g_free0 (_tmp592_), _tmp594_);
3167
 
                _tmp595_ = vala_ccode_identifier_new ("g_critical");
3168
 
                _tmp596_ = _tmp595_;
3169
 
                _tmp597_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp596_);
3170
 
                cerrorcall = (_tmp598_ = _tmp597_, _vala_ccode_node_unref0 (_tmp596_), _tmp598_);
3171
 
                _tmp599_ = vala_ccode_constant_new (error_string);
3172
 
                _tmp600_ = _tmp599_;
3173
 
                vala_ccode_function_call_add_argument (cerrorcall, (ValaCCodeExpression*) _tmp600_);
3174
 
                _vala_ccode_node_unref0 (_tmp600_);
3175
3222
                vala_ccode_function_call_add_argument (cerrorcall, (ValaCCodeExpression*) type_name_call);
3176
 
                _tmp601_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3177
 
                vala_ccode_function_add_expression (_tmp601_, (ValaCCodeExpression*) cerrorcall);
 
3223
                _tmp587_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
3224
                vala_ccode_function_add_expression (_tmp587_, (ValaCCodeExpression*) cerrorcall);
3178
3225
                vala_ccode_base_module_return_default_value ((ValaCCodeBaseModule*) self, creturn_type);
3179
 
                _tmp602_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
3180
 
                vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, _tmp602_);
 
3226
                _tmp588_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
3227
                vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, _tmp588_);
3181
3228
                _vala_ccode_node_unref0 (cerrorcall);
3182
3229
                _g_free0 (error_string);
3183
3230
                _vala_ccode_node_unref0 (type_name_call);
3185
3232
        }
3186
3233
        ((ValaCCodeBaseModule*) self)->in_static_or_class_context = FALSE;
3187
3234
        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
3188
 
        _tmp606_ = vala_method_get_is_abstract (m);
3189
 
        if (_tmp606_) {
3190
 
                _tmp605_ = TRUE;
3191
 
        } else {
3192
 
                gboolean _tmp607_;
3193
 
                _tmp607_ = vala_method_get_is_virtual (m);
3194
 
                _tmp605_ = _tmp607_;
3195
 
        }
3196
 
        if (_tmp605_) {
3197
 
                gboolean _tmp608_;
3198
 
                _tmp608_ = vala_method_get_coroutine (m);
3199
 
                _tmp604_ = !_tmp608_;
3200
 
        } else {
3201
 
                _tmp604_ = FALSE;
3202
 
        }
3203
 
        if (_tmp604_) {
3204
 
                ValaSignal* _tmp609_ = NULL;
3205
 
                _tmp609_ = vala_method_get_signal_reference (m);
3206
 
                _tmp603_ = _tmp609_ == NULL;
3207
 
        } else {
3208
 
                _tmp603_ = FALSE;
3209
 
        }
3210
 
        if (_tmp603_) {
3211
 
                ValaHashMap* _tmp610_ = NULL;
3212
 
                ValaHashMap* _tmp611_;
3213
 
                ValaHashMap* _tmp612_ = NULL;
 
3235
        _tmp592_ = vala_method_get_is_abstract (m);
 
3236
        if (_tmp592_) {
 
3237
                _tmp591_ = TRUE;
 
3238
        } else {
 
3239
                gboolean _tmp593_;
 
3240
                _tmp593_ = vala_method_get_is_virtual (m);
 
3241
                _tmp591_ = _tmp593_;
 
3242
        }
 
3243
        if (_tmp591_) {
 
3244
                gboolean _tmp594_;
 
3245
                _tmp594_ = vala_method_get_coroutine (m);
 
3246
                _tmp590_ = !_tmp594_;
 
3247
        } else {
 
3248
                _tmp590_ = FALSE;
 
3249
        }
 
3250
        if (_tmp590_) {
 
3251
                ValaSignal* _tmp595_ = NULL;
 
3252
                _tmp595_ = vala_method_get_signal_reference (m);
 
3253
                _tmp589_ = _tmp595_ == NULL;
 
3254
        } else {
 
3255
                _tmp589_ = FALSE;
 
3256
        }
 
3257
        if (_tmp589_) {
 
3258
                ValaHashMap* _tmp596_ = NULL;
 
3259
                ValaHashMap* _tmp597_ = NULL;
3214
3260
                ValaHashMap* carg_map;
3215
 
                _tmp610_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
3216
 
                _tmp611_ = _tmp610_;
 
3261
                _tmp596_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
3217
3262
                _vala_map_unref0 (cparam_map);
3218
 
                cparam_map = _tmp611_;
3219
 
                _tmp612_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
3220
 
                carg_map = _tmp612_;
 
3263
                cparam_map = _tmp596_;
 
3264
                _tmp597_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
 
3265
                carg_map = _tmp597_;
3221
3266
                vala_ccode_method_module_generate_vfunc (self, m, creturn_type, (ValaMap*) cparam_map, (ValaMap*) carg_map, "", 3);
3222
3267
                _vala_map_unref0 (carg_map);
3223
3268
        }
3224
 
        _tmp613_ = vala_method_get_entry_point (m);
3225
 
        if (_tmp613_) {
3226
 
                ValaCCodeFunction* _tmp614_ = NULL;
 
3269
        _tmp598_ = vala_method_get_entry_point (m);
 
3270
        if (_tmp598_) {
 
3271
                ValaCCodeFunction* _tmp599_ = NULL;
3227
3272
                ValaCCodeFunction* cmain;
3228
 
                ValaCCodeLineDirective* _tmp615_ = NULL;
3229
 
                ValaCCodeParameter* _tmp616_ = NULL;
3230
 
                ValaCCodeParameter* _tmp617_;
3231
 
                ValaCCodeParameter* _tmp618_ = NULL;
3232
 
                ValaCCodeParameter* _tmp619_;
3233
 
                ValaCCodeBlock* _tmp620_ = NULL;
 
3273
                ValaCCodeLineDirective* _tmp600_ = NULL;
 
3274
                ValaCCodeParameter* _tmp601_ = NULL;
 
3275
                ValaCCodeParameter* _tmp602_;
 
3276
                ValaCCodeParameter* _tmp603_ = NULL;
 
3277
                ValaCCodeParameter* _tmp604_;
 
3278
                ValaCCodeBlock* _tmp605_ = NULL;
3234
3279
                ValaCCodeBlock* main_block;
3235
 
                ValaCodeContext* _tmp621_ = NULL;
3236
 
                ValaProfile _tmp622_;
3237
 
                const gchar* _tmp652_ = NULL;
3238
 
                ValaCCodeIdentifier* _tmp653_ = NULL;
3239
 
                ValaCCodeIdentifier* _tmp654_;
3240
 
                ValaCCodeFunctionCall* _tmp655_ = NULL;
3241
 
                ValaCCodeFunctionCall* _tmp656_;
 
3280
                ValaCodeContext* _tmp606_ = NULL;
 
3281
                ValaProfile _tmp607_;
 
3282
                const gchar* _tmp637_ = NULL;
 
3283
                ValaCCodeIdentifier* _tmp638_ = NULL;
 
3284
                ValaCCodeIdentifier* _tmp639_;
 
3285
                ValaCCodeFunctionCall* _tmp640_ = NULL;
 
3286
                ValaCCodeFunctionCall* _tmp641_;
3242
3287
                ValaCCodeFunctionCall* main_call;
3243
 
                ValaList* _tmp657_ = NULL;
3244
 
                ValaList* _tmp658_;
3245
 
                gint _tmp659_;
3246
 
                gboolean _tmp660_;
3247
 
                ValaDataType* _tmp665_ = NULL;
3248
 
                _tmp614_ = vala_ccode_function_new ("main", "int");
3249
 
                cmain = _tmp614_;
3250
 
                _tmp615_ = vala_ccode_node_get_line ((ValaCCodeNode*) function);
3251
 
                vala_ccode_node_set_line ((ValaCCodeNode*) cmain, _tmp615_);
3252
 
                _tmp616_ = vala_ccode_parameter_new ("argc", "int");
3253
 
                _tmp617_ = _tmp616_;
3254
 
                vala_ccode_function_add_parameter (cmain, _tmp617_);
3255
 
                _vala_ccode_node_unref0 (_tmp617_);
3256
 
                _tmp618_ = vala_ccode_parameter_new ("argv", "char **");
3257
 
                _tmp619_ = _tmp618_;
3258
 
                vala_ccode_function_add_parameter (cmain, _tmp619_);
3259
 
                _vala_ccode_node_unref0 (_tmp619_);
3260
 
                _tmp620_ = vala_ccode_block_new ();
3261
 
                main_block = _tmp620_;
3262
 
                _tmp621_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
3263
 
                _tmp622_ = vala_code_context_get_profile (_tmp621_);
3264
 
                if (_tmp622_ == VALA_PROFILE_GOBJECT) {
3265
 
                        ValaCodeContext* _tmp623_ = NULL;
3266
 
                        gboolean _tmp624_;
3267
 
                        ValaCodeContext* _tmp634_ = NULL;
3268
 
                        gboolean _tmp635_;
3269
 
                        ValaCCodeIdentifier* _tmp645_ = NULL;
3270
 
                        ValaCCodeIdentifier* _tmp646_;
3271
 
                        ValaCCodeFunctionCall* _tmp647_ = NULL;
3272
 
                        ValaCCodeFunctionCall* _tmp648_;
3273
 
                        ValaCCodeExpressionStatement* _tmp649_ = NULL;
3274
 
                        ValaCCodeExpressionStatement* _tmp650_;
 
3288
                ValaList* _tmp642_ = NULL;
 
3289
                ValaList* _tmp643_;
 
3290
                gint _tmp644_;
 
3291
                gboolean _tmp645_;
 
3292
                ValaDataType* _tmp650_ = NULL;
 
3293
                _tmp599_ = vala_ccode_function_new ("main", "int");
 
3294
                cmain = _tmp599_;
 
3295
                _tmp600_ = vala_ccode_node_get_line ((ValaCCodeNode*) function);
 
3296
                vala_ccode_node_set_line ((ValaCCodeNode*) cmain, _tmp600_);
 
3297
                _tmp601_ = vala_ccode_parameter_new ("argc", "int");
 
3298
                _tmp602_ = _tmp601_;
 
3299
                vala_ccode_function_add_parameter (cmain, _tmp602_);
 
3300
                _vala_ccode_node_unref0 (_tmp602_);
 
3301
                _tmp603_ = vala_ccode_parameter_new ("argv", "char **");
 
3302
                _tmp604_ = _tmp603_;
 
3303
                vala_ccode_function_add_parameter (cmain, _tmp604_);
 
3304
                _vala_ccode_node_unref0 (_tmp604_);
 
3305
                _tmp605_ = vala_ccode_block_new ();
 
3306
                main_block = _tmp605_;
 
3307
                _tmp606_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
 
3308
                _tmp607_ = vala_code_context_get_profile (_tmp606_);
 
3309
                if (_tmp607_ == VALA_PROFILE_GOBJECT) {
 
3310
                        ValaCodeContext* _tmp608_ = NULL;
 
3311
                        gboolean _tmp609_;
 
3312
                        ValaCodeContext* _tmp619_ = NULL;
 
3313
                        gboolean _tmp620_;
 
3314
                        ValaCCodeIdentifier* _tmp630_ = NULL;
 
3315
                        ValaCCodeIdentifier* _tmp631_;
 
3316
                        ValaCCodeFunctionCall* _tmp632_ = NULL;
 
3317
                        ValaCCodeFunctionCall* _tmp633_;
 
3318
                        ValaCCodeExpressionStatement* _tmp634_ = NULL;
 
3319
                        ValaCCodeExpressionStatement* _tmp635_;
3275
3320
                        ValaCCodeExpressionStatement* type_init_call;
3276
 
                        ValaCCodeLineDirective* _tmp651_ = NULL;
3277
 
                        _tmp623_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
3278
 
                        _tmp624_ = vala_code_context_get_mem_profiler (_tmp623_);
3279
 
                        if (_tmp624_) {
3280
 
                                ValaCCodeIdentifier* _tmp625_ = NULL;
3281
 
                                ValaCCodeIdentifier* _tmp626_;
3282
 
                                ValaCCodeFunctionCall* _tmp627_ = NULL;
3283
 
                                ValaCCodeFunctionCall* _tmp628_;
 
3321
                        ValaCCodeLineDirective* _tmp636_ = NULL;
 
3322
                        _tmp608_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
 
3323
                        _tmp609_ = vala_code_context_get_mem_profiler (_tmp608_);
 
3324
                        if (_tmp609_) {
 
3325
                                ValaCCodeIdentifier* _tmp610_ = NULL;
 
3326
                                ValaCCodeIdentifier* _tmp611_;
 
3327
                                ValaCCodeFunctionCall* _tmp612_ = NULL;
 
3328
                                ValaCCodeFunctionCall* _tmp613_;
3284
3329
                                ValaCCodeFunctionCall* mem_profiler_init_call;
3285
 
                                ValaCCodeLineDirective* _tmp629_ = NULL;
3286
 
                                ValaCCodeConstant* _tmp630_ = NULL;
3287
 
                                ValaCCodeConstant* _tmp631_;
3288
 
                                ValaCCodeExpressionStatement* _tmp632_ = NULL;
3289
 
                                ValaCCodeExpressionStatement* _tmp633_;
3290
 
                                _tmp625_ = vala_ccode_identifier_new ("g_mem_set_vtable");
3291
 
                                _tmp626_ = _tmp625_;
3292
 
                                _tmp627_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp626_);
3293
 
                                mem_profiler_init_call = (_tmp628_ = _tmp627_, _vala_ccode_node_unref0 (_tmp626_), _tmp628_);
3294
 
                                _tmp629_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
3295
 
                                vala_ccode_node_set_line ((ValaCCodeNode*) mem_profiler_init_call, _tmp629_);
3296
 
                                _tmp630_ = vala_ccode_constant_new ("glib_mem_profiler_table");
3297
 
                                _tmp631_ = _tmp630_;
3298
 
                                vala_ccode_function_call_add_argument (mem_profiler_init_call, (ValaCCodeExpression*) _tmp631_);
3299
 
                                _vala_ccode_node_unref0 (_tmp631_);
3300
 
                                _tmp632_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) mem_profiler_init_call);
3301
 
                                _tmp633_ = _tmp632_;
3302
 
                                vala_ccode_block_add_statement (main_block, (ValaCCodeNode*) _tmp633_);
3303
 
                                _vala_ccode_node_unref0 (_tmp633_);
 
3330
                                ValaCCodeLineDirective* _tmp614_ = NULL;
 
3331
                                ValaCCodeConstant* _tmp615_ = NULL;
 
3332
                                ValaCCodeConstant* _tmp616_;
 
3333
                                ValaCCodeExpressionStatement* _tmp617_ = NULL;
 
3334
                                ValaCCodeExpressionStatement* _tmp618_;
 
3335
                                _tmp610_ = vala_ccode_identifier_new ("g_mem_set_vtable");
 
3336
                                _tmp611_ = _tmp610_;
 
3337
                                _tmp612_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp611_);
 
3338
                                _tmp613_ = _tmp612_;
 
3339
                                _vala_ccode_node_unref0 (_tmp611_);
 
3340
                                mem_profiler_init_call = _tmp613_;
 
3341
                                _tmp614_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
 
3342
                                vala_ccode_node_set_line ((ValaCCodeNode*) mem_profiler_init_call, _tmp614_);
 
3343
                                _tmp615_ = vala_ccode_constant_new ("glib_mem_profiler_table");
 
3344
                                _tmp616_ = _tmp615_;
 
3345
                                vala_ccode_function_call_add_argument (mem_profiler_init_call, (ValaCCodeExpression*) _tmp616_);
 
3346
                                _vala_ccode_node_unref0 (_tmp616_);
 
3347
                                _tmp617_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) mem_profiler_init_call);
 
3348
                                _tmp618_ = _tmp617_;
 
3349
                                vala_ccode_block_add_statement (main_block, (ValaCCodeNode*) _tmp618_);
 
3350
                                _vala_ccode_node_unref0 (_tmp618_);
3304
3351
                                _vala_ccode_node_unref0 (mem_profiler_init_call);
3305
3352
                        }
3306
 
                        _tmp634_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
3307
 
                        _tmp635_ = vala_code_context_get_thread (_tmp634_);
3308
 
                        if (_tmp635_) {
3309
 
                                ValaCCodeIdentifier* _tmp636_ = NULL;
3310
 
                                ValaCCodeIdentifier* _tmp637_;
3311
 
                                ValaCCodeFunctionCall* _tmp638_ = NULL;
3312
 
                                ValaCCodeFunctionCall* _tmp639_;
 
3353
                        _tmp619_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
 
3354
                        _tmp620_ = vala_code_context_get_thread (_tmp619_);
 
3355
                        if (_tmp620_) {
 
3356
                                ValaCCodeIdentifier* _tmp621_ = NULL;
 
3357
                                ValaCCodeIdentifier* _tmp622_;
 
3358
                                ValaCCodeFunctionCall* _tmp623_ = NULL;
 
3359
                                ValaCCodeFunctionCall* _tmp624_;
3313
3360
                                ValaCCodeFunctionCall* thread_init_call;
3314
 
                                ValaCCodeLineDirective* _tmp640_ = NULL;
3315
 
                                ValaCCodeConstant* _tmp641_ = NULL;
3316
 
                                ValaCCodeConstant* _tmp642_;
3317
 
                                ValaCCodeExpressionStatement* _tmp643_ = NULL;
3318
 
                                ValaCCodeExpressionStatement* _tmp644_;
3319
 
                                _tmp636_ = vala_ccode_identifier_new ("g_thread_init");
3320
 
                                _tmp637_ = _tmp636_;
3321
 
                                _tmp638_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp637_);
3322
 
                                thread_init_call = (_tmp639_ = _tmp638_, _vala_ccode_node_unref0 (_tmp637_), _tmp639_);
3323
 
                                _tmp640_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
3324
 
                                vala_ccode_node_set_line ((ValaCCodeNode*) thread_init_call, _tmp640_);
3325
 
                                _tmp641_ = vala_ccode_constant_new ("NULL");
3326
 
                                _tmp642_ = _tmp641_;
3327
 
                                vala_ccode_function_call_add_argument (thread_init_call, (ValaCCodeExpression*) _tmp642_);
3328
 
                                _vala_ccode_node_unref0 (_tmp642_);
3329
 
                                _tmp643_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) thread_init_call);
3330
 
                                _tmp644_ = _tmp643_;
3331
 
                                vala_ccode_block_add_statement (main_block, (ValaCCodeNode*) _tmp644_);
3332
 
                                _vala_ccode_node_unref0 (_tmp644_);
 
3361
                                ValaCCodeLineDirective* _tmp625_ = NULL;
 
3362
                                ValaCCodeConstant* _tmp626_ = NULL;
 
3363
                                ValaCCodeConstant* _tmp627_;
 
3364
                                ValaCCodeExpressionStatement* _tmp628_ = NULL;
 
3365
                                ValaCCodeExpressionStatement* _tmp629_;
 
3366
                                _tmp621_ = vala_ccode_identifier_new ("g_thread_init");
 
3367
                                _tmp622_ = _tmp621_;
 
3368
                                _tmp623_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp622_);
 
3369
                                _tmp624_ = _tmp623_;
 
3370
                                _vala_ccode_node_unref0 (_tmp622_);
 
3371
                                thread_init_call = _tmp624_;
 
3372
                                _tmp625_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
 
3373
                                vala_ccode_node_set_line ((ValaCCodeNode*) thread_init_call, _tmp625_);
 
3374
                                _tmp626_ = vala_ccode_constant_new ("NULL");
 
3375
                                _tmp627_ = _tmp626_;
 
3376
                                vala_ccode_function_call_add_argument (thread_init_call, (ValaCCodeExpression*) _tmp627_);
 
3377
                                _vala_ccode_node_unref0 (_tmp627_);
 
3378
                                _tmp628_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) thread_init_call);
 
3379
                                _tmp629_ = _tmp628_;
 
3380
                                vala_ccode_block_add_statement (main_block, (ValaCCodeNode*) _tmp629_);
 
3381
                                _vala_ccode_node_unref0 (_tmp629_);
3333
3382
                                _vala_ccode_node_unref0 (thread_init_call);
3334
3383
                        }
3335
 
                        _tmp645_ = vala_ccode_identifier_new ("g_type_init");
3336
 
                        _tmp646_ = _tmp645_;
3337
 
                        _tmp647_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp646_);
3338
 
                        _tmp648_ = _tmp647_;
3339
 
                        _tmp649_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp648_);
3340
 
                        type_init_call = (_tmp650_ = _tmp649_, _vala_ccode_node_unref0 (_tmp648_), _vala_ccode_node_unref0 (_tmp646_), _tmp650_);
3341
 
                        _tmp651_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
3342
 
                        vala_ccode_node_set_line ((ValaCCodeNode*) type_init_call, _tmp651_);
 
3384
                        _tmp630_ = vala_ccode_identifier_new ("g_type_init");
 
3385
                        _tmp631_ = _tmp630_;
 
3386
                        _tmp632_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp631_);
 
3387
                        _tmp633_ = _tmp632_;
 
3388
                        _tmp634_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp633_);
 
3389
                        _tmp635_ = _tmp634_;
 
3390
                        _vala_ccode_node_unref0 (_tmp633_);
 
3391
                        _vala_ccode_node_unref0 (_tmp631_);
 
3392
                        type_init_call = _tmp635_;
 
3393
                        _tmp636_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
 
3394
                        vala_ccode_node_set_line ((ValaCCodeNode*) type_init_call, _tmp636_);
3343
3395
                        vala_ccode_block_add_statement (main_block, (ValaCCodeNode*) type_init_call);
3344
3396
                        _vala_ccode_node_unref0 (type_init_call);
3345
3397
                }
3346
 
                _tmp652_ = vala_ccode_function_get_name (function);
3347
 
                _tmp653_ = vala_ccode_identifier_new (_tmp652_);
3348
 
                _tmp654_ = _tmp653_;
3349
 
                _tmp655_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp654_);
3350
 
                main_call = (_tmp656_ = _tmp655_, _vala_ccode_node_unref0 (_tmp654_), _tmp656_);
3351
 
                _tmp657_ = vala_method_get_parameters (m);
3352
 
                _tmp658_ = _tmp657_;
3353
 
                _tmp659_ = vala_collection_get_size ((ValaCollection*) _tmp658_);
3354
 
                if ((_tmp660_ = _tmp659_ == 1, _vala_iterable_unref0 (_tmp658_), _tmp660_)) {
3355
 
                        ValaCCodeIdentifier* _tmp661_ = NULL;
3356
 
                        ValaCCodeIdentifier* _tmp662_;
3357
 
                        ValaCCodeIdentifier* _tmp663_ = NULL;
3358
 
                        ValaCCodeIdentifier* _tmp664_;
3359
 
                        _tmp661_ = vala_ccode_identifier_new ("argv");
3360
 
                        _tmp662_ = _tmp661_;
3361
 
                        vala_ccode_function_call_add_argument (main_call, (ValaCCodeExpression*) _tmp662_);
3362
 
                        _vala_ccode_node_unref0 (_tmp662_);
3363
 
                        _tmp663_ = vala_ccode_identifier_new ("argc");
3364
 
                        _tmp664_ = _tmp663_;
3365
 
                        vala_ccode_function_call_add_argument (main_call, (ValaCCodeExpression*) _tmp664_);
3366
 
                        _vala_ccode_node_unref0 (_tmp664_);
 
3398
                _tmp637_ = vala_ccode_function_get_name (function);
 
3399
                _tmp638_ = vala_ccode_identifier_new (_tmp637_);
 
3400
                _tmp639_ = _tmp638_;
 
3401
                _tmp640_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp639_);
 
3402
                _tmp641_ = _tmp640_;
 
3403
                _vala_ccode_node_unref0 (_tmp639_);
 
3404
                main_call = _tmp641_;
 
3405
                _tmp642_ = vala_method_get_parameters (m);
 
3406
                _tmp643_ = _tmp642_;
 
3407
                _tmp644_ = vala_collection_get_size ((ValaCollection*) _tmp643_);
 
3408
                _tmp645_ = _tmp644_ == 1;
 
3409
                _vala_iterable_unref0 (_tmp643_);
 
3410
                if (_tmp645_) {
 
3411
                        ValaCCodeIdentifier* _tmp646_ = NULL;
 
3412
                        ValaCCodeIdentifier* _tmp647_;
 
3413
                        ValaCCodeIdentifier* _tmp648_ = NULL;
 
3414
                        ValaCCodeIdentifier* _tmp649_;
 
3415
                        _tmp646_ = vala_ccode_identifier_new ("argv");
 
3416
                        _tmp647_ = _tmp646_;
 
3417
                        vala_ccode_function_call_add_argument (main_call, (ValaCCodeExpression*) _tmp647_);
 
3418
                        _vala_ccode_node_unref0 (_tmp647_);
 
3419
                        _tmp648_ = vala_ccode_identifier_new ("argc");
 
3420
                        _tmp649_ = _tmp648_;
 
3421
                        vala_ccode_function_call_add_argument (main_call, (ValaCCodeExpression*) _tmp649_);
 
3422
                        _vala_ccode_node_unref0 (_tmp649_);
3367
3423
                }
3368
 
                _tmp665_ = vala_method_get_return_type (m);
3369
 
                if (VALA_IS_VOID_TYPE (_tmp665_)) {
3370
 
                        ValaCCodeExpressionStatement* _tmp666_ = NULL;
 
3424
                _tmp650_ = vala_method_get_return_type (m);
 
3425
                if (VALA_IS_VOID_TYPE (_tmp650_)) {
 
3426
                        ValaCCodeExpressionStatement* _tmp651_ = NULL;
3371
3427
                        ValaCCodeExpressionStatement* main_stmt;
3372
 
                        ValaCCodeLineDirective* _tmp667_ = NULL;
3373
 
                        ValaCCodeConstant* _tmp668_ = NULL;
3374
 
                        ValaCCodeConstant* _tmp669_;
3375
 
                        ValaCCodeReturnStatement* _tmp670_ = NULL;
3376
 
                        ValaCCodeReturnStatement* _tmp671_;
 
3428
                        ValaCCodeLineDirective* _tmp652_ = NULL;
 
3429
                        ValaCCodeConstant* _tmp653_ = NULL;
 
3430
                        ValaCCodeConstant* _tmp654_;
 
3431
                        ValaCCodeReturnStatement* _tmp655_ = NULL;
 
3432
                        ValaCCodeReturnStatement* _tmp656_;
3377
3433
                        ValaCCodeReturnStatement* ret_stmt;
3378
 
                        ValaCCodeLineDirective* _tmp672_ = NULL;
3379
 
                        _tmp666_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) main_call);
3380
 
                        main_stmt = _tmp666_;
3381
 
                        _tmp667_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
3382
 
                        vala_ccode_node_set_line ((ValaCCodeNode*) main_stmt, _tmp667_);
 
3434
                        ValaCCodeLineDirective* _tmp657_ = NULL;
 
3435
                        _tmp651_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) main_call);
 
3436
                        main_stmt = _tmp651_;
 
3437
                        _tmp652_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
 
3438
                        vala_ccode_node_set_line ((ValaCCodeNode*) main_stmt, _tmp652_);
3383
3439
                        vala_ccode_block_add_statement (main_block, (ValaCCodeNode*) main_stmt);
3384
 
                        _tmp668_ = vala_ccode_constant_new ("0");
3385
 
                        _tmp669_ = _tmp668_;
3386
 
                        _tmp670_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp669_);
3387
 
                        ret_stmt = (_tmp671_ = _tmp670_, _vala_ccode_node_unref0 (_tmp669_), _tmp671_);
3388
 
                        _tmp672_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
3389
 
                        vala_ccode_node_set_line ((ValaCCodeNode*) ret_stmt, _tmp672_);
 
3440
                        _tmp653_ = vala_ccode_constant_new ("0");
 
3441
                        _tmp654_ = _tmp653_;
 
3442
                        _tmp655_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp654_);
 
3443
                        _tmp656_ = _tmp655_;
 
3444
                        _vala_ccode_node_unref0 (_tmp654_);
 
3445
                        ret_stmt = _tmp656_;
 
3446
                        _tmp657_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
 
3447
                        vala_ccode_node_set_line ((ValaCCodeNode*) ret_stmt, _tmp657_);
3390
3448
                        vala_ccode_block_add_statement (main_block, (ValaCCodeNode*) ret_stmt);
3391
3449
                        _vala_ccode_node_unref0 (ret_stmt);
3392
3450
                        _vala_ccode_node_unref0 (main_stmt);
3393
3451
                } else {
3394
 
                        ValaCCodeReturnStatement* _tmp673_ = NULL;
 
3452
                        ValaCCodeReturnStatement* _tmp658_ = NULL;
3395
3453
                        ValaCCodeReturnStatement* main_stmt;
3396
 
                        ValaCCodeLineDirective* _tmp674_ = NULL;
3397
 
                        _tmp673_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) main_call);
3398
 
                        main_stmt = _tmp673_;
3399
 
                        _tmp674_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
3400
 
                        vala_ccode_node_set_line ((ValaCCodeNode*) main_stmt, _tmp674_);
 
3454
                        ValaCCodeLineDirective* _tmp659_ = NULL;
 
3455
                        _tmp658_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) main_call);
 
3456
                        main_stmt = _tmp658_;
 
3457
                        _tmp659_ = vala_ccode_node_get_line ((ValaCCodeNode*) cmain);
 
3458
                        vala_ccode_node_set_line ((ValaCCodeNode*) main_stmt, _tmp659_);
3401
3459
                        vala_ccode_block_add_statement (main_block, (ValaCCodeNode*) main_stmt);
3402
3460
                        _vala_ccode_node_unref0 (main_stmt);
3403
3461
                }
3417
3475
        ValaCCodeParameter* result = NULL;
3418
3476
        ValaCCodeParameter* cparam = NULL;
3419
3477
        gboolean _tmp0_;
3420
 
        gdouble _tmp29_;
3421
 
        gboolean _tmp30_;
3422
 
        gint _tmp31_;
3423
 
        gboolean _tmp32_ = FALSE;
 
3478
        gdouble _tmp27_;
 
3479
        gboolean _tmp28_;
 
3480
        gint _tmp29_;
 
3481
        gboolean _tmp30_ = FALSE;
3424
3482
        g_return_val_if_fail (self != NULL, NULL);
3425
3483
        g_return_val_if_fail (param != NULL, NULL);
3426
3484
        g_return_val_if_fail (decl_space != NULL, NULL);
3438
3496
                gchar* _tmp23_ = NULL;
3439
3497
                gchar* _tmp24_;
3440
3498
                ValaCCodeParameter* _tmp25_ = NULL;
3441
 
                ValaCCodeParameter* _tmp26_;
3442
3499
                _tmp1_ = vala_variable_get_variable_type ((ValaVariable*) param);
3443
3500
                _tmp2_ = vala_data_type_get_cname (_tmp1_);
3444
3501
                ctypename = _tmp2_;
3508
3565
                _tmp23_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp22_);
3509
3566
                _tmp24_ = _tmp23_;
3510
3567
                _tmp25_ = vala_ccode_parameter_new (_tmp24_, ctypename);
3511
 
                _tmp26_ = _tmp25_;
 
3568
                _vala_ccode_node_unref0 (cparam);
 
3569
                cparam = _tmp25_;
 
3570
                _g_free0 (_tmp24_);
 
3571
                _g_free0 (ctypename);
 
3572
        } else {
 
3573
                ValaCCodeParameter* _tmp26_ = NULL;
 
3574
                _tmp26_ = vala_ccode_parameter_new_with_ellipsis ();
3512
3575
                _vala_ccode_node_unref0 (cparam);
3513
3576
                cparam = _tmp26_;
3514
 
                _g_free0 (_tmp24_);
3515
 
                _g_free0 (ctypename);
3516
 
        } else {
3517
 
                ValaCCodeParameter* _tmp27_ = NULL;
3518
 
                ValaCCodeParameter* _tmp28_;
3519
 
                _tmp27_ = vala_ccode_parameter_new_with_ellipsis ();
3520
 
                _tmp28_ = _tmp27_;
3521
 
                _vala_ccode_node_unref0 (cparam);
3522
 
                cparam = _tmp28_;
3523
3577
        }
3524
 
        _tmp29_ = vala_parameter_get_cparameter_position (param);
3525
 
        _tmp30_ = vala_parameter_get_ellipsis (param);
3526
 
        _tmp31_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp29_, _tmp30_);
3527
 
        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp31_), cparam);
 
3578
        _tmp27_ = vala_parameter_get_cparameter_position (param);
 
3579
        _tmp28_ = vala_parameter_get_ellipsis (param);
 
3580
        _tmp29_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp27_, _tmp28_);
 
3581
        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp29_), cparam);
3528
3582
        if (carg_map != NULL) {
 
3583
                gboolean _tmp31_;
 
3584
                _tmp31_ = vala_parameter_get_ellipsis (param);
 
3585
                _tmp30_ = !_tmp31_;
 
3586
        } else {
 
3587
                _tmp30_ = FALSE;
 
3588
        }
 
3589
        if (_tmp30_) {
 
3590
                gdouble _tmp32_;
3529
3591
                gboolean _tmp33_;
 
3592
                gint _tmp34_;
 
3593
                const gchar* _tmp35_ = NULL;
 
3594
                ValaCCodeExpression* _tmp36_ = NULL;
 
3595
                ValaCCodeExpression* _tmp37_;
 
3596
                _tmp32_ = vala_parameter_get_cparameter_position (param);
3530
3597
                _tmp33_ = vala_parameter_get_ellipsis (param);
3531
 
                _tmp32_ = !_tmp33_;
3532
 
        } else {
3533
 
                _tmp32_ = FALSE;
3534
 
        }
3535
 
        if (_tmp32_) {
3536
 
                gdouble _tmp34_;
3537
 
                gboolean _tmp35_;
3538
 
                gint _tmp36_;
3539
 
                const gchar* _tmp37_ = NULL;
3540
 
                ValaCCodeExpression* _tmp38_ = NULL;
3541
 
                ValaCCodeExpression* _tmp39_;
3542
 
                _tmp34_ = vala_parameter_get_cparameter_position (param);
3543
 
                _tmp35_ = vala_parameter_get_ellipsis (param);
3544
 
                _tmp36_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp34_, _tmp35_);
3545
 
                _tmp37_ = vala_symbol_get_name ((ValaSymbol*) param);
3546
 
                _tmp38_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp37_);
3547
 
                _tmp39_ = _tmp38_;
3548
 
                vala_map_set (carg_map, GINT_TO_POINTER (_tmp36_), _tmp39_);
3549
 
                _vala_ccode_node_unref0 (_tmp39_);
 
3598
                _tmp34_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp32_, _tmp33_);
 
3599
                _tmp35_ = vala_symbol_get_name ((ValaSymbol*) param);
 
3600
                _tmp36_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp35_);
 
3601
                _tmp37_ = _tmp36_;
 
3602
                vala_map_set (carg_map, GINT_TO_POINTER (_tmp34_), _tmp37_);
 
3603
                _vala_ccode_node_unref0 (_tmp37_);
3550
3604
        }
3551
3605
        result = cparam;
3552
3606
        return result;
3561
3615
static void vala_ccode_method_module_real_generate_cparameters (ValaCCodeBaseModule* base, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction) {
3562
3616
        ValaCCodeMethodModule * self;
3563
3617
        gboolean _tmp0_;
3564
 
        gboolean _tmp79_;
 
3618
        gboolean _tmp70_;
3565
3619
        gint last_pos;
3566
3620
        gint min_pos = 0;
3567
3621
        self = (ValaCCodeMethodModule*) base;
3595
3649
                _tmp6_ = g_strdup_printf ("Block%dData*", block_id);
3596
3650
                _tmp7_ = _tmp6_;
3597
3651
                _tmp8_ = vala_ccode_parameter_new (_tmp5_, _tmp7_);
3598
 
                instance_param = (_tmp9_ = _tmp8_, _g_free0 (_tmp7_), _g_free0 (_tmp5_), _tmp9_);
 
3652
                _tmp9_ = _tmp8_;
 
3653
                _g_free0 (_tmp7_);
 
3654
                _g_free0 (_tmp5_);
 
3655
                instance_param = _tmp9_;
3599
3656
                _tmp10_ = vala_method_get_cinstance_parameter_position (m);
3600
3657
                _tmp11_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp10_, FALSE);
3601
3658
                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp11_), instance_param);
3660
3717
                                ValaTypeSymbol* parent_type;
3661
3718
                                ValaDataType* this_type = NULL;
3662
3719
                                ValaCCodeParameter* instance_param;
3663
 
                                gboolean _tmp35_ = FALSE;
3664
 
                                gboolean _tmp36_ = FALSE;
3665
 
                                ValaMethod* _tmp37_ = NULL;
3666
 
                                gdouble _tmp67_;
3667
 
                                gint _tmp68_;
 
3720
                                gboolean _tmp31_ = FALSE;
 
3721
                                gboolean _tmp32_ = FALSE;
 
3722
                                ValaMethod* _tmp33_ = NULL;
 
3723
                                gdouble _tmp59_;
 
3724
                                gint _tmp60_;
3668
3725
                                _tmp26_ = vala_ccode_method_module_find_parent_type (self, (ValaSymbol*) m);
3669
3726
                                parent_type = _tmp26_;
3670
3727
                                if (VALA_IS_CLASS (parent_type)) {
3671
3728
                                        ValaObjectType* _tmp27_ = NULL;
3672
 
                                        ValaDataType* _tmp28_;
3673
3729
                                        _tmp27_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_CLASS (parent_type));
3674
 
                                        _tmp28_ = (ValaDataType*) _tmp27_;
3675
3730
                                        _vala_code_node_unref0 (this_type);
3676
 
                                        this_type = _tmp28_;
 
3731
                                        this_type = (ValaDataType*) _tmp27_;
3677
3732
                                } else {
3678
3733
                                        if (VALA_IS_INTERFACE (parent_type)) {
3679
 
                                                ValaObjectType* _tmp29_ = NULL;
3680
 
                                                ValaDataType* _tmp30_;
3681
 
                                                _tmp29_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_INTERFACE (parent_type));
3682
 
                                                _tmp30_ = (ValaDataType*) _tmp29_;
 
3734
                                                ValaObjectType* _tmp28_ = NULL;
 
3735
                                                _tmp28_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_INTERFACE (parent_type));
3683
3736
                                                _vala_code_node_unref0 (this_type);
3684
 
                                                this_type = _tmp30_;
 
3737
                                                this_type = (ValaDataType*) _tmp28_;
3685
3738
                                        } else {
3686
3739
                                                if (VALA_IS_STRUCT (parent_type)) {
3687
 
                                                        ValaStructValueType* _tmp31_ = NULL;
3688
 
                                                        ValaDataType* _tmp32_;
3689
 
                                                        _tmp31_ = vala_struct_value_type_new (VALA_STRUCT (parent_type));
3690
 
                                                        _tmp32_ = (ValaDataType*) _tmp31_;
 
3740
                                                        ValaStructValueType* _tmp29_ = NULL;
 
3741
                                                        _tmp29_ = vala_struct_value_type_new (VALA_STRUCT (parent_type));
3691
3742
                                                        _vala_code_node_unref0 (this_type);
3692
 
                                                        this_type = _tmp32_;
 
3743
                                                        this_type = (ValaDataType*) _tmp29_;
3693
3744
                                                } else {
3694
3745
                                                        if (VALA_IS_ENUM (parent_type)) {
3695
 
                                                                ValaEnumValueType* _tmp33_ = NULL;
3696
 
                                                                ValaDataType* _tmp34_;
3697
 
                                                                _tmp33_ = vala_enum_value_type_new (VALA_ENUM (parent_type));
3698
 
                                                                _tmp34_ = (ValaDataType*) _tmp33_;
 
3746
                                                                ValaEnumValueType* _tmp30_ = NULL;
 
3747
                                                                _tmp30_ = vala_enum_value_type_new (VALA_ENUM (parent_type));
3699
3748
                                                                _vala_code_node_unref0 (this_type);
3700
 
                                                                this_type = _tmp34_;
 
3749
                                                                this_type = (ValaDataType*) _tmp30_;
3701
3750
                                                        } else {
3702
3751
                                                                g_assert_not_reached ();
3703
3752
                                                        }
3706
3755
                                }
3707
3756
                                vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, this_type, decl_space);
3708
3757
                                instance_param = NULL;
3709
 
                                _tmp37_ = vala_method_get_base_interface_method (m);
3710
 
                                if (_tmp37_ != NULL) {
3711
 
                                        gboolean _tmp38_;
3712
 
                                        _tmp38_ = vala_method_get_is_abstract (m);
3713
 
                                        _tmp36_ = !_tmp38_;
3714
 
                                } else {
3715
 
                                        _tmp36_ = FALSE;
3716
 
                                }
3717
 
                                if (_tmp36_) {
3718
 
                                        gboolean _tmp39_;
3719
 
                                        _tmp39_ = vala_method_get_is_virtual (m);
3720
 
                                        _tmp35_ = !_tmp39_;
3721
 
                                } else {
3722
 
                                        _tmp35_ = FALSE;
3723
 
                                }
3724
 
                                if (_tmp35_) {
3725
 
                                        ValaMethod* _tmp40_ = NULL;
3726
 
                                        ValaSymbol* _tmp41_ = NULL;
3727
 
                                        ValaObjectType* _tmp42_ = NULL;
 
3758
                                _tmp33_ = vala_method_get_base_interface_method (m);
 
3759
                                if (_tmp33_ != NULL) {
 
3760
                                        gboolean _tmp34_;
 
3761
                                        _tmp34_ = vala_method_get_is_abstract (m);
 
3762
                                        _tmp32_ = !_tmp34_;
 
3763
                                } else {
 
3764
                                        _tmp32_ = FALSE;
 
3765
                                }
 
3766
                                if (_tmp32_) {
 
3767
                                        gboolean _tmp35_;
 
3768
                                        _tmp35_ = vala_method_get_is_virtual (m);
 
3769
                                        _tmp31_ = !_tmp35_;
 
3770
                                } else {
 
3771
                                        _tmp31_ = FALSE;
 
3772
                                }
 
3773
                                if (_tmp31_) {
 
3774
                                        ValaMethod* _tmp36_ = NULL;
 
3775
                                        ValaSymbol* _tmp37_ = NULL;
 
3776
                                        ValaObjectType* _tmp38_ = NULL;
3728
3777
                                        ValaObjectType* base_type;
3729
 
                                        gchar* _tmp43_ = NULL;
3730
 
                                        gchar* _tmp44_;
3731
 
                                        ValaCCodeParameter* _tmp45_ = NULL;
3732
 
                                        ValaCCodeParameter* _tmp46_;
3733
 
                                        _tmp40_ = vala_method_get_base_interface_method (m);
3734
 
                                        _tmp41_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp40_);
3735
 
                                        _tmp42_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_INTERFACE (_tmp41_));
3736
 
                                        base_type = _tmp42_;
3737
 
                                        _tmp43_ = vala_data_type_get_cname ((ValaDataType*) base_type);
3738
 
                                        _tmp44_ = _tmp43_;
3739
 
                                        _tmp45_ = vala_ccode_parameter_new ("base", _tmp44_);
3740
 
                                        _tmp46_ = _tmp45_;
 
3778
                                        gchar* _tmp39_ = NULL;
 
3779
                                        gchar* _tmp40_;
 
3780
                                        ValaCCodeParameter* _tmp41_ = NULL;
 
3781
                                        _tmp36_ = vala_method_get_base_interface_method (m);
 
3782
                                        _tmp37_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp36_);
 
3783
                                        _tmp38_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_INTERFACE (_tmp37_));
 
3784
                                        base_type = _tmp38_;
 
3785
                                        _tmp39_ = vala_data_type_get_cname ((ValaDataType*) base_type);
 
3786
                                        _tmp40_ = _tmp39_;
 
3787
                                        _tmp41_ = vala_ccode_parameter_new ("base", _tmp40_);
3741
3788
                                        _vala_ccode_node_unref0 (instance_param);
3742
 
                                        instance_param = _tmp46_;
3743
 
                                        _g_free0 (_tmp44_);
 
3789
                                        instance_param = _tmp41_;
 
3790
                                        _g_free0 (_tmp40_);
3744
3791
                                        _vala_code_node_unref0 (base_type);
3745
3792
                                } else {
3746
 
                                        gboolean _tmp47_;
3747
 
                                        _tmp47_ = vala_method_get_overrides (m);
3748
 
                                        if (_tmp47_) {
3749
 
                                                ValaMethod* _tmp48_ = NULL;
3750
 
                                                ValaSymbol* _tmp49_ = NULL;
3751
 
                                                ValaObjectType* _tmp50_ = NULL;
 
3793
                                        gboolean _tmp42_;
 
3794
                                        _tmp42_ = vala_method_get_overrides (m);
 
3795
                                        if (_tmp42_) {
 
3796
                                                ValaMethod* _tmp43_ = NULL;
 
3797
                                                ValaSymbol* _tmp44_ = NULL;
 
3798
                                                ValaObjectType* _tmp45_ = NULL;
3752
3799
                                                ValaObjectType* base_type;
3753
 
                                                gchar* _tmp51_ = NULL;
3754
 
                                                gchar* _tmp52_;
3755
 
                                                ValaCCodeParameter* _tmp53_ = NULL;
3756
 
                                                ValaCCodeParameter* _tmp54_;
3757
 
                                                _tmp48_ = vala_method_get_base_method (m);
3758
 
                                                _tmp49_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp48_);
3759
 
                                                _tmp50_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_CLASS (_tmp49_));
3760
 
                                                base_type = _tmp50_;
3761
 
                                                _tmp51_ = vala_data_type_get_cname ((ValaDataType*) base_type);
3762
 
                                                _tmp52_ = _tmp51_;
3763
 
                                                _tmp53_ = vala_ccode_parameter_new ("base", _tmp52_);
3764
 
                                                _tmp54_ = _tmp53_;
 
3800
                                                gchar* _tmp46_ = NULL;
 
3801
                                                gchar* _tmp47_;
 
3802
                                                ValaCCodeParameter* _tmp48_ = NULL;
 
3803
                                                _tmp43_ = vala_method_get_base_method (m);
 
3804
                                                _tmp44_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp43_);
 
3805
                                                _tmp45_ = vala_object_type_new ((ValaObjectTypeSymbol*) VALA_CLASS (_tmp44_));
 
3806
                                                base_type = _tmp45_;
 
3807
                                                _tmp46_ = vala_data_type_get_cname ((ValaDataType*) base_type);
 
3808
                                                _tmp47_ = _tmp46_;
 
3809
                                                _tmp48_ = vala_ccode_parameter_new ("base", _tmp47_);
3765
3810
                                                _vala_ccode_node_unref0 (instance_param);
3766
 
                                                instance_param = _tmp54_;
3767
 
                                                _g_free0 (_tmp52_);
 
3811
                                                instance_param = _tmp48_;
 
3812
                                                _g_free0 (_tmp47_);
3768
3813
                                                _vala_code_node_unref0 (base_type);
3769
3814
                                        } else {
3770
 
                                                gboolean _tmp55_ = FALSE;
3771
 
                                                ValaSymbol* _tmp56_ = NULL;
3772
 
                                                _tmp56_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
3773
 
                                                if (VALA_IS_STRUCT (_tmp56_)) {
3774
 
                                                        ValaSymbol* _tmp57_ = NULL;
3775
 
                                                        gboolean _tmp58_;
3776
 
                                                        _tmp57_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
3777
 
                                                        _tmp58_ = vala_struct_is_simple_type (VALA_STRUCT (_tmp57_));
3778
 
                                                        _tmp55_ = !_tmp58_;
 
3815
                                                gboolean _tmp49_ = FALSE;
 
3816
                                                ValaSymbol* _tmp50_ = NULL;
 
3817
                                                _tmp50_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
 
3818
                                                if (VALA_IS_STRUCT (_tmp50_)) {
 
3819
                                                        ValaSymbol* _tmp51_ = NULL;
 
3820
                                                        gboolean _tmp52_;
 
3821
                                                        _tmp51_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
 
3822
                                                        _tmp52_ = vala_struct_is_simple_type (VALA_STRUCT (_tmp51_));
 
3823
                                                        _tmp49_ = !_tmp52_;
3779
3824
                                                } else {
3780
 
                                                        _tmp55_ = FALSE;
 
3825
                                                        _tmp49_ = FALSE;
3781
3826
                                                }
3782
 
                                                if (_tmp55_) {
3783
 
                                                        gchar* _tmp59_ = NULL;
3784
 
                                                        gchar* _tmp60_;
3785
 
                                                        ValaCCodeParameter* _tmp61_ = NULL;
3786
 
                                                        ValaCCodeParameter* _tmp62_;
3787
 
                                                        _tmp59_ = vala_data_type_get_cname (this_type);
3788
 
                                                        _tmp60_ = _tmp59_;
3789
 
                                                        _tmp61_ = vala_ccode_parameter_new ("*self", _tmp60_);
3790
 
                                                        _tmp62_ = _tmp61_;
 
3827
                                                if (_tmp49_) {
 
3828
                                                        gchar* _tmp53_ = NULL;
 
3829
                                                        gchar* _tmp54_;
 
3830
                                                        ValaCCodeParameter* _tmp55_ = NULL;
 
3831
                                                        _tmp53_ = vala_data_type_get_cname (this_type);
 
3832
                                                        _tmp54_ = _tmp53_;
 
3833
                                                        _tmp55_ = vala_ccode_parameter_new ("*self", _tmp54_);
3791
3834
                                                        _vala_ccode_node_unref0 (instance_param);
3792
 
                                                        instance_param = _tmp62_;
3793
 
                                                        _g_free0 (_tmp60_);
 
3835
                                                        instance_param = _tmp55_;
 
3836
                                                        _g_free0 (_tmp54_);
3794
3837
                                                } else {
3795
 
                                                        gchar* _tmp63_ = NULL;
3796
 
                                                        gchar* _tmp64_;
3797
 
                                                        ValaCCodeParameter* _tmp65_ = NULL;
3798
 
                                                        ValaCCodeParameter* _tmp66_;
3799
 
                                                        _tmp63_ = vala_data_type_get_cname (this_type);
3800
 
                                                        _tmp64_ = _tmp63_;
3801
 
                                                        _tmp65_ = vala_ccode_parameter_new ("self", _tmp64_);
3802
 
                                                        _tmp66_ = _tmp65_;
 
3838
                                                        gchar* _tmp56_ = NULL;
 
3839
                                                        gchar* _tmp57_;
 
3840
                                                        ValaCCodeParameter* _tmp58_ = NULL;
 
3841
                                                        _tmp56_ = vala_data_type_get_cname (this_type);
 
3842
                                                        _tmp57_ = _tmp56_;
 
3843
                                                        _tmp58_ = vala_ccode_parameter_new ("self", _tmp57_);
3803
3844
                                                        _vala_ccode_node_unref0 (instance_param);
3804
 
                                                        instance_param = _tmp66_;
3805
 
                                                        _g_free0 (_tmp64_);
 
3845
                                                        instance_param = _tmp58_;
 
3846
                                                        _g_free0 (_tmp57_);
3806
3847
                                                }
3807
3848
                                        }
3808
3849
                                }
3809
 
                                _tmp67_ = vala_method_get_cinstance_parameter_position (m);
3810
 
                                _tmp68_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp67_, FALSE);
3811
 
                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp68_), instance_param);
 
3850
                                _tmp59_ = vala_method_get_cinstance_parameter_position (m);
 
3851
                                _tmp60_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp59_, FALSE);
 
3852
                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp60_), instance_param);
3812
3853
                                _vala_ccode_node_unref0 (instance_param);
3813
3854
                                _vala_code_node_unref0 (this_type);
3814
3855
                                _vala_code_node_unref0 (parent_type);
3815
3856
                        } else {
3816
 
                                ValaMemberBinding _tmp69_;
3817
 
                                _tmp69_ = vala_method_get_binding (m);
3818
 
                                if (_tmp69_ == VALA_MEMBER_BINDING_CLASS) {
3819
 
                                        ValaTypeSymbol* _tmp70_ = NULL;
 
3857
                                ValaMemberBinding _tmp61_;
 
3858
                                _tmp61_ = vala_method_get_binding (m);
 
3859
                                if (_tmp61_ == VALA_MEMBER_BINDING_CLASS) {
 
3860
                                        ValaTypeSymbol* _tmp62_ = NULL;
3820
3861
                                        ValaTypeSymbol* parent_type;
3821
3862
                                        ValaDataType* this_type = NULL;
3822
 
                                        ValaClassType* _tmp71_ = NULL;
3823
 
                                        ValaDataType* _tmp72_;
3824
 
                                        gchar* _tmp73_ = NULL;
3825
 
                                        gchar* _tmp74_;
3826
 
                                        ValaCCodeParameter* _tmp75_ = NULL;
3827
 
                                        ValaCCodeParameter* _tmp76_;
 
3863
                                        ValaClassType* _tmp63_ = NULL;
 
3864
                                        gchar* _tmp64_ = NULL;
 
3865
                                        gchar* _tmp65_;
 
3866
                                        ValaCCodeParameter* _tmp66_ = NULL;
 
3867
                                        ValaCCodeParameter* _tmp67_;
3828
3868
                                        ValaCCodeParameter* class_param;
3829
 
                                        gdouble _tmp77_;
3830
 
                                        gint _tmp78_;
3831
 
                                        _tmp70_ = vala_ccode_method_module_find_parent_type (self, (ValaSymbol*) m);
3832
 
                                        parent_type = _tmp70_;
3833
 
                                        _tmp71_ = vala_class_type_new (VALA_CLASS (parent_type));
3834
 
                                        _tmp72_ = (ValaDataType*) _tmp71_;
 
3869
                                        gdouble _tmp68_;
 
3870
                                        gint _tmp69_;
 
3871
                                        _tmp62_ = vala_ccode_method_module_find_parent_type (self, (ValaSymbol*) m);
 
3872
                                        parent_type = _tmp62_;
 
3873
                                        _tmp63_ = vala_class_type_new (VALA_CLASS (parent_type));
3835
3874
                                        _vala_code_node_unref0 (this_type);
3836
 
                                        this_type = _tmp72_;
3837
 
                                        _tmp73_ = vala_data_type_get_cname (this_type);
3838
 
                                        _tmp74_ = _tmp73_;
3839
 
                                        _tmp75_ = vala_ccode_parameter_new ("klass", _tmp74_);
3840
 
                                        class_param = (_tmp76_ = _tmp75_, _g_free0 (_tmp74_), _tmp76_);
3841
 
                                        _tmp77_ = vala_method_get_cinstance_parameter_position (m);
3842
 
                                        _tmp78_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp77_, FALSE);
3843
 
                                        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp78_), class_param);
 
3875
                                        this_type = (ValaDataType*) _tmp63_;
 
3876
                                        _tmp64_ = vala_data_type_get_cname (this_type);
 
3877
                                        _tmp65_ = _tmp64_;
 
3878
                                        _tmp66_ = vala_ccode_parameter_new ("klass", _tmp65_);
 
3879
                                        _tmp67_ = _tmp66_;
 
3880
                                        _g_free0 (_tmp65_);
 
3881
                                        class_param = _tmp67_;
 
3882
                                        _tmp68_ = vala_method_get_cinstance_parameter_position (m);
 
3883
                                        _tmp69_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp68_, FALSE);
 
3884
                                        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp69_), class_param);
3844
3885
                                        _vala_ccode_node_unref0 (class_param);
3845
3886
                                        _vala_code_node_unref0 (this_type);
3846
3887
                                        _vala_code_node_unref0 (parent_type);
3848
3889
                        }
3849
3890
                }
3850
3891
        }
3851
 
        _tmp79_ = vala_ccode_method_module_is_gtypeinstance_creation_method (self, m);
3852
 
        if (_tmp79_) {
 
3892
        _tmp70_ = vala_ccode_method_module_is_gtypeinstance_creation_method (self, m);
 
3893
        if (_tmp70_) {
3853
3894
                gint type_param_index;
3854
 
                ValaSymbol* _tmp80_ = NULL;
3855
 
                ValaClass* _tmp81_;
 
3895
                ValaSymbol* _tmp71_ = NULL;
 
3896
                ValaClass* _tmp72_;
3856
3897
                ValaClass* cl;
3857
3898
                type_param_index = 0;
3858
 
                _tmp80_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
3859
 
                _tmp81_ = _vala_code_node_ref0 (VALA_CLASS (_tmp80_));
3860
 
                cl = _tmp81_;
 
3899
                _tmp71_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
 
3900
                _tmp72_ = _vala_code_node_ref0 (VALA_CLASS (_tmp71_));
 
3901
                cl = _tmp72_;
3861
3902
                {
3862
 
                        ValaList* _tmp82_ = NULL;
 
3903
                        ValaList* _tmp73_ = NULL;
3863
3904
                        ValaList* _type_param_list;
3864
 
                        gint _tmp83_;
 
3905
                        gint _tmp74_;
3865
3906
                        gint _type_param_size;
3866
3907
                        gint _type_param_index;
3867
 
                        _tmp82_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
3868
 
                        _type_param_list = _tmp82_;
3869
 
                        _tmp83_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
3870
 
                        _type_param_size = _tmp83_;
 
3908
                        _tmp73_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
 
3909
                        _type_param_list = _tmp73_;
 
3910
                        _tmp74_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
 
3911
                        _type_param_size = _tmp74_;
3871
3912
                        _type_param_index = -1;
3872
3913
                        while (TRUE) {
3873
 
                                gpointer _tmp84_ = NULL;
 
3914
                                gpointer _tmp75_ = NULL;
3874
3915
                                ValaTypeParameter* type_param;
3875
 
                                gint _tmp85_;
3876
 
                                const gchar* _tmp86_ = NULL;
3877
 
                                gchar* _tmp87_ = NULL;
3878
 
                                gchar* _tmp88_;
3879
 
                                gchar* _tmp89_ = NULL;
3880
 
                                gchar* _tmp90_;
3881
 
                                ValaCCodeParameter* _tmp91_ = NULL;
3882
 
                                ValaCCodeParameter* _tmp92_;
3883
 
                                gint _tmp93_;
3884
 
                                const gchar* _tmp94_ = NULL;
3885
 
                                gchar* _tmp95_ = NULL;
3886
 
                                gchar* _tmp96_;
3887
 
                                gchar* _tmp97_ = NULL;
3888
 
                                gchar* _tmp98_;
3889
 
                                ValaCCodeParameter* _tmp99_ = NULL;
3890
 
                                ValaCCodeParameter* _tmp100_;
3891
 
                                gint _tmp101_;
3892
 
                                const gchar* _tmp102_ = NULL;
3893
 
                                gchar* _tmp103_ = NULL;
3894
 
                                gchar* _tmp104_;
3895
 
                                gchar* _tmp105_ = NULL;
3896
 
                                gchar* _tmp106_;
3897
 
                                ValaCCodeParameter* _tmp107_ = NULL;
3898
 
                                ValaCCodeParameter* _tmp108_;
 
3916
                                gint _tmp76_;
 
3917
                                const gchar* _tmp77_ = NULL;
 
3918
                                gchar* _tmp78_ = NULL;
 
3919
                                gchar* _tmp79_;
 
3920
                                gchar* _tmp80_ = NULL;
 
3921
                                gchar* _tmp81_;
 
3922
                                ValaCCodeParameter* _tmp82_ = NULL;
 
3923
                                ValaCCodeParameter* _tmp83_;
 
3924
                                gint _tmp84_;
 
3925
                                const gchar* _tmp85_ = NULL;
 
3926
                                gchar* _tmp86_ = NULL;
 
3927
                                gchar* _tmp87_;
 
3928
                                gchar* _tmp88_ = NULL;
 
3929
                                gchar* _tmp89_;
 
3930
                                ValaCCodeParameter* _tmp90_ = NULL;
 
3931
                                ValaCCodeParameter* _tmp91_;
 
3932
                                gint _tmp92_;
 
3933
                                const gchar* _tmp93_ = NULL;
 
3934
                                gchar* _tmp94_ = NULL;
 
3935
                                gchar* _tmp95_;
 
3936
                                gchar* _tmp96_ = NULL;
 
3937
                                gchar* _tmp97_;
 
3938
                                ValaCCodeParameter* _tmp98_ = NULL;
 
3939
                                ValaCCodeParameter* _tmp99_;
3899
3940
                                _type_param_index = _type_param_index + 1;
3900
3941
                                if (!(_type_param_index < _type_param_size)) {
3901
3942
                                        break;
3902
3943
                                }
3903
 
                                _tmp84_ = vala_list_get (_type_param_list, _type_param_index);
3904
 
                                type_param = (ValaTypeParameter*) _tmp84_;
3905
 
                                _tmp85_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.01, FALSE);
3906
 
                                _tmp86_ = vala_symbol_get_name ((ValaSymbol*) type_param);
3907
 
                                _tmp87_ = g_utf8_strdown (_tmp86_, (gssize) (-1));
3908
 
                                _tmp88_ = _tmp87_;
3909
 
                                _tmp89_ = g_strdup_printf ("%s_type", _tmp88_);
3910
 
                                _tmp90_ = _tmp89_;
3911
 
                                _tmp91_ = vala_ccode_parameter_new (_tmp90_, "GType");
3912
 
                                _tmp92_ = _tmp91_;
3913
 
                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp85_), _tmp92_);
3914
 
                                _vala_ccode_node_unref0 (_tmp92_);
3915
 
                                _g_free0 (_tmp90_);
3916
 
                                _g_free0 (_tmp88_);
3917
 
                                _tmp93_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.02, FALSE);
3918
 
                                _tmp94_ = vala_symbol_get_name ((ValaSymbol*) type_param);
3919
 
                                _tmp95_ = g_utf8_strdown (_tmp94_, (gssize) (-1));
3920
 
                                _tmp96_ = _tmp95_;
3921
 
                                _tmp97_ = g_strdup_printf ("%s_dup_func", _tmp96_);
3922
 
                                _tmp98_ = _tmp97_;
3923
 
                                _tmp99_ = vala_ccode_parameter_new (_tmp98_, "GBoxedCopyFunc");
3924
 
                                _tmp100_ = _tmp99_;
3925
 
                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp93_), _tmp100_);
3926
 
                                _vala_ccode_node_unref0 (_tmp100_);
3927
 
                                _g_free0 (_tmp98_);
3928
 
                                _g_free0 (_tmp96_);
3929
 
                                _tmp101_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.03, FALSE);
3930
 
                                _tmp102_ = vala_symbol_get_name ((ValaSymbol*) type_param);
3931
 
                                _tmp103_ = g_utf8_strdown (_tmp102_, (gssize) (-1));
3932
 
                                _tmp104_ = _tmp103_;
3933
 
                                _tmp105_ = g_strdup_printf ("%s_destroy_func", _tmp104_);
3934
 
                                _tmp106_ = _tmp105_;
3935
 
                                _tmp107_ = vala_ccode_parameter_new (_tmp106_, "GDestroyNotify");
3936
 
                                _tmp108_ = _tmp107_;
3937
 
                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp101_), _tmp108_);
3938
 
                                _vala_ccode_node_unref0 (_tmp108_);
3939
 
                                _g_free0 (_tmp106_);
3940
 
                                _g_free0 (_tmp104_);
 
3944
                                _tmp75_ = vala_list_get (_type_param_list, _type_param_index);
 
3945
                                type_param = (ValaTypeParameter*) _tmp75_;
 
3946
                                _tmp76_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.01, FALSE);
 
3947
                                _tmp77_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
3948
                                _tmp78_ = g_utf8_strdown (_tmp77_, (gssize) (-1));
 
3949
                                _tmp79_ = _tmp78_;
 
3950
                                _tmp80_ = g_strdup_printf ("%s_type", _tmp79_);
 
3951
                                _tmp81_ = _tmp80_;
 
3952
                                _tmp82_ = vala_ccode_parameter_new (_tmp81_, "GType");
 
3953
                                _tmp83_ = _tmp82_;
 
3954
                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp76_), _tmp83_);
 
3955
                                _vala_ccode_node_unref0 (_tmp83_);
 
3956
                                _g_free0 (_tmp81_);
 
3957
                                _g_free0 (_tmp79_);
 
3958
                                _tmp84_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.02, FALSE);
 
3959
                                _tmp85_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
3960
                                _tmp86_ = g_utf8_strdown (_tmp85_, (gssize) (-1));
 
3961
                                _tmp87_ = _tmp86_;
 
3962
                                _tmp88_ = g_strdup_printf ("%s_dup_func", _tmp87_);
 
3963
                                _tmp89_ = _tmp88_;
 
3964
                                _tmp90_ = vala_ccode_parameter_new (_tmp89_, "GBoxedCopyFunc");
 
3965
                                _tmp91_ = _tmp90_;
 
3966
                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp84_), _tmp91_);
 
3967
                                _vala_ccode_node_unref0 (_tmp91_);
 
3968
                                _g_free0 (_tmp89_);
 
3969
                                _g_free0 (_tmp87_);
 
3970
                                _tmp92_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.03, FALSE);
 
3971
                                _tmp93_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
3972
                                _tmp94_ = g_utf8_strdown (_tmp93_, (gssize) (-1));
 
3973
                                _tmp95_ = _tmp94_;
 
3974
                                _tmp96_ = g_strdup_printf ("%s_destroy_func", _tmp95_);
 
3975
                                _tmp97_ = _tmp96_;
 
3976
                                _tmp98_ = vala_ccode_parameter_new (_tmp97_, "GDestroyNotify");
 
3977
                                _tmp99_ = _tmp98_;
 
3978
                                vala_map_set (cparam_map, GINT_TO_POINTER (_tmp92_), _tmp99_);
 
3979
                                _vala_ccode_node_unref0 (_tmp99_);
 
3980
                                _g_free0 (_tmp97_);
 
3981
                                _g_free0 (_tmp95_);
3941
3982
                                if (carg_map != NULL) {
3942
 
                                        gint _tmp109_;
3943
 
                                        const gchar* _tmp110_ = NULL;
3944
 
                                        gchar* _tmp111_ = NULL;
3945
 
                                        gchar* _tmp112_;
3946
 
                                        gchar* _tmp113_ = NULL;
3947
 
                                        gchar* _tmp114_;
3948
 
                                        ValaCCodeIdentifier* _tmp115_ = NULL;
3949
 
                                        ValaCCodeIdentifier* _tmp116_;
3950
 
                                        gint _tmp117_;
3951
 
                                        const gchar* _tmp118_ = NULL;
3952
 
                                        gchar* _tmp119_ = NULL;
3953
 
                                        gchar* _tmp120_;
3954
 
                                        gchar* _tmp121_ = NULL;
3955
 
                                        gchar* _tmp122_;
3956
 
                                        ValaCCodeIdentifier* _tmp123_ = NULL;
3957
 
                                        ValaCCodeIdentifier* _tmp124_;
3958
 
                                        gint _tmp125_;
3959
 
                                        const gchar* _tmp126_ = NULL;
3960
 
                                        gchar* _tmp127_ = NULL;
3961
 
                                        gchar* _tmp128_;
3962
 
                                        gchar* _tmp129_ = NULL;
3963
 
                                        gchar* _tmp130_;
3964
 
                                        ValaCCodeIdentifier* _tmp131_ = NULL;
3965
 
                                        ValaCCodeIdentifier* _tmp132_;
3966
 
                                        _tmp109_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.01, FALSE);
3967
 
                                        _tmp110_ = vala_symbol_get_name ((ValaSymbol*) type_param);
3968
 
                                        _tmp111_ = g_utf8_strdown (_tmp110_, (gssize) (-1));
3969
 
                                        _tmp112_ = _tmp111_;
3970
 
                                        _tmp113_ = g_strdup_printf ("%s_type", _tmp112_);
3971
 
                                        _tmp114_ = _tmp113_;
3972
 
                                        _tmp115_ = vala_ccode_identifier_new (_tmp114_);
3973
 
                                        _tmp116_ = _tmp115_;
3974
 
                                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp109_), (ValaCCodeExpression*) _tmp116_);
3975
 
                                        _vala_ccode_node_unref0 (_tmp116_);
3976
 
                                        _g_free0 (_tmp114_);
3977
 
                                        _g_free0 (_tmp112_);
3978
 
                                        _tmp117_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.02, FALSE);
3979
 
                                        _tmp118_ = vala_symbol_get_name ((ValaSymbol*) type_param);
3980
 
                                        _tmp119_ = g_utf8_strdown (_tmp118_, (gssize) (-1));
3981
 
                                        _tmp120_ = _tmp119_;
3982
 
                                        _tmp121_ = g_strdup_printf ("%s_dup_func", _tmp120_);
3983
 
                                        _tmp122_ = _tmp121_;
3984
 
                                        _tmp123_ = vala_ccode_identifier_new (_tmp122_);
3985
 
                                        _tmp124_ = _tmp123_;
3986
 
                                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp117_), (ValaCCodeExpression*) _tmp124_);
3987
 
                                        _vala_ccode_node_unref0 (_tmp124_);
3988
 
                                        _g_free0 (_tmp122_);
3989
 
                                        _g_free0 (_tmp120_);
3990
 
                                        _tmp125_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.03, FALSE);
3991
 
                                        _tmp126_ = vala_symbol_get_name ((ValaSymbol*) type_param);
3992
 
                                        _tmp127_ = g_utf8_strdown (_tmp126_, (gssize) (-1));
3993
 
                                        _tmp128_ = _tmp127_;
3994
 
                                        _tmp129_ = g_strdup_printf ("%s_destroy_func", _tmp128_);
3995
 
                                        _tmp130_ = _tmp129_;
3996
 
                                        _tmp131_ = vala_ccode_identifier_new (_tmp130_);
3997
 
                                        _tmp132_ = _tmp131_;
3998
 
                                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp125_), (ValaCCodeExpression*) _tmp132_);
3999
 
                                        _vala_ccode_node_unref0 (_tmp132_);
4000
 
                                        _g_free0 (_tmp130_);
4001
 
                                        _g_free0 (_tmp128_);
 
3983
                                        gint _tmp100_;
 
3984
                                        const gchar* _tmp101_ = NULL;
 
3985
                                        gchar* _tmp102_ = NULL;
 
3986
                                        gchar* _tmp103_;
 
3987
                                        gchar* _tmp104_ = NULL;
 
3988
                                        gchar* _tmp105_;
 
3989
                                        ValaCCodeIdentifier* _tmp106_ = NULL;
 
3990
                                        ValaCCodeIdentifier* _tmp107_;
 
3991
                                        gint _tmp108_;
 
3992
                                        const gchar* _tmp109_ = NULL;
 
3993
                                        gchar* _tmp110_ = NULL;
 
3994
                                        gchar* _tmp111_;
 
3995
                                        gchar* _tmp112_ = NULL;
 
3996
                                        gchar* _tmp113_;
 
3997
                                        ValaCCodeIdentifier* _tmp114_ = NULL;
 
3998
                                        ValaCCodeIdentifier* _tmp115_;
 
3999
                                        gint _tmp116_;
 
4000
                                        const gchar* _tmp117_ = NULL;
 
4001
                                        gchar* _tmp118_ = NULL;
 
4002
                                        gchar* _tmp119_;
 
4003
                                        gchar* _tmp120_ = NULL;
 
4004
                                        gchar* _tmp121_;
 
4005
                                        ValaCCodeIdentifier* _tmp122_ = NULL;
 
4006
                                        ValaCCodeIdentifier* _tmp123_;
 
4007
                                        _tmp100_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.01, FALSE);
 
4008
                                        _tmp101_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
4009
                                        _tmp102_ = g_utf8_strdown (_tmp101_, (gssize) (-1));
 
4010
                                        _tmp103_ = _tmp102_;
 
4011
                                        _tmp104_ = g_strdup_printf ("%s_type", _tmp103_);
 
4012
                                        _tmp105_ = _tmp104_;
 
4013
                                        _tmp106_ = vala_ccode_identifier_new (_tmp105_);
 
4014
                                        _tmp107_ = _tmp106_;
 
4015
                                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp100_), (ValaCCodeExpression*) _tmp107_);
 
4016
                                        _vala_ccode_node_unref0 (_tmp107_);
 
4017
                                        _g_free0 (_tmp105_);
 
4018
                                        _g_free0 (_tmp103_);
 
4019
                                        _tmp108_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.02, FALSE);
 
4020
                                        _tmp109_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
4021
                                        _tmp110_ = g_utf8_strdown (_tmp109_, (gssize) (-1));
 
4022
                                        _tmp111_ = _tmp110_;
 
4023
                                        _tmp112_ = g_strdup_printf ("%s_dup_func", _tmp111_);
 
4024
                                        _tmp113_ = _tmp112_;
 
4025
                                        _tmp114_ = vala_ccode_identifier_new (_tmp113_);
 
4026
                                        _tmp115_ = _tmp114_;
 
4027
                                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp108_), (ValaCCodeExpression*) _tmp115_);
 
4028
                                        _vala_ccode_node_unref0 (_tmp115_);
 
4029
                                        _g_free0 (_tmp113_);
 
4030
                                        _g_free0 (_tmp111_);
 
4031
                                        _tmp116_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.03, FALSE);
 
4032
                                        _tmp117_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
4033
                                        _tmp118_ = g_utf8_strdown (_tmp117_, (gssize) (-1));
 
4034
                                        _tmp119_ = _tmp118_;
 
4035
                                        _tmp120_ = g_strdup_printf ("%s_destroy_func", _tmp119_);
 
4036
                                        _tmp121_ = _tmp120_;
 
4037
                                        _tmp122_ = vala_ccode_identifier_new (_tmp121_);
 
4038
                                        _tmp123_ = _tmp122_;
 
4039
                                        vala_map_set (carg_map, GINT_TO_POINTER (_tmp116_), (ValaCCodeExpression*) _tmp123_);
 
4040
                                        _vala_ccode_node_unref0 (_tmp123_);
 
4041
                                        _g_free0 (_tmp121_);
 
4042
                                        _g_free0 (_tmp119_);
4002
4043
                                }
4003
4044
                                type_param_index++;
4004
4045
                                _vala_code_node_unref0 (type_param);
4007
4048
                }
4008
4049
                _vala_code_node_unref0 (cl);
4009
4050
        } else {
4010
 
                gboolean _tmp133_;
4011
 
                _tmp133_ = vala_method_get_closure (m);
4012
 
                if (!_tmp133_) {
 
4051
                gboolean _tmp124_;
 
4052
                _tmp124_ = vala_method_get_closure (m);
 
4053
                if (!_tmp124_) {
4013
4054
                        gint type_param_index;
4014
4055
                        type_param_index = 0;
4015
4056
                        {
4016
 
                                ValaList* _tmp134_ = NULL;
 
4057
                                ValaList* _tmp125_ = NULL;
4017
4058
                                ValaList* _type_param_list;
4018
 
                                gint _tmp135_;
 
4059
                                gint _tmp126_;
4019
4060
                                gint _type_param_size;
4020
4061
                                gint _type_param_index;
4021
 
                                _tmp134_ = vala_method_get_type_parameters (m);
4022
 
                                _type_param_list = _tmp134_;
4023
 
                                _tmp135_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
4024
 
                                _type_param_size = _tmp135_;
 
4062
                                _tmp125_ = vala_method_get_type_parameters (m);
 
4063
                                _type_param_list = _tmp125_;
 
4064
                                _tmp126_ = vala_collection_get_size ((ValaCollection*) _type_param_list);
 
4065
                                _type_param_size = _tmp126_;
4025
4066
                                _type_param_index = -1;
4026
4067
                                while (TRUE) {
4027
 
                                        gpointer _tmp136_ = NULL;
 
4068
                                        gpointer _tmp127_ = NULL;
4028
4069
                                        ValaTypeParameter* type_param;
4029
 
                                        gint _tmp137_;
4030
 
                                        const gchar* _tmp138_ = NULL;
4031
 
                                        gchar* _tmp139_ = NULL;
4032
 
                                        gchar* _tmp140_;
4033
 
                                        gchar* _tmp141_ = NULL;
4034
 
                                        gchar* _tmp142_;
4035
 
                                        ValaCCodeParameter* _tmp143_ = NULL;
4036
 
                                        ValaCCodeParameter* _tmp144_;
4037
 
                                        gint _tmp145_;
4038
 
                                        const gchar* _tmp146_ = NULL;
4039
 
                                        gchar* _tmp147_ = NULL;
4040
 
                                        gchar* _tmp148_;
4041
 
                                        gchar* _tmp149_ = NULL;
4042
 
                                        gchar* _tmp150_;
4043
 
                                        ValaCCodeParameter* _tmp151_ = NULL;
4044
 
                                        ValaCCodeParameter* _tmp152_;
4045
 
                                        gint _tmp153_;
4046
 
                                        const gchar* _tmp154_ = NULL;
4047
 
                                        gchar* _tmp155_ = NULL;
4048
 
                                        gchar* _tmp156_;
4049
 
                                        gchar* _tmp157_ = NULL;
4050
 
                                        gchar* _tmp158_;
4051
 
                                        ValaCCodeParameter* _tmp159_ = NULL;
4052
 
                                        ValaCCodeParameter* _tmp160_;
 
4070
                                        gint _tmp128_;
 
4071
                                        const gchar* _tmp129_ = NULL;
 
4072
                                        gchar* _tmp130_ = NULL;
 
4073
                                        gchar* _tmp131_;
 
4074
                                        gchar* _tmp132_ = NULL;
 
4075
                                        gchar* _tmp133_;
 
4076
                                        ValaCCodeParameter* _tmp134_ = NULL;
 
4077
                                        ValaCCodeParameter* _tmp135_;
 
4078
                                        gint _tmp136_;
 
4079
                                        const gchar* _tmp137_ = NULL;
 
4080
                                        gchar* _tmp138_ = NULL;
 
4081
                                        gchar* _tmp139_;
 
4082
                                        gchar* _tmp140_ = NULL;
 
4083
                                        gchar* _tmp141_;
 
4084
                                        ValaCCodeParameter* _tmp142_ = NULL;
 
4085
                                        ValaCCodeParameter* _tmp143_;
 
4086
                                        gint _tmp144_;
 
4087
                                        const gchar* _tmp145_ = NULL;
 
4088
                                        gchar* _tmp146_ = NULL;
 
4089
                                        gchar* _tmp147_;
 
4090
                                        gchar* _tmp148_ = NULL;
 
4091
                                        gchar* _tmp149_;
 
4092
                                        ValaCCodeParameter* _tmp150_ = NULL;
 
4093
                                        ValaCCodeParameter* _tmp151_;
4053
4094
                                        _type_param_index = _type_param_index + 1;
4054
4095
                                        if (!(_type_param_index < _type_param_size)) {
4055
4096
                                                break;
4056
4097
                                        }
4057
 
                                        _tmp136_ = vala_list_get (_type_param_list, _type_param_index);
4058
 
                                        type_param = (ValaTypeParameter*) _tmp136_;
4059
 
                                        _tmp137_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.01, FALSE);
4060
 
                                        _tmp138_ = vala_symbol_get_name ((ValaSymbol*) type_param);
4061
 
                                        _tmp139_ = g_utf8_strdown (_tmp138_, (gssize) (-1));
4062
 
                                        _tmp140_ = _tmp139_;
4063
 
                                        _tmp141_ = g_strdup_printf ("%s_type", _tmp140_);
4064
 
                                        _tmp142_ = _tmp141_;
4065
 
                                        _tmp143_ = vala_ccode_parameter_new (_tmp142_, "GType");
4066
 
                                        _tmp144_ = _tmp143_;
4067
 
                                        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp137_), _tmp144_);
4068
 
                                        _vala_ccode_node_unref0 (_tmp144_);
4069
 
                                        _g_free0 (_tmp142_);
4070
 
                                        _g_free0 (_tmp140_);
4071
 
                                        _tmp145_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.02, FALSE);
4072
 
                                        _tmp146_ = vala_symbol_get_name ((ValaSymbol*) type_param);
4073
 
                                        _tmp147_ = g_utf8_strdown (_tmp146_, (gssize) (-1));
4074
 
                                        _tmp148_ = _tmp147_;
4075
 
                                        _tmp149_ = g_strdup_printf ("%s_dup_func", _tmp148_);
4076
 
                                        _tmp150_ = _tmp149_;
4077
 
                                        _tmp151_ = vala_ccode_parameter_new (_tmp150_, "GBoxedCopyFunc");
4078
 
                                        _tmp152_ = _tmp151_;
4079
 
                                        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp145_), _tmp152_);
4080
 
                                        _vala_ccode_node_unref0 (_tmp152_);
4081
 
                                        _g_free0 (_tmp150_);
4082
 
                                        _g_free0 (_tmp148_);
4083
 
                                        _tmp153_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.03, FALSE);
4084
 
                                        _tmp154_ = vala_symbol_get_name ((ValaSymbol*) type_param);
4085
 
                                        _tmp155_ = g_utf8_strdown (_tmp154_, (gssize) (-1));
4086
 
                                        _tmp156_ = _tmp155_;
4087
 
                                        _tmp157_ = g_strdup_printf ("%s_destroy_func", _tmp156_);
4088
 
                                        _tmp158_ = _tmp157_;
4089
 
                                        _tmp159_ = vala_ccode_parameter_new (_tmp158_, "GDestroyNotify");
4090
 
                                        _tmp160_ = _tmp159_;
4091
 
                                        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp153_), _tmp160_);
4092
 
                                        _vala_ccode_node_unref0 (_tmp160_);
4093
 
                                        _g_free0 (_tmp158_);
4094
 
                                        _g_free0 (_tmp156_);
 
4098
                                        _tmp127_ = vala_list_get (_type_param_list, _type_param_index);
 
4099
                                        type_param = (ValaTypeParameter*) _tmp127_;
 
4100
                                        _tmp128_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.01, FALSE);
 
4101
                                        _tmp129_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
4102
                                        _tmp130_ = g_utf8_strdown (_tmp129_, (gssize) (-1));
 
4103
                                        _tmp131_ = _tmp130_;
 
4104
                                        _tmp132_ = g_strdup_printf ("%s_type", _tmp131_);
 
4105
                                        _tmp133_ = _tmp132_;
 
4106
                                        _tmp134_ = vala_ccode_parameter_new (_tmp133_, "GType");
 
4107
                                        _tmp135_ = _tmp134_;
 
4108
                                        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp128_), _tmp135_);
 
4109
                                        _vala_ccode_node_unref0 (_tmp135_);
 
4110
                                        _g_free0 (_tmp133_);
 
4111
                                        _g_free0 (_tmp131_);
 
4112
                                        _tmp136_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.02, FALSE);
 
4113
                                        _tmp137_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
4114
                                        _tmp138_ = g_utf8_strdown (_tmp137_, (gssize) (-1));
 
4115
                                        _tmp139_ = _tmp138_;
 
4116
                                        _tmp140_ = g_strdup_printf ("%s_dup_func", _tmp139_);
 
4117
                                        _tmp141_ = _tmp140_;
 
4118
                                        _tmp142_ = vala_ccode_parameter_new (_tmp141_, "GBoxedCopyFunc");
 
4119
                                        _tmp143_ = _tmp142_;
 
4120
                                        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp136_), _tmp143_);
 
4121
                                        _vala_ccode_node_unref0 (_tmp143_);
 
4122
                                        _g_free0 (_tmp141_);
 
4123
                                        _g_free0 (_tmp139_);
 
4124
                                        _tmp144_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.03, FALSE);
 
4125
                                        _tmp145_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
4126
                                        _tmp146_ = g_utf8_strdown (_tmp145_, (gssize) (-1));
 
4127
                                        _tmp147_ = _tmp146_;
 
4128
                                        _tmp148_ = g_strdup_printf ("%s_destroy_func", _tmp147_);
 
4129
                                        _tmp149_ = _tmp148_;
 
4130
                                        _tmp150_ = vala_ccode_parameter_new (_tmp149_, "GDestroyNotify");
 
4131
                                        _tmp151_ = _tmp150_;
 
4132
                                        vala_map_set (cparam_map, GINT_TO_POINTER (_tmp144_), _tmp151_);
 
4133
                                        _vala_ccode_node_unref0 (_tmp151_);
 
4134
                                        _g_free0 (_tmp149_);
 
4135
                                        _g_free0 (_tmp147_);
4095
4136
                                        if (carg_map != NULL) {
4096
 
                                                gint _tmp161_;
4097
 
                                                const gchar* _tmp162_ = NULL;
4098
 
                                                gchar* _tmp163_ = NULL;
4099
 
                                                gchar* _tmp164_;
4100
 
                                                gchar* _tmp165_ = NULL;
4101
 
                                                gchar* _tmp166_;
4102
 
                                                ValaCCodeIdentifier* _tmp167_ = NULL;
4103
 
                                                ValaCCodeIdentifier* _tmp168_;
4104
 
                                                gint _tmp169_;
4105
 
                                                const gchar* _tmp170_ = NULL;
4106
 
                                                gchar* _tmp171_ = NULL;
4107
 
                                                gchar* _tmp172_;
4108
 
                                                gchar* _tmp173_ = NULL;
4109
 
                                                gchar* _tmp174_;
4110
 
                                                ValaCCodeIdentifier* _tmp175_ = NULL;
4111
 
                                                ValaCCodeIdentifier* _tmp176_;
4112
 
                                                gint _tmp177_;
4113
 
                                                const gchar* _tmp178_ = NULL;
4114
 
                                                gchar* _tmp179_ = NULL;
4115
 
                                                gchar* _tmp180_;
4116
 
                                                gchar* _tmp181_ = NULL;
4117
 
                                                gchar* _tmp182_;
4118
 
                                                ValaCCodeIdentifier* _tmp183_ = NULL;
4119
 
                                                ValaCCodeIdentifier* _tmp184_;
4120
 
                                                _tmp161_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.01, FALSE);
4121
 
                                                _tmp162_ = vala_symbol_get_name ((ValaSymbol*) type_param);
4122
 
                                                _tmp163_ = g_utf8_strdown (_tmp162_, (gssize) (-1));
4123
 
                                                _tmp164_ = _tmp163_;
4124
 
                                                _tmp165_ = g_strdup_printf ("%s_type", _tmp164_);
4125
 
                                                _tmp166_ = _tmp165_;
4126
 
                                                _tmp167_ = vala_ccode_identifier_new (_tmp166_);
4127
 
                                                _tmp168_ = _tmp167_;
4128
 
                                                vala_map_set (carg_map, GINT_TO_POINTER (_tmp161_), (ValaCCodeExpression*) _tmp168_);
4129
 
                                                _vala_ccode_node_unref0 (_tmp168_);
4130
 
                                                _g_free0 (_tmp166_);
4131
 
                                                _g_free0 (_tmp164_);
4132
 
                                                _tmp169_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.02, FALSE);
4133
 
                                                _tmp170_ = vala_symbol_get_name ((ValaSymbol*) type_param);
4134
 
                                                _tmp171_ = g_utf8_strdown (_tmp170_, (gssize) (-1));
4135
 
                                                _tmp172_ = _tmp171_;
4136
 
                                                _tmp173_ = g_strdup_printf ("%s_dup_func", _tmp172_);
4137
 
                                                _tmp174_ = _tmp173_;
4138
 
                                                _tmp175_ = vala_ccode_identifier_new (_tmp174_);
4139
 
                                                _tmp176_ = _tmp175_;
4140
 
                                                vala_map_set (carg_map, GINT_TO_POINTER (_tmp169_), (ValaCCodeExpression*) _tmp176_);
4141
 
                                                _vala_ccode_node_unref0 (_tmp176_);
4142
 
                                                _g_free0 (_tmp174_);
4143
 
                                                _g_free0 (_tmp172_);
4144
 
                                                _tmp177_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.03, FALSE);
4145
 
                                                _tmp178_ = vala_symbol_get_name ((ValaSymbol*) type_param);
4146
 
                                                _tmp179_ = g_utf8_strdown (_tmp178_, (gssize) (-1));
4147
 
                                                _tmp180_ = _tmp179_;
4148
 
                                                _tmp181_ = g_strdup_printf ("%s_destroy_func", _tmp180_);
4149
 
                                                _tmp182_ = _tmp181_;
4150
 
                                                _tmp183_ = vala_ccode_identifier_new (_tmp182_);
4151
 
                                                _tmp184_ = _tmp183_;
4152
 
                                                vala_map_set (carg_map, GINT_TO_POINTER (_tmp177_), (ValaCCodeExpression*) _tmp184_);
4153
 
                                                _vala_ccode_node_unref0 (_tmp184_);
4154
 
                                                _g_free0 (_tmp182_);
4155
 
                                                _g_free0 (_tmp180_);
 
4137
                                                gint _tmp152_;
 
4138
                                                const gchar* _tmp153_ = NULL;
 
4139
                                                gchar* _tmp154_ = NULL;
 
4140
                                                gchar* _tmp155_;
 
4141
                                                gchar* _tmp156_ = NULL;
 
4142
                                                gchar* _tmp157_;
 
4143
                                                ValaCCodeIdentifier* _tmp158_ = NULL;
 
4144
                                                ValaCCodeIdentifier* _tmp159_;
 
4145
                                                gint _tmp160_;
 
4146
                                                const gchar* _tmp161_ = NULL;
 
4147
                                                gchar* _tmp162_ = NULL;
 
4148
                                                gchar* _tmp163_;
 
4149
                                                gchar* _tmp164_ = NULL;
 
4150
                                                gchar* _tmp165_;
 
4151
                                                ValaCCodeIdentifier* _tmp166_ = NULL;
 
4152
                                                ValaCCodeIdentifier* _tmp167_;
 
4153
                                                gint _tmp168_;
 
4154
                                                const gchar* _tmp169_ = NULL;
 
4155
                                                gchar* _tmp170_ = NULL;
 
4156
                                                gchar* _tmp171_;
 
4157
                                                gchar* _tmp172_ = NULL;
 
4158
                                                gchar* _tmp173_;
 
4159
                                                ValaCCodeIdentifier* _tmp174_ = NULL;
 
4160
                                                ValaCCodeIdentifier* _tmp175_;
 
4161
                                                _tmp152_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.01, FALSE);
 
4162
                                                _tmp153_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
4163
                                                _tmp154_ = g_utf8_strdown (_tmp153_, (gssize) (-1));
 
4164
                                                _tmp155_ = _tmp154_;
 
4165
                                                _tmp156_ = g_strdup_printf ("%s_type", _tmp155_);
 
4166
                                                _tmp157_ = _tmp156_;
 
4167
                                                _tmp158_ = vala_ccode_identifier_new (_tmp157_);
 
4168
                                                _tmp159_ = _tmp158_;
 
4169
                                                vala_map_set (carg_map, GINT_TO_POINTER (_tmp152_), (ValaCCodeExpression*) _tmp159_);
 
4170
                                                _vala_ccode_node_unref0 (_tmp159_);
 
4171
                                                _g_free0 (_tmp157_);
 
4172
                                                _g_free0 (_tmp155_);
 
4173
                                                _tmp160_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.02, FALSE);
 
4174
                                                _tmp161_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
4175
                                                _tmp162_ = g_utf8_strdown (_tmp161_, (gssize) (-1));
 
4176
                                                _tmp163_ = _tmp162_;
 
4177
                                                _tmp164_ = g_strdup_printf ("%s_dup_func", _tmp163_);
 
4178
                                                _tmp165_ = _tmp164_;
 
4179
                                                _tmp166_ = vala_ccode_identifier_new (_tmp165_);
 
4180
                                                _tmp167_ = _tmp166_;
 
4181
                                                vala_map_set (carg_map, GINT_TO_POINTER (_tmp160_), (ValaCCodeExpression*) _tmp167_);
 
4182
                                                _vala_ccode_node_unref0 (_tmp167_);
 
4183
                                                _g_free0 (_tmp165_);
 
4184
                                                _g_free0 (_tmp163_);
 
4185
                                                _tmp168_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, (0.1 * type_param_index) + 0.03, FALSE);
 
4186
                                                _tmp169_ = vala_symbol_get_name ((ValaSymbol*) type_param);
 
4187
                                                _tmp170_ = g_utf8_strdown (_tmp169_, (gssize) (-1));
 
4188
                                                _tmp171_ = _tmp170_;
 
4189
                                                _tmp172_ = g_strdup_printf ("%s_destroy_func", _tmp171_);
 
4190
                                                _tmp173_ = _tmp172_;
 
4191
                                                _tmp174_ = vala_ccode_identifier_new (_tmp173_);
 
4192
                                                _tmp175_ = _tmp174_;
 
4193
                                                vala_map_set (carg_map, GINT_TO_POINTER (_tmp168_), (ValaCCodeExpression*) _tmp175_);
 
4194
                                                _vala_ccode_node_unref0 (_tmp175_);
 
4195
                                                _g_free0 (_tmp173_);
 
4196
                                                _g_free0 (_tmp171_);
4156
4197
                                        }
4157
4198
                                        type_param_index++;
4158
4199
                                        _vala_code_node_unref0 (type_param);
4162
4203
                }
4163
4204
        }
4164
4205
        {
4165
 
                ValaList* _tmp185_ = NULL;
 
4206
                ValaList* _tmp176_ = NULL;
4166
4207
                ValaList* _param_list;
4167
 
                gint _tmp186_;
 
4208
                gint _tmp177_;
4168
4209
                gint _param_size;
4169
4210
                gint _param_index;
4170
 
                _tmp185_ = vala_method_get_parameters (m);
4171
 
                _param_list = _tmp185_;
4172
 
                _tmp186_ = vala_collection_get_size ((ValaCollection*) _param_list);
4173
 
                _param_size = _tmp186_;
 
4211
                _tmp176_ = vala_method_get_parameters (m);
 
4212
                _param_list = _tmp176_;
 
4213
                _tmp177_ = vala_collection_get_size ((ValaCollection*) _param_list);
 
4214
                _param_size = _tmp177_;
4174
4215
                _param_index = -1;
4175
4216
                while (TRUE) {
4176
 
                        gpointer _tmp187_ = NULL;
 
4217
                        gpointer _tmp178_ = NULL;
4177
4218
                        ValaParameter* param;
4178
 
                        ValaParameterDirection _tmp188_;
4179
 
                        ValaCCodeParameter* _tmp189_ = NULL;
4180
 
                        ValaCCodeParameter* _tmp190_;
 
4219
                        ValaParameterDirection _tmp179_;
 
4220
                        ValaCCodeParameter* _tmp180_ = NULL;
 
4221
                        ValaCCodeParameter* _tmp181_;
4181
4222
                        _param_index = _param_index + 1;
4182
4223
                        if (!(_param_index < _param_size)) {
4183
4224
                                break;
4184
4225
                        }
4185
 
                        _tmp187_ = vala_list_get (_param_list, _param_index);
4186
 
                        param = (ValaParameter*) _tmp187_;
4187
 
                        _tmp188_ = vala_parameter_get_direction (param);
4188
 
                        if (_tmp188_ != VALA_PARAMETER_DIRECTION_OUT) {
 
4226
                        _tmp178_ = vala_list_get (_param_list, _param_index);
 
4227
                        param = (ValaParameter*) _tmp178_;
 
4228
                        _tmp179_ = vala_parameter_get_direction (param);
 
4229
                        if (_tmp179_ != VALA_PARAMETER_DIRECTION_OUT) {
4189
4230
                                if ((direction & 1) == 0) {
4190
4231
                                        _vala_code_node_unref0 (param);
4191
4232
                                        continue;
4196
4237
                                        continue;
4197
4238
                                }
4198
4239
                        }
4199
 
                        _tmp189_ = vala_ccode_method_module_generate_parameter (self, param, decl_space, cparam_map, carg_map);
4200
 
                        _tmp190_ = _tmp189_;
4201
 
                        _vala_ccode_node_unref0 (_tmp190_);
 
4240
                        _tmp180_ = vala_ccode_method_module_generate_parameter (self, param, decl_space, cparam_map, carg_map);
 
4241
                        _tmp181_ = _tmp180_;
 
4242
                        _vala_ccode_node_unref0 (_tmp181_);
4202
4243
                        _vala_code_node_unref0 (param);
4203
4244
                }
4204
4245
                _vala_iterable_unref0 (_param_list);
4208
4249
        }
4209
4250
        last_pos = -1;
4210
4251
        while (TRUE) {
4211
 
                gpointer _tmp199_ = NULL;
4212
 
                ValaCCodeParameter* _tmp200_;
 
4252
                gpointer _tmp190_ = NULL;
 
4253
                ValaCCodeParameter* _tmp191_;
4213
4254
                min_pos = -1;
4214
4255
                {
4215
 
                        ValaSet* _tmp191_ = NULL;
4216
 
                        ValaSet* _tmp192_;
4217
 
                        ValaIterator* _tmp193_ = NULL;
4218
 
                        ValaIterator* _tmp194_;
 
4256
                        ValaSet* _tmp182_ = NULL;
 
4257
                        ValaSet* _tmp183_;
 
4258
                        ValaIterator* _tmp184_ = NULL;
 
4259
                        ValaIterator* _tmp185_;
4219
4260
                        ValaIterator* _pos_it;
4220
 
                        _tmp191_ = vala_map_get_keys (cparam_map);
4221
 
                        _tmp192_ = _tmp191_;
4222
 
                        _tmp193_ = vala_iterable_iterator ((ValaIterable*) _tmp192_);
4223
 
                        _pos_it = (_tmp194_ = _tmp193_, _vala_iterable_unref0 (_tmp192_), _tmp194_);
 
4261
                        _tmp182_ = vala_map_get_keys (cparam_map);
 
4262
                        _tmp183_ = _tmp182_;
 
4263
                        _tmp184_ = vala_iterable_iterator ((ValaIterable*) _tmp183_);
 
4264
                        _tmp185_ = _tmp184_;
 
4265
                        _vala_iterable_unref0 (_tmp183_);
 
4266
                        _pos_it = _tmp185_;
4224
4267
                        while (TRUE) {
4225
 
                                gboolean _tmp195_;
4226
 
                                gpointer _tmp196_ = NULL;
 
4268
                                gboolean _tmp186_;
 
4269
                                gpointer _tmp187_ = NULL;
4227
4270
                                gint pos;
4228
 
                                gboolean _tmp197_ = FALSE;
4229
 
                                _tmp195_ = vala_iterator_next (_pos_it);
4230
 
                                if (!_tmp195_) {
 
4271
                                gboolean _tmp188_ = FALSE;
 
4272
                                _tmp186_ = vala_iterator_next (_pos_it);
 
4273
                                if (!_tmp186_) {
4231
4274
                                        break;
4232
4275
                                }
4233
 
                                _tmp196_ = vala_iterator_get (_pos_it);
4234
 
                                pos = GPOINTER_TO_INT (_tmp196_);
 
4276
                                _tmp187_ = vala_iterator_get (_pos_it);
 
4277
                                pos = GPOINTER_TO_INT (_tmp187_);
4235
4278
                                if (pos > last_pos) {
4236
 
                                        gboolean _tmp198_ = FALSE;
 
4279
                                        gboolean _tmp189_ = FALSE;
4237
4280
                                        if (min_pos == (-1)) {
4238
 
                                                _tmp198_ = TRUE;
 
4281
                                                _tmp189_ = TRUE;
4239
4282
                                        } else {
4240
 
                                                _tmp198_ = pos < min_pos;
 
4283
                                                _tmp189_ = pos < min_pos;
4241
4284
                                        }
4242
 
                                        _tmp197_ = _tmp198_;
 
4285
                                        _tmp188_ = _tmp189_;
4243
4286
                                } else {
4244
 
                                        _tmp197_ = FALSE;
 
4287
                                        _tmp188_ = FALSE;
4245
4288
                                }
4246
 
                                if (_tmp197_) {
 
4289
                                if (_tmp188_) {
4247
4290
                                        min_pos = pos;
4248
4291
                                }
4249
4292
                        }
4252
4295
                if (min_pos == (-1)) {
4253
4296
                        break;
4254
4297
                }
4255
 
                _tmp199_ = vala_map_get (cparam_map, GINT_TO_POINTER (min_pos));
4256
 
                _tmp200_ = (ValaCCodeParameter*) _tmp199_;
4257
 
                vala_ccode_function_add_parameter (func, _tmp200_);
4258
 
                _vala_ccode_node_unref0 (_tmp200_);
 
4298
                _tmp190_ = vala_map_get (cparam_map, GINT_TO_POINTER (min_pos));
 
4299
                _tmp191_ = (ValaCCodeParameter*) _tmp190_;
 
4300
                vala_ccode_function_add_parameter (func, _tmp191_);
 
4301
                _vala_ccode_node_unref0 (_tmp191_);
4259
4302
                if (vdeclarator != NULL) {
4260
 
                        gpointer _tmp201_ = NULL;
4261
 
                        ValaCCodeParameter* _tmp202_;
4262
 
                        _tmp201_ = vala_map_get (cparam_map, GINT_TO_POINTER (min_pos));
4263
 
                        _tmp202_ = (ValaCCodeParameter*) _tmp201_;
4264
 
                        vala_ccode_function_declarator_add_parameter (vdeclarator, _tmp202_);
4265
 
                        _vala_ccode_node_unref0 (_tmp202_);
 
4303
                        gpointer _tmp192_ = NULL;
 
4304
                        ValaCCodeParameter* _tmp193_;
 
4305
                        _tmp192_ = vala_map_get (cparam_map, GINT_TO_POINTER (min_pos));
 
4306
                        _tmp193_ = (ValaCCodeParameter*) _tmp192_;
 
4307
                        vala_ccode_function_declarator_add_parameter (vdeclarator, _tmp193_);
 
4308
                        _vala_ccode_node_unref0 (_tmp193_);
4266
4309
                }
4267
4310
                if (vcall != NULL) {
4268
 
                        gpointer _tmp203_ = NULL;
 
4311
                        gpointer _tmp194_ = NULL;
4269
4312
                        ValaCCodeExpression* arg;
4270
 
                        _tmp203_ = vala_map_get (carg_map, GINT_TO_POINTER (min_pos));
4271
 
                        arg = (ValaCCodeExpression*) _tmp203_;
 
4313
                        _tmp194_ = vala_map_get (carg_map, GINT_TO_POINTER (min_pos));
 
4314
                        arg = (ValaCCodeExpression*) _tmp194_;
4272
4315
                        if (arg != NULL) {
4273
4316
                                vala_ccode_function_call_add_argument (vcall, arg);
4274
4317
                        }
4279
4322
}
4280
4323
 
4281
4324
 
 
4325
static glong string_strnlen (gchar* str, glong maxlen) {
 
4326
        glong result = 0L;
 
4327
        gchar* _tmp0_ = NULL;
 
4328
        gchar* end;
 
4329
        _tmp0_ = memchr (str, 0, (gsize) maxlen);
 
4330
        end = _tmp0_;
 
4331
        if (end == NULL) {
 
4332
                result = maxlen;
 
4333
                return result;
 
4334
        } else {
 
4335
                result = (glong) (end - str);
 
4336
                return result;
 
4337
        }
 
4338
}
 
4339
 
 
4340
 
4282
4341
static gchar* string_substring (const gchar* self, glong offset, glong len) {
4283
4342
        gchar* result = NULL;
4284
4343
        glong string_length = 0L;
4292
4351
        }
4293
4352
        if (_tmp0_) {
4294
4353
                glong _tmp1_;
4295
 
                _tmp1_ = strnlen ((gchar*) self, (gsize) (offset + len));
 
4354
                _tmp1_ = string_strnlen ((gchar*) self, offset + len);
4296
4355
                string_length = _tmp1_;
4297
4356
        } else {
4298
4357
                gint _tmp2_;
4321
4380
        gchar* _tmp2_ = NULL;
4322
4381
        gchar* cname;
4323
4382
        gboolean _tmp3_ = FALSE;
 
4383
        gchar* _tmp8_;
4324
4384
        gchar* _tmp9_;
4325
4385
        ValaCCodeFunction* _tmp10_ = NULL;
4326
4386
        ValaCCodeFunction* _tmp11_;
4327
4387
        ValaCCodeFunction* vfunc;
4328
4388
        ValaCCodeFunctionCall* vcast;
4329
4389
        ValaSymbol* _tmp12_ = NULL;
4330
 
        ValaCCodeIdentifier* _tmp33_ = NULL;
4331
 
        ValaCCodeIdentifier* _tmp34_;
4332
 
        const gchar* _tmp35_ = NULL;
4333
 
        gchar* _tmp36_;
4334
 
        gchar* _tmp37_;
4335
 
        gboolean _tmp38_ = FALSE;
4336
 
        gchar* _tmp44_;
4337
 
        ValaCCodeMemberAccess* _tmp45_ = NULL;
4338
 
        ValaCCodeMemberAccess* _tmp46_;
4339
 
        ValaCCodeFunctionCall* _tmp47_ = NULL;
4340
 
        ValaCCodeFunctionCall* _tmp48_;
 
4390
        ValaCCodeIdentifier* _tmp31_ = NULL;
 
4391
        ValaCCodeIdentifier* _tmp32_;
 
4392
        const gchar* _tmp33_ = NULL;
 
4393
        gchar* _tmp34_;
 
4394
        gboolean _tmp35_ = FALSE;
 
4395
        gchar* _tmp40_;
 
4396
        gchar* _tmp41_;
 
4397
        ValaCCodeMemberAccess* _tmp42_ = NULL;
 
4398
        ValaCCodeMemberAccess* _tmp43_;
 
4399
        ValaCCodeFunctionCall* _tmp44_ = NULL;
 
4400
        ValaCCodeFunctionCall* _tmp45_;
4341
4401
        ValaCCodeFunctionCall* vcall;
4342
 
        gdouble _tmp49_;
4343
 
        gint _tmp50_;
4344
 
        ValaCCodeIdentifier* _tmp51_ = NULL;
4345
 
        ValaCCodeIdentifier* _tmp52_;
4346
 
        gboolean _tmp56_ = FALSE;
4347
 
        ValaList* _tmp74_ = NULL;
4348
 
        ValaList* _tmp75_;
4349
 
        gint _tmp76_;
4350
 
        gboolean _tmp77_;
 
4402
        gdouble _tmp46_;
 
4403
        gint _tmp47_;
 
4404
        ValaCCodeIdentifier* _tmp48_ = NULL;
 
4405
        ValaCCodeIdentifier* _tmp49_;
 
4406
        gboolean _tmp53_ = FALSE;
 
4407
        ValaList* _tmp71_ = NULL;
 
4408
        ValaList* _tmp72_;
 
4409
        gint _tmp73_;
 
4410
        gboolean _tmp74_;
4351
4411
        g_return_if_fail (self != NULL);
4352
4412
        g_return_if_fail (m != NULL);
4353
4413
        g_return_if_fail (return_type != NULL);
4371
4431
                gint _tmp5_;
4372
4432
                gint _tmp6_;
4373
4433
                gchar* _tmp7_ = NULL;
4374
 
                gchar* _tmp8_;
4375
4434
                _tmp5_ = strlen (cname);
4376
4435
                _tmp6_ = strlen ("_async");
4377
4436
                _tmp7_ = string_substring (cname, (glong) 0, (glong) (_tmp5_ - _tmp6_));
4378
 
                _tmp8_ = _tmp7_;
4379
4437
                _g_free0 (cname);
4380
 
                cname = _tmp8_;
 
4438
                cname = _tmp7_;
4381
4439
        }
4382
 
        _tmp9_ = g_strconcat (cname, suffix, NULL);
 
4440
        _tmp8_ = g_strconcat (cname, suffix, NULL);
 
4441
        _tmp9_ = _tmp8_;
4383
4442
        _tmp10_ = vala_ccode_function_new (_tmp9_, "void");
4384
 
        vfunc = (_tmp11_ = _tmp10_, _g_free0 (_tmp9_), _tmp11_);
 
4443
        _tmp11_ = _tmp10_;
 
4444
        _g_free0 (_tmp9_);
 
4445
        vfunc = _tmp11_;
4385
4446
        vcast = NULL;
4386
4447
        _tmp12_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
4387
4448
        if (VALA_IS_INTERFACE (_tmp12_)) {
4395
4456
                ValaCCodeIdentifier* _tmp19_ = NULL;
4396
4457
                ValaCCodeIdentifier* _tmp20_;
4397
4458
                ValaCCodeFunctionCall* _tmp21_ = NULL;
4398
 
                ValaCCodeFunctionCall* _tmp22_;
4399
4459
                _tmp13_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
4400
4460
                _tmp14_ = _vala_code_node_ref0 (VALA_INTERFACE (_tmp13_));
4401
4461
                iface = _tmp14_;
4406
4466
                _tmp19_ = vala_ccode_identifier_new (_tmp18_);
4407
4467
                _tmp20_ = _tmp19_;
4408
4468
                _tmp21_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp20_);
4409
 
                _tmp22_ = _tmp21_;
4410
4469
                _vala_ccode_node_unref0 (vcast);
4411
 
                vcast = _tmp22_;
 
4470
                vcast = _tmp21_;
4412
4471
                _vala_ccode_node_unref0 (_tmp20_);
4413
4472
                _g_free0 (_tmp18_);
4414
4473
                _g_free0 (_tmp16_);
4415
4474
                _vala_code_node_unref0 (iface);
4416
4475
        } else {
4417
 
                ValaSymbol* _tmp23_ = NULL;
4418
 
                ValaClass* _tmp24_;
 
4476
                ValaSymbol* _tmp22_ = NULL;
 
4477
                ValaClass* _tmp23_;
4419
4478
                ValaClass* cl;
4420
 
                gchar* _tmp25_ = NULL;
4421
 
                gchar* _tmp26_;
4422
 
                gchar* _tmp27_ = NULL;
4423
 
                gchar* _tmp28_;
4424
 
                ValaCCodeIdentifier* _tmp29_ = NULL;
4425
 
                ValaCCodeIdentifier* _tmp30_;
4426
 
                ValaCCodeFunctionCall* _tmp31_ = NULL;
4427
 
                ValaCCodeFunctionCall* _tmp32_;
4428
 
                _tmp23_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
4429
 
                _tmp24_ = _vala_code_node_ref0 (VALA_CLASS (_tmp23_));
4430
 
                cl = _tmp24_;
4431
 
                _tmp25_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
4432
 
                _tmp26_ = _tmp25_;
4433
 
                _tmp27_ = g_strdup_printf ("%s_GET_CLASS", _tmp26_);
4434
 
                _tmp28_ = _tmp27_;
4435
 
                _tmp29_ = vala_ccode_identifier_new (_tmp28_);
4436
 
                _tmp30_ = _tmp29_;
4437
 
                _tmp31_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp30_);
4438
 
                _tmp32_ = _tmp31_;
 
4479
                gchar* _tmp24_ = NULL;
 
4480
                gchar* _tmp25_;
 
4481
                gchar* _tmp26_ = NULL;
 
4482
                gchar* _tmp27_;
 
4483
                ValaCCodeIdentifier* _tmp28_ = NULL;
 
4484
                ValaCCodeIdentifier* _tmp29_;
 
4485
                ValaCCodeFunctionCall* _tmp30_ = NULL;
 
4486
                _tmp22_ = vala_symbol_get_parent_symbol ((ValaSymbol*) m);
 
4487
                _tmp23_ = _vala_code_node_ref0 (VALA_CLASS (_tmp22_));
 
4488
                cl = _tmp23_;
 
4489
                _tmp24_ = vala_typesymbol_get_upper_case_cname ((ValaTypeSymbol*) cl, NULL);
 
4490
                _tmp25_ = _tmp24_;
 
4491
                _tmp26_ = g_strdup_printf ("%s_GET_CLASS", _tmp25_);
 
4492
                _tmp27_ = _tmp26_;
 
4493
                _tmp28_ = vala_ccode_identifier_new (_tmp27_);
 
4494
                _tmp29_ = _tmp28_;
 
4495
                _tmp30_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp29_);
4439
4496
                _vala_ccode_node_unref0 (vcast);
4440
 
                vcast = _tmp32_;
4441
 
                _vala_ccode_node_unref0 (_tmp30_);
4442
 
                _g_free0 (_tmp28_);
4443
 
                _g_free0 (_tmp26_);
 
4497
                vcast = _tmp30_;
 
4498
                _vala_ccode_node_unref0 (_tmp29_);
 
4499
                _g_free0 (_tmp27_);
 
4500
                _g_free0 (_tmp25_);
4444
4501
                _vala_code_node_unref0 (cl);
4445
4502
        }
4446
 
        _tmp33_ = vala_ccode_identifier_new ("self");
4447
 
        _tmp34_ = _tmp33_;
4448
 
        vala_ccode_function_call_add_argument (vcast, (ValaCCodeExpression*) _tmp34_);
4449
 
        _vala_ccode_node_unref0 (_tmp34_);
4450
 
        _tmp35_ = vala_method_get_vfunc_name (m);
4451
 
        _tmp36_ = g_strdup (_tmp35_);
4452
 
        _tmp37_ = _tmp36_;
 
4503
        _tmp31_ = vala_ccode_identifier_new ("self");
 
4504
        _tmp32_ = _tmp31_;
 
4505
        vala_ccode_function_call_add_argument (vcast, (ValaCCodeExpression*) _tmp32_);
 
4506
        _vala_ccode_node_unref0 (_tmp32_);
 
4507
        _tmp33_ = vala_method_get_vfunc_name (m);
 
4508
        _tmp34_ = g_strdup (_tmp33_);
4453
4509
        _g_free0 (cname);
4454
 
        cname = _tmp37_;
 
4510
        cname = _tmp34_;
4455
4511
        if (g_strcmp0 (suffix, "_finish") == 0) {
4456
 
                gboolean _tmp39_;
4457
 
                _tmp39_ = g_str_has_suffix (cname, "_async");
4458
 
                _tmp38_ = _tmp39_;
 
4512
                gboolean _tmp36_;
 
4513
                _tmp36_ = g_str_has_suffix (cname, "_async");
 
4514
                _tmp35_ = _tmp36_;
4459
4515
        } else {
4460
 
                _tmp38_ = FALSE;
 
4516
                _tmp35_ = FALSE;
4461
4517
        }
4462
 
        if (_tmp38_) {
4463
 
                gint _tmp40_;
4464
 
                gint _tmp41_;
4465
 
                gchar* _tmp42_ = NULL;
4466
 
                gchar* _tmp43_;
4467
 
                _tmp40_ = strlen (cname);
4468
 
                _tmp41_ = strlen ("_async");
4469
 
                _tmp42_ = string_substring (cname, (glong) 0, (glong) (_tmp40_ - _tmp41_));
4470
 
                _tmp43_ = _tmp42_;
 
4518
        if (_tmp35_) {
 
4519
                gint _tmp37_;
 
4520
                gint _tmp38_;
 
4521
                gchar* _tmp39_ = NULL;
 
4522
                _tmp37_ = strlen (cname);
 
4523
                _tmp38_ = strlen ("_async");
 
4524
                _tmp39_ = string_substring (cname, (glong) 0, (glong) (_tmp37_ - _tmp38_));
4471
4525
                _g_free0 (cname);
4472
 
                cname = _tmp43_;
 
4526
                cname = _tmp39_;
4473
4527
        }
4474
 
        _tmp44_ = g_strconcat (cname, suffix, NULL);
4475
 
        _tmp45_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) vcast, _tmp44_);
4476
 
        _tmp46_ = _tmp45_;
4477
 
        _tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_);
4478
 
        vcall = (_tmp48_ = _tmp47_, _vala_ccode_node_unref0 (_tmp46_), _g_free0 (_tmp44_), _tmp48_);
4479
 
        _tmp49_ = vala_method_get_cinstance_parameter_position (m);
4480
 
        _tmp50_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp49_, FALSE);
4481
 
        _tmp51_ = vala_ccode_identifier_new ("self");
4482
 
        _tmp52_ = _tmp51_;
4483
 
        vala_map_set (carg_map, GINT_TO_POINTER (_tmp50_), (ValaCCodeExpression*) _tmp52_);
4484
 
        _vala_ccode_node_unref0 (_tmp52_);
 
4528
        _tmp40_ = g_strconcat (cname, suffix, NULL);
 
4529
        _tmp41_ = _tmp40_;
 
4530
        _tmp42_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) vcast, _tmp41_);
 
4531
        _tmp43_ = _tmp42_;
 
4532
        _tmp44_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp43_);
 
4533
        _tmp45_ = _tmp44_;
 
4534
        _vala_ccode_node_unref0 (_tmp43_);
 
4535
        _g_free0 (_tmp41_);
 
4536
        vcall = _tmp45_;
 
4537
        _tmp46_ = vala_method_get_cinstance_parameter_position (m);
 
4538
        _tmp47_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp46_, FALSE);
 
4539
        _tmp48_ = vala_ccode_identifier_new ("self");
 
4540
        _tmp49_ = _tmp48_;
 
4541
        vala_map_set (carg_map, GINT_TO_POINTER (_tmp47_), (ValaCCodeExpression*) _tmp49_);
 
4542
        _vala_ccode_node_unref0 (_tmp49_);
4485
4543
        vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, m, ((ValaCCodeBaseModule*) self)->cfile, cparam_map, vfunc, NULL, carg_map, vcall, direction);
4486
4544
        vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, vfunc);
4487
4545
        {
4488
 
                ValaList* _tmp53_ = NULL;
 
4546
                ValaList* _tmp50_ = NULL;
4489
4547
                ValaList* _precondition_list;
4490
 
                gint _tmp54_;
 
4548
                gint _tmp51_;
4491
4549
                gint _precondition_size;
4492
4550
                gint _precondition_index;
4493
 
                _tmp53_ = vala_method_get_preconditions (m);
4494
 
                _precondition_list = _tmp53_;
4495
 
                _tmp54_ = vala_collection_get_size ((ValaCollection*) _precondition_list);
4496
 
                _precondition_size = _tmp54_;
 
4551
                _tmp50_ = vala_method_get_preconditions (m);
 
4552
                _precondition_list = _tmp50_;
 
4553
                _tmp51_ = vala_collection_get_size ((ValaCollection*) _precondition_list);
 
4554
                _precondition_size = _tmp51_;
4497
4555
                _precondition_index = -1;
4498
4556
                while (TRUE) {
4499
 
                        gpointer _tmp55_ = NULL;
 
4557
                        gpointer _tmp52_ = NULL;
4500
4558
                        ValaExpression* precondition;
4501
4559
                        _precondition_index = _precondition_index + 1;
4502
4560
                        if (!(_precondition_index < _precondition_size)) {
4503
4561
                                break;
4504
4562
                        }
4505
 
                        _tmp55_ = vala_list_get (_precondition_list, _precondition_index);
4506
 
                        precondition = (ValaExpression*) _tmp55_;
 
4563
                        _tmp52_ = vala_list_get (_precondition_list, _precondition_index);
 
4564
                        precondition = (ValaExpression*) _tmp52_;
4507
4565
                        vala_ccode_method_module_create_precondition_statement (self, (ValaCodeNode*) m, return_type, precondition);
4508
4566
                        _vala_code_node_unref0 (precondition);
4509
4567
                }
4510
4568
                _vala_iterable_unref0 (_precondition_list);
4511
4569
        }
4512
4570
        if (VALA_IS_VOID_TYPE (return_type)) {
4513
 
                _tmp56_ = TRUE;
 
4571
                _tmp53_ = TRUE;
4514
4572
        } else {
4515
 
                gboolean _tmp57_;
4516
 
                _tmp57_ = vala_data_type_is_real_non_null_struct_type (return_type);
4517
 
                _tmp56_ = _tmp57_;
 
4573
                gboolean _tmp54_;
 
4574
                _tmp54_ = vala_data_type_is_real_non_null_struct_type (return_type);
 
4575
                _tmp53_ = _tmp54_;
4518
4576
        }
4519
 
        if (_tmp56_) {
4520
 
                ValaCCodeFunction* _tmp58_ = NULL;
4521
 
                _tmp58_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4522
 
                vala_ccode_function_add_expression (_tmp58_, (ValaCCodeExpression*) vcall);
 
4577
        if (_tmp53_) {
 
4578
                ValaCCodeFunction* _tmp55_ = NULL;
 
4579
                _tmp55_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
4580
                vala_ccode_function_add_expression (_tmp55_, (ValaCCodeExpression*) vcall);
4523
4581
        } else {
4524
 
                ValaList* _tmp59_ = NULL;
4525
 
                ValaList* _tmp60_;
4526
 
                gint _tmp61_;
4527
 
                gboolean _tmp62_;
4528
 
                _tmp59_ = vala_method_get_postconditions (m);
4529
 
                _tmp60_ = _tmp59_;
4530
 
                _tmp61_ = vala_collection_get_size ((ValaCollection*) _tmp60_);
4531
 
                if ((_tmp62_ = _tmp61_ == 0, _vala_iterable_unref0 (_tmp60_), _tmp62_)) {
4532
 
                        ValaCCodeFunction* _tmp63_ = NULL;
4533
 
                        _tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4534
 
                        vala_ccode_function_add_return (_tmp63_, (ValaCCodeExpression*) vcall);
 
4582
                ValaList* _tmp56_ = NULL;
 
4583
                ValaList* _tmp57_;
 
4584
                gint _tmp58_;
 
4585
                gboolean _tmp59_;
 
4586
                _tmp56_ = vala_method_get_postconditions (m);
 
4587
                _tmp57_ = _tmp56_;
 
4588
                _tmp58_ = vala_collection_get_size ((ValaCollection*) _tmp57_);
 
4589
                _tmp59_ = _tmp58_ == 0;
 
4590
                _vala_iterable_unref0 (_tmp57_);
 
4591
                if (_tmp59_) {
 
4592
                        ValaCCodeFunction* _tmp60_ = NULL;
 
4593
                        _tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
4594
                        vala_ccode_function_add_return (_tmp60_, (ValaCCodeExpression*) vcall);
4535
4595
                } else {
4536
 
                        ValaCCodeFunction* _tmp64_ = NULL;
4537
 
                        gchar* _tmp65_ = NULL;
4538
 
                        gchar* _tmp66_;
4539
 
                        gchar* _tmp67_ = NULL;
4540
 
                        gchar* _tmp68_;
4541
 
                        ValaCCodeVariableDeclarator* _tmp69_ = NULL;
4542
 
                        ValaCCodeVariableDeclarator* _tmp70_;
4543
 
                        ValaCCodeFunction* _tmp71_ = NULL;
4544
 
                        ValaCCodeIdentifier* _tmp72_ = NULL;
4545
 
                        ValaCCodeIdentifier* _tmp73_;
4546
 
                        _tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4547
 
                        _tmp65_ = vala_data_type_get_cname (return_type);
4548
 
                        _tmp66_ = _tmp65_;
4549
 
                        _tmp67_ = vala_ccode_method_module_get_creturn_type (self, m, _tmp66_);
4550
 
                        _tmp68_ = _tmp67_;
4551
 
                        _tmp69_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
 
4596
                        ValaCCodeFunction* _tmp61_ = NULL;
 
4597
                        gchar* _tmp62_ = NULL;
 
4598
                        gchar* _tmp63_;
 
4599
                        gchar* _tmp64_ = NULL;
 
4600
                        gchar* _tmp65_;
 
4601
                        ValaCCodeVariableDeclarator* _tmp66_ = NULL;
 
4602
                        ValaCCodeVariableDeclarator* _tmp67_;
 
4603
                        ValaCCodeFunction* _tmp68_ = NULL;
 
4604
                        ValaCCodeIdentifier* _tmp69_ = NULL;
 
4605
                        ValaCCodeIdentifier* _tmp70_;
 
4606
                        _tmp61_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
4607
                        _tmp62_ = vala_data_type_get_cname (return_type);
 
4608
                        _tmp63_ = _tmp62_;
 
4609
                        _tmp64_ = vala_ccode_method_module_get_creturn_type (self, m, _tmp63_);
 
4610
                        _tmp65_ = _tmp64_;
 
4611
                        _tmp66_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
 
4612
                        _tmp67_ = _tmp66_;
 
4613
                        vala_ccode_function_add_declaration (_tmp61_, _tmp65_, (ValaCCodeDeclarator*) _tmp67_, 0);
 
4614
                        _vala_ccode_node_unref0 (_tmp67_);
 
4615
                        _g_free0 (_tmp65_);
 
4616
                        _g_free0 (_tmp63_);
 
4617
                        _tmp68_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
4618
                        _tmp69_ = vala_ccode_identifier_new ("result");
4552
4619
                        _tmp70_ = _tmp69_;
4553
 
                        vala_ccode_function_add_declaration (_tmp64_, _tmp68_, (ValaCCodeDeclarator*) _tmp70_, 0);
 
4620
                        vala_ccode_function_add_assignment (_tmp68_, (ValaCCodeExpression*) _tmp70_, (ValaCCodeExpression*) vcall);
4554
4621
                        _vala_ccode_node_unref0 (_tmp70_);
4555
 
                        _g_free0 (_tmp68_);
4556
 
                        _g_free0 (_tmp66_);
4557
 
                        _tmp71_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4558
 
                        _tmp72_ = vala_ccode_identifier_new ("result");
4559
 
                        _tmp73_ = _tmp72_;
4560
 
                        vala_ccode_function_add_assignment (_tmp71_, (ValaCCodeExpression*) _tmp73_, (ValaCCodeExpression*) vcall);
4561
 
                        _vala_ccode_node_unref0 (_tmp73_);
4562
4622
                }
4563
4623
        }
4564
 
        _tmp74_ = vala_method_get_postconditions (m);
4565
 
        _tmp75_ = _tmp74_;
4566
 
        _tmp76_ = vala_collection_get_size ((ValaCollection*) _tmp75_);
4567
 
        if ((_tmp77_ = _tmp76_ > 0, _vala_iterable_unref0 (_tmp75_), _tmp77_)) {
 
4624
        _tmp71_ = vala_method_get_postconditions (m);
 
4625
        _tmp72_ = _tmp71_;
 
4626
        _tmp73_ = vala_collection_get_size ((ValaCollection*) _tmp72_);
 
4627
        _tmp74_ = _tmp73_ > 0;
 
4628
        _vala_iterable_unref0 (_tmp72_);
 
4629
        if (_tmp74_) {
4568
4630
                {
4569
 
                        ValaList* _tmp78_ = NULL;
 
4631
                        ValaList* _tmp75_ = NULL;
4570
4632
                        ValaList* _postcondition_list;
4571
 
                        gint _tmp79_;
 
4633
                        gint _tmp76_;
4572
4634
                        gint _postcondition_size;
4573
4635
                        gint _postcondition_index;
4574
 
                        _tmp78_ = vala_method_get_postconditions (m);
4575
 
                        _postcondition_list = _tmp78_;
4576
 
                        _tmp79_ = vala_collection_get_size ((ValaCollection*) _postcondition_list);
4577
 
                        _postcondition_size = _tmp79_;
 
4636
                        _tmp75_ = vala_method_get_postconditions (m);
 
4637
                        _postcondition_list = _tmp75_;
 
4638
                        _tmp76_ = vala_collection_get_size ((ValaCollection*) _postcondition_list);
 
4639
                        _postcondition_size = _tmp76_;
4578
4640
                        _postcondition_index = -1;
4579
4641
                        while (TRUE) {
4580
 
                                gpointer _tmp80_ = NULL;
 
4642
                                gpointer _tmp77_ = NULL;
4581
4643
                                ValaExpression* postcondition;
4582
4644
                                _postcondition_index = _postcondition_index + 1;
4583
4645
                                if (!(_postcondition_index < _postcondition_size)) {
4584
4646
                                        break;
4585
4647
                                }
4586
 
                                _tmp80_ = vala_list_get (_postcondition_list, _postcondition_index);
4587
 
                                postcondition = (ValaExpression*) _tmp80_;
 
4648
                                _tmp77_ = vala_list_get (_postcondition_list, _postcondition_index);
 
4649
                                postcondition = (ValaExpression*) _tmp77_;
4588
4650
                                vala_ccode_base_module_create_postcondition_statement ((ValaCCodeBaseModule*) self, postcondition);
4589
4651
                                _vala_code_node_unref0 (postcondition);
4590
4652
                        }
4591
4653
                        _vala_iterable_unref0 (_postcondition_list);
4592
4654
                }
4593
4655
                if (!VALA_IS_VOID_TYPE (return_type)) {
4594
 
                        ValaCCodeFunction* _tmp81_ = NULL;
4595
 
                        ValaCCodeIdentifier* _tmp82_ = NULL;
4596
 
                        ValaCCodeIdentifier* _tmp83_;
4597
 
                        _tmp81_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
4598
 
                        _tmp82_ = vala_ccode_identifier_new ("result");
4599
 
                        _tmp83_ = _tmp82_;
4600
 
                        vala_ccode_function_add_return (_tmp81_, (ValaCCodeExpression*) _tmp83_);
4601
 
                        _vala_ccode_node_unref0 (_tmp83_);
 
4656
                        ValaCCodeFunction* _tmp78_ = NULL;
 
4657
                        ValaCCodeIdentifier* _tmp79_ = NULL;
 
4658
                        ValaCCodeIdentifier* _tmp80_;
 
4659
                        _tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
 
4660
                        _tmp79_ = vala_ccode_identifier_new ("result");
 
4661
                        _tmp80_ = _tmp79_;
 
4662
                        vala_ccode_function_add_return (_tmp78_, (ValaCCodeExpression*) _tmp80_);
 
4663
                        _vala_ccode_node_unref0 (_tmp80_);
4602
4664
                }
4603
4665
        }
4604
4666
        vala_ccode_file_add_function (((ValaCCodeBaseModule*) self)->cfile, vfunc);
4801
4863
                _tmp9_ = vala_method_get_cname ((ValaMethod*) m);
4802
4864
                _tmp10_ = _tmp9_;
4803
4865
                _tmp11_ = vala_ccode_function_new (_tmp10_, "void");
4804
 
                vfunc = (_tmp12_ = _tmp11_, _g_free0 (_tmp10_), _tmp12_);
 
4866
                _tmp12_ = _tmp11_;
 
4867
                _g_free0 (_tmp10_);
 
4868
                vfunc = _tmp12_;
4805
4869
                _tmp13_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
4806
4870
                cparam_map = _tmp13_;
4807
4871
                _tmp14_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, g_direct_hash, g_direct_equal, g_direct_equal);
4813
4877
                _tmp18_ = vala_ccode_identifier_new (_tmp17_);
4814
4878
                _tmp19_ = _tmp18_;
4815
4879
                _tmp20_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp19_);
4816
 
                vcall = (_tmp21_ = _tmp20_, _vala_ccode_node_unref0 (_tmp19_), _g_free0 (_tmp17_), _tmp21_);
 
4880
                _tmp21_ = _tmp20_;
 
4881
                _vala_ccode_node_unref0 (_tmp19_);
 
4882
                _g_free0 (_tmp17_);
 
4883
                vcall = _tmp21_;
4817
4884
                _tmp22_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
4818
4885
                _tmp23_ = vala_typesymbol_get_type_id ((ValaTypeSymbol*) _tmp22_);
4819
4886
                _tmp24_ = _tmp23_;