/* valadovaarraymodule.c generated by valac, the Vala compiler * generated from valadovaarraymodule.vala, do not modify */ /* valadovaarraymodule.vala * * Copyright (C) 2006-2011 Jürg Billeter * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Author: * Jürg Billeter */ #include #include #include #include #include #include #include #define VALA_TYPE_DOVA_BASE_MODULE (vala_dova_base_module_get_type ()) #define VALA_DOVA_BASE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_BASE_MODULE, ValaDovaBaseModule)) #define VALA_DOVA_BASE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_BASE_MODULE, ValaDovaBaseModuleClass)) #define VALA_IS_DOVA_BASE_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_BASE_MODULE)) #define VALA_IS_DOVA_BASE_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_BASE_MODULE)) #define VALA_DOVA_BASE_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_BASE_MODULE, ValaDovaBaseModuleClass)) typedef struct _ValaDovaBaseModule ValaDovaBaseModule; typedef struct _ValaDovaBaseModuleClass ValaDovaBaseModuleClass; typedef struct _ValaDovaBaseModulePrivate ValaDovaBaseModulePrivate; #define VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT (vala_dova_base_module_emit_context_get_type ()) #define VALA_DOVA_BASE_MODULE_EMIT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaDovaBaseModuleEmitContext)) #define VALA_DOVA_BASE_MODULE_EMIT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaDovaBaseModuleEmitContextClass)) #define VALA_DOVA_BASE_MODULE_IS_EMIT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT)) #define VALA_DOVA_BASE_MODULE_IS_EMIT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT)) #define VALA_DOVA_BASE_MODULE_EMIT_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_DOVA_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaDovaBaseModuleEmitContextClass)) typedef struct _ValaDovaBaseModuleEmitContext ValaDovaBaseModuleEmitContext; typedef struct _ValaDovaBaseModuleEmitContextClass ValaDovaBaseModuleEmitContextClass; #define VALA_TYPE_DOVA_STRUCT_MODULE (vala_dova_struct_module_get_type ()) #define VALA_DOVA_STRUCT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_STRUCT_MODULE, ValaDovaStructModule)) #define VALA_DOVA_STRUCT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_STRUCT_MODULE, ValaDovaStructModuleClass)) #define VALA_IS_DOVA_STRUCT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_STRUCT_MODULE)) #define VALA_IS_DOVA_STRUCT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_STRUCT_MODULE)) #define VALA_DOVA_STRUCT_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_STRUCT_MODULE, ValaDovaStructModuleClass)) typedef struct _ValaDovaStructModule ValaDovaStructModule; typedef struct _ValaDovaStructModuleClass ValaDovaStructModuleClass; typedef struct _ValaDovaStructModulePrivate ValaDovaStructModulePrivate; #define VALA_TYPE_DOVA_METHOD_MODULE (vala_dova_method_module_get_type ()) #define VALA_DOVA_METHOD_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_METHOD_MODULE, ValaDovaMethodModule)) #define VALA_DOVA_METHOD_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_METHOD_MODULE, ValaDovaMethodModuleClass)) #define VALA_IS_DOVA_METHOD_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_METHOD_MODULE)) #define VALA_IS_DOVA_METHOD_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_METHOD_MODULE)) #define VALA_DOVA_METHOD_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_METHOD_MODULE, ValaDovaMethodModuleClass)) typedef struct _ValaDovaMethodModule ValaDovaMethodModule; typedef struct _ValaDovaMethodModuleClass ValaDovaMethodModuleClass; typedef struct _ValaDovaMethodModulePrivate ValaDovaMethodModulePrivate; #define VALA_TYPE_DOVA_CONTROL_FLOW_MODULE (vala_dova_control_flow_module_get_type ()) #define VALA_DOVA_CONTROL_FLOW_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_CONTROL_FLOW_MODULE, ValaDovaControlFlowModule)) #define VALA_DOVA_CONTROL_FLOW_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_CONTROL_FLOW_MODULE, ValaDovaControlFlowModuleClass)) #define VALA_IS_DOVA_CONTROL_FLOW_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_CONTROL_FLOW_MODULE)) #define VALA_IS_DOVA_CONTROL_FLOW_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_CONTROL_FLOW_MODULE)) #define VALA_DOVA_CONTROL_FLOW_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_CONTROL_FLOW_MODULE, ValaDovaControlFlowModuleClass)) typedef struct _ValaDovaControlFlowModule ValaDovaControlFlowModule; typedef struct _ValaDovaControlFlowModuleClass ValaDovaControlFlowModuleClass; typedef struct _ValaDovaControlFlowModulePrivate ValaDovaControlFlowModulePrivate; #define VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE (vala_dova_member_access_module_get_type ()) #define VALA_DOVA_MEMBER_ACCESS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE, ValaDovaMemberAccessModule)) #define VALA_DOVA_MEMBER_ACCESS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE, ValaDovaMemberAccessModuleClass)) #define VALA_IS_DOVA_MEMBER_ACCESS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE)) #define VALA_IS_DOVA_MEMBER_ACCESS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE)) #define VALA_DOVA_MEMBER_ACCESS_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_MEMBER_ACCESS_MODULE, ValaDovaMemberAccessModuleClass)) typedef struct _ValaDovaMemberAccessModule ValaDovaMemberAccessModule; typedef struct _ValaDovaMemberAccessModuleClass ValaDovaMemberAccessModuleClass; typedef struct _ValaDovaMemberAccessModulePrivate ValaDovaMemberAccessModulePrivate; #define VALA_TYPE_DOVA_ASSIGNMENT_MODULE (vala_dova_assignment_module_get_type ()) #define VALA_DOVA_ASSIGNMENT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_ASSIGNMENT_MODULE, ValaDovaAssignmentModule)) #define VALA_DOVA_ASSIGNMENT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_ASSIGNMENT_MODULE, ValaDovaAssignmentModuleClass)) #define VALA_IS_DOVA_ASSIGNMENT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_ASSIGNMENT_MODULE)) #define VALA_IS_DOVA_ASSIGNMENT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_ASSIGNMENT_MODULE)) #define VALA_DOVA_ASSIGNMENT_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_ASSIGNMENT_MODULE, ValaDovaAssignmentModuleClass)) typedef struct _ValaDovaAssignmentModule ValaDovaAssignmentModule; typedef struct _ValaDovaAssignmentModuleClass ValaDovaAssignmentModuleClass; typedef struct _ValaDovaAssignmentModulePrivate ValaDovaAssignmentModulePrivate; #define VALA_TYPE_DOVA_METHOD_CALL_MODULE (vala_dova_method_call_module_get_type ()) #define VALA_DOVA_METHOD_CALL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_METHOD_CALL_MODULE, ValaDovaMethodCallModule)) #define VALA_DOVA_METHOD_CALL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_METHOD_CALL_MODULE, ValaDovaMethodCallModuleClass)) #define VALA_IS_DOVA_METHOD_CALL_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_METHOD_CALL_MODULE)) #define VALA_IS_DOVA_METHOD_CALL_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_METHOD_CALL_MODULE)) #define VALA_DOVA_METHOD_CALL_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_METHOD_CALL_MODULE, ValaDovaMethodCallModuleClass)) typedef struct _ValaDovaMethodCallModule ValaDovaMethodCallModule; typedef struct _ValaDovaMethodCallModuleClass ValaDovaMethodCallModuleClass; typedef struct _ValaDovaMethodCallModulePrivate ValaDovaMethodCallModulePrivate; #define VALA_TYPE_DOVA_ARRAY_MODULE (vala_dova_array_module_get_type ()) #define VALA_DOVA_ARRAY_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DOVA_ARRAY_MODULE, ValaDovaArrayModule)) #define VALA_DOVA_ARRAY_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DOVA_ARRAY_MODULE, ValaDovaArrayModuleClass)) #define VALA_IS_DOVA_ARRAY_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DOVA_ARRAY_MODULE)) #define VALA_IS_DOVA_ARRAY_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DOVA_ARRAY_MODULE)) #define VALA_DOVA_ARRAY_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DOVA_ARRAY_MODULE, ValaDovaArrayModuleClass)) typedef struct _ValaDovaArrayModule ValaDovaArrayModule; typedef struct _ValaDovaArrayModuleClass ValaDovaArrayModuleClass; typedef struct _ValaDovaArrayModulePrivate ValaDovaArrayModulePrivate; #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL))) #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL))) struct _ValaDovaBaseModule { ValaCodeGenerator parent_instance; ValaDovaBaseModulePrivate * priv; ValaSymbol* root_symbol; ValaDovaBaseModuleEmitContext* emit_context; ValaCCodeFile* header_file; ValaCCodeFile* cfile; ValaList* static_fields; gint next_wrapper_id; ValaDataType* void_type; ValaDataType* bool_type; ValaDataType* char_type; ValaDataType* int_type; ValaDataType* uint_type; ValaDataType* string_type; ValaClass* object_class; ValaClass* type_class; ValaClass* value_class; ValaClass* string_class; ValaStruct* array_struct; ValaClass* delegate_class; ValaClass* error_class; }; struct _ValaDovaBaseModuleClass { ValaCodeGeneratorClass parent_class; void (*generate_struct_declaration) (ValaDovaBaseModule* self, ValaStruct* st, ValaCCodeFile* decl_space); void (*generate_delegate_declaration) (ValaDovaBaseModule* self, ValaDelegate* d, ValaCCodeFile* decl_space); void (*generate_cparameters) (ValaDovaBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaCCodeFunctionCall* vcall); void (*generate_property_accessor_declaration) (ValaDovaBaseModule* self, ValaPropertyAccessor* acc, ValaCCodeFile* decl_space); ValaCCodeExpression* (*get_dup_func_expression) (ValaDovaBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup); void (*append_local_free) (ValaDovaBaseModule* self, ValaSymbol* sym, gboolean stop_at_loop, ValaCodeNode* stop_at); ValaCCodeExpression* (*get_ref_cexpression) (ValaDovaBaseModule* self, ValaDataType* expression_type, ValaCCodeExpression* cexpr, ValaExpression* expr, ValaCodeNode* node); void (*generate_class_declaration) (ValaDovaBaseModule* self, ValaClass* cl, ValaCCodeFile* decl_space); void (*generate_interface_declaration) (ValaDovaBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space); void (*generate_method_declaration) (ValaDovaBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space); ValaCCodeExpression* (*get_implicit_cast_expression) (ValaDovaBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaExpression* expr); gchar* (*get_custom_creturn_type) (ValaDovaBaseModule* self, ValaMethod* m); gboolean (*method_has_wrapper) (ValaDovaBaseModule* self, ValaMethod* method); void (*add_simple_check) (ValaDovaBaseModule* self, ValaCodeNode* node, gboolean always_fails); }; struct _ValaDovaStructModule { ValaDovaBaseModule parent_instance; ValaDovaStructModulePrivate * priv; }; struct _ValaDovaStructModuleClass { ValaDovaBaseModuleClass parent_class; }; struct _ValaDovaMethodModule { ValaDovaStructModule parent_instance; ValaDovaMethodModulePrivate * priv; }; struct _ValaDovaMethodModuleClass { ValaDovaStructModuleClass parent_class; }; struct _ValaDovaControlFlowModule { ValaDovaMethodModule parent_instance; ValaDovaControlFlowModulePrivate * priv; }; struct _ValaDovaControlFlowModuleClass { ValaDovaMethodModuleClass parent_class; }; struct _ValaDovaMemberAccessModule { ValaDovaControlFlowModule parent_instance; ValaDovaMemberAccessModulePrivate * priv; }; struct _ValaDovaMemberAccessModuleClass { ValaDovaControlFlowModuleClass parent_class; }; struct _ValaDovaAssignmentModule { ValaDovaMemberAccessModule parent_instance; ValaDovaAssignmentModulePrivate * priv; }; struct _ValaDovaAssignmentModuleClass { ValaDovaMemberAccessModuleClass parent_class; void (*store_variable) (ValaDovaAssignmentModule* self, ValaVariable* variable, ValaTargetValue* lvalue, ValaTargetValue* value, gboolean initializer); }; struct _ValaDovaMethodCallModule { ValaDovaAssignmentModule parent_instance; ValaDovaMethodCallModulePrivate * priv; }; struct _ValaDovaMethodCallModuleClass { ValaDovaAssignmentModuleClass parent_class; }; struct _ValaDovaArrayModule { ValaDovaMethodCallModule parent_instance; ValaDovaArrayModulePrivate * priv; }; struct _ValaDovaArrayModuleClass { ValaDovaMethodCallModuleClass parent_class; }; static gpointer vala_dova_array_module_parent_class = NULL; GType vala_dova_base_module_get_type (void) G_GNUC_CONST; gpointer vala_dova_base_module_emit_context_ref (gpointer instance); void vala_dova_base_module_emit_context_unref (gpointer instance); GParamSpec* vala_dova_base_module_param_spec_emit_context (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void vala_dova_base_module_value_set_emit_context (GValue* value, gpointer v_object); void vala_dova_base_module_value_take_emit_context (GValue* value, gpointer v_object); gpointer vala_dova_base_module_value_get_emit_context (const GValue* value); GType vala_dova_base_module_emit_context_get_type (void) G_GNUC_CONST; GType vala_dova_struct_module_get_type (void) G_GNUC_CONST; GType vala_dova_method_module_get_type (void) G_GNUC_CONST; GType vala_dova_control_flow_module_get_type (void) G_GNUC_CONST; GType vala_dova_member_access_module_get_type (void) G_GNUC_CONST; GType vala_dova_assignment_module_get_type (void) G_GNUC_CONST; GType vala_dova_method_call_module_get_type (void) G_GNUC_CONST; GType vala_dova_array_module_get_type (void) G_GNUC_CONST; enum { VALA_DOVA_ARRAY_MODULE_DUMMY_PROPERTY }; static void vala_dova_array_module_append_initializer_list (ValaDovaArrayModule* self, ValaCCodeExpression* name_cnode, ValaInitializerList* initializer_list, gint* i); ValaCCodeFunction* vala_dova_base_module_get_ccode (ValaDovaBaseModule* self); ValaCCodeExpression* vala_dova_base_module_get_cvalue (ValaDovaBaseModule* self, ValaExpression* expr); static void vala_dova_array_module_real_visit_array_creation_expression (ValaCodeVisitor* base, ValaArrayCreationExpression* expr); ValaLocalVariable* vala_dova_base_module_get_temp_variable (ValaDovaBaseModule* self, ValaDataType* type, gboolean value_owned, ValaCodeNode* node_reference); void vala_dova_base_module_emit_temp_var (ValaDovaBaseModule* self, ValaLocalVariable* local); void vala_dova_base_module_set_cvalue (ValaDovaBaseModule* self, ValaExpression* expr, ValaCCodeExpression* cvalue); void vala_dova_base_module_generate_method_declaration (ValaDovaBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space); ValaCCodeExpression* vala_dova_base_module_get_type_id_expression (ValaDovaBaseModule* self, ValaDataType* type, gboolean is_chainup); ValaCCodeExpression* vala_dova_base_module_get_variable_cexpression (ValaDovaBaseModule* self, const gchar* name); static void vala_dova_array_module_real_visit_element_access (ValaCodeVisitor* base, ValaElementAccess* expr); static void vala_dova_array_module_real_visit_slice_expression (ValaCodeVisitor* base, ValaSliceExpression* expr); gchar* vala_dova_base_module_get_ccode_name (ValaDovaBaseModule* self, ValaCodeNode* node); ValaDovaArrayModule* vala_dova_array_module_new (void); ValaDovaArrayModule* vala_dova_array_module_construct (GType object_type); ValaDovaMethodCallModule* vala_dova_method_call_module_new (void); ValaDovaMethodCallModule* vala_dova_method_call_module_construct (GType object_type); static void vala_dova_array_module_append_initializer_list (ValaDovaArrayModule* self, ValaCCodeExpression* name_cnode, ValaInitializerList* initializer_list, gint* i) { g_return_if_fail (self != NULL); g_return_if_fail (name_cnode != NULL); g_return_if_fail (initializer_list != NULL); { ValaInitializerList* _tmp0_; ValaList* _tmp1_ = NULL; ValaList* _e_list; ValaList* _tmp2_; gint _tmp3_; gint _tmp4_; gint _e_size; gint _e_index; _tmp0_ = initializer_list; _tmp1_ = vala_initializer_list_get_initializers (_tmp0_); _e_list = _tmp1_; _tmp2_ = _e_list; _tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_); _tmp4_ = _tmp3_; _e_size = _tmp4_; _e_index = -1; while (TRUE) { gint _tmp5_; gint _tmp6_; gint _tmp7_; ValaList* _tmp8_; gint _tmp9_; gpointer _tmp10_ = NULL; ValaExpression* e; ValaCCodeFunction* _tmp11_; ValaCCodeFunction* _tmp12_; ValaCCodeExpression* _tmp13_; gint _tmp14_; gchar* _tmp15_ = NULL; gchar* _tmp16_; ValaCCodeConstant* _tmp17_; ValaCCodeConstant* _tmp18_; ValaCCodeElementAccess* _tmp19_; ValaCCodeElementAccess* _tmp20_; ValaExpression* _tmp21_; ValaCCodeExpression* _tmp22_ = NULL; ValaCCodeExpression* _tmp23_; gint _tmp24_; _tmp5_ = _e_index; _e_index = _tmp5_ + 1; _tmp6_ = _e_index; _tmp7_ = _e_size; if (!(_tmp6_ < _tmp7_)) { break; } _tmp8_ = _e_list; _tmp9_ = _e_index; _tmp10_ = vala_list_get (_tmp8_, _tmp9_); e = (ValaExpression*) _tmp10_; _tmp11_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp12_ = _tmp11_; _tmp13_ = name_cnode; _tmp14_ = *i; _tmp15_ = g_strdup_printf ("%i", _tmp14_); _tmp16_ = _tmp15_; _tmp17_ = vala_ccode_constant_new (_tmp16_); _tmp18_ = _tmp17_; _tmp19_ = vala_ccode_element_access_new (_tmp13_, (ValaCCodeExpression*) _tmp18_); _tmp20_ = _tmp19_; _tmp21_ = e; _tmp22_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp21_); _tmp23_ = _tmp22_; vala_ccode_function_add_assignment (_tmp12_, (ValaCCodeExpression*) _tmp20_, _tmp23_); _vala_ccode_node_unref0 (_tmp23_); _vala_ccode_node_unref0 (_tmp20_); _vala_ccode_node_unref0 (_tmp18_); _g_free0 (_tmp16_); _tmp24_ = *i; *i = _tmp24_ + 1; _vala_code_node_unref0 (e); } _vala_iterable_unref0 (_e_list); } } static gpointer _vala_code_node_ref0 (gpointer self) { return self ? vala_code_node_ref (self) : NULL; } static void vala_dova_array_module_real_visit_array_creation_expression (ValaCodeVisitor* base, ValaArrayCreationExpression* expr) { ValaDovaArrayModule * self; ValaArrayCreationExpression* _tmp0_; ValaDataType* _tmp1_; ValaDataType* _tmp2_; ValaArrayType* _tmp3_; ValaArrayType* array_type; gboolean _tmp4_ = FALSE; ValaArrayType* _tmp5_; gboolean _tmp9_; ValaStruct* _tmp24_; ValaScope* _tmp25_; ValaScope* _tmp26_; ValaSymbol* _tmp27_ = NULL; ValaMethod* _tmp28_; ValaCCodeFile* _tmp29_; ValaCCodeIdentifier* _tmp30_; ValaCCodeIdentifier* _tmp31_; ValaCCodeFunctionCall* _tmp32_; ValaCCodeFunctionCall* _tmp33_; ValaCCodeFunctionCall* array_new; ValaCCodeFunctionCall* _tmp34_; ValaArrayCreationExpression* _tmp35_; ValaDataType* _tmp36_; ValaDataType* _tmp37_; ValaCCodeExpression* _tmp38_ = NULL; ValaCCodeExpression* _tmp39_; ValaCCodeFunctionCall* _tmp40_; ValaArrayCreationExpression* _tmp41_; ValaList* _tmp42_ = NULL; ValaList* _tmp43_; gpointer _tmp44_ = NULL; ValaExpression* _tmp45_; ValaCCodeExpression* _tmp46_ = NULL; ValaCCodeExpression* _tmp47_; ValaArrayCreationExpression* _tmp48_; ValaDataType* _tmp49_; ValaDataType* _tmp50_; ValaArrayCreationExpression* _tmp51_; ValaLocalVariable* _tmp52_ = NULL; ValaLocalVariable* temp_var; ValaLocalVariable* _tmp53_; const gchar* _tmp54_; const gchar* _tmp55_; ValaCCodeExpression* _tmp56_ = NULL; ValaCCodeExpression* name_cnode; ValaLocalVariable* _tmp57_; ValaCCodeFunction* _tmp58_; ValaCCodeFunction* _tmp59_; ValaCCodeExpression* _tmp60_; ValaCCodeFunctionCall* _tmp61_; ValaArrayCreationExpression* _tmp62_; ValaCCodeExpression* _tmp63_; self = (ValaDovaArrayModule*) base; g_return_if_fail (expr != NULL); _tmp0_ = expr; _tmp1_ = vala_expression_get_target_type ((ValaExpression*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = _vala_code_node_ref0 (VALA_IS_ARRAY_TYPE (_tmp2_) ? ((ValaArrayType*) _tmp2_) : NULL); array_type = _tmp3_; _tmp5_ = array_type; if (_tmp5_ != NULL) { ValaArrayType* _tmp6_; gboolean _tmp7_; gboolean _tmp8_; _tmp6_ = array_type; _tmp7_ = vala_array_type_get_fixed_length (_tmp6_); _tmp8_ = _tmp7_; _tmp4_ = _tmp8_; } else { _tmp4_ = FALSE; } _tmp9_ = _tmp4_; if (_tmp9_) { ValaArrayType* _tmp10_; ValaArrayCreationExpression* _tmp11_; ValaLocalVariable* _tmp12_ = NULL; ValaLocalVariable* temp_var; ValaLocalVariable* _tmp13_; const gchar* _tmp14_; const gchar* _tmp15_; ValaCCodeIdentifier* _tmp16_; ValaCCodeIdentifier* name_cnode; gint i; ValaLocalVariable* _tmp17_; ValaCCodeIdentifier* _tmp18_; ValaArrayCreationExpression* _tmp19_; ValaInitializerList* _tmp20_; ValaInitializerList* _tmp21_; ValaArrayCreationExpression* _tmp22_; ValaCCodeIdentifier* _tmp23_; _tmp10_ = array_type; _tmp11_ = expr; _tmp12_ = vala_dova_base_module_get_temp_variable ((ValaDovaBaseModule*) self, (ValaDataType*) _tmp10_, TRUE, (ValaCodeNode*) _tmp11_); temp_var = _tmp12_; _tmp13_ = temp_var; _tmp14_ = vala_symbol_get_name ((ValaSymbol*) _tmp13_); _tmp15_ = _tmp14_; _tmp16_ = vala_ccode_identifier_new (_tmp15_); name_cnode = _tmp16_; i = 0; _tmp17_ = temp_var; vala_dova_base_module_emit_temp_var ((ValaDovaBaseModule*) self, _tmp17_); _tmp18_ = name_cnode; _tmp19_ = expr; _tmp20_ = vala_array_creation_expression_get_initializer_list (_tmp19_); _tmp21_ = _tmp20_; vala_dova_array_module_append_initializer_list (self, (ValaCCodeExpression*) _tmp18_, _tmp21_, &i); _tmp22_ = expr; _tmp23_ = name_cnode; vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) _tmp22_, (ValaCCodeExpression*) _tmp23_); _vala_ccode_node_unref0 (name_cnode); _vala_code_node_unref0 (temp_var); _vala_code_node_unref0 (array_type); return; } _tmp24_ = ((ValaDovaBaseModule*) self)->array_struct; _tmp25_ = vala_symbol_get_scope ((ValaSymbol*) _tmp24_); _tmp26_ = _tmp25_; _tmp27_ = vala_scope_lookup (_tmp26_, "create"); _tmp28_ = VALA_METHOD (_tmp27_); _tmp29_ = ((ValaDovaBaseModule*) self)->cfile; vala_dova_base_module_generate_method_declaration ((ValaDovaBaseModule*) self, _tmp28_, _tmp29_); _vala_code_node_unref0 (_tmp28_); _tmp30_ = vala_ccode_identifier_new ("dova_array_create"); _tmp31_ = _tmp30_; _tmp32_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp31_); _tmp33_ = _tmp32_; _vala_ccode_node_unref0 (_tmp31_); array_new = _tmp33_; _tmp34_ = array_new; _tmp35_ = expr; _tmp36_ = vala_array_creation_expression_get_element_type (_tmp35_); _tmp37_ = _tmp36_; _tmp38_ = vala_dova_base_module_get_type_id_expression ((ValaDovaBaseModule*) self, _tmp37_, FALSE); _tmp39_ = _tmp38_; vala_ccode_function_call_add_argument (_tmp34_, _tmp39_); _vala_ccode_node_unref0 (_tmp39_); _tmp40_ = array_new; _tmp41_ = expr; _tmp42_ = vala_array_creation_expression_get_sizes (_tmp41_); _tmp43_ = _tmp42_; _tmp44_ = vala_list_get (_tmp43_, 0); _tmp45_ = (ValaExpression*) _tmp44_; _tmp46_ = vala_dova_base_module_get_cvalue ((ValaDovaBaseModule*) self, _tmp45_); _tmp47_ = _tmp46_; vala_ccode_function_call_add_argument (_tmp40_, _tmp47_); _vala_ccode_node_unref0 (_tmp47_); _vala_code_node_unref0 (_tmp45_); _vala_iterable_unref0 (_tmp43_); _tmp48_ = expr; _tmp49_ = vala_expression_get_value_type ((ValaExpression*) _tmp48_); _tmp50_ = _tmp49_; _tmp51_ = expr; _tmp52_ = vala_dova_base_module_get_temp_variable ((ValaDovaBaseModule*) self, _tmp50_, TRUE, (ValaCodeNode*) _tmp51_); temp_var = _tmp52_; _tmp53_ = temp_var; _tmp54_ = vala_symbol_get_name ((ValaSymbol*) _tmp53_); _tmp55_ = _tmp54_; _tmp56_ = vala_dova_base_module_get_variable_cexpression ((ValaDovaBaseModule*) self, _tmp55_); name_cnode = _tmp56_; _tmp57_ = temp_var; vala_dova_base_module_emit_temp_var ((ValaDovaBaseModule*) self, _tmp57_); _tmp58_ = vala_dova_base_module_get_ccode ((ValaDovaBaseModule*) self); _tmp59_ = _tmp58_; _tmp60_ = name_cnode; _tmp61_ = array_new; vala_ccode_function_add_assignment (_tmp59_, _tmp60_, (ValaCCodeExpression*) _tmp61_); _tmp62_ = expr; _tmp63_ = name_cnode; vala_dova_base_module_set_cvalue ((ValaDovaBaseModule*) self, (ValaExpression*) _tmp62_, _tmp63_); _vala_ccode_node_unref0 (name_cnode); _vala_code_node_unref0 (temp_var); _vala_ccode_node_unref0 (array_new); _vala_code_node_unref0 (array_type); } 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 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); } ValaDovaArrayModule* vala_dova_array_module_construct (GType object_type) { ValaDovaArrayModule* self = NULL; self = (ValaDovaArrayModule*) vala_dova_method_call_module_construct (object_type); return self; } ValaDovaArrayModule* vala_dova_array_module_new (void) { return vala_dova_array_module_construct (VALA_TYPE_DOVA_ARRAY_MODULE); } static void vala_dova_array_module_class_init (ValaDovaArrayModuleClass * klass) { vala_dova_array_module_parent_class = g_type_class_peek_parent (klass); VALA_CODE_VISITOR_CLASS (klass)->visit_array_creation_expression = vala_dova_array_module_real_visit_array_creation_expression; VALA_CODE_VISITOR_CLASS (klass)->visit_element_access = vala_dova_array_module_real_visit_element_access; VALA_CODE_VISITOR_CLASS (klass)->visit_slice_expression = vala_dova_array_module_real_visit_slice_expression; } static void vala_dova_array_module_instance_init (ValaDovaArrayModule * self) { } GType vala_dova_array_module_get_type (void) { static volatile gsize vala_dova_array_module_type_id__volatile = 0; if (g_once_init_enter (&vala_dova_array_module_type_id__volatile)) { static const GTypeInfo g_define_type_info = { sizeof (ValaDovaArrayModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_dova_array_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaDovaArrayModule), 0, (GInstanceInitFunc) vala_dova_array_module_instance_init, NULL }; GType vala_dova_array_module_type_id; vala_dova_array_module_type_id = g_type_register_static (VALA_TYPE_DOVA_METHOD_CALL_MODULE, "ValaDovaArrayModule", &g_define_type_info, 0); g_once_init_leave (&vala_dova_array_module_type_id__volatile, vala_dova_array_module_type_id); } return vala_dova_array_module_type_id__volatile; }