static void vala_slice_expression_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection) { ValaSliceExpression * self; ValaExpression* _tmp0_; ValaExpression* _tmp1_; ValaCollection* _tmp2_; ValaExpression* _tmp3_; ValaExpression* _tmp4_; ValaCollection* _tmp5_; ValaExpression* _tmp6_; ValaExpression* _tmp7_; ValaCollection* _tmp8_; self = (ValaSliceExpression*) base; g_return_if_fail (collection != NULL); _tmp0_ = vala_slice_expression_get_container (self); _tmp1_ = _tmp0_; _tmp2_ = collection; vala_code_node_get_used_variables ((ValaCodeNode*) _tmp1_, _tmp2_); _tmp3_ = vala_slice_expression_get_start (self); _tmp4_ = _tmp3_; _tmp5_ = collection; vala_code_node_get_used_variables ((ValaCodeNode*) _tmp4_, _tmp5_); _tmp6_ = vala_slice_expression_get_stop (self); _tmp7_ = _tmp6_; _tmp8_ = collection; vala_code_node_get_used_variables ((ValaCodeNode*) _tmp7_, _tmp8_); }
static void vala_slice_expression_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen) { ValaSliceExpression * self; ValaExpression* _tmp0_; ValaExpression* _tmp1_; ValaCodeGenerator* _tmp2_; ValaExpression* _tmp3_; ValaExpression* _tmp4_; ValaCodeGenerator* _tmp5_; ValaExpression* _tmp6_; ValaExpression* _tmp7_; ValaCodeGenerator* _tmp8_; ValaCodeGenerator* _tmp9_; ValaCodeGenerator* _tmp10_; self = (ValaSliceExpression*) base; g_return_if_fail (codegen != NULL); _tmp0_ = vala_slice_expression_get_container (self); _tmp1_ = _tmp0_; _tmp2_ = codegen; vala_code_node_emit ((ValaCodeNode*) _tmp1_, _tmp2_); _tmp3_ = vala_slice_expression_get_start (self); _tmp4_ = _tmp3_; _tmp5_ = codegen; vala_code_node_emit ((ValaCodeNode*) _tmp4_, _tmp5_); _tmp6_ = vala_slice_expression_get_stop (self); _tmp7_ = _tmp6_; _tmp8_ = codegen; vala_code_node_emit ((ValaCodeNode*) _tmp7_, _tmp8_); _tmp9_ = codegen; vala_code_visitor_visit_slice_expression ((ValaCodeVisitor*) _tmp9_, self); _tmp10_ = codegen; vala_code_visitor_visit_expression ((ValaCodeVisitor*) _tmp10_, (ValaExpression*) self); }
static void vala_slice_expression_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor) { ValaSliceExpression * self; ValaExpression* _tmp0_; ValaExpression* _tmp1_; ValaCodeVisitor* _tmp2_; ValaExpression* _tmp3_; ValaExpression* _tmp4_; ValaCodeVisitor* _tmp5_; ValaExpression* _tmp6_; ValaExpression* _tmp7_; ValaCodeVisitor* _tmp8_; self = (ValaSliceExpression*) base; g_return_if_fail (visitor != NULL); _tmp0_ = vala_slice_expression_get_container (self); _tmp1_ = _tmp0_; _tmp2_ = visitor; vala_code_node_accept ((ValaCodeNode*) _tmp1_, _tmp2_); _tmp3_ = vala_slice_expression_get_start (self); _tmp4_ = _tmp3_; _tmp5_ = visitor; vala_code_node_accept ((ValaCodeNode*) _tmp4_, _tmp5_); _tmp6_ = vala_slice_expression_get_stop (self); _tmp7_ = _tmp6_; _tmp8_ = visitor; vala_code_node_accept ((ValaCodeNode*) _tmp7_, _tmp8_); }
static void vala_slice_expression_real_replace_expression (ValaCodeNode* base, ValaExpression* old_node, ValaExpression* new_node) { ValaSliceExpression * self; ValaExpression* _tmp0_; ValaExpression* _tmp1_; ValaExpression* _tmp2_; ValaExpression* _tmp4_; ValaExpression* _tmp5_; ValaExpression* _tmp6_; ValaExpression* _tmp8_; ValaExpression* _tmp9_; ValaExpression* _tmp10_; self = (ValaSliceExpression*) base; g_return_if_fail (old_node != NULL); g_return_if_fail (new_node != NULL); _tmp0_ = vala_slice_expression_get_container (self); _tmp1_ = _tmp0_; _tmp2_ = old_node; if (_tmp1_ == _tmp2_) { ValaExpression* _tmp3_; _tmp3_ = new_node; vala_slice_expression_set_container (self, _tmp3_); } _tmp4_ = vala_slice_expression_get_start (self); _tmp5_ = _tmp4_; _tmp6_ = old_node; if (_tmp5_ == _tmp6_) { ValaExpression* _tmp7_; _tmp7_ = new_node; vala_slice_expression_set_start (self, _tmp7_); } _tmp8_ = vala_slice_expression_get_stop (self); _tmp9_ = _tmp8_; _tmp10_ = old_node; if (_tmp9_ == _tmp10_) { ValaExpression* _tmp11_; _tmp11_ = new_node; vala_slice_expression_set_stop (self, _tmp11_); } }
static gboolean vala_slice_expression_real_check (ValaCodeNode* base, ValaCodeContext* context) { ValaSliceExpression * self; gboolean result = FALSE; gboolean _tmp0_; gboolean _tmp1_; ValaExpression* _tmp4_; ValaExpression* _tmp5_; ValaCodeContext* _tmp6_; gboolean _tmp7_ = FALSE; ValaExpression* _tmp8_; ValaExpression* _tmp9_; ValaCodeContext* _tmp10_; gboolean _tmp11_ = FALSE; ValaExpression* _tmp12_; ValaExpression* _tmp13_; ValaCodeContext* _tmp14_; gboolean _tmp15_ = FALSE; ValaExpression* _tmp16_; ValaExpression* _tmp17_; ValaDataType* _tmp18_; ValaDataType* _tmp19_; gboolean _tmp24_; gboolean _tmp25_; ValaExpression* _tmp30_; ValaExpression* _tmp31_; ValaDataType* _tmp32_; ValaDataType* _tmp33_; gboolean _tmp107_; gboolean _tmp108_; self = (ValaSliceExpression*) 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_slice_expression_get_container (self); _tmp5_ = _tmp4_; _tmp6_ = context; _tmp7_ = vala_code_node_check ((ValaCodeNode*) _tmp5_, _tmp6_); if (!_tmp7_) { vala_code_node_set_error ((ValaCodeNode*) self, TRUE); result = FALSE; return result; } _tmp8_ = vala_slice_expression_get_start (self); _tmp9_ = _tmp8_; _tmp10_ = context; _tmp11_ = vala_code_node_check ((ValaCodeNode*) _tmp9_, _tmp10_); if (!_tmp11_) { vala_code_node_set_error ((ValaCodeNode*) self, TRUE); result = FALSE; return result; } _tmp12_ = vala_slice_expression_get_stop (self); _tmp13_ = _tmp12_; _tmp14_ = context; _tmp15_ = vala_code_node_check ((ValaCodeNode*) _tmp13_, _tmp14_); if (!_tmp15_) { vala_code_node_set_error ((ValaCodeNode*) self, TRUE); result = FALSE; return result; } _tmp16_ = vala_slice_expression_get_container (self); _tmp17_ = _tmp16_; _tmp18_ = vala_expression_get_value_type (_tmp17_); _tmp19_ = _tmp18_; if (_tmp19_ == NULL) { ValaExpression* _tmp20_; ValaExpression* _tmp21_; ValaSourceReference* _tmp22_; ValaSourceReference* _tmp23_; vala_code_node_set_error ((ValaCodeNode*) self, TRUE); _tmp20_ = vala_slice_expression_get_container (self); _tmp21_ = _tmp20_; _tmp22_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp21_); _tmp23_ = _tmp22_; vala_report_error (_tmp23_, "Invalid container expression"); result = FALSE; return result; } _tmp24_ = vala_expression_get_lvalue ((ValaExpression*) self); _tmp25_ = _tmp24_; if (_tmp25_) { ValaExpression* _tmp26_; ValaExpression* _tmp27_; ValaSourceReference* _tmp28_; ValaSourceReference* _tmp29_; vala_code_node_set_error ((ValaCodeNode*) self, TRUE); _tmp26_ = vala_slice_expression_get_container (self); _tmp27_ = _tmp26_; _tmp28_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp27_); _tmp29_ = _tmp28_; vala_report_error (_tmp29_, "Slice expressions cannot be used as lvalue"); result = FALSE; return result; } _tmp30_ = vala_slice_expression_get_container (self); _tmp31_ = _tmp30_; _tmp32_ = vala_expression_get_value_type (_tmp31_); _tmp33_ = _tmp32_; if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp33_, VALA_TYPE_ARRAY_TYPE)) { ValaExpression* _tmp34_; ValaExpression* _tmp35_; ValaDataType* _tmp36_; ValaDataType* _tmp37_; ValaDataType* _tmp38_ = NULL; ValaDataType* _tmp39_; ValaDataType* _tmp40_; ValaDataType* _tmp41_; gboolean _tmp42_ = FALSE; ValaExpression* _tmp43_; ValaExpression* _tmp44_; ValaDataType* _tmp45_; ValaDataType* _tmp46_; gboolean _tmp51_; gboolean _tmp56_ = FALSE; ValaExpression* _tmp57_; ValaExpression* _tmp58_; ValaDataType* _tmp59_; ValaDataType* _tmp60_; gboolean _tmp65_; _tmp34_ = vala_slice_expression_get_container (self); _tmp35_ = _tmp34_; _tmp36_ = vala_expression_get_value_type (_tmp35_); _tmp37_ = _tmp36_; _tmp38_ = vala_data_type_copy (_tmp37_); _tmp39_ = _tmp38_; vala_expression_set_value_type ((ValaExpression*) self, _tmp39_); _vala_code_node_unref0 (_tmp39_); _tmp40_ = vala_expression_get_value_type ((ValaExpression*) self); _tmp41_ = _tmp40_; vala_data_type_set_value_owned (_tmp41_, FALSE); _tmp43_ = vala_slice_expression_get_start (self); _tmp44_ = _tmp43_; _tmp45_ = vala_expression_get_value_type (_tmp44_); _tmp46_ = _tmp45_; if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp46_, VALA_TYPE_INTEGER_TYPE)) { _tmp42_ = TRUE; } else { ValaExpression* _tmp47_; ValaExpression* _tmp48_; ValaDataType* _tmp49_; ValaDataType* _tmp50_; _tmp47_ = vala_slice_expression_get_start (self); _tmp48_ = _tmp47_; _tmp49_ = vala_expression_get_value_type (_tmp48_); _tmp50_ = _tmp49_; _tmp42_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp50_, VALA_TYPE_ENUM_VALUE_TYPE); } _tmp51_ = _tmp42_; if (!_tmp51_) { ValaExpression* _tmp52_; ValaExpression* _tmp53_; ValaSourceReference* _tmp54_; ValaSourceReference* _tmp55_; vala_code_node_set_error ((ValaCodeNode*) self, TRUE); _tmp52_ = vala_slice_expression_get_start (self); _tmp53_ = _tmp52_; _tmp54_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp53_); _tmp55_ = _tmp54_; vala_report_error (_tmp55_, "Expression of integer type expected"); } _tmp57_ = vala_slice_expression_get_stop (self); _tmp58_ = _tmp57_; _tmp59_ = vala_expression_get_value_type (_tmp58_); _tmp60_ = _tmp59_; if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp60_, VALA_TYPE_INTEGER_TYPE)) { _tmp56_ = TRUE; } else { ValaExpression* _tmp61_; ValaExpression* _tmp62_; ValaDataType* _tmp63_; ValaDataType* _tmp64_; _tmp61_ = vala_slice_expression_get_stop (self); _tmp62_ = _tmp61_; _tmp63_ = vala_expression_get_value_type (_tmp62_); _tmp64_ = _tmp63_; _tmp56_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp64_, VALA_TYPE_ENUM_VALUE_TYPE); } _tmp65_ = _tmp56_; if (!_tmp65_) { ValaExpression* _tmp66_; ValaExpression* _tmp67_; ValaSourceReference* _tmp68_; ValaSourceReference* _tmp69_; vala_code_node_set_error ((ValaCodeNode*) self, TRUE); _tmp66_ = vala_slice_expression_get_stop (self); _tmp67_ = _tmp66_; _tmp68_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp67_); _tmp69_ = _tmp68_; vala_report_error (_tmp69_, "Expression of integer type expected"); } } else { ValaExpression* _tmp70_; ValaExpression* _tmp71_; ValaDataType* _tmp72_; ValaDataType* _tmp73_; ValaSymbol* _tmp74_ = NULL; ValaMethod* slice_method; ValaMethod* _tmp75_; ValaSourceReference* _tmp97_; ValaSourceReference* _tmp98_; ValaExpression* _tmp99_; ValaExpression* _tmp100_; ValaDataType* _tmp101_; ValaDataType* _tmp102_; gchar* _tmp103_ = NULL; gchar* _tmp104_; gchar* _tmp105_ = NULL; gchar* _tmp106_; _tmp70_ = vala_slice_expression_get_container (self); _tmp71_ = _tmp70_; _tmp72_ = vala_expression_get_value_type (_tmp71_); _tmp73_ = _tmp72_; _tmp74_ = vala_data_type_get_member (_tmp73_, "slice"); slice_method = G_TYPE_CHECK_INSTANCE_TYPE (_tmp74_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp74_) : NULL; _tmp75_ = slice_method; if (_tmp75_ != NULL) { ValaExpression* _tmp76_; ValaExpression* _tmp77_; ValaMemberAccess* _tmp78_; ValaMemberAccess* _tmp79_; ValaMethodCall* _tmp80_; ValaMethodCall* _tmp81_; ValaMethodCall* slice_call; ValaMethodCall* _tmp82_; ValaExpression* _tmp83_; ValaExpression* _tmp84_; ValaMethodCall* _tmp85_; ValaExpression* _tmp86_; ValaExpression* _tmp87_; ValaMethodCall* _tmp88_; ValaDataType* _tmp89_; ValaDataType* _tmp90_; ValaCodeNode* _tmp91_; ValaCodeNode* _tmp92_; ValaMethodCall* _tmp93_; ValaMethodCall* _tmp94_; ValaCodeContext* _tmp95_; gboolean _tmp96_ = FALSE; _tmp76_ = vala_slice_expression_get_container (self); _tmp77_ = _tmp76_; _tmp78_ = vala_member_access_new (_tmp77_, "slice", NULL); _tmp79_ = _tmp78_; _tmp80_ = vala_method_call_new ((ValaExpression*) _tmp79_, NULL); _tmp81_ = _tmp80_; _vala_code_node_unref0 (_tmp79_); slice_call = _tmp81_; _tmp82_ = slice_call; _tmp83_ = vala_slice_expression_get_start (self); _tmp84_ = _tmp83_; vala_method_call_add_argument (_tmp82_, _tmp84_); _tmp85_ = slice_call; _tmp86_ = vala_slice_expression_get_stop (self); _tmp87_ = _tmp86_; vala_method_call_add_argument (_tmp85_, _tmp87_); _tmp88_ = slice_call; _tmp89_ = vala_expression_get_target_type ((ValaExpression*) self); _tmp90_ = _tmp89_; vala_expression_set_target_type ((ValaExpression*) _tmp88_, _tmp90_); _tmp91_ = vala_code_node_get_parent_node ((ValaCodeNode*) self); _tmp92_ = _tmp91_; _tmp93_ = slice_call; vala_code_node_replace_expression (_tmp92_, (ValaExpression*) self, (ValaExpression*) _tmp93_); _tmp94_ = slice_call; _tmp95_ = context; _tmp96_ = vala_code_node_check ((ValaCodeNode*) _tmp94_, _tmp95_); result = _tmp96_; _vala_code_node_unref0 (slice_call); _vala_code_node_unref0 (slice_method); return result; } vala_code_node_set_error ((ValaCodeNode*) self, TRUE); _tmp97_ = vala_code_node_get_source_reference ((ValaCodeNode*) self); _tmp98_ = _tmp97_; _tmp99_ = vala_slice_expression_get_container (self); _tmp100_ = _tmp99_; _tmp101_ = vala_expression_get_value_type (_tmp100_); _tmp102_ = _tmp101_; _tmp103_ = vala_code_node_to_string ((ValaCodeNode*) _tmp102_); _tmp104_ = _tmp103_; _tmp105_ = g_strdup_printf ("The expression `%s' does not denote an array", _tmp104_); _tmp106_ = _tmp105_; vala_report_error (_tmp98_, _tmp106_); _g_free0 (_tmp106_); _g_free0 (_tmp104_); _vala_code_node_unref0 (slice_method); } _tmp107_ = vala_code_node_get_error ((ValaCodeNode*) self); _tmp108_ = _tmp107_; result = !_tmp108_; return result; }
static void vala_dova_array_module_real_visit_slice_expression (ValaCodeVisitor* base, ValaSliceExpression* expr) { ValaDovaArrayModule * self; ValaSliceExpression* _tmp0_; ValaExpression* _tmp1_; ValaExpression* _tmp2_; ValaCCodeExpression* _tmp3_ = NULL; ValaCCodeExpression* ccontainer; ValaSliceExpression* _tmp4_; ValaExpression* _tmp5_; ValaExpression* _tmp6_; ValaCCodeExpression* _tmp7_ = NULL; ValaCCodeExpression* cstart; ValaSliceExpression* _tmp8_; ValaExpression* _tmp9_; ValaExpression* _tmp10_; ValaCCodeExpression* _tmp11_ = NULL; ValaCCodeExpression* cstop; ValaSliceExpression* _tmp12_; ValaExpression* _tmp13_; ValaExpression* _tmp14_; ValaDataType* _tmp15_; ValaDataType* _tmp16_; ValaArrayType* _tmp17_; ValaArrayType* array_type; ValaCCodeIdentifier* _tmp18_; ValaCCodeIdentifier* _tmp19_; ValaCCodeFunctionCall* _tmp20_; ValaCCodeFunctionCall* _tmp21_; ValaCCodeFunctionCall* array; ValaCCodeMemberAccess* _tmp22_; ValaCCodeMemberAccess* _tmp23_; ValaDataType* _tmp24_; ValaDataType* _tmp25_; gchar* _tmp26_ = NULL; gchar* _tmp27_; gchar* _tmp28_; gchar* _tmp29_; ValaCCodeCastExpression* _tmp30_; ValaCCodeCastExpression* _tmp31_; ValaCCodeBinaryExpression* _tmp32_; ValaCCodeBinaryExpression* _tmp33_; ValaCCodeBinaryExpression* _tmp34_; ValaCCodeBinaryExpression* _tmp35_; ValaSliceExpression* _tmp36_; self = (ValaDovaArrayModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_slice_expression_get_container (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp2_); ccontainer = _tmp3_; _tmp4_ = expr; _tmp5_ = vala_slice_expression_get_start (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp6_); cstart = _tmp7_; _tmp8_ = expr; _tmp9_ = vala_slice_expression_get_stop (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp10_); cstop = _tmp11_; _tmp12_ = expr; _tmp13_ = vala_slice_expression_get_container (_tmp12_); _tmp14_ = _tmp13_; _tmp15_ = vala_expression_get_value_type (_tmp14_); _tmp16_ = _tmp15_; _tmp17_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp16_)); array_type = _tmp17_; _tmp18_ = vala_ccode_identifier_new ("dova_array"); _tmp19_ = _tmp18_; _tmp20_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp19_); _tmp21_ = _tmp20_; _vala_ccode_node_unref0 (_tmp19_); array = _tmp21_; _tmp22_ = vala_ccode_member_access_new (ccontainer, "data", FALSE); _tmp23_ = _tmp22_; _tmp24_ = vala_array_type_get_element_type (array_type); _tmp25_ = _tmp24_; _tmp26_ = vala_dova_base_module_get_ccode_name ((ValaDovaBaseModule*) self, (ValaCodeNode*) _tmp25_); _tmp27_ = _tmp26_; _tmp28_ = g_strconcat (_tmp27_, "*", NULL); _tmp29_ = _tmp28_; _tmp30_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp23_, _tmp29_); _tmp31_ = _tmp30_; _tmp32_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_PLUS, (ValaCCodeExpression*) _tmp31_, cstart); _tmp33_ = _tmp32_; vala_ccode_function_call_add_argument (array, (ValaCCodeExpression*) _tmp33_); _vala_ccode_node_unref0 (_tmp33_); _vala_ccode_node_unref0 (_tmp31_); _g_free0 (_tmp29_); _g_free0 (_tmp27_); _vala_ccode_node_unref0 (_tmp23_); _tmp34_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MINUS, cstop, cstart); _tmp35_ = _tmp34_; vala_ccode_function_call_add_argument (array, (ValaCCodeExpression*) _tmp35_); _vala_ccode_node_unref0 (_tmp35_); _tmp36_ = expr; vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) _tmp36_, (ValaCCodeExpression*) array); _vala_ccode_node_unref0 (array); _vala_code_node_unref0 (array_type); _vala_ccode_node_unref0 (cstop); _vala_ccode_node_unref0 (cstart); _vala_ccode_node_unref0 (ccontainer); }