static void vala_dova_array_module_real_visit_element_access (ValaCodeVisitor* base, ValaElementAccess* expr) { ValaDovaArrayModule * self; ValaElementAccess* _tmp0_; ValaList* _tmp1_ = NULL; ValaList* indices; ValaElementAccess* _tmp2_; ValaExpression* _tmp3_; ValaExpression* _tmp4_; ValaCCodeExpression* _tmp5_ = NULL; ValaCCodeExpression* ccontainer; gpointer _tmp6_ = NULL; ValaExpression* _tmp7_; ValaCCodeExpression* _tmp8_ = NULL; ValaCCodeExpression* _tmp9_; ValaCCodeExpression* cindex; ValaElementAccess* _tmp10_; ValaCCodeElementAccess* _tmp11_; ValaCCodeElementAccess* _tmp12_; self = (ValaDovaArrayModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_element_access_get_indices (_tmp0_); indices = _tmp1_; _tmp2_ = expr; _tmp3_ = vala_element_access_get_container (_tmp2_); _tmp4_ = _tmp3_; _tmp5_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp4_); ccontainer = _tmp5_; _tmp6_ = vala_list_get (indices, 0); _tmp7_ = (ValaExpression*) _tmp6_; _tmp8_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp7_); _tmp9_ = _tmp8_; _vala_code_node_unref0 (_tmp7_); cindex = _tmp9_; _tmp10_ = expr; _tmp11_ = vala_ccode_element_access_new (ccontainer, cindex); _tmp12_ = _tmp11_; vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) _tmp10_, (ValaCCodeExpression*) _tmp12_); _vala_ccode_node_unref0 (_tmp12_); _vala_ccode_node_unref0 (cindex); _vala_ccode_node_unref0 (ccontainer); _vala_iterable_unref0 (indices); }
static gboolean vala_addressof_expression_real_check (ValaCodeNode* base, ValaCodeContext* context) { ValaAddressofExpression * self; gboolean result = FALSE; gboolean _tmp0_; gboolean _tmp1_; ValaExpression* _tmp4_; ValaExpression* _tmp5_; ValaExpression* _tmp6_; ValaExpression* _tmp7_; ValaCodeContext* _tmp8_; gboolean _tmp9_ = FALSE; ValaExpression* _tmp10_; ValaExpression* _tmp11_; ValaElementAccess* _tmp12_; ValaElementAccess* ea; gboolean _tmp13_ = FALSE; ValaExpression* _tmp14_; ValaExpression* _tmp15_; gboolean _tmp20_; ValaExpression* _tmp38_; ValaExpression* _tmp39_; ValaDataType* _tmp40_; ValaDataType* _tmp41_; gboolean _tmp42_ = FALSE; gboolean _tmp57_; gboolean _tmp58_; self = (ValaAddressofExpression*) base; g_return_val_if_fail (context != NULL, FALSE); _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self); _tmp1_ = _tmp0_; if (_tmp1_) { gboolean _tmp2_; gboolean _tmp3_; _tmp2_ = vala_code_node_get_error ((ValaCodeNode*) self); _tmp3_ = _tmp2_; result = !_tmp3_; return result; } vala_code_node_set_checked ((ValaCodeNode*) self, TRUE); _tmp4_ = vala_addressof_expression_get_inner (self); _tmp5_ = _tmp4_; vala_expression_set_lvalue (_tmp5_, TRUE); _tmp6_ = vala_addressof_expression_get_inner (self); _tmp7_ = _tmp6_; _tmp8_ = context; _tmp9_ = vala_code_node_check ((ValaCodeNode*) _tmp7_, _tmp8_); if (!_tmp9_) { vala_code_node_set_error ((ValaCodeNode*) self, TRUE); result = FALSE; return result; } _tmp10_ = vala_addressof_expression_get_inner (self); _tmp11_ = _tmp10_; _tmp12_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp11_, VALA_TYPE_ELEMENT_ACCESS) ? ((ValaElementAccess*) _tmp11_) : NULL); ea = _tmp12_; _tmp14_ = vala_addressof_expression_get_inner (self); _tmp15_ = _tmp14_; if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp15_, VALA_TYPE_MEMBER_ACCESS)) { ValaExpression* _tmp16_; ValaExpression* _tmp17_; ValaSymbol* _tmp18_; ValaSymbol* _tmp19_; _tmp16_ = vala_addressof_expression_get_inner (self); _tmp17_ = _tmp16_; _tmp18_ = vala_expression_get_symbol_reference (_tmp17_); _tmp19_ = _tmp18_; _tmp13_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, VALA_TYPE_VARIABLE); } else { _tmp13_ = FALSE; } _tmp20_ = _tmp13_; if (_tmp20_) { } else { gboolean _tmp21_ = FALSE; ValaElementAccess* _tmp22_; gboolean _tmp35_; _tmp22_ = ea; if (_tmp22_ != NULL) { gboolean _tmp23_ = FALSE; ValaElementAccess* _tmp24_; ValaExpression* _tmp25_; ValaExpression* _tmp26_; ValaDataType* _tmp27_; ValaDataType* _tmp28_; gboolean _tmp34_; _tmp24_ = ea; _tmp25_ = vala_element_access_get_container (_tmp24_); _tmp26_ = _tmp25_; _tmp27_ = vala_expression_get_value_type (_tmp26_); _tmp28_ = _tmp27_; if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp28_, VALA_TYPE_ARRAY_TYPE)) { _tmp23_ = TRUE; } else { ValaElementAccess* _tmp29_; ValaExpression* _tmp30_; ValaExpression* _tmp31_; ValaDataType* _tmp32_; ValaDataType* _tmp33_; _tmp29_ = ea; _tmp30_ = vala_element_access_get_container (_tmp29_); _tmp31_ = _tmp30_; _tmp32_ = vala_expression_get_value_type (_tmp31_); _tmp33_ = _tmp32_; _tmp23_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp33_, VALA_TYPE_POINTER_TYPE); } _tmp34_ = _tmp23_; _tmp21_ = _tmp34_; } else { _tmp21_ = FALSE; } _tmp35_ = _tmp21_; if (_tmp35_) { } else { ValaSourceReference* _tmp36_; ValaSourceReference* _tmp37_; vala_code_node_set_error ((ValaCodeNode*) self, TRUE); _tmp36_ = vala_code_node_get_source_reference ((ValaCodeNode*) self); _tmp37_ = _tmp36_; vala_report_error (_tmp37_, "Address-of operator not supported for this expression"); result = FALSE; _vala_code_node_unref0 (ea); return result; } } _tmp38_ = vala_addressof_expression_get_inner (self); _tmp39_ = _tmp38_; _tmp40_ = vala_expression_get_value_type (_tmp39_); _tmp41_ = _tmp40_; _tmp42_ = vala_data_type_is_reference_type_or_type_parameter (_tmp41_); if (_tmp42_) { ValaExpression* _tmp43_; ValaExpression* _tmp44_; ValaDataType* _tmp45_; ValaDataType* _tmp46_; ValaPointerType* _tmp47_; ValaPointerType* _tmp48_; ValaPointerType* _tmp49_; ValaPointerType* _tmp50_; _tmp43_ = vala_addressof_expression_get_inner (self); _tmp44_ = _tmp43_; _tmp45_ = vala_expression_get_value_type (_tmp44_); _tmp46_ = _tmp45_; _tmp47_ = vala_pointer_type_new (_tmp46_, NULL); _tmp48_ = _tmp47_; _tmp49_ = vala_pointer_type_new ((ValaDataType*) _tmp48_, NULL); _tmp50_ = _tmp49_; vala_expression_set_value_type ((ValaExpression*) self, (ValaDataType*) _tmp50_); _vala_code_node_unref0 (_tmp50_); _vala_code_node_unref0 (_tmp48_); } else { ValaExpression* _tmp51_; ValaExpression* _tmp52_; ValaDataType* _tmp53_; ValaDataType* _tmp54_; ValaPointerType* _tmp55_; ValaPointerType* _tmp56_; _tmp51_ = vala_addressof_expression_get_inner (self); _tmp52_ = _tmp51_; _tmp53_ = vala_expression_get_value_type (_tmp52_); _tmp54_ = _tmp53_; _tmp55_ = vala_pointer_type_new (_tmp54_, NULL); _tmp56_ = _tmp55_; vala_expression_set_value_type ((ValaExpression*) self, (ValaDataType*) _tmp56_); _vala_code_node_unref0 (_tmp56_); } _tmp57_ = vala_code_node_get_error ((ValaCodeNode*) self); _tmp58_ = _tmp57_; result = !_tmp58_; _vala_code_node_unref0 (ea); return result; }